PERFORCE change 90947 for review
Kip Macy
kmacy at FreeBSD.org
Thu Feb 2 18:29:28 PST 2006
http://perforce.freebsd.org/chv.cgi?CH=90947
Change 90947 by kmacy at kmacy:freebsd7_xen3 on 2006/02/03 02:28:50
sync xen headers with xen-unstable
dom0 interface version has changed since I pulled the headers *sigh*
Affected files ...
.. //depot/projects/xen3/src/sys/i386-xen/include/xen-public/arch-x86_32.h#2 edit
.. //depot/projects/xen3/src/sys/i386-xen/include/xen-public/arch-x86_64.h#2 edit
.. //depot/projects/xen3/src/sys/i386-xen/include/xen-public/dom0_ops.h#2 edit
.. //depot/projects/xen3/src/sys/i386-xen/include/xen-public/version.h#2 edit
.. //depot/projects/xen3/src/sys/i386-xen/include/xen-public/xen.h#2 edit
Differences ...
==== //depot/projects/xen3/src/sys/i386-xen/include/xen-public/arch-x86_32.h#2 (text+ko) ====
@@ -49,10 +49,15 @@
* machine->physical mapping table starts at this address, read-only.
*/
#ifdef CONFIG_X86_PAE
-# define HYPERVISOR_VIRT_START (0xF5800000UL)
+#define __HYPERVISOR_VIRT_START 0xF5800000
#else
-# define HYPERVISOR_VIRT_START (0xFC000000UL)
+#define __HYPERVISOR_VIRT_START 0xFC000000
+#endif
+
+#ifndef HYPERVISOR_VIRT_START
+#define HYPERVISOR_VIRT_START mk_unsigned_long(__HYPERVISOR_VIRT_START)
#endif
+
#ifndef machine_to_phys_mapping
#define machine_to_phys_mapping ((unsigned long *)HYPERVISOR_VIRT_START)
#endif
@@ -109,11 +114,11 @@
/* FPU registers come first so they can be aligned for FXSAVE/FXRSTOR. */
struct { char x[512]; } fpu_ctxt; /* User-level FPU registers */
#define VGCF_I387_VALID (1<<0)
-#define VGCF_VMX_GUEST (1<<1)
+#define VGCF_HVM_GUEST (1<<1)
#define VGCF_IN_KERNEL (1<<2)
unsigned long flags; /* VGCF_* flags */
cpu_user_regs_t user_regs; /* User-level CPU registers */
- trap_info_t trap_ctxt[256]; /* Virtual IDT */
+ struct trap_info trap_ctxt[256]; /* Virtual IDT */
unsigned long ldt_base, ldt_ents; /* LDT (linear address, # ents) */
unsigned long gdt_frames[16], gdt_ents; /* GDT (machine frames, # ents) */
unsigned long kernel_ss, kernel_sp; /* Virtual TSS (only SS1/SP1) */
@@ -130,6 +135,7 @@
unsigned long max_pfn; /* max pfn that appears in table */
/* Frame containing list of mfns containing list of mfns containing p2m. */
unsigned long pfn_to_mfn_frame_list_list;
+ unsigned long nmi_reason;
} arch_shared_info_t;
typedef struct {
@@ -137,7 +143,7 @@
unsigned long pad[5]; /* sizeof(vcpu_info_t) == 64 */
} arch_vcpu_info_t;
-#endif
+#endif /* !__ASSEMBLY__ */
#endif
==== //depot/projects/xen3/src/sys/i386-xen/include/xen-public/arch-x86_64.h#2 (text+ko) ====
@@ -59,9 +59,12 @@
/* And the trap vector is... */
#define TRAP_INSTR "syscall"
+#define __HYPERVISOR_VIRT_START 0xFFFF800000000000
+#define __HYPERVISOR_VIRT_END 0xFFFF880000000000
+
#ifndef HYPERVISOR_VIRT_START
-#define HYPERVISOR_VIRT_START (0xFFFF800000000000UL)
-#define HYPERVISOR_VIRT_END (0xFFFF880000000000UL)
+#define HYPERVISOR_VIRT_START mk_unsigned_long(__HYPERVISOR_VIRT_START)
+#define HYPERVISOR_VIRT_END mk_unsigned_long(__HYPERVISOR_VIRT_END)
#endif
/* Maximum number of virtual CPUs in multi-processor guests. */
@@ -85,11 +88,20 @@
#define SEGBASE_GS_USER_SEL 3 /* Set user %gs specified in base[15:0] */
/*
- * int HYPERVISOR_switch_to_user(void)
+ * int HYPERVISOR_iret(void)
* All arguments are on the kernel stack, in the following format.
* Never returns if successful. Current kernel context is lost.
+ * The saved CS is mapped as follows:
+ * RING0 -> RING3 kernel mode.
+ * RING1 -> RING3 kernel mode.
+ * RING2 -> RING3 kernel mode.
+ * RING3 -> RING3 user mode.
+ * However RING0 indicates that the guest kernel should return to iteself
+ * directly with
+ * orb $3,1*8(%rsp)
+ * iretq
* If flags contains VGCF_IN_SYSCALL:
- * Restore RAX, RIP, RFLAGS, RSP.
+ * Restore RAX, RIP, RFLAGS, RSP.
* Discard R11, RCX, CS, SS.
* Otherwise:
* Restore RAX, R11, RCX, CS:RIP, RFLAGS, SS:RSP.
@@ -97,10 +109,19 @@
*/
/* Guest exited in SYSCALL context? Return to guest with SYSRET? */
#define VGCF_IN_SYSCALL (1<<8)
+struct iret_context {
+ /* Top of stack (%rsp at point of hypercall). */
+ uint64_t rax, r11, rcx, flags, rip, cs, rflags, rsp, ss;
+ /* Bottom of iret stack frame. */
+};
+/*
+ * For compatibility with HYPERVISOR_switch_to_user which is the old
+ * name for HYPERVISOR_iret.
+ */
struct switch_to_user {
/* Top of stack (%rsp at point of hypercall). */
uint64_t rax, r11, rcx, flags, rip, cs, rflags, rsp, ss;
- /* Bottom of switch_to_user stack frame. */
+ /* Bottom of iret stack frame. */
};
/*
@@ -175,11 +196,11 @@
/* FPU registers come first so they can be aligned for FXSAVE/FXRSTOR. */
struct { char x[512]; } fpu_ctxt; /* User-level FPU registers */
#define VGCF_I387_VALID (1<<0)
-#define VGCF_VMX_GUEST (1<<1)
+#define VGCF_HVM_GUEST (1<<1)
#define VGCF_IN_KERNEL (1<<2)
unsigned long flags; /* VGCF_* flags */
cpu_user_regs_t user_regs; /* User-level CPU registers */
- trap_info_t trap_ctxt[256]; /* Virtual IDT */
+ struct trap_info trap_ctxt[256]; /* Virtual IDT */
unsigned long ldt_base, ldt_ents; /* LDT (linear address, # ents) */
unsigned long gdt_frames[16], gdt_ents; /* GDT (machine frames, # ents) */
unsigned long kernel_ss, kernel_sp; /* Virtual TSS (only SS1/SP1) */
@@ -199,6 +220,7 @@
unsigned long max_pfn; /* max pfn that appears in table */
/* Frame containing list of mfns containing list of mfns containing p2m. */
unsigned long pfn_to_mfn_frame_list_list;
+ unsigned long nmi_reason;
} arch_shared_info_t;
typedef struct {
==== //depot/projects/xen3/src/sys/i386-xen/include/xen-public/dom0_ops.h#2 (text+ko) ====
@@ -19,12 +19,12 @@
* This makes sure that old versions of dom0 tools will stop working in a
* well-defined way (rather than crashing the machine, for instance).
*/
-#define DOM0_INTERFACE_VERSION 0xAAAA1014
+#define DOM0_INTERFACE_VERSION 0x03000000
/************************************************************************/
#define DOM0_GETMEMLIST 2
-typedef struct {
+typedef struct dom0_getmemlist {
/* IN variables. */
domid_t domain;
unsigned long max_pfns;
@@ -42,7 +42,7 @@
typedef struct sched_adjdom_cmd dom0_adjustdom_t;
#define DOM0_CREATEDOMAIN 8
-typedef struct {
+typedef struct dom0_createdomain {
/* IN parameters */
uint32_t ssidref;
xen_domain_handle_t handle;
@@ -52,25 +52,25 @@
} dom0_createdomain_t;
#define DOM0_DESTROYDOMAIN 9
-typedef struct {
+typedef struct dom0_destroydomain {
/* IN variables. */
domid_t domain;
} dom0_destroydomain_t;
#define DOM0_PAUSEDOMAIN 10
-typedef struct {
+typedef struct dom0_pausedomain {
/* IN parameters. */
domid_t domain;
} dom0_pausedomain_t;
#define DOM0_UNPAUSEDOMAIN 11
-typedef struct {
+typedef struct dom0_unpausedomain {
/* IN parameters. */
domid_t domain;
} dom0_unpausedomain_t;
#define DOM0_GETDOMAININFO 12
-typedef struct {
+typedef struct dom0_getdomaininfo {
/* IN variables. */
domid_t domain; /* NB. IN/OUT variable. */
/* OUT variables. */
@@ -94,17 +94,17 @@
xen_domain_handle_t handle;
} dom0_getdomaininfo_t;
-#define DOM0_SETDOMAININFO 13
-typedef struct {
+#define DOM0_SETVCPUCONTEXT 13
+typedef struct dom0_setvcpucontext {
/* IN variables. */
domid_t domain;
uint32_t vcpu;
/* IN/OUT parameters */
vcpu_guest_context_t *ctxt;
-} dom0_setdomaininfo_t;
+} dom0_setvcpucontext_t;
#define DOM0_MSR 15
-typedef struct {
+typedef struct dom0_msr {
/* IN variables. */
uint32_t write;
cpumap_t cpu_mask;
@@ -121,7 +121,7 @@
* 1 January, 1970 if the current system time was <system_time>.
*/
#define DOM0_SETTIME 17
-typedef struct {
+typedef struct dom0_settime {
/* IN variables. */
uint32_t secs;
uint32_t nsecs;
@@ -139,20 +139,20 @@
#define LTAB_MASK XTAB
#define LTABTYPE_MASK (0x7<<28)
-typedef struct {
+typedef struct dom0_getpageframeinfo {
/* IN variables. */
- unsigned long pfn; /* Machine page frame number to query. */
+ unsigned long mfn; /* Machine page frame number to query. */
domid_t domain; /* To which domain does the frame belong? */
/* OUT variables. */
/* Is the page PINNED to a type? */
- uint32_t type; /* see above type defs */
+ uint32_t type; /* see above type defs */
} dom0_getpageframeinfo_t;
/*
* Read console content from Xen buffer ring.
*/
#define DOM0_READCONSOLE 19
-typedef struct {
+typedef struct dom0_readconsole {
/* IN variables. */
uint32_t clear; /* Non-zero -> clear after reading. */
/* IN/OUT variables. */
@@ -163,17 +163,17 @@
/*
* Set which physical cpus a vcpu can execute on.
*/
-#define DOM0_PINCPUDOMAIN 20
-typedef struct {
+#define DOM0_SETVCPUAFFINITY 20
+typedef struct dom0_setvcpuaffinity {
/* IN variables. */
domid_t domain;
uint32_t vcpu;
cpumap_t cpumap;
-} dom0_pincpudomain_t;
+} dom0_setvcpuaffinity_t;
/* Get trace buffers machine base address */
#define DOM0_TBUFCONTROL 21
-typedef struct {
+typedef struct dom0_tbufcontrol {
/* IN variables */
#define DOM0_TBUF_GET_INFO 0
#define DOM0_TBUF_SET_CPU_MASK 1
@@ -194,7 +194,7 @@
* Get physical information about the host machine
*/
#define DOM0_PHYSINFO 22
-typedef struct {
+typedef struct dom0_physinfo {
uint32_t threads_per_core;
uint32_t cores_per_socket;
uint32_t sockets_per_node;
@@ -209,7 +209,7 @@
* Get the ID of the current scheduler.
*/
#define DOM0_SCHED_ID 24
-typedef struct {
+typedef struct dom0_sched_id {
/* OUT variable */
uint32_t sched_id;
} dom0_sched_id_t;
@@ -228,15 +228,14 @@
#define DOM0_SHADOW_CONTROL_OP_CLEAN 11
#define DOM0_SHADOW_CONTROL_OP_PEEK 12
-typedef struct dom0_shadow_control
-{
+typedef struct dom0_shadow_control_stats {
uint32_t fault_count;
uint32_t dirty_count;
uint32_t dirty_net_count;
uint32_t dirty_block_count;
} dom0_shadow_control_stats_t;
-typedef struct {
+typedef struct dom0_shadow_control {
/* IN variables. */
domid_t domain;
uint32_t op;
@@ -248,14 +247,14 @@
} dom0_shadow_control_t;
#define DOM0_SETDOMAINMAXMEM 28
-typedef struct {
+typedef struct dom0_setdomainmaxmem {
/* IN variables. */
domid_t domain;
unsigned long max_memkb;
} dom0_setdomainmaxmem_t;
#define DOM0_GETPAGEFRAMEINFO2 29 /* batched interface */
-typedef struct {
+typedef struct dom0_getpageframeinfo2 {
/* IN variables. */
domid_t domain;
unsigned long num;
@@ -264,17 +263,17 @@
} dom0_getpageframeinfo2_t;
/*
- * Request memory range (@pfn, @pfn+ at nr_pfns-1) to have type @type.
+ * Request memory range (@mfn, @mfn+ at nr_mfns-1) to have type @type.
* On x86, @type is an architecture-defined MTRR memory type.
* On success, returns the MTRR that was used (@reg) and a handle that can
* be passed to DOM0_DEL_MEMTYPE to accurately tear down the new setting.
* (x86-specific).
*/
#define DOM0_ADD_MEMTYPE 31
-typedef struct {
+typedef struct dom0_add_memtype {
/* IN variables. */
- unsigned long pfn;
- unsigned long nr_pfns;
+ unsigned long mfn;
+ unsigned long nr_mfns;
uint32_t type;
/* OUT variables. */
uint32_t handle;
@@ -289,7 +288,7 @@
* (x86-specific).
*/
#define DOM0_DEL_MEMTYPE 32
-typedef struct {
+typedef struct dom0_del_memtype {
/* IN variables. */
uint32_t handle;
uint32_t reg;
@@ -297,12 +296,12 @@
/* Read current type of an MTRR (x86-specific). */
#define DOM0_READ_MEMTYPE 33
-typedef struct {
+typedef struct dom0_read_memtype {
/* IN variables. */
uint32_t reg;
/* OUT variables. */
- unsigned long pfn;
- unsigned long nr_pfns;
+ unsigned long mfn;
+ unsigned long nr_mfns;
uint32_t type;
} dom0_read_memtype_t;
@@ -311,12 +310,12 @@
/* Sub-operations: */
#define DOM0_PERFCCONTROL_OP_RESET 1 /* Reset all counters to zero. */
#define DOM0_PERFCCONTROL_OP_QUERY 2 /* Get perfctr information. */
-typedef struct {
+typedef struct dom0_perfc_desc {
uint8_t name[80]; /* name of perf counter */
uint32_t nr_vals; /* number of values for this counter */
uint32_t vals[64]; /* array of values */
} dom0_perfc_desc_t;
-typedef struct {
+typedef struct dom0_perfccontrol {
/* IN variables. */
uint32_t op; /* DOM0_PERFCCONTROL_OP_??? */
/* OUT variables. */
@@ -325,14 +324,14 @@
} dom0_perfccontrol_t;
#define DOM0_MICROCODE 35
-typedef struct {
+typedef struct dom0_microcode {
/* IN variables. */
void *data; /* Pointer to microcode data */
uint32_t length; /* Length of microcode data. */
} dom0_microcode_t;
#define DOM0_IOPORT_PERMISSION 36
-typedef struct {
+typedef struct dom0_ioport_permission {
domid_t domain; /* domain to be affected */
uint32_t first_port; /* first port int range */
uint32_t nr_ports; /* size of port range */
@@ -340,7 +339,7 @@
} dom0_ioport_permission_t;
#define DOM0_GETVCPUCONTEXT 37
-typedef struct {
+typedef struct dom0_getvcpucontext {
/* IN variables. */
domid_t domain; /* domain to be affected */
uint32_t vcpu; /* vcpu # */
@@ -349,7 +348,7 @@
} dom0_getvcpucontext_t;
#define DOM0_GETVCPUINFO 43
-typedef struct {
+typedef struct dom0_getvcpuinfo {
/* IN variables. */
domid_t domain; /* domain to be affected */
uint32_t vcpu; /* vcpu # */
@@ -363,7 +362,7 @@
} dom0_getvcpuinfo_t;
#define DOM0_GETDOMAININFOLIST 38
-typedef struct {
+typedef struct dom0_getdomaininfolist {
/* IN variables. */
domid_t first_domain;
uint32_t max_domains;
@@ -374,13 +373,13 @@
#define DOM0_PLATFORM_QUIRK 39
#define QUIRK_NOIRQBALANCING 1
-typedef struct {
+typedef struct dom0_platform_quirk {
/* IN variables. */
uint32_t quirk_id;
} dom0_platform_quirk_t;
#define DOM0_PHYSICAL_MEMORY_MAP 40
-typedef struct {
+typedef struct dom0_physical_memory_map {
/* IN variables. */
uint32_t max_map_entries;
/* OUT variables. */
@@ -393,61 +392,85 @@
} dom0_physical_memory_map_t;
#define DOM0_MAX_VCPUS 41
-typedef struct {
+typedef struct dom0_max_vcpus {
domid_t domain; /* domain to be affected */
uint32_t max; /* maximum number of vcpus */
} dom0_max_vcpus_t;
#define DOM0_SETDOMAINHANDLE 44
-typedef struct {
+typedef struct dom0_setdomainhandle {
domid_t domain;
xen_domain_handle_t handle;
} dom0_setdomainhandle_t;
-#define DOM0_SETPTRACE 45
-typedef struct {
+#define DOM0_SETDEBUGGING 45
+typedef struct dom0_setdebugging {
domid_t domain;
uint8_t enable;
-} dom0_setptrace_t;
+} dom0_setdebugging_t;
+
+#define DOM0_IRQ_PERMISSION 46
+typedef struct dom0_irq_permission {
+ domid_t domain; /* domain to be affected */
+ uint8_t pirq;
+ uint8_t allow_access; /* flag to specify enable/disable of IRQ access */
+} dom0_irq_permission_t;
-typedef struct {
+#define DOM0_IOMEM_PERMISSION 47
+typedef struct dom0_iomem_permission {
+ domid_t domain; /* domain to be affected */
+ unsigned long first_mfn; /* first page (physical page number) in range */
+ unsigned long nr_mfns; /* number of pages in range (>0) */
+ uint8_t allow_access; /* allow (!0) or deny (0) access to range? */
+} dom0_iomem_permission_t;
+
+#define DOM0_HYPERCALL_INIT 48
+typedef struct dom0_hypercall_init {
+ domid_t domain; /* domain to be affected */
+ unsigned long mfn; /* machine frame to be initialised */
+} dom0_hypercall_init_t;
+
+typedef struct dom0_op {
uint32_t cmd;
uint32_t interface_version; /* DOM0_INTERFACE_VERSION */
union {
- dom0_createdomain_t createdomain;
- dom0_pausedomain_t pausedomain;
- dom0_unpausedomain_t unpausedomain;
- dom0_destroydomain_t destroydomain;
- dom0_getmemlist_t getmemlist;
- dom0_schedctl_t schedctl;
- dom0_adjustdom_t adjustdom;
- dom0_setdomaininfo_t setdomaininfo;
- dom0_getdomaininfo_t getdomaininfo;
- dom0_getpageframeinfo_t getpageframeinfo;
- dom0_msr_t msr;
- dom0_settime_t settime;
- dom0_readconsole_t readconsole;
- dom0_pincpudomain_t pincpudomain;
- dom0_tbufcontrol_t tbufcontrol;
- dom0_physinfo_t physinfo;
- dom0_sched_id_t sched_id;
- dom0_shadow_control_t shadow_control;
- dom0_setdomainmaxmem_t setdomainmaxmem;
- dom0_getpageframeinfo2_t getpageframeinfo2;
- dom0_add_memtype_t add_memtype;
- dom0_del_memtype_t del_memtype;
- dom0_read_memtype_t read_memtype;
- dom0_perfccontrol_t perfccontrol;
- dom0_microcode_t microcode;
- dom0_ioport_permission_t ioport_permission;
- dom0_getvcpucontext_t getvcpucontext;
- dom0_getvcpuinfo_t getvcpuinfo;
- dom0_getdomaininfolist_t getdomaininfolist;
- dom0_platform_quirk_t platform_quirk;
- dom0_physical_memory_map_t physical_memory_map;
- dom0_max_vcpus_t max_vcpus;
- dom0_setdomainhandle_t setdomainhandle;
- dom0_setptrace_t setptrace;
+ struct dom0_createdomain createdomain;
+ struct dom0_pausedomain pausedomain;
+ struct dom0_unpausedomain unpausedomain;
+ struct dom0_destroydomain destroydomain;
+ struct dom0_getmemlist getmemlist;
+ struct sched_ctl_cmd schedctl;
+ struct sched_adjdom_cmd adjustdom;
+ struct dom0_setvcpucontext setvcpucontext;
+ struct dom0_getdomaininfo getdomaininfo;
+ struct dom0_getpageframeinfo getpageframeinfo;
+ struct dom0_msr msr;
+ struct dom0_settime settime;
+ struct dom0_readconsole readconsole;
+ struct dom0_setvcpuaffinity setvcpuaffinity;
+ struct dom0_tbufcontrol tbufcontrol;
+ struct dom0_physinfo physinfo;
+ struct dom0_sched_id sched_id;
+ struct dom0_shadow_control shadow_control;
+ struct dom0_setdomainmaxmem setdomainmaxmem;
+ struct dom0_getpageframeinfo2 getpageframeinfo2;
+ struct dom0_add_memtype add_memtype;
+ struct dom0_del_memtype del_memtype;
+ struct dom0_read_memtype read_memtype;
+ struct dom0_perfccontrol perfccontrol;
+ struct dom0_microcode microcode;
+ struct dom0_ioport_permission ioport_permission;
+ struct dom0_getvcpucontext getvcpucontext;
+ struct dom0_getvcpuinfo getvcpuinfo;
+ struct dom0_getdomaininfolist getdomaininfolist;
+ struct dom0_platform_quirk platform_quirk;
+ struct dom0_physical_memory_map physical_memory_map;
+ struct dom0_max_vcpus max_vcpus;
+ struct dom0_setdomainhandle setdomainhandle;
+ struct dom0_setdebugging setdebugging;
+ struct dom0_irq_permission irq_permission;
+ struct dom0_iomem_permission iomem_permission;
+ struct dom0_hypercall_init hypercall_init;
uint8_t pad[128];
} u;
} dom0_op_t;
==== //depot/projects/xen3/src/sys/i386-xen/include/xen-public/version.h#2 (text+ko) ====
@@ -39,6 +39,18 @@
unsigned long virt_start;
} xen_platform_parameters_t;
+#define XENVER_get_features 6
+typedef struct xen_feature_info {
+ unsigned int submap_idx; /* IN: which 32-bit submap to return */
+ uint32_t submap; /* OUT: 32-bit submap */
+} xen_feature_info_t;
+
+#define XENFEAT_writable_page_tables 0
+#define XENFEAT_writable_descriptor_tables 1
+#define XENFEAT_auto_translated_physmap 2
+
+#define XENFEAT_NR_SUBMAPS 1
+
#endif /* __XEN_PUBLIC_VERSION_H__ */
/*
==== //depot/projects/xen3/src/sys/i386-xen/include/xen-public/xen.h#2 (text+ko) ====
@@ -12,7 +12,7 @@
#if defined(__i386__)
#include <machine/xen-public/arch-x86_32.h>
#elif defined(__x86_64__)
-#include "arch-x86_64.h"
+#include <machine/xen-public/arch-x86_64.h>
#elif defined(__ia64__)
#include "arch-ia64.h"
#else
@@ -53,12 +53,14 @@
#define __HYPERVISOR_grant_table_op 20
#define __HYPERVISOR_vm_assist 21
#define __HYPERVISOR_update_va_mapping_otherdomain 22
-#define __HYPERVISOR_switch_vm86 23 /* x86/32 only */
-#define __HYPERVISOR_switch_to_user 23 /* x86/64 only */
+#define __HYPERVISOR_iret 23 /* x86 only */
+#define __HYPERVISOR_switch_vm86 23 /* x86/32 only (obsolete name) */
+#define __HYPERVISOR_switch_to_user 23 /* x86/64 only (obsolete name) */
#define __HYPERVISOR_vcpu_op 24
#define __HYPERVISOR_set_segment_base 25 /* x86/64 only */
#define __HYPERVISOR_mmuext_op 26
#define __HYPERVISOR_acm_op 27
+#define __HYPERVISOR_nmi_op 28
/*
* VIRTUAL INTERRUPTS
@@ -67,12 +69,10 @@
*/
#define VIRQ_TIMER 0 /* Timebase update, and/or requested timeout. */
#define VIRQ_DEBUG 1 /* Request guest to dump debug info. */
-#define VIRQ_CONSOLE 2 /* (DOM0) bytes received on emergency console. */
+#define VIRQ_CONSOLE 2 /* (DOM0) Bytes received on emergency console. */
#define VIRQ_DOM_EXC 3 /* (DOM0) Exceptional event for some domain. */
-#define VIRQ_PARITY_ERR 4 /* (DOM0) NMI parity error. */
-#define VIRQ_IO_ERR 5 /* (DOM0) NMI I/O error. */
#define VIRQ_DEBUGGER 6 /* (DOM0) A domain has paused for debugging. */
-#define NR_VIRQS 7
+#define NR_VIRQS 8
/*
* MMU-UPDATE REQUESTS
@@ -144,10 +144,6 @@
* cmd: MMUEXT_SET_LDT
* linear_addr: Linear address of LDT base (NB. must be page-aligned).
* nr_ents: Number of entries in LDT.
- *
- * cmd: MMUEXT_REASSIGN_PAGE
- * mfn: Machine frame number to be reassigned to the FD.
- * (NB. page must currently belong to the calling domain).
*/
#define MMUEXT_PIN_L1_TABLE 0
#define MMUEXT_PIN_L2_TABLE 1
@@ -163,14 +159,13 @@
#define MMUEXT_INVLPG_ALL 11
#define MMUEXT_FLUSH_CACHE 12
#define MMUEXT_SET_LDT 13
-#define MMUEXT_REASSIGN_PAGE 14
#define MMUEXT_NEW_USER_BASEPTR 15
#ifndef __ASSEMBLY__
struct mmuext_op {
unsigned int cmd;
union {
- /* [UN]PIN_TABLE, NEW_BASEPTR, NEW_USER_BASEPTR, REASSIGN_PAGE */
+ /* [UN]PIN_TABLE, NEW_BASEPTR, NEW_USER_BASEPTR */
unsigned long mfn;
/* INVLPG_LOCAL, INVLPG_ALL, SET_LDT */
unsigned long linear_addr;
@@ -244,8 +239,7 @@
* Send an array of these to HYPERVISOR_mmu_update().
* NB. The fields are natural pointer/address size for this architecture.
*/
-typedef struct
-{
+typedef struct mmu_update {
uint64_t ptr; /* Machine address of PTE. */
uint64_t val; /* New contents of PTE. */
} mmu_update_t;
@@ -254,8 +248,7 @@
* Send an array of these to HYPERVISOR_multicall().
* NB. The fields are natural register size for this architecture.
*/
-typedef struct
-{
+typedef struct multicall_entry {
unsigned long op, result;
unsigned long args[6];
} multicall_entry_t;
@@ -430,6 +423,15 @@
typedef uint8_t xen_domain_handle_t[16];
+/* Turn a plain number into a C unsigned long constant. */
+#define __mk_unsigned_long(x) x ## UL
+#define mk_unsigned_long(x) __mk_unsigned_long(x)
+
+#else /* __ASSEMBLY__ */
+
+/* In assembly code we cannot use C numeric constant suffixes. */
+#define mk_unsigned_long(x) x
+
#endif /* !__ASSEMBLY__ */
#endif /* __XEN_PUBLIC_XEN_H__ */
More information about the p4-projects
mailing list