Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 12 Nov 2013 20:33:43 GMT
From:      John Baldwin <jhb@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 1188201 for review
Message-ID:  <201311122033.rACKXh71095416@skunkworks.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@1188201?ac=10

Change 1188201 by jhb@jhb_jhbbsd on 2013/11/12 20:32:55

	Adopt the other version of this patch I had in the
	msi branch.

Affected files ...

.. //depot/projects/smpng/sys/amd64/amd64/machdep.c#120 edit
.. //depot/projects/smpng/sys/amd64/amd64/mp_machdep.c#93 edit

Differences ...

==== //depot/projects/smpng/sys/amd64/amd64/machdep.c#120 (text+ko) ====

@@ -1042,12 +1042,10 @@
 struct gate_descriptor *idt = &idt0[0];	/* interrupt descriptor table */
 
 static char dblfault_stack[PAGE_SIZE] __aligned(16);
-
+static char mce0_stack[PAGE_SIZE] __aligned(16);
 static char nmi0_stack[PAGE_SIZE] __aligned(16);
 CTASSERT(sizeof(struct nmi_pcpu) == 16);
 
-static char mc0_stack[PAGE_SIZE] __aligned(16);
-
 struct amd64tss common_tss[MAXCPU];
 
 /*
@@ -1853,8 +1851,8 @@
 	np->np_pcpu = (register_t) pc;
 	common_tss[0].tss_ist2 = (long) np;
 
-	/* machine check stack space, runs on ist3 */
-	common_tss[0].tss_ist3 = (long)&mc0_stack[sizeof(mc0_stack)];
+	/* MC# stack space, runs on ist3 */
+	common_tss[0].tss_ist3 = (long)&mce0_stack[sizeof(mce0_stack)];
 
 	/* Set the IO permission bitmap (empty due to tss seg limit) */
 	common_tss[0].tss_iobase = sizeof(struct amd64tss) +

==== //depot/projects/smpng/sys/amd64/amd64/mp_machdep.c#93 (text+ko) ====

@@ -97,8 +97,8 @@
 
 /* Temporary variables for init_secondary()  */
 char *doublefault_stack;
+char *mce_stack;
 char *nmi_stack;
-char *mc_stack;
 void *dpcpu;
 
 struct pcb stoppcbs[MAXCPU];
@@ -639,12 +639,14 @@
 	common_tss[cpu].tss_iobase = sizeof(struct amd64tss) +
 	    IOPAGES * PAGE_SIZE;
 	common_tss[cpu].tss_ist1 = (long)&doublefault_stack[PAGE_SIZE];
-	common_tss[cpu].tss_ist3 = (long)&mc_stack[PAGE_SIZE];
 
 	/* The NMI stack runs on IST2. */
 	np = ((struct nmi_pcpu *) &nmi_stack[PAGE_SIZE]) - 1;
 	common_tss[cpu].tss_ist2 = (long) np;
 
+	/* MC# stack runs on IST3. */
+	common_tss[cpu].tss_ist3 = (long)&mce_stack[PAGE_SIZE];
+
 	/* Prepare private GDT */
 	gdt_segs[GPROC0_SEL].ssd_base = (long) &common_tss[cpu];
 	for (x = 0; x < NGDT; x++) {
@@ -966,10 +968,10 @@
 		    KSTACK_PAGES * PAGE_SIZE, M_WAITOK | M_ZERO);
 		doublefault_stack = (char *)kmem_malloc(kernel_arena,
 		    PAGE_SIZE, M_WAITOK | M_ZERO);
+		mce_stack = (char *)kmem_malloc(kernel_arena, PAGE_SIZE,
+		    M_WAITOK | M_ZERO);
 		nmi_stack = (char *)kmem_malloc(kernel_arena, PAGE_SIZE,
 		    M_WAITOK | M_ZERO);
-		mc_stack = (char *)kmem_malloc(kernel_arena, PAGE_SIZE,
-		    M_WAITOK | M_ZERO);
 		dpcpu = (void *)kmem_malloc(kernel_arena, DPCPU_SIZE,
 		    M_WAITOK | M_ZERO);
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201311122033.rACKXh71095416>