Lines Matching refs:vcpu
52 static inline bool check_debug_ip(struct kvm_vcpu *vcpu) in check_debug_ip() argument
55 return vcpu->arch.pc == DEBUG_MMU_PTE_IP; in check_debug_ip()
81 static int kvmppc_mmu_book3s_32_xlate_bat(struct kvm_vcpu *vcpu, gva_t eaddr,
84 static int kvmppc_mmu_book3s_32_esid_to_vsid(struct kvm_vcpu *vcpu, ulong esid,
87 static u32 find_sr(struct kvm_vcpu *vcpu, gva_t eaddr) in find_sr() argument
89 return kvmppc_get_sr(vcpu, (eaddr >> 28) & 0xf); in find_sr()
92 static u64 kvmppc_mmu_book3s_32_ea_to_vp(struct kvm_vcpu *vcpu, gva_t eaddr, in kvmppc_mmu_book3s_32_ea_to_vp() argument
98 if (!kvmppc_mmu_book3s_32_xlate_bat(vcpu, eaddr, &pte, data, false)) in kvmppc_mmu_book3s_32_ea_to_vp()
101 kvmppc_mmu_book3s_32_esid_to_vsid(vcpu, eaddr >> SID_SHIFT, &vsid); in kvmppc_mmu_book3s_32_ea_to_vp()
105 static void kvmppc_mmu_book3s_32_reset_msr(struct kvm_vcpu *vcpu) in kvmppc_mmu_book3s_32_reset_msr() argument
107 kvmppc_set_msr(vcpu, 0); in kvmppc_mmu_book3s_32_reset_msr()
110 static hva_t kvmppc_mmu_book3s_32_get_pteg(struct kvm_vcpu *vcpu, in kvmppc_mmu_book3s_32_get_pteg() argument
114 struct kvmppc_vcpu_book3s *vcpu_book3s = to_book3s(vcpu); in kvmppc_mmu_book3s_32_get_pteg()
129 kvmppc_get_pc(vcpu), eaddr, vcpu_book3s->sdr1, pteg, in kvmppc_mmu_book3s_32_get_pteg()
132 r = gfn_to_hva(vcpu->kvm, pteg >> PAGE_SHIFT); in kvmppc_mmu_book3s_32_get_pteg()
144 static int kvmppc_mmu_book3s_32_xlate_bat(struct kvm_vcpu *vcpu, gva_t eaddr, in kvmppc_mmu_book3s_32_xlate_bat() argument
148 struct kvmppc_vcpu_book3s *vcpu_book3s = to_book3s(vcpu); in kvmppc_mmu_book3s_32_xlate_bat()
158 if (kvmppc_get_msr(vcpu) & MSR_PR) { in kvmppc_mmu_book3s_32_xlate_bat()
166 if (check_debug_ip(vcpu)) in kvmppc_mmu_book3s_32_xlate_bat()
174 kvmppc_mmu_book3s_32_esid_to_vsid(vcpu, in kvmppc_mmu_book3s_32_xlate_bat()
199 static int kvmppc_mmu_book3s_32_xlate_pte(struct kvm_vcpu *vcpu, gva_t eaddr, in kvmppc_mmu_book3s_32_xlate_pte() argument
211 sre = find_sr(vcpu, eaddr); in kvmppc_mmu_book3s_32_xlate_pte()
216 pte->vpage = kvmppc_mmu_book3s_32_ea_to_vp(vcpu, eaddr, data); in kvmppc_mmu_book3s_32_xlate_pte()
218 ptegp = kvmppc_mmu_book3s_32_get_pteg(vcpu, sre, eaddr, primary); in kvmppc_mmu_book3s_32_xlate_pte()
240 if ((sr_kp(sre) && (kvmppc_get_msr(vcpu) & MSR_PR)) || in kvmppc_mmu_book3s_32_xlate_pte()
241 (sr_ks(sre) && !(kvmppc_get_msr(vcpu) & MSR_PR))) in kvmppc_mmu_book3s_32_xlate_pte()
292 if (check_debug_ip(vcpu)) { in kvmppc_mmu_book3s_32_xlate_pte()
294 to_book3s(vcpu)->sdr1, ptegp); in kvmppc_mmu_book3s_32_xlate_pte()
305 static int kvmppc_mmu_book3s_32_xlate(struct kvm_vcpu *vcpu, gva_t eaddr, in kvmppc_mmu_book3s_32_xlate() argument
310 ulong mp_ea = vcpu->arch.magic_page_ea; in kvmppc_mmu_book3s_32_xlate()
318 !(kvmppc_get_msr(vcpu) & MSR_PR)) { in kvmppc_mmu_book3s_32_xlate()
319 pte->vpage = kvmppc_mmu_book3s_32_ea_to_vp(vcpu, eaddr, data); in kvmppc_mmu_book3s_32_xlate()
320 pte->raddr = vcpu->arch.magic_page_pa | (pte->raddr & 0xfff); in kvmppc_mmu_book3s_32_xlate()
329 r = kvmppc_mmu_book3s_32_xlate_bat(vcpu, eaddr, pte, data, iswrite); in kvmppc_mmu_book3s_32_xlate()
331 r = kvmppc_mmu_book3s_32_xlate_pte(vcpu, eaddr, pte, in kvmppc_mmu_book3s_32_xlate()
334 r = kvmppc_mmu_book3s_32_xlate_pte(vcpu, eaddr, pte, in kvmppc_mmu_book3s_32_xlate()
341 static u32 kvmppc_mmu_book3s_32_mfsrin(struct kvm_vcpu *vcpu, u32 srnum) in kvmppc_mmu_book3s_32_mfsrin() argument
343 return kvmppc_get_sr(vcpu, srnum); in kvmppc_mmu_book3s_32_mfsrin()
346 static void kvmppc_mmu_book3s_32_mtsrin(struct kvm_vcpu *vcpu, u32 srnum, in kvmppc_mmu_book3s_32_mtsrin() argument
349 kvmppc_set_sr(vcpu, srnum, value); in kvmppc_mmu_book3s_32_mtsrin()
350 kvmppc_mmu_map_segment(vcpu, srnum << SID_SHIFT); in kvmppc_mmu_book3s_32_mtsrin()
353 static void kvmppc_mmu_book3s_32_tlbie(struct kvm_vcpu *vcpu, ulong ea, bool large) in kvmppc_mmu_book3s_32_tlbie() argument
359 kvm_for_each_vcpu(i, v, vcpu->kvm) in kvmppc_mmu_book3s_32_tlbie()
363 static int kvmppc_mmu_book3s_32_esid_to_vsid(struct kvm_vcpu *vcpu, ulong esid, in kvmppc_mmu_book3s_32_esid_to_vsid() argument
369 u64 msr = kvmppc_get_msr(vcpu); in kvmppc_mmu_book3s_32_esid_to_vsid()
372 sr = find_sr(vcpu, ea); in kvmppc_mmu_book3s_32_esid_to_vsid()
406 static bool kvmppc_mmu_book3s_32_is_dcbz32(struct kvm_vcpu *vcpu) in kvmppc_mmu_book3s_32_is_dcbz32() argument
412 void kvmppc_mmu_book3s_32_init(struct kvm_vcpu *vcpu) in kvmppc_mmu_book3s_32_init() argument
414 struct kvmppc_mmu *mmu = &vcpu->arch.mmu; in kvmppc_mmu_book3s_32_init()