File valgrind.rename-HVMOP_inject_trap-struct.patch of Package valgrind
From: Olaf Hering <olaf@aepfle.de>
Date: Wed, 26 Feb 2020 15:56:30 +0100
Subject: rename HVMOP_inject_trap struct
The implemented code to handle HVMOP_inject_trap handles the layout of
Xen 4.2. Rename the code accordingly. Since hvm_op is unversioned,
choose the Xen version as suffix.
Make it conditional on Xen 4.2 or later.
bz#390553
---
coregrind/m_syswrap/syswrap-xen.c | 22 +++++++++++++++-------
include/vki/vki-xen-hvm.h | 4 ++--
2 files changed, 17 insertions(+), 9 deletions(-)
--- a/coregrind/m_syswrap/syswrap-xen.c
+++ b/coregrind/m_syswrap/syswrap-xen.c
@@ -1573,31 +1573,39 @@ PRE(hvm_op)
break;
case VKI_XEN_HVMOP_get_mem_access:
PRE_XEN_HVMOP_READ(get_mem_access, domid);
PRE_XEN_HVMOP_READ(get_mem_access, pfn);
PRE_MEM_WRITE("XEN_HVMOP_get_mem_access *hvmmem_access",
(Addr)&(((vki_xen_hvm_get_mem_access_t*)arg)->hvmmem_access),
sizeof(vki_uint16_t));
break;
case VKI_XEN_HVMOP_inject_trap:
- PRE_XEN_HVMOP_READ(inject_trap, domid);
- PRE_XEN_HVMOP_READ(inject_trap, vcpuid);
- PRE_XEN_HVMOP_READ(inject_trap, vector);
- PRE_XEN_HVMOP_READ(inject_trap, type);
- PRE_XEN_HVMOP_READ(inject_trap, error_code);
- PRE_XEN_HVMOP_READ(inject_trap, insn_len);
- PRE_XEN_HVMOP_READ(inject_trap, cr2);
+ switch (vki_assumed_xenversion) {
+ case vki_xenversion_unset:
+ vki_report_unknown_xenversion("VKI_XEN_HVMOP_inject_trap");
+ /* fallthrough */
+ case vki_xenversion_402:
+ default:
+ PRE_XEN_HVMOP_READ(inject_trap_0402, domid);
+ PRE_XEN_HVMOP_READ(inject_trap_0402, vcpuid);
+ PRE_XEN_HVMOP_READ(inject_trap_0402, vector);
+ PRE_XEN_HVMOP_READ(inject_trap_0402, type);
+ PRE_XEN_HVMOP_READ(inject_trap_0402, error_code);
+ PRE_XEN_HVMOP_READ(inject_trap_0402, insn_len);
+ PRE_XEN_HVMOP_READ(inject_trap_0402, cr2);
+ break;
+ }
break;
case VKI_XEN_HVMOP_altp2m: {
vki_xen_hvm_altp2m_op_t *altp2m_op = (vki_xen_hvm_altp2m_op_t *)arg;
PRE_XEN_HVMOP_READ(altp2m_op, version);
PRE_XEN_HVMOP_READ(altp2m_op, cmd);
PRE_XEN_HVMOP_READ(altp2m_op, domain);
PRE_XEN_HVMOP_READ(altp2m_op, pad1);
PRE_XEN_HVMOP_READ(altp2m_op, pad2);
switch (altp2m_op->cmd) {
--- a/include/vki/vki-xen-hvm.h
+++ b/include/vki/vki-xen-hvm.h
@@ -86,34 +86,34 @@ struct vki_xen_hvm_set_mem_access {
};
typedef struct vki_xen_hvm_set_mem_access vki_xen_hvm_set_mem_access_t;
#define VKI_XEN_HVMOP_get_mem_access 13
struct vki_xen_hvm_get_mem_access {
vki_xen_domid_t domid;
vki_uint16_t hvmmem_access; /* OUT */
vki_uint64_t pfn;
};
typedef struct vki_xen_hvm_get_mem_access vki_xen_hvm_get_mem_access_t;
#define VKI_XEN_HVMOP_inject_trap 14
-struct vki_xen_hvm_inject_trap {
+struct vki_xen_hvm_inject_trap_0402 {
vki_xen_domid_t domid;
vki_uint32_t vcpuid;
vki_uint32_t vector;
vki_uint32_t type;
vki_uint32_t error_code;
vki_uint32_t insn_len;
vki_uint64_t cr2;
};
-typedef struct vki_xen_hvm_inject_trap vki_xen_hvm_inject_trap_t;
+typedef struct vki_xen_hvm_inject_trap_0402 vki_xen_hvm_inject_trap_0402_t;
#define VKI_XEN_HVMOP_altp2m 25
#define VKI_XEN_HVMOP_altp2m_get_domain_state 1
#define VKI_XEN_HVMOP_altp2m_set_domain_state 2
#define VKI_XEN_HVMOP_altp2m_vcpu_enable_notify 3
#define VKI_XEN_HVMOP_altp2m_create_p2m 4
#define VKI_XEN_HVMOP_altp2m_destroy_p2m 5
#define VKI_XEN_HVMOP_altp2m_switch_p2m 6
#define VKI_XEN_HVMOP_altp2m_set_mem_access 7
#define VKI_XEN_HVMOP_altp2m_change_gfn 8
struct vki_xen_hvm_altp2m_domain_state {
/* IN or OUT variable on/off */