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>