Patch "powerpc/pseries: Make RAS IRQ explicitly dependent on DLPAR WQ" has been added to the 4.14-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
powerpc/pseries: Make RAS IRQ explicitly dependent on DLPAR WQ
to the 4.14-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:
powerpc-pseries-make-ras-irq-explicitly-dependent-on-dlpar-wq.patch
and it can be found in the queue-4.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Wed Feb 28 16:23:28 CET 2018
From: Michael Ellerman <[email protected]>
Date: Mon, 8 Jan 2018 14:54:32 +1100
Subject: powerpc/pseries: Make RAS IRQ explicitly dependent on DLPAR WQ
From: Michael Ellerman <[email protected]>
[ Upstream commit e2d5915293ffdff977ddcfc12b817b08c53ffa7a ]
The hotplug code uses its own workqueue to handle IRQ requests (pseries_hp_wq), however that workqueue is initialized after init_ras_IRQ(). That can lead to a kernel panic if any hotplug interrupts fire after init_ras_IRQ() but before pseries_hp_wq is initialised. eg:
UDP-Lite hash table entries: 2048 (order: 0, 65536 bytes)
NET: Registered protocol family 1
Unpacking initramfs...
(qemu) object_add memory-backend-ram,id=mem1,size=10G (qemu) device_add pc-dimm,id=dimm1,memdev=mem1
Unable to handle kernel paging request for data at address 0xf94d03007c421378 Faulting instruction address: 0xc00000000012d744 Oops: Kernel access of bad area, sig: 11 [#1] LE SMP NR_CPUS=2048 NUMA pSeries Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.15.0-rc2-ziviani+ #26 task: (ptrval) task.stack: (ptrval) NIP: c00000000012d744 LR: c00000000012d744 CTR: 0000000000000000 REGS: (ptrval) TRAP: 0380 Not tainted (4.15.0-rc2-ziviani+) MSR: 8000000000009033 <SF,EE,ME,IR,DR,RI,LE> CR: 28088042 XER: 20040000 CFAR: c00000000012d3c4 SOFTE: 0 ... NIP [c00000000012d744] __queue_work+0xd4/0x5c0 LR [c00000000012d744] __queue_work+0xd4/0x5c0 Call Trace: [c0000000fffefb90] [c00000000012d744] __queue_work+0xd4/0x5c0 (unreliable) [c0000000fffefc70] [c00000000012dce4] queue_work_on+0xb4/0xf0
This commit makes the RAS IRQ registration explicitly dependent on the creation of the pseries_hp_wq.
--- arch/powerpc/platforms/pseries/dlpar.c | 21 ++++++++++++++++++--- arch/powerpc/platforms/pseries/pseries.h | 2 ++ arch/powerpc/platforms/pseries/ras.c | 3 ++- 3 files changed, 22 insertions(+), 4 deletions(-)
arch/powerpc/platforms/pseries/dlpar.c +18 -3
@@ -586,11 +586,26 @@ static ssize_t dlpar_show(struct class *static CLASS_ATTR_RW (dlpar); -static int __init pseries_dlpar_init (void ) +int __init dlpar_workqueue_init (void ) { +if (pseries_hp_wq) +return 0 ; + pseries_hp_wq =alloc_workqueue ("pseries hotplug workqueue" , -WQ_UNBOUND ,1 ); +WQ_UNBOUND ,1 ); + +return pseries_hp_wq ?0 : -ENOMEM ; +} + +static int __init dlpar_sysfs_init (void ) +{ +int rc; + + rc =dlpar_workqueue_init (); +if (rc) +return rc; +return sysfs_create_file (kernel_kobj, &class_attr_dlpar.attr); } -machine_device_initcall (pseries, pseries_dlpar_init); +machine_device_initcall (pseries, dlpar_sysfs_init);
arch/powerpc/platforms/pseries/pseries.h +2 -0
@@ -98,4 +98,6 @@ static inline unsigned long cmo_get_page return CMO_PageSize; } +int dlpar_workqueue_init (void ); +#endif /* _PSERIES_PSERIES_H */
arch/powerpc/platforms/pseries/ras.c +2 -1
@@ -69,7 +69,8 @@ static int __init init_ras_IRQ(void)/* Hotplug Events */ np =of_find_node_by_path ("/event-sources/hot-plug-events" );if (np !=NULL ) { -request_event_sources_irqs (np, ras_hotplug_interrupt, +if (dlpar_workqueue_init () ==0 ) +request_event_sources_irqs (np, ras_hotplug_interrupt,"RAS_HOTPLUG" );of_node_put (np); }
Patches currently in stable-queue which might be from [email protected] are
queue-4.14/powerpc-pseries-make-ras-irq-explicitly-dependent-on-dlpar-wq.patch
Michael Ellerman
reviewerQuoted 7 lines · <[email protected]> writes:
This is a note to let you know that I've just added the patch titled
powerpc/pseries: Make RAS IRQ explicitly dependent on DLPAR WQ
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
Quoted 6 lines
The filename of the patch is:
powerpc-pseries-make-ras-irq-explicitly-dependent-on-dlpar-wq.patch
and it can be found in the queue-4.14 subdirectory.If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Did someone request this one?
I didn't Cc it to stable because I wasn't confident of the testing it'd had, and in fact we found another related bug recently.
So if you take this you probably also want:
c9dccf1d074a ("powerpc/pseries: Enable RAS hotplug events later")
But note that commit is only ~2-3 weeks old, so again I can't vouch 100% for it's bullet-proof-ness.
cheers
Quoted 113 lines
From foo@baz Wed Feb 28 16:23:28 CET 2018
From: Michael Ellerman <[email protected]>
Date: Mon, 8 Jan 2018 14:54:32 +1100
Subject: powerpc/pseries: Make RAS IRQ explicitly dependent on DLPAR WQFrom: Michael Ellerman <[email protected]>
[ Upstream commit
e2d5915293ffdff977ddcfc12b817b08c53ffa7a]The hotplug code uses its own workqueue to handle IRQ requests (
pseries_hp_wq), however that workqueue is initialized afterinit_ras_IRQ(). That can lead to a kernel panic if any hotplug interrupts fire afterinit_ras_IRQ()but beforepseries_hp_wqis initialised. eg:UDP-Lite hash table entries: 2048 (order: 0, 65536 bytes)
NET: Registered protocol family 1
Unpacking initramfs...
(qemu)object_addmemory-backend-ram,id=mem1,size=10G (qemu)device_addpc-dimm,id=dimm1,memdev=mem1Unable to handle kernel paging request for data at address 0xf94d03007c421378 Faulting instruction address: 0xc00000000012d744 Oops: Kernel access of bad area, sig: 11 [#1] LE SMP NR_CPUS=2048 NUMA pSeries Modules linked in: CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.15.0-rc2-ziviani+ #26 task: (ptrval) task.stack: (ptrval) NIP: c00000000012d744 LR: c00000000012d744 CTR: 0000000000000000 REGS: (ptrval) TRAP: 0380 Not tainted (4.15.0-rc2-ziviani+) MSR: 8000000000009033 <SF,EE,ME,IR,DR,RI,LE> CR: 28088042 XER: 20040000 CFAR: c00000000012d3c4 SOFTE: 0 ... NIP [c00000000012d744] __queue_work+0xd4/0x5c0 LR [c00000000012d744] __queue_work+0xd4/0x5c0 Call Trace: [c0000000fffefb90] [c00000000012d744] __queue_work+0xd4/0x5c0 (unreliable) [c0000000fffefc70] [c00000000012dce4] queue_work_on+0xb4/0xf0This commit makes the RAS IRQ registration explicitly dependent on the creation of the
pseries_hp_wq.Reported-by Min Deng <[email protected]>Reported-by Daniel Henrique Barboza <[email protected]>Tested-by Jose Ricardo Ziviani <[email protected]>Signed-off-by Michael Ellerman <[email protected]>Reviewed-by David Gibson <[email protected]>Signed-off-by Sasha Levin <[email protected]>Signed-off-by Greg Kroah-Hartman <[email protected]>--- arch/powerpc/platforms/pseries/dlpar.c | 21 ++++++++++++++++++--- arch/powerpc/platforms/pseries/pseries.h | 2 ++ arch/powerpc/platforms/pseries/ras.c | 3 ++- 3 files changed, 22 insertions(+), 4 deletions(-)arch/powerpc/platforms/pseries/dlpar.c +18
-3@@ -586,11 +586,26 @@ static ssize_t dlpar_show(struct class *static CLASS_ATTR_RW (dlpar); -static int __init pseries_dlpar_init (void ) +int __init dlpar_workqueue_init (void ) { +if (pseries_hp_wq) +return 0 ; + pseries_hp_wq =alloc_workqueue ("pseries hotplug workqueue" , -WQ_UNBOUND ,1 ); +WQ_UNBOUND ,1 ); + +return pseries_hp_wq ?0 : -ENOMEM ; +} + +static int __init dlpar_sysfs_init (void ) +{ +int rc; + + rc =dlpar_workqueue_init (); +if (rc) +return rc; +return sysfs_create_file (kernel_kobj, &class_attr_dlpar.attr); } -machine_device_initcall (pseries, pseries_dlpar_init); +machine_device_initcall (pseries, dlpar_sysfs_init);arch/powerpc/platforms/pseries/pseries.h +2
-0@@ -98,4 +98,6 @@ static inline unsigned long cmo_get_page return CMO_PageSize; } +int dlpar_workqueue_init (void ); +#endif /* _PSERIES_PSERIES_H */ arch/powerpc/platforms/pseries/ras.c +2
-1@@ -69,7 +69,8 @@ static int __init init_ras_IRQ(void)/* Hotplug Events */ np =of_find_node_by_path ("/event-sources/hot-plug-events" );if (np !=NULL ) { -request_event_sources_irqs (np, ras_hotplug_interrupt, +if (dlpar_workqueue_init () ==0 ) +request_event_sources_irqs (np, ras_hotplug_interrupt,"RAS_HOTPLUG" );of_node_put (np); }Patches currently in stable-queue which might be from [email protected] are
queue-4.14/powerpc-pseries-make-ras-irq-explicitly-dependent-on-dlpar-wq.patch
Greg KH
maintainerQuoted 9 lines · Michael Ellerman
Quoted 7 lines · <[email protected]> writes:
This is a note to let you know that I've just added the patch titled
powerpc/pseries: Make RAS IRQ explicitly dependent on DLPAR WQ
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
Quoted 8 lines
Quoted 6 lines
The filename of the patch is:
powerpc-pseries-make-ras-irq-explicitly-dependent-on-dlpar-wq.patch
and it can be found in the queue-4.14 subdirectory.If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Did someone request this one?
Sasha did (his email now fixed...)
Quoted 10 lines
I didn't Cc it to stable because I wasn't confident of the testing it'd had, and in fact we found another related bug recently.
So if you take this you probably also want:
c9dccf1d074a("powerpc/pseries: Enable RAS hotplug events later")But note that commit is only ~2-3 weeks old, so again I can't vouch 100% for it's bullet-proof-ness.
So do you want me to drop this one, or take both? I can do either, it's up to you...
thanks,
greg k-h
Michael Ellerman
reviewerQuoted 14 lines · Greg KH
Quoted 13 lines · Michael Ellerman
Quoted 11 lines · <[email protected]> writes:
This is a note to let you know that I've just added the patch titled
powerpc/pseries: Make RAS IRQ explicitly dependent on DLPAR WQ
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summaryThe filename of the patch is:
powerpc-pseries-make-ras-irq-explicitly-dependent-on-dlpar-wq.patch
and it can be found in the queue-4.14 subdirectory.
Quoted 6 lines
Quoted 4 lines
Quoted 2 lines
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Did someone request this one?
Sasha did (his email now fixed...)
Ah ok.
Quoted 5 lines
Quoted 5 lines
I didn't Cc it to stable because I wasn't confident of the testing it'd had, and in fact we found another related bug recently.
So if you take this you probably also want:
Quoted 8 lines
Quoted 5 lines
c9dccf1d074a("powerpc/pseries: Enable RAS hotplug events later")But note that commit is only ~2-3 weeks old, so again I can't vouch 100% for it's bullet-proof-ness.
So do you want me to drop this one, or take both? I can do either, it's up to you...
OK, take both then please.
cheers
Greg KH
maintainerQuoted 33 lines · Michael Ellerman
Quoted 14 lines · Greg KH
Quoted 13 lines · Michael Ellerman
Quoted 11 lines · <[email protected]> writes:
This is a note to let you know that I've just added the patch titled
powerpc/pseries: Make RAS IRQ explicitly dependent on DLPAR WQ
to the 4.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summaryThe filename of the patch is:
powerpc-pseries-make-ras-irq-explicitly-dependent-on-dlpar-wq.patch
and it can be found in the queue-4.14 subdirectory.Quoted 6 lines
Quoted 4 lines
Quoted 2 lines
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Did someone request this one?
Sasha did (his email now fixed...)
Ah ok.
Quoted 8 lines
Quoted 8 lines
I didn't Cc it to stable because I wasn't confident of the testing it'd had, and in fact we found another related bug recently.
So if you take this you probably also want:
c9dccf1d074a("powerpc/pseries: Enable RAS hotplug events later")
Quoted 7 lines
Quoted 5 lines
Quoted 2 lines
But note that commit is only ~2-3 weeks old, so again I can't vouch 100% for it's bullet-proof-ness.
So do you want me to drop this one, or take both? I can do either, it's up to you...
OK, take both then please.
The second one now added to 4.15.y and 4.14.y, thanks.
greg k-h