Lines Matching refs:vcpu
52 static bool handle_mmio_rao_wi(struct kvm_vcpu *vcpu, in handle_mmio_rao_wi() argument
63 static bool handle_mmio_ctlr(struct kvm_vcpu *vcpu, in handle_mmio_ctlr() argument
72 if (vcpu->kvm->arch.vgic.enabled) in handle_mmio_ctlr()
79 vcpu->kvm->arch.vgic.enabled = !!(reg & GICD_CTLR_ENABLE_SS_G1); in handle_mmio_ctlr()
80 vgic_update_state(vcpu->kvm); in handle_mmio_ctlr()
93 static bool handle_mmio_typer(struct kvm_vcpu *vcpu, in handle_mmio_typer() argument
98 reg = (min(vcpu->kvm->arch.vgic.nr_irqs, 1024) >> 5) - 1; in handle_mmio_typer()
108 static bool handle_mmio_iidr(struct kvm_vcpu *vcpu, in handle_mmio_iidr() argument
120 static bool handle_mmio_set_enable_reg_dist(struct kvm_vcpu *vcpu, in handle_mmio_set_enable_reg_dist() argument
125 return vgic_handle_enable_reg(vcpu->kvm, mmio, offset, in handle_mmio_set_enable_reg_dist()
126 vcpu->vcpu_id, in handle_mmio_set_enable_reg_dist()
134 static bool handle_mmio_clear_enable_reg_dist(struct kvm_vcpu *vcpu, in handle_mmio_clear_enable_reg_dist() argument
139 return vgic_handle_enable_reg(vcpu->kvm, mmio, offset, in handle_mmio_clear_enable_reg_dist()
140 vcpu->vcpu_id, in handle_mmio_clear_enable_reg_dist()
148 static bool handle_mmio_set_pending_reg_dist(struct kvm_vcpu *vcpu, in handle_mmio_set_pending_reg_dist() argument
153 return vgic_handle_set_pending_reg(vcpu->kvm, mmio, offset, in handle_mmio_set_pending_reg_dist()
154 vcpu->vcpu_id); in handle_mmio_set_pending_reg_dist()
161 static bool handle_mmio_clear_pending_reg_dist(struct kvm_vcpu *vcpu, in handle_mmio_clear_pending_reg_dist() argument
166 return vgic_handle_clear_pending_reg(vcpu->kvm, mmio, offset, in handle_mmio_clear_pending_reg_dist()
167 vcpu->vcpu_id); in handle_mmio_clear_pending_reg_dist()
174 static bool handle_mmio_set_active_reg_dist(struct kvm_vcpu *vcpu, in handle_mmio_set_active_reg_dist() argument
179 return vgic_handle_set_active_reg(vcpu->kvm, mmio, offset, in handle_mmio_set_active_reg_dist()
180 vcpu->vcpu_id); in handle_mmio_set_active_reg_dist()
187 static bool handle_mmio_clear_active_reg_dist(struct kvm_vcpu *vcpu, in handle_mmio_clear_active_reg_dist() argument
192 return vgic_handle_clear_active_reg(vcpu->kvm, mmio, offset, in handle_mmio_clear_active_reg_dist()
193 vcpu->vcpu_id); in handle_mmio_clear_active_reg_dist()
200 static bool handle_mmio_priority_reg_dist(struct kvm_vcpu *vcpu, in handle_mmio_priority_reg_dist() argument
212 reg = vgic_bytemap_get_reg(&vcpu->kvm->arch.vgic.irq_priority, in handle_mmio_priority_reg_dist()
213 vcpu->vcpu_id, offset); in handle_mmio_priority_reg_dist()
219 static bool handle_mmio_cfg_reg_dist(struct kvm_vcpu *vcpu, in handle_mmio_cfg_reg_dist() argument
231 reg = vgic_bitmap_get_reg(&vcpu->kvm->arch.vgic.irq_cfg, in handle_mmio_cfg_reg_dist()
232 vcpu->vcpu_id, offset >> 1); in handle_mmio_cfg_reg_dist()
274 static bool handle_mmio_route_reg(struct kvm_vcpu *vcpu, in handle_mmio_route_reg() argument
278 struct kvm *kvm = vcpu->kvm; in handle_mmio_route_reg()
312 vcpu = kvm_mpidr_to_vcpu(kvm, mpidr); in handle_mmio_route_reg()
313 if (likely(vcpu)) { in handle_mmio_route_reg()
314 vcpu_id = vcpu->vcpu_id; in handle_mmio_route_reg()
320 vcpu = kvm_mpidr_to_vcpu(kvm, reg & MPIDR_HWID_BITMASK); in handle_mmio_route_reg()
329 if (likely(vcpu)) { in handle_mmio_route_reg()
330 vcpu_id = vcpu->vcpu_id; in handle_mmio_route_reg()
349 static bool handle_mmio_idregs(struct kvm_vcpu *vcpu, in handle_mmio_idregs() argument
529 static bool handle_mmio_ctlr_redist(struct kvm_vcpu *vcpu, in handle_mmio_ctlr_redist() argument
539 static bool handle_mmio_typer_redist(struct kvm_vcpu *vcpu, in handle_mmio_typer_redist() argument
559 if (target_vcpu_id == atomic_read(&vcpu->kvm->online_vcpus) - 1) in handle_mmio_typer_redist()
566 static bool handle_mmio_set_enable_reg_redist(struct kvm_vcpu *vcpu, in handle_mmio_set_enable_reg_redist() argument
572 return vgic_handle_enable_reg(vcpu->kvm, mmio, offset, in handle_mmio_set_enable_reg_redist()
577 static bool handle_mmio_clear_enable_reg_redist(struct kvm_vcpu *vcpu, in handle_mmio_clear_enable_reg_redist() argument
583 return vgic_handle_enable_reg(vcpu->kvm, mmio, offset, in handle_mmio_clear_enable_reg_redist()
588 static bool handle_mmio_set_active_reg_redist(struct kvm_vcpu *vcpu, in handle_mmio_set_active_reg_redist() argument
594 return vgic_handle_set_active_reg(vcpu->kvm, mmio, offset, in handle_mmio_set_active_reg_redist()
598 static bool handle_mmio_clear_active_reg_redist(struct kvm_vcpu *vcpu, in handle_mmio_clear_active_reg_redist() argument
604 return vgic_handle_clear_active_reg(vcpu->kvm, mmio, offset, in handle_mmio_clear_active_reg_redist()
608 static bool handle_mmio_set_pending_reg_redist(struct kvm_vcpu *vcpu, in handle_mmio_set_pending_reg_redist() argument
614 return vgic_handle_set_pending_reg(vcpu->kvm, mmio, offset, in handle_mmio_set_pending_reg_redist()
618 static bool handle_mmio_clear_pending_reg_redist(struct kvm_vcpu *vcpu, in handle_mmio_clear_pending_reg_redist() argument
624 return vgic_handle_clear_pending_reg(vcpu->kvm, mmio, offset, in handle_mmio_clear_pending_reg_redist()
628 static bool handle_mmio_priority_reg_redist(struct kvm_vcpu *vcpu, in handle_mmio_priority_reg_redist() argument
635 reg = vgic_bytemap_get_reg(&vcpu->kvm->arch.vgic.irq_priority, in handle_mmio_priority_reg_redist()
642 static bool handle_mmio_cfg_reg_redist(struct kvm_vcpu *vcpu, in handle_mmio_cfg_reg_redist() argument
648 u32 *reg = vgic_bitmap_get_reg(&vcpu->kvm->arch.vgic.irq_cfg, in handle_mmio_cfg_reg_redist()
755 static bool vgic_v3_queue_sgi(struct kvm_vcpu *vcpu, int irq) in vgic_v3_queue_sgi() argument
757 if (vgic_queue_irq(vcpu, 0, irq)) { in vgic_v3_queue_sgi()
758 vgic_dist_irq_clear_pending(vcpu, irq); in vgic_v3_queue_sgi()
759 vgic_cpu_irq_clear(vcpu, irq); in vgic_v3_queue_sgi()
866 static void vgic_v3_add_sgi_source(struct kvm_vcpu *vcpu, int irq, int source) in vgic_v3_add_sgi_source() argument
888 static int match_mpidr(u64 sgi_aff, u16 sgi_cpu_mask, struct kvm_vcpu *vcpu) in match_mpidr() argument
897 affinity = kvm_vcpu_get_mpidr_aff(vcpu); in match_mpidr()
929 void vgic_v3_dispatch_sgi(struct kvm_vcpu *vcpu, u64 reg) in vgic_v3_dispatch_sgi() argument
931 struct kvm *kvm = vcpu->kvm; in vgic_v3_dispatch_sgi()
937 int vcpu_id = vcpu->vcpu_id; in vgic_v3_dispatch_sgi()
987 vgic_update_state(vcpu->kvm); in vgic_v3_dispatch_sgi()
990 vgic_kick_vcpus(vcpu->kvm); in vgic_v3_dispatch_sgi()