Lines Matching defs:kvm_x86_ops
1677 struct kvm_x86_ops { struct
1678 const char *name;
1680 int (*check_processor_compatibility)(void);
1682 int (*enable_virtualization_cpu)(void);
1683 void (*disable_virtualization_cpu)(void);
1684 cpu_emergency_virt_cb *emergency_disable_virtualization_cpu;
1686 void (*hardware_unsetup)(void);
1687 bool (*has_emulated_msr)(struct kvm *kvm, u32 index);
1688 void (*vcpu_after_set_cpuid)(struct kvm_vcpu *vcpu);
1690 unsigned int vm_size;
1691 int (*vm_init)(struct kvm *kvm);
1692 void (*vm_destroy)(struct kvm *kvm);
1693 void (*vm_pre_destroy)(struct kvm *kvm);
1696 int (*vcpu_precreate)(struct kvm *kvm);
1697 int (*vcpu_create)(struct kvm_vcpu *vcpu);
1698 void (*vcpu_free)(struct kvm_vcpu *vcpu);
1699 void (*vcpu_reset)(struct kvm_vcpu *vcpu, bool init_event);
1701 void (*prepare_switch_to_guest)(struct kvm_vcpu *vcpu);
1702 void (*vcpu_load)(struct kvm_vcpu *vcpu, int cpu);
1703 void (*vcpu_put)(struct kvm_vcpu *vcpu);
1705 void (*update_exception_bitmap)(struct kvm_vcpu *vcpu);
1706 int (*get_msr)(struct kvm_vcpu *vcpu, struct msr_data *msr);
1707 int (*set_msr)(struct kvm_vcpu *vcpu, struct msr_data *msr);
1708 u64 (*get_segment_base)(struct kvm_vcpu *vcpu, int seg);
1709 void (*get_segment)(struct kvm_vcpu *vcpu,
1711 int (*get_cpl)(struct kvm_vcpu *vcpu);
1712 int (*get_cpl_no_cache)(struct kvm_vcpu *vcpu);
1713 void (*set_segment)(struct kvm_vcpu *vcpu,
1715 void (*get_cs_db_l_bits)(struct kvm_vcpu *vcpu, int *db, int *l);
1716 bool (*is_valid_cr0)(struct kvm_vcpu *vcpu, unsigned long cr0);
1717 void (*set_cr0)(struct kvm_vcpu *vcpu, unsigned long cr0);
1718 void (*post_set_cr3)(struct kvm_vcpu *vcpu, unsigned long cr3);
1719 bool (*is_valid_cr4)(struct kvm_vcpu *vcpu, unsigned long cr4);
1720 void (*set_cr4)(struct kvm_vcpu *vcpu, unsigned long cr4);
1721 int (*set_efer)(struct kvm_vcpu *vcpu, u64 efer);
1722 void (*get_idt)(struct kvm_vcpu *vcpu, struct desc_ptr *dt);
1723 void (*set_idt)(struct kvm_vcpu *vcpu, struct desc_ptr *dt);
1724 void (*get_gdt)(struct kvm_vcpu *vcpu, struct desc_ptr *dt);
1725 void (*set_gdt)(struct kvm_vcpu *vcpu, struct desc_ptr *dt);
1726 void (*sync_dirty_debug_regs)(struct kvm_vcpu *vcpu);
1727 void (*set_dr6)(struct kvm_vcpu *vcpu, unsigned long value);
1728 void (*set_dr7)(struct kvm_vcpu *vcpu, unsigned long value);
1729 void (*cache_reg)(struct kvm_vcpu *vcpu, enum kvm_reg reg);
1730 unsigned long (*get_rflags)(struct kvm_vcpu *vcpu);
1731 void (*set_rflags)(struct kvm_vcpu *vcpu, unsigned long rflags);
1732 bool (*get_if_flag)(struct kvm_vcpu *vcpu);
1734 void (*flush_tlb_all)(struct kvm_vcpu *vcpu);
1735 void (*flush_tlb_current)(struct kvm_vcpu *vcpu);
1737 int (*flush_remote_tlbs)(struct kvm *kvm);
1738 int (*flush_remote_tlbs_range)(struct kvm *kvm, gfn_t gfn,
1748 void (*flush_tlb_gva)(struct kvm_vcpu *vcpu, gva_t addr);
1754 void (*flush_tlb_guest)(struct kvm_vcpu *vcpu);
1756 int (*vcpu_pre_run)(struct kvm_vcpu *vcpu);
1757 enum exit_fastpath_completion (*vcpu_run)(struct kvm_vcpu *vcpu,
1759 int (*handle_exit)(struct kvm_vcpu *vcpu,
1761 int (*skip_emulated_instruction)(struct kvm_vcpu *vcpu);
1762 void (*update_emulated_instruction)(struct kvm_vcpu *vcpu);
1763 void (*set_interrupt_shadow)(struct kvm_vcpu *vcpu, int mask);
1764 u32 (*get_interrupt_shadow)(struct kvm_vcpu *vcpu);
1765 void (*patch_hypercall)(struct kvm_vcpu *vcpu,
1767 void (*inject_irq)(struct kvm_vcpu *vcpu, bool reinjected);
1768 void (*inject_nmi)(struct kvm_vcpu *vcpu);
1769 void (*inject_exception)(struct kvm_vcpu *vcpu);
1770 void (*cancel_injection)(struct kvm_vcpu *vcpu);
1771 int (*interrupt_allowed)(struct kvm_vcpu *vcpu, bool for_injection);
1772 int (*nmi_allowed)(struct kvm_vcpu *vcpu, bool for_injection);
1773 bool (*get_nmi_mask)(struct kvm_vcpu *vcpu);
1774 void (*set_nmi_mask)(struct kvm_vcpu *vcpu, bool masked);
1776 bool (*is_vnmi_pending)(struct kvm_vcpu *vcpu);
1781 bool (*set_vnmi_pending)(struct kvm_vcpu *vcpu);
1782 void (*enable_nmi_window)(struct kvm_vcpu *vcpu);
1783 void (*enable_irq_window)(struct kvm_vcpu *vcpu);
1784 void (*update_cr8_intercept)(struct kvm_vcpu *vcpu, int tpr, int irr);
1786 const bool x2apic_icr_is_split;
1787 const unsigned long required_apicv_inhibits;
1788 bool allow_apicv_in_x2apic_without_x2apic_virtualization;
1789 void (*refresh_apicv_exec_ctrl)(struct kvm_vcpu *vcpu);
1790 void (*hwapic_isr_update)(struct kvm_vcpu *vcpu, int isr);
1791 void (*load_eoi_exitmap)(struct kvm_vcpu *vcpu, u64 *eoi_exit_bitmap);
1792 void (*set_virtual_apic_mode)(struct kvm_vcpu *vcpu);
1793 void (*set_apic_access_page_addr)(struct kvm_vcpu *vcpu);
1794 void (*deliver_interrupt)(struct kvm_lapic *apic, int delivery_mode,
1796 int (*sync_pir_to_irr)(struct kvm_vcpu *vcpu);
1797 int (*set_tss_addr)(struct kvm *kvm, unsigned int addr);
1798 int (*set_identity_map_addr)(struct kvm *kvm, u64 ident_addr);
1799 u8 (*get_mt_mask)(struct kvm_vcpu *vcpu, gfn_t gfn, bool is_mmio);
1801 void (*load_mmu_pgd)(struct kvm_vcpu *vcpu, hpa_t root_hpa,
1805 int (*link_external_spt)(struct kvm *kvm, gfn_t gfn, enum pg_level level,
1808 int (*set_external_spte)(struct kvm *kvm, gfn_t gfn, enum pg_level level,
1812 int (*free_external_spt)(struct kvm *kvm, gfn_t gfn, enum pg_level level,
1816 int (*remove_external_spte)(struct kvm *kvm, gfn_t gfn, enum pg_level level,
1819 bool (*has_wbinvd_exit)(void);
1821 u64 (*get_l2_tsc_offset)(struct kvm_vcpu *vcpu);
1822 u64 (*get_l2_tsc_multiplier)(struct kvm_vcpu *vcpu);
1823 void (*write_tsc_offset)(struct kvm_vcpu *vcpu);
1824 void (*write_tsc_multiplier)(struct kvm_vcpu *vcpu);
1830 void (*get_exit_info)(struct kvm_vcpu *vcpu, u32 *reason,
1834 void (*get_entry_info)(struct kvm_vcpu *vcpu,
1837 int (*check_intercept)(struct kvm_vcpu *vcpu,
1841 void (*handle_exit_irqoff)(struct kvm_vcpu *vcpu);
1843 void (*update_cpu_dirty_logging)(struct kvm_vcpu *vcpu);
1845 const struct kvm_x86_nested_ops *nested_ops;
1847 void (*vcpu_blocking)(struct kvm_vcpu *vcpu);
1848 void (*vcpu_unblocking)(struct kvm_vcpu *vcpu);
1850 int (*pi_update_irte)(struct kvm *kvm, unsigned int host_irq,
1852 void (*pi_start_assignment)(struct kvm *kvm);
1853 void (*apicv_pre_state_restore)(struct kvm_vcpu *vcpu);
1854 void (*apicv_post_state_restore)(struct kvm_vcpu *vcpu);
1855 bool (*dy_apicv_has_pending_interrupt)(struct kvm_vcpu *vcpu);
1856 bool (*protected_apic_has_interrupt)(struct kvm_vcpu *vcpu);
1858 int (*set_hv_timer)(struct kvm_vcpu *vcpu, u64 guest_deadline_tsc,
1860 void (*cancel_hv_timer)(struct kvm_vcpu *vcpu);
1862 void (*setup_mce)(struct kvm_vcpu *vcpu);
1865 int (*smi_allowed)(struct kvm_vcpu *vcpu, bool for_injection);
1866 int (*enter_smm)(struct kvm_vcpu *vcpu, union kvm_smram *smram);
1867 int (*leave_smm)(struct kvm_vcpu *vcpu, const union kvm_smram *smram);
1868 void (*enable_smi_window)(struct kvm_vcpu *vcpu);
1871 int (*dev_get_attr)(u32 group, u64 attr, u64 *val);
1872 int (*mem_enc_ioctl)(struct kvm *kvm, void __user *argp);
1873 int (*vcpu_mem_enc_ioctl)(struct kvm_vcpu *vcpu, void __user *argp);
1874 int (*mem_enc_register_region)(struct kvm *kvm, struct kvm_enc_region *argp);
1875 int (*mem_enc_unregister_region)(struct kvm *kvm, struct kvm_enc_region *argp);
1876 int (*vm_copy_enc_context_from)(struct kvm *kvm, unsigned int source_fd);
1877 int (*vm_move_enc_context_from)(struct kvm *kvm, unsigned int source_fd);
1878 void (*guest_memory_reclaimed)(struct kvm *kvm);
1880 int (*get_feature_msr)(u32 msr, u64 *data);
1882 int (*check_emulate_instruction)(struct kvm_vcpu *vcpu, int emul_type,
1885 bool (*apic_init_signal_blocked)(struct kvm_vcpu *vcpu);
1886 int (*enable_l2_tlb_flush)(struct kvm_vcpu *vcpu);
1888 void (*migrate_timers)(struct kvm_vcpu *vcpu);
1889 void (*msr_filter_changed)(struct kvm_vcpu *vcpu);
1890 int (*complete_emulated_msr)(struct kvm_vcpu *vcpu, int err);
1892 void (*vcpu_deliver_sipi_vector)(struct kvm_vcpu *vcpu, u8 vector);
1897 unsigned long (*vcpu_get_apicv_inhibit_reasons)(struct kvm_vcpu *vcpu);
1899 gva_t (*get_untagged_addr)(struct kvm_vcpu *vcpu, gva_t gva, unsigned int flags);
1900 void *(*alloc_apic_backing_page)(struct kvm_vcpu *vcpu);
1901 int (*gmem_prepare)(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order);
1902 void (*gmem_invalidate)(kvm_pfn_t start, kvm_pfn_t end);
1903 int (*private_max_mapping_level)(struct kvm *kvm, kvm_pfn_t pfn);