File valgrind.xen-4.10-support-xen_domctl_set_gnttab_limits.patch of Package valgrind

From: Olaf Hering <olaf@aepfle.de>
Date: Fri, 23 Nov 2018 16:42:20 +0100
Subject: xen-4.10: support xen_domctl_set_gnttab_limits

This domctl exists only in Xen 4.10 and 4.11, so it is unversioned.

bz#390553
---
 coregrind/m_syswrap/syswrap-xen.c | 5 +++++
 include/vki/vki-xen-domctl.h      | 7 +++++++
 2 files changed, 12 insertions(+)

--- a/coregrind/m_syswrap/syswrap-xen.c
+++ b/coregrind/m_syswrap/syswrap-xen.c
@@ -1738,24 +1738,29 @@ PRE(domctl)
                 __PRE_XEN_DOMCTL_READ(monitor_op, monitor_op_00000011, u.mov_to_msr);
                 break;
              case VKI_XEN_DOMCTL_MONITOR_EVENT_GUEST_REQUEST:
                 __PRE_XEN_DOMCTL_READ(monitor_op, monitor_op_00000011, u.guest_request);
                 break;
              }
           }
 
          break;
       }
       break;
 
+   case VKI_XEN_DOMCTL_set_gnttab_limits:
+      PRE_XEN_DOMCTL_READ(set_gnttab_limits_0000000e, grant_frames);
+      PRE_XEN_DOMCTL_READ(set_gnttab_limits_0000000e, maptrack_frames);
+      break;
+
    default:
       bad_subop(tid, layout, arrghs, status, flags,
                 "__HYPERVISOR_domctl", domctl->cmd);
       break;
    }
 #undef PRE_XEN_DOMCTL_READ
 #undef __PRE_XEN_DOMCTL_READ
 }
 
 PRE(hvm_op)
 {
    unsigned long op = ARG1;
--- a/include/vki/vki-xen-domctl.h
+++ b/include/vki/vki-xen-domctl.h
@@ -120,24 +120,25 @@
 #define VKI_XEN_DOMCTL_setnodeaffinity               68
 #define VKI_XEN_DOMCTL_getnodeaffinity               69
 #define VKI_XEN_DOMCTL_set_max_evtchn                70
 #define VKI_XEN_DOMCTL_cacheflush                    71
 #define VKI_XEN_DOMCTL_get_vcpu_msrs                 72
 #define VKI_XEN_DOMCTL_set_vcpu_msrs                 73
 #define VKI_XEN_DOMCTL_setvnumainfo                  74
 #define VKI_XEN_DOMCTL_psr_cmt_op                    75
 #define VKI_XEN_DOMCTL_arm_configure_domain          76
 #define VKI_XEN_DOMCTL_monitor_op                    77 /* new in 4.6 */
 #define VKI_XEN_DOMCTL_psr_cat_op                    78
 #define VKI_XEN_DOMCTL_soft_reset                    79
+#define VKI_XEN_DOMCTL_set_gnttab_limits             80
 #define VKI_XEN_DOMCTL_gdbsx_guestmemio            1000
 #define VKI_XEN_DOMCTL_gdbsx_pausevcpu             1001
 #define VKI_XEN_DOMCTL_gdbsx_unpausevcpu           1002
 #define VKI_XEN_DOMCTL_gdbsx_domstatus             1003
 
 struct vki_xen_domctl_createdomain_00000004 {
     /* IN parameters */
     vki_uint32_t ssidref;
     vki_xen_domain_handle_t handle;
     vki_uint32_t flags;
 };
 
@@ -774,24 +775,29 @@ struct vki_xen_domctl_monitor_op_00000011 {
             /* Pause vCPU until response */
             vki_uint8_t sync;
             vki_uint8_t allow_userspace;
         } guest_request;
 
         struct {
             /* Pause vCPU until response */
             vki_uint8_t sync;
         } debug_exception;
     } u;
 };
 
+struct vki_xen_domctl_set_gnttab_limits_0000000e {
+    vki_uint32_t grant_frames;
+    vki_uint32_t maptrack_frames;
+};
+
 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_getmemlist        getmemlist;
@@ -855,21 +861,22 @@ struct vki_xen_domctl {
         //struct vki_xen_domctl_set_broken_page_p2m set_broken_page_p2m;
         struct vki_xen_domctl_cacheflush        cacheflush;
         //struct vki_xen_domctl_gdbsx_pauseunp_vcpu gdbsx_pauseunp_vcpu;
         //struct vki_xen_domctl_gdbsx_domstatus   gdbsx_domstatus;
         struct vki_xen_domctl_monitor_op_0000000b monitor_op_0000000b;
         struct vki_xen_domctl_monitor_op_0000000c monitor_op_0000000c;
         struct vki_xen_domctl_monitor_op_0000000e monitor_op_0000000e;
         struct vki_xen_domctl_monitor_op_00000011 monitor_op_00000011;
         //struct vki_xen_domctl_vnuma             vnuma;
         //struct vki_xen_domctl_psr_cmt_op        psr_cmt_op;
         //struct vki_xen_domctl_psr_cat_op        psr_cat_op;
         //struct vki_xen_domctl_arm_configuredomain configuredomain;
+        struct vki_xen_domctl_set_gnttab_limits_0000000e set_gnttab_limits_0000000e;
         vki_uint8_t                         pad[128];
     } u;
 };
 
 #endif // __VKI_XEN_DOMCTL_H
 
 /*--------------------------------------------------------------------*/
 /*--- end                                                          ---*/
 /*--------------------------------------------------------------------*/
openSUSE Build Service is sponsored by