Lines Matching refs:mmio

394 void vgic_reg_access(struct kvm_exit_mmio *mmio, u32 *reg,  in vgic_reg_access()  argument
398 u32 mask = (1UL << (mmio->len * 8)) - 1; in vgic_reg_access()
413 if (mmio->is_write) { in vgic_reg_access()
414 u32 data = mmio_data_read(mmio, mask) << word_offset; in vgic_reg_access()
439 mmio_data_write(mmio, mask, regval >> word_offset); in vgic_reg_access()
444 bool handle_mmio_raz_wi(struct kvm_vcpu *vcpu, struct kvm_exit_mmio *mmio, in handle_mmio_raz_wi() argument
447 vgic_reg_access(mmio, NULL, offset, in handle_mmio_raz_wi()
452 bool vgic_handle_enable_reg(struct kvm *kvm, struct kvm_exit_mmio *mmio, in vgic_handle_enable_reg() argument
460 vgic_reg_access(mmio, reg, offset, mode); in vgic_handle_enable_reg()
461 if (mmio->is_write) { in vgic_handle_enable_reg()
475 struct kvm_exit_mmio *mmio, in vgic_handle_set_pending_reg() argument
489 vgic_reg_access(mmio, reg, offset, mode); in vgic_handle_set_pending_reg()
491 if (mmio->is_write) { in vgic_handle_set_pending_reg()
495 vgic_reg_access(mmio, reg, offset, mode); in vgic_handle_set_pending_reg()
512 struct kvm_exit_mmio *mmio, in vgic_handle_clear_pending_reg() argument
522 vgic_reg_access(mmio, reg, offset, mode); in vgic_handle_clear_pending_reg()
523 if (mmio->is_write) { in vgic_handle_clear_pending_reg()
539 vgic_reg_access(mmio, reg, offset, mode); in vgic_handle_clear_pending_reg()
548 struct kvm_exit_mmio *mmio, in vgic_handle_set_active_reg() argument
555 vgic_reg_access(mmio, reg, offset, in vgic_handle_set_active_reg()
558 if (mmio->is_write) { in vgic_handle_set_active_reg()
567 struct kvm_exit_mmio *mmio, in vgic_handle_clear_active_reg() argument
574 vgic_reg_access(mmio, reg, offset, in vgic_handle_clear_active_reg()
577 if (mmio->is_write) { in vgic_handle_clear_active_reg()
620 bool vgic_handle_cfg_reg(u32 *reg, struct kvm_exit_mmio *mmio, in vgic_handle_cfg_reg() argument
631 vgic_reg_access(mmio, &val, offset, in vgic_handle_cfg_reg()
633 if (mmio->is_write) { in vgic_handle_cfg_reg()
757 struct kvm_exit_mmio *mmio, in call_range_handler() argument
764 if (likely(mmio->len <= 4)) in call_range_handler()
765 return range->handle_mmio(vcpu, mmio, offset); in call_range_handler()
773 mmio32.is_write = mmio->is_write; in call_range_handler()
774 mmio32.private = mmio->private; in call_range_handler()
776 mmio32.phys_addr = mmio->phys_addr + 4; in call_range_handler()
777 mmio32.data = &((u32 *)mmio->data)[1]; in call_range_handler()
780 mmio32.phys_addr = mmio->phys_addr; in call_range_handler()
781 mmio32.data = &((u32 *)mmio->data)[0]; in call_range_handler()
808 struct kvm_exit_mmio mmio; in vgic_handle_mmio_access() local
819 mmio.phys_addr = addr; in vgic_handle_mmio_access()
820 mmio.len = len; in vgic_handle_mmio_access()
821 mmio.is_write = is_write; in vgic_handle_mmio_access()
822 mmio.data = val; in vgic_handle_mmio_access()
823 mmio.private = iodev->redist_vcpu; in vgic_handle_mmio_access()
828 updated_state = call_range_handler(vcpu, &mmio, offset, range); in vgic_handle_mmio_access()
835 run->mmio.is_write = is_write; in vgic_handle_mmio_access()
836 run->mmio.len = len; in vgic_handle_mmio_access()
837 run->mmio.phys_addr = addr; in vgic_handle_mmio_access()
838 memcpy(run->mmio.data, val, len); in vgic_handle_mmio_access()