lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20061130214103.7ed090e9.akpm@osdl.org>
Date:	Thu, 30 Nov 2006 21:41:03 -0800
From:	Andrew Morton <akpm@...l.org>
To:	Loic Prylli <loic@...i.com>
Cc:	linux-pci@...ey.karlin.mff.cuni.cz, linux-kernel@...r.kernel.org
Subject: Re: mask/unmasking while servicing MSI(-X) unnecessary?

On Wed, 29 Nov 2006 17:46:07 -0500
Loic Prylli <loic@...i.com> 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 majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ