PCI: revert broken device warning

Previous thread: eeepc-wmi: add backlight support by Linux Kernel Mailing List on Saturday, April 24, 2010 - 3:59 pm. (1 message)

Next thread: eeepc-wmi: use a platform device as parent device of all sub-devices by Linux Kernel Mailing List on Saturday, April 24, 2010 - 3:59 pm. (1 message)
From: Linux Kernel Mailing List
Date: Saturday, April 24, 2010 - 3:59 pm

Gitweb:     http://git.kernel.org/linus/45aa23b4cbd37408678c96cd113241860d3321f6
Commit:     45aa23b4cbd37408678c96cd113241860d3321f6
Parent:     4352aa5bbf1d0080c2dcf904ce1e4be0a1cb5937
Author:     Bjorn Helgaas <bjorn.helgaas@hp.com>
AuthorDate: Thu Apr 22 09:02:43 2010 -0600
Committer:  Jesse Barnes <jbarnes@virtuousgeek.org>
CommitDate: Thu Apr 22 16:13:16 2010 -0700

    PCI: revert broken device warning
    
    This reverts c519a5a7dab2d.  That change added a warning about devices that
    didn't respond correctly when sizing BARs, which helped diagnose broken
    devices.  But the test wasn't specific enough, so it also complained about
    working devices with zero-size BARs, e.g.,
    https://bugzilla.kernel.org/show_bug.cgi?id=15822
    
    Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
    Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/pci/probe.c |   23 +++++++----------------
 1 files changed, 7 insertions(+), 16 deletions(-)

diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 882bd8d..c82548a 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -174,19 +174,14 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
 	pci_read_config_dword(dev, pos, &sz);
 	pci_write_config_dword(dev, pos, l);
 
-	if (!sz)
-		goto fail;	/* BAR not implemented */
-
 	/*
 	 * All bits set in sz means the device isn't working properly.
-	 * If it's a memory BAR or a ROM, bit 0 must be clear; if it's
-	 * an io BAR, bit 1 must be clear.
+	 * If the BAR isn't implemented, all bits must be 0.  If it's a
+	 * memory BAR or a ROM, bit 0 must be clear; if it's an io BAR, bit
+	 * 1 must be clear.
 	 */
-	if (sz == 0xffffffff) {
-		dev_err(&dev->dev, "reg %x: invalid size %#x; broken device?\n",
-			pos, sz);
+	if (!sz || sz == 0xffffffff)
 		goto fail;
-	}
 
 	/*
 	 * I don't know how l can have all bits set.  Copied from old code.
@@ -249,17 +244,13 @@ int __pci_read_base(struct pci_dev *dev, enum pci_bar_type ...
Previous thread: eeepc-wmi: add backlight support by Linux Kernel Mailing List on Saturday, April 24, 2010 - 3:59 pm. (1 message)

Next thread: eeepc-wmi: use a platform device as parent device of all sub-devices by Linux Kernel Mailing List on Saturday, April 24, 2010 - 3:59 pm. (1 message)