Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:olh:xen-buildrequires
valgrind
valgrind.xen-4.6-handle-XEN_SYSCTL_cputopoinfo....
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File valgrind.xen-4.6-handle-XEN_SYSCTL_cputopoinfo.patch of Package valgrind
From: Olaf Hering <olaf@aepfle.de> Date: Fri, 16 Nov 2018 17:21:22 +0100 Subject: xen-4.6: handle XEN_SYSCTL_cputopoinfo In xen-4.6 XEN_SYSCTL_topologyinfo was replaced by XEN_SYSCTL_cputopoinfo. Both share the same number. Add code to catch both variants. bz#390553 --- coregrind/m_syswrap/syswrap-xen.c | 14 ++++++++++++-- include/vki/vki-xen-sysctl.h | 15 +++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) --- a/coregrind/m_syswrap/syswrap-xen.c +++ b/coregrind/m_syswrap/syswrap-xen.c @@ -758,37 +758,41 @@ PRE(sysctl) { PRE_XEN_SYSCTL_READ(cpupool_op, domid); if (sysctl->u.cpupool_op.op == VKI_XEN_SYSCTL_CPUPOOL_OP_ADDCPU || sysctl->u.cpupool_op.op == VKI_XEN_SYSCTL_CPUPOOL_OP_RMCPU) PRE_XEN_SYSCTL_READ(cpupool_op, cpu); break; case VKI_XEN_SYSCTL_physinfo: /* No input params */ break; - case VKI_XEN_SYSCTL_topologyinfo: + case VKI_XEN_SYSCTL_topologyinfo | VKI_XEN_SYSCTL_cputopoinfo: switch (sysctl->interface_version) { case 0x00000007: case 0x00000008: case 0x00000009: case 0x0000000a: case 0x0000000b: PRE_XEN_SYSCTL_READ(topologyinfo, max_cpu_index); PRE_XEN_SYSCTL_READ(topologyinfo, cpu_to_core); PRE_XEN_SYSCTL_READ(topologyinfo, cpu_to_socket); PRE_XEN_SYSCTL_READ(topologyinfo, cpu_to_node); break; + case 0x0000000c: + PRE_XEN_SYSCTL_READ(cputopoinfo_0000000c, num_cpus); + PRE_XEN_SYSCTL_READ(cputopoinfo_0000000c, cputopo); + break; } break; case VKI_XEN_SYSCTL_numainfo: switch (sysctl->interface_version) { case 0x00000008: case 0x00000009: case 0x0000000a: case 0x0000000b: PRE_XEN_SYSCTL_READ(numainfo_00000008, max_node_index); PRE_XEN_SYSCTL_READ(numainfo_00000008, node_to_memsize); @@ -2120,43 +2124,49 @@ POST(sysctl) POST_XEN_SYSCTL_WRITE(physinfo_00000010, max_node_id); POST_XEN_SYSCTL_WRITE(physinfo_00000010, cpu_khz); POST_XEN_SYSCTL_WRITE(physinfo_00000010, capabilities); POST_XEN_SYSCTL_WRITE(physinfo_00000010, total_pages); POST_XEN_SYSCTL_WRITE(physinfo_00000010, free_pages); POST_XEN_SYSCTL_WRITE(physinfo_00000010, scrub_pages); POST_XEN_SYSCTL_WRITE(physinfo_00000010, outstanding_pages); POST_XEN_SYSCTL_WRITE(physinfo_00000010, max_mfn); POST_XEN_SYSCTL_WRITE(physinfo_00000010, hw_cap[8]); } break; - case VKI_XEN_SYSCTL_topologyinfo: + case VKI_XEN_SYSCTL_topologyinfo | VKI_XEN_SYSCTL_cputopoinfo: switch (sysctl->interface_version) { case 0x00000007: case 0x00000008: case 0x00000009: case 0x0000000a: case 0x0000000b: POST_XEN_SYSCTL_WRITE(topologyinfo, max_cpu_index); if (sysctl->u.topologyinfo.cpu_to_core.p) POST_MEM_WRITE((Addr)sysctl->u.topologyinfo.cpu_to_core.p, sizeof(uint32_t) * sysctl->u.topologyinfo.max_cpu_index); if (sysctl->u.topologyinfo.cpu_to_socket.p) POST_MEM_WRITE((Addr)sysctl->u.topologyinfo.cpu_to_socket.p, sizeof(uint32_t) * sysctl->u.topologyinfo.max_cpu_index); if (sysctl->u.topologyinfo.cpu_to_node.p) POST_MEM_WRITE((Addr)sysctl->u.topologyinfo.cpu_to_node.p, sizeof(uint32_t) * sysctl->u.topologyinfo.max_cpu_index); break; + case 0x0000000c: + POST_XEN_SYSCTL_WRITE(cputopoinfo_0000000c, num_cpus); + if (sysctl->u.cputopoinfo_0000000c.cputopo.p) + POST_MEM_WRITE((Addr)sysctl->u.cputopoinfo_0000000c.cputopo.p, + sizeof(vki_xen_sysctl_cputopo_0000000c_t) * sysctl->u.cputopoinfo_0000000c.num_cpus); + break; } break; case VKI_XEN_SYSCTL_numainfo: switch (sysctl->interface_version) { case 0x00000008: case 0x00000009: case 0x0000000a: case 0x0000000b: POST_XEN_SYSCTL_WRITE(numainfo_00000008, max_node_index); POST_MEM_WRITE((Addr)sysctl->u.numainfo_00000008.node_to_memsize.p, --- a/include/vki/vki-xen-sysctl.h +++ b/include/vki/vki-xen-sysctl.h @@ -30,24 +30,25 @@ #define VKI_XEN_SYSCTL_sched_id 4 #define VKI_XEN_SYSCTL_perfc_op 5 #define VKI_XEN_SYSCTL_getdomaininfolist 6 #define VKI_XEN_SYSCTL_debug_keys 7 #define VKI_XEN_SYSCTL_getcpuinfo 8 #define VKI_XEN_SYSCTL_availheap 9 #define VKI_XEN_SYSCTL_get_pmstat 10 #define VKI_XEN_SYSCTL_cpu_hotplug 11 #define VKI_XEN_SYSCTL_pm_op 12 #define VKI_XEN_SYSCTL_page_offline_op 14 #define VKI_XEN_SYSCTL_lockprof_op 15 #define VKI_XEN_SYSCTL_topologyinfo 16 +#define VKI_XEN_SYSCTL_cputopoinfo 16 /* Since xen-4.6 */ #define VKI_XEN_SYSCTL_numainfo 17 #define VKI_XEN_SYSCTL_cpupool_op 18 #define VKI_XEN_SYSCTL_scheduler_op 19 #define VKI_XEN_SYSCTL_coverage_op 20 #define VKI_XEN_SYSCTL_psr_cmt_op 21 struct vki_xen_sysctl_readconsole { /* IN */ vki_uint8_t clear; vki_uint8_t incremental; vki_uint8_t pad0, pad1; @@ -123,24 +124,37 @@ struct vki_xen_sysctl_debug_keys { /* IN variables. */ VKI_XEN_GUEST_HANDLE_64(char) keys; vki_uint32_t nr_keys; }; struct vki_xen_sysctl_topologyinfo { vki_uint32_t max_cpu_index; VKI_XEN_GUEST_HANDLE_64(vki_uint32) cpu_to_core; VKI_XEN_GUEST_HANDLE_64(vki_uint32) cpu_to_socket; VKI_XEN_GUEST_HANDLE_64(vki_uint32) cpu_to_node; }; +struct vki_xen_sysctl_cputopo_0000000c { + vki_uint32_t core; + vki_uint32_t socket; + vki_uint32_t node; +}; +typedef struct vki_xen_sysctl_cputopo_0000000c vki_xen_sysctl_cputopo_0000000c_t; +DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_sysctl_cputopo_0000000c_t); + +struct vki_xen_sysctl_cputopoinfo_0000000c { + vki_uint32_t num_cpus; + VKI_XEN_GUEST_HANDLE_64(vki_xen_sysctl_cputopo_0000000c_t) cputopo; +}; + struct vki_xen_sysctl_numainfo_00000008 { vki_uint32_t max_node_index; VKI_XEN_GUEST_HANDLE_64(vki_uint64) node_to_memsize; VKI_XEN_GUEST_HANDLE_64(vki_uint64) node_to_memfree; VKI_XEN_GUEST_HANDLE_64(vki_uint32) node_to_node_distance; }; struct vki_xen_xen_sysctl_meminfo_0000000c { vki_uint64_t memsize; vki_uint64_t memfree; }; typedef struct vki_xen_xen_sysctl_meminfo_0000000c vki_xen_xen_sysctl_meminfo_0000000c_t; @@ -209,24 +223,25 @@ struct vki_xen_sysctl_sched_id { }; struct vki_xen_sysctl { vki_uint32_t cmd; vki_uint32_t interface_version; /* XEN_SYSCTL_INTERFACE_VERSION */ union { struct vki_xen_sysctl_readconsole readconsole; //struct vki_xen_sysctl_tbuf_op tbuf_op; struct vki_xen_sysctl_physinfo_00000008 physinfo_00000008; struct vki_xen_sysctl_physinfo_0000000a physinfo_0000000a; struct vki_xen_sysctl_physinfo_00000010 physinfo_00000010; struct vki_xen_sysctl_topologyinfo topologyinfo; + struct vki_xen_sysctl_cputopoinfo_0000000c cputopoinfo_0000000c; struct vki_xen_sysctl_numainfo_00000008 numainfo_00000008; struct vki_xen_sysctl_numainfo_0000000c numainfo_0000000c; struct vki_xen_sysctl_sched_id sched_id; //struct vki_xen_sysctl_perfc_op perfc_op; /* getdomaininfolist (sysctl) suffix is the getdomaininfo (domctl) suffix */ struct vki_xen_sysctl_getdomaininfolist_00000007 getdomaininfolist_00000007; struct vki_xen_sysctl_getdomaininfolist_00000008 getdomaininfolist_00000008; struct vki_xen_sysctl_getdomaininfolist_00000009 getdomaininfolist_00000009; struct vki_xen_sysctl_getdomaininfolist_0000000f getdomaininfolist_0000000f; struct vki_xen_sysctl_debug_keys debug_keys; //struct vki_xen_sysctl_getcpuinfo getcpuinfo; //struct vki_xen_sysctl_availheap availheap;
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