So lazy MMU mode is vulnerable to interrupts coming in and issuing kmap_atomic, which does not work when under lazy MMU mode. The window for this is small, but it means highmem kernels, especially with heavy network, USB, or AIO workloads are vulnerable to getting invariably fatal pagefaults in interrupt handlers. For now, the best fix is to simply disable and re-enable interrupts when entering and exiting lazy mode (which, btw, is already guaranteed to have preempt disabled). For the future, a better fix is to simply exit lazy mode when issuing kmap_atomic, but I do not want to touch any generic code now for 2.6.21. Hopefully there is still time to apply it. Thanks to Jeremy Fitzhardinge for pointing this out. Zach