File valgrind.xen-4.9-handle-all-versioned-sysctl-ops.patch of Package valgrind
From: Olaf Hering <olaf@aepfle.de>
Date: Sun, 25 Nov 2018 01:03:04 +0100
Subject: xen-4.9: handle all versioned sysctl ops
When support for a new sysctl version is added, all versioned ops must be adjusted.
bz#390553
---
coregrind/m_syswrap/syswrap-xen.c | 8 ++++++++
1 file changed, 8 insertions(+)
--- a/coregrind/m_syswrap/syswrap-xen.c
+++ b/coregrind/m_syswrap/syswrap-xen.c
@@ -781,69 +781,73 @@ PRE(sysctl) {
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:
case 0x0000000d:
case 0x0000000e:
+ case 0x0000000f:
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);
PRE_XEN_SYSCTL_READ(numainfo_00000008, node_to_memfree);
PRE_XEN_SYSCTL_READ(numainfo_00000008, node_to_node_distance);
break;
case 0x0000000c:
case 0x0000000d:
case 0x0000000e:
+ case 0x0000000f:
PRE_XEN_SYSCTL_READ(numainfo_0000000c, num_nodes);
PRE_XEN_SYSCTL_READ(numainfo_0000000c, meminfo);
PRE_XEN_SYSCTL_READ(numainfo_0000000c, distance);
break;
}
break;
case VKI_XEN_SYSCTL_pcitopoinfo:
switch (sysctl->interface_version)
{
case 0x0000000c:
case 0x0000000d:
case 0x0000000e:
+ case 0x0000000f:
PRE_XEN_SYSCTL_READ(pcitopoinfo_0000000c, num_devs);
PRE_XEN_SYSCTL_READ(pcitopoinfo_0000000c, devs);
break;
}
break;
case VKI_XEN_SYSCTL_get_cpu_featureset:
switch (sysctl->interface_version)
{
case 0x0000000d:
case 0x0000000e:
+ case 0x0000000f:
PRE_XEN_SYSCTL_READ(cpu_featureset_0000000d, index);
PRE_XEN_SYSCTL_READ(cpu_featureset_0000000d, nr_features);
break;
}
break;
default:
bad_subop(tid, layout, arrghs, status, flags,
"__HYPERVISOR_sysctl", sysctl->cmd);
break;
}
#undef PRE_XEN_SYSCTL_READ
@@ -2238,24 +2242,25 @@ POST(sysctl)
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:
case 0x0000000d:
case 0x0000000e:
+ case 0x0000000f:
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:
@@ -2265,52 +2270,55 @@ POST(sysctl)
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;
case 0x0000000c:
case 0x0000000d:
case 0x0000000e:
+ case 0x0000000f:
POST_XEN_SYSCTL_WRITE(numainfo_0000000c, num_nodes);
POST_MEM_WRITE((Addr)sysctl->u.numainfo_0000000c.meminfo.p,
sizeof(uint64_t) * sysctl->u.numainfo_0000000c.num_nodes);
POST_MEM_WRITE((Addr)sysctl->u.numainfo_0000000c.distance.p,
sizeof(uint32_t) *
(sysctl->u.numainfo_0000000c.num_nodes * sysctl->u.numainfo_0000000c.num_nodes));
break;
}
break;
case VKI_XEN_SYSCTL_pcitopoinfo:
switch (sysctl->interface_version)
{
case 0x0000000c:
case 0x0000000d:
case 0x0000000e:
+ case 0x0000000f:
POST_XEN_SYSCTL_WRITE(pcitopoinfo_0000000c, num_devs);
POST_MEM_WRITE((Addr)sysctl->u.pcitopoinfo_0000000c.nodes.p,
sizeof(uint32_t) * sysctl->u.pcitopoinfo_0000000c.num_devs);
break;
}
break;
case VKI_XEN_SYSCTL_get_cpu_featureset:
switch (sysctl->interface_version)
{
case 0x0000000d:
case 0x0000000e:
+ case 0x0000000f:
POST_XEN_SYSCTL_WRITE(cpu_featureset_0000000d, nr_features);
POST_MEM_WRITE((Addr)sysctl->u.cpu_featureset_0000000d.features.p,
sizeof(uint32_t) * sysctl->u.cpu_featureset_0000000d.nr_features);
break;
}
break;
/* No outputs */
case VKI_XEN_SYSCTL_debug_keys:
break;
}
#undef POST_XEN_SYSCTL_WRITE