Lines Matching refs:vcpu
77 void kvmppc_unfixup_split_real(struct kvm_vcpu *vcpu) in kvmppc_unfixup_split_real() argument
79 if (vcpu->arch.hflags & BOOK3S_HFLAG_SPLIT_HACK) { in kvmppc_unfixup_split_real()
80 ulong pc = kvmppc_get_pc(vcpu); in kvmppc_unfixup_split_real()
81 ulong lr = kvmppc_get_lr(vcpu); in kvmppc_unfixup_split_real()
83 kvmppc_set_pc(vcpu, pc & ~SPLIT_HACK_MASK); in kvmppc_unfixup_split_real()
85 kvmppc_set_lr(vcpu, lr & ~SPLIT_HACK_MASK); in kvmppc_unfixup_split_real()
86 vcpu->arch.hflags &= ~BOOK3S_HFLAG_SPLIT_HACK; in kvmppc_unfixup_split_real()
91 static inline unsigned long kvmppc_interrupt_offset(struct kvm_vcpu *vcpu) in kvmppc_interrupt_offset() argument
93 if (!is_kvmppc_hv_enabled(vcpu->kvm)) in kvmppc_interrupt_offset()
94 return to_book3s(vcpu)->hior; in kvmppc_interrupt_offset()
98 static inline void kvmppc_update_int_pending(struct kvm_vcpu *vcpu, in kvmppc_update_int_pending() argument
101 if (is_kvmppc_hv_enabled(vcpu->kvm)) in kvmppc_update_int_pending()
104 kvmppc_set_int_pending(vcpu, 1); in kvmppc_update_int_pending()
106 kvmppc_set_int_pending(vcpu, 0); in kvmppc_update_int_pending()
109 static inline bool kvmppc_critical_section(struct kvm_vcpu *vcpu) in kvmppc_critical_section() argument
115 if (is_kvmppc_hv_enabled(vcpu->kvm)) in kvmppc_critical_section()
118 crit_raw = kvmppc_get_critical(vcpu); in kvmppc_critical_section()
119 crit_r1 = kvmppc_get_gpr(vcpu, 1); in kvmppc_critical_section()
122 if (!(kvmppc_get_msr(vcpu) & MSR_SF)) { in kvmppc_critical_section()
130 crit = crit && !(kvmppc_get_msr(vcpu) & MSR_PR); in kvmppc_critical_section()
135 void kvmppc_inject_interrupt(struct kvm_vcpu *vcpu, int vec, u64 flags) in kvmppc_inject_interrupt() argument
137 kvmppc_unfixup_split_real(vcpu); in kvmppc_inject_interrupt()
138 kvmppc_set_srr0(vcpu, kvmppc_get_pc(vcpu)); in kvmppc_inject_interrupt()
139 kvmppc_set_srr1(vcpu, (kvmppc_get_msr(vcpu) & ~0x783f0000ul) | flags); in kvmppc_inject_interrupt()
140 kvmppc_set_pc(vcpu, kvmppc_interrupt_offset(vcpu) + vec); in kvmppc_inject_interrupt()
141 vcpu->arch.mmu.reset_msr(vcpu); in kvmppc_inject_interrupt()
171 void kvmppc_book3s_dequeue_irqprio(struct kvm_vcpu *vcpu, in kvmppc_book3s_dequeue_irqprio() argument
174 unsigned long old_pending = vcpu->arch.pending_exceptions; in kvmppc_book3s_dequeue_irqprio()
177 &vcpu->arch.pending_exceptions); in kvmppc_book3s_dequeue_irqprio()
179 kvmppc_update_int_pending(vcpu, vcpu->arch.pending_exceptions, in kvmppc_book3s_dequeue_irqprio()
183 void kvmppc_book3s_queue_irqprio(struct kvm_vcpu *vcpu, unsigned int vec) in kvmppc_book3s_queue_irqprio() argument
185 vcpu->stat.queue_intr++; in kvmppc_book3s_queue_irqprio()
188 &vcpu->arch.pending_exceptions); in kvmppc_book3s_queue_irqprio()
195 void kvmppc_core_queue_machine_check(struct kvm_vcpu *vcpu, ulong flags) in kvmppc_core_queue_machine_check() argument
198 kvmppc_inject_interrupt(vcpu, BOOK3S_INTERRUPT_MACHINE_CHECK, flags); in kvmppc_core_queue_machine_check()
202 void kvmppc_core_queue_program(struct kvm_vcpu *vcpu, ulong flags) in kvmppc_core_queue_program() argument
205 kvmppc_inject_interrupt(vcpu, BOOK3S_INTERRUPT_PROGRAM, flags); in kvmppc_core_queue_program()
209 void kvmppc_core_queue_fpunavail(struct kvm_vcpu *vcpu) in kvmppc_core_queue_fpunavail() argument
212 kvmppc_inject_interrupt(vcpu, BOOK3S_INTERRUPT_FP_UNAVAIL, 0); in kvmppc_core_queue_fpunavail()
215 void kvmppc_core_queue_vec_unavail(struct kvm_vcpu *vcpu) in kvmppc_core_queue_vec_unavail() argument
218 kvmppc_inject_interrupt(vcpu, BOOK3S_INTERRUPT_ALTIVEC, 0); in kvmppc_core_queue_vec_unavail()
221 void kvmppc_core_queue_vsx_unavail(struct kvm_vcpu *vcpu) in kvmppc_core_queue_vsx_unavail() argument
224 kvmppc_inject_interrupt(vcpu, BOOK3S_INTERRUPT_VSX, 0); in kvmppc_core_queue_vsx_unavail()
227 void kvmppc_core_queue_dec(struct kvm_vcpu *vcpu) in kvmppc_core_queue_dec() argument
229 kvmppc_book3s_queue_irqprio(vcpu, BOOK3S_INTERRUPT_DECREMENTER); in kvmppc_core_queue_dec()
233 int kvmppc_core_pending_dec(struct kvm_vcpu *vcpu) in kvmppc_core_pending_dec() argument
235 return test_bit(BOOK3S_IRQPRIO_DECREMENTER, &vcpu->arch.pending_exceptions); in kvmppc_core_pending_dec()
239 void kvmppc_core_dequeue_dec(struct kvm_vcpu *vcpu) in kvmppc_core_dequeue_dec() argument
241 kvmppc_book3s_dequeue_irqprio(vcpu, BOOK3S_INTERRUPT_DECREMENTER); in kvmppc_core_dequeue_dec()
245 void kvmppc_core_queue_external(struct kvm_vcpu *vcpu, in kvmppc_core_queue_external() argument
269 vcpu->arch.external_oneshot = 1; in kvmppc_core_queue_external()
271 kvmppc_book3s_queue_irqprio(vcpu, BOOK3S_INTERRUPT_EXTERNAL); in kvmppc_core_queue_external()
274 void kvmppc_core_dequeue_external(struct kvm_vcpu *vcpu) in kvmppc_core_dequeue_external() argument
276 kvmppc_book3s_dequeue_irqprio(vcpu, BOOK3S_INTERRUPT_EXTERNAL); in kvmppc_core_dequeue_external()
279 void kvmppc_core_queue_data_storage(struct kvm_vcpu *vcpu, ulong dar, in kvmppc_core_queue_data_storage() argument
282 kvmppc_set_dar(vcpu, dar); in kvmppc_core_queue_data_storage()
283 kvmppc_set_dsisr(vcpu, flags); in kvmppc_core_queue_data_storage()
284 kvmppc_inject_interrupt(vcpu, BOOK3S_INTERRUPT_DATA_STORAGE, 0); in kvmppc_core_queue_data_storage()
288 void kvmppc_core_queue_inst_storage(struct kvm_vcpu *vcpu, ulong flags) in kvmppc_core_queue_inst_storage() argument
290 kvmppc_inject_interrupt(vcpu, BOOK3S_INTERRUPT_INST_STORAGE, flags); in kvmppc_core_queue_inst_storage()
294 static int kvmppc_book3s_irqprio_deliver(struct kvm_vcpu *vcpu, in kvmppc_book3s_irqprio_deliver() argument
299 bool crit = kvmppc_critical_section(vcpu); in kvmppc_book3s_irqprio_deliver()
303 deliver = (kvmppc_get_msr(vcpu) & MSR_EE) && !crit; in kvmppc_book3s_irqprio_deliver()
307 deliver = (kvmppc_get_msr(vcpu) & MSR_EE) && !crit; in kvmppc_book3s_irqprio_deliver()
366 kvmppc_inject_interrupt(vcpu, vec, 0); in kvmppc_book3s_irqprio_deliver()
374 static bool clear_irqprio(struct kvm_vcpu *vcpu, unsigned int priority) in clear_irqprio() argument
386 if (vcpu->arch.external_oneshot) { in clear_irqprio()
387 vcpu->arch.external_oneshot = 0; in clear_irqprio()
396 int kvmppc_core_prepare_to_enter(struct kvm_vcpu *vcpu) in kvmppc_core_prepare_to_enter() argument
398 unsigned long *pending = &vcpu->arch.pending_exceptions; in kvmppc_core_prepare_to_enter()
399 unsigned long old_pending = vcpu->arch.pending_exceptions; in kvmppc_core_prepare_to_enter()
403 if (vcpu->arch.pending_exceptions) in kvmppc_core_prepare_to_enter()
404 printk(KERN_EMERG "KVM: Check pending: %lx\n", vcpu->arch.pending_exceptions); in kvmppc_core_prepare_to_enter()
408 if (kvmppc_book3s_irqprio_deliver(vcpu, priority) && in kvmppc_core_prepare_to_enter()
409 clear_irqprio(vcpu, priority)) { in kvmppc_core_prepare_to_enter()
410 clear_bit(priority, &vcpu->arch.pending_exceptions); in kvmppc_core_prepare_to_enter()
420 kvmppc_update_int_pending(vcpu, *pending, old_pending); in kvmppc_core_prepare_to_enter()
426 kvm_pfn_t kvmppc_gpa_to_pfn(struct kvm_vcpu *vcpu, gpa_t gpa, bool writing, in kvmppc_gpa_to_pfn() argument
429 ulong mp_pa = vcpu->arch.magic_page_pa & KVM_PAM; in kvmppc_gpa_to_pfn()
432 if (!(kvmppc_get_msr(vcpu) & MSR_SF)) in kvmppc_gpa_to_pfn()
438 ulong shared_page = ((ulong)vcpu->arch.shared) & PAGE_MASK; in kvmppc_gpa_to_pfn()
448 return gfn_to_pfn_prot(vcpu->kvm, gfn, writing, writable); in kvmppc_gpa_to_pfn()
452 int kvmppc_xlate(struct kvm_vcpu *vcpu, ulong eaddr, enum xlate_instdata xlid, in kvmppc_xlate() argument
457 int relocated = (kvmppc_get_msr(vcpu) & (data ? MSR_DR : MSR_IR)); in kvmppc_xlate()
461 r = vcpu->arch.mmu.xlate(vcpu, eaddr, pte, data, iswrite); in kvmppc_xlate()
471 if ((kvmppc_get_msr(vcpu) & (MSR_IR | MSR_DR)) == MSR_DR && in kvmppc_xlate()
473 if ((vcpu->arch.hflags & BOOK3S_HFLAG_SPLIT_HACK) && in kvmppc_xlate()
482 int kvmppc_load_last_inst(struct kvm_vcpu *vcpu, in kvmppc_load_last_inst() argument
485 ulong pc = kvmppc_get_pc(vcpu); in kvmppc_load_last_inst()
491 r = kvmppc_ld(vcpu, &pc, sizeof(u32), inst, false); in kvmppc_load_last_inst()
499 int kvm_arch_vcpu_setup(struct kvm_vcpu *vcpu) in kvm_arch_vcpu_setup() argument
504 int kvmppc_subarch_vcpu_init(struct kvm_vcpu *vcpu) in kvmppc_subarch_vcpu_init() argument
509 void kvmppc_subarch_vcpu_uninit(struct kvm_vcpu *vcpu) in kvmppc_subarch_vcpu_uninit() argument
513 int kvm_arch_vcpu_ioctl_get_sregs(struct kvm_vcpu *vcpu, in kvm_arch_vcpu_ioctl_get_sregs() argument
518 vcpu_load(vcpu); in kvm_arch_vcpu_ioctl_get_sregs()
519 ret = vcpu->kvm->arch.kvm_ops->get_sregs(vcpu, sregs); in kvm_arch_vcpu_ioctl_get_sregs()
520 vcpu_put(vcpu); in kvm_arch_vcpu_ioctl_get_sregs()
525 int kvm_arch_vcpu_ioctl_set_sregs(struct kvm_vcpu *vcpu, in kvm_arch_vcpu_ioctl_set_sregs() argument
530 vcpu_load(vcpu); in kvm_arch_vcpu_ioctl_set_sregs()
531 ret = vcpu->kvm->arch.kvm_ops->set_sregs(vcpu, sregs); in kvm_arch_vcpu_ioctl_set_sregs()
532 vcpu_put(vcpu); in kvm_arch_vcpu_ioctl_set_sregs()
537 int kvm_arch_vcpu_ioctl_get_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs) in kvm_arch_vcpu_ioctl_get_regs() argument
541 regs->pc = kvmppc_get_pc(vcpu); in kvm_arch_vcpu_ioctl_get_regs()
542 regs->cr = kvmppc_get_cr(vcpu); in kvm_arch_vcpu_ioctl_get_regs()
543 regs->ctr = kvmppc_get_ctr(vcpu); in kvm_arch_vcpu_ioctl_get_regs()
544 regs->lr = kvmppc_get_lr(vcpu); in kvm_arch_vcpu_ioctl_get_regs()
545 regs->xer = kvmppc_get_xer(vcpu); in kvm_arch_vcpu_ioctl_get_regs()
546 regs->msr = kvmppc_get_msr(vcpu); in kvm_arch_vcpu_ioctl_get_regs()
547 regs->srr0 = kvmppc_get_srr0(vcpu); in kvm_arch_vcpu_ioctl_get_regs()
548 regs->srr1 = kvmppc_get_srr1(vcpu); in kvm_arch_vcpu_ioctl_get_regs()
549 regs->pid = vcpu->arch.pid; in kvm_arch_vcpu_ioctl_get_regs()
550 regs->sprg0 = kvmppc_get_sprg0(vcpu); in kvm_arch_vcpu_ioctl_get_regs()
551 regs->sprg1 = kvmppc_get_sprg1(vcpu); in kvm_arch_vcpu_ioctl_get_regs()
552 regs->sprg2 = kvmppc_get_sprg2(vcpu); in kvm_arch_vcpu_ioctl_get_regs()
553 regs->sprg3 = kvmppc_get_sprg3(vcpu); in kvm_arch_vcpu_ioctl_get_regs()
554 regs->sprg4 = kvmppc_get_sprg4(vcpu); in kvm_arch_vcpu_ioctl_get_regs()
555 regs->sprg5 = kvmppc_get_sprg5(vcpu); in kvm_arch_vcpu_ioctl_get_regs()
556 regs->sprg6 = kvmppc_get_sprg6(vcpu); in kvm_arch_vcpu_ioctl_get_regs()
557 regs->sprg7 = kvmppc_get_sprg7(vcpu); in kvm_arch_vcpu_ioctl_get_regs()
560 regs->gpr[i] = kvmppc_get_gpr(vcpu, i); in kvm_arch_vcpu_ioctl_get_regs()
565 int kvm_arch_vcpu_ioctl_set_regs(struct kvm_vcpu *vcpu, struct kvm_regs *regs) in kvm_arch_vcpu_ioctl_set_regs() argument
569 kvmppc_set_pc(vcpu, regs->pc); in kvm_arch_vcpu_ioctl_set_regs()
570 kvmppc_set_cr(vcpu, regs->cr); in kvm_arch_vcpu_ioctl_set_regs()
571 kvmppc_set_ctr(vcpu, regs->ctr); in kvm_arch_vcpu_ioctl_set_regs()
572 kvmppc_set_lr(vcpu, regs->lr); in kvm_arch_vcpu_ioctl_set_regs()
573 kvmppc_set_xer(vcpu, regs->xer); in kvm_arch_vcpu_ioctl_set_regs()
574 kvmppc_set_msr(vcpu, regs->msr); in kvm_arch_vcpu_ioctl_set_regs()
575 kvmppc_set_srr0(vcpu, regs->srr0); in kvm_arch_vcpu_ioctl_set_regs()
576 kvmppc_set_srr1(vcpu, regs->srr1); in kvm_arch_vcpu_ioctl_set_regs()
577 kvmppc_set_sprg0(vcpu, regs->sprg0); in kvm_arch_vcpu_ioctl_set_regs()
578 kvmppc_set_sprg1(vcpu, regs->sprg1); in kvm_arch_vcpu_ioctl_set_regs()
579 kvmppc_set_sprg2(vcpu, regs->sprg2); in kvm_arch_vcpu_ioctl_set_regs()
580 kvmppc_set_sprg3(vcpu, regs->sprg3); in kvm_arch_vcpu_ioctl_set_regs()
581 kvmppc_set_sprg4(vcpu, regs->sprg4); in kvm_arch_vcpu_ioctl_set_regs()
582 kvmppc_set_sprg5(vcpu, regs->sprg5); in kvm_arch_vcpu_ioctl_set_regs()
583 kvmppc_set_sprg6(vcpu, regs->sprg6); in kvm_arch_vcpu_ioctl_set_regs()
584 kvmppc_set_sprg7(vcpu, regs->sprg7); in kvm_arch_vcpu_ioctl_set_regs()
587 kvmppc_set_gpr(vcpu, i, regs->gpr[i]); in kvm_arch_vcpu_ioctl_set_regs()
592 int kvm_arch_vcpu_ioctl_get_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) in kvm_arch_vcpu_ioctl_get_fpu() argument
597 int kvm_arch_vcpu_ioctl_set_fpu(struct kvm_vcpu *vcpu, struct kvm_fpu *fpu) in kvm_arch_vcpu_ioctl_set_fpu() argument
602 int kvmppc_get_one_reg(struct kvm_vcpu *vcpu, u64 id, in kvmppc_get_one_reg() argument
608 r = vcpu->kvm->arch.kvm_ops->get_one_reg(vcpu, id, val); in kvmppc_get_one_reg()
613 *val = get_reg_val(id, kvmppc_get_dar(vcpu)); in kvmppc_get_one_reg()
616 *val = get_reg_val(id, kvmppc_get_dsisr(vcpu)); in kvmppc_get_one_reg()
620 *val = get_reg_val(id, VCPU_FPR(vcpu, i)); in kvmppc_get_one_reg()
623 *val = get_reg_val(id, vcpu->arch.fp.fpscr); in kvmppc_get_one_reg()
629 val->vsxval[0] = vcpu->arch.fp.fpr[i][0]; in kvmppc_get_one_reg()
630 val->vsxval[1] = vcpu->arch.fp.fpr[i][1]; in kvmppc_get_one_reg()
641 if (!vcpu->arch.icp && !vcpu->arch.xive_vcpu) { in kvmppc_get_one_reg()
646 *val = get_reg_val(id, kvmppc_xive_get_icp(vcpu)); in kvmppc_get_one_reg()
648 *val = get_reg_val(id, kvmppc_xics_get_icp(vcpu)); in kvmppc_get_one_reg()
653 if (!vcpu->arch.xive_vcpu) { in kvmppc_get_one_reg()
658 r = kvmppc_xive_native_get_vp(vcpu, val); in kvmppc_get_one_reg()
664 *val = get_reg_val(id, vcpu->arch.fscr); in kvmppc_get_one_reg()
667 *val = get_reg_val(id, vcpu->arch.tar); in kvmppc_get_one_reg()
670 *val = get_reg_val(id, vcpu->arch.ebbhr); in kvmppc_get_one_reg()
673 *val = get_reg_val(id, vcpu->arch.ebbrr); in kvmppc_get_one_reg()
676 *val = get_reg_val(id, vcpu->arch.bescr); in kvmppc_get_one_reg()
679 *val = get_reg_val(id, vcpu->arch.ic); in kvmppc_get_one_reg()
690 int kvmppc_set_one_reg(struct kvm_vcpu *vcpu, u64 id, in kvmppc_set_one_reg() argument
696 r = vcpu->kvm->arch.kvm_ops->set_one_reg(vcpu, id, val); in kvmppc_set_one_reg()
701 kvmppc_set_dar(vcpu, set_reg_val(id, *val)); in kvmppc_set_one_reg()
704 kvmppc_set_dsisr(vcpu, set_reg_val(id, *val)); in kvmppc_set_one_reg()
708 VCPU_FPR(vcpu, i) = set_reg_val(id, *val); in kvmppc_set_one_reg()
711 vcpu->arch.fp.fpscr = set_reg_val(id, *val); in kvmppc_set_one_reg()
717 vcpu->arch.fp.fpr[i][0] = val->vsxval[0]; in kvmppc_set_one_reg()
718 vcpu->arch.fp.fpr[i][1] = val->vsxval[1]; in kvmppc_set_one_reg()
726 if (!vcpu->arch.icp && !vcpu->arch.xive_vcpu) { in kvmppc_set_one_reg()
731 r = kvmppc_xive_set_icp(vcpu, set_reg_val(id, *val)); in kvmppc_set_one_reg()
733 r = kvmppc_xics_set_icp(vcpu, set_reg_val(id, *val)); in kvmppc_set_one_reg()
738 if (!vcpu->arch.xive_vcpu) { in kvmppc_set_one_reg()
743 r = kvmppc_xive_native_set_vp(vcpu, val); in kvmppc_set_one_reg()
749 vcpu->arch.fscr = set_reg_val(id, *val); in kvmppc_set_one_reg()
752 vcpu->arch.tar = set_reg_val(id, *val); in kvmppc_set_one_reg()
755 vcpu->arch.ebbhr = set_reg_val(id, *val); in kvmppc_set_one_reg()
758 vcpu->arch.ebbrr = set_reg_val(id, *val); in kvmppc_set_one_reg()
761 vcpu->arch.bescr = set_reg_val(id, *val); in kvmppc_set_one_reg()
764 vcpu->arch.ic = set_reg_val(id, *val); in kvmppc_set_one_reg()
775 void kvmppc_core_vcpu_load(struct kvm_vcpu *vcpu, int cpu) in kvmppc_core_vcpu_load() argument
777 vcpu->kvm->arch.kvm_ops->vcpu_load(vcpu, cpu); in kvmppc_core_vcpu_load()
780 void kvmppc_core_vcpu_put(struct kvm_vcpu *vcpu) in kvmppc_core_vcpu_put() argument
782 vcpu->kvm->arch.kvm_ops->vcpu_put(vcpu); in kvmppc_core_vcpu_put()
785 void kvmppc_set_msr(struct kvm_vcpu *vcpu, u64 msr) in kvmppc_set_msr() argument
787 vcpu->kvm->arch.kvm_ops->set_msr(vcpu, msr); in kvmppc_set_msr()
791 int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu) in kvmppc_vcpu_run() argument
793 return vcpu->kvm->arch.kvm_ops->vcpu_run(kvm_run, vcpu); in kvmppc_vcpu_run()
796 int kvm_arch_vcpu_ioctl_translate(struct kvm_vcpu *vcpu, in kvm_arch_vcpu_ioctl_translate() argument
802 int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu, in kvm_arch_vcpu_ioctl_set_guest_debug() argument
805 vcpu_load(vcpu); in kvm_arch_vcpu_ioctl_set_guest_debug()
806 vcpu->guest_debug = dbg->control; in kvm_arch_vcpu_ioctl_set_guest_debug()
807 vcpu_put(vcpu); in kvm_arch_vcpu_ioctl_set_guest_debug()
811 void kvmppc_decrementer_func(struct kvm_vcpu *vcpu) in kvmppc_decrementer_func() argument
813 kvmppc_core_queue_dec(vcpu); in kvmppc_decrementer_func()
814 kvm_vcpu_kick(vcpu); in kvmppc_decrementer_func()
822 void kvmppc_core_vcpu_free(struct kvm_vcpu *vcpu) in kvmppc_core_vcpu_free() argument
824 vcpu->kvm->arch.kvm_ops->vcpu_free(vcpu); in kvmppc_core_vcpu_free()
827 int kvmppc_core_check_requests(struct kvm_vcpu *vcpu) in kvmppc_core_check_requests() argument
829 return vcpu->kvm->arch.kvm_ops->check_requests(vcpu); in kvmppc_core_check_requests()
891 void kvmppc_mmu_destroy(struct kvm_vcpu *vcpu) in kvmppc_mmu_destroy() argument
893 vcpu->kvm->arch.kvm_ops->mmu_destroy(vcpu); in kvmppc_mmu_destroy()
929 int kvmppc_h_logical_ci_load(struct kvm_vcpu *vcpu) in kvmppc_h_logical_ci_load() argument
931 unsigned long size = kvmppc_get_gpr(vcpu, 4); in kvmppc_h_logical_ci_load()
932 unsigned long addr = kvmppc_get_gpr(vcpu, 5); in kvmppc_h_logical_ci_load()
940 srcu_idx = srcu_read_lock(&vcpu->kvm->srcu); in kvmppc_h_logical_ci_load()
941 ret = kvm_io_bus_read(vcpu, KVM_MMIO_BUS, addr, size, &buf); in kvmppc_h_logical_ci_load()
942 srcu_read_unlock(&vcpu->kvm->srcu, srcu_idx); in kvmppc_h_logical_ci_load()
948 kvmppc_set_gpr(vcpu, 4, *(u8 *)&buf); in kvmppc_h_logical_ci_load()
952 kvmppc_set_gpr(vcpu, 4, be16_to_cpu(*(__be16 *)&buf)); in kvmppc_h_logical_ci_load()
956 kvmppc_set_gpr(vcpu, 4, be32_to_cpu(*(__be32 *)&buf)); in kvmppc_h_logical_ci_load()
960 kvmppc_set_gpr(vcpu, 4, be64_to_cpu(*(__be64 *)&buf)); in kvmppc_h_logical_ci_load()
971 int kvmppc_h_logical_ci_store(struct kvm_vcpu *vcpu) in kvmppc_h_logical_ci_store() argument
973 unsigned long size = kvmppc_get_gpr(vcpu, 4); in kvmppc_h_logical_ci_store()
974 unsigned long addr = kvmppc_get_gpr(vcpu, 5); in kvmppc_h_logical_ci_store()
975 unsigned long val = kvmppc_get_gpr(vcpu, 6); in kvmppc_h_logical_ci_store()
1001 srcu_idx = srcu_read_lock(&vcpu->kvm->srcu); in kvmppc_h_logical_ci_store()
1002 ret = kvm_io_bus_write(vcpu, KVM_MMIO_BUS, addr, size, &buf); in kvmppc_h_logical_ci_store()
1003 srcu_read_unlock(&vcpu->kvm->srcu, srcu_idx); in kvmppc_h_logical_ci_store()