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.

Merge tag 'acpi-6.17-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull ACPI fixes from Rafael Wysocki:
"These restore corner case behavior of the EC driver related to the
handling of defective ACPI tables and fix a recent regression in the
ACPI processor driver:

- Prevent the ACPI EC driver from ignoring ECDT information in the
cases when the ID string in the ECDT is invalid, but not empty, to
fix thouchpad detection on ThinkBook 14 G7 IML (Armin Wolf)

- Rearrange checks in acpi_processor_ppc_init() to restore the
handling of frequency QoS requests related to _PPC limits
inadvertently broken by a recent update (Rafael Wysocki)"

* tag 'acpi-6.17-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
ACPI: EC: Relax sanity check of the ECDT ID string
ACPI: processor: perflib: Move problematic pr->performance check

+11 -4
+7 -3
drivers/acpi/ec.c
··· 2033 2033 goto out; 2034 2034 } 2035 2035 2036 - if (!strstarts(ecdt_ptr->id, "\\")) { 2036 + if (!strlen(ecdt_ptr->id)) { 2037 2037 /* 2038 2038 * The ECDT table on some MSI notebooks contains invalid data, together 2039 2039 * with an empty ID string (""). ··· 2042 2042 * a "fully qualified reference to the (...) embedded controller device", 2043 2043 * so this string always has to start with a backslash. 2044 2044 * 2045 - * By verifying this we can avoid such faulty ECDT tables in a safe way. 2045 + * However some ThinkBook machines have a ECDT table with a valid EC 2046 + * description but an invalid ID string ("_SB.PC00.LPCB.EC0"). 2047 + * 2048 + * Because of this we only check if the ID string is empty in order to 2049 + * avoid the obvious cases. 2046 2050 */ 2047 - pr_err(FW_BUG "Ignoring ECDT due to invalid ID string \"%s\"\n", ecdt_ptr->id); 2051 + pr_err(FW_BUG "Ignoring ECDT due to empty ID string\n"); 2048 2052 goto out; 2049 2053 } 2050 2054
+4 -1
drivers/acpi/processor_perflib.c
··· 180 180 struct acpi_processor *pr = per_cpu(processors, cpu); 181 181 int ret; 182 182 183 - if (!pr || !pr->performance) 183 + if (!pr) 184 184 continue; 185 185 186 186 /* ··· 196 196 if (ret < 0) 197 197 pr_err("Failed to add freq constraint for CPU%d (%d)\n", 198 198 cpu, ret); 199 + 200 + if (!pr->performance) 201 + continue; 199 202 200 203 ret = acpi_processor_get_platform_limit(pr); 201 204 if (ret)