• Paul Mackerras's avatar
    KVM: Move all accesses to kvm::irq_routing into irqchip.c · 9957c86d
    Paul Mackerras authored
    Now that struct _irqfd does not keep a reference to storage pointed
    to by the irq_routing field of struct kvm, we can move the statement
    that updates it out from under the irqfds.lock and put it in
    kvm_set_irq_routing() instead.  That means we then have to take a
    srcu_read_lock on kvm->irq_srcu around the irqfd_update call in
    kvm_irqfd_assign(), since holding the kvm->irqfds.lock no longer
    ensures that that the routing can't change.
    
    Combined with changing kvm_irq_map_gsi() and kvm_irq_map_chip_pin()
    to take a struct kvm * argument instead of the pointer to the routing
    table, this allows us to to move all references to kvm->irq_routing
    into irqchip.c.  That in turn allows us to move the definition of the
    kvm_irq_routing_table struct into irqchip.c as well.
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    Tested-by: default avatarEric Auger <eric.auger@linaro.org>
    Tested-by: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    9957c86d
irq_comm.c 9.88 KB