On Wed, 2008-04-02 at 15:13 -0700, Jeremy Fitzhardinge wrote:
It doesn't.
I think there are a few options here. One is to check on the way out of
the allocator that we're not over some Xen-specific limit. Basically
that we aren't about to touch a hardware page for which the hypervisor
hasn't allocating backing memory.
Another is to give pages sitting in the allocator some kind of
associated state or keep them on separate lists. (I think this has
something in common with those s390 CMM patches). When you want to
allocate a page, you not only pull it off the buddy lists, but you also
have to check with the hypervisor to make sure it has backing store
before you actually return it. You make it non-volatile in CMM-speak (I
think).
If you can't allocate backing store for a page, you toss it over to the
balloon driver (who's whole job is to keep track of pages without
hypervisor backing anyway) and go back to the allocator for another
one.
Yeah, that would be most ideal. But, at the same time, you don't want
to hobble your rockstar x86_64 implementation with quirks inherited from
the crufy 32-bit junk. :)
-- Dave
--