Commit 18531f4d authored by Linus Torvalds's avatar Linus Torvalds
Browse files
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
parents f688b599 28b06993
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@
static DEFINE_MUTEX(isolated_cpus_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_marked_unstable;
+3 −6
Original line number Diff line number Diff line
@@ -883,9 +883,8 @@ static int __init einj_init(void)
	}

	einj_dev = faux_device_create("acpi-einj", NULL, &einj_device_ops);
	if (!einj_dev)
		return -ENODEV;

	if (einj_dev)
		einj_initialized = true;

	return 0;
@@ -893,9 +892,7 @@ static int __init einj_init(void)

static void __exit einj_exit(void)
{
	if (einj_initialized)
	faux_device_destroy(einj_dev);

}

module_init(einj_init);
+1 −1
Original line number Diff line number Diff line
@@ -476,7 +476,7 @@ bool cppc_allow_fast_switch(void)
	struct cpc_desc *cpc_ptr;
	int cpu;

	for_each_possible_cpu(cpu) {
	for_each_present_cpu(cpu) {
		cpc_ptr = per_cpu(cpc_desc_ptr, cpu);
		desired_reg = &cpc_ptr->cpc_regs[DESIRED_PERF];
		if (!CPC_IN_SYSTEM_MEMORY(desired_reg) &&
+17 −0
Original line number Diff line number Diff line
@@ -23,8 +23,10 @@
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/list.h>
#include <linux/printk.h>
#include <linux/spinlock.h>
#include <linux/slab.h>
#include <linux/string.h>
#include <linux/suspend.h>
#include <linux/acpi.h>
#include <linux/dmi.h>
@@ -2031,6 +2033,21 @@ void __init acpi_ec_ecdt_probe(void)
		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();
	if (!ec)
		goto out;
+7 −0
Original line number Diff line number Diff line
@@ -666,6 +666,13 @@ static const struct dmi_system_id irq1_edge_low_force_override[] = {
			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
Loading