PERFORCE change 1188201 for review
John Baldwin
jhb at FreeBSD.org
Tue Nov 12 20:33:44 UTC 2013
http://p4web.freebsd.org/@@1188201?ac=10
Change 1188201 by jhb at 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);
More information about the p4-projects
mailing list