diff options
author | royger <royger@FreeBSD.org> | 2017-02-24 10:20:13 +0000 |
---|---|---|
committer | royger <royger@FreeBSD.org> | 2017-02-24 10:20:13 +0000 |
commit | 51adcc4a230669adb28629d389347b1a4da040e1 (patch) | |
tree | 34d907566c5ed461af0a21c9fe72a192eb5e916b /sys/i386 | |
parent | ab9578f7175d93afabb4399b01039d613d26bdb8 (diff) | |
download | FreeBSD-src-51adcc4a230669adb28629d389347b1a4da040e1.zip FreeBSD-src-51adcc4a230669adb28629d389347b1a4da040e1.tar.gz |
MFC r313871
x86: fix MTRR initialization if EARLY_AP_STARTUP is used
Sponsored by: Citrix Systems R&D
Diffstat (limited to 'sys/i386')
-rw-r--r-- | sys/i386/i386/i686_mem.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/i386/i386/i686_mem.c b/sys/i386/i386/i686_mem.c index a7b8166..03e5b17 100644 --- a/sys/i386/i386/i686_mem.c +++ b/sys/i386/i386/i686_mem.c @@ -588,6 +588,10 @@ i686_mrinit(struct mem_range_softc *sc) u_int regs[4]; int i, nmdesc = 0, pabits; + if (sc->mr_desc != NULL) + /* Already initialized. */ + return; + mtrrcap = rdmsr(MSR_MTRRcap); mtrrdef = rdmsr(MSR_MTRRdefType); @@ -716,5 +720,6 @@ i686_mem_drvinit(void *unused) return; } mem_range_softc.mr_op = &i686_mrops; + i686_mrinit(&mem_range_softc); } -SYSINIT(i686memdev, SI_SUB_DRIVERS, SI_ORDER_FIRST, i686_mem_drvinit, NULL); +SYSINIT(i686memdev, SI_SUB_CPU, SI_ORDER_ANY, i686_mem_drvinit, NULL); |