All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] xen: distinguish the various fields of the Xen privcmd ioctls in the logging
       [not found] <1371044551.24512.436.camel@zakaz.uk.xensource.com>
@ 2013-06-12 13:42 ` Ian Campbell
  2013-06-12 13:42 ` [PATCH 2/4] xen: update for interface changes in Xen 4.3 release Ian Campbell
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 5+ messages in thread
From: Ian Campbell @ 2013-06-12 13:42 UTC (permalink / raw)
  To: valgrind-developers, xen-devel; +Cc: Andrew Cooper, Ian Campbell

---
 coregrind/m_syswrap/syswrap-linux.c |   22 +++++++++++-----------
 1 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c
index a42a572..039f8d4 100644
--- a/coregrind/m_syswrap/syswrap-linux.c
+++ b/coregrind/m_syswrap/syswrap-linux.c
@@ -6508,37 +6508,37 @@ PRE(sys_ioctl)
    case VKI_XEN_IOCTL_PRIVCMD_MMAP: {
        struct vki_xen_privcmd_mmap *args =
            (struct vki_xen_privcmd_mmap *)(ARG3);
-       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAP",
+       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAP(num)",
                     (Addr)&args->num, sizeof(args->num));
-       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAP",
+       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAP(dom)",
                     (Addr)&args->dom, sizeof(args->dom));
-       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAP",
+       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAP(entry)",
                     (Addr)args->entry, sizeof(*(args->entry)) * args->num);
       break;
    }
    case VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH: {
        struct vki_xen_privcmd_mmapbatch *args =
            (struct vki_xen_privcmd_mmapbatch *)(ARG3);
-       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH",
+       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH(num)",
                     (Addr)&args->num, sizeof(args->num));
-       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH",
+       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH(dom)",
                     (Addr)&args->dom, sizeof(args->dom));
-       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH",
+       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH(addr)",
                     (Addr)&args->addr, sizeof(args->addr));
-       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH",
+       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH(arr)",
                     (Addr)args->arr, sizeof(*(args->arr)) * args->num);
       break;
    }
    case VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH_V2: {
        struct vki_xen_privcmd_mmapbatch_v2 *args =
            (struct vki_xen_privcmd_mmapbatch_v2 *)(ARG3);
-       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH_V2",
+       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH_V2(num)",
                     (Addr)&args->num, sizeof(args->num));
-       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH_V2",
+       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH_V2(dom)",
                     (Addr)&args->dom, sizeof(args->dom));
-       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH_V2",
+       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH_V2(addr)",
                     (Addr)&args->addr, sizeof(args->addr));
-       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH_V2",
+       PRE_MEM_READ("VKI_XEN_IOCTL_PRIVCMD_MMAPBATCH_V2(arr)",
                     (Addr)args->arr, sizeof(*(args->arr)) * args->num);
       break;
    }
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/4] xen: update for interface changes in Xen 4.3 release.
       [not found] <1371044551.24512.436.camel@zakaz.uk.xensource.com>
  2013-06-12 13:42 ` [PATCH 1/4] xen: distinguish the various fields of the Xen privcmd ioctls in the logging Ian Campbell
@ 2013-06-12 13:42 ` Ian Campbell
  2013-06-12 13:42 ` [PATCH 3/4] xen: VKI_XEN_SYSCTL_sched_id hypercall Ian Campbell
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 5+ messages in thread
From: Ian Campbell @ 2013-06-12 13:42 UTC (permalink / raw)
  To: valgrind-developers, xen-devel; +Cc: Andrew Cooper, Ian Campbell

New hypercalls:
- VKI_XENMEM_claim_pages
- VKI_XEN_DOMCTL_getnodeaffinity
- VKI_XEN_DOMCTL_setnodeaffinity

Plus placeholders for other new hypercalls which we don't yet support here.

New revision of sysctl and domctl interfaces, due to new field in
outstanding_pages field in physinfo and dominfo.

Xen changed the API but not ABI of cpumasks to be a more generic bitmask.
Switch to using the latest names.
---
 coregrind/m_syswrap/syswrap-xen.c |   92 +++++++++++++++++++++++++++++++------
 include/vki/vki-xen-domctl.h      |   42 ++++++++++++++++-
 include/vki/vki-xen-memory.h      |    1 +
 include/vki/vki-xen-sysctl.h      |   28 ++++++++++-
 include/vki/vki-xen.h             |    4 +-
 5 files changed, 144 insertions(+), 23 deletions(-)

diff --git a/coregrind/m_syswrap/syswrap-xen.c b/coregrind/m_syswrap/syswrap-xen.c
index be884a1..61aa1e1 100644
--- a/coregrind/m_syswrap/syswrap-xen.c
+++ b/coregrind/m_syswrap/syswrap-xen.c
@@ -104,7 +104,8 @@ PRE(memory_op)
    }
    case VKI_XENMEM_increase_reservation:
    case VKI_XENMEM_decrease_reservation:
-   case VKI_XENMEM_populate_physmap: {
+   case VKI_XENMEM_populate_physmap:
+   case VKI_XENMEM_claim_pages: {
       struct xen_memory_reservation *memory_reservation =
          (struct xen_memory_reservation *)ARG2;
       const HChar *which;
@@ -125,6 +126,9 @@ PRE(memory_op)
                       (Addr)memory_reservation->extent_start.p,
                       sizeof(vki_xen_pfn_t) * memory_reservation->nr_extents);
          break;
+      case VKI_XENMEM_claim_pages:
+         which = "XENMEM_claim_pages";
+         break;
       default:
          which = "XENMEM_unknown";
          break;
@@ -354,6 +358,7 @@ PRE(sysctl) {
    {
    case 0x00000008:
    case 0x00000009:
+   case 0x0000000a:
 	   break;
    default:
       VG_(dmsg)("WARNING: sysctl version %"PRIx32" not supported\n",
@@ -470,6 +475,7 @@ PRE(domctl)
    {
    case 0x00000007:
    case 0x00000008:
+   case 0x00000009:
 	   break;
    default:
       VG_(dmsg)("WARNING: domctl version %"PRIx32" not supported\n",
@@ -567,7 +573,17 @@ PRE(domctl)
       __PRE_XEN_DOMCTL_READ(setvcpuaffinity, vcpuaffinity, vcpu);
       PRE_MEM_READ("XEN_DOMCTL_setvcpuaffinity u.vcpuaffinity.cpumap.bitmap",
                    (Addr)domctl->u.vcpuaffinity.cpumap.bitmap.p,
-                   domctl->u.vcpuaffinity.cpumap.nr_cpus / 8);
+                   domctl->u.vcpuaffinity.cpumap.nr_bits / 8);
+      break;
+
+   case VKI_XEN_DOMCTL_getnodeaffinity:
+      __PRE_XEN_DOMCTL_READ(nodeaffinity, nodeaffinity, nodemap.nr_bits);
+      break;
+   case VKI_XEN_DOMCTL_setnodeaffinity:
+      __PRE_XEN_DOMCTL_READ(nodeaffinity, nodeaffinity, nodemap.nr_bits);
+      PRE_MEM_READ("XEN_DOMCTL_setnodeaffinity u.nodeaffinity.cpumap.bitmap",
+                   (Addr)domctl->u.nodeaffinity.nodemap.bitmap.p,
+                   domctl->u.nodeaffinity.nodemap.nr_bits / 8);
       break;
 
    case VKI_XEN_DOMCTL_getvcpucontext:
@@ -640,6 +656,7 @@ POST(memory_op)
    switch (ARG1) {
    case VKI_XENMEM_set_memory_map:
    case VKI_XENMEM_decrease_reservation:
+   case VKI_XENMEM_claim_pages:
       /* No outputs */
       break;
    case VKI_XENMEM_increase_reservation:
@@ -743,6 +760,7 @@ POST(sysctl)
    {
    case 0x00000008:
    case 0x00000009:
+   case 0x0000000a:
 	   break;
    default:
       return;
@@ -787,18 +805,39 @@ POST(sysctl)
       break;
 
    case VKI_XEN_SYSCTL_physinfo:
-      POST_XEN_SYSCTL_WRITE(physinfo, threads_per_core);
-      POST_XEN_SYSCTL_WRITE(physinfo, cores_per_socket);
-      POST_XEN_SYSCTL_WRITE(physinfo, nr_cpus);
-      POST_XEN_SYSCTL_WRITE(physinfo, max_cpu_id);
-      POST_XEN_SYSCTL_WRITE(physinfo, nr_nodes);
-      POST_XEN_SYSCTL_WRITE(physinfo, max_node_id);
-      POST_XEN_SYSCTL_WRITE(physinfo, cpu_khz);
-      POST_XEN_SYSCTL_WRITE(physinfo, total_pages);
-      POST_XEN_SYSCTL_WRITE(physinfo, free_pages);
-      POST_XEN_SYSCTL_WRITE(physinfo, scrub_pages);
-      POST_XEN_SYSCTL_WRITE(physinfo, hw_cap[8]);
-      POST_XEN_SYSCTL_WRITE(physinfo, capabilities);
+      switch (sysctl->interface_version)
+      {
+      case 0x00000008:
+      case 0x00000009: /* Unchanged from version 8 */
+         POST_XEN_SYSCTL_WRITE(physinfo_00000008, threads_per_core);
+         POST_XEN_SYSCTL_WRITE(physinfo_00000008, cores_per_socket);
+         POST_XEN_SYSCTL_WRITE(physinfo_00000008, nr_cpus);
+         POST_XEN_SYSCTL_WRITE(physinfo_00000008, max_cpu_id);
+         POST_XEN_SYSCTL_WRITE(physinfo_00000008, nr_nodes);
+         POST_XEN_SYSCTL_WRITE(physinfo_00000008, max_node_id);
+         POST_XEN_SYSCTL_WRITE(physinfo_00000008, cpu_khz);
+         POST_XEN_SYSCTL_WRITE(physinfo_00000008, total_pages);
+         POST_XEN_SYSCTL_WRITE(physinfo_00000008, free_pages);
+         POST_XEN_SYSCTL_WRITE(physinfo_00000008, scrub_pages);
+         POST_XEN_SYSCTL_WRITE(physinfo_00000008, hw_cap[8]);
+         POST_XEN_SYSCTL_WRITE(physinfo_00000008, capabilities);
+         break;
+      case 0x0000000a:
+         POST_XEN_SYSCTL_WRITE(physinfo_0000000a, threads_per_core);
+         POST_XEN_SYSCTL_WRITE(physinfo_0000000a, cores_per_socket);
+         POST_XEN_SYSCTL_WRITE(physinfo_0000000a, nr_cpus);
+         POST_XEN_SYSCTL_WRITE(physinfo_0000000a, max_cpu_id);
+         POST_XEN_SYSCTL_WRITE(physinfo_0000000a, nr_nodes);
+         POST_XEN_SYSCTL_WRITE(physinfo_0000000a, max_node_id);
+         POST_XEN_SYSCTL_WRITE(physinfo_0000000a, cpu_khz);
+         POST_XEN_SYSCTL_WRITE(physinfo_0000000a, total_pages);
+         POST_XEN_SYSCTL_WRITE(physinfo_0000000a, free_pages);
+         POST_XEN_SYSCTL_WRITE(physinfo_0000000a, scrub_pages);
+         POST_XEN_SYSCTL_WRITE(physinfo_0000000a, outstanding_pages);
+         POST_XEN_SYSCTL_WRITE(physinfo_0000000a, hw_cap[8]);
+         POST_XEN_SYSCTL_WRITE(physinfo_0000000a, capabilities);
+         break;
+      }
       break;
 
    case VKI_XEN_SYSCTL_topologyinfo:
@@ -834,6 +873,7 @@ POST(domctl){
    switch (domctl->interface_version) {
    case 0x00000007:
    case 0x00000008:
+   case 0x00000009:
 	   break;
    default:
 	   return;
@@ -855,6 +895,7 @@ POST(domctl){
    case VKI_XEN_DOMCTL_hypercall_init:
    case VKI_XEN_DOMCTL_setvcpuaffinity:
    case VKI_XEN_DOMCTL_setvcpucontext:
+   case VKI_XEN_DOMCTL_setnodeaffinity:
    case VKI_XEN_DOMCTL_set_cpuid:
    case VKI_XEN_DOMCTL_unpausedomain:
       /* No output fields */
@@ -908,7 +949,12 @@ POST(domctl){
 
    case VKI_XEN_DOMCTL_getvcpuaffinity:
       POST_MEM_WRITE((Addr)domctl->u.vcpuaffinity.cpumap.bitmap.p,
-                     domctl->u.vcpuaffinity.cpumap.nr_cpus / 8);
+                     domctl->u.vcpuaffinity.cpumap.nr_bits / 8);
+      break;
+
+   case VKI_XEN_DOMCTL_getnodeaffinity:
+      POST_MEM_WRITE((Addr)domctl->u.nodeaffinity.nodemap.bitmap.p,
+                     domctl->u.nodeaffinity.nodemap.nr_bits / 8);
       break;
 
    case VKI_XEN_DOMCTL_getdomaininfo:
@@ -942,6 +988,22 @@ POST(domctl){
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000008, handle);
 	 POST_XEN_DOMCTL_WRITE(getdomaininfo_00000008, cpupool);
       break;
+      case 0x00000009:
+	 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;
       }
       break;
    case VKI_XEN_DOMCTL_getvcpucontext:
diff --git a/include/vki/vki-xen-domctl.h b/include/vki/vki-xen-domctl.h
index 241c008..815e0a7 100644
--- a/include/vki/vki-xen-domctl.h
+++ b/include/vki/vki-xen-domctl.h
@@ -7,6 +7,7 @@
  *
  * - 00000007: Xen 4.1
  * - 00000008: Xen 4.2
+ * - 00000009: Xen 4.3
  *
  * When adding a new subop be sure to include the variants used by all
  * of the above, both here and in syswrap-xen.c
@@ -57,7 +58,7 @@
 #define VKI_XEN_DOMCTL_pin_mem_cacheattr             41
 #define VKI_XEN_DOMCTL_set_ext_vcpucontext           42
 #define VKI_XEN_DOMCTL_get_ext_vcpucontext           43
-#define VKI_XEN_DOMCTL_set_opt_feature               44
+#define VKI_XEN_DOMCTL_set_opt_feature               44 /*Obsolete IA64 only */
 #define VKI_XEN_DOMCTL_test_assign_device            45
 #define VKI_XEN_DOMCTL_set_target                    46
 #define VKI_XEN_DOMCTL_deassign_device               47
@@ -80,6 +81,9 @@
 #define VKI_XEN_DOMCTL_set_access_required           64
 #define VKI_XEN_DOMCTL_audit_p2m                     65
 #define VKI_XEN_DOMCTL_set_virq_handler              66
+#define VKI_XEN_DOMCTL_set_broken_page_p2m           67
+#define VKI_XEN_DOMCTL_setnodeaffinity               68
+#define VKI_XEN_DOMCTL_getnodeaffinity               69
 #define VKI_XEN_DOMCTL_gdbsx_guestmemio            1000
 #define VKI_XEN_DOMCTL_gdbsx_pausevcpu             1001
 #define VKI_XEN_DOMCTL_gdbsx_unpausevcpu           1002
@@ -130,9 +134,39 @@ struct vki_xen_domctl_getdomaininfo_00000008 {
 typedef struct vki_xen_domctl_getdomaininfo_00000008 vki_xen_domctl_getdomaininfo_00000008_t;
 DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_getdomaininfo_00000008_t);
 
+struct vki_xen_domctl_getdomaininfo_00000009 {
+    /* OUT variables. */
+    vki_xen_domid_t  domain;
+    vki_uint32_t flags;
+    vki_xen_uint64_aligned_t tot_pages;
+    vki_xen_uint64_aligned_t max_pages;
+    vki_xen_uint64_aligned_t outstanding_pages;
+    vki_xen_uint64_aligned_t shr_pages;
+    vki_xen_uint64_aligned_t paged_pages;
+    vki_xen_uint64_aligned_t shared_info_frame;
+    vki_xen_uint64_aligned_t cpu_time;
+    vki_uint32_t nr_online_vcpus;
+    vki_uint32_t max_vcpu_id;
+    vki_uint32_t ssidref;
+    vki_xen_domain_handle_t handle;
+    vki_uint32_t cpupool;
+};
+typedef struct vki_xen_domctl_getdomaininfo_00000009 vki_xen_domctl_getdomaininfo_00000009_t;
+DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_getdomaininfo_00000009_t);
+
+/* Get/set the NUMA node(s) with which the guest has affinity with. */
+/* XEN_DOMCTL_setnodeaffinity */
+/* XEN_DOMCTL_getnodeaffinity */
+struct vki_xen_domctl_nodeaffinity {
+    struct vki_xenctl_bitmap nodemap;/* IN */
+};
+typedef struct vki_xen_domctl_nodeaffinity vki_xen_domctl_nodeaffinity_t;
+DEFINE_VKI_XEN_GUEST_HANDLE(vki_xen_domctl_nodeaffinity_t);
+
+
 struct vki_xen_domctl_vcpuaffinity {
     vki_uint32_t  vcpu;              /* IN */
-    struct vki_xenctl_cpumap cpumap; /* IN/OUT */
+    struct vki_xenctl_bitmap cpumap; /* IN/OUT */
 };
 
 struct vki_xen_domctl_max_mem {
@@ -233,10 +267,12 @@ struct vki_xen_domctl {
         struct vki_xen_domctl_createdomain      createdomain;
         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;
         //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      vcpuaffinity;
         //struct vki_xen_domctl_shadow_op         shadow_op;
         struct vki_xen_domctl_max_mem           max_mem;
@@ -266,7 +302,6 @@ struct vki_xen_domctl {
         //struct vki_xen_domctl_ioport_mapping    ioport_mapping;
         //struct vki_xen_domctl_pin_mem_cacheattr pin_mem_cacheattr;
         //struct vki_xen_domctl_ext_vcpucontext   ext_vcpucontext;
-        //struct vki_xen_domctl_set_opt_feature   set_opt_feature;
         //struct vki_xen_domctl_set_target        set_target;
         //struct vki_xen_domctl_subscribe         subscribe;
         //struct vki_xen_domctl_debug_op          debug_op;
@@ -280,6 +315,7 @@ struct vki_xen_domctl {
         //struct vki_xen_domctl_audit_p2m         audit_p2m;
         //struct vki_xen_domctl_set_virq_handler  set_virq_handler;
         //struct vki_xen_domctl_gdbsx_memio       gdbsx_guest_memio;
+        //struct vki_xen_domctl_set_broken_page_p2m set_broken_page_p2m;
         //struct vki_xen_domctl_gdbsx_pauseunp_vcpu gdbsx_pauseunp_vcpu;
         //struct vki_xen_domctl_gdbsx_domstatus   gdbsx_domstatus;
         vki_uint8_t                         pad[128];
diff --git a/include/vki/vki-xen-memory.h b/include/vki/vki-xen-memory.h
index 7de8d33..eac7871 100644
--- a/include/vki/vki-xen-memory.h
+++ b/include/vki/vki-xen-memory.h
@@ -20,6 +20,7 @@
 #define VKI_XENMEM_get_pod_target       17
 #define VKI_XENMEM_get_sharing_freed_pages    18
 #define VKI_XENMEM_get_sharing_shared_pages   19
+#define VKI_XENMEM_claim_pages                24
 
 struct vki_xen_memory_map {
     unsigned int nr_entries;
diff --git a/include/vki/vki-xen-sysctl.h b/include/vki/vki-xen-sysctl.h
index c5178d7..32c8722 100644
--- a/include/vki/vki-xen-sysctl.h
+++ b/include/vki/vki-xen-sysctl.h
@@ -7,6 +7,7 @@
  *
  * - 00000008: Xen 4.1
  * - 00000009: Xen 4.2
+ * - 0000000a: Xen 4.3
  *
  * When adding a new subop be sure to include the variants used by all
  * of the above, both here and in syswrap-xen.c
@@ -35,6 +36,7 @@
 #define VKI_XEN_SYSCTL_numainfo                      17
 #define VKI_XEN_SYSCTL_cpupool_op                    18
 #define VKI_XEN_SYSCTL_scheduler_op                  19
+#define VKI_XEN_SYSCTL_coverage_op                   20
 
 struct vki_xen_sysctl_getdomaininfolist_00000008 {
     /* IN variables. */
@@ -69,7 +71,7 @@ struct vki_xen_sysctl_cpupool_op {
     vki_uint32_t domid;       /* IN: M              */
     vki_uint32_t cpu;         /* IN: AR             */
     vki_uint32_t n_dom;       /*            OUT: I  */
-    struct vki_xenctl_cpumap cpumap; /*     OUT: IF */
+    struct vki_xenctl_bitmap cpumap; /*     OUT: IF */
 };
 
 struct vki_xen_sysctl_topologyinfo {
@@ -85,7 +87,7 @@ struct vki_xen_sysctl_numainfo {
     VKI_XEN_GUEST_HANDLE_64(vki_uint64) node_to_memfree;
     VKI_XEN_GUEST_HANDLE_64(vki_uint32) node_to_node_distance;
 };
-struct vki_xen_sysctl_physinfo {
+struct vki_xen_sysctl_physinfo_00000008 {
     vki_uint32_t threads_per_core;
     vki_uint32_t cores_per_socket;
     vki_uint32_t nr_cpus;     /* # CPUs currently online */
@@ -101,13 +103,31 @@ struct vki_xen_sysctl_physinfo {
     vki_uint32_t capabilities;
 };
 
+struct vki_xen_sysctl_physinfo_0000000a {
+    vki_uint32_t threads_per_core;
+    vki_uint32_t cores_per_socket;
+    vki_uint32_t nr_cpus;     /* # CPUs currently online */
+    vki_uint32_t max_cpu_id;  /* Largest possible CPU ID on this host */
+    vki_uint32_t nr_nodes;    /* # nodes currently online */
+    vki_uint32_t max_node_id; /* Largest possible node ID on this host */
+    vki_uint32_t cpu_khz;
+    vki_xen_uint64_aligned_t total_pages;
+    vki_xen_uint64_aligned_t free_pages;
+    vki_xen_uint64_aligned_t scrub_pages;
+    vki_xen_uint64_aligned_t outstanding_pages;
+    vki_uint32_t hw_cap[8];
+
+    vki_uint32_t capabilities;
+};
+
 struct vki_xen_sysctl {
     vki_uint32_t cmd;
     vki_uint32_t interface_version; /* XEN_SYSCTL_INTERFACE_VERSION */
     union {
         //struct vki_xen_sysctl_readconsole       readconsole;
         //struct vki_xen_sysctl_tbuf_op           tbuf_op;
-        struct vki_xen_sysctl_physinfo          physinfo;
+        struct vki_xen_sysctl_physinfo_00000008 physinfo_00000008;
+        struct vki_xen_sysctl_physinfo_0000000a physinfo_0000000a;
         struct vki_xen_sysctl_topologyinfo      topologyinfo;
         struct vki_xen_sysctl_numainfo          numainfo;
         //struct vki_xen_sysctl_sched_id          sched_id;
@@ -124,6 +144,8 @@ struct vki_xen_sysctl {
         //struct vki_xen_sysctl_lockprof_op       lockprof_op;
         struct vki_xen_sysctl_cpupool_op        cpupool_op;
         //struct vki_xen_sysctl_scheduler_op      scheduler_op;
+        //struct vki_xen_sysctl_coverage_op       coverage_op;
+
         vki_uint8_t                             pad[128];
     } u;
 };
diff --git a/include/vki/vki-xen.h b/include/vki/vki-xen.h
index ed3cc1b..87fbb4f 100644
--- a/include/vki/vki-xen.h
+++ b/include/vki/vki-xen.h
@@ -71,9 +71,9 @@ __DEFINE_VKI_XEN_GUEST_HANDLE(vki_uint16, vki_uint16_t);
 __DEFINE_VKI_XEN_GUEST_HANDLE(vki_uint32, vki_uint32_t);
 __DEFINE_VKI_XEN_GUEST_HANDLE(vki_uint64, vki_uint64_t);
 
-struct vki_xenctl_cpumap {
+struct vki_xenctl_bitmap {
     VKI_XEN_GUEST_HANDLE_64(vki_uint8) bitmap;
-    vki_uint32_t nr_cpus;
+    vki_uint32_t nr_bits;
 };
 
 #include <vki/vki-xen-domctl.h>
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 3/4] xen: VKI_XEN_SYSCTL_sched_id hypercall
       [not found] <1371044551.24512.436.camel@zakaz.uk.xensource.com>
  2013-06-12 13:42 ` [PATCH 1/4] xen: distinguish the various fields of the Xen privcmd ioctls in the logging Ian Campbell
  2013-06-12 13:42 ` [PATCH 2/4] xen: update for interface changes in Xen 4.3 release Ian Campbell
@ 2013-06-12 13:42 ` Ian Campbell
  2013-06-12 13:42 ` [PATCH 4/4] xen: VKI_XENMEM_get_sharing_{freed, shared}_pages hypercall Ian Campbell
  2013-06-12 13:45 ` [PATCH 0/4] Valgrind updates for Xen 4.3 Ian Campbell
  4 siblings, 0 replies; 5+ messages in thread
From: Ian Campbell @ 2013-06-12 13:42 UTC (permalink / raw)
  To: valgrind-developers, xen-devel; +Cc: Andrew Cooper

From: Andrew Cooper <andrew.cooper3@citrix.com>

Xen takes a pointer to a sysctl_sched_id struct, and writes a single uint32_t
into it.  There are no memory reads, and a single memory write.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
 coregrind/m_syswrap/syswrap-xen.c |    8 ++++++++
 include/vki/vki-xen-sysctl.h      |    7 ++++++-
 2 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/coregrind/m_syswrap/syswrap-xen.c b/coregrind/m_syswrap/syswrap-xen.c
index 61aa1e1..8a0196f 100644
--- a/coregrind/m_syswrap/syswrap-xen.c
+++ b/coregrind/m_syswrap/syswrap-xen.c
@@ -400,6 +400,10 @@ PRE(sysctl) {
       }
       break;
 
+   case VKI_XEN_SYSCTL_sched_id:
+       /* No inputs */
+       break;
+
    case VKI_XEN_SYSCTL_cpupool_op:
       PRE_XEN_SYSCTL_READ(cpupool_op, op);
 
@@ -791,6 +795,10 @@ POST(sysctl)
       }
       break;
 
+   case VKI_XEN_SYSCTL_sched_id:
+       POST_XEN_SYSCTL_WRITE(sched_id, sched_id);
+       break;
+
    case VKI_XEN_SYSCTL_cpupool_op:
       if (sysctl->u.cpupool_op.op == VKI_XEN_SYSCTL_CPUPOOL_OP_CREATE ||
           sysctl->u.cpupool_op.op == VKI_XEN_SYSCTL_CPUPOOL_OP_INFO)
diff --git a/include/vki/vki-xen-sysctl.h b/include/vki/vki-xen-sysctl.h
index 32c8722..453752c 100644
--- a/include/vki/vki-xen-sysctl.h
+++ b/include/vki/vki-xen-sysctl.h
@@ -120,6 +120,11 @@ struct vki_xen_sysctl_physinfo_0000000a {
     vki_uint32_t capabilities;
 };
 
+struct vki_xen_sysctl_sched_id {
+    /* OUT variable. */
+    vki_uint32_t              sched_id;
+};
+
 struct vki_xen_sysctl {
     vki_uint32_t cmd;
     vki_uint32_t interface_version; /* XEN_SYSCTL_INTERFACE_VERSION */
@@ -130,7 +135,7 @@ struct vki_xen_sysctl {
         struct vki_xen_sysctl_physinfo_0000000a physinfo_0000000a;
         struct vki_xen_sysctl_topologyinfo      topologyinfo;
         struct vki_xen_sysctl_numainfo          numainfo;
-        //struct vki_xen_sysctl_sched_id          sched_id;
+        struct vki_xen_sysctl_sched_id          sched_id;
         //struct vki_xen_sysctl_perfc_op          perfc_op;
         struct vki_xen_sysctl_getdomaininfolist_00000008 getdomaininfolist_00000008;
         struct vki_xen_sysctl_getdomaininfolist_00000009 getdomaininfolist_00000009;
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 4/4] xen: VKI_XENMEM_get_sharing_{freed, shared}_pages hypercall
       [not found] <1371044551.24512.436.camel@zakaz.uk.xensource.com>
                   ` (2 preceding siblings ...)
  2013-06-12 13:42 ` [PATCH 3/4] xen: VKI_XEN_SYSCTL_sched_id hypercall Ian Campbell
@ 2013-06-12 13:42 ` Ian Campbell
  2013-06-12 13:45 ` [PATCH 0/4] Valgrind updates for Xen 4.3 Ian Campbell
  4 siblings, 0 replies; 5+ messages in thread
From: Ian Campbell @ 2013-06-12 13:42 UTC (permalink / raw)
  To: valgrind-developers, xen-devel; +Cc: Andrew Cooper

From: Andrew Cooper <andrew.cooper3@citrix.com>

These hypercalls take no parameters and their return value is stright from the
ioctl() on privcmd.  There are no memory read/writes.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
 coregrind/m_syswrap/syswrap-xen.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/coregrind/m_syswrap/syswrap-xen.c b/coregrind/m_syswrap/syswrap-xen.c
index 8a0196f..ce300e8 100644
--- a/coregrind/m_syswrap/syswrap-xen.c
+++ b/coregrind/m_syswrap/syswrap-xen.c
@@ -152,6 +152,10 @@ PRE(memory_op)
       break;
    }
 
+   case VKI_XENMEM_get_sharing_freed_pages:
+   case VKI_XENMEM_get_sharing_shared_pages:
+      break;
+
    default:
       bad_subop(tid, layout, arrghs, status, flags,
                 "__HYPERVISOR_memory_op", ARG1);
@@ -672,6 +676,11 @@ POST(memory_op)
                      sizeof(vki_xen_pfn_t) * memory_reservation->nr_extents);
       break;
    }
+
+   case VKI_XENMEM_get_sharing_freed_pages:
+   case VKI_XENMEM_get_sharing_shared_pages:
+       /* No outputs */
+       break;
    }
 }
 
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 0/4] Valgrind updates for Xen 4.3
       [not found] <1371044551.24512.436.camel@zakaz.uk.xensource.com>
                   ` (3 preceding siblings ...)
  2013-06-12 13:42 ` [PATCH 4/4] xen: VKI_XENMEM_get_sharing_{freed, shared}_pages hypercall Ian Campbell
@ 2013-06-12 13:45 ` Ian Campbell
  4 siblings, 0 replies; 5+ messages in thread
From: Ian Campbell @ 2013-06-12 13:45 UTC (permalink / raw)
  To: valgrind-developers; +Cc: Andrew Cooper, xen-devel

On Wed, 2013-06-12 at 14:42 +0100, Ian Campbell wrote:
> The following small set of patches updates valgrind for the interface
> changes made in Xen 4.3.
> 
> With this and the two xl patches I just sent to the xen-devel list the
> xl commands list, create (PV guest) and destroy commands are leak free.

I've also attached these to https://bugs.kde.org/show_bug.cgi?id=321065

(I started doing this before I realised I'd have to add the patches
1-by-1 and SPAM the various bugzilla subscribers N times. Sorry about
this -- next time I'll attach them as a tarball...)

Ian.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-06-12 13:45 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <1371044551.24512.436.camel@zakaz.uk.xensource.com>
2013-06-12 13:42 ` [PATCH 1/4] xen: distinguish the various fields of the Xen privcmd ioctls in the logging Ian Campbell
2013-06-12 13:42 ` [PATCH 2/4] xen: update for interface changes in Xen 4.3 release Ian Campbell
2013-06-12 13:42 ` [PATCH 3/4] xen: VKI_XEN_SYSCTL_sched_id hypercall Ian Campbell
2013-06-12 13:42 ` [PATCH 4/4] xen: VKI_XENMEM_get_sharing_{freed, shared}_pages hypercall Ian Campbell
2013-06-12 13:45 ` [PATCH 0/4] Valgrind updates for Xen 4.3 Ian Campbell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.