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-4.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull ACPI fixes from Rafael Wysocki:
"These fix two issues related to IOAPIC hotplug, an overzealous build
optimization that prevents the function graph tracer from working with
the ACPI subsystem correctly and an RCU synchronization issue in the
ACPI APEI code.

Specifics:

- drop the unconditional setting of the '-Os' gcc flag from the ACPI
Makefile to make the function graph tracer work correctly with the
ACPI subsystem (Josh Poimboeuf).

- add missing synchronize_rcu() to ghes_remove() which removes an
element from an RCU-protected list, but fails to synchronize it
properly afterward (James Morse).

- fix two problems related to IOAPIC hotplug, a local variable
initialization in setup_res() and the creation of platform device
objects for IO(x)APICs which are (a) unused and (b) leaked on
hot-removal (Joerg Roedel)"

* tag 'acpi-4.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
ACPI: Fix incompatibility with mcount-based function graph tracing
ACPI / APEI: Add missing synchronize_rcu() on NOTIFY_SCI removal
ACPI: Do not create a platform_device for IOAPIC/IOxAPIC
ACPI: ioapic: Clear on-stack resource before using it

+12 -4
-1
drivers/acpi/Makefile
··· 2 2 # Makefile for the Linux ACPI interpreter 3 3 # 4 4 5 - ccflags-y := -Os 6 5 ccflags-$(CONFIG_ACPI_DEBUG) += -DACPI_DEBUG_OUTPUT 7 6 8 7 #
+5 -3
drivers/acpi/acpi_platform.c
··· 25 25 ACPI_MODULE_NAME("platform"); 26 26 27 27 static const struct acpi_device_id forbidden_id_list[] = { 28 - {"PNP0000", 0}, /* PIC */ 29 - {"PNP0100", 0}, /* Timer */ 30 - {"PNP0200", 0}, /* AT DMA Controller */ 28 + {"PNP0000", 0}, /* PIC */ 29 + {"PNP0100", 0}, /* Timer */ 30 + {"PNP0200", 0}, /* AT DMA Controller */ 31 + {"ACPI0009", 0}, /* IOxAPIC */ 32 + {"ACPI000A", 0}, /* IOAPIC */ 31 33 {"", 0}, 32 34 }; 33 35
+1
drivers/acpi/apei/ghes.c
··· 1073 1073 if (list_empty(&ghes_sci)) 1074 1074 unregister_acpi_hed_notifier(&ghes_notifier_sci); 1075 1075 mutex_unlock(&ghes_list_mutex); 1076 + synchronize_rcu(); 1076 1077 break; 1077 1078 case ACPI_HEST_NOTIFY_NMI: 1078 1079 ghes_nmi_remove(ghes);
+6
drivers/acpi/ioapic.c
··· 45 45 struct resource *res = data; 46 46 struct resource_win win; 47 47 48 + /* 49 + * We might assign this to 'res' later, make sure all pointers are 50 + * cleared before the resource is added to the global list 51 + */ 52 + memset(&win, 0, sizeof(win)); 53 + 48 54 res->flags = 0; 49 55 if (acpi_dev_filter_resource_type(acpi_res, IORESOURCE_MEM)) 50 56 return AE_OK;