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 ---*/
/*--------------------------------------------------------------------*/