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-handle-xen_domctl_assign_devi...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File valgrind.xen-4.10-handle-xen_domctl_assign_device.patch of Package valgrind
From: Olaf Hering <olaf@aepfle.de> Date: Fri, 16 Nov 2018 17:29:41 +0100 Subject: xen-4.10: handle xen_domctl_assign_device The flags member moved in xen_domctl_assign_device. Copy the existing code and handle xen-4.10. Fixes commit c88133141a354d65568fb85037abc5e1f74ce46b. bz#390553 --- coregrind/m_syswrap/syswrap-xen.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------- include/vki/vki-xen-domctl.h | 15 +++++++++++++++ 2 files changed, 77 insertions(+), 15 deletions(-) --- a/coregrind/m_syswrap/syswrap-xen.c +++ b/coregrind/m_syswrap/syswrap-xen.c @@ -1045,122 +1045,169 @@ PRE(domctl) case VKI_XEN_DOMCTL_test_assign_device: switch (domctl->interface_version) { case 0x00000007: case 0x00000008: case 0x00000009: case 0x0000000a: __PRE_XEN_DOMCTL_READ(test_assign_device, assign_device_00000007, machine_sbdf); break; case 0x0000000b: case 0x0000000c: case 0x0000000d: - case 0x0000000e: - case 0x0000000f: - case 0x00000010: - case 0x00000011: - case 0x00000012: __PRE_XEN_DOMCTL_READ(test_assign_device, assign_device_0000000b, dev); __PRE_XEN_DOMCTL_READ(test_assign_device, assign_device_0000000b, flag); switch (domctl->u.assign_device_0000000b.dev) { case VKI_XEN_DOMCTL_DEV_PCI: __PRE_XEN_DOMCTL_READ(test_assign_device, assign_device_0000000b, u.pci); break; case VKI_XEN_DOMCTL_DEV_DT: __PRE_XEN_DOMCTL_READ(test_assign_device, assign_device_0000000b, u.dt); PRE_MEM_READ("XEN_DOMTCL_test_assign_device.dt", (Addr)domctl->u.assign_device_0000000b.u.dt.path.p, domctl->u.assign_device_0000000b.u.dt.size); break; default: bad_subop(tid, layout, arrghs, status, flags, "__HYPERVISOR_domctl_test_assign_device dev", domctl->u.assign_device_0000000b.dev); break; } break; + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + case 0x00000011: + case 0x00000012: + __PRE_XEN_DOMCTL_READ(test_assign_device, assign_device_0000000e, dev); + __PRE_XEN_DOMCTL_READ(test_assign_device, assign_device_0000000e, flags); + switch (domctl->u.assign_device_0000000e.dev) { + case VKI_XEN_DOMCTL_DEV_PCI: + __PRE_XEN_DOMCTL_READ(test_assign_device, assign_device_0000000e, u.pci); + break; + case VKI_XEN_DOMCTL_DEV_DT: + __PRE_XEN_DOMCTL_READ(test_assign_device, assign_device_0000000e, u.dt); + PRE_MEM_READ("XEN_DOMTCL_test_assign_device.dt", + (Addr)domctl->u.assign_device_0000000e.u.dt.path.p, + domctl->u.assign_device_0000000e.u.dt.size); + break; + default: + bad_subop(tid, layout, arrghs, status, flags, + "__HYPERVISOR_domctl_test_assign_device dev", + domctl->u.assign_device_0000000e.dev); + break; + } + break; } break; case VKI_XEN_DOMCTL_assign_device: switch (domctl->interface_version) { case 0x00000007: case 0x00000008: case 0x00000009: case 0x0000000a: __PRE_XEN_DOMCTL_READ(assign_device, assign_device_00000007, machine_sbdf); break; case 0x0000000b: case 0x0000000c: case 0x0000000d: - case 0x0000000e: - case 0x0000000f: - case 0x00000010: - case 0x00000011: - case 0x00000012: __PRE_XEN_DOMCTL_READ(assign_device, assign_device_0000000b, dev); __PRE_XEN_DOMCTL_READ(assign_device, assign_device_0000000b, flag); switch (domctl->u.assign_device_0000000b.dev) { case VKI_XEN_DOMCTL_DEV_PCI: __PRE_XEN_DOMCTL_READ(assign_device, assign_device_0000000b, u.pci); break; case VKI_XEN_DOMCTL_DEV_DT: __PRE_XEN_DOMCTL_READ(assign_device, assign_device_0000000b, u.dt); PRE_MEM_READ("XEN_DOMTCL_assign_device.dt", (Addr)domctl->u.assign_device_0000000b.u.dt.path.p, domctl->u.assign_device_0000000b.u.dt.size); break; default: bad_subop(tid, layout, arrghs, status, flags, "__HYPERVISOR_domctl_assign_device dev", domctl->u.assign_device_0000000b.dev); break; } break; + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + case 0x00000011: + case 0x00000012: + __PRE_XEN_DOMCTL_READ(assign_device, assign_device_0000000e, dev); + __PRE_XEN_DOMCTL_READ(assign_device, assign_device_0000000e, flags); + switch (domctl->u.assign_device_0000000e.dev) { + case VKI_XEN_DOMCTL_DEV_PCI: + __PRE_XEN_DOMCTL_READ(assign_device, assign_device_0000000e, u.pci); + break; + case VKI_XEN_DOMCTL_DEV_DT: + __PRE_XEN_DOMCTL_READ(assign_device, assign_device_0000000e, u.dt); + PRE_MEM_READ("XEN_DOMTCL_assign_device.dt", + (Addr)domctl->u.assign_device_0000000e.u.dt.path.p, + domctl->u.assign_device_0000000e.u.dt.size); + break; + } + break; } break; case VKI_XEN_DOMCTL_deassign_device: switch (domctl->interface_version) { case 0x00000007: case 0x00000008: case 0x00000009: case 0x0000000a: __PRE_XEN_DOMCTL_READ(deassign_device, assign_device_00000007, machine_sbdf); break; case 0x0000000b: case 0x0000000c: case 0x0000000d: - case 0x0000000e: - case 0x0000000f: - case 0x00000010: - case 0x00000011: - case 0x00000012: __PRE_XEN_DOMCTL_READ(deassign_device, assign_device_0000000b, dev); __PRE_XEN_DOMCTL_READ(deassign_device, assign_device_0000000b, flag); switch (domctl->u.assign_device_0000000b.dev) { case VKI_XEN_DOMCTL_DEV_PCI: __PRE_XEN_DOMCTL_READ(deassign_device, assign_device_0000000b, u.pci); break; case VKI_XEN_DOMCTL_DEV_DT: __PRE_XEN_DOMCTL_READ(deassign_device, assign_device_0000000b, u.dt); PRE_MEM_READ("XEN_DOMTCL_assign_device.dt", (Addr)domctl->u.assign_device_0000000b.u.dt.path.p, domctl->u.assign_device_0000000b.u.dt.size); break; default: bad_subop(tid, layout, arrghs, status, flags, "__HYPERVISOR_domctl_deassign_device dev", domctl->u.assign_device_0000000b.dev); break; } break; + case 0x0000000e: + case 0x0000000f: + case 0x00000010: + case 0x00000011: + case 0x00000012: + __PRE_XEN_DOMCTL_READ(deassign_device, assign_device_0000000e, dev); + __PRE_XEN_DOMCTL_READ(deassign_device, assign_device_0000000e, flags); + switch (domctl->u.assign_device_0000000e.dev) { + case VKI_XEN_DOMCTL_DEV_PCI: + __PRE_XEN_DOMCTL_READ(deassign_device, assign_device_0000000e, u.pci); + break; + case VKI_XEN_DOMCTL_DEV_DT: + __PRE_XEN_DOMCTL_READ(deassign_device, assign_device_0000000e, u.dt); + PRE_MEM_READ("XEN_DOMTCL_assign_device.dt", + (Addr)domctl->u.assign_device_0000000e.u.dt.path.p, + domctl->u.assign_device_0000000e.u.dt.size); + break; + } + break; } break; case VKI_XEN_DOMCTL_settscinfo: switch (domctl->interface_version) { case 0x00000007: case 0x00000008: case 0x00000009: case 0x0000000a: __PRE_XEN_DOMCTL_READ(settscinfo, tsc_info_00000007, info.tsc_mode); __PRE_XEN_DOMCTL_READ(settscinfo, tsc_info_00000007, info.gtsc_khz); __PRE_XEN_DOMCTL_READ(settscinfo, tsc_info_00000007, info.incarnation); --- a/include/vki/vki-xen-domctl.h +++ b/include/vki/vki-xen-domctl.h @@ -548,24 +548,38 @@ struct vki_xen_domctl_assign_device_0000000b { vki_uint32_t machine_sbdf; /* machine PCI ID of assigned device */ } pci; struct { vki_uint32_t size; /* Length of the path */ VKI_XEN_GUEST_HANDLE_64(vki_uint8) path; /* path to the device tree node */ } dt; } u; /* IN */ //#define XEN_DOMCTL_DEV_RDM_RELAXED 1 vki_uint32_t flag; /* flag of assigned device */ }; +struct vki_xen_domctl_assign_device_0000000e { + vki_uint32_t dev; /* XEN_DOMCTL_DEV_* */ + vki_uint32_t flags; + union { + struct { + vki_uint32_t machine_sbdf; /* machine PCI ID of assigned device */ + } pci; + struct { + vki_uint32_t size; /* Length of the path */ + VKI_XEN_GUEST_HANDLE_64(vki_uint8) path; /* path to the device tree node */ + } dt; + } u; +}; + struct vki_xen_domctl_debug_op { vki_uint32_t op; /* IN */ vki_uint32_t vcpu; /* IN */ }; typedef struct vki_xen_domctl_debug_op vki_xen_domctl_debug_op_t; struct vki_xen_domctl_mem_event_op_00000007 { vki_uint32_t op; /* IN */ vki_uint32_t mode; /* IN */ __vki_aligned_u64 shared_addr; /* IN */ __vki_aligned_u64 ring_addr; /* IN */ __vki_aligned_u64 gfn; /* IN */ @@ -780,24 +794,25 @@ struct vki_xen_domctl { //struct vki_xen_domctl_disable_migrate disable_migrate; struct vki_xen_domctl_tsc_info_00000007 tsc_info_00000007; struct vki_xen_domctl_tsc_info_0000000b tsc_info_0000000b; //struct vki_xen_domctl_real_mode_area real_mode_area; struct vki_xen_domctl_hvmcontext hvmcontext; struct vki_xen_domctl_hvmcontext_partial_00000005 hvmcontext_partial_00000005; struct vki_xen_domctl_hvmcontext_partial_0000000e hvmcontext_partial_0000000e; struct vki_xen_domctl_address_size address_size; //struct vki_xen_domctl_sendtrigger sendtrigger; //struct vki_xen_domctl_get_device_group get_device_group; struct vki_xen_domctl_assign_device_00000007 assign_device_00000007; struct vki_xen_domctl_assign_device_0000000b assign_device_0000000b; + struct vki_xen_domctl_assign_device_0000000e assign_device_0000000e; //struct vki_xen_domctl_bind_pt_irq bind_pt_irq; //struct vki_xen_domctl_memory_mapping memory_mapping; //struct vki_xen_domctl_ioport_mapping ioport_mapping; struct vki_xen_domctl_pin_mem_cacheattr pin_mem_cacheattr; struct vki_xen_domctl_ext_vcpucontext_00000008 ext_vcpucontext_00000008; struct vki_xen_domctl_ext_vcpucontext_00000009 ext_vcpucontext_00000009; //struct vki_xen_domctl_set_target set_target; //struct vki_xen_domctl_subscribe subscribe; struct vki_xen_domctl_debug_op debug_op; struct vki_xen_domctl_mem_event_op_00000007 mem_event_op_00000007; struct vki_xen_domctl_vm_event_op_00000008 vm_event_op_00000008; struct vki_xen_domctl_vm_event_op_00000012 vm_event_op_00000012;
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