Found this looping Ubuntu installs with VMI.
If unlucky enough to hit a vmalloc sync fault during a lazy mode
operation (from an IRQ handler for a module which was not yet populated
in current page directory, or from inside copy_one_pte, which touches
swap_map, and hit in an unused 4M region), the required PDE update would
never get flushed, causing an infinite page fault loop.
This bug affects any paravirt-ops backend which uses lazy updates, I
believe that makes it a bug in Xen, VMI and lguest. It only happens on
LOWMEM kernels.
Currently for 2.6.23, but we'll want to backport to -stable as well.
Zach
Zachary Amsden wrote:
> Found this looping Ubuntu installs with VMI.
>
> If unlucky enough to hit a vmalloc sync fault during a lazy mode
> operation (from an IRQ handler for a module which was not yet
> populated in current page directory, or from inside copy_one_pte,
> which touches swap_map, and hit in an unused 4M region), the required
> PDE update would never get flushed, causing an infinite page fault loop.
Ah, good catch.
> This bug affects any paravirt-ops backend which uses lazy updates, I
> believe that makes it a bug in Xen, VMI and lguest. It only happens
> on LOWMEM kernels.
No, under Xen the kernel/hypervisor PMD is not shared between processes,
so this is still used when PAE is enabled.
J
Jeremy Fitzhardinge wrote:
> No, under Xen the kernel/hypervisor PMD is not shared between processes,
> so this is still used when PAE is enabled.
>
Ahh, yes. So this was a lucky catch for us. Non-PAE kernels seem to be
increasing in value at antique sales.
Zach