Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

xen: add new Xen elfnote types and use them appropriately

Define recently added XEN_ELFNOTEs, and use them appropriately.
Most significantly, this enables domain checkpointing (xm save -c).

Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

authored by

Jeremy Fitzhardinge and committed by
Ingo Molnar
7e0edc1b d07af1f0

+25
+5
arch/x86/xen/xen-head.S
··· 7 7 #include <linux/init.h> 8 8 #include <asm/boot.h> 9 9 #include <xen/interface/elfnote.h> 10 + #include <asm/xen/interface.h> 10 11 11 12 __INIT 12 13 ENTRY(startup_xen) ··· 33 32 ELFNOTE(Xen, XEN_ELFNOTE_FEATURES, .asciz "!writable_page_tables|pae_pgdir_above_4gb") 34 33 ELFNOTE(Xen, XEN_ELFNOTE_PAE_MODE, .asciz "yes") 35 34 ELFNOTE(Xen, XEN_ELFNOTE_LOADER, .asciz "generic") 35 + ELFNOTE(Xen, XEN_ELFNOTE_L1_MFN_VALID, 36 + .quad _PAGE_PRESENT; .quad _PAGE_PRESENT) 37 + ELFNOTE(Xen, XEN_ELFNOTE_SUSPEND_CANCEL, .long 1) 38 + ELFNOTE(Xen, XEN_ELFNOTE_HV_START_LOW, .long __HYPERVISOR_VIRT_START) 36 39 37 40 #endif /*CONFIG_XEN */
+20
include/xen/interface/elfnote.h
··· 120 120 */ 121 121 #define XEN_ELFNOTE_BSD_SYMTAB 11 122 122 123 + /* 124 + * The lowest address the hypervisor hole can begin at (numeric). 125 + * 126 + * This must not be set higher than HYPERVISOR_VIRT_START. Its presence 127 + * also indicates to the hypervisor that the kernel can deal with the 128 + * hole starting at a higher address. 129 + */ 130 + #define XEN_ELFNOTE_HV_START_LOW 12 131 + 132 + /* 133 + * List of maddr_t-sized mask/value pairs describing how to recognize 134 + * (non-present) L1 page table entries carrying valid MFNs (numeric). 135 + */ 136 + #define XEN_ELFNOTE_L1_MFN_VALID 13 137 + 138 + /* 139 + * Whether or not the guest supports cooperative suspend cancellation. 140 + */ 141 + #define XEN_ELFNOTE_SUSPEND_CANCEL 14 142 + 123 143 #endif /* __XEN_PUBLIC_ELFNOTE_H__ */ 124 144 125 145 /*