This is a note to let you know that I've just added the patch titled sparc64: Do irq_{enter,exit}() around generic_smp_call_function*(). to the 3.17-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: sparc64-do-irq_-enter-exit-around-generic_smp_call_function.patch and it can be found in the queue-3.17 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From foo@baz Tue Nov 18 09:08:30 PST 2014 From: "David S. Miller" <davem@xxxxxxxxxxxxx> Date: Fri, 7 Nov 2014 09:50:48 -0800 Subject: sparc64: Do irq_{enter,exit}() around generic_smp_call_function*(). From: "David S. Miller" <davem@xxxxxxxxxxxxx> [ Upstream commit ab5c780913bca0a5763ca05dd5c2cb5cb08ccb26 ] Otherwise rcu_irq_{enter,exit}() do not happen and we get dumps like: ==================== [ 188.275021] =============================== [ 188.309351] [ INFO: suspicious RCU usage. ] [ 188.343737] 3.18.0-rc3-00068-g20f3963-dirty #54 Not tainted [ 188.394786] ------------------------------- [ 188.429170] include/linux/rcupdate.h:883 rcu_read_lock() used illegally while idle! [ 188.505235] other info that might help us debug this: [ 188.554230] RCU used illegally from idle CPU! rcu_scheduler_active = 1, debug_locks = 0 [ 188.637587] RCU used illegally from extended quiescent state! [ 188.690684] 3 locks held by swapper/7/0: [ 188.721932] #0: (&x->wait#11){......}, at: [<0000000000495de8>] complete+0x8/0x60 [ 188.797994] #1: (&p->pi_lock){-.-.-.}, at: [<000000000048510c>] try_to_wake_up+0xc/0x400 [ 188.881343] #2: (rcu_read_lock){......}, at: [<000000000048a910>] select_task_rq_fair+0x90/0xb40 [ 188.973043]stack backtrace: [ 188.993879] CPU: 7 PID: 0 Comm: swapper/7 Not tainted 3.18.0-rc3-00068-g20f3963-dirty #54 [ 189.076187] Call Trace: [ 189.089719] [0000000000499360] lockdep_rcu_suspicious+0xe0/0x100 [ 189.147035] [000000000048a99c] select_task_rq_fair+0x11c/0xb40 [ 189.202253] [00000000004852d8] try_to_wake_up+0x1d8/0x400 [ 189.252258] [000000000048554c] default_wake_function+0xc/0x20 [ 189.306435] [0000000000495554] __wake_up_common+0x34/0x80 [ 189.356448] [00000000004955b4] __wake_up_locked+0x14/0x40 [ 189.406456] [0000000000495e08] complete+0x28/0x60 [ 189.448142] [0000000000636e28] blk_end_sync_rq+0x8/0x20 [ 189.496057] [0000000000639898] __blk_mq_end_request+0x18/0x60 [ 189.550249] [00000000006ee014] scsi_end_request+0x94/0x180 [ 189.601286] [00000000006ee334] scsi_io_completion+0x1d4/0x600 [ 189.655463] [00000000006e51c4] scsi_finish_command+0xc4/0xe0 [ 189.708598] [00000000006ed958] scsi_softirq_done+0x118/0x140 [ 189.761735] [00000000006398ec] __blk_mq_complete_request_remote+0xc/0x20 [ 189.827383] [00000000004c75d0] generic_smp_call_function_single_interrupt+0x150/0x1c0 [ 189.906581] [000000000043e514] smp_call_function_single_client+0x14/0x40 ==================== Based almost entirely upon a patch by Paul E. McKenney. Reported-by: Meelis Roos <mroos@xxxxxxxx> Tested-by: Meelis Roos <mroos@xxxxxxxx> Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- arch/sparc/kernel/smp_64.c | 4 ++++ 1 file changed, 4 insertions(+) --- a/arch/sparc/kernel/smp_64.c +++ b/arch/sparc/kernel/smp_64.c @@ -816,13 +816,17 @@ void arch_send_call_function_single_ipi( void __irq_entry smp_call_function_client(int irq, struct pt_regs *regs) { clear_softint(1 << irq); + irq_enter(); generic_smp_call_function_interrupt(); + irq_exit(); } void __irq_entry smp_call_function_single_client(int irq, struct pt_regs *regs) { clear_softint(1 << irq); + irq_enter(); generic_smp_call_function_single_interrupt(); + irq_exit(); } static void tsb_sync(void *info) Patches currently in stable-queue which might be from davem@xxxxxxxxxxxxx are queue-3.17/vxlan-do-not-reuse-sockets-for-a-different-address-family.patch queue-3.17/udptunnel-add-skb_gso_udp_tunnel-during-gro_complete.patch queue-3.17/vti6-use-vti6_dev_init-as-the-ndo_init-function.patch queue-3.17/net-sctp-fix-memory-leak-in-auth-key-management.patch queue-3.17/sparc64-do-irq_-enter-exit-around-generic_smp_call_function.patch queue-3.17/gre6-move-the-setting-of-dev-iflink-into-the-ndo_init-functions.patch queue-3.17/sit-use-ipip6_tunnel_init-as-the-ndo_init-function.patch queue-3.17/sparc32-implement-xchg-and-atomic_xchg-using-atomic_hash-locks.patch queue-3.17/net-ptp-fix-time-stamp-matching-logic-for-vlan-packets.patch queue-3.17/vio-fix-reuse-of-vio_dring-slot.patch queue-3.17/net-sctp-fix-null-pointer-dereference-in-af-from_addr_param-on-malformed-packet.patch queue-3.17/net-ppp-don-t-call-bpf_prog_create-in-ppp_lock.patch queue-3.17/sparc64-fix-crashes-in-schizo_pcierr_intr_other.patch queue-3.17/sunvdc-compute-vdisk-geometry-from-capacity.patch queue-3.17/net-mv643xx_eth-reclaim-tx-skbs-only-when-released-by-the-hw.patch queue-3.17/sunvdc-add-cdrom-and-v1.1-protocol-support.patch queue-3.17/ipv6-fix-ipv6_pktinfo-with-v4-mapped.patch queue-3.17/sunvdc-don-t-call-vd_op_get_vtoc.patch queue-3.17/sunvdc-limit-each-sg-segment-to-a-page.patch queue-3.17/netlink-properly-unbind-in-error-conditions.patch queue-3.17/inet-frags-fix-a-race-between-inet_evict_bucket-and-inet_frag_kill.patch queue-3.17/inet-frags-remove-the-warn_on-from-inet_evict_bucket.patch queue-3.17/smsc911x-power-up-phydev-before-doing-a-software-reset.patch queue-3.17/ip6_tunnel-use-ip6_tnl_dev_init-as-the-ndo_init-function.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html