136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#ifndef _ASM_X86_KVM_H 236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define _ASM_X86_KVM_H 336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner/* 536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner * KVM x86 specific structures and definitions 636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner * 736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner */ 836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#include <linux/types.h> 1036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#include <linux/ioctl.h> 1136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 1236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner/* Select x86 specific features in <linux/kvm.h> */ 1336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define __KVM_HAVE_PIT 1436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define __KVM_HAVE_IOAPIC 1536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define __KVM_HAVE_DEVICE_ASSIGNMENT 1636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define __KVM_HAVE_MSI 1736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define __KVM_HAVE_USER_NMI 1836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define __KVM_HAVE_GUEST_DEBUG 1936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define __KVM_HAVE_MSIX 2036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define __KVM_HAVE_MCE 2136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define __KVM_HAVE_PIT_STATE2 2236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 2336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner/* Architectural interrupt line count. */ 2436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define KVM_NR_INTERRUPTS 256 2536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 2636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_memory_alias { 2736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 slot; /* this has a different namespace than memory slots */ 2836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 flags; 2936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 guest_phys_addr; 3036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 memory_size; 3136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 target_phys_addr; 3236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 3336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 3436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner/* for KVM_GET_IRQCHIP and KVM_SET_IRQCHIP */ 3536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_pic_state { 3636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 last_irr; /* edge detection */ 3736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 irr; /* interrupt request register */ 3836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 imr; /* interrupt mask register */ 3936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 isr; /* interrupt service register */ 4036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 priority_add; /* highest irq priority */ 4136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 irq_base; 4236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 read_reg_select; 4336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 poll; 4436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 special_mask; 4536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 init_state; 4636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 auto_eoi; 4736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 rotate_on_auto_eoi; 4836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 special_fully_nested_mode; 4936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 init4; /* true if 4 byte init */ 5036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 elcr; /* PIIX edge/trigger selection */ 5136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 elcr_mask; 5236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 5336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 5436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define KVM_IOAPIC_NUM_PINS 24 5536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_ioapic_state { 5636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 base_address; 5736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 ioregsel; 5836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 id; 5936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 irr; 6036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 pad; 6136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner union { 6236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 bits; 6336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner struct { 6436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 vector; 6536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 delivery_mode:3; 6636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 dest_mode:1; 6736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 delivery_status:1; 6836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 polarity:1; 6936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 remote_irr:1; 7036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 trig_mode:1; 7136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 mask:1; 7236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 reserve:7; 7336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 reserved[4]; 7436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 dest_id; 7536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner } fields; 7636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner } redirtbl[KVM_IOAPIC_NUM_PINS]; 7736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 7836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 7936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define KVM_IRQCHIP_PIC_MASTER 0 8036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define KVM_IRQCHIP_PIC_SLAVE 1 8136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define KVM_IRQCHIP_IOAPIC 2 8236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 8336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner/* for KVM_GET_REGS and KVM_SET_REGS */ 8436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_regs { 8536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner /* out (KVM_GET_REGS) / in (KVM_SET_REGS) */ 8636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 rax, rbx, rcx, rdx; 8736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 rsi, rdi, rsp, rbp; 8836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 r8, r9, r10, r11; 8936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 r12, r13, r14, r15; 9036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 rip, rflags; 9136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 9236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 9336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner/* for KVM_GET_LAPIC and KVM_SET_LAPIC */ 9436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define KVM_APIC_REG_SIZE 0x400 9536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_lapic_state { 9636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner char regs[KVM_APIC_REG_SIZE]; 9736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 9836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 9936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_segment { 10036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 base; 10136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 limit; 10236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u16 selector; 10336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 type; 10436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 present, dpl, db, s, l, g, avl; 10536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 unusable; 10636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 padding; 10736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 10836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 10936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_dtable { 11036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 base; 11136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u16 limit; 11236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u16 padding[3]; 11336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 11436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 11536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 11636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner/* for KVM_GET_SREGS and KVM_SET_SREGS */ 11736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_sregs { 11836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner /* out (KVM_GET_SREGS) / in (KVM_SET_SREGS) */ 11936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner struct kvm_segment cs, ds, es, fs, gs, ss; 12036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner struct kvm_segment tr, ldt; 12136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner struct kvm_dtable gdt, idt; 12236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 cr0, cr2, cr3, cr4, cr8; 12336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 efer; 12436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 apic_base; 12536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 interrupt_bitmap[(KVM_NR_INTERRUPTS + 63) / 64]; 12636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 12736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 12836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner/* for KVM_GET_FPU and KVM_SET_FPU */ 12936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_fpu { 13036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 fpr[8][16]; 13136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u16 fcw; 13236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u16 fsw; 13336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 ftwx; /* in fxsave format */ 13436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 pad1; 13536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u16 last_opcode; 13636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 last_ip; 13736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 last_dp; 13836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 xmm[16][16]; 13936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 mxcsr; 14036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 pad2; 14136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 14236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 14336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_msr_entry { 14436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 index; 14536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 reserved; 14636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 data; 14736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 14836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 14936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner/* for KVM_GET_MSRS and KVM_SET_MSRS */ 15036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_msrs { 15136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 nmsrs; /* number of msrs in entries */ 15236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 pad; 15336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 15436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner struct kvm_msr_entry entries[0]; 15536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 15636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 15736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner/* for KVM_GET_MSR_INDEX_LIST */ 15836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_msr_list { 15936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 nmsrs; /* number of msrs in entries */ 16036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 indices[0]; 16136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 16236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 16336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 16436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_cpuid_entry { 16536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 function; 16636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 eax; 16736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 ebx; 16836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 ecx; 16936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 edx; 17036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 padding; 17136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 17236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 17336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner/* for KVM_SET_CPUID */ 17436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_cpuid { 17536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 nent; 17636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 padding; 17736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner struct kvm_cpuid_entry entries[0]; 17836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 17936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 18036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_cpuid_entry2 { 18136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 function; 18236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 index; 18336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 flags; 18436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 eax; 18536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 ebx; 18636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 ecx; 18736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 edx; 18836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 padding[3]; 18936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 19036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 19136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define KVM_CPUID_FLAG_SIGNIFCANT_INDEX 1 19236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define KVM_CPUID_FLAG_STATEFUL_FUNC 2 19336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define KVM_CPUID_FLAG_STATE_READ_NEXT 4 19436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 19536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner/* for KVM_SET_CPUID2 */ 19636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_cpuid2 { 19736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 nent; 19836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 padding; 19936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner struct kvm_cpuid_entry2 entries[0]; 20036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 20136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 20236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner/* for KVM_GET_PIT and KVM_SET_PIT */ 20336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_pit_channel_state { 20436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 count; /* can be 65536 */ 20536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u16 latched_count; 20636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 count_latched; 20736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 status_latched; 20836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 status; 20936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 read_state; 21036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 write_state; 21136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 write_latch; 21236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 rw_mode; 21336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 mode; 21436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 bcd; 21536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 gate; 21636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __s64 count_load_time; 21736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 21836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 21936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_debug_exit_arch { 22036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 exception; 22136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 pad; 22236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 pc; 22336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 dr6; 22436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 dr7; 22536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 22636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 22736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define KVM_GUESTDBG_USE_SW_BP 0x00010000 22836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define KVM_GUESTDBG_USE_HW_BP 0x00020000 22936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define KVM_GUESTDBG_INJECT_DB 0x00040000 23036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define KVM_GUESTDBG_INJECT_BP 0x00080000 23136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 23236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner/* for KVM_SET_GUEST_DEBUG */ 23336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_guest_debug_arch { 23436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u64 debugreg[8]; 23536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 23636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 23736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_pit_state { 23836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner struct kvm_pit_channel_state channels[3]; 23936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 24036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 24136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#define KVM_PIT_FLAGS_HPET_LEGACY 0x00000001 24236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 24336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_pit_state2 { 24436597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner struct kvm_pit_channel_state channels[3]; 24536597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 flags; 24636597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u32 reserved[9]; 24736597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 24836597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner 24936597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turnerstruct kvm_reinject_control { 25036597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 pit_reinject; 25136597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner __u8 reserved[31]; 25236597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner}; 25336597756e589622ee6c6628efb47c1b130d5ee85David 'Digit' Turner#endif /* _ASM_X86_KVM_H */ 254