diff options
author | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-01-03 14:58:34 +0100 |
---|---|---|
committer | kaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk> | 2006-01-03 14:58:34 +0100 |
commit | 6b38c4a0e1a12ad3f1f869459a814da06c13b1c3 (patch) | |
tree | 93235df259d6c4ec1e9a02c536953082af44ff74 | |
parent | 8f5424c6bb7becdf17aee005d285de9d83b293b3 (diff) | |
download | xen-6b38c4a0e1a12ad3f1f869459a814da06c13b1c3.tar.gz xen-6b38c4a0e1a12ad3f1f869459a814da06c13b1c3.tar.bz2 xen-6b38c4a0e1a12ad3f1f869459a814da06c13b1c3.zip |
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@xensource.com>
29 files changed, 63 insertions, 55 deletions
diff --git a/tools/Rules.mk b/tools/Rules.mk index 2a003b1d7a..4672a40888 100644 --- a/tools/Rules.mk +++ b/tools/Rules.mk @@ -35,6 +35,8 @@ mk-symlinks: LINUX_ROOT=$(XEN_ROOT)/linux-2.6-xen-sparse 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 --git a/tools/firmware/vmxassist/acpi_madt.c b/tools/firmware/vmxassist/acpi_madt.c index 6f29ec9345..8e86646067 100644 --- a/tools/firmware/vmxassist/acpi_madt.c +++ b/tools/firmware/vmxassist/acpi_madt.c @@ -17,26 +17,16 @@ * 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; static int validate_hvm_info(struct hvm_info_table *t) @@ -70,7 +60,7 @@ get_hvm_info_table(void) 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 --git a/tools/firmware/vmxassist/vm86.h b/tools/firmware/vmxassist/vm86.h index 2b6c64d183..d9798bce7e 100644 --- a/tools/firmware/vmxassist/vm86.h +++ b/tools/firmware/vmxassist/vm86.h @@ -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 --git a/tools/ioemu/hw/i8254.c b/tools/ioemu/hw/i8254.c index 111a6c6144..226db96962 100644 --- a/tools/ioemu/hw/i8254.c +++ b/tools/ioemu/hw/i8254.c @@ -23,7 +23,7 @@ */ #include "vl.h" #include <xenctrl.h> -#include <xen/io/ioreq.h> +#include <xen/hvm/ioreq.h> //#define DEBUG_PIT diff --git a/tools/ioemu/hw/i8259.c b/tools/ioemu/hw/i8259.c index 8009eea130..6385bca28f 100644 --- a/tools/ioemu/hw/i8259.c +++ b/tools/ioemu/hw/i8259.c @@ -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 --git a/tools/ioemu/hw/i8259_stub.c b/tools/ioemu/hw/i8259_stub.c index 7dd0062803..1ca5dc9cf3 100644 --- a/tools/ioemu/hw/i8259_stub.c +++ b/tools/ioemu/hw/i8259_stub.c @@ -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 --git a/tools/ioemu/target-i386-dm/helper2.c b/tools/ioemu/target-i386-dm/helper2.c index d2a618c580..4d3088ce3b 100644 --- a/tools/ioemu/target-i386-dm/helper2.c +++ b/tools/ioemu/target-i386-dm/helper2.c @@ -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 --git a/tools/libxc/xc_ia64_stubs.c b/tools/libxc/xc_ia64_stubs.c index ab3a6c1222..a5ae925a40 100644 --- a/tools/libxc/xc_ia64_stubs.c +++ b/tools/libxc/xc_ia64_stubs.c @@ -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 --git a/tools/libxc/xc_vmx_build.c b/tools/libxc/xc_vmx_build.c index d13026e1bd..7e6839b65d 100644 --- a/tools/libxc/xc_vmx_build.c +++ b/tools/libxc/xc_vmx_build.c @@ -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 @@ static int set_hvm_info(int xc_handle, uint32_t dom, 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 --git a/xen/arch/ia64/vmx/mmio.c b/xen/arch/ia64/vmx/mmio.c index b3668acb81..342fa87621 100644 --- a/xen/arch/ia64/vmx/mmio.c +++ b/xen/arch/ia64/vmx/mmio.c @@ -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 --git a/xen/arch/ia64/vmx/vmx_init.c b/xen/arch/ia64/vmx/vmx_init.c index 0920b8c14c..788b7bc1a0 100644 --- a/xen/arch/ia64/vmx/vmx_init.c +++ b/xen/arch/ia64/vmx/vmx_init.c @@ -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 --git a/xen/arch/ia64/vmx/vmx_support.c b/xen/arch/ia64/vmx/vmx_support.c index 19ea7be6de..801eba6cf8 100644 --- a/xen/arch/ia64/vmx/vmx_support.c +++ b/xen/arch/ia64/vmx/vmx_support.c @@ -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 --git a/xen/arch/ia64/xen/domain.c b/xen/arch/ia64/xen/domain.c index b784372cd8..129294c840 100644 --- a/xen/arch/ia64/xen/domain.c +++ b/xen/arch/ia64/xen/domain.c @@ -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 --git a/xen/arch/x86/dm/i8259.c b/xen/arch/x86/dm/i8259.c index c0d735dc52..8a27835e9f 100644 --- a/xen/arch/x86/dm/i8259.c +++ b/xen/arch/x86/dm/i8259.c @@ -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 --git a/xen/arch/x86/dm/vmx_vioapic.c b/xen/arch/x86/dm/vmx_vioapic.c index 769eb59f22..201788e858 100644 --- a/xen/arch/x86/dm/vmx_vioapic.c +++ b/xen/arch/x86/dm/vmx_vioapic.c @@ -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 --git a/xen/arch/x86/vmx.c b/xen/arch/x86/vmx.c index 46ee63584b..4e64e193d5 100644 --- a/xen/arch/x86/vmx.c +++ b/xen/arch/x86/vmx.c @@ -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 --git a/xen/arch/x86/vmx_intercept.c b/xen/arch/x86/vmx_intercept.c index 8bac8a8e5c..b4633b6c35 100644 --- a/xen/arch/x86/vmx_intercept.c +++ b/xen/arch/x86/vmx_intercept.c @@ -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 --git a/xen/arch/x86/vmx_io.c b/xen/arch/x86/vmx_io.c index b7689228bf..955763f125 100644 --- a/xen/arch/x86/vmx_io.c +++ b/xen/arch/x86/vmx_io.c @@ -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 --git a/xen/arch/x86/vmx_platform.c b/xen/arch/x86/vmx_platform.c index 2ee14c65ec..45d1e0052b 100644 --- a/xen/arch/x86/vmx_platform.c +++ b/xen/arch/x86/vmx_platform.c @@ -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 --git a/xen/arch/x86/vmx_vlapic.c b/xen/arch/x86/vmx_vlapic.c index 2574ba4db5..82b167b117 100644 --- a/xen/arch/x86/vmx_vlapic.c +++ b/xen/arch/x86/vmx_vlapic.c @@ -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 --git a/xen/arch/x86/vmx_vmcs.c b/xen/arch/x86/vmx_vmcs.c index 489482358a..64fa3b467e 100644 --- a/xen/arch/x86/vmx_vmcs.c +++ b/xen/arch/x86/vmx_vmcs.c @@ -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 @@ static void vmx_get_hvm_info(struct domain *d) 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 --git a/xen/include/asm-ia64/vmx.h b/xen/include/asm-ia64/vmx.h index f682b5acd1..910cc9b035 100644 --- a/xen/include/asm-ia64/vmx.h +++ b/xen/include/asm-ia64/vmx.h @@ -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 --git a/xen/include/asm-x86/vmx.h b/xen/include/asm-x86/vmx.h index 8796482e5b..f109a9cf53 100644 --- a/xen/include/asm-x86/vmx.h +++ b/xen/include/asm-x86/vmx.h @@ -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 --git a/xen/include/asm-x86/vmx_intercept.h b/xen/include/asm-x86/vmx_intercept.h index d832ecf12c..11487ebe1b 100644 --- a/xen/include/asm-x86/vmx_intercept.h +++ b/xen/include/asm-x86/vmx_intercept.h @@ -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 --git a/xen/include/asm-x86/vmx_vlapic.h b/xen/include/asm-x86/vmx_vlapic.h index ef33d42dab..da280d1d0b 100644 --- a/xen/include/asm-x86/vmx_vlapic.h +++ b/xen/include/asm-x86/vmx_vlapic.h @@ -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 --git a/xen/include/asm-x86/vmx_vmcs.h b/xen/include/asm-x86/vmx_vmcs.h index 53bde6dc5a..ee3cc77820 100644 --- a/xen/include/asm-x86/vmx_vmcs.h +++ b/xen/include/asm-x86/vmx_vmcs.h @@ -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 --git a/xen/include/public/hvm/hvm_info_table.h b/xen/include/public/hvm/hvm_info_table.h new file mode 100644 index 0000000000..a576eb7c50 --- /dev/null +++ b/xen/include/public/hvm/hvm_info_table.h @@ -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 --git a/xen/include/public/io/ioreq.h b/xen/include/public/hvm/ioreq.h index 22f4fcb6bc..308ac39c9a 100644 --- a/xen/include/public/io/ioreq.h +++ b/xen/include/public/hvm/ioreq.h @@ -77,19 +77,6 @@ typedef struct { 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_ */ /* diff --git a/xen/include/public/vmx_assist.h b/xen/include/public/hvm/vmx_assist.h index 4826628c2f..4826628c2f 100644 --- a/xen/include/public/vmx_assist.h +++ b/xen/include/public/hvm/vmx_assist.h |