From owner-p4-projects@FreeBSD.ORG Tue Nov 12 20:33:44 2013 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7EE6DEB9; Tue, 12 Nov 2013 20:33:44 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4009BEB7 for ; Tue, 12 Nov 2013 20:33:44 +0000 (UTC) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [8.8.178.74]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 14FD02451 for ; Tue, 12 Nov 2013 20:33:44 +0000 (UTC) Received: from skunkworks.freebsd.org ([127.0.1.74]) by skunkworks.freebsd.org (8.14.7/8.14.7) with ESMTP id rACKXhhF095419 for ; Tue, 12 Nov 2013 20:33:43 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.7/8.14.6/Submit) id rACKXh71095416 for perforce@freebsd.org; Tue, 12 Nov 2013 20:33:43 GMT (envelope-from jhb@freebsd.org) Date: Tue, 12 Nov 2013 20:33:43 GMT Message-Id: <201311122033.rACKXh71095416@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin Subject: PERFORCE change 1188201 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.16 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Nov 2013 20:33:44 -0000 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);