Lines Matching refs:kvm
21 int kvm_irq_map_gsi(struct kvm *kvm, in kvm_irq_map_gsi() argument
28 irq_rt = srcu_dereference_check(kvm->irq_routing, &kvm->irq_srcu, in kvm_irq_map_gsi()
29 lockdep_is_held(&kvm->irq_lock)); in kvm_irq_map_gsi()
40 int kvm_irq_map_chip_pin(struct kvm *kvm, unsigned irqchip, unsigned pin) in kvm_irq_map_chip_pin() argument
44 irq_rt = srcu_dereference(kvm->irq_routing, &kvm->irq_srcu); in kvm_irq_map_chip_pin()
48 int kvm_send_userspace_msi(struct kvm *kvm, struct kvm_msi *msi) in kvm_send_userspace_msi() argument
52 if (!kvm_arch_irqchip_in_kernel(kvm) || (msi->flags & ~KVM_MSI_VALID_DEVID)) in kvm_send_userspace_msi()
61 return kvm_set_msi(&route, kvm, KVM_USERSPACE_IRQ_SOURCE_ID, 1, false); in kvm_send_userspace_msi()
70 int kvm_set_irq(struct kvm *kvm, int irq_source_id, u32 irq, int level, in kvm_set_irq() argument
82 idx = srcu_read_lock(&kvm->irq_srcu); in kvm_set_irq()
83 i = kvm_irq_map_gsi(kvm, irq_set, irq); in kvm_set_irq()
84 srcu_read_unlock(&kvm->irq_srcu, idx); in kvm_set_irq()
88 r = irq_set[i].set(&irq_set[i], kvm, irq_source_id, level, in kvm_set_irq()
119 void kvm_free_irq_routing(struct kvm *kvm) in kvm_free_irq_routing() argument
123 struct kvm_irq_routing_table *rt = rcu_access_pointer(kvm->irq_routing); in kvm_free_irq_routing()
127 static int setup_routing_entry(struct kvm *kvm, in setup_routing_entry() argument
148 r = kvm_set_routing_entry(kvm, e, ue); in setup_routing_entry()
159 void __attribute__((weak)) kvm_arch_irq_routing_update(struct kvm *kvm) in kvm_arch_irq_routing_update() argument
163 bool __weak kvm_arch_can_set_irq_routing(struct kvm *kvm) in kvm_arch_can_set_irq_routing() argument
168 int kvm_set_irq_routing(struct kvm *kvm, in kvm_set_irq_routing() argument
212 r = setup_routing_entry(kvm, new, e, ue); in kvm_set_irq_routing()
218 mutex_lock(&kvm->irq_lock); in kvm_set_irq_routing()
219 old = rcu_dereference_protected(kvm->irq_routing, 1); 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 kvm_arch_irq_routing_update(kvm); in kvm_set_irq_routing()
223 mutex_unlock(&kvm->irq_lock); in kvm_set_irq_routing()
225 kvm_arch_post_irq_routing_update(kvm); in kvm_set_irq_routing()
227 synchronize_srcu_expedited(&kvm->irq_srcu); in kvm_set_irq_routing()