Skip to content

Commit d17bcc5

Browse files
committed
Merge tag 'acpi-5.13-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull ACPI fixes from Rafael Wysocki: "These revert a problematic recent commit and fix a regression introduced during the 5.12 development cycle. Specifics: - Revert recent commit that attempted to fix the FACS table reference counting but introduced a problem with accessing the hardware signature after hibernation (Zhang Rui). - Fix regression in the _OSC handling that broke the loading of ACPI tables on some systems (Mika Westerberg)" * tag 'acpi-5.13-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: ACPI: Pass the same capabilities to the _OSC regardless of the query flag Revert "ACPI: sleep: Put the FACS table after using it"
2 parents fd2cd56 + bc8865a commit d17bcc5

File tree

2 files changed

+9
-22
lines changed

2 files changed

+9
-22
lines changed

drivers/acpi/bus.c

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -330,32 +330,21 @@ static void acpi_bus_osc_negotiate_platform_control(void)
330330
if (ACPI_FAILURE(acpi_run_osc(handle, &context)))
331331
return;
332332

333-
capbuf_ret = context.ret.pointer;
334-
if (context.ret.length <= OSC_SUPPORT_DWORD) {
335-
kfree(context.ret.pointer);
336-
return;
337-
}
333+
kfree(context.ret.pointer);
338334

339-
/*
340-
* Now run _OSC again with query flag clear and with the caps
341-
* supported by both the OS and the platform.
342-
*/
335+
/* Now run _OSC again with query flag clear */
343336
capbuf[OSC_QUERY_DWORD] = 0;
344-
capbuf[OSC_SUPPORT_DWORD] = capbuf_ret[OSC_SUPPORT_DWORD];
345-
kfree(context.ret.pointer);
346337

347338
if (ACPI_FAILURE(acpi_run_osc(handle, &context)))
348339
return;
349340

350341
capbuf_ret = context.ret.pointer;
351-
if (context.ret.length > OSC_SUPPORT_DWORD) {
352-
osc_sb_apei_support_acked =
353-
capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_APEI_SUPPORT;
354-
osc_pc_lpi_support_confirmed =
355-
capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_PCLPI_SUPPORT;
356-
osc_sb_native_usb4_support_confirmed =
357-
capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_NATIVE_USB4_SUPPORT;
358-
}
342+
osc_sb_apei_support_acked =
343+
capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_APEI_SUPPORT;
344+
osc_pc_lpi_support_confirmed =
345+
capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_PCLPI_SUPPORT;
346+
osc_sb_native_usb4_support_confirmed =
347+
capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_NATIVE_USB4_SUPPORT;
359348

360349
kfree(context.ret.pointer);
361350
}

drivers/acpi/sleep.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1009,10 +1009,8 @@ static void acpi_sleep_hibernate_setup(void)
10091009
return;
10101010

10111011
acpi_get_table(ACPI_SIG_FACS, 1, (struct acpi_table_header **)&facs);
1012-
if (facs) {
1012+
if (facs)
10131013
s4_hardware_signature = facs->hardware_signature;
1014-
acpi_put_table((struct acpi_table_header *)facs);
1015-
}
10161014
}
10171015
#else /* !CONFIG_HIBERNATION */
10181016
static inline void acpi_sleep_hibernate_setup(void) {}

0 commit comments

Comments
 (0)