提交 e576fba8 创建 作者: Nickolai Zeldovich's avatar Nickolai Zeldovich

enable interrupts while handling pagefaults -- otherwise TLB shootdown can deadlock

上级 6e31b597
...@@ -119,6 +119,7 @@ trap(struct trapframe *tf) ...@@ -119,6 +119,7 @@ trap(struct trapframe *tf)
if(tf->trapno == T_PGFLT){ if(tf->trapno == T_PGFLT){
uptr addr = rcr2(); uptr addr = rcr2();
sti();
if(addr < USERTOP && pagefault(myproc()->vmap, addr, tf->err) >= 0){ if(addr < USERTOP && pagefault(myproc()->vmap, addr, tf->err) >= 0){
#if MTRACE #if MTRACE
mtstop(myproc()); mtstop(myproc());
...@@ -127,6 +128,7 @@ trap(struct trapframe *tf) ...@@ -127,6 +128,7 @@ trap(struct trapframe *tf)
#endif #endif
return; return;
} }
cli();
} }
// In user space, assume process misbehaved. // In user space, assume process misbehaved.
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论