Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:olh:xen-buildrequires
valgrind
valgrind.xen-4.10-versioned-xen_domctl_monitor_...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File valgrind.xen-4.10-versioned-xen_domctl_monitor_op.patch of Package valgrind
From: Olaf Hering <olaf@aepfle.de> Date: Fri, 23 Nov 2018 16:38:08 +0100 Subject: xen-4.10: versioned xen_domctl_monitor_op Handle new layout of xen_domctl_monitor_op in xen-4.10 Fixes commit c88133141a354d65568fb85037abc5e1f74ce46b. bz#390553 --- coregrind/m_syswrap/syswrap-xen.c | 44 +++++++++++++++++++++++++++++++++++++++++--- include/vki/vki-xen-domctl.h | 26 ++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 3 deletions(-) --- a/coregrind/m_syswrap/syswrap-xen.c +++ b/coregrind/m_syswrap/syswrap-xen.c @@ -1677,45 +1677,64 @@ PRE(domctl) case VKI_XEN_DOMCTL_MONITOR_EVENT_MOV_TO_MSR: __PRE_XEN_DOMCTL_READ(monitor_op, monitor_op_0000000b, u.mov_to_msr); break; case VKI_XEN_DOMCTL_MONITOR_EVENT_GUEST_REQUEST: __PRE_XEN_DOMCTL_READ(monitor_op, monitor_op_0000000b, u.guest_request); break; } } break; case 0x0000000c: case 0x0000000d: - case 0x0000000e: - case 0x0000000f: - case 0x00000010: if (domctl->u.monitor_op_0000000c.op == VKI_XEN_DOMCTL_MONITOR_OP_ENABLE || domctl->u.monitor_op_0000000c.op == VKI_XEN_DOMCTL_MONITOR_OP_DISABLE) { switch (domctl->u.monitor_op_0000000c.event) { case VKI_XEN_DOMCTL_MONITOR_EVENT_WRITE_CTRLREG: __PRE_XEN_DOMCTL_READ(monitor_op, monitor_op_0000000c, u.mov_to_cr); break; case VKI_XEN_DOMCTL_MONITOR_EVENT_MOV_TO_MSR: __PRE_XEN_DOMCTL_READ(monitor_op, monitor_op_0000000c, u.mov_to_msr); break; case VKI_XEN_DOMCTL_MONITOR_EVENT_GUEST_REQUEST: __PRE_XEN_DOMCTL_READ(monitor_op, monitor_op_0000000c, u.guest_request); break; case VKI_XEN_DOMCTL_MONITOR_EVENT_DEBUG_EXCEPTION: __PRE_XEN_DOMCTL_READ(monitor_op, monitor_op_0000000c, u.debug_exception); break; } } break; + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + if (domctl->u.monitor_op_0000000e.op == VKI_XEN_DOMCTL_MONITOR_OP_ENABLE || + domctl->u.monitor_op_0000000e.op == VKI_XEN_DOMCTL_MONITOR_OP_DISABLE) { + switch (domctl->u.monitor_op_0000000e.event) { + case VKI_XEN_DOMCTL_MONITOR_EVENT_WRITE_CTRLREG: + __PRE_XEN_DOMCTL_READ(monitor_op, monitor_op_0000000e, u.mov_to_cr); + break; + case VKI_XEN_DOMCTL_MONITOR_EVENT_MOV_TO_MSR: + __PRE_XEN_DOMCTL_READ(monitor_op, monitor_op_0000000e, u.mov_to_msr); + break; + case VKI_XEN_DOMCTL_MONITOR_EVENT_GUEST_REQUEST: + __PRE_XEN_DOMCTL_READ(monitor_op, monitor_op_0000000e, u.guest_request); + break; + case VKI_XEN_DOMCTL_MONITOR_EVENT_DEBUG_EXCEPTION: + __PRE_XEN_DOMCTL_READ(monitor_op, monitor_op_0000000e, u.debug_exception); + break; + } + } + + break; case 0x0000011: case 0x0000012: if (domctl->u.monitor_op_00000011.op == VKI_XEN_DOMCTL_MONITOR_OP_ENABLE || domctl->u.monitor_op_00000011.op == VKI_XEN_DOMCTL_MONITOR_OP_DISABLE) { switch (domctl->u.monitor_op_00000011.event) { case VKI_XEN_DOMCTL_MONITOR_EVENT_WRITE_CTRLREG: __PRE_XEN_DOMCTL_READ(monitor_op, monitor_op_00000011, u.mov_to_cr); break; case VKI_XEN_DOMCTL_MONITOR_EVENT_MOV_TO_MSR: __PRE_XEN_DOMCTL_READ(monitor_op, monitor_op_00000011, u.mov_to_msr); break; case VKI_XEN_DOMCTL_MONITOR_EVENT_GUEST_REQUEST: @@ -2815,24 +2834,43 @@ POST(domctl){ break; case VKI_XEN_DOMCTL_MONITOR_EVENT_MOV_TO_MSR: __POST_XEN_DOMCTL_WRITE(monitor_op, monitor_op_0000000c, u.mov_to_msr); break; case VKI_XEN_DOMCTL_MONITOR_EVENT_GUEST_REQUEST: __POST_XEN_DOMCTL_WRITE(monitor_op, monitor_op_0000000c, u.guest_request); break; case VKI_XEN_DOMCTL_MONITOR_EVENT_DEBUG_EXCEPTION: __POST_XEN_DOMCTL_WRITE(monitor_op, monitor_op_0000000c, u.debug_exception); break; } } + break; + case 0x0000000e: + if (domctl->u.monitor_op_0000000e.op == VKI_XEN_DOMCTL_MONITOR_OP_GET_CAPABILITIES) { + switch(domctl->u.monitor_op_0000000e.event) { + case VKI_XEN_DOMCTL_MONITOR_EVENT_WRITE_CTRLREG: + __POST_XEN_DOMCTL_WRITE(monitor_op, monitor_op_0000000e, u.mov_to_cr); + break; + case VKI_XEN_DOMCTL_MONITOR_EVENT_MOV_TO_MSR: + __POST_XEN_DOMCTL_WRITE(monitor_op, monitor_op_0000000e, u.mov_to_msr); + break; + case VKI_XEN_DOMCTL_MONITOR_EVENT_GUEST_REQUEST: + __POST_XEN_DOMCTL_WRITE(monitor_op, monitor_op_0000000e, u.guest_request); + break; + case VKI_XEN_DOMCTL_MONITOR_EVENT_DEBUG_EXCEPTION: + __POST_XEN_DOMCTL_WRITE(monitor_op, monitor_op_0000000e, u.debug_exception); + break; + } + } + break; case 0x0000011: if (domctl->u.monitor_op_00000011.op == VKI_XEN_DOMCTL_MONITOR_OP_GET_CAPABILITIES) { switch(domctl->u.monitor_op_00000011.event) { case VKI_XEN_DOMCTL_MONITOR_EVENT_WRITE_CTRLREG: __POST_XEN_DOMCTL_WRITE(monitor_op, monitor_op_00000011, u.mov_to_cr); break; case VKI_XEN_DOMCTL_MONITOR_EVENT_MOV_TO_MSR: __POST_XEN_DOMCTL_WRITE(monitor_op, monitor_op_00000011, u.mov_to_msr); break; case VKI_XEN_DOMCTL_MONITOR_EVENT_GUEST_REQUEST: __POST_XEN_DOMCTL_WRITE(monitor_op, monitor_op_00000011, u.guest_request); --- a/include/vki/vki-xen-domctl.h +++ b/include/vki/vki-xen-domctl.h @@ -698,24 +698,49 @@ struct vki_xen_domctl_monitor_op_0000000c { struct { vki_uint32_t msr; } mov_to_msr; struct { vki_uint8_t sync; } guest_request; struct { vki_uint8_t sync; } debug_exception; } u; }; +struct vki_xen_domctl_monitor_op_0000000e { + vki_uint32_t op; /* vki_xen_DOMCTL_MONITOR_OP_* */ + vki_uint32_t event; + union { + struct { + vki_uint8_t index; + vki_uint8_t sync; + vki_uint8_t onchangeonly; + vki_uint8_t pad1; + vki_uint32_t pad2; + vki_xen_uint64_aligned_t bitmask; + } mov_to_cr; + struct { + vki_uint32_t msr; + } mov_to_msr; + struct { + vki_uint8_t sync; + vki_uint8_t allow_userspace; + } guest_request; + struct { + vki_uint8_t sync; + } debug_exception; + } u; +}; + struct vki_xen_domctl_monitor_op_00000011 { vki_uint32_t op; /* vki_xen_DOMCTL_MONITOR_OP_* */ /* * When used with ENABLE/DISABLE this has to be set to * the requested vki_xen_DOMCTL_MONITOR_EVENT_* value. * With GET_CAPABILITIES this field returns a bitmap of * events supported by the platform, in the format * (1 << vki_xen_DOMCTL_MONITOR_EVENT_*). */ vki_uint32_t event; @@ -824,24 +849,25 @@ struct vki_xen_domctl { #endif struct vki_xen_domctl_set_access_required access_required; //struct vki_xen_domctl_audit_p2m audit_p2m; //struct vki_xen_domctl_set_virq_handler set_virq_handler; struct vki_xen_domctl_set_max_evtchn set_max_evtchn; //struct vki_xen_domctl_gdbsx_memio gdbsx_guest_memio; //struct vki_xen_domctl_set_broken_page_p2m set_broken_page_p2m; struct vki_xen_domctl_cacheflush cacheflush; //struct vki_xen_domctl_gdbsx_pauseunp_vcpu gdbsx_pauseunp_vcpu; //struct vki_xen_domctl_gdbsx_domstatus gdbsx_domstatus; struct vki_xen_domctl_monitor_op_0000000b monitor_op_0000000b; struct vki_xen_domctl_monitor_op_0000000c monitor_op_0000000c; + struct vki_xen_domctl_monitor_op_0000000e monitor_op_0000000e; struct vki_xen_domctl_monitor_op_00000011 monitor_op_00000011; //struct vki_xen_domctl_vnuma vnuma; //struct vki_xen_domctl_psr_cmt_op psr_cmt_op; //struct vki_xen_domctl_psr_cat_op psr_cat_op; //struct vki_xen_domctl_arm_configuredomain configuredomain; vki_uint8_t pad[128]; } u; }; #endif // __VKI_XEN_DOMCTL_H /*--------------------------------------------------------------------*/
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor