# HG changeset patch
# User [EMAIL PROTECTED]
# Node ID 10243a857f5d0babad227219c79e45b9131fb9f3
# Parent  4a1f58739bc25b80eae92af80b9ef309cb25468c
[LINUX][POWERPC] Update domctl and sysctl definitions.
- changes the interface versions.
- added KERN_WARNING messages to help debug version mismatches.
Signed-off-by: Hollis Blanchard <[EMAIL PROTECTED]>
---
 arch/powerpc/platforms/xen/hcall.c |   15 ++++++++++++---
 include/xen/interface/domctl.h     |   22 +++++++++++-----------
 include/xen/interface/sysctl.h     |   20 ++++++++++----------
 3 files changed, 33 insertions(+), 24 deletions(-)

diff -r 4a1f58739bc2 -r 10243a857f5d arch/powerpc/platforms/xen/hcall.c
--- a/arch/powerpc/platforms/xen/hcall.c        Tue Sep 12 15:53:01 2006 -0500
+++ b/arch/powerpc/platforms/xen/hcall.c        Mon Sep 18 11:12:12 2006 -0500
@@ -237,8 +237,11 @@ static int xenppc_privcmd_domctl(privcmd
        if (copy_from_user(&kern_op, user_op, sizeof(xen_domctl_t)))
                return -EFAULT;
 
-       if (kern_op.interface_version != XEN_DOMCTL_INTERFACE_VERSION)
+       if (kern_op.interface_version != XEN_DOMCTL_INTERFACE_VERSION) {
+               printk(KERN_WARNING "%s: %s %x != %x\n", __func__, 
current->comm,
+                               kern_op.interface_version, 
XEN_DOMCTL_INTERFACE_VERSION);
                return -EACCES;
+       }
 
        ret = xencomm_create(&kern_op, sizeof(xen_domctl_t), &op_desc, 
GFP_KERNEL);
        if (ret)
@@ -348,8 +351,11 @@ static int xenppc_privcmd_sysctl(privcmd
        if (copy_from_user(&kern_op, user_op, sizeof(xen_sysctl_t)))
                return -EFAULT;
 
-       if (kern_op.interface_version != XEN_SYSCTL_INTERFACE_VERSION)
+       if (kern_op.interface_version != XEN_SYSCTL_INTERFACE_VERSION) {
+               printk(KERN_WARNING "%s: %s %x != %x\n", __func__, 
current->comm,
+                               kern_op.interface_version, 
XEN_SYSCTL_INTERFACE_VERSION);
                return -EACCES;
+       }
 
        ret = xencomm_create(&kern_op, sizeof(xen_sysctl_t), &op_desc, 
GFP_KERNEL);
        if (ret)
@@ -413,8 +419,11 @@ static int xenppc_privcmd_platform_op(pr
        if (copy_from_user(&kern_op, user_op, sizeof(xen_platform_op_t)))
                return -EFAULT;
 
-       if (kern_op.interface_version != XENPF_INTERFACE_VERSION)
+       if (kern_op.interface_version != XENPF_INTERFACE_VERSION) {
+               printk(KERN_WARNING "%s: %s %x != %x\n", __func__, 
current->comm,
+                               kern_op.interface_version, 
XENPF_INTERFACE_VERSION);
                return -EACCES;
+       }
 
        ret = xencomm_create(&kern_op, sizeof(xen_platform_op_t), &op_desc,
                        GFP_KERNEL);
diff -r 4a1f58739bc2 -r 10243a857f5d include/xen/interface/domctl.h
--- a/include/xen/interface/domctl.h    Tue Sep 12 15:53:01 2006 -0500
+++ b/include/xen/interface/domctl.h    Mon Sep 18 11:12:12 2006 -0500
@@ -10,14 +10,16 @@
 #ifndef __XEN_PUBLIC_DOMCTL_H__
 #define __XEN_PUBLIC_DOMCTL_H__
 
+#if !defined(__XEN__) && !defined(__XEN_TOOLS__)
+#error "domctl operations are intended for use by node control tools only"
+#endif
+
 #include "xen.h"
 
-#define XEN_DOMCTL_INTERFACE_VERSION 0x00000002
-
-#define uint64_t uint64_aligned_t
+#define XEN_DOMCTL_INTERFACE_VERSION 0x00000003
 
 struct xenctl_cpumap {
-    XEN_GUEST_HANDLE_64(uint8_t) bitmap;
+    XEN_GUEST_HANDLE(uint8_t) bitmap;
     uint32_t nr_cpus;
 };
 
@@ -72,7 +74,7 @@ struct xen_domctl_getmemlist {
     uint64_t max_pfns;
     /* Start index in guest's page list. */
     uint64_t start_pfn;
-    XEN_GUEST_HANDLE_64(xen_pfn_t) buffer;
+    XEN_GUEST_HANDLE(xen_pfn_t) buffer;
     /* OUT variables. */
     uint64_t num_pfns;
 };
@@ -109,7 +111,7 @@ struct xen_domctl_getpageframeinfo2 {
     /* IN variables. */
     uint64_t num;
     /* IN/OUT variables. */
-    XEN_GUEST_HANDLE_64(ulong) array;
+    XEN_GUEST_HANDLE(ulong) array;
 };
 typedef struct xen_domctl_getpageframeinfo2 xen_domctl_getpageframeinfo2_t;
 DEFINE_XEN_GUEST_HANDLE(xen_domctl_getpageframeinfo2_t);
@@ -183,7 +185,7 @@ struct xen_domctl_shadow_op {
     uint32_t       mb;       /* Shadow memory allocation in MB */
 
     /* OP_PEEK / OP_CLEAN */
-    XEN_GUEST_HANDLE_64(ulong) dirty_bitmap;
+    XEN_GUEST_HANDLE(ulong) dirty_bitmap;
     uint64_t       pages;    /* Size of buffer. Updated with actual size. */
     struct xen_domctl_shadow_op_stats stats;
 };
@@ -203,8 +205,8 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_max_m
 #define XEN_DOMCTL_setvcpucontext    12
 #define XEN_DOMCTL_getvcpucontext    13
 struct xen_domctl_vcpucontext {
-    uint32_t              vcpu;                     /* IN */
-    XEN_GUEST_HANDLE_64(vcpu_guest_context_t) ctxt; /* IN/OUT */
+    uint32_t              vcpu;                  /* IN */
+    XEN_GUEST_HANDLE(vcpu_guest_context_t) ctxt; /* IN/OUT */
 };
 typedef struct xen_domctl_vcpucontext xen_domctl_vcpucontext_t;
 DEFINE_XEN_GUEST_HANDLE(xen_domctl_vcpucontext_t);
@@ -385,8 +387,6 @@ typedef struct xen_domctl xen_domctl_t;
 typedef struct xen_domctl xen_domctl_t;
 DEFINE_XEN_GUEST_HANDLE(xen_domctl_t);
 
-#undef uint64_t
-
 #endif /* __XEN_PUBLIC_DOMCTL_H__ */
 
 /*
diff -r 4a1f58739bc2 -r 10243a857f5d include/xen/interface/sysctl.h
--- a/include/xen/interface/sysctl.h    Tue Sep 12 15:53:01 2006 -0500
+++ b/include/xen/interface/sysctl.h    Mon Sep 18 11:12:12 2006 -0500
@@ -9,12 +9,14 @@
 #ifndef __XEN_PUBLIC_SYSCTL_H__
 #define __XEN_PUBLIC_SYSCTL_H__
 
+#if !defined(__XEN__) && !defined(__XEN_TOOLS__)
+#error "sysctl operations are intended for use by node control tools only"
+#endif
+
 #include "xen.h"
 #include "domctl.h"
 
-#define XEN_SYSCTL_INTERFACE_VERSION 0x00000001
-
-#define uint64_t uint64_aligned_t
+#define XEN_SYSCTL_INTERFACE_VERSION 0x00000002
 
 /*
  * Read console content from Xen buffer ring.
@@ -22,8 +24,8 @@
 #define XEN_SYSCTL_readconsole       1
 struct xen_sysctl_readconsole {
     /* IN variables. */
-    uint32_t clear;                   /* Non-zero -> clear after reading. */
-    XEN_GUEST_HANDLE_64(char) buffer; /* Buffer start */
+    uint32_t clear;                /* Non-zero -> clear after reading. */
+    XEN_GUEST_HANDLE(char) buffer; /* Buffer start */
     /* IN/OUT variables. */
     uint32_t count;            /* In: Buffer size;  Out: Used buffer size  */
 };
@@ -101,9 +103,9 @@ struct xen_sysctl_perfc_op {
     uint32_t       nr_counters;       /*  number of counters description  */
     uint32_t       nr_vals;                      /*  number of values  */
     /* counter information (or NULL) */
-    XEN_GUEST_HANDLE_64(xen_sysctl_perfc_desc_t) desc;
+    XEN_GUEST_HANDLE(xen_sysctl_perfc_desc_t) desc;
     /* counter values (or NULL) */
-    XEN_GUEST_HANDLE_64(xen_sysctl_perfc_val_t) val;
+    XEN_GUEST_HANDLE(xen_sysctl_perfc_val_t) val;
 };
 typedef struct xen_sysctl_perfc_op xen_sysctl_perfc_op_t;
 DEFINE_XEN_GUEST_HANDLE(xen_sysctl_perfc_op_t);
@@ -113,7 +115,7 @@ struct xen_sysctl_getdomaininfolist {
     /* IN variables. */
     domid_t               first_domain;
     uint32_t              max_domains;
-    XEN_GUEST_HANDLE_64(xen_domctl_getdomaininfo_t) buffer;
+    XEN_GUEST_HANDLE(xen_domctl_getdomaininfo_t) buffer;
     /* OUT variables. */
     uint32_t              num_domains;
 };
@@ -136,8 +138,6 @@ typedef struct xen_sysctl xen_sysctl_t;
 typedef struct xen_sysctl xen_sysctl_t;
 DEFINE_XEN_GUEST_HANDLE(xen_sysctl_t);
 
-#undef uint64_t
-
 #endif /* __XEN_PUBLIC_SYSCTL_H__ */
 
 /*

_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@lists.xensource.com
http://lists.xensource.com/xen-ppc-devel

Reply via email to