File valgrind.xen-4.12-handle-all-versioned-sysctl-ops.patch of Package valgrind
From: Olaf Hering <olaf@aepfle.de>
Date: Sun, 25 Nov 2018 01:40:41 +0100
Subject: xen-4.12: 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
@@ -789,78 +789,82 @@ PRE(sysctl) {
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:
case 0x00000010:
case 0x00000011:
+ case 0x00000012:
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:
case 0x00000010:
case 0x00000011:
+ case 0x00000012:
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:
case 0x00000010:
case 0x00000011:
+ case 0x00000012:
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:
case 0x00000010:
case 0x00000011:
+ case 0x00000012:
PRE_XEN_SYSCTL_READ(cpu_featureset_0000000d, index);
PRE_XEN_SYSCTL_READ(cpu_featureset_0000000d, nr_features);
break;
}
break;
case VKI_XEN_SYSCTL_get_cpu_policy:
switch (sysctl->interface_version)
{
case 0x00000012:
PRE_XEN_SYSCTL_READ(get_cpu_policy_00000012, index);
PRE_XEN_SYSCTL_READ(get_cpu_policy_00000012, nr_leaves);
@@ -2417,24 +2421,25 @@ POST(sysctl)
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:
case 0x00000010:
case 0x00000011:
+ case 0x00000012:
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:
@@ -2447,58 +2452,61 @@ POST(sysctl)
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:
case 0x00000010:
case 0x00000011:
+ case 0x00000012:
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:
case 0x00000010:
case 0x00000011:
+ case 0x00000012:
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:
case 0x00000010:
case 0x00000011:
+ case 0x00000012:
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;
case VKI_XEN_SYSCTL_get_cpu_policy:
switch (sysctl->interface_version)
{
case 0x00000012:
POST_XEN_SYSCTL_WRITE(get_cpu_policy_00000012, index);