Lines Matching refs:kvm

868 static int vmx_set_tss_addr(struct kvm *kvm, unsigned int addr);
878 static int alloc_identity_pagetable(struct kvm *kvm);
1995 if (!kvm_arch_has_assigned_device(vcpu->kvm) || in vmx_vcpu_pi_load()
2101 if (!kvm_arch_has_assigned_device(vcpu->kvm) || in vmx_vcpu_pi_put()
3525 if (!vcpu->kvm->arch.tss_addr) in enter_rmode()
3531 vmcs_writel(GUEST_TR_BASE, vcpu->kvm->arch.tss_addr); in enter_rmode()
3774 guest_cr3 = vcpu->kvm->arch.ept_identity_map_addr; in vmx_set_cr3()
4183 static int init_rmode_tss(struct kvm *kvm) in init_rmode_tss() argument
4189 idx = srcu_read_lock(&kvm->srcu); in init_rmode_tss()
4190 fn = kvm->arch.tss_addr >> PAGE_SHIFT; in init_rmode_tss()
4191 r = kvm_clear_guest_page(kvm, fn, 0, PAGE_SIZE); in init_rmode_tss()
4195 r = kvm_write_guest_page(kvm, fn++, &data, in init_rmode_tss()
4199 r = kvm_clear_guest_page(kvm, fn++, 0, PAGE_SIZE); in init_rmode_tss()
4202 r = kvm_clear_guest_page(kvm, fn, 0, PAGE_SIZE); in init_rmode_tss()
4206 r = kvm_write_guest_page(kvm, fn, &data, in init_rmode_tss()
4210 srcu_read_unlock(&kvm->srcu, idx); in init_rmode_tss()
4214 static int init_rmode_identity_map(struct kvm *kvm) in init_rmode_identity_map() argument
4224 mutex_lock(&kvm->slots_lock); in init_rmode_identity_map()
4226 if (likely(kvm->arch.ept_identity_pagetable_done)) in init_rmode_identity_map()
4229 identity_map_pfn = kvm->arch.ept_identity_map_addr >> PAGE_SHIFT; in init_rmode_identity_map()
4231 r = alloc_identity_pagetable(kvm); in init_rmode_identity_map()
4235 idx = srcu_read_lock(&kvm->srcu); in init_rmode_identity_map()
4236 r = kvm_clear_guest_page(kvm, identity_map_pfn, 0, PAGE_SIZE); in init_rmode_identity_map()
4243 r = kvm_write_guest_page(kvm, identity_map_pfn, in init_rmode_identity_map()
4248 kvm->arch.ept_identity_pagetable_done = true; in init_rmode_identity_map()
4251 srcu_read_unlock(&kvm->srcu, idx); in init_rmode_identity_map()
4254 mutex_unlock(&kvm->slots_lock); in init_rmode_identity_map()
4273 static int alloc_apic_access_page(struct kvm *kvm) in alloc_apic_access_page() argument
4278 mutex_lock(&kvm->slots_lock); in alloc_apic_access_page()
4279 if (kvm->arch.apic_access_page_done) in alloc_apic_access_page()
4281 r = __x86_set_memory_region(kvm, APIC_ACCESS_PAGE_PRIVATE_MEMSLOT, in alloc_apic_access_page()
4286 page = gfn_to_page(kvm, APIC_DEFAULT_PHYS_BASE >> PAGE_SHIFT); in alloc_apic_access_page()
4297 kvm->arch.apic_access_page_done = true; in alloc_apic_access_page()
4299 mutex_unlock(&kvm->slots_lock); in alloc_apic_access_page()
4303 static int alloc_identity_pagetable(struct kvm *kvm) in alloc_identity_pagetable() argument
4309 BUG_ON(kvm->arch.ept_identity_pagetable_done); in alloc_identity_pagetable()
4311 r = __x86_set_memory_region(kvm, IDENTITY_PAGETABLE_PRIVATE_MEMSLOT, in alloc_identity_pagetable()
4312 kvm->arch.ept_identity_map_addr, PAGE_SIZE); in alloc_identity_pagetable()
5125 static int vmx_set_tss_addr(struct kvm *kvm, unsigned int addr) in vmx_set_tss_addr() argument
5129 ret = x86_set_memory_region(kvm, TSS_PRIVATE_MEMSLOT, addr, in vmx_set_tss_addr()
5133 kvm->arch.tss_addr = addr; in vmx_set_tss_addr()
5134 return init_rmode_tss(kvm); in vmx_set_tss_addr()
7901 static void kvm_flush_pml_buffers(struct kvm *kvm) in kvm_flush_pml_buffers() argument
7911 kvm_for_each_vcpu(i, vcpu, kvm) in kvm_flush_pml_buffers()
8235 static void vmx_hwapic_isr_update(struct kvm *kvm, int isr) in vmx_hwapic_isr_update() argument
8756 static struct kvm_vcpu *vmx_create_vcpu(struct kvm *kvm, unsigned int id) in vmx_create_vcpu() argument
8767 err = kvm_vcpu_init(&vmx->vcpu, kvm, id); in vmx_create_vcpu()
8799 err = alloc_apic_access_page(kvm); in vmx_create_vcpu()
8805 if (!kvm->arch.ept_identity_map_addr) in vmx_create_vcpu()
8806 kvm->arch.ept_identity_map_addr = in vmx_create_vcpu()
8808 err = init_rmode_identity_map(kvm); in vmx_create_vcpu()
8889 if (!kvm_arch_has_noncoherent_dma(vcpu->kvm)) { in vmx_get_mt_mask()
8897 if (kvm_check_has_quirk(vcpu->kvm, KVM_X86_QUIRK_CD_NW_CLEARED)) in vmx_get_mt_mask()
10555 static void vmx_slot_enable_log_dirty(struct kvm *kvm, in vmx_slot_enable_log_dirty() argument
10558 kvm_mmu_slot_leaf_clear_dirty(kvm, slot); in vmx_slot_enable_log_dirty()
10559 kvm_mmu_slot_largepage_remove_write_access(kvm, slot); in vmx_slot_enable_log_dirty()
10562 static void vmx_slot_disable_log_dirty(struct kvm *kvm, in vmx_slot_disable_log_dirty() argument
10565 kvm_mmu_slot_set_dirty(kvm, slot); in vmx_slot_disable_log_dirty()
10568 static void vmx_flush_log_dirty(struct kvm *kvm) in vmx_flush_log_dirty() argument
10570 kvm_flush_pml_buffers(kvm); in vmx_flush_log_dirty()
10573 static void vmx_enable_log_dirty_pt_masked(struct kvm *kvm, in vmx_enable_log_dirty_pt_masked() argument
10577 kvm_mmu_clear_dirty_pt_masked(kvm, memslot, offset, mask); in vmx_enable_log_dirty_pt_masked()
10600 if (!kvm_arch_has_assigned_device(vcpu->kvm) || in vmx_pre_block()
10666 if (!kvm_arch_has_assigned_device(vcpu->kvm) || in vmx_post_block()
10709 static int vmx_update_pi_irte(struct kvm *kvm, unsigned int host_irq, in vmx_update_pi_irte() argument
10719 if (!kvm_arch_has_assigned_device(kvm) || in vmx_update_pi_irte()
10723 idx = srcu_read_lock(&kvm->irq_srcu); in vmx_update_pi_irte()
10724 irq_rt = srcu_dereference(kvm->irq_routing, &kvm->irq_srcu); in vmx_update_pi_irte()
10744 if (!kvm_intr_is_single_vcpu(kvm, &irq, &vcpu)) in vmx_update_pi_irte()
10771 srcu_read_unlock(&kvm->irq_srcu, idx); in vmx_update_pi_irte()