• Matthew Wilcox's avatar
    PCI MSI: Refactor interrupt masking code · f2440d9a
    Matthew Wilcox authored
    Since most of the callers already know whether they have an MSI or
    an MSI-X capability, split msi_set_mask_bits() into msi_mask_irq()
    and msix_mask_irq().  The only callers which don't (mask_msi_irq()
    and unmask_msi_irq()) can share code in msi_set_mask_bit().  This then
    becomes the only caller of msix_flush_writes(), so we can inline it.
    The flushing read can be to any address that belongs to the device,
    so we can eliminate the calculation too.
    
    We can also get rid of maskbits_mask from struct msi_desc and simply
    recalculate it on the rare occasion that we need it.  The single-bit
    'masked' element is replaced by a copy of the 32-bit 'masked' register,
    so this patch does not affect the size of msi_desc.
    Signed-off-by: default avatarMatthew Wilcox <willy@linux.intel.com>
    Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
    f2440d9a
msi.c 19 KB