From 92fa7e24cb46aa50b0b6589f49a562bec5b94c59 Mon Sep 17 00:00:00 2001 From: Jung-uk Kim Date: Fri, 4 May 2012 18:54:51 +0000 Subject: [PATCH] Complete commit message for r235024: Use MADT to match ACPI Processor objects to CPUs. MADT and DSDT/SSDTs may list CPUs in different orders, especially for disabled logical cores. Now we match ACPI IDs from the MADT with Processor objects, strictly order CPUs accordingly, and ignore disabled cores. This prevents us from executing methods for other CPUs, e. g., _PSS for disabled logical core, which may not exist. Unfortunately, it is known that there are a few systems with buggy BIOSes that do not have unique ACPI IDs for MADT and Processor objects. To work around these problems, 'debug.acpi.cpu_unordered' tunable is added. Set this to a non-zero value to restore the old behavior. Many thanks to jhb for pointing me to the right direction and the manual page change. Reported by: Harris, James R (james dot r dot harris at intel dot com) Tested by: Harris, James R (james dot r dot harris at intel dot com) Reviewed by: jhb MFC after: 1 month --- share/man/man4/acpi.4 | 2 +- sys/dev/acpica/acpi.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/share/man/man4/acpi.4 b/share/man/man4/acpi.4 index 91b6517efe5..9d571288116 100644 --- a/share/man/man4/acpi.4 +++ b/share/man/man4/acpi.4 @@ -199,7 +199,7 @@ Enables loading of a custom ACPI DSDT. .It Va acpi_dsdt_name Name of the DSDT table to load, if loading is enabled. .It Va debug.acpi.cpu_unordered -Do not use the MADT to match ACPI processor objects to CPUs. +Do not use the MADT to match ACPI Processor objects to CPUs. This is needed on a few systems with a buggy BIOS that does not use consistent processor IDs. Default is 0 (disabled). diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c index a7a1d6311a8..a4038b3fc99 100644 --- a/sys/dev/acpica/acpi.c +++ b/sys/dev/acpica/acpi.c @@ -294,7 +294,7 @@ static int acpi_cpu_unordered; TUNABLE_INT("debug.acpi.cpu_unordered", &acpi_cpu_unordered); SYSCTL_INT(_debug_acpi, OID_AUTO, cpu_unordered, CTLFLAG_RDTUN, &acpi_cpu_unordered, 0, - "Do not use the MADT to match ACPI processor objects to CPUs."); + "Do not use the MADT to match ACPI Processor objects to CPUs."); /* Allow users to override quirks. */ TUNABLE_INT("debug.acpi.quirks", &acpi_quirks);