From: Zwane Mwaikambo The 4G/4G page fault handling path doesn't appear to handle faults happening whilst in vm86. The regs->xcs != __USER_CS so it confused the in kernel test. However i'm still debugging the X11 triple fault in test9-mm3 Unable to handle kernel paging request at virtual address 00002000 printing eip: 00007341 *pde = 00000000 Oops: 0004 [#1] SMP DEBUG_PAGEALLOC CPU: 0 EIP: c000:[<00007341>] Not tainted VLI EFLAGS: 00033246 EIP is at 0x7341 eax: 32454256 ebx: 00000000 ecx: 00000000 edx: 00000000 esi: 00000000 edi: 00002000 ebp: 00000fd6 esp: 087bbf24 ds: 0000 es: 0000 ss: 0068 Process X (pid: 939, threadinfo=087ba000 task=0891c690) Stack: 00000fcb 00000100 00000000 0000c000 00000000 00000000 00000000 00000000 00000005 ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff Call Trace: arch/i386/mm/fault.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletion(-) diff -puN arch/i386/mm/fault.c~4g4g-vm86-fix arch/i386/mm/fault.c --- 25/arch/i386/mm/fault.c~4g4g-vm86-fix 2003-11-15 13:32:10.000000000 -0800 +++ 25-akpm/arch/i386/mm/fault.c 2003-11-15 13:32:10.000000000 -0800 @@ -264,7 +264,9 @@ asmlinkage void do_page_fault(struct pt_ if (error_code & 3) goto bad_area_nosemaphore; - goto vmalloc_fault; + /* If it's vm86 fall through */ + if (!(regs->eflags & VM_MASK)) + goto vmalloc_fault; } #else if (unlikely(address >= TASK_SIZE)) { _