Lines Matching defs:kvm

8  * This file is derived from virt/kvm/irq_comm.c.
19 #include <trace/events/kvm.h>
26 int kvm_irq_map_gsi(struct kvm *kvm,
33 irq_rt = srcu_dereference_check(kvm->irq_routing, &kvm->irq_srcu,
34 lockdep_is_held(&kvm->irq_lock));
45 int kvm_irq_map_chip_pin(struct kvm *kvm, unsigned irqchip, unsigned pin)
49 irq_rt = srcu_dereference(kvm->irq_routing, &kvm->irq_srcu);
53 int kvm_send_userspace_msi(struct kvm *kvm, struct kvm_msi *msi)
57 if (!irqchip_in_kernel(kvm) || (msi->flags & ~KVM_MSI_VALID_DEVID))
66 return kvm_set_msi(&route, kvm, KVM_USERSPACE_IRQ_SOURCE_ID, 1, false);
75 int kvm_set_irq(struct kvm *kvm, int irq_source_id, u32 irq, int level,
87 idx = srcu_read_lock(&kvm->irq_srcu);
88 i = kvm_irq_map_gsi(kvm, irq_set, irq);
89 srcu_read_unlock(&kvm->irq_srcu, idx);
93 r = irq_set[i].set(&irq_set[i], kvm, irq_source_id, level,
124 void kvm_free_irq_routing(struct kvm *kvm)
128 struct kvm_irq_routing_table *rt = rcu_access_pointer(kvm->irq_routing);
132 static int setup_routing_entry(struct kvm *kvm,
153 r = kvm_set_routing_entry(kvm, e, ue);
164 void __attribute__((weak)) kvm_arch_irq_routing_update(struct kvm *kvm)
168 bool __weak kvm_arch_can_set_irq_routing(struct kvm *kvm)
173 int kvm_set_irq_routing(struct kvm *kvm,
217 r = setup_routing_entry(kvm, new, e, ue);
223 mutex_lock(&kvm->irq_lock);
224 old = rcu_dereference_protected(kvm->irq_routing, 1);
225 rcu_assign_pointer(kvm->irq_routing, new);
226 kvm_irq_routing_update(kvm);
227 kvm_arch_irq_routing_update(kvm);
228 mutex_unlock(&kvm->irq_lock);
230 kvm_arch_post_irq_routing_update(kvm);
232 synchronize_srcu_expedited(&kvm->irq_srcu);