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

Sudeep Holla sudeep.holla at arm.com
Tue Oct 10 01:50:12 PDT 2023


On Tue, Oct 10, 2023 at 04:21:23PM +0800, Hanjun Guo wrote:
> 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 at os.amperecomputing.com>
> Signed-off-by: Hanjun Guo <guohanjun at 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(-)
> 
> 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();

I am fine with the change, but just wanted to check with Robin/Jean-Philippe
if there are any dependency on IORT initialisation for VIOT ? IIUC IORT was
always initialised before VIOT but that changes after this change.

If it turns how to have dependency, then does moving GHES and HEST
initialisation before acpi_arm_init() work ?

--
Regards,
Sudeep



More information about the linux-arm-kernel mailing list