File valgrind.xen-4.7-handle-all-versioned-sysctl-ops.patch of Package valgrind

From: Olaf Hering <olaf@aepfle.de>
Date: Sun, 25 Nov 2018 00:51:45 +0100
Subject: xen-4.7: 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 | 6 ++++++
 1 file changed, 6 insertions(+)

--- a/coregrind/m_syswrap/syswrap-xen.c
+++ b/coregrind/m_syswrap/syswrap-xen.c
@@ -775,54 +775,57 @@ PRE(sysctl) {
       {
       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:
+      case 0x0000000d:
          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:
          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:
          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:
          PRE_XEN_SYSCTL_READ(cpu_featureset_0000000d, index);
          PRE_XEN_SYSCTL_READ(cpu_featureset_0000000d, nr_features);
@@ -2190,24 +2193,25 @@ POST(sysctl)
          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:
+      case 0x0000000d:
          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:
@@ -2215,38 +2219,40 @@ POST(sysctl)
       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;
       case 0x0000000c:
+      case 0x0000000d:
          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:
          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:
          POST_XEN_SYSCTL_WRITE(cpu_featureset_0000000d, nr_features);
openSUSE Build Service is sponsored by