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]
Date:   Wed, 28 Feb 2018 16:06:46 -0600
From:   Bjorn Helgaas <helgaas@...nel.org>
To:     KarimAllah Ahmed <karahmed@...zon.de>
Cc:     linux-pci@...r.kernel.org, Bjorn Helgaas <bhelgaas@...gle.com>,
        linux-kernel@...r.kernel.org,
        Jan H . Schönherr <jschoenh@...zon.de>
Subject: Re: [PATCH] pci: Do not read INTx PIN and LINE registers for virtual
 functions

On Wed, Jan 17, 2018 at 07:30:29PM +0100, KarimAllah Ahmed wrote:
> ... since INTx is not supported by-spec for virtual functions.
> 
> Cc: Bjorn Helgaas <bhelgaas@...gle.com>
> Cc: linux-pci@...r.kernel.org
> Cc: linux-kernel@...r.kernel.org
> Signed-off-by: KarimAllah Ahmed <karahmed@...zon.de>
> Signed-off-by: Jan H. Schönherr <jschoenh@...zon.de>

Applied to pci/virtualization for v4.17, thanks!

I tweaked the changelog to include the motivation:

commit 16edf1c6345ab177ccf1e8b5ba3324ee01a50eb7
Author: KarimAllah Ahmed <karahmed@...zon.de>
Date:   Wed Jan 17 19:30:29 2018 +0100

    PCI/IOV: Skip INTx config reads for VFs
    
    Per PCIe r4.0, sec 9.2.1.4, VFs can not implement INTX, and their Interrupt
    Line and Interrupt Pin registers must be RO Zero.  Some devices have
    thousands of VFs, so skip reading the registers as an optimization.
    
    Signed-off-by: KarimAllah Ahmed <karahmed@...zon.de>
    Signed-off-by: Jan H. Schönherr <jschoenh@...zon.de>
    [bhelgaas: changelog, comment]
    Signed-off-by: Bjorn Helgaas <helgaas@...nel.org>

diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 489660d0d384..a1cddca37793 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -1230,6 +1230,13 @@ static void pci_read_irq(struct pci_dev *dev)
 {
 	unsigned char irq;
 
+	/* VFs are not allowed to use INTx, so skip the config reads */
+	if (dev->is_virtfn) {
+		dev->pin = 0;
+		dev->irq = 0;
+		return;
+	}
+
 	pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &irq);
 	dev->pin = irq;
 	if (irq)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ