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.