Lines Matching refs:kvm
34 int kvm_irq_map_gsi(struct kvm *kvm, in kvm_irq_map_gsi() argument
41 irq_rt = srcu_dereference_check(kvm->irq_routing, &kvm->irq_srcu, in kvm_irq_map_gsi()
42 lockdep_is_held(&kvm->irq_lock)); in kvm_irq_map_gsi()
53 int kvm_irq_map_chip_pin(struct kvm *kvm, unsigned irqchip, unsigned pin) in kvm_irq_map_chip_pin() argument
57 irq_rt = srcu_dereference(kvm->irq_routing, &kvm->irq_srcu); in kvm_irq_map_chip_pin()
61 int kvm_send_userspace_msi(struct kvm *kvm, struct kvm_msi *msi) in kvm_send_userspace_msi() argument
65 if (!irqchip_in_kernel(kvm) || msi->flags != 0) in kvm_send_userspace_msi()
72 return kvm_set_msi(&route, kvm, KVM_USERSPACE_IRQ_SOURCE_ID, 1, false); in kvm_send_userspace_msi()
81 int kvm_set_irq(struct kvm *kvm, int irq_source_id, u32 irq, int level, in kvm_set_irq() argument
93 idx = srcu_read_lock(&kvm->irq_srcu); in kvm_set_irq()
94 i = kvm_irq_map_gsi(kvm, irq_set, irq); in kvm_set_irq()
95 srcu_read_unlock(&kvm->irq_srcu, idx); in kvm_set_irq()
99 r = irq_set[i].set(&irq_set[i], kvm, irq_source_id, level, in kvm_set_irq()
130 void kvm_free_irq_routing(struct kvm *kvm) in kvm_free_irq_routing() argument
134 struct kvm_irq_routing_table *rt = rcu_access_pointer(kvm->irq_routing); in kvm_free_irq_routing()
169 int kvm_set_irq_routing(struct kvm *kvm, in kvm_set_irq_routing() argument
218 mutex_lock(&kvm->irq_lock); in kvm_set_irq_routing()
219 old = kvm->irq_routing; in kvm_set_irq_routing()
220 rcu_assign_pointer(kvm->irq_routing, new); in kvm_set_irq_routing()
221 kvm_irq_routing_update(kvm); in kvm_set_irq_routing()
222 mutex_unlock(&kvm->irq_lock); in kvm_set_irq_routing()
224 kvm_arch_irq_routing_update(kvm); in kvm_set_irq_routing()
226 synchronize_srcu_expedited(&kvm->irq_srcu); in kvm_set_irq_routing()