File valgrind.xen-4.10.1-versioned-xen_domctl_getdomaininfo.patch of Package valgrind

From: Olaf Hering <olaf@aepfle.de>
Date: Fri, 16 Nov 2018 17:29:56 +0100
Subject: xen-4.10.1: versioned xen_domctl_getdomaininfo

Handle new layout of xen_getdomaininfo in xen-4.10.1 shim

Fixes commit c88133141a354d65568fb85037abc5e1f74ce46b.

bz#390553
---
 coregrind/m_syswrap/syswrap-xen.c | 32 ++++++++++++++++++++++++++++----
 include/vki/vki-xen-domctl.h      |  1 +
 2 files changed, 29 insertions(+), 4 deletions(-)

--- a/coregrind/m_syswrap/syswrap-xen.c
+++ b/coregrind/m_syswrap/syswrap-xen.c
@@ -2672,43 +2672,67 @@ POST(domctl){
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000008, nr_online_vcpus);
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000008, max_vcpu_id);
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000008, ssidref);
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000008, handle);
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000008, cpupool);
       break;
       case 0x00000009:
       case 0x0000000a:
       case 0x0000000b:
       case 0x0000000c:
       case 0x0000000d:
       case 0x0000000e:
-      case 0x0000000f:
-      case 0x00000010:
-      case 0x00000011:
-      case 0x00000012:
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, domain);
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, flags);
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, tot_pages);
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, max_pages);
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, outstanding_pages);
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, shr_pages);
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, paged_pages);
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, shared_info_frame);
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, cpu_time);
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, nr_online_vcpus);
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, max_vcpu_id);
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, ssidref);
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, handle);
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000009, cpupool);
       break;
+      case 0x0000000f:
+      case 0x00000010:
+      case 0x00000011:
+      case 0x00000012:
+         POST_XEN_DOMCTL_WRITE(getdomaininfo_0000000f, domain);
+         POST_XEN_DOMCTL_WRITE(getdomaininfo_0000000f, flags);
+         POST_XEN_DOMCTL_WRITE(getdomaininfo_0000000f, tot_pages);
+         POST_XEN_DOMCTL_WRITE(getdomaininfo_0000000f, max_pages);
+         POST_XEN_DOMCTL_WRITE(getdomaininfo_0000000f, outstanding_pages);
+         POST_XEN_DOMCTL_WRITE(getdomaininfo_0000000f, shr_pages);
+         POST_XEN_DOMCTL_WRITE(getdomaininfo_0000000f, paged_pages);
+         POST_XEN_DOMCTL_WRITE(getdomaininfo_0000000f, shared_info_frame);
+         POST_XEN_DOMCTL_WRITE(getdomaininfo_0000000f, cpu_time);
+         POST_XEN_DOMCTL_WRITE(getdomaininfo_0000000f, nr_online_vcpus);
+         POST_XEN_DOMCTL_WRITE(getdomaininfo_0000000f, max_vcpu_id);
+         POST_XEN_DOMCTL_WRITE(getdomaininfo_0000000f, ssidref);
+         POST_XEN_DOMCTL_WRITE(getdomaininfo_0000000f, handle);
+         POST_XEN_DOMCTL_WRITE(getdomaininfo_0000000f, cpupool);
+         POST_XEN_DOMCTL_WRITE(getdomaininfo_0000000f, arch);
+#if defined(__i386__) || defined(__x86_64__)
+         __POST_XEN_DOMCTL_WRITE(getdomaininfo_0000000f, getdomaininfo_0000000f, arch.emulation_flags);
+#endif
+#if defined(__arm__) || defined(__aarch64__)
+         __POST_XEN_DOMCTL_WRITE(getdomaininfo_0000000f, getdomaininfo_0000000f, arch.gic_version);
+         __POST_XEN_DOMCTL_WRITE(getdomaininfo_0000000f, getdomaininfo_0000000f, arch.nr_spis);
+         __POST_XEN_DOMCTL_WRITE(getdomaininfo_0000000f, getdomaininfo_0000000f, arch.clock_frequency);
+#endif
+         break;
       }
       break;
    case VKI_XEN_DOMCTL_getvcpucontext:
       __POST_XEN_DOMCTL_WRITE(getvcpucontext, vcpucontext, ctxt.p);
       break;
 
    case VKI_XEN_DOMCTL_getpageframeinfo3:
        POST_MEM_WRITE((Addr)domctl->u.getpageframeinfo3.array.p,
                       domctl->u.getpageframeinfo3.num * sizeof(vki_xen_pfn_t));
        break;
 
    case VKI_XEN_DOMCTL_get_ext_vcpucontext:
--- a/include/vki/vki-xen-domctl.h
+++ b/include/vki/vki-xen-domctl.h
@@ -786,24 +786,25 @@ struct vki_xen_domctl_set_gnttab_limits_0000000e {
 
 struct vki_xen_domctl {
     vki_uint32_t cmd;
     vki_uint32_t interface_version; /* XEN_DOMCTL_INTERFACE_VERSION */
     vki_xen_domid_t  domain;
     union {
         struct vki_xen_domctl_createdomain_00000004  createdomain_00000004;
         struct vki_xen_domctl_createdomain_0000000b  createdomain_0000000b;
         struct vki_xen_domctl_createdomain_0000000c  createdomain_0000000c;
         struct vki_xen_domctl_getdomaininfo_00000007 getdomaininfo_00000007;
         struct vki_xen_domctl_getdomaininfo_00000008 getdomaininfo_00000008;
         struct vki_xen_domctl_getdomaininfo_00000009 getdomaininfo_00000009;
+        struct vki_xen_domctl_getdomaininfo_0000000f getdomaininfo_0000000f;
         //struct vki_xen_domctl_getmemlist        getmemlist;
         //struct vki_xen_domctl_getpageframeinfo  getpageframeinfo;
         //struct vki_xen_domctl_getpageframeinfo2 getpageframeinfo2;
         struct vki_xen_domctl_getpageframeinfo3 getpageframeinfo3;
         struct vki_xen_domctl_nodeaffinity      nodeaffinity;
         struct vki_xen_domctl_vcpuaffinity_00000009 vcpuaffinity_00000009;
         struct vki_xen_domctl_vcpuaffinity_0000000a vcpuaffinity_0000000a;
         struct vki_xen_domctl_shadow_op         shadow_op;
         struct vki_xen_domctl_max_mem           max_mem;
         struct vki_xen_domctl_vcpucontext       vcpucontext;
         struct vki_xen_domctl_getvcpuinfo       getvcpuinfo;
         struct vki_xen_domctl_max_vcpus         max_vcpus;
openSUSE Build Service is sponsored by