Import non-DPLd Xen public headers from Xen 3.0.2-2

This commit is contained in:
bouyer 2006-05-07 10:54:39 +00:00
parent c8a960c560
commit 388f0b9508
6 changed files with 319 additions and 0 deletions

View File

@ -0,0 +1,53 @@
/******************************************************************************
* features.h
*
* Feature flags, reported by XENVER_get_features.
*
* Copyright (c) 2006, Keir Fraser <keir@xensource.com>
*/
#ifndef __XEN_PUBLIC_FEATURES_H__
#define __XEN_PUBLIC_FEATURES_H__
/*
* If set, the guest does not need to write-protect its pagetables, and can
* update them via direct writes.
*/
#define XENFEAT_writable_page_tables 0
/*
* If set, the guest does not need to write-protect its segment descriptor
* tables, and can update them via direct writes.
*/
#define XENFEAT_writable_descriptor_tables 1
/*
* If set, translation between the guest's 'pseudo-physical' address space
* and the host's machine address space are handled by the hypervisor. In this
* mode the guest does not need to perform phys-to/from-machine translations
* when performing page table operations.
*/
#define XENFEAT_auto_translated_physmap 2
/* If set, the guest is running in supervisor mode (e.g., x86 ring 0). */
#define XENFEAT_supervisor_mode_kernel 3
/*
* If set, the guest does not need to allocate x86 PAE page directories
* below 4GB. This flag is usually implied by auto_translated_physmap.
*/
#define XENFEAT_pae_pgdir_above_4gb 4
#define XENFEAT_NR_SUBMAPS 1
#endif /* __XEN_PUBLIC_FEATURES_H__ */
/*
* Local variables:
* mode: C
* c-set-style: "BSD"
* c-basic-offset: 4
* tab-width: 4
* indent-tabs-mode: nil
* End:
*/

View File

@ -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 pae_enabled;
uint32_t nr_vcpus;
};
#endif /* __XEN_PUBLIC_HVM_HVM_INFO_TABLE_H__ */

View File

@ -0,0 +1,97 @@
/*
* vmx_assist.h: Context definitions for the VMXASSIST world switch.
*
* Leendert van Doorn, leendert@watson.ibm.com
* 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:
*/

View File

@ -0,0 +1,55 @@
/*
* PCI Backend/Frontend Common Data Structures & Macros
*
* Author: Ryan Wilson <hap9@epoch.ncsc.mil>
*/
#ifndef __XEN_PCI_COMMON_H__
#define __XEN_PCI_COMMON_H__
/* Be sure to bump this number if you change this file */
#define XEN_PCI_MAGIC "7"
/* xen_pci_sharedinfo flags */
#define _XEN_PCIF_active (0)
#define XEN_PCIF_active (1<<_XEN_PCI_active)
/* xen_pci_op commands */
#define XEN_PCI_OP_conf_read (0)
#define XEN_PCI_OP_conf_write (1)
/* xen_pci_op error numbers */
#define XEN_PCI_ERR_success (0)
#define XEN_PCI_ERR_dev_not_found (-1)
#define XEN_PCI_ERR_invalid_offset (-2)
#define XEN_PCI_ERR_access_denied (-3)
#define XEN_PCI_ERR_not_implemented (-4)
/* XEN_PCI_ERR_op_failed - backend failed to complete the operation */
#define XEN_PCI_ERR_op_failed (-5)
struct xen_pci_op {
/* IN: what action to perform: XEN_PCI_OP_* */
uint32_t cmd;
/* OUT: will contain an error number (if any) from errno.h */
int32_t err;
/* IN: which device to touch */
uint32_t domain; /* PCI Domain/Segment */
uint32_t bus;
uint32_t devfn;
/* IN: which configuration registers to touch */
int32_t offset;
int32_t size;
/* IN/OUT: Contains the result after a READ or the value to WRITE */
uint32_t value;
};
struct xen_pci_sharedinfo {
/* flags - XEN_PCIF_* */
uint32_t flags;
struct xen_pci_op op;
};
#endif /* __XEN_PCI_COMMON_H__ */

View File

@ -0,0 +1,59 @@
/******************************************************************************
* nmi.h
*
* NMI callback registration and reason codes.
*
* Copyright (c) 2005, Keir Fraser <keir@xensource.com>
*/
#ifndef __XEN_PUBLIC_NMI_H__
#define __XEN_PUBLIC_NMI_H__
/*
* NMI reason codes:
* Currently these are x86-specific, stored in arch_shared_info.nmi_reason.
*/
/* I/O-check error reported via ISA port 0x61, bit 6. */
#define _XEN_NMIREASON_io_error 0
#define XEN_NMIREASON_io_error (1UL << _XEN_NMIREASON_io_error)
/* Parity error reported via ISA port 0x61, bit 7. */
#define _XEN_NMIREASON_parity_error 1
#define XEN_NMIREASON_parity_error (1UL << _XEN_NMIREASON_parity_error)
/* Unknown hardware-generated NMI. */
#define _XEN_NMIREASON_unknown 2
#define XEN_NMIREASON_unknown (1UL << _XEN_NMIREASON_unknown)
/*
* long nmi_op(unsigned int cmd, void *arg)
* NB. All ops return zero on success, else a negative error code.
*/
/*
* Register NMI callback for this (calling) VCPU. Currently this only makes
* sense for domain 0, vcpu 0. All other callers will be returned EINVAL.
* arg == pointer to xennmi_callback structure.
*/
#define XENNMI_register_callback 0
typedef struct xennmi_callback {
unsigned long handler_address;
unsigned long pad;
} xennmi_callback_t;
DEFINE_GUEST_HANDLE(xennmi_callback_t);
/*
* Deregister NMI callback for this (calling) VCPU.
* arg == NULL.
*/
#define XENNMI_unregister_callback 1
#endif /* __XEN_PUBLIC_NMI_H__ */
/*
* Local variables:
* mode: C
* c-set-style: "BSD"
* c-basic-offset: 4
* tab-width: 4
* indent-tabs-mode: nil
* End:
*/

View File

@ -0,0 +1,31 @@
/******************************************************************************
* xen-compat.h
*
* Guest OS interface to Xen. Compatibility layer.
*
* Copyright (c) 2006, Christian Limpach
*/
#ifndef __XEN_PUBLIC_XEN_COMPAT_H__
#define __XEN_PUBLIC_XEN_COMPAT_H__
#define __XEN_LATEST_INTERFACE_VERSION__ 0x00030101
#if defined(__XEN__)
/* Xen is built with matching headers and implements the latest interface. */
#define __XEN_INTERFACE_VERSION__ __XEN_LATEST_INTERFACE_VERSION__
#elif !defined(__XEN_INTERFACE_VERSION__)
/* Guests which do not specify a version get the legacy interface. */
#define __XEN_INTERFACE_VERSION__ 0x00000000
#endif
#if __XEN_INTERFACE_VERSION__ > __XEN_LATEST_INTERFACE_VERSION__
#error "These header files do not support the requested interface version."
#endif
#if __XEN_INTERFACE_VERSION__ < 0x00030101
#undef __HYPERVISOR_sched_op
#define __HYPERVISOR_sched_op __HYPERVISOR_sched_op_compat
#endif
#endif /* __XEN_PUBLIC_XEN_COMPAT_H__ */