Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Typedefs | Functions
kvm_host.h File Reference
#include <linux/types.h>
#include <linux/mm.h>
#include <linux/kvm.h>
#include <linux/kvm_para.h>
#include <linux/kvm_types.h>
#include <asm/pal.h>
#include <asm/sal.h>
#include <asm/page.h>

Go to the source code of this file.

Data Structures

struct  kvm_vcpu_data
 
struct  kvm_vm_data
 
struct  kvm_mmio_req
 
struct  kvm_pal_call
 
struct  kvm_sal_call
 
struct  kvm_switch_rr6
 
union  ia64_ipi_a
 
union  ia64_ipi_d
 
struct  kvm_ipi_data
 
struct  kvm_ptc_g
 
struct  exit_ctl_data
 
union  pte_flags
 
union  ia64_pta
 
struct  thash_cb
 
struct  kvm_vcpu_stat
 
struct  kvm_vcpu_arch
 
struct  kvm_vm_stat
 
struct  kvm_sal_data
 
struct  kvm_arch_memory_slot
 
struct  kvm_arch
 
union  cpuid3_t
 
struct  kvm_pt_regs
 
struct  kvm_vmm_info
 

Macros

#define KVM_MEMORY_SLOTS   32
 
#define KVM_PRIVATE_MEM_SLOTS   4
 
#define KVM_COALESCED_MMIO_PAGE_OFFSET   1
 
#define EXIT_REASON_VM_PANIC   0
 
#define EXIT_REASON_MMIO_INSTRUCTION   1
 
#define EXIT_REASON_PAL_CALL   2
 
#define EXIT_REASON_SAL_CALL   3
 
#define EXIT_REASON_SWITCH_RR6   4
 
#define EXIT_REASON_VM_DESTROY   5
 
#define EXIT_REASON_EXTERNAL_INTERRUPT   6
 
#define EXIT_REASON_IPI   7
 
#define EXIT_REASON_PTC_G   8
 
#define EXIT_REASON_DEBUG   20
 
#define KVM_VMM_SIZE   (__IA64_UL_CONST(16)<<20)
 
#define KVM_VMM_SHIFT   24
 
#define KVM_VMM_BASE   0xD000000000000000
 
#define VMM_SIZE   (__IA64_UL_CONST(8)<<20)
 
#define KVM_VM_BUFFER_BASE   (KVM_VMM_BASE + VMM_SIZE)
 
#define KVM_VM_BUFFER_SIZE   (__IA64_UL_CONST(8)<<20)
 
#define KVM_VM_DATA_SHIFT   26
 
#define KVM_VM_DATA_SIZE   (__IA64_UL_CONST(1) << KVM_VM_DATA_SHIFT)
 
#define KVM_VM_DATA_BASE   (KVM_VMM_BASE + KVM_VM_DATA_SIZE)
 
#define KVM_P2M_BASE   KVM_VM_DATA_BASE
 
#define KVM_P2M_SIZE   (__IA64_UL_CONST(24) << 20)
 
#define VHPT_SHIFT   16
 
#define VHPT_SIZE   (__IA64_UL_CONST(1) << VHPT_SHIFT)
 
#define VHPT_NUM_ENTRIES   (__IA64_UL_CONST(1) << (VHPT_SHIFT-5))
 
#define VTLB_SHIFT   16
 
#define VTLB_SIZE   (__IA64_UL_CONST(1) << VTLB_SHIFT)
 
#define VTLB_NUM_ENTRIES   (1UL << (VHPT_SHIFT-5))
 
#define VPD_SHIFT   16
 
#define VPD_SIZE   (__IA64_UL_CONST(1) << VPD_SHIFT)
 
#define VCPU_STRUCT_SHIFT   16
 
#define VCPU_STRUCT_SIZE   (__IA64_UL_CONST(1) << VCPU_STRUCT_SHIFT)
 
#define KVM_STK_SHIFT   16
 
#define KVM_STK_OFFSET   (__IA64_UL_CONST(1)<< KVM_STK_SHIFT)
 
#define KVM_VM_STRUCT_SHIFT   19
 
#define KVM_VM_STRUCT_SIZE   (__IA64_UL_CONST(1) << KVM_VM_STRUCT_SHIFT)
 
#define KVM_MEM_DIRY_LOG_SHIFT   19
 
#define KVM_MEM_DIRTY_LOG_SIZE   (__IA64_UL_CONST(1) << KVM_MEM_DIRY_LOG_SHIFT)
 
#define KVM_MAX_VCPUS
 
#define KVM_MAX_MEM_SIZE   (KVM_P2M_SIZE >> 3 << PAGE_SHIFT)
 
#define VMM_LOG_LEN   256
 
#define VCPU_BASE(n)
 
#define KVM_VM_BASE
 
#define KVM_MEM_DIRTY_LOG_BASE
 
#define VHPT_BASE(n)   (VCPU_BASE(n) + offsetof(struct kvm_vcpu_data, vcpu_vhpt))
 
#define VTLB_BASE(n)   (VCPU_BASE(n) + offsetof(struct kvm_vcpu_data, vcpu_vtlb))
 
#define VPD_BASE(n)   (VCPU_BASE(n) + offsetof(struct kvm_vcpu_data, vcpu_vpd))
 
#define VCPU_STRUCT_BASE(n)
 
#define IOREQ_READ   1
 
#define IOREQ_WRITE   0
 
#define STATE_IOREQ_NONE   0
 
#define STATE_IOREQ_READY   1
 
#define STATE_IOREQ_INPROCESS   2
 
#define STATE_IORESP_READY   3
 
#define GPFN_MEM   (0UL << 60) /* Guest pfn is normal mem */
 
#define GPFN_FRAME_BUFFER   (1UL << 60) /* VGA framebuffer */
 
#define GPFN_LOW_MMIO   (2UL << 60) /* Low MMIO range */
 
#define GPFN_PIB   (3UL << 60) /* PIB base */
 
#define GPFN_IOSAPIC   (4UL << 60) /* IOSAPIC base */
 
#define GPFN_LEGACY_IO   (5UL << 60) /* Legacy I/O base */
 
#define GPFN_GFW   (6UL << 60) /* Guest Firmware */
 
#define GPFN_PHYS_MMIO   (7UL << 60) /* Directed MMIO Range */
 
#define GPFN_IO_MASK   (7UL << 60) /* Guest pfn is I/O type */
 
#define GPFN_INV_MASK   (1UL << 63) /* Guest pfn is invalid */
 
#define INVALID_MFN   (~0UL)
 
#define MEM_G   (1UL << 30)
 
#define MEM_M   (1UL << 20)
 
#define MMIO_START   (3 * MEM_G)
 
#define MMIO_SIZE   (512 * MEM_M)
 
#define VGA_IO_START   0xA0000UL
 
#define VGA_IO_SIZE   0x20000
 
#define LEGACY_IO_START   (MMIO_START + MMIO_SIZE)
 
#define LEGACY_IO_SIZE   (64 * MEM_M)
 
#define IO_SAPIC_START   0xfec00000UL
 
#define IO_SAPIC_SIZE   0x100000
 
#define PIB_START   0xfee00000UL
 
#define PIB_SIZE   0x200000
 
#define GFW_START   (4 * MEM_G - 16 * MEM_M)
 
#define GFW_SIZE   (16 * MEM_M)
 
#define dest_Fixed   IOSAPIC_FIXED
 
#define dest_LowestPrio   IOSAPIC_LOWEST_PRIORITY
 
#define NMI_VECTOR   2
 
#define ExtINT_VECTOR   0
 
#define NULL_VECTOR   (-1)
 
#define IA64_SPURIOUS_INT_VECTOR   0x0f
 
#define VCPU_LID(v)   (((u64)(v)->vcpu_id) << 24)
 
#define SAPIC_DELIV_SHIFT   8
 
#define SAPIC_FIXED   0x0
 
#define SAPIC_LOWEST_PRIORITY   0x1
 
#define SAPIC_PMI   0x2
 
#define SAPIC_NMI   0x4
 
#define SAPIC_INIT   0x5
 
#define SAPIC_EXTINT   0x7
 
#define KVM_REQ_PTC_G   32
 
#define KVM_REQ_RESUME   33
 
#define KVM_HPAGE_GFN_SHIFT(x)   0
 
#define KVM_NR_PAGE_SIZES   1
 
#define KVM_PAGES_PER_HPAGE(x)   1
 
#define KVM_MP_STATE_RUNNABLE   0
 
#define KVM_MP_STATE_UNINITIALIZED   1
 
#define KVM_MP_STATE_INIT_RECEIVED   2
 
#define KVM_MP_STATE_HALTED   3
 
#define MAX_PTC_G_NUM   3
 
#define __KVM_HAVE_ARCH_VM_ALLOC   1
 

Typedefs

typedef int kvm_vmm_entry (void)
 
typedef void kvm_tramp_entry (union context *host, union context *guest)
 

Functions

int kvm_highest_pending_irq (struct kvm_vcpu *vcpu)
 
int kvm_emulate_halt (struct kvm_vcpu *vcpu)
 
int kvm_pal_emul (struct kvm_vcpu *vcpu, struct kvm_run *kvm_run)
 
void kvm_sal_emul (struct kvm_vcpu *vcpu)
 
struct kvmkvm_arch_alloc_vm (void)
 
void kvm_arch_free_vm (struct kvm *kvm)
 

Macro Definition Documentation

#define __KVM_HAVE_ARCH_VM_ALLOC   1

Definition at line 599 of file kvm_host.h.

#define dest_Fixed   IOSAPIC_FIXED

Definition at line 211 of file kvm_host.h.

#define dest_LowestPrio   IOSAPIC_LOWEST_PRIORITY

Definition at line 212 of file kvm_host.h.

#define EXIT_REASON_DEBUG   20

Definition at line 42 of file kvm_host.h.

#define EXIT_REASON_EXTERNAL_INTERRUPT   6

Definition at line 39 of file kvm_host.h.

#define EXIT_REASON_IPI   7

Definition at line 40 of file kvm_host.h.

#define EXIT_REASON_MMIO_INSTRUCTION   1

Definition at line 34 of file kvm_host.h.

#define EXIT_REASON_PAL_CALL   2

Definition at line 35 of file kvm_host.h.

#define EXIT_REASON_PTC_G   8

Definition at line 41 of file kvm_host.h.

#define EXIT_REASON_SAL_CALL   3

Definition at line 36 of file kvm_host.h.

#define EXIT_REASON_SWITCH_RR6   4

Definition at line 37 of file kvm_host.h.

#define EXIT_REASON_VM_DESTROY   5

Definition at line 38 of file kvm_host.h.

#define EXIT_REASON_VM_PANIC   0

Definition at line 33 of file kvm_host.h.

#define ExtINT_VECTOR   0

Definition at line 215 of file kvm_host.h.

#define GFW_SIZE   (16 * MEM_M)

Definition at line 208 of file kvm_host.h.

#define GFW_START   (4 * MEM_G - 16 * MEM_M)

Definition at line 207 of file kvm_host.h.

#define GPFN_FRAME_BUFFER   (1UL << 60) /* VGA framebuffer */

Definition at line 184 of file kvm_host.h.

#define GPFN_GFW   (6UL << 60) /* Guest Firmware */

Definition at line 189 of file kvm_host.h.

#define GPFN_INV_MASK   (1UL << 63) /* Guest pfn is invalid */

Definition at line 193 of file kvm_host.h.

#define GPFN_IO_MASK   (7UL << 60) /* Guest pfn is I/O type */

Definition at line 192 of file kvm_host.h.

#define GPFN_IOSAPIC   (4UL << 60) /* IOSAPIC base */

Definition at line 187 of file kvm_host.h.

#define GPFN_LEGACY_IO   (5UL << 60) /* Legacy I/O base */

Definition at line 188 of file kvm_host.h.

#define GPFN_LOW_MMIO   (2UL << 60) /* Low MMIO range */

Definition at line 185 of file kvm_host.h.

#define GPFN_MEM   (0UL << 60) /* Guest pfn is normal mem */

Definition at line 183 of file kvm_host.h.

#define GPFN_PHYS_MMIO   (7UL << 60) /* Directed MMIO Range */

Definition at line 190 of file kvm_host.h.

#define GPFN_PIB   (3UL << 60) /* PIB base */

Definition at line 186 of file kvm_host.h.

#define IA64_SPURIOUS_INT_VECTOR   0x0f

Definition at line 217 of file kvm_host.h.

#define INVALID_MFN   (~0UL)

Definition at line 194 of file kvm_host.h.

#define IO_SAPIC_SIZE   0x100000

Definition at line 204 of file kvm_host.h.

#define IO_SAPIC_START   0xfec00000UL

Definition at line 203 of file kvm_host.h.

#define IOREQ_READ   1

Definition at line 174 of file kvm_host.h.

#define IOREQ_WRITE   0

Definition at line 175 of file kvm_host.h.

#define KVM_COALESCED_MMIO_PAGE_OFFSET   1

Definition at line 30 of file kvm_host.h.

#define KVM_HPAGE_GFN_SHIFT (   x)    0

Definition at line 238 of file kvm_host.h.

#define KVM_MAX_MEM_SIZE   (KVM_P2M_SIZE >> 3 << PAGE_SHIFT)

Definition at line 132 of file kvm_host.h.

#define KVM_MAX_VCPUS
Value:
KVM_MEM_DIRTY_LOG_SIZE) / sizeof(struct kvm_vcpu_data)

Definition at line 130 of file kvm_host.h.

#define KVM_MEM_DIRTY_LOG_BASE
Value:
offsetof(struct kvm_vm_data, kvm_mem_dirty_log)

Definition at line 164 of file kvm_host.h.

#define KVM_MEM_DIRTY_LOG_SIZE   (__IA64_UL_CONST(1) << KVM_MEM_DIRY_LOG_SHIFT)

Definition at line 125 of file kvm_host.h.

#define KVM_MEM_DIRY_LOG_SHIFT   19

Definition at line 124 of file kvm_host.h.

#define KVM_MEMORY_SLOTS   32

Definition at line 26 of file kvm_host.h.

#define KVM_MP_STATE_HALTED   3

Definition at line 382 of file kvm_host.h.

#define KVM_MP_STATE_INIT_RECEIVED   2

Definition at line 381 of file kvm_host.h.

#define KVM_MP_STATE_RUNNABLE   0

Definition at line 379 of file kvm_host.h.

#define KVM_MP_STATE_UNINITIALIZED   1

Definition at line 380 of file kvm_host.h.

#define KVM_NR_PAGE_SIZES   1

Definition at line 239 of file kvm_host.h.

#define KVM_P2M_BASE   KVM_VM_DATA_BASE

Definition at line 98 of file kvm_host.h.

#define KVM_P2M_SIZE   (__IA64_UL_CONST(24) << 20)

Definition at line 99 of file kvm_host.h.

#define KVM_PAGES_PER_HPAGE (   x)    1

Definition at line 240 of file kvm_host.h.

#define KVM_PRIVATE_MEM_SLOTS   4

Definition at line 28 of file kvm_host.h.

#define KVM_REQ_PTC_G   32

Definition at line 235 of file kvm_host.h.

#define KVM_REQ_RESUME   33

Definition at line 236 of file kvm_host.h.

#define KVM_STK_OFFSET   (__IA64_UL_CONST(1)<< KVM_STK_SHIFT)

Definition at line 119 of file kvm_host.h.

#define KVM_STK_SHIFT   16

Definition at line 118 of file kvm_host.h.

#define KVM_VM_BASE
Value:
offsetof(struct kvm_vm_data, kvm_vm_struct))

Definition at line 162 of file kvm_host.h.

#define KVM_VM_BUFFER_BASE   (KVM_VMM_BASE + VMM_SIZE)

Definition at line 54 of file kvm_host.h.

#define KVM_VM_BUFFER_SIZE   (__IA64_UL_CONST(8)<<20)

Definition at line 55 of file kvm_host.h.

#define KVM_VM_DATA_BASE   (KVM_VMM_BASE + KVM_VM_DATA_SIZE)

Definition at line 96 of file kvm_host.h.

#define KVM_VM_DATA_SHIFT   26

Definition at line 94 of file kvm_host.h.

#define KVM_VM_DATA_SIZE   (__IA64_UL_CONST(1) << KVM_VM_DATA_SHIFT)

Definition at line 95 of file kvm_host.h.

#define KVM_VM_STRUCT_SHIFT   19

Definition at line 121 of file kvm_host.h.

#define KVM_VM_STRUCT_SIZE   (__IA64_UL_CONST(1) << KVM_VM_STRUCT_SHIFT)

Definition at line 122 of file kvm_host.h.

#define KVM_VMM_BASE   0xD000000000000000

Definition at line 47 of file kvm_host.h.

#define KVM_VMM_SHIFT   24

Definition at line 46 of file kvm_host.h.

#define KVM_VMM_SIZE   (__IA64_UL_CONST(16)<<20)

Definition at line 45 of file kvm_host.h.

#define LEGACY_IO_SIZE   (64 * MEM_M)

Definition at line 202 of file kvm_host.h.

#define LEGACY_IO_START   (MMIO_START + MMIO_SIZE)

Definition at line 201 of file kvm_host.h.

#define MAX_PTC_G_NUM   3

Definition at line 385 of file kvm_host.h.

#define MEM_G   (1UL << 30)

Definition at line 195 of file kvm_host.h.

#define MEM_M   (1UL << 20)

Definition at line 196 of file kvm_host.h.

#define MMIO_SIZE   (512 * MEM_M)

Definition at line 198 of file kvm_host.h.

#define MMIO_START   (3 * MEM_G)

Definition at line 197 of file kvm_host.h.

#define NMI_VECTOR   2

Definition at line 214 of file kvm_host.h.

#define NULL_VECTOR   (-1)

Definition at line 216 of file kvm_host.h.

#define PIB_SIZE   0x200000

Definition at line 206 of file kvm_host.h.

#define PIB_START   0xfee00000UL

Definition at line 205 of file kvm_host.h.

#define SAPIC_DELIV_SHIFT   8

Definition at line 224 of file kvm_host.h.

#define SAPIC_EXTINT   0x7

Definition at line 230 of file kvm_host.h.

#define SAPIC_FIXED   0x0

Definition at line 225 of file kvm_host.h.

#define SAPIC_INIT   0x5

Definition at line 229 of file kvm_host.h.

#define SAPIC_LOWEST_PRIORITY   0x1

Definition at line 226 of file kvm_host.h.

#define SAPIC_NMI   0x4

Definition at line 228 of file kvm_host.h.

#define SAPIC_PMI   0x2

Definition at line 227 of file kvm_host.h.

#define STATE_IOREQ_INPROCESS   2

Definition at line 179 of file kvm_host.h.

#define STATE_IOREQ_NONE   0

Definition at line 177 of file kvm_host.h.

#define STATE_IOREQ_READY   1

Definition at line 178 of file kvm_host.h.

#define STATE_IORESP_READY   3

Definition at line 180 of file kvm_host.h.

#define VCPU_BASE (   n)
Value:
offsetof(struct kvm_vm_data, vcpu_data[n]))

Definition at line 160 of file kvm_host.h.

#define VCPU_LID (   v)    (((u64)(v)->vcpu_id) << 24)

Definition at line 219 of file kvm_host.h.

#define VCPU_STRUCT_BASE (   n)
Value:
(VCPU_BASE(n) + \
offsetof(struct kvm_vcpu_data, vcpu_struct))

Definition at line 170 of file kvm_host.h.

#define VCPU_STRUCT_SHIFT   16

Definition at line 112 of file kvm_host.h.

#define VCPU_STRUCT_SIZE   (__IA64_UL_CONST(1) << VCPU_STRUCT_SHIFT)

Definition at line 113 of file kvm_host.h.

#define VGA_IO_SIZE   0x20000

Definition at line 200 of file kvm_host.h.

#define VGA_IO_START   0xA0000UL

Definition at line 199 of file kvm_host.h.

#define VHPT_BASE (   n)    (VCPU_BASE(n) + offsetof(struct kvm_vcpu_data, vcpu_vhpt))

Definition at line 167 of file kvm_host.h.

#define VHPT_NUM_ENTRIES   (__IA64_UL_CONST(1) << (VHPT_SHIFT-5))

Definition at line 103 of file kvm_host.h.

#define VHPT_SHIFT   16

Definition at line 101 of file kvm_host.h.

#define VHPT_SIZE   (__IA64_UL_CONST(1) << VHPT_SHIFT)

Definition at line 102 of file kvm_host.h.

#define VMM_LOG_LEN   256

Definition at line 134 of file kvm_host.h.

#define VMM_SIZE   (__IA64_UL_CONST(8)<<20)

Definition at line 48 of file kvm_host.h.

#define VPD_BASE (   n)    (VCPU_BASE(n) + offsetof(struct kvm_vcpu_data, vcpu_vpd))

Definition at line 169 of file kvm_host.h.

#define VPD_SHIFT   16

Definition at line 109 of file kvm_host.h.

#define VPD_SIZE   (__IA64_UL_CONST(1) << VPD_SHIFT)

Definition at line 110 of file kvm_host.h.

#define VTLB_BASE (   n)    (VCPU_BASE(n) + offsetof(struct kvm_vcpu_data, vcpu_vtlb))

Definition at line 168 of file kvm_host.h.

#define VTLB_NUM_ENTRIES   (1UL << (VHPT_SHIFT-5))

Definition at line 107 of file kvm_host.h.

#define VTLB_SHIFT   16

Definition at line 105 of file kvm_host.h.

#define VTLB_SIZE   (__IA64_UL_CONST(1) << VTLB_SHIFT)

Definition at line 106 of file kvm_host.h.

Typedef Documentation

typedef void kvm_tramp_entry(union context *host, union context *guest)

Definition at line 583 of file kvm_host.h.

typedef int kvm_vmm_entry(void)

Definition at line 582 of file kvm_host.h.

Function Documentation

struct kvm* kvm_arch_alloc_vm ( void  )
read

Definition at line 755 of file kvm-ia64.c.

void kvm_arch_free_vm ( struct kvm kvm)

Definition at line 1349 of file kvm-ia64.c.

int kvm_emulate_halt ( struct kvm_vcpu vcpu)

Definition at line 448 of file kvm-ia64.c.

int kvm_highest_pending_irq ( struct kvm_vcpu vcpu)

Definition at line 1914 of file kvm-ia64.c.

int kvm_pal_emul ( struct kvm_vcpu vcpu,
struct kvm_run kvm_run 
)

Definition at line 439 of file kvm_fw.c.

void kvm_sal_emul ( struct kvm_vcpu vcpu)

Definition at line 663 of file kvm_fw.c.