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

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



On Thu, 14 Feb 2013, Ian Campbell wrote:
> 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>

Acked-by: 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®.