[lkml]   [2006]   [Dec]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: mask/unmasking while servicing MSI(-X) unnecessary?
    On Wed, 29 Nov 2006 17:46:07 -0500
    Loic Prylli <> wrote:

    > While looking into using MSI-X for our myri10ge driver, we have seen
    > that the msi(x) code (driver/pci/msi.c) masks the MSI(-X) vector while
    > servicing an interrupt. We are not sure why this masking is needed (for
    > instance no such thing is done for "edge IOAPIC" interrupts). There
    > seems to be already several mechanisms each individually protecting
    > against "loosing an interrupt" without masking:
    > - the "x86" architecture is able to queue 2 interrupt messages. That
    > guarantees an interrupt handler will always start after the last MSI
    > received (even in the case of a big burst of MSI messages).
    > - Even if there wasn't that interrupt queuing, ack_APIC_irq() could be
    > moved in the ack() method. Then things would work without masking even
    > on a hypothetical platform where a new interrupt is completely ignored
    > (with no IRR-like register) while servicing the same vector (anyway
    > since this "msi" code is already tied to "x86" architecture
    > specificities, that hypothetical platform might not be relevant).
    > - Almost every driver/device have their own way of acknowledging
    > interrupts anyway, which also by itself makes the masking/unmasking
    > unnecessary.
    > - The masking by itself is racy unless the driver interrupt handler
    > starts by making sure the masking request has reached the device with
    > some kind of MMIO-read. Such a MMIO-read is normally the kind of costly
    > requests you are happy to get rid of in the MSI model.
    > So if it is not useful, it might be better to avoid that systematic
    > mask/unmask pair. This masking has a small but measurable performance
    > impact for our device/driver combo.
    > Would you agree to suppress that masking (sample patch following)? Or
    > otherwise, is there is a possibility of making it optional on a
    > per-device basis.

    Your patch appears to be against the prehistoric 2.6.18 kernel. MSI
    got changed a lot - please test 2.6.19 and see if that needs fixing.
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2006-12-01 06:45    [W:0.023 / U:14.184 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site