powerpc/pseries: Enable RAS hotplug events later
authorSam Bobroff <sam.bobroff@au1.ibm.com>
Mon, 12 Feb 2018 00:19:29 +0000 (11:19 +1100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 3 Mar 2018 09:24:38 +0000 (10:24 +0100)
commit27245fc6f7a8d4f4830f55b50341ae37d920d9a7
treecb9d49d85363d60eb4ca878a5e5396d88618e607
parent60190108f7e2643bb6dd6465eed69c9d18b26b37
powerpc/pseries: Enable RAS hotplug events later

commit c9dccf1d074a67d36c510845f663980d69e3409b upstream.

Currently if the kernel receives a memory hot-unplug event early
enough, it may get stuck in an infinite loop in
dissolve_free_huge_pages(). This appears as a stall just after:

  pseries-hotplug-mem: Attempting to hot-remove XX LMB(s) at YYYYYYYY

It appears to be caused by "minimum_order" being uninitialized, due to
init_ras_IRQ() executing before hugetlb_init().

To correct this, extract the part of init_ras_IRQ() that enables
hotplug event processing and place it in the machine_late_initcall
phase, which is guaranteed to be after hugetlb_init() is called.

Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com>
Acked-by: Balbir Singh <bsingharora@gmail.com>
[mpe: Reorder the functions to make the diff readable]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/powerpc/platforms/pseries/ras.c