Am Samstag, 26. April 2008 schrieb Ingo Weinhold: > > Normally working on some locked pages should be sufficient. But the BIOS > > might > > go wild ;-) or the caller might forget to initialize a pointer where the > > BIOS > > writes back data. > > I don't know about BIOSes going wild, but since the caller is the kernel, > unitialized pointers should never happen. I know, but according to Murphy's Law... ;-) In the current implementation vm86 mode is not left because of a pending signal which would in this case lockup the kernel. > > The problem is that vm_page_fault() will just send a SIGSEGV but the vm86 > > mode > > is not interrupted due to signals. In this case we end up in a deadlock > > because making vm86 (BIOS) calls interruptable doesn't seem to be a good > > option eighther. > > > > Anyway, using vm_soft_fault() specifically for the vm86 case looks like a > > viable option. I haven't tried it yet because it's declared "static" in > > vm.cpp. > > Mmh, why not just use a fault handler? Vm86 mode is counted as "user mode"... /Jan