# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1282809042 -3600
# Node ID 6f7bda25a4de7a4186d65bc0e8e816b1c3664b71
# Parent 53705d74a41b4d86238e6b275893fba95fd13550
Update Xen public headers.
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
---
include/xen/interface/arch-x86/xen-mca.h | 17 +++++++++++++++++
include/xen/interface/domctl.h | 5 -----
include/xen/interface/features.h | 6 ++++++
include/xen/interface/hvm/hvm_op.h | 27 +++++++++++++++++++++++++++
include/xen/interface/hvm/params.h | 9 ++++++++-
include/xen/interface/io/ring.h | 15 ++++++++++++---
include/xen/interface/io/xs_wire.h | 3 ++-
include/xen/interface/mem_event.h | 10 +++++-----
include/xen/interface/memory.h | 3 +++
include/xen/interface/sched.h | 24 ++++++++++++++++++++++++
include/xen/interface/sysctl.h | 28 ++++++++++++++++++----------
include/xen/interface/trace.h | 3 +++
include/xen/interface/xen.h | 18 ++++++++++++++++--
include/xen/interface/xenoprof.h | 3 ++-
14 files changed, 143 insertions(+), 28 deletions(-)
diff -r 53705d74a41b -r 6f7bda25a4de include/xen/interface/arch-x86/xen-mca.h
--- a/include/xen/interface/arch-x86/xen-mca.h Tue Aug 10 15:47:41 2010 +0100
+++ b/include/xen/interface/arch-x86/xen-mca.h Thu Aug 26 08:50:42 2010 +0100
@@ -404,6 +404,20 @@ struct xen_mc_mceinject {
unsigned int mceinj_cpunr; /* target processor id */
};
+#if defined(__XEN__) || defined(__XEN_TOOLS__)
+#define XEN_MC_inject_v2 6
+#define XEN_MC_INJECT_TYPE_MASK 0x7
+#define XEN_MC_INJECT_TYPE_MCE 0x0
+#define XEN_MC_INJECT_TYPE_CMCI 0x1
+
+#define XEN_MC_INJECT_CPU_BROADCAST 0x8
+
+struct xen_mc_inject_v2 {
+ uint32_t flags;
+ struct xenctl_cpumap cpumap;
+};
+#endif
+
struct xen_mc {
uint32_t cmd;
uint32_t interface_version; /* XEN_MCA_INTERFACE_VERSION */
@@ -413,6 +427,9 @@ struct xen_mc {
struct xen_mc_physcpuinfo mc_physcpuinfo;
struct xen_mc_msrinject mc_msrinject;
struct xen_mc_mceinject mc_mceinject;
+#if defined(__XEN__) || defined(__XEN_TOOLS__)
+ struct xen_mc_inject_v2 mc_inject_v2;
+#endif
} u;
};
typedef struct xen_mc xen_mc_t;
diff -r 53705d74a41b -r 6f7bda25a4de include/xen/interface/domctl.h
--- a/include/xen/interface/domctl.h Tue Aug 10 15:47:41 2010 +0100
+++ b/include/xen/interface/domctl.h Thu Aug 26 08:50:42 2010 +0100
@@ -36,11 +36,6 @@
#include "grant_table.h"
#define XEN_DOMCTL_INTERFACE_VERSION 0x00000007
-
-struct xenctl_cpumap {
- XEN_GUEST_HANDLE_64(uint8) bitmap;
- uint32_t nr_cpus;
-};
/*
* NB. xen_domctl.domain is an IN/OUT parameter for this operation.
diff -r 53705d74a41b -r 6f7bda25a4de include/xen/interface/features.h
--- a/include/xen/interface/features.h Tue Aug 10 15:47:41 2010 +0100
+++ b/include/xen/interface/features.h Thu Aug 26 08:50:42 2010 +0100
@@ -68,6 +68,12 @@
*/
#define XENFEAT_gnttab_map_avail_bits 7
+/* x86: Does this Xen host support the HVM callback vector type? */
+#define XENFEAT_hvm_callback_vector 8
+
+/* x86: pvclock algorithm is safe to use on HVM */
+#define XENFEAT_hvm_safe_pvclock 9
+
#define XENFEAT_NR_SUBMAPS 1
#endif /* __XEN_PUBLIC_FEATURES_H__ */
diff -r 53705d74a41b -r 6f7bda25a4de include/xen/interface/hvm/hvm_op.h
--- a/include/xen/interface/hvm/hvm_op.h Tue Aug 10 15:47:41 2010 +0100
+++ b/include/xen/interface/hvm/hvm_op.h Thu Aug 26 08:50:42 2010 +0100
@@ -22,6 +22,7 @@
#define __XEN_PUBLIC_HVM_HVM_OP_H__
#include "../xen.h"
+#include "../trace.h"
/* Get/set subcommands: extra argument == pointer to xen_hvm_param struct. */
#define HVMOP_set_param 0
@@ -127,6 +128,32 @@ typedef struct xen_hvm_set_mem_type xen_
typedef struct xen_hvm_set_mem_type xen_hvm_set_mem_type_t;
DEFINE_XEN_GUEST_HANDLE(xen_hvm_set_mem_type_t);
+/* Hint from PV drivers for pagetable destruction. */
+#define HVMOP_pagetable_dying 9
+struct xen_hvm_pagetable_dying {
+ /* Domain with a pagetable about to be destroyed. */
+ domid_t domid;
+ /* guest physical address of the toplevel pagetable dying */
+ uint64_aligned_t gpa;
+};
+typedef struct xen_hvm_pagetable_dying xen_hvm_pagetable_dying_t;
+DEFINE_XEN_GUEST_HANDLE(xen_hvm_pagetable_dying_t);
+
+/* Get the current Xen time, in nanoseconds since system boot. */
+#define HVMOP_get_time 10
+struct xen_hvm_get_time {
+ uint64_t now; /* OUT */
+};
+typedef struct xen_hvm_get_time xen_hvm_get_time_t;
+DEFINE_XEN_GUEST_HANDLE(xen_hvm_get_time_t);
+
+#define HVMOP_xentrace 11
+struct xen_hvm_xentrace {
+ uint16_t event, extra_bytes;
+ uint8_t extra[TRACE_EXTRA_MAX * sizeof(uint32_t)];
+};
+typedef struct xen_hvm_xentrace xen_hvm_xentrace_t;
+DEFINE_XEN_GUEST_HANDLE(xen_hvm_xentrace_t);
#endif /* defined(__XEN__) || defined(__XEN_TOOLS__) */
diff -r 53705d74a41b -r 6f7bda25a4de include/xen/interface/hvm/params.h
--- a/include/xen/interface/hvm/params.h Tue Aug 10 15:47:41 2010 +0100
+++ b/include/xen/interface/hvm/params.h Thu Aug 26 08:50:42 2010 +0100
@@ -33,6 +33,9 @@
* val[63:56] == 1: val[55:0] is a delivery PCI INTx line, as follows:
* Domain = val[47:32], Bus = val[31:16],
* DevFn = val[15: 8], IntX = val[ 1: 0]
+ * val[63:56] == 2: val[7:0] is a vector number, check for
+ * XENFEAT_hvm_callback_vector to know if this delivery
+ * method is available.
* If val == 0 then CPU0 event-channel notifications are not delivered.
*/
#define HVM_PARAM_CALLBACK_IRQ 0
@@ -106,6 +109,10 @@
/* Boolean: Enable aligning all periodic vpts to reduce interrupts */
#define HVM_PARAM_VPT_ALIGN 16
-#define HVM_NR_PARAMS 17
+/* Console debug shared memory ring and event channel */
+#define HVM_PARAM_CONSOLE_PFN 17
+#define HVM_PARAM_CONSOLE_EVTCHN 18
+
+#define HVM_NR_PARAMS 19
#endif /* __XEN_PUBLIC_HVM_PARAMS_H__ */
diff -r 53705d74a41b -r 6f7bda25a4de include/xen/interface/io/ring.h
--- a/include/xen/interface/io/ring.h Tue Aug 10 15:47:41 2010 +0100
+++ b/include/xen/interface/io/ring.h Thu Aug 26 08:50:42 2010 +0100
@@ -103,8 +103,16 @@ struct __name##_sring {
struct __name##_sring { \
RING_IDX req_prod, req_event; \
RING_IDX rsp_prod, rsp_event; \
- uint8_t netfront_smartpoll_active; \
- uint8_t pad[47]; \
+ union { \
+ struct { \
+ uint8_t smartpoll_active; \
+ } netif; \
+ struct { \
+ uint8_t msg; \
+ } tapif_user; \
+ uint8_t pvt_pad[4]; \
+ } private; \
+ uint8_t __pad[44]; \
union __name##_sring_entry ring[1]; /* variable-length */ \
}; \
\
@@ -148,7 +156,8 @@ typedef struct __name##_back_ring __name
#define SHARED_RING_INIT(_s) do { \
(_s)->req_prod = (_s)->rsp_prod = 0; \
(_s)->req_event = (_s)->rsp_event = 1; \
- (void)memset((_s)->pad, 0, sizeof((_s)->pad)); \
+ (void)memset((_s)->private.pvt_pad, 0, sizeof((_s)->private.pvt_pad)); \
+ (void)memset((_s)->__pad, 0, sizeof((_s)->__pad)); \
} while(0)
#define FRONT_RING_INIT(_r, _s, __size) do { \
diff -r 53705d74a41b -r 6f7bda25a4de include/xen/interface/io/xs_wire.h
--- a/include/xen/interface/io/xs_wire.h Tue Aug 10 15:47:41 2010 +0100
+++ b/include/xen/interface/io/xs_wire.h Thu Aug 26 08:50:42 2010 +0100
@@ -47,7 +47,8 @@ enum xsd_sockmsg_type
XS_ERROR,
XS_IS_DOMAIN_INTRODUCED,
XS_RESUME,
- XS_SET_TARGET
+ XS_SET_TARGET,
+ XS_RESTRICT
};
#define XS_WRITE_NONE "NONE"
diff -r 53705d74a41b -r 6f7bda25a4de include/xen/interface/mem_event.h
--- a/include/xen/interface/mem_event.h Tue Aug 10 15:47:41 2010 +0100
+++ b/include/xen/interface/mem_event.h Thu Aug 26 08:50:42 2010 +0100
@@ -40,14 +40,14 @@
typedef struct mem_event_shared_page {
- int port;
+ uint32_t port;
} mem_event_shared_page_t;
typedef struct mem_event_st {
- unsigned long gfn;
- unsigned long offset;
- unsigned long p2mt;
- int vcpu_id;
+ uint64_t gfn;
+ uint64_t offset;
+ uint32_t p2mt;
+ int32_t vcpu_id;
uint64_t flags;
} mem_event_request_t, mem_event_response_t;
diff -r 53705d74a41b -r 6f7bda25a4de include/xen/interface/memory.h
--- a/include/xen/interface/memory.h Tue Aug 10 15:47:41 2010 +0100
+++ b/include/xen/interface/memory.h Thu Aug 26 08:50:42 2010 +0100
@@ -52,6 +52,9 @@
#define XENMEMF_get_node(x) ((((x) >> 8) - 1) & 0xffu)
/* Flag to populate physmap with populate-on-demand entries */
#define XENMEMF_populate_on_demand (1<<16)
+/* Flag to request allocation only from the node specified */
+#define XENMEMF_exact_node_request (1<<17)
+#define XENMEMF_exact_node(n) (XENMEMF_node(n) | XENMEMF_exact_node_request)
#endif
struct xen_memory_reservation {
diff -r 53705d74a41b -r 6f7bda25a4de include/xen/interface/sched.h
--- a/include/xen/interface/sched.h Tue Aug 10 15:47:41 2010 +0100
+++ b/include/xen/interface/sched.h Thu Aug 26 08:50:42 2010 +0100
@@ -99,6 +99,29 @@ DEFINE_XEN_GUEST_HANDLE(sched_remote_shu
DEFINE_XEN_GUEST_HANDLE(sched_remote_shutdown_t);
/*
+ * Latch a shutdown code, so that when the domain later shuts down it
+ * reports this code to the control tools.
+ * @arg == as for SCHEDOP_shutdown.
+ */
+#define SCHEDOP_shutdown_code 5
+
+/*
+ * Setup, poke and destroy a domain watchdog timer.
+ * @arg == pointer to sched_watchdog structure.
+ * With id == 0, setup a domain watchdog timer to cause domain shutdown
+ * after timeout, returns watchdog id.
+ * With id != 0 and timeout == 0, destroy domain watchdog timer.
+ * With id != 0 and timeout != 0, poke watchdog timer and set new timeout.
+ */
+#define SCHEDOP_watchdog 6
+struct sched_watchdog {
+ uint32_t id; /* watchdog ID */
+ uint32_t timeout; /* timeout */
+};
+typedef struct sched_watchdog sched_watchdog_t;
+DEFINE_XEN_GUEST_HANDLE(sched_watchdog_t);
+
+/*
* Reason codes for SCHEDOP_shutdown. These may be interpreted by control
* software to determine the appropriate action. For the most part, Xen does
* not care about the shutdown code.
@@ -107,6 +130,7 @@ DEFINE_XEN_GUEST_HANDLE(sched_remote_shu
#define SHUTDOWN_reboot 1 /* Clean up, kill, and then restart. */
#define SHUTDOWN_suspend 2 /* Clean up, save suspend info, kill. */
#define SHUTDOWN_crash 3 /* Tell controller we've crashed. */
+#define SHUTDOWN_watchdog 4 /* Restart because watchdog time expired. */
#endif /* __XEN_PUBLIC_SCHED_H__ */
diff -r 53705d74a41b -r 6f7bda25a4de include/xen/interface/sysctl.h
--- a/include/xen/interface/sysctl.h Tue Aug 10 15:47:41 2010 +0100
+++ b/include/xen/interface/sysctl.h Thu Aug 26 08:50:42 2010 +0100
@@ -93,8 +93,10 @@ struct xen_sysctl_physinfo {
struct xen_sysctl_physinfo {
uint32_t threads_per_core;
uint32_t cores_per_socket;
- uint32_t nr_cpus, max_cpu_id;
- uint32_t nr_nodes, max_node_id;
+ uint32_t nr_cpus; /* # CPUs currently online */
+ uint32_t max_cpu_id; /* Largest possible CPU ID on this host */
+ uint32_t nr_nodes; /* # nodes currently online */
+ uint32_t max_node_id; /* Largest possible node ID on this host */
uint32_t cpu_khz;
uint64_aligned_t total_pages;
uint64_aligned_t free_pages;
@@ -223,6 +225,11 @@ struct pm_cx_stat {
uint64_aligned_t idle_time; /* idle time from boot */
XEN_GUEST_HANDLE_64(uint64) triggers; /* Cx trigger counts */
XEN_GUEST_HANDLE_64(uint64) residencies; /* Cx residencies */
+ uint64_aligned_t pc3;
+ uint64_aligned_t pc6;
+ uint64_aligned_t pc7;
+ uint64_aligned_t cc3;
+ uint64_aligned_t cc6;
};
struct xen_sysctl_get_pmstat {
@@ -463,17 +470,17 @@ struct xen_sysctl_topologyinfo {
* IN: maximum addressable entry in the caller-provided arrays.
* OUT: largest cpu identifier in the system.
* If OUT is greater than IN then the arrays are truncated!
+ * If OUT is leass than IN then the array tails are not written by sysctl.
*/
uint32_t max_cpu_index;
/*
- * If not NULL, this array is filled with core/socket/node identifier for
- * each cpu.
+ * If not NULL, these arrays are filled with core/socket/node identifier
+ * for each cpu.
* If a cpu has no core/socket/node information (e.g., cpu not present)
- * then the sentinel value ~0u is written.
- * The size of this array is specified by the caller in @max_cpu_index.
- * If the actual @max_cpu_index is smaller than the array then the trailing
- * elements of the array will not be written by the sysctl.
+ * then the sentinel value ~0u is written to each array.
+ * The number of array elements written by the sysctl is:
+ * min(@max_cpu_index_IN,@max_cpu_index_OUT)+1
*/
XEN_GUEST_HANDLE_64(uint32) cpu_to_core;
XEN_GUEST_HANDLE_64(uint32) cpu_to_socket;
@@ -540,8 +547,9 @@ DEFINE_XEN_GUEST_HANDLE(xen_sysctl_cpupo
#define XEN_SYSCTL_SCHEDOP_putinfo 0
#define XEN_SYSCTL_SCHEDOP_getinfo 1
struct xen_sysctl_scheduler_op {
- uint32_t sched_id; /* XEN_SCHEDULER_* (domctl.h) */
- uint32_t cmd; /* XEN_SYSCTL_SCHEDOP_* */
+ uint32_t cpupool_id; /* Cpupool whose scheduler is to be targetted. */
+ uint32_t sched_id; /* XEN_SCHEDULER_* (domctl.h) */
+ uint32_t cmd; /* XEN_SYSCTL_SCHEDOP_* */
union {
} u;
};
diff -r 53705d74a41b -r 6f7bda25a4de include/xen/interface/trace.h
--- a/include/xen/interface/trace.h Tue Aug 10 15:47:41 2010 +0100
+++ b/include/xen/interface/trace.h Thu Aug 26 08:50:42 2010 +0100
@@ -39,6 +39,7 @@
#define TRC_PV 0x0020f000 /* Xen PV traces */
#define TRC_SHADOW 0x0040f000 /* Xen shadow tracing */
#define TRC_PM 0x0080f000 /* Xen power management trace */
+#define TRC_GUEST 0x0800f000 /* Guest-generated traces */
#define TRC_ALL 0x0ffff000
#define TRC_HD_TO_EVENT(x) ((x)&0x0fffffff)
#define TRC_HD_CYCLE_FLAG (1UL<<31)
@@ -79,6 +80,7 @@
#define TRC_SCHED_DOM_TIMER_FN (TRC_SCHED_VERBOSE + 13)
#define TRC_SCHED_SWITCH_INFPREV (TRC_SCHED_VERBOSE + 14)
#define TRC_SCHED_SWITCH_INFNEXT (TRC_SCHED_VERBOSE + 15)
+#define TRC_SCHED_SHUTDOWN_CODE (TRC_SCHED_VERBOSE + 16)
#define TRC_MEM_PAGE_GRANT_MAP (TRC_MEM + 1)
#define TRC_MEM_PAGE_GRANT_UNMAP (TRC_MEM + 2)
@@ -155,6 +157,7 @@
#define TRC_HVM_CLTS (TRC_HVM_HANDLER + 0x18)
#define TRC_HVM_LMSW (TRC_HVM_HANDLER + 0x19)
#define TRC_HVM_LMSW64 (TRC_HVM_HANDLER + TRC_64_FLAG + 0x19)
+#define TRC_HVM_RDTSC (TRC_HVM_HANDLER + 0x1a)
#define TRC_HVM_INTR_WINDOW (TRC_HVM_HANDLER + 0x20)
#define TRC_HVM_NPF (TRC_HVM_HANDLER + 0x21)
diff -r 53705d74a41b -r 6f7bda25a4de include/xen/interface/xen.h
--- a/include/xen/interface/xen.h Tue Aug 10 15:47:41 2010 +0100
+++ b/include/xen/interface/xen.h Thu Aug 26 08:50:42 2010 +0100
@@ -254,6 +254,9 @@ DEFINE_XEN_GUEST_HANDLE(xen_pfn_t);
* cmd: MMUEXT_COPY_PAGE
* mfn: Machine frame number of the destination page.
* src_mfn: Machine frame number of the source page.
+ *
+ * cmd: MMUEXT_[UN]MARK_SUPER
+ * mfn: Machine frame number of head of superpage to be [un]marked.
*/
#define MMUEXT_PIN_L1_TABLE 0
#define MMUEXT_PIN_L2_TABLE 1
@@ -273,13 +276,15 @@ DEFINE_XEN_GUEST_HANDLE(xen_pfn_t);
#define MMUEXT_CLEAR_PAGE 16
#define MMUEXT_COPY_PAGE 17
#define MMUEXT_FLUSH_CACHE_GLOBAL 18
+#define MMUEXT_MARK_SUPER 19
+#define MMUEXT_UNMARK_SUPER 20
#ifndef __ASSEMBLY__
struct mmuext_op {
unsigned int cmd;
union {
/* [UN]PIN_TABLE, NEW_BASEPTR, NEW_USER_BASEPTR
- * CLEAR_PAGE, COPY_PAGE */
+ * CLEAR_PAGE, COPY_PAGE, [UN]MARK_SUPER */
xen_pfn_t mfn;
/* INVLPG_LOCAL, INVLPG_ALL, SET_LDT */
unsigned long linear_addr;
@@ -685,13 +690,22 @@ __DEFINE_XEN_GUEST_HANDLE(uint64, uint64
/* Default definitions for macros used by domctl/sysctl. */
#if defined(__XEN__) || defined(__XEN_TOOLS__)
+
#ifndef uint64_aligned_t
#define uint64_aligned_t uint64_t
#endif
#ifndef XEN_GUEST_HANDLE_64
#define XEN_GUEST_HANDLE_64(name) XEN_GUEST_HANDLE(name)
#endif
-#endif
+
+#ifndef __ASSEMBLY__
+struct xenctl_cpumap {
+ XEN_GUEST_HANDLE_64(uint8) bitmap;
+ uint32_t nr_cpus;
+};
+#endif
+
+#endif /* defined(__XEN__) || defined(__XEN_TOOLS__) */
#endif /* __XEN_PUBLIC_XEN_H__ */
diff -r 53705d74a41b -r 6f7bda25a4de include/xen/interface/xenoprof.h
--- a/include/xen/interface/xenoprof.h Tue Aug 10 15:47:41 2010 +0100
+++ b/include/xen/interface/xenoprof.h Thu Aug 26 08:50:42 2010 +0100
@@ -50,10 +50,10 @@
#define XENOPROF_shutdown 13
#define XENOPROF_get_buffer 14
#define XENOPROF_set_backtrace 15
+
/* AMD IBS support */
#define XENOPROF_get_ibs_caps 16
#define XENOPROF_ibs_counter 17
-
#define XENOPROF_last_op 17
#define MAX_OPROF_EVENTS 32
@@ -138,6 +138,7 @@ struct xenoprof_ibs_counter {
};
typedef struct xenoprof_ibs_counter xenoprof_ibs_counter_t;
DEFINE_XEN_GUEST_HANDLE(xenoprof_ibs_counter_t);
+
#endif /* __XEN_PUBLIC_XENOPROF_H__ */
/*
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|