diff options
author | jhb <jhb@FreeBSD.org> | 2006-09-11 20:10:42 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2006-09-11 20:10:42 +0000 |
commit | 5845d0195b91c768f244ed149e5039372942f2aa (patch) | |
tree | f8f222df641e17218c5fdf8e51827001de3466f4 /sys/amd64 | |
parent | c4015db86a7e4c99ee48201c48ffa021ef6f5ed5 (diff) | |
download | FreeBSD-src-5845d0195b91c768f244ed149e5039372942f2aa.zip FreeBSD-src-5845d0195b91c768f244ed149e5039372942f2aa.tar.gz |
Actually hook up the IPI_INVLCACHE IDT vectors backing
pmap_invalidate_cache() in the SMP case so pmap_mapdev() in multiuser
doesn't panic with a trap 30. I broke this many months ago when I
added pmap_invalidate_cache() as early parts of the PAT work.
Patience from: jmg
Pointy hat: jhb
Diffstat (limited to 'sys/amd64')
-rw-r--r-- | sys/amd64/amd64/mp_machdep.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/amd64/amd64/mp_machdep.c b/sys/amd64/amd64/mp_machdep.c index 4a1695b..2172c17 100644 --- a/sys/amd64/amd64/mp_machdep.c +++ b/sys/amd64/amd64/mp_machdep.c @@ -342,7 +342,10 @@ cpu_mp_start(void) setidt(IPI_INVLTLB, IDTVEC(invltlb), SDT_SYSIGT, SEL_KPL, 0); setidt(IPI_INVLPG, IDTVEC(invlpg), SDT_SYSIGT, SEL_KPL, 0); setidt(IPI_INVLRNG, IDTVEC(invlrng), SDT_SYSIGT, SEL_KPL, 0); - + + /* Install an inter-CPU IPI for cache invalidation. */ + setidt(IPI_INVLCACHE, IDTVEC(invlcache), SDT_SYSIGT, SEL_KPL, 0); + /* Install an inter-CPU IPI for all-CPU rendezvous */ setidt(IPI_RENDEZVOUS, IDTVEC(rendezvous), SDT_SYSIGT, SEL_KPL, 0); |