diff mbox series

ACPI: bus: Move acpi_arm_init() to the place of after acpi_ghes_init()

Message ID 20231010082123.4167603-1-guohanjun@huawei.com
State Accepted
Commit d5921c460e543228d100daf67dac7a03dfaaa40a
Headers show
Series ACPI: bus: Move acpi_arm_init() to the place of after acpi_ghes_init() | expand

Commit Message

Hanjun Guo Oct. 10, 2023, 8:21 a.m. UTC
acpi_agdi_init() in acpi_arm_init() will register a SDEI event, so
it needs the SDEI subsystem to be initialized (which is done in
acpi_ghes_init()) before the AGDI driver probing.

In commit fcea0ccf4fd7 ("ACPI: bus: Consolidate all arm specific
initialisation into acpi_arm_init()"), the acpi_agdi_init() was
called before acpi_ghes_init() and it causes following failure:

| [    0.515864] sdei: Failed to create event 1073741825: -5
| [    0.515866] agdi agdi.0: Failed to register for SDEI event 1073741825
| [    0.515867] agdi: probe of agdi.0 failed with error -5
| ...
| [    0.516022] sdei: SDEIv1.0 (0x0) detected in firmware.

Fix it by moving acpi_arm_init() to the place of after
acpi_ghes_init().

Fixes: fcea0ccf4fd7 ("ACPI: bus: Consolidate all arm specific initialisation into acpi_arm_init()")
Reported-by: D Scott Phillips <scott@os.amperecomputing.com>
Signed-off-by: Hanjun Guo <guohanjun@huawei.com>
---

I did a test on a ARM server and I didn't see regressions, but
I don't have a AGDI table firmware, so Scott please give a 
test to see if it fixes your issue.

 drivers/acpi/bus.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Rafael J. Wysocki Oct. 18, 2023, 11:30 a.m. UTC | #1
On Tue, Oct 10, 2023 at 8:11 PM D Scott Phillips
<scott@os.amperecomputing.com> wrote:
>
> Hanjun Guo <guohanjun@huawei.com> writes:
>
> > acpi_agdi_init() in acpi_arm_init() will register a SDEI event, so
> > it needs the SDEI subsystem to be initialized (which is done in
> > acpi_ghes_init()) before the AGDI driver probing.
> >
> > In commit fcea0ccf4fd7 ("ACPI: bus: Consolidate all arm specific
> > initialisation into acpi_arm_init()"), the acpi_agdi_init() was
> > called before acpi_ghes_init() and it causes following failure:
> >
> > | [    0.515864] sdei: Failed to create event 1073741825: -5
> > | [    0.515866] agdi agdi.0: Failed to register for SDEI event 1073741825
> > | [    0.515867] agdi: probe of agdi.0 failed with error -5
> > | ...
> > | [    0.516022] sdei: SDEIv1.0 (0x0) detected in firmware.
> >
> > Fix it by moving acpi_arm_init() to the place of after
> > acpi_ghes_init().
> >
> > Fixes: fcea0ccf4fd7 ("ACPI: bus: Consolidate all arm specific initialisation into acpi_arm_init()")
> > Reported-by: D Scott Phillips <scott@os.amperecomputing.com>
> > Signed-off-by: Hanjun Guo <guohanjun@huawei.com>
>
> Tested-by: D Scott Phillips <scott@os.amperecomputing.com>
>
> Thanks Hanjun and Sudeep

Applied as 6.6-rc material, thanks!
diff mbox series

Patch

diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index f41dda2d3493..a4aa53b7e2bb 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -1410,10 +1410,10 @@  static int __init acpi_init(void)
 	acpi_init_ffh();
 
 	pci_mmcfg_late_init();
-	acpi_arm_init();
 	acpi_viot_early_init();
 	acpi_hest_init();
 	acpi_ghes_init();
+	acpi_arm_init();
 	acpi_scan_init();
 	acpi_ec_init();
 	acpi_debugfs_init();