qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

kvm_i386.h (1936B)


      1 /*
      2  * QEMU KVM support -- x86 specific functions.
      3  *
      4  * Copyright (c) 2012 Linaro Limited
      5  *
      6  * This work is licensed under the terms of the GNU GPL, version 2 or later.
      7  * See the COPYING file in the top-level directory.
      8  *
      9  */
     10 
     11 #ifndef QEMU_KVM_I386_H
     12 #define QEMU_KVM_I386_H
     13 
     14 #include "sysemu/kvm.h"
     15 
     16 #define kvm_apic_in_kernel() (kvm_irqchip_in_kernel())
     17 
     18 #ifdef CONFIG_KVM
     19 
     20 #define kvm_pit_in_kernel() \
     21     (kvm_irqchip_in_kernel() && !kvm_irqchip_is_split())
     22 #define kvm_pic_in_kernel()  \
     23     (kvm_irqchip_in_kernel() && !kvm_irqchip_is_split())
     24 #define kvm_ioapic_in_kernel() \
     25     (kvm_irqchip_in_kernel() && !kvm_irqchip_is_split())
     26 
     27 #else
     28 
     29 #define kvm_pit_in_kernel()      0
     30 #define kvm_pic_in_kernel()      0
     31 #define kvm_ioapic_in_kernel()   0
     32 
     33 #endif  /* CONFIG_KVM */
     34 
     35 bool kvm_has_smm(void);
     36 bool kvm_has_adjust_clock(void);
     37 bool kvm_has_adjust_clock_stable(void);
     38 bool kvm_has_exception_payload(void);
     39 void kvm_synchronize_all_tsc(void);
     40 void kvm_arch_reset_vcpu(X86CPU *cs);
     41 void kvm_arch_after_reset_vcpu(X86CPU *cpu);
     42 void kvm_arch_do_init_vcpu(X86CPU *cs);
     43 
     44 void kvm_put_apicbase(X86CPU *cpu, uint64_t value);
     45 
     46 bool kvm_enable_x2apic(void);
     47 bool kvm_has_x2apic_api(void);
     48 bool kvm_has_waitpkg(void);
     49 
     50 bool kvm_hv_vpindex_settable(void);
     51 bool kvm_hyperv_expand_features(X86CPU *cpu, Error **errp);
     52 
     53 uint64_t kvm_swizzle_msi_ext_dest_id(uint64_t address);
     54 
     55 bool kvm_enable_sgx_provisioning(KVMState *s);
     56 void kvm_request_xsave_components(X86CPU *cpu, uint64_t mask);
     57 
     58 typedef bool QEMURDMSRHandler(X86CPU *cpu, uint32_t msr, uint64_t *val);
     59 typedef bool QEMUWRMSRHandler(X86CPU *cpu, uint32_t msr, uint64_t val);
     60 typedef struct kvm_msr_handlers {
     61     uint32_t msr;
     62     QEMURDMSRHandler *rdmsr;
     63     QEMUWRMSRHandler *wrmsr;
     64 } KVMMSRHandlers;
     65 
     66 bool kvm_filter_msr(KVMState *s, uint32_t msr, QEMURDMSRHandler *rdmsr,
     67                     QEMUWRMSRHandler *wrmsr);
     68 
     69 void kvm_set_max_apic_id(uint32_t max_apic_id);
     70 
     71 #endif