# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1206983261 -3600
# Node ID 06ffa3eb5e3ff1cf517c15b40a8cd757bc827950
# Parent 4018c0da336008e5dfb1163bddbdfbc328c8f5c4
Sync Xen public headers with xen-unstable tip.
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
---
include/xen/interface/arch-ia64.h | 6 ++++
include/xen/interface/arch-ia64/sioemu.h | 42 ++++++++++++++++++++++++++++
include/xen/interface/arch-powerpc.h | 2 +
include/xen/interface/arch-x86/hvm/save.h | 3 --
include/xen/interface/arch-x86/xen-x86_64.h | 2 -
include/xen/interface/arch-x86/xen.h | 2 +
include/xen/interface/domctl.h | 19 ++++++++++++
include/xen/interface/hvm/ioreq.h | 10 +-----
include/xen/interface/hvm/params.h | 5 ++-
include/xen/interface/hvm/save.h | 4 ++
include/xen/interface/io/ring.h | 24 ++++++++++------
include/xen/interface/io/xs_wire.h | 3 +-
include/xen/interface/kexec.h | 8 ++---
include/xen/interface/physdev.h | 6 +++-
include/xen/interface/trace.h | 8 +++++
include/xen/interface/xen-compat.h | 9 ------
include/xen/interface/xen.h | 6 +++-
17 files changed, 124 insertions(+), 35 deletions(-)
diff -r 4018c0da3360 -r 06ffa3eb5e3f include/xen/interface/arch-ia64.h
--- a/include/xen/interface/arch-ia64.h Mon Mar 31 11:03:07 2008 +0100
+++ b/include/xen/interface/arch-ia64.h Mon Mar 31 18:07:41 2008 +0100
@@ -23,8 +23,14 @@
*
*/
+#include "xen.h"
+
#ifndef __HYPERVISOR_IF_IA64_H__
#define __HYPERVISOR_IF_IA64_H__
+
+#if !defined(__GNUC__) || defined(__STRICT_ANSI__)
+#error "Anonymous structs/unions are a GNU extension."
+#endif
/* Structural guest handles introduced in 0x00030201. */
#if __XEN_INTERFACE_VERSION__ >= 0x00030201
diff -r 4018c0da3360 -r 06ffa3eb5e3f include/xen/interface/arch-ia64/sioemu.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/include/xen/interface/arch-ia64/sioemu.h Mon Mar 31 18:07:41 2008 +0100
@@ -0,0 +1,42 @@
+/******************************************************************************
+ * sioemu.h
+ *
+ * Copyright (c) 2008 Tristan Gingold <tgingold@xxxxxxx>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#ifndef __XEN_PUBLIC_IA64_SIOEMU_H__
+#define __XEN_PUBLIC_IA64_SIOEMU_H__
+
+/* Defines the callback entry point. r8=ip, r9=data.
+ Must be called per-vcpu. */
+#define SIOEMU_HYPERCALL_SET_CALLBACK 0x01
+
+/* Finish sioemu fw initialization and start firmware. r8=ip. */
+#define SIOEMU_HYPERCALL_START_FW 0x02
+
+/* Add IO pages in physmap. */
+#define SIOEMU_HYPERCALL_ADD_IO_PHYSMAP 0x03
+
+/* Get wallclock time. */
+#define SIOEMU_HYPERCALL_GET_TIME 0x04
+
+/* Return from callback. r16=0.
+ Unmask vcpu events. */
+#define SIOEMU_HYPERPRIVOP_CALLBACK_RETURN 0x01
+
+#endif /* __XEN_PUBLIC_IA64_SIOEMU_H__ */
diff -r 4018c0da3360 -r 06ffa3eb5e3f include/xen/interface/arch-powerpc.h
--- a/include/xen/interface/arch-powerpc.h Mon Mar 31 11:03:07 2008 +0100
+++ b/include/xen/interface/arch-powerpc.h Mon Mar 31 18:07:41 2008 +0100
@@ -21,6 +21,8 @@
*
* Authors: Hollis Blanchard <hollisb@xxxxxxxxxx>
*/
+
+#include "xen.h"
#ifndef __XEN_PUBLIC_ARCH_PPC_64_H__
#define __XEN_PUBLIC_ARCH_PPC_64_H__
diff -r 4018c0da3360 -r 06ffa3eb5e3f include/xen/interface/arch-x86/hvm/save.h
--- a/include/xen/interface/arch-x86/hvm/save.h Mon Mar 31 11:03:07 2008 +0100
+++ b/include/xen/interface/arch-x86/hvm/save.h Mon Mar 31 18:07:41 2008 +0100
@@ -271,8 +271,7 @@ DECLARE_HVM_SAVE_TYPE(LAPIC, 5, struct h
DECLARE_HVM_SAVE_TYPE(LAPIC, 5, struct hvm_hw_lapic);
struct hvm_hw_lapic_regs {
- /* A 4k page of register state */
- uint8_t data[0x400];
+ uint8_t data[1024];
};
DECLARE_HVM_SAVE_TYPE(LAPIC_REGS, 6, struct hvm_hw_lapic_regs);
diff -r 4018c0da3360 -r 06ffa3eb5e3f include/xen/interface/arch-x86/xen-x86_64.h
--- a/include/xen/interface/arch-x86/xen-x86_64.h Mon Mar 31 11:03:07
2008 +0100
+++ b/include/xen/interface/arch-x86/xen-x86_64.h Mon Mar 31 18:07:41
2008 +0100
@@ -140,7 +140,7 @@ struct iret_context {
/* Bottom of iret stack frame. */
};
-#ifdef __GNUC__
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
/* Anonymous union includes both 32- and 64-bit names (e.g., eax/rax). */
#define __DECL_REG(name) union { \
uint64_t r ## name, e ## name; \
diff -r 4018c0da3360 -r 06ffa3eb5e3f include/xen/interface/arch-x86/xen.h
--- a/include/xen/interface/arch-x86/xen.h Mon Mar 31 11:03:07 2008 +0100
+++ b/include/xen/interface/arch-x86/xen.h Mon Mar 31 18:07:41 2008 +0100
@@ -23,6 +23,8 @@
*
* Copyright (c) 2004-2006, K A Fraser
*/
+
+#include "../xen.h"
#ifndef __XEN_PUBLIC_ARCH_X86_XEN_H__
#define __XEN_PUBLIC_ARCH_X86_XEN_H__
diff -r 4018c0da3360 -r 06ffa3eb5e3f include/xen/interface/domctl.h
--- a/include/xen/interface/domctl.h Mon Mar 31 11:03:07 2008 +0100
+++ b/include/xen/interface/domctl.h Mon Mar 31 18:07:41 2008 +0100
@@ -53,6 +53,9 @@ struct xen_domctl_createdomain {
/* Is this an HVM guest (as opposed to a PV guest)? */
#define _XEN_DOMCTL_CDF_hvm_guest 0
#define XEN_DOMCTL_CDF_hvm_guest (1U<<_XEN_DOMCTL_CDF_hvm_guest)
+ /* Use hardware-assisted paging if available? */
+#define _XEN_DOMCTL_CDF_hap 1
+#define XEN_DOMCTL_CDF_hap (1U<<_XEN_DOMCTL_CDF_hap)
uint32_t flags;
};
typedef struct xen_domctl_createdomain xen_domctl_createdomain_t;
@@ -373,6 +376,8 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_hyper
#define XEN_DOMAINSETUP_hvm_guest (1UL<<_XEN_DOMAINSETUP_hvm_guest)
#define _XEN_DOMAINSETUP_query 1 /* Get parameters (for save) */
#define XEN_DOMAINSETUP_query (1UL<<_XEN_DOMAINSETUP_query)
+#define _XEN_DOMAINSETUP_sioemu_guest 2
+#define XEN_DOMAINSETUP_sioemu_guest (1UL<<_XEN_DOMAINSETUP_sioemu_guest)
typedef struct xen_domctl_arch_setup {
uint64_aligned_t flags; /* XEN_DOMAINSETUP_* */
#ifdef __ia64__
@@ -436,6 +441,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_sendt
/* Assign PCI device to HVM guest. Sets up IOMMU structures. */
#define XEN_DOMCTL_assign_device 37
#define XEN_DOMCTL_test_assign_device 45
+#define XEN_DOMCTL_deassign_device 47
struct xen_domctl_assign_device {
uint32_t machine_bdf; /* machine PCI ID of assigned device */
};
@@ -445,6 +451,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_assig
/* Pass-through interrupts: bind real irq -> hvm devfn. */
#define XEN_DOMCTL_bind_pt_irq 38
+#define XEN_DOMCTL_unbind_pt_irq 48
typedef enum pt_irq_type_e {
PT_IRQ_TYPE_PCI,
PT_IRQ_TYPE_ISA
@@ -553,6 +560,17 @@ struct xen_domctl_set_opt_feature {
};
typedef struct xen_domctl_set_opt_feature xen_domctl_set_opt_feature_t;
DEFINE_XEN_GUEST_HANDLE(xen_domctl_set_opt_feature_t);
+
+/*
+ * Set the target domain for a domain
+ */
+#define XEN_DOMCTL_set_target 46
+struct xen_domctl_set_target {
+ domid_t target;
+};
+typedef struct xen_domctl_set_target xen_domctl_set_target_t;
+DEFINE_XEN_GUEST_HANDLE(xen_domctl_set_target_t);
+
struct xen_domctl {
uint32_t cmd;
@@ -590,6 +608,7 @@ struct xen_domctl {
struct xen_domctl_pin_mem_cacheattr pin_mem_cacheattr;
struct xen_domctl_ext_vcpucontext ext_vcpucontext;
struct xen_domctl_set_opt_feature set_opt_feature;
+ struct xen_domctl_set_target set_target;
uint8_t pad[128];
} u;
};
diff -r 4018c0da3360 -r 06ffa3eb5e3f include/xen/interface/hvm/ioreq.h
--- a/include/xen/interface/hvm/ioreq.h Mon Mar 31 11:03:07 2008 +0100
+++ b/include/xen/interface/hvm/ioreq.h Mon Mar 31 18:07:41 2008 +0100
@@ -34,14 +34,8 @@
#define IOREQ_TYPE_PIO 0 /* pio */
#define IOREQ_TYPE_COPY 1 /* mmio ops */
-#define IOREQ_TYPE_AND 2
-#define IOREQ_TYPE_OR 3
-#define IOREQ_TYPE_XOR 4
-#define IOREQ_TYPE_XCHG 5
-#define IOREQ_TYPE_ADD 6
#define IOREQ_TYPE_TIMEOFFSET 7
#define IOREQ_TYPE_INVALIDATE 8 /* mapcache */
-#define IOREQ_TYPE_SUB 9
/*
* VMExit dispatcher should cooperate with instruction decoder to
@@ -114,11 +108,11 @@ struct buffered_piopage {
};
#endif /* defined(__ia64__) */
-#if defined(__i386__) || defined(__x86_64__)
#define ACPI_PM1A_EVT_BLK_ADDRESS 0x0000000000001f40
#define ACPI_PM1A_CNT_BLK_ADDRESS (ACPI_PM1A_EVT_BLK_ADDRESS + 0x04)
#define ACPI_PM_TMR_BLK_ADDRESS (ACPI_PM1A_EVT_BLK_ADDRESS + 0x08)
-#endif /* defined(__i386__) || defined(__x86_64__) */
+#define ACPI_GPE0_BLK_ADDRESS (ACPI_PM_TMR_BLK_ADDRESS + 0x20)
+#define ACPI_GPE0_BLK_LEN 0x08
#endif /* _IOREQ_H_ */
diff -r 4018c0da3360 -r 06ffa3eb5e3f include/xen/interface/hvm/params.h
--- a/include/xen/interface/hvm/params.h Mon Mar 31 11:03:07 2008 +0100
+++ b/include/xen/interface/hvm/params.h Mon Mar 31 18:07:41 2008 +0100
@@ -81,6 +81,9 @@
#define HVMPTM_no_missed_ticks_pending 2
#define HVMPTM_one_missed_tick_pending 3
-#define HVM_NR_PARAMS 11
+/* Boolean: Enable virtual HPET (high-precision event timer)? (x86-only) */
+#define HVM_PARAM_HPET_ENABLED 11
+
+#define HVM_NR_PARAMS 12
#endif /* __XEN_PUBLIC_HVM_PARAMS_H__ */
diff -r 4018c0da3360 -r 06ffa3eb5e3f include/xen/interface/hvm/save.h
--- a/include/xen/interface/hvm/save.h Mon Mar 31 11:03:07 2008 +0100
+++ b/include/xen/interface/hvm/save.h Mon Mar 31 18:07:41 2008 +0100
@@ -39,6 +39,10 @@
* Internal mechanisms should be kept in Xen-private headers.
*/
+#if !defined(__GNUC__) || defined(__STRICT_ANSI__)
+#error "Anonymous structs/unions are a GNU extension."
+#endif
+
/*
* Each entry is preceded by a descriptor giving its type and length
*/
diff -r 4018c0da3360 -r 06ffa3eb5e3f include/xen/interface/io/ring.h
--- a/include/xen/interface/io/ring.h Mon Mar 31 11:03:07 2008 +0100
+++ b/include/xen/interface/io/ring.h Mon Mar 31 18:07:41 2008 +0100
@@ -26,6 +26,14 @@
#ifndef __XEN_PUBLIC_IO_RING_H__
#define __XEN_PUBLIC_IO_RING_H__
+
+#include "../xen-compat.h"
+
+#if __XEN_INTERFACE_VERSION__ < 0x00030208
+#define xen_mb() mb()
+#define xen_rmb() rmb()
+#define xen_wmb() wmb()
+#endif
typedef unsigned int RING_IDX;
@@ -211,12 +219,12 @@ typedef struct __name##_back_ring __name
(((_cons) - (_r)->rsp_prod_pvt) >= RING_SIZE(_r))
#define RING_PUSH_REQUESTS(_r) do { \
- wmb(); /* back sees requests /before/ updated producer index */ \
+ xen_wmb(); /* back sees requests /before/ updated producer index */ \
(_r)->sring->req_prod = (_r)->req_prod_pvt; \
} while (0)
#define RING_PUSH_RESPONSES(_r) do { \
- wmb(); /* front sees responses /before/ updated producer index */ \
+ xen_wmb(); /* front sees resps /before/ updated producer index */ \
(_r)->sring->rsp_prod = (_r)->rsp_prod_pvt; \
} while (0)
@@ -253,9 +261,9 @@ typedef struct __name##_back_ring __name
#define RING_PUSH_REQUESTS_AND_CHECK_NOTIFY(_r, _notify) do { \
RING_IDX __old = (_r)->sring->req_prod; \
RING_IDX __new = (_r)->req_prod_pvt; \
- wmb(); /* back sees requests /before/ updated producer index */ \
+ xen_wmb(); /* back sees requests /before/ updated producer index */ \
(_r)->sring->req_prod = __new; \
- mb(); /* back sees new requests /before/ we check req_event */ \
+ xen_mb(); /* back sees new requests /before/ we check req_event */ \
(_notify) = ((RING_IDX)(__new - (_r)->sring->req_event) < \
(RING_IDX)(__new - __old)); \
} while (0)
@@ -263,9 +271,9 @@ typedef struct __name##_back_ring __name
#define RING_PUSH_RESPONSES_AND_CHECK_NOTIFY(_r, _notify) do { \
RING_IDX __old = (_r)->sring->rsp_prod; \
RING_IDX __new = (_r)->rsp_prod_pvt; \
- wmb(); /* front sees responses /before/ updated producer index */ \
+ xen_wmb(); /* front sees resps /before/ updated producer index */ \
(_r)->sring->rsp_prod = __new; \
- mb(); /* front sees new responses /before/ we check rsp_event */ \
+ xen_mb(); /* front sees new resps /before/ we check rsp_event */ \
(_notify) = ((RING_IDX)(__new - (_r)->sring->rsp_event) < \
(RING_IDX)(__new - __old)); \
} while (0)
@@ -274,7 +282,7 @@ typedef struct __name##_back_ring __name
(_work_to_do) = RING_HAS_UNCONSUMED_REQUESTS(_r); \
if (_work_to_do) break; \
(_r)->sring->req_event = (_r)->req_cons + 1; \
- mb(); \
+ xen_mb(); \
(_work_to_do) = RING_HAS_UNCONSUMED_REQUESTS(_r); \
} while (0)
@@ -282,7 +290,7 @@ typedef struct __name##_back_ring __name
(_work_to_do) = RING_HAS_UNCONSUMED_RESPONSES(_r); \
if (_work_to_do) break; \
(_r)->sring->rsp_event = (_r)->rsp_cons + 1; \
- mb(); \
+ xen_mb(); \
(_work_to_do) = RING_HAS_UNCONSUMED_RESPONSES(_r); \
} while (0)
diff -r 4018c0da3360 -r 06ffa3eb5e3f include/xen/interface/io/xs_wire.h
--- a/include/xen/interface/io/xs_wire.h Mon Mar 31 11:03:07 2008 +0100
+++ b/include/xen/interface/io/xs_wire.h Mon Mar 31 18:07:41 2008 +0100
@@ -46,7 +46,8 @@ enum xsd_sockmsg_type
XS_WATCH_EVENT,
XS_ERROR,
XS_IS_DOMAIN_INTRODUCED,
- XS_RESUME
+ XS_RESUME,
+ XS_SET_TARGET
};
#define XS_WRITE_NONE "NONE"
diff -r 4018c0da3360 -r 06ffa3eb5e3f include/xen/interface/kexec.h
--- a/include/xen/interface/kexec.h Mon Mar 31 11:03:07 2008 +0100
+++ b/include/xen/interface/kexec.h Mon Mar 31 18:07:41 2008 +0100
@@ -130,10 +130,10 @@ typedef struct xen_kexec_load {
#define KEXEC_RANGE_MA_XEN 1 /* machine address and size of Xen itself
*/
#define KEXEC_RANGE_MA_CPU 2 /* machine address and size of a CPU note
*/
#define KEXEC_RANGE_MA_XENHEAP 3 /* machine address and size of xenheap
- * Note that although this is adjacent
- * to Xen it exists in a separate EFI
- * region on ia64, and thus needs to be
- * inserted into iomem_machine separately */
+ * Note that although this is adjacent
+ * to Xen it exists in a separate EFI
+ * region on ia64, and thus needs to be
+ * inserted into iomem_machine separately
*/
#define KEXEC_RANGE_MA_BOOT_PARAM 4 /* machine address and size of
* the ia64_boot_param */
#define KEXEC_RANGE_MA_EFI_MEMMAP 5 /* machine address and size of
diff -r 4018c0da3360 -r 06ffa3eb5e3f include/xen/interface/physdev.h
--- a/include/xen/interface/physdev.h Mon Mar 31 11:03:07 2008 +0100
+++ b/include/xen/interface/physdev.h Mon Mar 31 18:07:41 2008 +0100
@@ -81,7 +81,11 @@ DEFINE_XEN_GUEST_HANDLE(physdev_set_iopl
#define PHYSDEVOP_set_iobitmap 7
struct physdev_set_iobitmap {
/* IN */
- XEN_GUEST_HANDLE_00030205(uint8) bitmap;
+#if __XEN_INTERFACE_VERSION__ >= 0x00030205
+ XEN_GUEST_HANDLE(uint8) bitmap;
+#else
+ uint8_t *bitmap;
+#endif
uint32_t nr_ports;
};
typedef struct physdev_set_iobitmap physdev_set_iobitmap_t;
diff -r 4018c0da3360 -r 06ffa3eb5e3f include/xen/interface/trace.h
--- a/include/xen/interface/trace.h Mon Mar 31 11:03:07 2008 +0100
+++ b/include/xen/interface/trace.h Mon Mar 31 18:07:41 2008 +0100
@@ -141,6 +141,14 @@ struct t_rec {
* field, indexes into an array of struct t_rec's.
*/
struct t_buf {
+ /* Assume the data buffer size is X. X is generally not a power of 2.
+ * CONS and PROD are incremented modulo (2*X):
+ * 0 <= cons < 2*X
+ * 0 <= prod < 2*X
+ * This is done because addition modulo X breaks at 2^32 when X is not a
+ * power of 2:
+ * (((2^32 - 1) % X) + 1) % X != (2^32) % X
+ */
uint32_t cons; /* Offset of next item to be consumed by control tools. */
uint32_t prod; /* Offset of next item to be produced by Xen. */
/* Records follow immediately after the meta-data header. */
diff -r 4018c0da3360 -r 06ffa3eb5e3f include/xen/interface/xen-compat.h
--- a/include/xen/interface/xen-compat.h Mon Mar 31 11:03:07 2008 +0100
+++ b/include/xen/interface/xen-compat.h Mon Mar 31 18:07:41 2008 +0100
@@ -27,7 +27,7 @@
#ifndef __XEN_PUBLIC_XEN_COMPAT_H__
#define __XEN_PUBLIC_XEN_COMPAT_H__
-#define __XEN_LATEST_INTERFACE_VERSION__ 0x00030207
+#define __XEN_LATEST_INTERFACE_VERSION__ 0x00030208
#if defined(__XEN__) || defined(__XEN_TOOLS__)
/* Xen is built with matching headers and implements the latest interface. */
@@ -41,11 +41,4 @@
#error "These header files do not support the requested interface version."
#endif
-/* Fields defined as a Xen guest handle since 0x00030205. */
-#if __XEN_INTERFACE_VERSION__ >= 0x00030205
-#define XEN_GUEST_HANDLE_00030205(type) XEN_GUEST_HANDLE(type)
-#else
-#define XEN_GUEST_HANDLE_00030205(type) type *
-#endif
-
#endif /* __XEN_PUBLIC_XEN_COMPAT_H__ */
diff -r 4018c0da3360 -r 06ffa3eb5e3f include/xen/interface/xen.h
--- a/include/xen/interface/xen.h Mon Mar 31 11:03:07 2008 +0100
+++ b/include/xen/interface/xen.h Mon Mar 31 18:07:41 2008 +0100
@@ -263,7 +263,11 @@ struct mmuext_op {
/* SET_LDT */
unsigned int nr_ents;
/* TLB_FLUSH_MULTI, INVLPG_MULTI */
- XEN_GUEST_HANDLE_00030205(void) vcpumask;
+#if __XEN_INTERFACE_VERSION__ >= 0x00030205
+ XEN_GUEST_HANDLE(void) vcpumask;
+#else
+ void *vcpumask;
+#endif
} arg2;
};
typedef struct mmuext_op mmuext_op_t;
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|