Module Name: src
Committed By: jruoho
Date: Wed Aug 4 10:02:12 UTC 2010
Modified Files:
src/sys/arch/x86/include: cpu.h cpuvar.h
src/sys/arch/x86/x86: cpu.c mpacpi.c mpbios.c
src/sys/dev/acpi: acpi_cpu.c acpi_cpu_cstate.c
Log Message:
Store the MADT-derived CPU ID to <x86/cpu.h>. This is required to properly
match the ACPI processor object ID with the ID available in the APIC table.
To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/x86/include/cpu.h
cvs rdiff -u -r1.33 -r1.34 src/sys/arch/x86/include/cpuvar.h
cvs rdiff -u -r1.73 -r1.74 src/sys/arch/x86/x86/cpu.c
cvs rdiff -u -r1.87 -r1.88 src/sys/arch/x86/x86/mpacpi.c
cvs rdiff -u -r1.57 -r1.58 src/sys/arch/x86/x86/mpbios.c
cvs rdiff -u -r1.10 -r1.11 src/sys/dev/acpi/acpi_cpu.c
cvs rdiff -u -r1.13 -r1.14 src/sys/dev/acpi/acpi_cpu_cstate.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/x86/include/cpu.h
diff -u src/sys/arch/x86/include/cpu.h:1.23 src/sys/arch/x86/include/cpu.h:1.24
--- src/sys/arch/x86/include/cpu.h:1.23 Sat Jul 24 00:45:56 2010
+++ src/sys/arch/x86/include/cpu.h Wed Aug 4 10:02:11 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.h,v 1.23 2010/07/24 00:45:56 jym Exp $ */
+/* $NetBSD: cpu.h,v 1.24 2010/08/04 10:02:11 jruoho Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@@ -95,6 +95,7 @@
int ci_fpused; /* XEN: FPU was used by curlwp */
cpuid_t ci_cpuid; /* our CPU ID */
int ci_cpumask; /* (1 << CPU ID) */
+ uint32_t ci_acpiid; /* our ACPI/MADT ID */
uint32_t ci_initapicid; /* our intitial APIC ID */
struct cpu_data ci_data; /* MI per-cpu data */
Index: src/sys/arch/x86/include/cpuvar.h
diff -u src/sys/arch/x86/include/cpuvar.h:1.33 src/sys/arch/x86/include/cpuvar.h:1.34
--- src/sys/arch/x86/include/cpuvar.h:1.33 Tue Jul 6 20:50:35 2010
+++ src/sys/arch/x86/include/cpuvar.h Wed Aug 4 10:02:11 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: cpuvar.h,v 1.33 2010/07/06 20:50:35 cegger Exp $ */
+/* $NetBSD: cpuvar.h,v 1.34 2010/08/04 10:02:11 jruoho Exp $ */
/*-
* Copyright (c) 2000, 2007 The NetBSD Foundation, Inc.
@@ -79,6 +79,7 @@
#define CPU_ROLE_AP 2
struct cpu_attach_args {
+ int cpu_id;
int cpu_number;
int cpu_role;
const struct cpu_functions *cpu_func;
Index: src/sys/arch/x86/x86/cpu.c
diff -u src/sys/arch/x86/x86/cpu.c:1.73 src/sys/arch/x86/x86/cpu.c:1.74
--- src/sys/arch/x86/x86/cpu.c:1.73 Sat Jul 24 00:45:56 2010
+++ src/sys/arch/x86/x86/cpu.c Wed Aug 4 10:02:12 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.c,v 1.73 2010/07/24 00:45:56 jym Exp $ */
+/* $NetBSD: cpu.c,v 1.74 2010/08/04 10:02:12 jruoho Exp $ */
/*-
* Copyright (c) 2000, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.73 2010/07/24 00:45:56 jym Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.74 2010/08/04 10:02:12 jruoho Exp $");
#include "opt_ddb.h"
#include "opt_mpbios.h" /* for MPDEBUG */
@@ -330,6 +330,7 @@
ci->ci_self = ci;
sc->sc_info = ci;
ci->ci_dev = self;
+ ci->ci_acpiid = caa->cpu_id;
ci->ci_cpuid = caa->cpu_number;
ci->ci_func = caa->cpu_func;
Index: src/sys/arch/x86/x86/mpacpi.c
diff -u src/sys/arch/x86/x86/mpacpi.c:1.87 src/sys/arch/x86/x86/mpacpi.c:1.88
--- src/sys/arch/x86/x86/mpacpi.c:1.87 Tue Apr 27 05:34:14 2010
+++ src/sys/arch/x86/x86/mpacpi.c Wed Aug 4 10:02:12 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: mpacpi.c,v 1.87 2010/04/27 05:34:14 jruoho Exp $ */
+/* $NetBSD: mpacpi.c,v 1.88 2010/08/04 10:02:12 jruoho Exp $ */
/*
* Copyright (c) 2003 Wasabi Systems, Inc.
@@ -36,7 +36,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mpacpi.c,v 1.87 2010/04/27 05:34:14 jruoho Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mpacpi.c,v 1.88 2010/08/04 10:02:12 jruoho Exp $");
#include "acpica.h"
#include "opt_acpi.h"
@@ -383,6 +383,7 @@
caa.cpu_role = CPU_ROLE_AP;
else
caa.cpu_role = CPU_ROLE_BP;
+ caa.cpu_id = lapic->ProcessorId;
caa.cpu_number = lapic->Id;
caa.cpu_func = &mp_cpu_funcs;
locs[CPUBUSCF_APID] = caa.cpu_number;
@@ -409,6 +410,7 @@
caa.cpu_role = CPU_ROLE_AP;
else
caa.cpu_role = CPU_ROLE_BP;
+ caa.cpu_id = x2apic->Uid;
caa.cpu_number = x2apic->LocalApicId;
caa.cpu_func = &mp_cpu_funcs;
locs[CPUBUSCF_APID] = caa.cpu_number;
Index: src/sys/arch/x86/x86/mpbios.c
diff -u src/sys/arch/x86/x86/mpbios.c:1.57 src/sys/arch/x86/x86/mpbios.c:1.58
--- src/sys/arch/x86/x86/mpbios.c:1.57 Sun Apr 18 23:47:51 2010
+++ src/sys/arch/x86/x86/mpbios.c Wed Aug 4 10:02:12 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: mpbios.c,v 1.57 2010/04/18 23:47:51 jym Exp $ */
+/* $NetBSD: mpbios.c,v 1.58 2010/08/04 10:02:12 jruoho Exp $ */
/*-
* Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -96,7 +96,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mpbios.c,v 1.57 2010/04/18 23:47:51 jym Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mpbios.c,v 1.58 2010/08/04 10:02:12 jruoho Exp $");
#include "acpica.h"
#include "lapic.h"
@@ -717,6 +717,7 @@
else
caa.cpu_role = CPU_ROLE_AP;
+ caa.cpu_id = entry->apic_id;
caa.cpu_number = entry->apic_id;
caa.cpu_func = &mp_cpu_funcs;
locs[CPUBUSCF_APID] = caa.cpu_number;
Index: src/sys/dev/acpi/acpi_cpu.c
diff -u src/sys/dev/acpi/acpi_cpu.c:1.10 src/sys/dev/acpi/acpi_cpu.c:1.11
--- src/sys/dev/acpi/acpi_cpu.c:1.10 Fri Jul 30 06:11:14 2010
+++ src/sys/dev/acpi/acpi_cpu.c Wed Aug 4 10:02:12 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi_cpu.c,v 1.10 2010/07/30 06:11:14 jruoho Exp $ */
+/* $NetBSD: acpi_cpu.c,v 1.11 2010/08/04 10:02:12 jruoho Exp $ */
/*-
* Copyright (c) 2010 Jukka Ruohonen <[email protected]>
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_cpu.c,v 1.10 2010/07/30 06:11:14 jruoho Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_cpu.c,v 1.11 2010/08/04 10:02:12 jruoho Exp $");
#include <sys/param.h>
#include <sys/cpu.h>
@@ -270,7 +270,7 @@
for (CPU_INFO_FOREACH(cii, ci)) {
- if (id == ci->ci_cpuid)
+ if (id == ci->ci_acpiid)
return id;
}
Index: src/sys/dev/acpi/acpi_cpu_cstate.c
diff -u src/sys/dev/acpi/acpi_cpu_cstate.c:1.13 src/sys/dev/acpi/acpi_cpu_cstate.c:1.14
--- src/sys/dev/acpi/acpi_cpu_cstate.c:1.13 Fri Jul 30 06:11:14 2010
+++ src/sys/dev/acpi/acpi_cpu_cstate.c Wed Aug 4 10:02:12 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi_cpu_cstate.c,v 1.13 2010/07/30 06:11:14 jruoho Exp $ */
+/* $NetBSD: acpi_cpu_cstate.c,v 1.14 2010/08/04 10:02:12 jruoho Exp $ */
/*-
* Copyright (c) 2010 Jukka Ruohonen <[email protected]>
@@ -27,7 +27,7 @@
* SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: acpi_cpu_cstate.c,v 1.13 2010/07/30 06:11:14 jruoho Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_cpu_cstate.c,v 1.14 2010/08/04 10:02:12 jruoho Exp $");
#include <sys/param.h>
#include <sys/cpu.h>
@@ -717,10 +717,10 @@
acpi_md_OsDisableInterrupt();
KASSERT(acpicpu_sc != NULL);
- KASSERT(ci->ci_cpuid < maxcpus);
+ KASSERT(ci->ci_acpiid < maxcpus);
KASSERT(ci->ci_ilevel == IPL_NONE);
- sc = acpicpu_sc[ci->ci_cpuid];
+ sc = acpicpu_sc[ci->ci_acpiid];
if (__predict_false(sc == NULL))
goto halt;