Module Name:    src
Committed By:   maxv
Date:           Sat Jul 22 08:23:19 UTC 2017

Modified Files:
        src/sys/arch/amd64/amd64: machdep.c
        src/sys/arch/i386/i386: machdep.c
        src/sys/arch/x86/x86: pmap.c

Log Message:
Initialize these kpm fields in pmap_bootstrap.


To generate a diff of this commit:
cvs rdiff -u -r1.256 -r1.257 src/sys/arch/amd64/amd64/machdep.c
cvs rdiff -u -r1.783 -r1.784 src/sys/arch/i386/i386/machdep.c
cvs rdiff -u -r1.254 -r1.255 src/sys/arch/x86/x86/pmap.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/amd64/amd64/machdep.c
diff -u src/sys/arch/amd64/amd64/machdep.c:1.256 src/sys/arch/amd64/amd64/machdep.c:1.257
--- src/sys/arch/amd64/amd64/machdep.c:1.256	Fri Jul 14 13:21:29 2017
+++ src/sys/arch/amd64/amd64/machdep.c	Sat Jul 22 08:23:19 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: machdep.c,v 1.256 2017/07/14 13:21:29 maxv Exp $	*/
+/*	$NetBSD: machdep.c,v 1.257 2017/07/22 08:23:19 maxv Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1998, 2000, 2006, 2007, 2008, 2011
@@ -111,7 +111,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.256 2017/07/14 13:21:29 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.257 2017/07/22 08:23:19 maxv Exp $");
 
 /* #define XENDEBUG_LOW  */
 
@@ -472,25 +472,21 @@ x86_64_proc0_tss_ldt_init(void)
 	pcb->pcb_rsp0 = (uvm_lwp_getuarea(l) + USPACE - 16) & ~0xf;
 	pcb->pcb_iopl = SEL_KPL;
 	pcb->pcb_dbregs = NULL;
-
-	pmap_kernel()->pm_ldt_sel = GSYSSEL(GLDT_SEL, SEL_KPL);
 	pcb->pcb_cr0 = rcr0() & ~CR0_TS;
 	l->l_md.md_regs = (struct trapframe *)pcb->pcb_rsp0 - 1;
 
 #if !defined(XEN)
-	lldt(pmap_kernel()->pm_ldt_sel);
+	lldt(GSYSSEL(GLDT_SEL, SEL_KPL));
 #else
-	{
 	struct physdev_op physop;
-	xen_set_ldt((vaddr_t) ldtstore, LDT_SIZE >> 3);
+	xen_set_ldt((vaddr_t)ldtstore, LDT_SIZE >> 3);
 	/* Reset TS bit and set kernel stack for interrupt handlers */
 	HYPERVISOR_fpu_taskswitch(1);
 	HYPERVISOR_stack_switch(GSEL(GDATA_SEL, SEL_KPL), pcb->pcb_rsp0);
 	physop.cmd = PHYSDEVOP_SET_IOPL;
 	physop.u.set_iopl.iopl = pcb->pcb_iopl;
 	HYPERVISOR_physdev_op(&physop);
-	}
-#endif /* XEN */
+#endif
 }
 
 /*

Index: src/sys/arch/i386/i386/machdep.c
diff -u src/sys/arch/i386/i386/machdep.c:1.783 src/sys/arch/i386/i386/machdep.c:1.784
--- src/sys/arch/i386/i386/machdep.c:1.783	Sat Jul  1 10:44:42 2017
+++ src/sys/arch/i386/i386/machdep.c	Sat Jul 22 08:23:18 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: machdep.c,v 1.783 2017/07/01 10:44:42 maxv Exp $	*/
+/*	$NetBSD: machdep.c,v 1.784 2017/07/22 08:23:18 maxv Exp $	*/
 
 /*-
  * Copyright (c) 1996, 1997, 1998, 2000, 2004, 2006, 2008, 2009
@@ -67,7 +67,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.783 2017/07/01 10:44:42 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.784 2017/07/22 08:23:18 maxv Exp $");
 
 #include "opt_beep.h"
 #include "opt_compat_ibcs2.h"
@@ -497,13 +497,9 @@ cpu_startup(void)
 void
 i386_proc0_tss_ldt_init(void)
 {
-	struct lwp *l;
-	struct pcb *pcb __diagused;
-
-	l = &lwp0;
-	pcb = lwp_getpcb(l);
+	struct lwp *l = &lwp0;
+	struct pcb *pcb = lwp_getpcb(l);
 
-	pmap_kernel()->pm_ldt_sel = GSEL(GLDT_SEL, SEL_KPL);
 	pcb->pcb_cr0 = rcr0() & ~CR0_TS;
 	pcb->pcb_esp0 = uvm_lwp_getuarea(l) + USPACE - 16;
 	pcb->pcb_iopl = SEL_KPL;
@@ -513,7 +509,7 @@ i386_proc0_tss_ldt_init(void)
 	pcb->pcb_dbregs = NULL;
 
 #ifndef XEN
-	lldt(pmap_kernel()->pm_ldt_sel);
+	lldt(GSEL(GLDT_SEL, SEL_KPL));
 #else
 	HYPERVISOR_fpu_taskswitch(1);
 	XENPRINTF(("lwp tss sp %p ss %04x/%04x\n",

Index: src/sys/arch/x86/x86/pmap.c
diff -u src/sys/arch/x86/x86/pmap.c:1.254 src/sys/arch/x86/x86/pmap.c:1.255
--- src/sys/arch/x86/x86/pmap.c:1.254	Sun Jun 25 22:16:46 2017
+++ src/sys/arch/x86/x86/pmap.c	Sat Jul 22 08:23:19 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: pmap.c,v 1.254 2017/06/25 22:16:46 bouyer Exp $	*/
+/*	$NetBSD: pmap.c,v 1.255 2017/07/22 08:23:19 maxv Exp $	*/
 
 /*
  * Copyright (c) 2008, 2010, 2016, 2017 The NetBSD Foundation, Inc.
@@ -171,7 +171,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.254 2017/06/25 22:16:46 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.255 2017/07/22 08:23:19 maxv Exp $");
 
 #include "opt_user_ldt.h"
 #include "opt_lockdebug.h"
@@ -1265,6 +1265,10 @@ pmap_bootstrap(vaddr_t kva_start)
 	kcpuset_create(&kpm->pm_cpus, true);
 	kcpuset_create(&kpm->pm_kernel_cpus, true);
 
+	kpm->pm_ldt = NULL;
+	kpm->pm_ldt_len = 0;
+	kpm->pm_ldt_sel = GSYSSEL(GLDT_SEL, SEL_KPL);
+
 	/*
 	 * the above is just a rough estimate and not critical to the proper
 	 * operation of the system.

Reply via email to