# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 9fc306e40a7cb7aad9115e2a2a6665f3a23ff96d
# Parent 399c68937d59d689aa4a25202099873212552fac
Move public hvm interfaces into xen/include/public/hvm.
Add new header hvm_info_table.h for defining location and
contents of acpi-style hvm_info_table. Remove duplicate
definition in vmxassist/acpi_madt.c.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
diff -r 399c68937d59 -r 9fc306e40a7c tools/Rules.mk
--- a/tools/Rules.mk Tue Jan 3 13:36:56 2006
+++ b/tools/Rules.mk Tue Jan 3 13:58:34 2006
@@ -35,6 +35,8 @@
mk-symlinks:
mkdir -p xen
( cd xen && ln -sf ../$(XEN_ROOT)/xen/include/public/*.h . )
+ mkdir -p xen/hvm
+ ( cd xen/hvm && ln -sf ../../$(XEN_ROOT)/xen/include/public/hvm/*.h . )
mkdir -p xen/io
( cd xen/io && ln -sf ../../$(XEN_ROOT)/xen/include/public/io/*.h . )
mkdir -p xen/linux
diff -r 399c68937d59 -r 9fc306e40a7c tools/firmware/vmxassist/acpi_madt.c
--- a/tools/firmware/vmxassist/acpi_madt.c Tue Jan 3 13:36:56 2006
+++ b/tools/firmware/vmxassist/acpi_madt.c Tue Jan 3 13:58:34 2006
@@ -17,25 +17,15 @@
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
* Place - Suite 330, Boston, MA 02111-1307 USA.
*/
+
#include "../acpi/acpi2_0.h"
#include "../acpi/acpi_madt.h"
+
+#include <xen/hvm/hvm_info_table.h>
#define NULL ((void*)0)
extern int puts(const char *s);
-
-#define HVM_INFO_PAGE 0x0009F000
-#define HVM_INFO_OFFSET 0x00000800
-
-struct hvm_info_table {
- char signature[8]; /* "HVM INFO" */
- uint32_t length;
- uint8_t checksum;
- uint8_t acpi_enabled;
- uint8_t apic_enabled;
- uint8_t pad[1];
- uint32_t nr_vcpus;
-};
static struct hvm_info_table *table = NULL;
@@ -70,7 +60,7 @@
if (table != NULL)
return table;
- t = (struct hvm_info_table *)(HVM_INFO_PAGE + HVM_INFO_OFFSET);
+ t = (struct hvm_info_table *)HVM_INFO_PADDR;
if (!validate_hvm_info(t)) {
puts("Bad hvm info table\n");
diff -r 399c68937d59 -r 9fc306e40a7c tools/firmware/vmxassist/vm86.h
--- a/tools/firmware/vmxassist/vm86.h Tue Jan 3 13:36:56 2006
+++ b/tools/firmware/vmxassist/vm86.h Tue Jan 3 13:58:34 2006
@@ -24,7 +24,7 @@
#include <stdint.h>
#endif
-#include <xen/vmx_assist.h>
+#include <xen/hvm/vmx_assist.h>
#define NR_EXCEPTION_HANDLER 32
#define NR_INTERRUPT_HANDLERS 16
diff -r 399c68937d59 -r 9fc306e40a7c tools/ioemu/hw/i8254.c
--- a/tools/ioemu/hw/i8254.c Tue Jan 3 13:36:56 2006
+++ b/tools/ioemu/hw/i8254.c Tue Jan 3 13:58:34 2006
@@ -23,7 +23,7 @@
*/
#include "vl.h"
#include <xenctrl.h>
-#include <xen/io/ioreq.h>
+#include <xen/hvm/ioreq.h>
//#define DEBUG_PIT
diff -r 399c68937d59 -r 9fc306e40a7c tools/ioemu/hw/i8259.c
--- a/tools/ioemu/hw/i8259.c Tue Jan 3 13:36:56 2006
+++ b/tools/ioemu/hw/i8259.c Tue Jan 3 13:58:34 2006
@@ -23,7 +23,7 @@
*/
#include "vl.h"
#include <xenctrl.h>
-#include <xen/io/ioreq.h>
+#include <xen/hvm/ioreq.h>
/* debug PIC */
//#define DEBUG_PIC
diff -r 399c68937d59 -r 9fc306e40a7c tools/ioemu/hw/i8259_stub.c
--- a/tools/ioemu/hw/i8259_stub.c Tue Jan 3 13:36:56 2006
+++ b/tools/ioemu/hw/i8259_stub.c Tue Jan 3 13:58:34 2006
@@ -22,7 +22,7 @@
* THE SOFTWARE.
*/
#include "xenctrl.h"
-#include <xen/io/ioreq.h>
+#include <xen/hvm/ioreq.h>
#include <stdio.h>
#include "cpu.h"
#include "cpu-all.h"
diff -r 399c68937d59 -r 9fc306e40a7c tools/ioemu/target-i386-dm/helper2.c
--- a/tools/ioemu/target-i386-dm/helper2.c Tue Jan 3 13:36:56 2006
+++ b/tools/ioemu/target-i386-dm/helper2.c Tue Jan 3 13:58:34 2006
@@ -48,7 +48,7 @@
#include <sys/ioctl.h>
#include <xenctrl.h>
-#include <xen/io/ioreq.h>
+#include <xen/hvm/ioreq.h>
#include <xen/linux/evtchn.h>
#include "cpu.h"
diff -r 399c68937d59 -r 9fc306e40a7c tools/libxc/xc_ia64_stubs.c
--- a/tools/libxc/xc_ia64_stubs.c Tue Jan 3 13:36:56 2006
+++ b/tools/libxc/xc_ia64_stubs.c Tue Jan 3 13:58:34 2006
@@ -5,7 +5,7 @@
#include <stdlib.h>
#include <zlib.h>
#include "xen/arch-ia64.h"
-#include <xen/io/ioreq.h>
+#include <xen/hvm/ioreq.h>
/* this is a very ugly way of getting FPSR_DEFAULT. struct ia64_fpreg is
* mysteriously declared in two places: /usr/include/asm/fpu.h and
diff -r 399c68937d59 -r 9fc306e40a7c tools/libxc/xc_vmx_build.c
--- a/tools/libxc/xc_vmx_build.c Tue Jan 3 13:36:56 2006
+++ b/tools/libxc/xc_vmx_build.c Tue Jan 3 13:58:34 2006
@@ -9,7 +9,8 @@
#include <stdlib.h>
#include <unistd.h>
#include <zlib.h>
-#include <xen/io/ioreq.h>
+#include <xen/hvm/hvm_info_table.h>
+#include <xen/hvm/ioreq.h>
#define VMX_LOADER_ENTR_ADDR 0x00100000
@@ -141,9 +142,13 @@
char *va_map;
struct hvm_info_table *va_hvm;
- va_map = xc_map_foreign_range(xc_handle, dom,
- PAGE_SIZE, PROT_READ|PROT_WRITE,
- pfn_list[HVM_INFO_PAGE >> PAGE_SHIFT]);
+ va_map = xc_map_foreign_range(
+ xc_handle,
+ dom,
+ PAGE_SIZE,
+ PROT_READ|PROT_WRITE,
+ pfn_list[HVM_INFO_PFN]);
+
if ( va_map == NULL )
return -1;
diff -r 399c68937d59 -r 9fc306e40a7c xen/arch/ia64/vmx/mmio.c
--- a/xen/arch/ia64/vmx/mmio.c Tue Jan 3 13:36:56 2006
+++ b/xen/arch/ia64/vmx/mmio.c Tue Jan 3 13:58:34 2006
@@ -29,7 +29,7 @@
#include <asm/vmx_vcpu.h>
#include <asm/privop.h>
#include <asm/types.h>
-#include <public/io/ioreq.h>
+#include <public/hvm/ioreq.h>
#include <asm/mm.h>
#include <asm/vmx.h>
diff -r 399c68937d59 -r 9fc306e40a7c xen/arch/ia64/vmx/vmx_init.c
--- a/xen/arch/ia64/vmx/vmx_init.c Tue Jan 3 13:36:56 2006
+++ b/xen/arch/ia64/vmx/vmx_init.c Tue Jan 3 13:58:34 2006
@@ -42,7 +42,7 @@
#include <xen/lib.h>
#include <asm/vmmu.h>
#include <public/arch-ia64.h>
-#include <public/io/ioreq.h>
+#include <public/hvm/ioreq.h>
#include <asm/vmx_phy_mode.h>
#include <asm/processor.h>
#include <asm/vmx.h>
diff -r 399c68937d59 -r 9fc306e40a7c xen/arch/ia64/vmx/vmx_support.c
--- a/xen/arch/ia64/vmx/vmx_support.c Tue Jan 3 13:36:56 2006
+++ b/xen/arch/ia64/vmx/vmx_support.c Tue Jan 3 13:58:34 2006
@@ -21,7 +21,7 @@
*/
#include <xen/config.h>
#include <xen/sched.h>
-#include <public/io/ioreq.h>
+#include <public/hvm/ioreq.h>
#include <asm/vmx.h>
#include <asm/vmx_vcpu.h>
diff -r 399c68937d59 -r 9fc306e40a7c xen/arch/ia64/xen/domain.c
--- a/xen/arch/ia64/xen/domain.c Tue Jan 3 13:36:56 2006
+++ b/xen/arch/ia64/xen/domain.c Tue Jan 3 13:58:34 2006
@@ -45,7 +45,7 @@
#include <asm/vmx_vcpu.h>
#include <asm/vmx_vpd.h>
#include <asm/pal.h>
-#include <public/io/ioreq.h>
+#include <public/hvm/ioreq.h>
#define CONFIG_DOMAIN0_CONTIGUOUS
unsigned long dom0_start = -1L;
diff -r 399c68937d59 -r 9fc306e40a7c xen/arch/x86/dm/i8259.c
--- a/xen/arch/x86/dm/i8259.c Tue Jan 3 13:36:56 2006
+++ b/xen/arch/x86/dm/i8259.c Tue Jan 3 13:58:34 2006
@@ -29,7 +29,7 @@
#include <xen/lib.h>
#include <xen/errno.h>
#include <xen/sched.h>
-#include <public/io/ioreq.h>
+#include <public/hvm/ioreq.h>
#include <asm/vmx.h>
#include <asm/vmx_vpic.h>
#include <asm/current.h>
diff -r 399c68937d59 -r 9fc306e40a7c xen/arch/x86/dm/vmx_vioapic.c
--- a/xen/arch/x86/dm/vmx_vioapic.c Tue Jan 3 13:36:56 2006
+++ b/xen/arch/x86/dm/vmx_vioapic.c Tue Jan 3 13:58:34 2006
@@ -37,7 +37,7 @@
#include <xen/lib.h>
#include <xen/errno.h>
#include <xen/sched.h>
-#include <public/io/ioreq.h>
+#include <public/hvm/ioreq.h>
#include <asm/vmx.h>
#include <asm/vmx_vpic.h>
#include <asm/current.h>
diff -r 399c68937d59 -r 9fc306e40a7c xen/arch/x86/vmx.c
--- a/xen/arch/x86/vmx.c Tue Jan 3 13:36:56 2006
+++ b/xen/arch/x86/vmx.c Tue Jan 3 13:58:34 2006
@@ -42,7 +42,7 @@
#include <asm/shadow_64.h>
#endif
#include <public/sched.h>
-#include <public/io/ioreq.h>
+#include <public/hvm/ioreq.h>
#include <asm/vmx_vpic.h>
#include <asm/vmx_vlapic.h>
diff -r 399c68937d59 -r 9fc306e40a7c xen/arch/x86/vmx_intercept.c
--- a/xen/arch/x86/vmx_intercept.c Tue Jan 3 13:36:56 2006
+++ b/xen/arch/x86/vmx_intercept.c Tue Jan 3 13:58:34 2006
@@ -24,7 +24,7 @@
#include <asm/vmx_vpit.h>
#include <asm/vmx_intercept.h>
#include <asm/vmx_vlapic.h>
-#include <public/io/ioreq.h>
+#include <public/hvm/ioreq.h>
#include <xen/lib.h>
#include <xen/sched.h>
#include <asm/current.h>
diff -r 399c68937d59 -r 9fc306e40a7c xen/arch/x86/vmx_io.c
--- a/xen/arch/x86/vmx_io.c Tue Jan 3 13:36:56 2006
+++ b/xen/arch/x86/vmx_io.c Tue Jan 3 13:58:34 2006
@@ -37,7 +37,7 @@
#include <asm/shadow.h>
#include <asm/vmx_vpic.h>
#include <asm/vmx_vlapic.h>
-#include <public/io/ioreq.h>
+#include <public/hvm/ioreq.h>
#ifdef CONFIG_VMX
#if defined (__i386__)
diff -r 399c68937d59 -r 9fc306e40a7c xen/arch/x86/vmx_platform.c
--- a/xen/arch/x86/vmx_platform.c Tue Jan 3 13:36:56 2006
+++ b/xen/arch/x86/vmx_platform.c Tue Jan 3 13:58:34 2006
@@ -27,7 +27,7 @@
#include <xen/trace.h>
#include <asm/vmx.h>
#include <asm/vmx_platform.h>
-#include <public/io/ioreq.h>
+#include <public/hvm/ioreq.h>
#include <xen/lib.h>
#include <xen/sched.h>
diff -r 399c68937d59 -r 9fc306e40a7c xen/arch/x86/vmx_vlapic.c
--- a/xen/arch/x86/vmx_vlapic.c Tue Jan 3 13:36:56 2006
+++ b/xen/arch/x86/vmx_vlapic.c Tue Jan 3 13:58:34 2006
@@ -32,7 +32,7 @@
#include <xen/lib.h>
#include <xen/sched.h>
#include <asm/current.h>
-#include <public/io/ioreq.h>
+#include <public/hvm/ioreq.h>
#ifdef CONFIG_VMX
diff -r 399c68937d59 -r 9fc306e40a7c xen/arch/x86/vmx_vmcs.c
--- a/xen/arch/x86/vmx_vmcs.c Tue Jan 3 13:36:56 2006
+++ b/xen/arch/x86/vmx_vmcs.c Tue Jan 3 13:58:34 2006
@@ -32,7 +32,7 @@
#include <asm/flushtlb.h>
#include <xen/event.h>
#include <xen/kernel.h>
-#include <public/io/ioreq.h>
+#include <public/hvm/hvm_info_table.h>
#if CONFIG_PAGING_LEVELS >= 4
#include <asm/shadow_64.h>
#endif
@@ -233,7 +233,7 @@
unsigned long mpfn;
struct hvm_info_table *t;
- mpfn = get_mfn_from_pfn(HVM_INFO_PAGE >> PAGE_SHIFT);
+ mpfn = get_mfn_from_pfn(HVM_INFO_PFN);
if ( mpfn == INVALID_MFN ) {
printk("Can not get hvm info page mfn for VMX domain.\n");
domain_crash_synchronous();
diff -r 399c68937d59 -r 9fc306e40a7c xen/include/asm-ia64/vmx.h
--- a/xen/include/asm-ia64/vmx.h Tue Jan 3 13:36:56 2006
+++ b/xen/include/asm-ia64/vmx.h Tue Jan 3 13:58:34 2006
@@ -23,7 +23,7 @@
#define _ASM_IA64_VT_H
#define RR7_SWITCH_SHIFT 12 /* 4k enough */
-#include <public/io/ioreq.h>
+#include <public/hvm/ioreq.h>
extern void identify_vmx_feature(void);
extern unsigned int vmx_enabled;
diff -r 399c68937d59 -r 9fc306e40a7c xen/include/asm-x86/vmx.h
--- a/xen/include/asm-x86/vmx.h Tue Jan 3 13:36:56 2006
+++ b/xen/include/asm-x86/vmx.h Tue Jan 3 13:58:34 2006
@@ -26,7 +26,7 @@
#include <asm/vmx_vmcs.h>
#include <asm/i387.h>
-#include <public/io/ioreq.h>
+#include <public/hvm/ioreq.h>
extern int hvm_enabled;
diff -r 399c68937d59 -r 9fc306e40a7c xen/include/asm-x86/vmx_intercept.h
--- a/xen/include/asm-x86/vmx_intercept.h Tue Jan 3 13:36:56 2006
+++ b/xen/include/asm-x86/vmx_intercept.h Tue Jan 3 13:58:34 2006
@@ -6,7 +6,7 @@
#include <xen/lib.h>
#include <xen/time.h>
#include <xen/errno.h>
-#include <public/io/ioreq.h>
+#include <public/hvm/ioreq.h>
#define MAX_IO_HANDLER 8
diff -r 399c68937d59 -r 9fc306e40a7c xen/include/asm-x86/vmx_vlapic.h
--- a/xen/include/asm-x86/vmx_vlapic.h Tue Jan 3 13:36:56 2006
+++ b/xen/include/asm-x86/vmx_vlapic.h Tue Jan 3 13:58:34 2006
@@ -21,7 +21,7 @@
#define VMX_VLAPIC_H
#include <asm/msr.h>
-#include <public/io/ioreq.h>
+#include <public/hvm/ioreq.h>
#if defined(__i386__) || defined(__x86_64__)
static inline int __fls(uint32_t word)
diff -r 399c68937d59 -r 9fc306e40a7c xen/include/asm-x86/vmx_vmcs.h
--- a/xen/include/asm-x86/vmx_vmcs.h Tue Jan 3 13:36:56 2006
+++ b/xen/include/asm-x86/vmx_vmcs.h Tue Jan 3 13:58:34 2006
@@ -23,7 +23,7 @@
#include <asm/vmx_cpu.h>
#include <asm/vmx_platform.h>
#include <asm/vmx_vlapic.h>
-#include <public/vmx_assist.h>
+#include <public/hvm/vmx_assist.h>
extern int start_vmx(void);
extern void stop_vmx(void);
diff -r 399c68937d59 -r 9fc306e40a7c xen/include/public/hvm/hvm_info_table.h
--- /dev/null Tue Jan 3 13:36:56 2006
+++ b/xen/include/public/hvm/hvm_info_table.h Tue Jan 3 13:58:34 2006
@@ -0,0 +1,24 @@
+/******************************************************************************
+ * hvm/hvm_info_table.h
+ *
+ * HVM parameter and information table, written into guest memory map.
+ */
+
+#ifndef __XEN_PUBLIC_HVM_HVM_INFO_TABLE_H__
+#define __XEN_PUBLIC_HVM_HVM_INFO_TABLE_H__
+
+#define HVM_INFO_PFN 0x09F
+#define HVM_INFO_OFFSET 0x800
+#define HVM_INFO_PADDR ((HVM_INFO_PFN << 12) + HVM_INFO_OFFSET)
+
+struct hvm_info_table {
+ char signature[8]; /* "HVM INFO" */
+ uint32_t length;
+ uint8_t checksum;
+ uint8_t acpi_enabled;
+ uint8_t apic_enabled;
+ uint8_t pad[1];
+ uint32_t nr_vcpus;
+};
+
+#endif /* __XEN_PUBLIC_HVM_HVM_INFO_TABLE_H__ */
diff -r 399c68937d59 -r 9fc306e40a7c xen/include/public/hvm/ioreq.h
--- /dev/null Tue Jan 3 13:36:56 2006
+++ b/xen/include/public/hvm/ioreq.h Tue Jan 3 13:58:34 2006
@@ -0,0 +1,90 @@
+/*
+ * ioreq.h: I/O request definitions for device models
+ * Copyright (c) 2004, Intel Corporation.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope 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 _IOREQ_H_
+#define _IOREQ_H_
+
+#define IOREQ_READ 1
+#define IOREQ_WRITE 0
+
+#define STATE_INVALID 0
+#define STATE_IOREQ_READY 1
+#define STATE_IOREQ_INPROCESS 2
+#define STATE_IORESP_READY 3
+#define STATE_IORESP_HOOK 4
+
+#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
+
+/*
+ * VMExit dispatcher should cooperate with instruction decoder to
+ * prepare this structure and notify service OS and DM by sending
+ * virq
+ */
+typedef struct {
+ uint64_t addr; /* physical address */
+ uint64_t size; /* size in bytes */
+ uint64_t count; /* for rep prefixes */
+ union {
+ uint64_t data; /* data */
+ void *pdata; /* pointer to data */
+ } u;
+ uint8_t state:4;
+ uint8_t pdata_valid:1; /* if 1, use pdata above */
+ uint8_t dir:1; /* 1=read, 0=write */
+ uint8_t df:1;
+ uint8_t type; /* I/O type */
+} ioreq_t;
+
+#define MAX_VECTOR 256
+#define BITS_PER_BYTE 8
+#define INTR_LEN (MAX_VECTOR/(BITS_PER_BYTE * sizeof(uint64_t)))
+#define INTR_LEN_32 (MAX_VECTOR/(BITS_PER_BYTE * sizeof(uint32_t)))
+
+typedef struct {
+ uint16_t pic_elcr;
+ uint16_t pic_irr;
+ uint16_t pic_last_irr;
+ uint16_t pic_clear_irr;
+ int eport; /* Event channel port */
+} global_iodata_t;
+
+typedef struct {
+ ioreq_t vp_ioreq;
+} vcpu_iodata_t;
+
+typedef struct {
+ global_iodata_t sp_global;
+ vcpu_iodata_t vcpu_iodata[1];
+} shared_iopage_t;
+
+#endif /* _IOREQ_H_ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r 399c68937d59 -r 9fc306e40a7c xen/include/public/hvm/vmx_assist.h
--- /dev/null Tue Jan 3 13:36:56 2006
+++ b/xen/include/public/hvm/vmx_assist.h Tue Jan 3 13:58:34 2006
@@ -0,0 +1,97 @@
+/*
+ * vmx_assist.h: Context definitions for the VMXASSIST world switch.
+ *
+ * Leendert van Doorn, leendert@xxxxxxxxxxxxxx
+ * Copyright (c) 2005, International Business Machines Corporation.
+ */
+
+#ifndef _VMX_ASSIST_H_
+#define _VMX_ASSIST_H_
+
+#define VMXASSIST_BASE 0xD0000
+#define VMXASSIST_MAGIC 0x17101966
+#define VMXASSIST_MAGIC_OFFSET (VMXASSIST_BASE+8)
+
+#define VMXASSIST_NEW_CONTEXT (VMXASSIST_BASE + 12)
+#define VMXASSIST_OLD_CONTEXT (VMXASSIST_NEW_CONTEXT + 4)
+
+#ifndef __ASSEMBLY__
+
+union vmcs_arbytes {
+ struct arbyte_fields {
+ unsigned int seg_type : 4,
+ s : 1,
+ dpl : 2,
+ p : 1,
+ reserved0 : 4,
+ avl : 1,
+ reserved1 : 1,
+ default_ops_size: 1,
+ g : 1,
+ null_bit : 1,
+ reserved2 : 15;
+ } fields;
+ unsigned int bytes;
+};
+
+/*
+ * World switch state
+ */
+typedef struct vmx_assist_context {
+ uint32_t eip; /* execution pointer */
+ uint32_t esp; /* stack pointer */
+ uint32_t eflags; /* flags register */
+ uint32_t cr0;
+ uint32_t cr3; /* page table directory */
+ uint32_t cr4;
+ uint32_t idtr_limit; /* idt */
+ uint32_t idtr_base;
+ uint32_t gdtr_limit; /* gdt */
+ uint32_t gdtr_base;
+ uint32_t cs_sel; /* cs selector */
+ uint32_t cs_limit;
+ uint32_t cs_base;
+ union vmcs_arbytes cs_arbytes;
+ uint32_t ds_sel; /* ds selector */
+ uint32_t ds_limit;
+ uint32_t ds_base;
+ union vmcs_arbytes ds_arbytes;
+ uint32_t es_sel; /* es selector */
+ uint32_t es_limit;
+ uint32_t es_base;
+ union vmcs_arbytes es_arbytes;
+ uint32_t ss_sel; /* ss selector */
+ uint32_t ss_limit;
+ uint32_t ss_base;
+ union vmcs_arbytes ss_arbytes;
+ uint32_t fs_sel; /* fs selector */
+ uint32_t fs_limit;
+ uint32_t fs_base;
+ union vmcs_arbytes fs_arbytes;
+ uint32_t gs_sel; /* gs selector */
+ uint32_t gs_limit;
+ uint32_t gs_base;
+ union vmcs_arbytes gs_arbytes;
+ uint32_t tr_sel; /* task selector */
+ uint32_t tr_limit;
+ uint32_t tr_base;
+ union vmcs_arbytes tr_arbytes;
+ uint32_t ldtr_sel; /* ldtr selector */
+ uint32_t ldtr_limit;
+ uint32_t ldtr_base;
+ union vmcs_arbytes ldtr_arbytes;
+} vmx_assist_context_t;
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* _VMX_ASSIST_H_ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r 399c68937d59 -r 9fc306e40a7c xen/include/public/io/ioreq.h
--- a/xen/include/public/io/ioreq.h Tue Jan 3 13:36:56 2006
+++ /dev/null Tue Jan 3 13:58:34 2006
@@ -1,103 +0,0 @@
-/*
- * ioreq.h: I/O request definitions for device models
- * Copyright (c) 2004, Intel Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope 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 _IOREQ_H_
-#define _IOREQ_H_
-
-#define IOREQ_READ 1
-#define IOREQ_WRITE 0
-
-#define STATE_INVALID 0
-#define STATE_IOREQ_READY 1
-#define STATE_IOREQ_INPROCESS 2
-#define STATE_IORESP_READY 3
-#define STATE_IORESP_HOOK 4
-
-#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
-
-/*
- * VMExit dispatcher should cooperate with instruction decoder to
- * prepare this structure and notify service OS and DM by sending
- * virq
- */
-typedef struct {
- uint64_t addr; /* physical address */
- uint64_t size; /* size in bytes */
- uint64_t count; /* for rep prefixes */
- union {
- uint64_t data; /* data */
- void *pdata; /* pointer to data */
- } u;
- uint8_t state:4;
- uint8_t pdata_valid:1; /* if 1, use pdata above */
- uint8_t dir:1; /* 1=read, 0=write */
- uint8_t df:1;
- uint8_t type; /* I/O type */
-} ioreq_t;
-
-#define MAX_VECTOR 256
-#define BITS_PER_BYTE 8
-#define INTR_LEN (MAX_VECTOR/(BITS_PER_BYTE * sizeof(uint64_t)))
-#define INTR_LEN_32 (MAX_VECTOR/(BITS_PER_BYTE * sizeof(uint32_t)))
-
-typedef struct {
- uint16_t pic_elcr;
- uint16_t pic_irr;
- uint16_t pic_last_irr;
- uint16_t pic_clear_irr;
- int eport; /* Event channel port */
-} global_iodata_t;
-
-typedef struct {
- ioreq_t vp_ioreq;
-} vcpu_iodata_t;
-
-typedef struct {
- global_iodata_t sp_global;
- vcpu_iodata_t vcpu_iodata[1];
-} shared_iopage_t;
-
-#define HVM_INFO_PAGE 0x0009F000
-#define HVM_INFO_OFFSET 0x00000800
-
-struct hvm_info_table {
- char signature[8]; /* "HVM INFO" */
- uint32_t length;
- uint8_t checksum;
- uint8_t acpi_enabled;
- uint8_t apic_enabled;
- uint8_t pad[1];
- uint32_t nr_vcpus;
-};
-
-#endif /* _IOREQ_H_ */
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
diff -r 399c68937d59 -r 9fc306e40a7c xen/include/public/vmx_assist.h
--- a/xen/include/public/vmx_assist.h Tue Jan 3 13:36:56 2006
+++ /dev/null Tue Jan 3 13:58:34 2006
@@ -1,97 +0,0 @@
-/*
- * vmx_assist.h: Context definitions for the VMXASSIST world switch.
- *
- * Leendert van Doorn, leendert@xxxxxxxxxxxxxx
- * Copyright (c) 2005, International Business Machines Corporation.
- */
-
-#ifndef _VMX_ASSIST_H_
-#define _VMX_ASSIST_H_
-
-#define VMXASSIST_BASE 0xD0000
-#define VMXASSIST_MAGIC 0x17101966
-#define VMXASSIST_MAGIC_OFFSET (VMXASSIST_BASE+8)
-
-#define VMXASSIST_NEW_CONTEXT (VMXASSIST_BASE + 12)
-#define VMXASSIST_OLD_CONTEXT (VMXASSIST_NEW_CONTEXT + 4)
-
-#ifndef __ASSEMBLY__
-
-union vmcs_arbytes {
- struct arbyte_fields {
- unsigned int seg_type : 4,
- s : 1,
- dpl : 2,
- p : 1,
- reserved0 : 4,
- avl : 1,
- reserved1 : 1,
- default_ops_size: 1,
- g : 1,
- null_bit : 1,
- reserved2 : 15;
- } fields;
- unsigned int bytes;
-};
-
-/*
- * World switch state
- */
-typedef struct vmx_assist_context {
- uint32_t eip; /* execution pointer */
- uint32_t esp; /* stack pointer */
- uint32_t eflags; /* flags register */
- uint32_t cr0;
- uint32_t cr3; /* page table directory */
- uint32_t cr4;
- uint32_t idtr_limit; /* idt */
- uint32_t idtr_base;
- uint32_t gdtr_limit; /* gdt */
- uint32_t gdtr_base;
- uint32_t cs_sel; /* cs selector */
- uint32_t cs_limit;
- uint32_t cs_base;
- union vmcs_arbytes cs_arbytes;
- uint32_t ds_sel; /* ds selector */
- uint32_t ds_limit;
- uint32_t ds_base;
- union vmcs_arbytes ds_arbytes;
- uint32_t es_sel; /* es selector */
- uint32_t es_limit;
- uint32_t es_base;
- union vmcs_arbytes es_arbytes;
- uint32_t ss_sel; /* ss selector */
- uint32_t ss_limit;
- uint32_t ss_base;
- union vmcs_arbytes ss_arbytes;
- uint32_t fs_sel; /* fs selector */
- uint32_t fs_limit;
- uint32_t fs_base;
- union vmcs_arbytes fs_arbytes;
- uint32_t gs_sel; /* gs selector */
- uint32_t gs_limit;
- uint32_t gs_base;
- union vmcs_arbytes gs_arbytes;
- uint32_t tr_sel; /* task selector */
- uint32_t tr_limit;
- uint32_t tr_base;
- union vmcs_arbytes tr_arbytes;
- uint32_t ldtr_sel; /* ldtr selector */
- uint32_t ldtr_limit;
- uint32_t ldtr_base;
- union vmcs_arbytes ldtr_arbytes;
-} vmx_assist_context_t;
-
-#endif /* __ASSEMBLY__ */
-
-#endif /* _VMX_ASSIST_H_ */
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|