diff options
Diffstat (limited to 'include/xen/interface/xen.h')
| -rw-r--r-- | include/xen/interface/xen.h | 95 | 
1 files changed, 77 insertions, 18 deletions
diff --git a/include/xen/interface/xen.h b/include/xen/interface/xen.h index 2befa3e2f1b..de082130ba4 100644 --- a/include/xen/interface/xen.h +++ b/include/xen/interface/xen.h @@ -10,7 +10,6 @@  #define __XEN_PUBLIC_XEN_H__  #include <asm/xen/interface.h> -#include <asm/pvclock-abi.h>  /*   * XEN "SYSTEM CALLS" (a.k.a. HYPERCALLS). @@ -30,7 +29,7 @@  #define __HYPERVISOR_stack_switch          3  #define __HYPERVISOR_set_callbacks         4  #define __HYPERVISOR_fpu_taskswitch        5 -#define __HYPERVISOR_sched_op              6 +#define __HYPERVISOR_sched_op_compat       6  #define __HYPERVISOR_dom0_op               7  #define __HYPERVISOR_set_debugreg          8  #define __HYPERVISOR_get_debugreg          9 @@ -52,12 +51,13 @@  #define __HYPERVISOR_mmuext_op            26  #define __HYPERVISOR_acm_op               27  #define __HYPERVISOR_nmi_op               28 -#define __HYPERVISOR_sched_op_new         29 +#define __HYPERVISOR_sched_op             29  #define __HYPERVISOR_callback_op          30  #define __HYPERVISOR_xenoprof_op          31  #define __HYPERVISOR_event_channel_op     32  #define __HYPERVISOR_physdev_op           33  #define __HYPERVISOR_hvm_op               34 +#define __HYPERVISOR_tmem_op              38  /* Architecture-specific hypercall definitions. */  #define __HYPERVISOR_arch_0               48 @@ -79,6 +79,7 @@  #define VIRQ_CONSOLE    2  /* (DOM0) Bytes received on emergency console. */  #define VIRQ_DOM_EXC    3  /* (DOM0) Exceptional event for some domain.   */  #define VIRQ_DEBUGGER   6  /* (DOM0) A domain has paused for debugging.   */ +#define VIRQ_PCPU_STATE 9  /* (DOM0) PCPU state changed                   */  /* Architecture-specific VIRQ definitions. */  #define VIRQ_ARCH_0    16 @@ -188,7 +189,7 @@ struct mmuext_op {  	unsigned int cmd;  	union {  		/* [UN]PIN_TABLE, NEW_BASEPTR, NEW_USER_BASEPTR */ -		unsigned long mfn; +		xen_pfn_t mfn;  		/* INVLPG_LOCAL, INVLPG_ALL, SET_LDT */  		unsigned long linear_addr;  	} arg1; @@ -274,18 +275,12 @@ DEFINE_GUEST_HANDLE_STRUCT(mmu_update);   * NB. The fields are natural register size for this architecture.   */  struct multicall_entry { -    unsigned long op; -    long result; -    unsigned long args[6]; +    xen_ulong_t op; +    xen_long_t result; +    xen_ulong_t args[6];  };  DEFINE_GUEST_HANDLE_STRUCT(multicall_entry); -/* - * Event channel endpoints per domain: - *  1024 if a long is 32 bits; 4096 if a long is 64 bits. - */ -#define NR_EVENT_CHANNELS (sizeof(unsigned long) * sizeof(unsigned long) * 64) -  struct vcpu_time_info {  	/*  	 * Updates to the following values are preceded and followed @@ -340,7 +335,7 @@ struct vcpu_info {  	 */  	uint8_t evtchn_upcall_pending;  	uint8_t evtchn_upcall_mask; -	unsigned long evtchn_pending_sel; +	xen_ulong_t evtchn_pending_sel;  	struct arch_vcpu_info arch;  	struct pvclock_vcpu_time_info time;  }; /* 64 bytes (x86) */ @@ -383,8 +378,8 @@ struct shared_info {  	 * per-vcpu selector word to be set. Each bit in the selector covers a  	 * 'C long' in the PENDING bitfield array.  	 */ -	unsigned long evtchn_pending[sizeof(unsigned long) * 8]; -	unsigned long evtchn_mask[sizeof(unsigned long) * 8]; +	xen_ulong_t evtchn_pending[sizeof(xen_ulong_t) * 8]; +	xen_ulong_t evtchn_mask[sizeof(xen_ulong_t) * 8];  	/*  	 * Wallclock time: updated only by control software. Guests should base @@ -428,11 +423,11 @@ struct start_info {  	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.                         */ -	unsigned long store_mfn;    /* MACHINE page number of shared page.    */ +	xen_pfn_t store_mfn;        /* MACHINE page number of shared page.    */  	uint32_t store_evtchn;      /* Event channel for store communication. */  	union {  		struct { -			unsigned long mfn;  /* MACHINE page number of console page.   */ +			xen_pfn_t mfn;      /* MACHINE page number of console page.   */  			uint32_t  evtchn;   /* Event channel for console page.        */  		} domU;  		struct { @@ -449,9 +444,50 @@ struct start_info {  	int8_t cmd_line[MAX_GUEST_CMDLINE];  }; +struct dom0_vga_console_info { +	uint8_t video_type; +#define XEN_VGATYPE_TEXT_MODE_3 0x03 +#define XEN_VGATYPE_VESA_LFB    0x23 +#define XEN_VGATYPE_EFI_LFB     0x70 + +	union { +		struct { +			/* Font height, in pixels. */ +			uint16_t font_height; +			/* Cursor location (column, row). */ +			uint16_t cursor_x, cursor_y; +			/* Number of rows and columns (dimensions in characters). */ +			uint16_t rows, columns; +		} text_mode_3; + +		struct { +			/* Width and height, in pixels. */ +			uint16_t width, height; +			/* Bytes per scan line. */ +			uint16_t bytes_per_line; +			/* Bits per pixel. */ +			uint16_t bits_per_pixel; +			/* LFB physical address, and size (in units of 64kB). */ +			uint32_t lfb_base; +			uint32_t lfb_size; +			/* RGB mask offsets and sizes, as defined by VBE 1.2+ */ +			uint8_t  red_pos, red_size; +			uint8_t  green_pos, green_size; +			uint8_t  blue_pos, blue_size; +			uint8_t  rsvd_pos, rsvd_size; + +			/* VESA capabilities (offset 0xa, VESA command 0x4f00). */ +			uint32_t gbl_caps; +			/* Mode attributes (offset 0x0, VESA command 0x4f01). */ +			uint16_t mode_attrs; +		} vesa_lfb; +	} 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; @@ -461,6 +497,29 @@ typedef uint8_t xen_domain_handle_t[16];  #define __mk_unsigned_long(x) x ## UL  #define mk_unsigned_long(x) __mk_unsigned_long(x) +#define TMEM_SPEC_VERSION 1 + +struct tmem_op { +	uint32_t cmd; +	int32_t pool_id; +	union { +		struct {  /* for cmd == TMEM_NEW_POOL */ +			uint64_t uuid[2]; +			uint32_t flags; +		} new; +		struct { +			uint64_t oid[3]; +			uint32_t index; +			uint32_t tmem_offset; +			uint32_t pfn_offset; +			uint32_t len; +			GUEST_HANDLE(void) gmfn; /* guest machine page frame */ +		} gen; +	} u; +}; + +DEFINE_GUEST_HANDLE(u64); +  #else /* __ASSEMBLY__ */  /* In assembly code we cannot use C numeric constant suffixes. */  | 
