arch/x86/include/asm/kvm.h
author Florian Westphal <fw@strlen.de>
Thu, 09 Apr 2009 12:07:21 +0200
changeset 2 d1f6d8b6f81c
parent 0 aa628870c1d3
permissions -rw-r--r--
Linux 2.6.29 for NSC 0.5.0.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
     1
#ifndef _ASM_X86_KVM_H
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
     2
#define _ASM_X86_KVM_H
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
     3
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
     4
/*
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
     5
 * KVM x86 specific structures and definitions
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
     6
 *
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
     7
 */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
     8
2
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents: 0
diff changeset
     9
#include <linux/types.h>
0
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    10
#include <linux/ioctl.h>
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    11
2
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents: 0
diff changeset
    12
/* Select x86 specific features in <linux/kvm.h> */
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents: 0
diff changeset
    13
#define __KVM_HAVE_PIT
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents: 0
diff changeset
    14
#define __KVM_HAVE_IOAPIC
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents: 0
diff changeset
    15
#define __KVM_HAVE_DEVICE_ASSIGNMENT
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents: 0
diff changeset
    16
#define __KVM_HAVE_MSI
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents: 0
diff changeset
    17
#define __KVM_HAVE_USER_NMI
d1f6d8b6f81c Linux 2.6.29 for NSC 0.5.0.
Florian Westphal <fw@strlen.de>
parents: 0
diff changeset
    18
0
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    19
/* Architectural interrupt line count. */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    20
#define KVM_NR_INTERRUPTS 256
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    21
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    22
struct kvm_memory_alias {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    23
	__u32 slot;  /* this has a different namespace than memory slots */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    24
	__u32 flags;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    25
	__u64 guest_phys_addr;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    26
	__u64 memory_size;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    27
	__u64 target_phys_addr;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    28
};
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    29
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    30
/* for KVM_GET_IRQCHIP and KVM_SET_IRQCHIP */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    31
struct kvm_pic_state {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    32
	__u8 last_irr;	/* edge detection */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    33
	__u8 irr;		/* interrupt request register */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    34
	__u8 imr;		/* interrupt mask register */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    35
	__u8 isr;		/* interrupt service register */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    36
	__u8 priority_add;	/* highest irq priority */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    37
	__u8 irq_base;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    38
	__u8 read_reg_select;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    39
	__u8 poll;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    40
	__u8 special_mask;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    41
	__u8 init_state;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    42
	__u8 auto_eoi;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    43
	__u8 rotate_on_auto_eoi;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    44
	__u8 special_fully_nested_mode;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    45
	__u8 init4;		/* true if 4 byte init */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    46
	__u8 elcr;		/* PIIX edge/trigger selection */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    47
	__u8 elcr_mask;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    48
};
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    49
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    50
#define KVM_IOAPIC_NUM_PINS  24
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    51
struct kvm_ioapic_state {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    52
	__u64 base_address;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    53
	__u32 ioregsel;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    54
	__u32 id;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    55
	__u32 irr;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    56
	__u32 pad;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    57
	union {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    58
		__u64 bits;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    59
		struct {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    60
			__u8 vector;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    61
			__u8 delivery_mode:3;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    62
			__u8 dest_mode:1;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    63
			__u8 delivery_status:1;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    64
			__u8 polarity:1;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    65
			__u8 remote_irr:1;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    66
			__u8 trig_mode:1;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    67
			__u8 mask:1;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    68
			__u8 reserve:7;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    69
			__u8 reserved[4];
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    70
			__u8 dest_id;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    71
		} fields;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    72
	} redirtbl[KVM_IOAPIC_NUM_PINS];
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    73
};
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    74
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    75
#define KVM_IRQCHIP_PIC_MASTER   0
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    76
#define KVM_IRQCHIP_PIC_SLAVE    1
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    77
#define KVM_IRQCHIP_IOAPIC       2
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    78
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    79
/* for KVM_GET_REGS and KVM_SET_REGS */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    80
struct kvm_regs {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    81
	/* out (KVM_GET_REGS) / in (KVM_SET_REGS) */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    82
	__u64 rax, rbx, rcx, rdx;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    83
	__u64 rsi, rdi, rsp, rbp;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    84
	__u64 r8,  r9,  r10, r11;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    85
	__u64 r12, r13, r14, r15;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    86
	__u64 rip, rflags;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    87
};
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    88
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    89
/* for KVM_GET_LAPIC and KVM_SET_LAPIC */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    90
#define KVM_APIC_REG_SIZE 0x400
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    91
struct kvm_lapic_state {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    92
	char regs[KVM_APIC_REG_SIZE];
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    93
};
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    94
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    95
struct kvm_segment {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    96
	__u64 base;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    97
	__u32 limit;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    98
	__u16 selector;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
    99
	__u8  type;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   100
	__u8  present, dpl, db, s, l, g, avl;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   101
	__u8  unusable;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   102
	__u8  padding;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   103
};
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   104
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   105
struct kvm_dtable {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   106
	__u64 base;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   107
	__u16 limit;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   108
	__u16 padding[3];
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   109
};
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   110
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   111
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   112
/* for KVM_GET_SREGS and KVM_SET_SREGS */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   113
struct kvm_sregs {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   114
	/* out (KVM_GET_SREGS) / in (KVM_SET_SREGS) */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   115
	struct kvm_segment cs, ds, es, fs, gs, ss;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   116
	struct kvm_segment tr, ldt;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   117
	struct kvm_dtable gdt, idt;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   118
	__u64 cr0, cr2, cr3, cr4, cr8;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   119
	__u64 efer;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   120
	__u64 apic_base;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   121
	__u64 interrupt_bitmap[(KVM_NR_INTERRUPTS + 63) / 64];
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   122
};
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   123
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   124
/* for KVM_GET_FPU and KVM_SET_FPU */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   125
struct kvm_fpu {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   126
	__u8  fpr[8][16];
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   127
	__u16 fcw;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   128
	__u16 fsw;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   129
	__u8  ftwx;  /* in fxsave format */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   130
	__u8  pad1;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   131
	__u16 last_opcode;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   132
	__u64 last_ip;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   133
	__u64 last_dp;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   134
	__u8  xmm[16][16];
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   135
	__u32 mxcsr;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   136
	__u32 pad2;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   137
};
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   138
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   139
struct kvm_msr_entry {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   140
	__u32 index;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   141
	__u32 reserved;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   142
	__u64 data;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   143
};
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   144
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   145
/* for KVM_GET_MSRS and KVM_SET_MSRS */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   146
struct kvm_msrs {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   147
	__u32 nmsrs; /* number of msrs in entries */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   148
	__u32 pad;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   149
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   150
	struct kvm_msr_entry entries[0];
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   151
};
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   152
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   153
/* for KVM_GET_MSR_INDEX_LIST */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   154
struct kvm_msr_list {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   155
	__u32 nmsrs; /* number of msrs in entries */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   156
	__u32 indices[0];
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   157
};
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   158
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   159
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   160
struct kvm_cpuid_entry {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   161
	__u32 function;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   162
	__u32 eax;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   163
	__u32 ebx;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   164
	__u32 ecx;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   165
	__u32 edx;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   166
	__u32 padding;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   167
};
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   168
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   169
/* for KVM_SET_CPUID */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   170
struct kvm_cpuid {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   171
	__u32 nent;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   172
	__u32 padding;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   173
	struct kvm_cpuid_entry entries[0];
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   174
};
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   175
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   176
struct kvm_cpuid_entry2 {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   177
	__u32 function;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   178
	__u32 index;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   179
	__u32 flags;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   180
	__u32 eax;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   181
	__u32 ebx;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   182
	__u32 ecx;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   183
	__u32 edx;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   184
	__u32 padding[3];
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   185
};
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   186
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   187
#define KVM_CPUID_FLAG_SIGNIFCANT_INDEX 1
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   188
#define KVM_CPUID_FLAG_STATEFUL_FUNC    2
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   189
#define KVM_CPUID_FLAG_STATE_READ_NEXT  4
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   190
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   191
/* for KVM_SET_CPUID2 */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   192
struct kvm_cpuid2 {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   193
	__u32 nent;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   194
	__u32 padding;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   195
	struct kvm_cpuid_entry2 entries[0];
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   196
};
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   197
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   198
/* for KVM_GET_PIT and KVM_SET_PIT */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   199
struct kvm_pit_channel_state {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   200
	__u32 count; /* can be 65536 */
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   201
	__u16 latched_count;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   202
	__u8 count_latched;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   203
	__u8 status_latched;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   204
	__u8 status;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   205
	__u8 read_state;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   206
	__u8 write_state;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   207
	__u8 write_latch;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   208
	__u8 rw_mode;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   209
	__u8 mode;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   210
	__u8 bcd;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   211
	__u8 gate;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   212
	__s64 count_load_time;
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   213
};
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   214
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   215
struct kvm_pit_state {
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   216
	struct kvm_pit_channel_state channels[3];
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   217
};
aa628870c1d3 Port of Linux 2.6.28 for use with network simulation cradle.
Florian Westphal <fw@strlen.de>
parents:
diff changeset
   218
#endif /* _ASM_X86_KVM_H */