[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Move public hvm interfaces into xen/include/public/hvm.
# 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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |