Lines Matching refs:kvm

29 			   struct kvm *kvm, int irq_source_id, int level,  in kvm_set_pic_irq()  argument
32 struct kvm_pic *pic = kvm->arch.vpic; in kvm_set_pic_irq()
37 struct kvm *kvm, int irq_source_id, int level, in kvm_set_ioapic_irq() argument
40 struct kvm_ioapic *ioapic = kvm->arch.vioapic; in kvm_set_ioapic_irq()
45 int kvm_irq_delivery_to_apic(struct kvm *kvm, struct kvm_lapic *src, in kvm_irq_delivery_to_apic() argument
53 if (kvm_irq_delivery_to_apic_fast(kvm, src, irq, &r, dest_map)) in kvm_irq_delivery_to_apic()
64 kvm_for_each_vcpu(i, vcpu, kvm) { in kvm_irq_delivery_to_apic()
93 lowest = kvm_get_vcpu(kvm, idx); in kvm_irq_delivery_to_apic()
102 void kvm_set_msi_irq(struct kvm *kvm, struct kvm_kernel_irq_routing_entry *e, in kvm_set_msi_irq() argument
109 trace_kvm_msi_set_irq(msg.address_lo | (kvm->arch.x2apic_format ? in kvm_set_msi_irq()
112 irq->dest_id = x86_msi_msg_get_destid(&msg, kvm->arch.x2apic_format); in kvm_set_msi_irq()
123 static inline bool kvm_msi_route_invalid(struct kvm *kvm, in kvm_msi_route_invalid() argument
126 return kvm->arch.x2apic_format && (e->msi.address_hi & 0xff); in kvm_msi_route_invalid()
130 struct kvm *kvm, int irq_source_id, int level, bool line_status) in kvm_set_msi() argument
134 if (kvm_msi_route_invalid(kvm, e)) in kvm_set_msi()
140 kvm_set_msi_irq(kvm, e, &irq); in kvm_set_msi()
142 return kvm_irq_delivery_to_apic(kvm, NULL, &irq, NULL); in kvm_set_msi()
147 struct kvm *kvm, int irq_source_id, int level, in kvm_hv_set_sint() argument
153 return kvm_hv_synic_set_irq(kvm, e->hv_sint.vcpu, e->hv_sint.sint); in kvm_hv_set_sint()
157 struct kvm *kvm, int irq_source_id, int level, in kvm_arch_set_irq_inatomic() argument
165 return kvm_hv_set_sint(e, kvm, irq_source_id, level, in kvm_arch_set_irq_inatomic()
169 if (kvm_msi_route_invalid(kvm, e)) in kvm_arch_set_irq_inatomic()
172 kvm_set_msi_irq(kvm, e, &irq); in kvm_arch_set_irq_inatomic()
174 if (kvm_irq_delivery_to_apic_fast(kvm, NULL, &irq, &r, NULL)) in kvm_arch_set_irq_inatomic()
185 int kvm_request_irq_source_id(struct kvm *kvm) in kvm_request_irq_source_id() argument
187 unsigned long *bitmap = &kvm->arch.irq_sources_bitmap; in kvm_request_irq_source_id()
190 mutex_lock(&kvm->irq_lock); in kvm_request_irq_source_id()
203 mutex_unlock(&kvm->irq_lock); in kvm_request_irq_source_id()
208 void kvm_free_irq_source_id(struct kvm *kvm, int irq_source_id) in kvm_free_irq_source_id() argument
213 mutex_lock(&kvm->irq_lock); in kvm_free_irq_source_id()
219 clear_bit(irq_source_id, &kvm->arch.irq_sources_bitmap); in kvm_free_irq_source_id()
220 if (!irqchip_kernel(kvm)) in kvm_free_irq_source_id()
223 kvm_ioapic_clear_all(kvm->arch.vioapic, irq_source_id); in kvm_free_irq_source_id()
224 kvm_pic_clear_all(kvm->arch.vpic, irq_source_id); in kvm_free_irq_source_id()
226 mutex_unlock(&kvm->irq_lock); in kvm_free_irq_source_id()
229 void kvm_register_irq_mask_notifier(struct kvm *kvm, int irq, in kvm_register_irq_mask_notifier() argument
232 mutex_lock(&kvm->irq_lock); in kvm_register_irq_mask_notifier()
234 hlist_add_head_rcu(&kimn->link, &kvm->arch.mask_notifier_list); in kvm_register_irq_mask_notifier()
235 mutex_unlock(&kvm->irq_lock); in kvm_register_irq_mask_notifier()
238 void kvm_unregister_irq_mask_notifier(struct kvm *kvm, int irq, in kvm_unregister_irq_mask_notifier() argument
241 mutex_lock(&kvm->irq_lock); in kvm_unregister_irq_mask_notifier()
243 mutex_unlock(&kvm->irq_lock); in kvm_unregister_irq_mask_notifier()
244 synchronize_srcu(&kvm->irq_srcu); in kvm_unregister_irq_mask_notifier()
247 void kvm_fire_mask_notifiers(struct kvm *kvm, unsigned irqchip, unsigned pin, in kvm_fire_mask_notifiers() argument
253 idx = srcu_read_lock(&kvm->irq_srcu); in kvm_fire_mask_notifiers()
254 gsi = kvm_irq_map_chip_pin(kvm, irqchip, pin); in kvm_fire_mask_notifiers()
256 hlist_for_each_entry_rcu(kimn, &kvm->arch.mask_notifier_list, link) in kvm_fire_mask_notifiers()
259 srcu_read_unlock(&kvm->irq_srcu, idx); in kvm_fire_mask_notifiers()
262 bool kvm_arch_can_set_irq_routing(struct kvm *kvm) in kvm_arch_can_set_irq_routing() argument
264 return irqchip_in_kernel(kvm); in kvm_arch_can_set_irq_routing()
267 int kvm_set_routing_entry(struct kvm *kvm, in kvm_set_routing_entry() argument
277 if (irqchip_split(kvm)) in kvm_set_routing_entry()
305 if (kvm_msi_route_invalid(kvm, e)) in kvm_set_routing_entry()
320 bool kvm_intr_is_single_vcpu(struct kvm *kvm, struct kvm_lapic_irq *irq, in kvm_intr_is_single_vcpu() argument
326 if (kvm_intr_is_single_vcpu_fast(kvm, irq, dest_vcpu)) in kvm_intr_is_single_vcpu()
329 kvm_for_each_vcpu(i, vcpu, kvm) { in kvm_intr_is_single_vcpu()
373 int kvm_setup_default_irq_routing(struct kvm *kvm) in kvm_setup_default_irq_routing() argument
375 return kvm_set_irq_routing(kvm, default_routing, in kvm_setup_default_irq_routing()
381 int kvm_setup_empty_irq_routing(struct kvm *kvm) in kvm_setup_empty_irq_routing() argument
383 return kvm_set_irq_routing(kvm, empty_routing, 0, 0); in kvm_setup_empty_irq_routing()
386 void kvm_arch_post_irq_routing_update(struct kvm *kvm) in kvm_arch_post_irq_routing_update() argument
388 if (!irqchip_split(kvm)) in kvm_arch_post_irq_routing_update()
390 kvm_make_scan_ioapic_request(kvm); in kvm_arch_post_irq_routing_update()
396 struct kvm *kvm = vcpu->kvm; in kvm_scan_ioapic_routes() local
402 idx = srcu_read_lock(&kvm->irq_srcu); in kvm_scan_ioapic_routes()
403 table = srcu_dereference(kvm->irq_routing, &kvm->irq_srcu); in kvm_scan_ioapic_routes()
405 kvm->arch.nr_reserved_ioapic_pins); in kvm_scan_ioapic_routes()
413 kvm_set_msi_irq(vcpu->kvm, entry, &irq); in kvm_scan_ioapic_routes()
421 srcu_read_unlock(&kvm->irq_srcu, idx); in kvm_scan_ioapic_routes()
424 void kvm_arch_irq_routing_update(struct kvm *kvm) in kvm_arch_irq_routing_update() argument
426 kvm_hv_irq_routing_update(kvm); in kvm_arch_irq_routing_update()