Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Revert "ACPI: processor: idle: Redefine two functions as void"

Revert commit fbd401e95e56 ("ACPI: processor: idle: Redefine two
functions as void") because it depends on a problematic one.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

+24 -21
+22 -19
drivers/acpi/processor_idle.c
··· 1400 1400 cpuidle_unregister_driver(&acpi_idle_driver); 1401 1401 } 1402 1402 1403 - void acpi_processor_power_init(struct acpi_processor *pr) 1403 + int acpi_processor_power_init(struct acpi_processor *pr) 1404 1404 { 1405 + int retval; 1405 1406 struct cpuidle_device *dev; 1406 1407 1407 1408 if (disabled_by_idle_boot_param()) 1408 - return; 1409 + return 0; 1409 1410 1410 1411 acpi_processor_cstate_first_run_checks(); 1411 1412 1412 1413 if (!acpi_processor_get_power_info(pr)) 1413 1414 pr->flags.power_setup_done = 1; 1414 1415 1415 - if (!pr->flags.power) 1416 - return; 1416 + if (pr->flags.power) { 1417 + dev = kzalloc(sizeof(*dev), GFP_KERNEL); 1418 + if (!dev) 1419 + return -ENOMEM; 1420 + per_cpu(acpi_cpuidle_device, pr->id) = dev; 1417 1421 1418 - dev = kzalloc(sizeof(*dev), GFP_KERNEL); 1419 - if (!dev) 1420 - return; 1422 + acpi_processor_setup_cpuidle_dev(pr, dev); 1421 1423 1422 - per_cpu(acpi_cpuidle_device, pr->id) = dev; 1424 + /* Register per-cpu cpuidle_device. Cpuidle driver 1425 + * must already be registered before registering device 1426 + */ 1427 + retval = cpuidle_register_device(dev); 1428 + if (retval) { 1423 1429 1424 - acpi_processor_setup_cpuidle_dev(pr, dev); 1425 - 1426 - /* 1427 - * Register a cpuidle device for this CPU. The cpuidle driver using 1428 - * this device is expected to be registered. 1429 - */ 1430 - if (cpuidle_register_device(dev)) { 1431 - per_cpu(acpi_cpuidle_device, pr->id) = NULL; 1432 - kfree(dev); 1430 + per_cpu(acpi_cpuidle_device, pr->id) = NULL; 1431 + kfree(dev); 1432 + return retval; 1433 + } 1433 1434 } 1435 + return 0; 1434 1436 } 1435 1437 1436 - void acpi_processor_power_exit(struct acpi_processor *pr) 1438 + int acpi_processor_power_exit(struct acpi_processor *pr) 1437 1439 { 1438 1440 struct cpuidle_device *dev = per_cpu(acpi_cpuidle_device, pr->id); 1439 1441 1440 1442 if (disabled_by_idle_boot_param()) 1441 - return; 1443 + return 0; 1442 1444 1443 1445 if (pr->flags.power) { 1444 1446 cpuidle_unregister_device(dev); ··· 1448 1446 } 1449 1447 1450 1448 pr->flags.power_setup_done = 0; 1449 + return 0; 1451 1450 } 1452 1451 1453 1452 MODULE_IMPORT_NS("ACPI_PROCESSOR_IDLE");
+2 -2
include/acpi/processor.h
··· 419 419 /* in processor_idle.c */ 420 420 extern struct cpuidle_driver acpi_idle_driver; 421 421 #ifdef CONFIG_ACPI_PROCESSOR_IDLE 422 - void acpi_processor_power_init(struct acpi_processor *pr); 423 - void acpi_processor_power_exit(struct acpi_processor *pr); 422 + int acpi_processor_power_init(struct acpi_processor *pr); 423 + int acpi_processor_power_exit(struct acpi_processor *pr); 424 424 int acpi_processor_power_state_has_changed(struct acpi_processor *pr); 425 425 int acpi_processor_hotplug(struct acpi_processor *pr); 426 426 void acpi_processor_register_idle_driver(void);