Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:olh:xen-buildrequires
valgrind
valgrind.xen-4.9-handle-dm_op-hypercall.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File valgrind.xen-4.9-handle-dm_op-hypercall.patch of Package valgrind
From: Olaf Hering <olaf@aepfle.de> Date: Fri, 16 Nov 2018 17:29:38 +0100 Subject: xen-4.9: handle dm_op hypercall Handle dm_op hypercall bz#390553 --- coregrind/m_syswrap/syswrap-xen.c | 19 +++++++++++++++++++ include/vki/vki-xen.h | 1 + 2 files changed, 20 insertions(+) --- a/coregrind/m_syswrap/syswrap-xen.c +++ b/coregrind/m_syswrap/syswrap-xen.c @@ -1720,24 +1720,34 @@ PRE(tmem_op) break; default: bad_subop(tid, layout, arrghs, status, flags, "__HYPERVISOR_tmem_op", ARG1); } #undef PRE_XEN_TMEMOP_READ #undef __PRE_XEN_TMEMOP_READ } +PRE(dm_op) +{ + unsigned int domid = ARG1, num = ARG2; + struct vki_xen_privcmd_dm_op_buf *args = (void *)(ARG3); + + PRINT("__HYPERVISOR_dm_op ( %u, %u, %p )", domid, num, args); + + PRE_MEM_READ("__HYPERVISOR_dm_op ubuf", (Addr)args, sizeof(*args) * num); +} + POST(memory_op) { switch (ARG1) { case VKI_XENMEM_maximum_ram_page: case VKI_XENMEM_set_memory_map: case VKI_XENMEM_decrease_reservation: case VKI_XENMEM_claim_pages: case VKI_XENMEM_maximum_gpfn: case VKI_XENMEM_remove_from_physmap: case VKI_XENMEM_set_pod_target: case VKI_XENMEM_access_op: /* No outputs */ @@ -2580,24 +2590,32 @@ POST(tmem_op) case VKI_XEN_TMEM_control: switch(tmem->u.ctrl.subop) { /* No outputs */ case VKI_XEN_TMEMC_save_begin: break; } break; } } +POST(dm_op) +{ + unsigned int num = ARG2; + struct vki_xen_privcmd_dm_op_buf *args = (void *)(ARG3); + + POST_MEM_WRITE((Addr) args, sizeof(*args) * num); +} + typedef struct { SyscallTableEntry entry; int nr_args; } XenHypercallTableEntry; #define HYPX_(const, name, nr_args) \ [const] = { { vgSysWrap_xen_##name##_before, NULL }, nr_args } #define HYPXY(const, name, nr_args) \ [const] = { { vgSysWrap_xen_##name##_before, \ vgSysWrap_xen_##name##_after }, \ @@ -2642,24 +2660,25 @@ static XenHypercallTableEntry hypercall_table[] = { // __VKI_XEN_callback_op // 30 // __VKI_XEN_xenoprof_op // 31 HYPXY(__VKI_XEN_event_channel_op, evtchn_op, 2), // 32 HYPXY(__VKI_XEN_physdev_op, physdev_op, 2), // 33 HYPXY(__VKI_XEN_hvm_op, hvm_op, 2), // 34 HYPXY(__VKI_XEN_sysctl, sysctl, 1), // 35 HYPXY(__VKI_XEN_domctl, domctl, 1), // 36 // __VKI_XEN_kexec_op // 37 HYPXY(__VKI_XEN_tmem_op, tmem_op, 1), // 38 // __VKI_XEN_xenpmu_op // 40 + HYPXY(__VKI_XEN_dm_op, dm_op, 3), // 41 }; static void bad_before ( ThreadId tid, SyscallArgLayout* layout, /*MOD*/SyscallArgs* args, /*OUT*/SyscallStatus* status, /*OUT*/UWord* flags ) { VG_(dmsg)("WARNING: unhandled hypercall: %s\n", VG_SYSNUM_STRING(args->sysno)); if (VG_(clo_verbosity) > 1) { VG_(get_and_pp_StackTrace)(tid, VG_(clo_backtrace_size)); --- a/include/vki/vki-xen.h +++ b/include/vki/vki-xen.h @@ -59,24 +59,25 @@ #define __VKI_XEN_sched_op 29 #define __VKI_XEN_callback_op 30 #define __VKI_XEN_xenoprof_op 31 #define __VKI_XEN_event_channel_op 32 #define __VKI_XEN_physdev_op 33 #define __VKI_XEN_hvm_op 34 #define __VKI_XEN_sysctl 35 #define __VKI_XEN_domctl 36 #define __VKI_XEN_kexec_op 37 #define __VKI_XEN_tmem_op 38 #define __VKI_XEN_xc_reserved_op 39 /* reserved for XenClient */ #define __VKI_XEN_xenpmu_op 40 +#define __VKI_XEN_dm_op 41 #define __DEFINE_VKI_XEN_GUEST_HANDLE(name, type) \ ___DEFINE_VKI_XEN_GUEST_HANDLE(name, type); \ ___DEFINE_VKI_XEN_GUEST_HANDLE(const_##name, const type) #define DEFINE_VKI_XEN_GUEST_HANDLE(name) __DEFINE_VKI_XEN_GUEST_HANDLE(name, name) typedef vki_uint8_t vki_xen_domain_handle_t[16]; typedef vki_uint16_t vki_xen_domid_t; #if defined(__i386__) || defined(__x86_64__) #include <vki/vki-xen-x86.h> #else
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