[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH 2/2] xen: make start_info x86 specific.



ARM has no start info. Although it does not existing in the hypervisor ABI we
synthesize one for the benefit of the common code.

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Cc: Jan Beulich <JBeulich@xxxxxxxx>
Cc: Keir (Xen.org) <keir@xxxxxxx>
Cc: Tim Deegan <tim@xxxxxxx>
Cc: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
---
 arch/arm/include/asm/xen/interface.h |   24 +++++++++++++++++++++++
 arch/x86/include/asm/xen/interface.h |   35 ++++++++++++++++++++++++++++++++++
 include/xen/interface/xen.h          |   33 --------------------------------
 3 files changed, 59 insertions(+), 33 deletions(-)

diff --git a/arch/arm/include/asm/xen/interface.h 
b/arch/arm/include/asm/xen/interface.h
index 1151188..1db40d5 100644
--- a/arch/arm/include/asm/xen/interface.h
+++ b/arch/arm/include/asm/xen/interface.h
@@ -51,6 +51,30 @@ DEFINE_GUEST_HANDLE(uint32_t);
 DEFINE_GUEST_HANDLE(xen_pfn_t);
 DEFINE_GUEST_HANDLE(xen_ulong_t);
 
+/*
+ * On ARM this is not part of the hypervisor ABI but we provide it
+ * internally for the benefit of common code.
+ */
+struct start_info {
+        uint32_t flags;             /* SIF_xxx flags.                         
*/
+        uint32_t store_evtchn;      /* Event channel for store communication. 
*/
+        xen_pfn_t store_mfn;        /* MACHINE page number of shared page.    
*/
+        union {
+                struct {
+                        xen_pfn_t mfn;      /* MACHINE page number of console 
page.   */
+                        uint32_t  evtchn;   /* Event channel for console page. 
       */
+                } domU;
+                struct {
+                        uint32_t info_off;  /* Offset of console_info struct.  
       */
+                        uint32_t info_size; /* Size of console_info struct 
from start.*/
+                } dom0;
+        } console;
+       /* UNUSED ON ARM */
+        unsigned long nr_pages;     /* Total pages allocated to this domain.  
*/
+};
+#define SIF_PRIVILEGED    (1<<0)  /* Is the domain privileged? */
+#define SIF_INITDOMAIN    (1<<1)  /* Is this the initial control domain? */
+
 /* Maximum number of virtual CPUs in multi-processor guests. */
 #define MAX_VIRT_CPUS 1
 
diff --git a/arch/x86/include/asm/xen/interface.h 
b/arch/x86/include/asm/xen/interface.h
index fd9cb76..ca9a203 100644
--- a/arch/x86/include/asm/xen/interface.h
+++ b/arch/x86/include/asm/xen/interface.h
@@ -131,6 +131,41 @@ struct arch_shared_info {
 #include <asm/pvclock-abi.h>
 
 #ifndef __ASSEMBLY__
+
+
+#define MAX_GUEST_CMDLINE 1024
+struct start_info {
+    /* THE FOLLOWING ARE FILLED IN BOTH ON INITIAL BOOT AND ON RESUME.    */
+    char magic[32];             /* "xen-<version>-<platform>".            */
+    unsigned long nr_pages;     /* Total pages allocated to this domain.  */
+    unsigned long shared_info;  /* MACHINE address of shared info struct. */
+    uint32_t flags;             /* SIF_xxx flags.                         */
+    xen_pfn_t store_mfn;        /* MACHINE page number of shared page.    */
+    uint32_t store_evtchn;      /* Event channel for store communication. */
+    union {
+        struct {
+            xen_pfn_t mfn;      /* MACHINE page number of console page.   */
+            uint32_t  evtchn;   /* Event channel for console page.        */
+        } domU;
+        struct {
+            uint32_t info_off;  /* Offset of console_info struct.         */
+            uint32_t info_size; /* Size of console_info struct from start.*/
+        } dom0;
+    } console;
+    /* THE FOLLOWING ARE ONLY FILLED IN ON INITIAL BOOT (NOT RESUME).     */
+    unsigned long pt_base;      /* VIRTUAL address of page directory.     */
+    unsigned long nr_pt_frames; /* Number of bootstrap p.t. frames.       */
+    unsigned long mfn_list;     /* VIRTUAL address of page-frame list.    */
+    unsigned long mod_start;    /* VIRTUAL address of pre-loaded module.  */
+    unsigned long mod_len;      /* Size (bytes) of pre-loaded module.     */
+    int8_t cmd_line[MAX_GUEST_CMDLINE];
+};
+
+/* These flags are passed in the 'flags' field of start_info_t. */
+#define SIF_PRIVILEGED    (1<<0)  /* Is the domain privileged? */
+#define SIF_INITDOMAIN    (1<<1)  /* Is this the initial control domain? */
+#define SIF_PM_MASK       (0xFF<<8) /* reserve 1 byte for xen-pm options */
+
 /*
  * The following is all CPU context. Note that the fpu_ctxt block is filled
  * in by FXSAVE if the CPU has feature FXSR; otherwise FSAVE is used.
diff --git a/include/xen/interface/xen.h b/include/xen/interface/xen.h
index 53ec416..a9075df 100644
--- a/include/xen/interface/xen.h
+++ b/include/xen/interface/xen.h
@@ -422,34 +422,6 @@ struct shared_info {
  *     extended by an extra 4MB to ensure this.
  */
 
-#define MAX_GUEST_CMDLINE 1024
-struct start_info {
-       /* THE FOLLOWING ARE FILLED IN BOTH ON INITIAL BOOT AND ON RESUME.    */
-       char magic[32];             /* "xen-<version>-<platform>".            */
-       unsigned long nr_pages;     /* Total pages allocated to this domain.  */
-       unsigned long shared_info;  /* MACHINE address of shared info struct. */
-       uint32_t flags;             /* SIF_xxx flags.                         */
-       xen_pfn_t store_mfn;        /* MACHINE page number of shared page.    */
-       uint32_t store_evtchn;      /* Event channel for store communication. */
-       union {
-               struct {
-                       xen_pfn_t mfn;      /* MACHINE page number of console 
page.   */
-                       uint32_t  evtchn;   /* Event channel for console page.  
      */
-               } domU;
-               struct {
-                       uint32_t info_off;  /* Offset of console_info struct.   
      */
-                       uint32_t info_size; /* Size of console_info struct from 
start.*/
-               } dom0;
-       } console;
-       /* THE FOLLOWING ARE ONLY FILLED IN ON INITIAL BOOT (NOT RESUME).     */
-       unsigned long pt_base;      /* VIRTUAL address of page directory.     */
-       unsigned long nr_pt_frames; /* Number of bootstrap p.t. frames.       */
-       unsigned long mfn_list;     /* VIRTUAL address of page-frame list.    */
-       unsigned long mod_start;    /* VIRTUAL address of pre-loaded module.  */
-       unsigned long mod_len;      /* Size (bytes) of pre-loaded module.     */
-       int8_t cmd_line[MAX_GUEST_CMDLINE];
-};
-
 struct dom0_vga_console_info {
        uint8_t video_type;
 #define XEN_VGATYPE_TEXT_MODE_3 0x03
@@ -490,11 +462,6 @@ struct dom0_vga_console_info {
        } u;
 };
 
-/* These flags are passed in the 'flags' field of start_info_t. */
-#define SIF_PRIVILEGED    (1<<0)  /* Is the domain privileged? */
-#define SIF_INITDOMAIN    (1<<1)  /* Is this the initial control domain? */
-#define SIF_PM_MASK       (0xFF<<8) /* reserve 1 byte for xen-pm options */
-
 typedef uint64_t cpumap_t;
 
 typedef uint8_t xen_domain_handle_t[16];
-- 
1.7.2.5


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.