Module Name: src Committed By: maxv Date: Wed Feb 8 10:08:26 UTC 2017
Modified Files: src/sys/arch/amd64/amd64: gdt.c src/sys/arch/amd64/include: gdt.h src/sys/arch/i386/i386: gdt.c src/sys/arch/i386/include: gdt.h src/sys/arch/x86/x86: ipi.c Log Message: Remove gdt_reload_cpu. GDTR takes a VA as base, and in our x86 implementation this VA is per-cpu and does not change; there is therefore no need to remotely reload GDTR. To generate a diff of this commit: cvs rdiff -u -r1.35 -r1.36 src/sys/arch/amd64/amd64/gdt.c cvs rdiff -u -r1.9 -r1.10 src/sys/arch/amd64/include/gdt.h cvs rdiff -u -r1.58 -r1.59 src/sys/arch/i386/i386/gdt.c cvs rdiff -u -r1.14 -r1.15 src/sys/arch/i386/include/gdt.h cvs rdiff -u -r1.26 -r1.27 src/sys/arch/x86/x86/ipi.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/gdt.c diff -u src/sys/arch/amd64/amd64/gdt.c:1.35 src/sys/arch/amd64/amd64/gdt.c:1.36 --- src/sys/arch/amd64/amd64/gdt.c:1.35 Wed Feb 8 09:39:32 2017 +++ src/sys/arch/amd64/amd64/gdt.c Wed Feb 8 10:08:26 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: gdt.c,v 1.35 2017/02/08 09:39:32 maxv Exp $ */ +/* $NetBSD: gdt.c,v 1.36 2017/02/08 10:08:26 maxv Exp $ */ /*- * Copyright (c) 1996, 1997, 2009 The NetBSD Foundation, Inc. @@ -37,7 +37,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: gdt.c,v 1.35 2017/02/08 09:39:32 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: gdt.c,v 1.36 2017/02/08 10:08:26 maxv Exp $"); #include "opt_multiprocessor.h" #include "opt_xen.h" @@ -208,21 +208,6 @@ gdt_init_cpu(struct cpu_info *ci) lgdt(®ion); } -#ifdef MULTIPROCESSOR -void -gdt_reload_cpu(struct cpu_info *ci) -{ - struct region_descriptor region; - -#ifndef XEN - setregion(®ion, ci->ci_gdt, MAXGDTSIZ - 1); -#else - setregion(®ion, ci->ci_gdt, gdt_size - 1); -#endif - lgdt(®ion); -} -#endif - #if !defined(XEN) || defined(USER_LDT) /* * Grow the GDT. The GDT is present on each CPU, so we need to iterate over all Index: src/sys/arch/amd64/include/gdt.h diff -u src/sys/arch/amd64/include/gdt.h:1.9 src/sys/arch/amd64/include/gdt.h:1.10 --- src/sys/arch/amd64/include/gdt.h:1.9 Wed Feb 8 09:39:32 2017 +++ src/sys/arch/amd64/include/gdt.h Wed Feb 8 10:08:26 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: gdt.h,v 1.9 2017/02/08 09:39:32 maxv Exp $ */ +/* $NetBSD: gdt.h,v 1.10 2017/02/08 10:08:26 maxv Exp $ */ /*- * Copyright (c) 1996, 1997 The NetBSD Foundation, Inc. @@ -35,7 +35,6 @@ struct pmap; void gdt_init(void); void gdt_init_cpu(struct cpu_info *); -void gdt_reload_cpu(struct cpu_info *); void gdt_alloc_cpu(struct cpu_info *); struct x86_64_tss; Index: src/sys/arch/i386/i386/gdt.c diff -u src/sys/arch/i386/i386/gdt.c:1.58 src/sys/arch/i386/i386/gdt.c:1.59 --- src/sys/arch/i386/i386/gdt.c:1.58 Wed Feb 8 09:39:32 2017 +++ src/sys/arch/i386/i386/gdt.c Wed Feb 8 10:08:26 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: gdt.c,v 1.58 2017/02/08 09:39:32 maxv Exp $ */ +/* $NetBSD: gdt.c,v 1.59 2017/02/08 10:08:26 maxv Exp $ */ /*- * Copyright (c) 1996, 1997, 2009 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: gdt.c,v 1.58 2017/02/08 09:39:32 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: gdt.c,v 1.59 2017/02/08 10:08:26 maxv Exp $"); #include "opt_multiprocessor.h" #include "opt_xen.h" @@ -231,19 +231,6 @@ gdt_init_cpu(struct cpu_info *ci) #endif } -#if defined(MULTIPROCESSOR) && !defined(XEN) -void -gdt_reload_cpu(struct cpu_info *ci) -{ - struct region_descriptor region; - size_t max_len; - - max_len = MAXGDTSIZ * sizeof(gdtstore[0]); - setregion(®ion, ci->ci_gdt, max_len - 1); - lgdt(®ion); -} -#endif - /* * Grow the GDT. The GDT is present on each CPU, so we need to iterate over all * of them. We already have the virtual memory, we only need to grow the Index: src/sys/arch/i386/include/gdt.h diff -u src/sys/arch/i386/include/gdt.h:1.14 src/sys/arch/i386/include/gdt.h:1.15 --- src/sys/arch/i386/include/gdt.h:1.14 Sat Aug 20 16:05:48 2016 +++ src/sys/arch/i386/include/gdt.h Wed Feb 8 10:08:26 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: gdt.h,v 1.14 2016/08/20 16:05:48 maxv Exp $ */ +/* $NetBSD: gdt.h,v 1.15 2017/02/08 10:08:26 maxv Exp $ */ /*- * Copyright (c) 1996, 1997 The NetBSD Foundation, Inc. @@ -36,7 +36,6 @@ struct pmap; void gdt_init(void); void gdt_init_cpu(struct cpu_info *); -void gdt_reload_cpu(struct cpu_info *); void gdt_alloc_cpu(struct cpu_info *); int tss_alloc(const struct i386tss *); void tss_free(int); Index: src/sys/arch/x86/x86/ipi.c diff -u src/sys/arch/x86/x86/ipi.c:1.26 src/sys/arch/x86/x86/ipi.c:1.27 --- src/sys/arch/x86/x86/ipi.c:1.26 Sun Jul 20 15:48:54 2014 +++ src/sys/arch/x86/x86/ipi.c Wed Feb 8 10:08:26 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: ipi.c,v 1.26 2014/07/20 15:48:54 uebayasi Exp $ */ +/* $NetBSD: ipi.c,v 1.27 2017/02/08 10:08:26 maxv Exp $ */ /*- * Copyright (c) 2000, 2008, 2009 The NetBSD Foundation, Inc. @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ipi.c,v 1.26 2014/07/20 15:48:54 uebayasi Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ipi.c,v 1.27 2017/02/08 10:08:26 maxv Exp $"); #include "opt_mtrr.h" @@ -85,7 +85,7 @@ void (* const ipifunc[X86_NIPI])(struct x86_ipi_generic, /* X86_IPI_GENERIC */ x86_ipi_synch_fpu, /* X86_IPI_SYNCH_FPU */ x86_ipi_reload_mtrr, /* X86_IPI_MTRR */ - gdt_reload_cpu, /* X86_IPI_GDT */ + NULL, /* X86_IPI_GDT */ x86_ipi_xcall, /* X86_IPI_XCALL */ acpi_cpu_sleep, /* X86_IPI_ACPI_CPU_SLEEP */ x86_ipi_kpreempt /* X86_IPI_KPREEMPT */