Lines Matching refs:kvm
35 struct kvm *kvm, int irq_source_id, int level, in kvm_set_pic_irq() argument
38 struct kvm_pic *pic = pic_irqchip(kvm); in kvm_set_pic_irq()
43 struct kvm *kvm, int irq_source_id, int level, in kvm_set_ioapic_irq() argument
46 struct kvm_ioapic *ioapic = kvm->arch.vioapic; in kvm_set_ioapic_irq()
56 int kvm_irq_delivery_to_apic(struct kvm *kvm, struct kvm_lapic *src, in kvm_irq_delivery_to_apic() argument
68 if (kvm_irq_delivery_to_apic_fast(kvm, src, irq, &r, dest_map)) in kvm_irq_delivery_to_apic()
71 kvm_for_each_vcpu(i, vcpu, kvm) { in kvm_irq_delivery_to_apic()
115 struct kvm *kvm, int irq_source_id, int level, bool line_status) in kvm_set_msi() argument
124 return kvm_irq_delivery_to_apic(kvm, NULL, &irq, NULL); in kvm_set_msi()
129 struct kvm *kvm) in kvm_set_msi_inatomic() argument
136 if (kvm_irq_delivery_to_apic_fast(kvm, NULL, &irq, &r, NULL)) in kvm_set_msi_inatomic()
149 int kvm_set_irq_inatomic(struct kvm *kvm, int irq_source_id, u32 irq, int level) in kvm_set_irq_inatomic() argument
166 idx = srcu_read_lock(&kvm->irq_srcu); in kvm_set_irq_inatomic()
167 if (kvm_irq_map_gsi(kvm, entries, irq) > 0) { in kvm_set_irq_inatomic()
170 ret = kvm_set_msi_inatomic(e, kvm); in kvm_set_irq_inatomic()
174 srcu_read_unlock(&kvm->irq_srcu, idx); in kvm_set_irq_inatomic()
178 int kvm_request_irq_source_id(struct kvm *kvm) in kvm_request_irq_source_id() argument
180 unsigned long *bitmap = &kvm->arch.irq_sources_bitmap; in kvm_request_irq_source_id()
183 mutex_lock(&kvm->irq_lock); in kvm_request_irq_source_id()
196 mutex_unlock(&kvm->irq_lock); in kvm_request_irq_source_id()
201 void kvm_free_irq_source_id(struct kvm *kvm, int irq_source_id) in kvm_free_irq_source_id() argument
206 mutex_lock(&kvm->irq_lock); in kvm_free_irq_source_id()
212 clear_bit(irq_source_id, &kvm->arch.irq_sources_bitmap); in kvm_free_irq_source_id()
213 if (!irqchip_in_kernel(kvm)) in kvm_free_irq_source_id()
216 kvm_ioapic_clear_all(kvm->arch.vioapic, irq_source_id); in kvm_free_irq_source_id()
217 kvm_pic_clear_all(pic_irqchip(kvm), irq_source_id); in kvm_free_irq_source_id()
219 mutex_unlock(&kvm->irq_lock); in kvm_free_irq_source_id()
222 void kvm_register_irq_mask_notifier(struct kvm *kvm, int irq, in kvm_register_irq_mask_notifier() argument
225 mutex_lock(&kvm->irq_lock); in kvm_register_irq_mask_notifier()
227 hlist_add_head_rcu(&kimn->link, &kvm->arch.mask_notifier_list); in kvm_register_irq_mask_notifier()
228 mutex_unlock(&kvm->irq_lock); in kvm_register_irq_mask_notifier()
231 void kvm_unregister_irq_mask_notifier(struct kvm *kvm, int irq, in kvm_unregister_irq_mask_notifier() argument
234 mutex_lock(&kvm->irq_lock); in kvm_unregister_irq_mask_notifier()
236 mutex_unlock(&kvm->irq_lock); in kvm_unregister_irq_mask_notifier()
237 synchronize_srcu(&kvm->irq_srcu); in kvm_unregister_irq_mask_notifier()
240 void kvm_fire_mask_notifiers(struct kvm *kvm, unsigned irqchip, unsigned pin, in kvm_fire_mask_notifiers() argument
246 idx = srcu_read_lock(&kvm->irq_srcu); in kvm_fire_mask_notifiers()
247 gsi = kvm_irq_map_chip_pin(kvm, irqchip, pin); in kvm_fire_mask_notifiers()
249 hlist_for_each_entry_rcu(kimn, &kvm->arch.mask_notifier_list, link) in kvm_fire_mask_notifiers()
252 srcu_read_unlock(&kvm->irq_srcu, idx); in kvm_fire_mask_notifiers()
328 int kvm_setup_default_irq_routing(struct kvm *kvm) in kvm_setup_default_irq_routing() argument
330 return kvm_set_irq_routing(kvm, default_routing, in kvm_setup_default_irq_routing()