173 struct kvm_irq_routing_table *
new, *old;
174 struct kvm_kernel_irq_routing_entry *e;
175 u32 i, j, nr_rt_entries = 0;
178 for (i = 0; i < nr; ++i) {
179 if (ue[i].gsi >= KVM_MAX_IRQ_ROUTES)
181 nr_rt_entries = max(nr_rt_entries, ue[i].gsi);
186 new = kzalloc(struct_size(
new, map, nr_rt_entries), GFP_KERNEL_ACCOUNT);
190 new->nr_rt_entries = nr_rt_entries;
191 for (i = 0; i < KVM_NR_IRQCHIPS; i++)
193 new->chip[i][j] = -1;
195 for (i = 0; i < nr; ++i) {
197 e = kzalloc(
sizeof(*e), GFP_KERNEL_ACCOUNT);
203 case KVM_IRQ_ROUTING_MSI:
204 if (ue->flags & ~KVM_MSI_VALID_DEVID)
218 mutex_lock(&kvm->irq_lock);
219 old = rcu_dereference_protected(kvm->irq_routing, 1);
220 rcu_assign_pointer(kvm->irq_routing,
new);
221 kvm_irq_routing_update(kvm);
222 kvm_arch_irq_routing_update(kvm);
223 mutex_unlock(&kvm->irq_lock);
225 kvm_arch_post_irq_routing_update(kvm);
227 synchronize_srcu_expedited(&kvm->irq_srcu);
#define KVM_IRQCHIP_NUM_PINS
static int setup_routing_entry(struct kvm *kvm, struct kvm_irq_routing_table *rt, struct kvm_kernel_irq_routing_entry *e, const struct kvm_irq_routing_entry *ue)