[PATCH v2] ACPI: bus: Consolidate all arm specific initialisation into acpi_arm_init()

Hanjun Guo guohanjun at huawei.com
Tue Oct 10 00:16:27 PDT 2023


On 2023/10/9 21:05, Sudeep Holla wrote:
> On Mon, Oct 09, 2023 at 08:29:49PM +0800, Hanjun Guo wrote:
>> On 2023/10/7 8:11, D Scott Phillips wrote:
>>> Sudeep Holla <sudeep.holla at arm.com> writes:
>>>
>>>> Move all of the ARM-specific initialization into one function namely
>>>> acpi_arm_init(), so it is not necessary to modify/update bus.c every
>>>> time a new piece of it is added.
>>>>
>>>> Cc: Lorenzo Pieralisi <lpieralisi at kernel.org>
>>>> Cc: Rafael J. Wysocki <rafael at kernel.org>
>>>> Suggested-by: Rafael J. Wysocki <rafael.j.wysocki at intel.com>
>>>> Reviewed-by: Robin Murphy <robin.murphy at arm.com>
>>>> Reviewed-by: Hanjun Guo <guohanjun at huawei.com>
>>>> Link: https://lore.kernel.org/r/CAJZ5v0iBZRZmV_oU+VurqxnVMbFN_ttqrL=cLh0sUH+=u0PYsw@mail.gmail.com
>>>> Signed-off-by: Sudeep Holla <sudeep.holla at arm.com>
>>>> ---
>>>>    drivers/acpi/arm64/Makefile |  2 +-
>>>>    drivers/acpi/arm64/agdi.c   |  2 +-
>>>>    drivers/acpi/arm64/apmt.c   |  2 +-
>>>>    drivers/acpi/arm64/init.c   | 13 +++++++++++++
>>>>    drivers/acpi/arm64/init.h   |  6 ++++++
>>>>    drivers/acpi/arm64/iort.c   |  1 +
>>>>    drivers/acpi/bus.c          |  7 +------
>>>>    include/linux/acpi.h        |  6 ++++++
>>>>    include/linux/acpi_agdi.h   | 13 -------------
>>>>    include/linux/acpi_apmt.h   | 19 -------------------
>>>>    include/linux/acpi_iort.h   |  2 --
>>>>    11 files changed, 30 insertions(+), 43 deletions(-)
>>>>    create mode 100644 drivers/acpi/arm64/init.c
>>>>    create mode 100644 drivers/acpi/arm64/init.h
>>>>    delete mode 100644 include/linux/acpi_agdi.h
>>>>    delete mode 100644 include/linux/acpi_apmt.h
> 
> [...]
> 
>>>> @@ -1408,7 +1405,7 @@ static int __init acpi_init(void)
>>>>    	acpi_init_ffh();
>>>>
>>>>    	pci_mmcfg_late_init();
>>>> -	acpi_iort_init();
>>>> +	acpi_arm_init();
>>>>    	acpi_viot_early_init();
>>>>    	acpi_hest_init();
>>>>    	acpi_ghes_init();
>>>> @@ -1420,8 +1417,6 @@ static int __init acpi_init(void)
>>>>    	acpi_debugger_init();
>>>>    	acpi_setup_sb_notify_handler();
>>>>    	acpi_viot_init();
>>>> -	acpi_agdi_init();
>>>> -	acpi_apmt_init();
>>>
>>> Hi Sudeep, this moves acpi_agdi_init() before acpi_ghes_init().
>>> sdei initialization currently happens from ghes_init, so agdi devices
>>> using SDEI can no longer probe:
>>>
>>> | [    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.
>>
> 
> Sorry for that.
> 
>> How about just move acpi_arm_init() to the place of after
>> acpi_ghes_init()?
>>
> 
> Yes that could work but  I am not comfortable with such play around with
> the ordering. I don't have better alternative as well :( so I am OK with
> the proposal.
> 
> We had all sorts of issues with initcalls in the past but I understand
> this one is not as bad as that, I am just cautious.
> 
>> I checked the functions in acpi_arm_init(), there are no other
>> dependencies except sdei_init().
>>
> 
> Fair enough.
> 
> Anyways, for now Hanjun's suggestion should work.
> 
> Can either one of you write a patch and post ? Or you use want me to do
> that ?

I will prepare a patch for it.

Thanks
Hanjun



More information about the linux-arm-kernel mailing list