Lines Matching defs:vpa
490 static void init_vpa(struct kvm_vcpu *vcpu, struct lppaca *vpa)
492 vpa->__old_status |= LPPACA_OLD_SHARED_PROC;
493 vpa->yield_count = cpu_to_be32(1);
530 unsigned long vcpuid, unsigned long vpa)
548 if ((vpa & (L1_CACHE_BYTES - 1)) || !vpa)
552 va = kvmppc_pin_guest_page(kvm, vpa, &nb);
559 kvmppc_unpin_guest_page(kvm, va, vpa, false);
565 vpa = 0;
584 vpap = &tvcpu->arch.vpa;
595 if (!vpa_is_registered(&tvcpu->arch.vpa))
605 if (!vpa_is_registered(&tvcpu->arch.vpa))
619 vpap = &tvcpu->arch.vpa;
635 vpap->next_gpa = vpa;
697 if (!(vcpu->arch.vpa.update_pending ||
703 if (vcpu->arch.vpa.update_pending) {
704 kvmppc_update_vpa(vcpu, &vcpu->arch.vpa);
705 if (vcpu->arch.vpa.pinned_addr)
706 init_vpa(vcpu, vcpu->arch.vpa.pinned_addr);
739 struct lppaca *vpa,
765 /* order writing *dt vs. writing vpa->dtl_idx */
767 vpa->dtl_idx = cpu_to_be64(++vcpu->arch.dtl_index);
775 struct lppaca *vpa;
781 vpa = vcpu->arch.vpa.pinned_addr;
782 if (!vpa)
795 vpa->enqueue_dispatch_tb = cpu_to_be64(be64_to_cpu(vpa->enqueue_dispatch_tb) + stolen);
797 __kvmppc_create_dtl_entry(vcpu, vpa, vc->pcpu, now + vc->tb_offset, stolen);
799 vcpu->arch.vpa.dirty = true;
806 struct lppaca *vpa;
810 vpa = vcpu->arch.vpa.pinned_addr;
811 if (!vpa)
818 vpa->enqueue_dispatch_tb = cpu_to_be64(stolen);
820 __kvmppc_create_dtl_entry(vcpu, vpa, vc->pcpu, now, stolen_delta);
822 vcpu->arch.vpa.dirty = true;
1022 lppaca = (struct lppaca *)vcpu->arch.vpa.pinned_addr;
2325 *val = get_reg_val(id, vcpu->arch.vpa.next_gpa);
2575 r = set_vpa(vcpu, &vcpu->arch.vpa, addr, sizeof(struct lppaca));
2581 if (addr && !vcpu->arch.vpa.next_gpa)
2590 !vcpu->arch.vpa.next_gpa))
3068 static void unpin_vpa(struct kvm *kvm, struct kvmppc_vpa *vpa)
3070 if (vpa->pinned_addr)
3071 kvmppc_unpin_guest_page(kvm, vpa->pinned_addr, vpa->gpa,
3072 vpa->dirty);
3080 unpin_vpa(vcpu->kvm, &vcpu->arch.vpa);
3522 else if (vcpu->arch.vpa.update_pending ||
4038 struct lppaca *lp = vcpu->arch.vpa.pinned_addr;
4042 vcpu->arch.vpa.dirty = 1;
5028 kvmppc_harvest_vpa_dirty(&vcpu->arch.vpa, memslot, buf);
6044 static void unpin_vpa_reset(struct kvm *kvm, struct kvmppc_vpa *vpa)
6046 unpin_vpa(kvm, vpa);
6047 vpa->gpa = 0;
6048 vpa->pinned_addr = NULL;
6049 vpa->dirty = false;
6050 vpa->update_pending = 0;
6136 unpin_vpa_reset(kvm, &vcpu->arch.vpa);