• Paul Mackerras's avatar
    KVM: PPC: Book3S HV: Re-enable XICS fast path for irqfd-generated interrupts · b1a4286b
    Paul Mackerras authored
    Commit c9a5ecca ("kvm/eventfd: add arch-specific set_irq",
    2015-10-16) added the possibility for architecture-specific code
    to handle the generation of virtual interrupts in atomic context
    where possible, without having to schedule a work function.
    
    Since we can easily generate virtual interrupts on XICS without
    having to do anything worse than take a spinlock, we define a
    kvm_arch_set_irq_inatomic() for XICS.  We also remove kvm_set_msi()
    since it is not used any more.
    
    The one slightly tricky thing is that with the new interface, we
    don't get told whether the interrupt is an MSI (or other edge
    sensitive interrupt) vs. level-sensitive.  The difference as far
    as interrupt generation is concerned is that for LSIs we have to
    set the asserted flag so it will continue to fire until it is
    explicitly cleared.
    
    In fact the XICS code gets told which interrupts are LSIs by userspace
    when it configures the interrupt via the KVM_DEV_XICS_GRP_SOURCES
    attribute group on the XICS device.  To store this information, we add
    a new "lsi" field to struct ics_irq_state.  With that we can also do a
    better job of returning accurate values when reading the attribute
    group.
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    b1a4286b
book3s_xics.c 34.6 KB