Lines Matching full:vpa

524 static void init_vpa(struct kvm_vcpu *vcpu, struct lppaca *vpa)  in init_vpa()  argument
526 vpa->__old_status |= LPPACA_OLD_SHARED_PROC; in init_vpa()
527 vpa->yield_count = cpu_to_be32(1); in init_vpa()
564 unsigned long vcpuid, unsigned long vpa) in do_h_register_vpa() argument
582 if ((vpa & (L1_CACHE_BYTES - 1)) || !vpa) in do_h_register_vpa()
586 va = kvmppc_pin_guest_page(kvm, vpa, &nb); in do_h_register_vpa()
593 kvmppc_unpin_guest_page(kvm, va, vpa, false); in do_h_register_vpa()
599 vpa = 0; in do_h_register_vpa()
608 case H_VPA_REG_VPA: /* register VPA */ in do_h_register_vpa()
618 vpap = &tvcpu->arch.vpa; in do_h_register_vpa()
627 /* Check that they have previously registered a VPA */ in do_h_register_vpa()
629 if (!vpa_is_registered(&tvcpu->arch.vpa)) in do_h_register_vpa()
637 /* Check that they have previously registered a VPA */ in do_h_register_vpa()
639 if (!vpa_is_registered(&tvcpu->arch.vpa)) in do_h_register_vpa()
646 case H_VPA_DEREG_VPA: /* deregister VPA */ in do_h_register_vpa()
653 vpap = &tvcpu->arch.vpa; in do_h_register_vpa()
669 vpap->next_gpa = vpa; in do_h_register_vpa()
734 if (!(vcpu->arch.vpa.update_pending || in kvmppc_update_vpas()
740 if (vcpu->arch.vpa.update_pending) { in kvmppc_update_vpas()
741 kvmppc_update_vpa(vcpu, &vcpu->arch.vpa, &old_vpa); in kvmppc_update_vpas()
748 if (vcpu->arch.vpa.pinned_addr) { in kvmppc_update_vpas()
749 init_vpa(vcpu, vcpu->arch.vpa.pinned_addr); in kvmppc_update_vpas()
751 kvmhv_nestedv2_set_vpa(vcpu, __pa(vcpu->arch.vpa.pinned_addr)); in kvmppc_update_vpas()
793 struct lppaca *vpa, in __kvmppc_create_dtl_entry() argument
819 /* order writing *dt vs. writing vpa->dtl_idx */ in __kvmppc_create_dtl_entry()
821 vpa->dtl_idx = cpu_to_be64(++vcpu->arch.dtl_index); in __kvmppc_create_dtl_entry()
829 struct lppaca *vpa; in kvmppc_update_vpa_dispatch() local
835 vpa = vcpu->arch.vpa.pinned_addr; in kvmppc_update_vpa_dispatch()
836 if (!vpa) in kvmppc_update_vpa_dispatch()
849 vpa->enqueue_dispatch_tb = cpu_to_be64(be64_to_cpu(vpa->enqueue_dispatch_tb) + stolen); in kvmppc_update_vpa_dispatch()
851 __kvmppc_create_dtl_entry(vcpu, vpa, vc->pcpu, now + kvmppc_get_tb_offset(vcpu), stolen); in kvmppc_update_vpa_dispatch()
853 vcpu->arch.vpa.dirty = true; in kvmppc_update_vpa_dispatch()
860 struct lppaca *vpa; in kvmppc_update_vpa_dispatch_p9() local
864 vpa = vcpu->arch.vpa.pinned_addr; in kvmppc_update_vpa_dispatch_p9()
865 if (!vpa) in kvmppc_update_vpa_dispatch_p9()
872 vpa->enqueue_dispatch_tb = cpu_to_be64(stolen); in kvmppc_update_vpa_dispatch_p9()
874 __kvmppc_create_dtl_entry(vcpu, vpa, vc->pcpu, now, stolen_delta); in kvmppc_update_vpa_dispatch_p9()
876 vcpu->arch.vpa.dirty = true; in kvmppc_update_vpa_dispatch_p9()
1076 lppaca = (struct lppaca *)vcpu->arch.vpa.pinned_addr; in kvmppc_get_yield_count()
2374 *val = get_reg_val(id, vcpu->arch.vpa.next_gpa); in kvmppc_get_one_reg_hv()
2633 r = set_vpa(vcpu, &vcpu->arch.vpa, addr, sizeof(struct lppaca)); in kvmppc_set_one_reg_hv()
2639 if (addr && !vcpu->arch.vpa.next_gpa) in kvmppc_set_one_reg_hv()
2648 !vcpu->arch.vpa.next_gpa)) in kvmppc_set_one_reg_hv()
3133 static void unpin_vpa(struct kvm *kvm, struct kvmppc_vpa *vpa) in unpin_vpa() argument
3135 if (vpa->pinned_addr) in unpin_vpa()
3136 kvmppc_unpin_guest_page(kvm, vpa->pinned_addr, vpa->gpa, in unpin_vpa()
3137 vpa->dirty); in unpin_vpa()
3145 unpin_vpa(vcpu->kvm, &vcpu->arch.vpa); in kvmppc_core_vcpu_free_hv()
3589 else if (vcpu->arch.vpa.update_pending || in prepare_threads()
3800 * or need a VPA update done in kvmppc_run_core()
4103 struct lppaca *lp = vcpu->arch.vpa.pinned_addr; in vcpu_vpa_increment_dispatch()
4107 vcpu->arch.vpa.dirty = 1; in vcpu_vpa_increment_dispatch()
4111 /* Helper functions for reading L2's stats from L1's VPA */
5309 /* Harvest dirty bits from VPA and DTL updates */ in kvm_vm_ioctl_get_dirty_log_hv()
5313 kvmppc_harvest_vpa_dirty(&vcpu->arch.vpa, memslot, buf); in kvm_vm_ioctl_get_dirty_log_hv()
6376 static void unpin_vpa_reset(struct kvm *kvm, struct kvmppc_vpa *vpa) in unpin_vpa_reset() argument
6378 unpin_vpa(kvm, vpa); in unpin_vpa_reset()
6379 vpa->gpa = 0; in unpin_vpa_reset()
6380 vpa->pinned_addr = NULL; in unpin_vpa_reset()
6381 vpa->dirty = false; in unpin_vpa_reset()
6382 vpa->update_pending = 0; in unpin_vpa_reset()
6405 * - Unpin the VPA pages.
6457 * chance to run and unpin their VPA pages. Unpinning of all in kvmhv_svm_off()
6458 * VPA pages is done here explicitly so that VPA pages in kvmhv_svm_off()
6468 unpin_vpa_reset(kvm, &vcpu->arch.vpa); in kvmhv_svm_off()