|
Description
|
When ballooning memory pages out of a domain, this warning comes
from the hypervisor sometimes:
freeing in-use page
It turns out that to give away a page, the domain can't have
*any* mappings to it. The kernel mappings used for page table windows
and ppcopy() that are for read/only access are not torn down when
not in use. These are what are causing the warnings.
Further, Nils claims that:
<NilsAtHome> It's a warning that eventually causes the machine to run out of memory.
<NilsAtHome> The domU thinks it's given the page away, but Xen will never use it.
<NilsAtHome> If it's a domU, killing the domain causes the pages to be freed. If it's a dom0, you'll have to reboot the machine.
The full error message is:
(XEN) memory.c:188:d0 Dom0 freeing in-use page 40ba0 (pseudophys 375f0): count=2 type=e8000000
The error seems rare: on average, I see it about once per 1 GB ballooned out.
When running on a the hypervisor:
ppcopy() only erases the mapping of the destination page, it should
also erase the mapping of the source page.
x86pte_mapout() needs to erase the window mapping to the page table. Also
we need to stop remembering the window contents in x86pte_mapin().
|