diff options
author | peter <peter@FreeBSD.org> | 2002-07-17 21:47:05 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 2002-07-17 21:47:05 +0000 |
commit | decf7baa13bdaabdf7e3882d040cd75ca13dadae (patch) | |
tree | 78ae00216abacfb3a39bc050acbfffef8387ca13 /sys/i386 | |
parent | 0e4b89607d67b97b6a546982fb34321f8e52aa87 (diff) | |
download | FreeBSD-src-decf7baa13bdaabdf7e3882d040cd75ca13dadae.zip FreeBSD-src-decf7baa13bdaabdf7e3882d040cd75ca13dadae.tar.gz |
Avoid trying to set PG_G on the first 4MB when we set up the 4MB page.
This solves the SMP panic for at least one system. I'd still like to know
why my xeon works though.
Tested by: bmilekic
Diffstat (limited to 'sys/i386')
-rw-r--r-- | sys/i386/i386/pmap.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c index a52736b..9a2f359 100644 --- a/sys/i386/i386/pmap.c +++ b/sys/i386/i386/pmap.c @@ -443,6 +443,12 @@ pmap_set_opt(void) if (pgeflag) { /* Turn on PG_G for text, data, bss pages. */ va = (vm_offset_t)btext; +#ifndef DISABLE_PSE + if (pseflag && (cpu_feature & CPUID_PSE)) { + if (va < KERNBASE + (1 << PDRSHIFT)) + va = KERNBASE + (1 << PDRSHIFT); + } +#endif endva = KERNBASE + KERNend; while (va < endva) { pte = vtopte(va); |