]> xenbits.xensource.com Git - people/liuw/linux.git/commitdiff
xen: sync memory public interface
authorWei Liu <wei.liu2@citrix.com>
Tue, 4 Nov 2014 10:21:24 +0000 (10:21 +0000)
committerWei Liu <wei.liu2@citrix.com>
Fri, 7 Nov 2014 11:13:32 +0000 (11:13 +0000)
Add in XENMEM_get_vnuma_info hypercall number and related structs.

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
include/xen/interface/memory.h

index 2ecfe4f700d94ce9adefdf423e235fe7c5e3d14c..4deab2e9054e9c2098e17daaadd660afd00747ee 100644 (file)
@@ -263,4 +263,47 @@ struct xen_remove_from_physmap {
 };
 DEFINE_GUEST_HANDLE_STRUCT(xen_remove_from_physmap);
 
+/*
+ * Used by guest to get vNUMA topology information from hypervisor.
+ */
+#define XENMEM_get_vnuma_info  26
+struct vmemrange {
+       uint64_t start, end;
+       unsigned int flags;
+       unsigned int nid;
+};
+DEFINE_GUEST_HANDLE_STRUCT(vmemrange);
+
+/*
+ * vNUMA topology specifies vNUMA node number, distance table, memory
+ * ranges and vcpu mapping provided for guests.  XENMEM_get_vnumainfo
+ * hypercall expects to see from guest nr_vnodes, nr_vmemranges and
+ * nr_vcpus to indicate available memory.  After filling guests
+ * structures, nr_vnodes, nr_vmemranges and nr_vcpus copied back to
+ * guest. Domain returns expected values of nr_vnodes, nr_vmemranges
+ * and nr_vcpus to guest if the values where incorrect.
+ */
+struct vnuma_topology_info {
+       /* IN */
+       domid_t domid;
+       /* IN / OUT */
+       unsigned int nr_vnodes;
+       unsigned int nr_vcpus;
+       unsigned int nr_vmemranges;
+       /* OUT */
+       union {
+               GUEST_HANDLE(uint) h;
+               uint64_t pad;
+       } vdistance;
+       union {
+               GUEST_HANDLE(uint) h;
+               uint64_t pad;
+       } vcpu_to_vnode;
+       union {
+               GUEST_HANDLE(vmemrange) h;
+               uint64_t pad;
+       } vmemrange;
+};
+DEFINE_GUEST_HANDLE_STRUCT(vnuma_topology_info);
+
 #endif /* __XEN_PUBLIC_MEMORY_H__ */