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 & ~KVM_MSI_VALID_DEVID)) in kvm_send_userspace_msi()
74 return kvm_set_msi(&route, kvm, KVM_USERSPACE_IRQ_SOURCE_ID, 1, false); in kvm_send_userspace_msi()
83 int kvm_set_irq(struct kvm *kvm, int irq_source_id, u32 irq, int level, in kvm_set_irq() argument
95 idx = srcu_read_lock(&kvm->irq_srcu); in kvm_set_irq()
96 i = kvm_irq_map_gsi(kvm, irq_set, irq); in kvm_set_irq()
97 srcu_read_unlock(&kvm->irq_srcu, idx); in kvm_set_irq()
101 r = irq_set[i].set(&irq_set[i], kvm, irq_source_id, level, in kvm_set_irq()
132 void kvm_free_irq_routing(struct kvm *kvm) in kvm_free_irq_routing() argument
136 struct kvm_irq_routing_table *rt = rcu_access_pointer(kvm->irq_routing); in kvm_free_irq_routing()
140 static int setup_routing_entry(struct kvm *kvm, in setup_routing_entry() argument
160 r = kvm_set_routing_entry(kvm, e, ue); in setup_routing_entry()
171 void __attribute__((weak)) kvm_arch_irq_routing_update(struct kvm *kvm) in kvm_arch_irq_routing_update() argument
175 bool __weak kvm_arch_can_set_irq_routing(struct kvm *kvm) in kvm_arch_can_set_irq_routing() argument
180 int kvm_set_irq_routing(struct kvm *kvm, in kvm_set_irq_routing() argument
226 r = setup_routing_entry(kvm, new, e, ue); in kvm_set_irq_routing()
232 mutex_lock(&kvm->irq_lock); in kvm_set_irq_routing()
233 old = rcu_dereference_protected(kvm->irq_routing, 1); in kvm_set_irq_routing()
234 rcu_assign_pointer(kvm->irq_routing, new); in kvm_set_irq_routing()
235 kvm_irq_routing_update(kvm); in kvm_set_irq_routing()
236 kvm_arch_irq_routing_update(kvm); in kvm_set_irq_routing()
237 mutex_unlock(&kvm->irq_lock); in kvm_set_irq_routing()
239 kvm_arch_post_irq_routing_update(kvm); in kvm_set_irq_routing()
241 synchronize_srcu_expedited(&kvm->irq_srcu); in kvm_set_irq_routing()