diff -ruN a/drivers/acpi/platform_profile.c b/drivers/acpi/platform_profile.c --- a/drivers/acpi/platform_profile.c 2026-04-22 13:09:37.943936485 +0400 +++ b/drivers/acpi/platform_profile.c 2026-04-22 13:12:09.080175395 +0400 @@ -16,6 +16,9 @@ static DEFINE_MUTEX(profile_lock); +static struct kobject *legacy_kobj; +static struct kobject *legacy_kobj_created; + struct platform_profile_handler { const char *name; struct device dev; @@ -215,7 +218,7 @@ return ret; } - sysfs_notify(acpi_kobj, NULL, "platform_profile"); + sysfs_notify(legacy_kobj, NULL, "platform_profile"); return count; } @@ -435,7 +438,7 @@ return ret; } - sysfs_notify(acpi_kobj, NULL, "platform_profile"); + sysfs_notify(legacy_kobj, NULL, "platform_profile"); return count; } @@ -481,7 +484,7 @@ scoped_cond_guard(mutex_intr, return, &profile_lock) { _notify_class_profile(dev, NULL); } - sysfs_notify(acpi_kobj, NULL, "platform_profile"); + sysfs_notify(legacy_kobj, NULL, "platform_profile"); } EXPORT_SYMBOL_GPL(platform_profile_notify); @@ -529,7 +532,7 @@ return err; } - sysfs_notify(acpi_kobj, NULL, "platform_profile"); + sysfs_notify(legacy_kobj, NULL, "platform_profile"); return 0; } @@ -603,9 +606,9 @@ goto cleanup_ida; } - sysfs_notify(acpi_kobj, NULL, "platform_profile"); + sysfs_notify(legacy_kobj, NULL, "platform_profile"); - err = sysfs_update_group(acpi_kobj, &platform_profile_group); + err = sysfs_update_group(legacy_kobj, &platform_profile_group); if (err) goto cleanup_cur; @@ -639,8 +642,8 @@ ida_free(&platform_profile_ida, pprof->minor); device_unregister(&pprof->dev); - sysfs_notify(acpi_kobj, NULL, "platform_profile"); - sysfs_update_group(acpi_kobj, &platform_profile_group); + sysfs_notify(legacy_kobj, NULL, "platform_profile"); + sysfs_update_group(legacy_kobj, &platform_profile_group); } EXPORT_SYMBOL_GPL(platform_profile_remove); @@ -688,24 +691,45 @@ { int err; - if (acpi_disabled) - return -EOPNOTSUPP; + if (acpi_kobj) { + legacy_kobj = acpi_kobj; + } else { + legacy_kobj_created = kobject_create_and_add("acpi", firmware_kobj); + if (!legacy_kobj_created) + return -ENOMEM; + legacy_kobj = legacy_kobj_created; + } err = class_register(&platform_profile_class); if (err) - return err; + goto put_kobj; - err = sysfs_create_group(acpi_kobj, &platform_profile_group); - if (err) + err = sysfs_create_group(legacy_kobj, &platform_profile_group); + if (err) { class_unregister(&platform_profile_class); + goto put_kobj; + } + + return 0; +put_kobj: + if (legacy_kobj_created) { + kobject_put(legacy_kobj_created); + legacy_kobj_created = NULL; + legacy_kobj = NULL; + } return err; } static void __exit platform_profile_exit(void) { - sysfs_remove_group(acpi_kobj, &platform_profile_group); + sysfs_remove_group(legacy_kobj, &platform_profile_group); class_unregister(&platform_profile_class); + if (legacy_kobj_created) { + kobject_put(legacy_kobj_created); + legacy_kobj_created = NULL; + legacy_kobj = NULL; + } } module_init(platform_profile_init); module_exit(platform_profile_exit);