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;

Reply via email to