[PATCH] drivers: acpi: Fix platform profile driver on !acpi platforms

Armin Wolf W_Armin at gmx.de
Thu May 22 13:04:22 PDT 2025


Am 22.05.25 um 16:13 schrieb Alexandre Ghiti:

> The platform profile driver is loaded even on platforms that do not have
> acpi enabled. The initialization of the sysfs entries was recently moved
> from platform_profile_register() to the module init call, and those
> entries need acpi_kobj to be initialized which is not the case when acpi
> is disabled.
>
> This results in the following warning:
>
>   WARNING: CPU: 5 PID: 1 at fs/sysfs/group.c:131 internal_create_group+0xa22/0xdd8
>   Modules linked in:
>   CPU: 5 UID: 0 PID: 1 Comm: swapper/0 Tainted: G        W           6.15.0-rc7-dirty #6 PREEMPT
>   Tainted: [W]=WARN
>   Hardware name: riscv-virtio,qemu (DT)
>   epc : internal_create_group+0xa22/0xdd8
>    ra : internal_create_group+0xa22/0xdd8
>
>   Call Trace:
>
>   internal_create_group+0xa22/0xdd8
>   sysfs_create_group+0x22/0x2e
>   platform_profile_init+0x74/0xb2
>   do_one_initcall+0x198/0xa9e
>   kernel_init_freeable+0x6d8/0x780
>   kernel_init+0x28/0x24c
>   ret_from_fork+0xe/0x18
>
> Fix this by checking if acpi is enabled before trying to create sysfs
> entries.

I already submitted a patch for this problem (see https://lore.kernel.org/linux-acpi/a6d92cdd-4dc3-4080-9ed9-5b1f02f247e0@gmx.de/T/)
that only disables the legacy sysfs interface while keeping the class-based interface functional
as it does not depend on ACPI at all.

Thank,
Armin Wolf

> Fixes: 77be5cacb2c2 ("ACPI: platform_profile: Create class for ACPI platform profile")
> Signed-off-by: Alexandre Ghiti <alexghiti at rivosinc.com>
> ---
>   drivers/acpi/platform_profile.c | 3 +++
>   1 file changed, 3 insertions(+)
>
> diff --git a/drivers/acpi/platform_profile.c b/drivers/acpi/platform_profile.c
> index ffbfd32f4cf1..b43f4459a4f6 100644
> --- a/drivers/acpi/platform_profile.c
> +++ b/drivers/acpi/platform_profile.c
> @@ -688,6 +688,9 @@ static int __init platform_profile_init(void)
>   {
>   	int err;
>   
> +	if (acpi_disabled)
> +		return -EOPNOTSUPP;
> +
>   	err = class_register(&platform_profile_class);
>   	if (err)
>   		return err;



More information about the linux-riscv mailing list