Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:olh:xen-buildrequires
valgrind
valgrind.xen-4.1-versioned-XEN_SYSCTL_numainfo....
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File valgrind.xen-4.1-versioned-XEN_SYSCTL_numainfo.patch of Package valgrind
From: Olaf Hering <olaf@aepfle.de> Date: Fri, 16 Nov 2018 17:21:13 +0100 Subject: xen-4.1: versioned XEN_SYSCTL_numainfo The XEN_SYSCTL_numainfo changed layout after xen-4.5. Rename layout and handle runtime from xen-4.1 upto xen-4.5. bz#390553 --- coregrind/m_syswrap/syswrap-xen.c | 40 ++++++++++++++++++++++++++++------------ include/vki/vki-xen-sysctl.h | 4 ++-- 2 files changed, 30 insertions(+), 14 deletions(-) --- a/coregrind/m_syswrap/syswrap-xen.c +++ b/coregrind/m_syswrap/syswrap-xen.c @@ -764,28 +764,36 @@ PRE(sysctl) { case VKI_XEN_SYSCTL_physinfo: /* No input params */ break; case VKI_XEN_SYSCTL_topologyinfo: 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 VKI_XEN_SYSCTL_numainfo: - PRE_XEN_SYSCTL_READ(numainfo, max_node_index); - PRE_XEN_SYSCTL_READ(numainfo, node_to_memsize); - PRE_XEN_SYSCTL_READ(numainfo, node_to_memfree); - PRE_XEN_SYSCTL_READ(numainfo, node_to_node_distance); + 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); + PRE_XEN_SYSCTL_READ(numainfo_00000008, node_to_memfree); + PRE_XEN_SYSCTL_READ(numainfo_00000008, node_to_node_distance); + break; + } break; default: bad_subop(tid, layout, arrghs, status, flags, "__HYPERVISOR_sysctl", sysctl->cmd); break; } #undef PRE_XEN_SYSCTL_READ #undef __PRE_XEN_SYSCTL_READ } PRE(domctl) @@ -2094,32 +2102,40 @@ POST(sysctl) 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 VKI_XEN_SYSCTL_numainfo: - POST_XEN_SYSCTL_WRITE(numainfo, max_node_index); - POST_MEM_WRITE((Addr)sysctl->u.numainfo.node_to_memsize.p, - sizeof(uint64_t) * sysctl->u.numainfo.max_node_index); - POST_MEM_WRITE((Addr)sysctl->u.numainfo.node_to_memfree.p, - sizeof(uint64_t) * sysctl->u.numainfo.max_node_index); - POST_MEM_WRITE((Addr)sysctl->u.numainfo.node_to_node_distance.p, - sizeof(uint32_t) * - (sysctl->u.numainfo.max_node_index * sysctl->u.numainfo.max_node_index)); + 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, + sizeof(uint64_t) * sysctl->u.numainfo_00000008.max_node_index); + POST_MEM_WRITE((Addr)sysctl->u.numainfo_00000008.node_to_memfree.p, + sizeof(uint64_t) * sysctl->u.numainfo_00000008.max_node_index); + POST_MEM_WRITE((Addr)sysctl->u.numainfo_00000008.node_to_node_distance.p, + sizeof(uint32_t) * + (sysctl->u.numainfo_00000008.max_node_index * sysctl->u.numainfo_00000008.max_node_index)); + break; + } break; /* No outputs */ case VKI_XEN_SYSCTL_debug_keys: break; } #undef POST_XEN_SYSCTL_WRITE #undef __POST_XEN_SYSCTL_WRITE } POST(domctl){ struct vki_xen_domctl *domctl = (struct vki_xen_domctl *)ARG1; --- a/include/vki/vki-xen-sysctl.h +++ b/include/vki/vki-xen-sysctl.h @@ -121,25 +121,25 @@ 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_numainfo { +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_sysctl_physinfo_00000008 { vki_uint32_t threads_per_core; vki_uint32_t cores_per_socket; vki_uint32_t nr_cpus; /* # CPUs currently online */ vki_uint32_t max_cpu_id; /* Largest possible CPU ID on this host */ vki_uint32_t nr_nodes; /* # nodes currently online */ vki_uint32_t max_node_id; /* Largest possible node ID on this host */ @@ -193,25 +193,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_numainfo numainfo; + struct vki_xen_sysctl_numainfo_00000008 numainfo_00000008; 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; //struct vki_xen_sysctl_get_pmstat get_pmstat; //struct vki_xen_sysctl_cpu_hotplug cpu_hotplug;
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