Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bcc7201a authored by Rafael J. Wysocki's avatar Rafael J. Wysocki
Browse files

Merge branches 'acpi-gpe', 'acpi-video', 'acpi-thermal', 'acpi-processor', 'acpi-sleep'

* acpi-gpe:
  ACPI / EC: disable GPE before removing GPE handler
  ACPI / Button: Fix enabling button GPEs twice

* acpi-video:
  ACPI: Blacklist Win8 OSI for some HP laptop 2013 models
  ACPI / video: Fix typo in video_detect.c

* acpi-thermal:
  ACPI / thermal: remove const from thermal_zone_device_ops declaration

* acpi-processor:
  ACPI / scan: bail out early if failed to parse APIC ID for CPU

* acpi-sleep:
  ACPI / sleep: remove panic in case hardware has changed after S4
Loading
Loading
Loading
Loading
+14 −10
Original line number Diff line number Diff line
@@ -212,7 +212,7 @@ static int acpi_processor_get_info(struct acpi_device *device)
	union acpi_object object = { 0 };
	struct acpi_buffer buffer = { sizeof(union acpi_object), &object };
	struct acpi_processor *pr = acpi_driver_data(device);
	int cpu_index, device_declaration = 0;
	int apic_id, cpu_index, device_declaration = 0;
	acpi_status status = AE_OK;
	static int cpu0_initialized;
	unsigned long long value;
@@ -258,18 +258,21 @@ static int acpi_processor_get_info(struct acpi_device *device)
		device_declaration = 1;
		pr->acpi_id = value;
	}
	pr->apic_id = acpi_get_apicid(pr->handle, device_declaration,
					pr->acpi_id);
	cpu_index = acpi_map_cpuid(pr->apic_id, pr->acpi_id);

	/* Handle UP system running SMP kernel, with no LAPIC in MADT */
	if (!cpu0_initialized && (cpu_index == -1) &&
	    (num_online_cpus() == 1)) {
		cpu_index = 0;
	apic_id = acpi_get_apicid(pr->handle, device_declaration, pr->acpi_id);
	if (apic_id < 0) {
		acpi_handle_err(pr->handle, "failed to get CPU APIC ID.\n");
		return -ENODEV;
	}
	pr->apic_id = apic_id;

	cpu_index = acpi_map_cpuid(pr->apic_id, pr->acpi_id);
	if (!cpu0_initialized) {
		cpu0_initialized = 1;

		/* Handle UP system running SMP kernel, with no LAPIC in MADT */
		if ((cpu_index == -1) && (num_online_cpus() == 1))
			cpu_index = 0;
	}
	pr->id = cpu_index;

	/*
@@ -282,6 +285,7 @@ static int acpi_processor_get_info(struct acpi_device *device)
		if (ret)
			return ret;
	}

	/*
	 * On some boxes several processors use the same processor bus id.
	 * But they are located in different scope. For example:
+50 −0
Original line number Diff line number Diff line
@@ -322,6 +322,56 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
		     DMI_MATCH(DMI_PRODUCT_VERSION, "2349D15"),
		},
	},
	{
	.callback = dmi_disable_osi_win8,
	.ident = "HP ProBook 2013 models",
	.matches = {
		     DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
		     DMI_MATCH(DMI_PRODUCT_NAME, "HP ProBook "),
		     DMI_MATCH(DMI_PRODUCT_NAME, " G1"),
		},
	},
	{
	.callback = dmi_disable_osi_win8,
	.ident = "HP EliteBook 2013 models",
	.matches = {
		     DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
		     DMI_MATCH(DMI_PRODUCT_NAME, "HP EliteBook "),
		     DMI_MATCH(DMI_PRODUCT_NAME, " G1"),
		},
	},
	{
	.callback = dmi_disable_osi_win8,
	.ident = "HP ZBook 14",
	.matches = {
		     DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
		     DMI_MATCH(DMI_PRODUCT_NAME, "HP ZBook 14"),
		},
	},
	{
	.callback = dmi_disable_osi_win8,
	.ident = "HP ZBook 15",
	.matches = {
		     DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
		     DMI_MATCH(DMI_PRODUCT_NAME, "HP ZBook 15"),
		},
	},
	{
	.callback = dmi_disable_osi_win8,
	.ident = "HP ZBook 17",
	.matches = {
		     DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
		     DMI_MATCH(DMI_PRODUCT_NAME, "HP ZBook 17"),
		},
	},
	{
	.callback = dmi_disable_osi_win8,
	.ident = "HP EliteBook 8780w",
	.matches = {
		     DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
		     DMI_MATCH(DMI_PRODUCT_NAME, "HP EliteBook 8780w"),
		},
	},

	/*
	 * BIOS invocation of _OSI(Linux) is almost always a BIOS bug.
+0 −18
Original line number Diff line number Diff line
@@ -100,7 +100,6 @@ struct acpi_button {
	struct input_dev *input;
	char phys[32];			/* for input device */
	unsigned long pushed;
	bool wakeup_enabled;
};

static BLOCKING_NOTIFIER_HEAD(acpi_lid_notifier);
@@ -406,16 +405,6 @@ static int acpi_button_add(struct acpi_device *device)
		lid_device = device;
	}

	if (device->wakeup.flags.valid) {
		/* Button's GPE is run-wake GPE */
		acpi_enable_gpe(device->wakeup.gpe_device,
				device->wakeup.gpe_number);
		if (!device_may_wakeup(&device->dev)) {
			device_set_wakeup_enable(&device->dev, true);
			button->wakeup_enabled = true;
		}
	}

	printk(KERN_INFO PREFIX "%s [%s]\n", name, acpi_device_bid(device));
	return 0;

@@ -432,13 +421,6 @@ static int acpi_button_remove(struct acpi_device *device)
{
	struct acpi_button *button = acpi_driver_data(device);

	if (device->wakeup.flags.valid) {
		acpi_disable_gpe(device->wakeup.gpe_device,
				device->wakeup.gpe_number);
		if (button->wakeup_enabled)
			device_set_wakeup_enable(&device->dev, false);
	}

	acpi_button_remove_fs(device);
	input_unregister_device(button->input);
	kfree(button);
+1 −1
Original line number Diff line number Diff line
@@ -753,9 +753,9 @@ static int ec_install_handlers(struct acpi_ec *ec)
			pr_err("Fail in evaluating the _REG object"
				" of EC device. Broken bios is suspected.\n");
		} else {
			acpi_disable_gpe(NULL, ec->gpe);
			acpi_remove_gpe_handler(NULL, ec->gpe,
				&acpi_ec_gpe_handler);
			acpi_disable_gpe(NULL, ec->gpe);
			return -ENODEV;
		}
	}
+2 −5
Original line number Diff line number Diff line
@@ -666,11 +666,8 @@ static void acpi_hibernation_leave(void)
	/* Reprogram control registers */
	acpi_leave_sleep_state_prep(ACPI_STATE_S4);
	/* Check the hardware signature */
	if (facs && s4_hardware_signature != facs->hardware_signature) {
		printk(KERN_EMERG "ACPI: Hardware changed while hibernated, "
			"cannot resume!\n");
		panic("ACPI S4 hardware signature mismatch");
	}
	if (facs && s4_hardware_signature != facs->hardware_signature)
		pr_crit("ACPI: Hardware changed while hibernated, success doubtful!\n");
	/* Restore the NVS memory area */
	suspend_nvs_restore();
	/* Allow EC transactions to happen. */
Loading