mirror of https://github.com/torvalds/linux.git
ACPI updates for 6.16-rc2
- Update the faux device handling code in the driver core and address
an ACPI APEI error injection driver failure that started to occur
after switching it over to using a faux device on top of that (Dan
Williams).
- Update data types of variables passed as arguments to
mwait_idle_with_hints() in the ACPI PAD (processor aggregator device)
driver to match the function definition after recent changes (Uros
Bizjak).
- Fix a NULL pointer dereference in the ACPI CPPC library that occurs
when nosmp is passed to the kernel in the command line (Yunhui Cui).
- Ignore ECDT tables with an invalid ID string to prevent using an
incorrect GPE for signaling events on some systems (Armin Wolf).
- Add a new IRQ override quirk for MACHENIKE 16P (Wentao Guan).
-----BEGIN PGP SIGNATURE-----
iQFGBAABCAAwFiEEcM8Aw/RY0dgsiRUR7l+9nS/U47UFAmhMhWMSHHJqd0Byand5
c29ja2kubmV0AAoJEO5fvZ0v1OO11QwIAJauSuEZ6CMSB+ntXZ0WO+Sx62EKn1/w
sC8auAtfmp7H31m1YjqJllt/n2tadJO2ZMAzMuHeVp+1LIxHnNPR6e97+8z+Xj3m
224NUki1kG7EyEYEwtZnHVOQBue1nKxNZqQ4NHuuwIXIj2dE4GgsCEqT+vrZVmI+
JLZWo8pMH2puAakdBkPtsdqWzTNq7lOAsigkoDvbO4Azz2GCPilgrgzOeqdOlFw8
URwM7qhk6Wd77Zr9kyzQIRBt8LVwKIF6i13eR4CXCNzp+5O0qYlci1dBYErL/oWU
u2D5ebQMCCKqBnNHowBr9ChM4QwmHB9YdTnx574z7kUKCjrgQOrC7hQ=
=Jx0s
-----END PGP SIGNATURE-----
Merge tag 'acpi-6.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull ACPI fixes from Rafael Wysocki:
"These fix an ACPI APEI error injection driver failure that started to
occur after switching it over to using a faux device, address an EC
driver issue related to invalid ECDT tables, clean up the usage of
mwait_idle_with_hints() in the ACPI PAD driver, add a new IRQ override
quirk, and fix a NULL pointer dereference related to nosmp:
- Update the faux device handling code in the driver core and address
an ACPI APEI error injection driver failure that started to occur
after switching it over to using a faux device on top of that (Dan
Williams)
- Update data types of variables passed as arguments to
mwait_idle_with_hints() in the ACPI PAD (processor aggregator
device) driver to match the function definition after recent
changes (Uros Bizjak)
- Fix a NULL pointer dereference in the ACPI CPPC library that occurs
when nosmp is passed to the kernel in the command line (Yunhui Cui)
- Ignore ECDT tables with an invalid ID string to prevent using an
incorrect GPE for signaling events on some systems (Armin Wolf)
- Add a new IRQ override quirk for MACHENIKE 16P (Wentao Guan)"
* tag 'acpi-6.16-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
ACPI: resource: Use IRQ override on MACHENIKE 16P
ACPI: EC: Ignore ECDT tables with an invalid ID string
ACPI: CPPC: Fix NULL pointer dereference when nosmp is used
ACPI: PAD: Update arguments of mwait_idle_with_hints()
ACPI: APEI: EINJ: Do not fail einj_init() on faux_device_create() failure
driver core: faux: Quiet probe failures
driver core: faux: Suppress bind attributes
This commit is contained in:
commit
18531f4d1c
|
|
@ -33,7 +33,7 @@
|
||||||
static DEFINE_MUTEX(isolated_cpus_lock);
|
static DEFINE_MUTEX(isolated_cpus_lock);
|
||||||
static DEFINE_MUTEX(round_robin_lock);
|
static DEFINE_MUTEX(round_robin_lock);
|
||||||
|
|
||||||
static unsigned long power_saving_mwait_eax;
|
static unsigned int power_saving_mwait_eax;
|
||||||
|
|
||||||
static unsigned char tsc_detected_unstable;
|
static unsigned char tsc_detected_unstable;
|
||||||
static unsigned char tsc_marked_unstable;
|
static unsigned char tsc_marked_unstable;
|
||||||
|
|
|
||||||
|
|
@ -883,19 +883,16 @@ static int __init einj_init(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
einj_dev = faux_device_create("acpi-einj", NULL, &einj_device_ops);
|
einj_dev = faux_device_create("acpi-einj", NULL, &einj_device_ops);
|
||||||
if (!einj_dev)
|
|
||||||
return -ENODEV;
|
|
||||||
|
|
||||||
einj_initialized = true;
|
if (einj_dev)
|
||||||
|
einj_initialized = true;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit einj_exit(void)
|
static void __exit einj_exit(void)
|
||||||
{
|
{
|
||||||
if (einj_initialized)
|
faux_device_destroy(einj_dev);
|
||||||
faux_device_destroy(einj_dev);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module_init(einj_init);
|
module_init(einj_init);
|
||||||
|
|
|
||||||
|
|
@ -476,7 +476,7 @@ bool cppc_allow_fast_switch(void)
|
||||||
struct cpc_desc *cpc_ptr;
|
struct cpc_desc *cpc_ptr;
|
||||||
int cpu;
|
int cpu;
|
||||||
|
|
||||||
for_each_possible_cpu(cpu) {
|
for_each_present_cpu(cpu) {
|
||||||
cpc_ptr = per_cpu(cpc_desc_ptr, cpu);
|
cpc_ptr = per_cpu(cpc_desc_ptr, cpu);
|
||||||
desired_reg = &cpc_ptr->cpc_regs[DESIRED_PERF];
|
desired_reg = &cpc_ptr->cpc_regs[DESIRED_PERF];
|
||||||
if (!CPC_IN_SYSTEM_MEMORY(desired_reg) &&
|
if (!CPC_IN_SYSTEM_MEMORY(desired_reg) &&
|
||||||
|
|
|
||||||
|
|
@ -23,8 +23,10 @@
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
|
#include <linux/printk.h>
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
#include <linux/string.h>
|
||||||
#include <linux/suspend.h>
|
#include <linux/suspend.h>
|
||||||
#include <linux/acpi.h>
|
#include <linux/acpi.h>
|
||||||
#include <linux/dmi.h>
|
#include <linux/dmi.h>
|
||||||
|
|
@ -2031,6 +2033,21 @@ void __init acpi_ec_ecdt_probe(void)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!strstarts(ecdt_ptr->id, "\\")) {
|
||||||
|
/*
|
||||||
|
* The ECDT table on some MSI notebooks contains invalid data, together
|
||||||
|
* with an empty ID string ("").
|
||||||
|
*
|
||||||
|
* Section 5.2.15 of the ACPI specification requires the ID string to be
|
||||||
|
* a "fully qualified reference to the (...) embedded controller device",
|
||||||
|
* so this string always has to start with a backslash.
|
||||||
|
*
|
||||||
|
* By verifying this we can avoid such faulty ECDT tables in a safe way.
|
||||||
|
*/
|
||||||
|
pr_err(FW_BUG "Ignoring ECDT due to invalid ID string \"%s\"\n", ecdt_ptr->id);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
ec = acpi_ec_alloc();
|
ec = acpi_ec_alloc();
|
||||||
if (!ec)
|
if (!ec)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
|
||||||
|
|
@ -666,6 +666,13 @@ static const struct dmi_system_id irq1_edge_low_force_override[] = {
|
||||||
DMI_MATCH(DMI_BOARD_NAME, "GMxHGxx"),
|
DMI_MATCH(DMI_BOARD_NAME, "GMxHGxx"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
/* MACHENIKE L16P/L16P */
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "MACHENIKE"),
|
||||||
|
DMI_MATCH(DMI_BOARD_NAME, "L16P"),
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* TongFang GM5HG0A in case of the SKIKK Vanaheim relabel the
|
* TongFang GM5HG0A in case of the SKIKK Vanaheim relabel the
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,7 @@ static struct device_driver faux_driver = {
|
||||||
.name = "faux_driver",
|
.name = "faux_driver",
|
||||||
.bus = &faux_bus_type,
|
.bus = &faux_bus_type,
|
||||||
.probe_type = PROBE_FORCE_SYNCHRONOUS,
|
.probe_type = PROBE_FORCE_SYNCHRONOUS,
|
||||||
|
.suppress_bind_attrs = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void faux_device_release(struct device *dev)
|
static void faux_device_release(struct device *dev)
|
||||||
|
|
@ -169,7 +170,7 @@ struct faux_device *faux_device_create_with_groups(const char *name,
|
||||||
* successful is almost impossible to determine by the caller.
|
* successful is almost impossible to determine by the caller.
|
||||||
*/
|
*/
|
||||||
if (!dev->driver) {
|
if (!dev->driver) {
|
||||||
dev_err(dev, "probe did not succeed, tearing down the device\n");
|
dev_dbg(dev, "probe did not succeed, tearing down the device\n");
|
||||||
faux_device_destroy(faux_dev);
|
faux_device_destroy(faux_dev);
|
||||||
faux_dev = NULL;
|
faux_dev = NULL;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue