diff options
author | Olaf Hering <olaf@aepfle.de> | 2012-10-01 15:18:01 -0400 |
---|---|---|
committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2012-10-04 11:30:30 -0400 |
commit | 34b6f01a79bd65fbd06511d2cb7b28e33a506246 (patch) | |
tree | 68adb1dad56bf5e11971a8344e4d3cbb09052a54 /include/xen | |
parent | 9b6934a3b449266850149b717597408354039e95 (diff) |
xen pv-on-hvm: add pfn_is_ram helper for kdump
Register pfn_is_ram helper speed up reading /proc/vmcore in the kdump
kernel. See commit message of 997c136f518c ("fs/proc/vmcore.c: add hook
to read_from_oldmem() to check for non-ram pages") for details.
It makes use of a new hvmop HVMOP_get_mem_type which was introduced in
xen 4.2 (23298:26413986e6e0) and backported to 4.1.1.
The new function is currently only enabled for reading /proc/vmcore.
Later it will be used also for the kexec kernel. Since that requires
more changes in the generic kernel make it static for the time being.
Signed-off-by: Olaf Hering <olaf@aepfle.de>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Diffstat (limited to 'include/xen')
-rw-r--r-- | include/xen/interface/hvm/hvm_op.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/include/xen/interface/hvm/hvm_op.h b/include/xen/interface/hvm/hvm_op.h index a4827f46ee97..956a04682865 100644 --- a/include/xen/interface/hvm/hvm_op.h +++ b/include/xen/interface/hvm/hvm_op.h | |||
@@ -43,4 +43,23 @@ struct xen_hvm_pagetable_dying { | |||
43 | typedef struct xen_hvm_pagetable_dying xen_hvm_pagetable_dying_t; | 43 | typedef struct xen_hvm_pagetable_dying xen_hvm_pagetable_dying_t; |
44 | DEFINE_GUEST_HANDLE_STRUCT(xen_hvm_pagetable_dying_t); | 44 | DEFINE_GUEST_HANDLE_STRUCT(xen_hvm_pagetable_dying_t); |
45 | 45 | ||
46 | enum hvmmem_type_t { | ||
47 | HVMMEM_ram_rw, /* Normal read/write guest RAM */ | ||
48 | HVMMEM_ram_ro, /* Read-only; writes are discarded */ | ||
49 | HVMMEM_mmio_dm, /* Reads and write go to the device model */ | ||
50 | }; | ||
51 | |||
52 | #define HVMOP_get_mem_type 15 | ||
53 | /* Return hvmmem_type_t for the specified pfn. */ | ||
54 | struct xen_hvm_get_mem_type { | ||
55 | /* Domain to be queried. */ | ||
56 | domid_t domid; | ||
57 | /* OUT variable. */ | ||
58 | uint16_t mem_type; | ||
59 | uint16_t pad[2]; /* align next field on 8-byte boundary */ | ||
60 | /* IN variable. */ | ||
61 | uint64_t pfn; | ||
62 | }; | ||
63 | DEFINE_GUEST_HANDLE_STRUCT(xen_hvm_get_mem_type); | ||
64 | |||
46 | #endif /* __XEN_PUBLIC_HVM_HVM_OP_H__ */ | 65 | #endif /* __XEN_PUBLIC_HVM_HVM_OP_H__ */ |