summaryrefslogtreecommitdiffstats
path: root/sys/amd64
diff options
context:
space:
mode:
Diffstat (limited to 'sys/amd64')
-rw-r--r--sys/amd64/amd64/pmap.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index ba3ee22..8dfacaa 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -575,7 +575,7 @@ pmap_invalidate_page(pmap_t pmap, vm_offset_t va)
* interrupts disabled here.
* XXX we may need to hold schedlock to get a coherent pm_active
*/
- if (td->td_critnest == 1)
+ if (td->td_critnest == 1 && td->td_savecrit != (critical_t)-1)
cpu_critical_exit(td->td_savecrit);
if (pmap->pm_active == -1 || pmap->pm_active == all_cpus) {
invlpg(va); /* global */
@@ -609,7 +609,7 @@ pmap_invalidate_all(pmap_t pmap)
* interrupts disabled here.
* XXX we may need to hold schedlock to get a coherent pm_active
*/
- if (td->td_critnest == 1)
+ if (td->td_critnest == 1 && td->td_savecrit != (critical_t)-1)
cpu_critical_exit(td->td_savecrit);
if (pmap->pm_active == -1 || pmap->pm_active == all_cpus) {
invltlb(); /* global */
OpenPOWER on IntegriCloud