[Xen-devel] [PATCH 0/2] Handle

David Woodhouse posted 2 patches 4 years, 1 month ago
Only 1 patches received!
xen/arch/x86/domctl.c    |   2 +-
xen/arch/x86/mm.c        |   3 +-
xen/common/page_alloc.c  | 110 +++++++++++++++++++++++++++++------------------
xen/include/asm-arm/mm.h |  39 +++++++++++------
xen/include/asm-x86/mm.h |  37 +++++++++++-----
5 files changed, 125 insertions(+), 66 deletions(-)
[Xen-devel] [PATCH 0/2] Handle
Posted by David Woodhouse 4 years, 1 month ago
There are cases where pages can get freed with free_heap_pages() when
in fact they were never properly initialised in the heap — they may
have been allocated from the boot allocator, simply assigned directly
to dom0 as part of its initrd, etc.

We have plans to make vmap available during early boot, which would
exacerbate this situation a tiny bit more, as a few more page tables
would stand a small chance of being allocated by the boot allocator and
freed later.

Resolve this by introducing a new page state, PGC_state_uninitialised,
expanding the PGC_state to 3 bits (8 possible values) by subsuming the
PGC_broken bit into it and eliminating the redundant possible
combinations of PGC_broken and various states.

Pages which find their way into free_heap_pages() while still in
PGC_state_uninitialised can thus be detected and properly
rehabilitated, basically by passing them through init_heap_pages().


David Woodhouse (2):
      xen/mm: fold PGC_broken into PGC_state bits
      xen/mm: Introduce PGC_state_uninitialised

xen/arch/x86/domctl.c    |   2 +-
 xen/arch/x86/mm.c        |   3 +-
 xen/common/page_alloc.c  | 110 +++++++++++++++++++++++++++++------------------
 xen/include/asm-arm/mm.h |  39 +++++++++++------
 xen/include/asm-x86/mm.h |  37 +++++++++++-----
 5 files changed, 125 insertions(+), 66 deletions(-)
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel