Lines Matching refs:kvm
51 reg = vcpu->kvm->arch.vgic.enabled; in handle_mmio_misc()
55 vcpu->kvm->arch.vgic.enabled = reg & 1; in handle_mmio_misc()
56 vgic_update_state(vcpu->kvm); in handle_mmio_misc()
62 reg = (atomic_read(&vcpu->kvm->online_vcpus) - 1) << 5; in handle_mmio_misc()
63 reg |= (vcpu->kvm->arch.vgic.nr_irqs >> 5) - 1; in handle_mmio_misc()
82 return vgic_handle_enable_reg(vcpu->kvm, mmio, offset, in handle_mmio_set_enable_reg()
90 return vgic_handle_enable_reg(vcpu->kvm, mmio, offset, in handle_mmio_clear_enable_reg()
98 return vgic_handle_set_pending_reg(vcpu->kvm, mmio, offset, in handle_mmio_set_pending_reg()
106 return vgic_handle_clear_pending_reg(vcpu->kvm, mmio, offset, in handle_mmio_clear_pending_reg()
114 return vgic_handle_set_active_reg(vcpu->kvm, mmio, offset, in handle_mmio_set_active_reg()
122 return vgic_handle_clear_active_reg(vcpu->kvm, mmio, offset, in handle_mmio_clear_active_reg()
130 u32 *reg = vgic_bytemap_get_reg(&vcpu->kvm->arch.vgic.irq_priority, in handle_mmio_priority_reg()
140 static u32 vgic_get_target_reg(struct kvm *kvm, int irq) in vgic_get_target_reg() argument
142 struct vgic_dist *dist = &kvm->arch.vgic; in vgic_get_target_reg()
154 static void vgic_set_target_reg(struct kvm *kvm, u32 val, int irq) in vgic_set_target_reg() argument
156 struct vgic_dist *dist = &kvm->arch.vgic; in vgic_set_target_reg()
175 kvm_for_each_vcpu(c, vcpu, kvm) { in vgic_set_target_reg()
204 reg = vgic_get_target_reg(vcpu->kvm, offset & ~3U); in handle_mmio_target_reg()
208 vgic_set_target_reg(vcpu->kvm, reg, offset & ~3U); in handle_mmio_target_reg()
209 vgic_update_state(vcpu->kvm); in handle_mmio_target_reg()
221 reg = vgic_bitmap_get_reg(&vcpu->kvm->arch.vgic.irq_cfg, in handle_mmio_cfg_reg()
236 vgic_update_state(vcpu->kvm); in handle_mmio_sgi_reg()
248 struct vgic_dist *dist = &vcpu->kvm->arch.vgic; in read_set_clear_sgi_pend_reg()
270 struct vgic_dist *dist = &vcpu->kvm->arch.vgic; in write_set_clear_sgi_pend_reg()
297 vgic_update_state(vcpu->kvm); in write_set_clear_sgi_pend_reg()
409 struct kvm *kvm = vcpu->kvm; in vgic_dispatch_sgi() local
410 struct vgic_dist *dist = &kvm->arch.vgic; in vgic_dispatch_sgi()
411 int nrcpus = atomic_read(&kvm->online_vcpus); in vgic_dispatch_sgi()
436 kvm_for_each_vcpu(c, vcpu, kvm) { in vgic_dispatch_sgi()
451 struct vgic_dist *dist = &vcpu->kvm->arch.vgic; in vgic_v2_queue_sgi()
488 static int vgic_v2_map_resources(struct kvm *kvm, in vgic_v2_map_resources() argument
491 struct vgic_dist *dist = &kvm->arch.vgic; in vgic_v2_map_resources()
494 if (!irqchip_in_kernel(kvm)) in vgic_v2_map_resources()
497 mutex_lock(&kvm->lock); in vgic_v2_map_resources()
499 if (vgic_ready(kvm)) in vgic_v2_map_resources()
509 vgic_register_kvm_io_dev(kvm, dist->vgic_dist_base, in vgic_v2_map_resources()
517 ret = vgic_init(kvm); in vgic_v2_map_resources()
523 ret = kvm_phys_addr_ioremap(kvm, dist->vgic_cpu_base, in vgic_v2_map_resources()
535 kvm_io_bus_unregister_dev(kvm, KVM_MMIO_BUS, &dist->dist_iodev.dev); in vgic_v2_map_resources()
539 kvm_vgic_destroy(kvm); in vgic_v2_map_resources()
540 mutex_unlock(&kvm->lock); in vgic_v2_map_resources()
546 struct vgic_dist *dist = &vcpu->kvm->arch.vgic; in vgic_v2_add_sgi_source()
551 static int vgic_v2_init_model(struct kvm *kvm) in vgic_v2_init_model() argument
555 for (i = VGIC_NR_PRIVATE_IRQS; i < kvm->arch.vgic.nr_irqs; i += 4) in vgic_v2_init_model()
556 vgic_set_target_reg(kvm, 0, i); in vgic_v2_init_model()
561 void vgic_v2_init_emulation(struct kvm *kvm) in vgic_v2_init_emulation() argument
563 struct vgic_dist *dist = &kvm->arch.vgic; in vgic_v2_init_emulation()
570 kvm->arch.max_vcpus = VGIC_V2_MAX_CPUS; in vgic_v2_init_emulation()
680 mutex_lock(&dev->kvm->lock); in vgic_attr_regs_access()
682 ret = vgic_init(dev->kvm); in vgic_attr_regs_access()
686 if (cpuid >= atomic_read(&dev->kvm->online_vcpus)) { in vgic_attr_regs_access()
691 vcpu = kvm_get_vcpu(dev->kvm, cpuid); in vgic_attr_regs_access()
692 vgic = &dev->kvm->arch.vgic; in vgic_attr_regs_access()
728 kvm_for_each_vcpu(c, tmp_vcpu, dev->kvm) { in vgic_attr_regs_access()
740 kvm_for_each_vcpu(c, tmp_vcpu, dev->kvm) in vgic_attr_regs_access()
753 mutex_unlock(&dev->kvm->lock); in vgic_attr_regs_access()
759 return kvm_vgic_create(dev->kvm, type); in vgic_v2_create()