Skip to content

Commit e374706

Browse files
committed
Merge branches 'acpi-video' and 'acpi-processor' into acpi
Merge ACPI backlight driver fixes and an ACPI processor driver fix for 6.7-rc3: - Avoid powering up GPUs while attempting to fix up power for their children (Hans de Goede). - Use raw_safe_halt() instead of safe_halt() in acpi_idle_play_dead() so as to avoid triple-falts during CPU online in Xen HVM guests due to the setting of the hardirqs_enabled flag in safe_halt() (David Woodhouse). * acpi-video: ACPI: video: Use acpi_device_fix_up_power_children() ACPI: PM: Add acpi_device_fix_up_power_children() function * acpi-processor: ACPI: processor_idle: use raw_safe_halt() in acpi_idle_play_dead()
3 parents bd91148 + c936954 + 9bb69ba commit e374706

File tree

4 files changed

+16
-2
lines changed

4 files changed

+16
-2
lines changed

drivers/acpi/acpi_video.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2031,7 +2031,7 @@ static int acpi_video_bus_add(struct acpi_device *device)
20312031
* HP ZBook Fury 16 G10 requires ACPI video's child devices have _PS0
20322032
* evaluated to have functional panel brightness control.
20332033
*/
2034-
acpi_device_fix_up_power_extended(device);
2034+
acpi_device_fix_up_power_children(device);
20352035

20362036
pr_info("%s [%s] (multi-head: %s rom: %s post: %s)\n",
20372037
ACPI_VIDEO_DEVICE_NAME, acpi_device_bid(device),

drivers/acpi/device_pm.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,19 @@ void acpi_device_fix_up_power_extended(struct acpi_device *adev)
397397
}
398398
EXPORT_SYMBOL_GPL(acpi_device_fix_up_power_extended);
399399

400+
/**
401+
* acpi_device_fix_up_power_children - Force a device's children into D0.
402+
* @adev: Parent device object whose children's power state is to be fixed up.
403+
*
404+
* Call acpi_device_fix_up_power() for @adev's children so long as they
405+
* are reported as present and enabled.
406+
*/
407+
void acpi_device_fix_up_power_children(struct acpi_device *adev)
408+
{
409+
acpi_dev_for_each_child(adev, fix_up_power_if_applicable, NULL);
410+
}
411+
EXPORT_SYMBOL_GPL(acpi_device_fix_up_power_children);
412+
400413
int acpi_device_update_power(struct acpi_device *device, int *state_p)
401414
{
402415
int state;

drivers/acpi/processor_idle.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -592,7 +592,7 @@ static int acpi_idle_play_dead(struct cpuidle_device *dev, int index)
592592
while (1) {
593593

594594
if (cx->entry_method == ACPI_CSTATE_HALT)
595-
safe_halt();
595+
raw_safe_halt();
596596
else if (cx->entry_method == ACPI_CSTATE_SYSTEMIO) {
597597
io_idle(cx->address);
598598
} else

include/acpi/acpi_bus.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,7 @@ int acpi_device_set_power(struct acpi_device *device, int state);
542542
int acpi_bus_init_power(struct acpi_device *device);
543543
int acpi_device_fix_up_power(struct acpi_device *device);
544544
void acpi_device_fix_up_power_extended(struct acpi_device *adev);
545+
void acpi_device_fix_up_power_children(struct acpi_device *adev);
545546
int acpi_bus_update_power(acpi_handle handle, int *state_p);
546547
int acpi_device_update_power(struct acpi_device *device, int *state_p);
547548
bool acpi_bus_power_manageable(acpi_handle handle);

0 commit comments

Comments
 (0)