Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Jan 2001 12:50:37 -0800
From:      Brooks Davis <brooks@one-eyed-alien.net>
To:        freebsd-current@freebsd.org
Cc:        msmith@freebsd.org
Subject:   PCI changes break HP Docking Station
Message-ID:  <20010126125037.B28316@Odin.AC.HMC.Edu>

next in thread | raw e-mail | index | archive | help
Hi,

I plugged my HP Omnibook 4150 into my dock for the first time in a couple
months only to discover that I couldn't attach any of the PCI devices in
it.  I'm running -current as of sometime in the last week or so.  I traced
the problem to the new PCI code comitted six weeks ago.  Specificaly:

 - Make the PCI-PCI bridge code a little more paranoid about valid
   I/O and memory decodes.

It looks like the new code is too paranoid.  The following patch lets me
attach devices in the dock though it's obviously bogus.  You can find a
kernel config, verbose dmesg output, pciconf -l -v output, and acpidump
output at:

http://www.one-eyed-alien.net/~brooks/FreeBSD/dock/

Please let me know if you need anything more from me to help debug this.

Thanks,
Brooks

-- 
Any statement of the form "X is the one, true Y" is FALSE.

Index: pci_pci.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/pci/pci_pci.c,v
retrieving revision 1.3
diff -u -r1.3 pci_pci.c
--- pci_pci.c	2000/12/13 01:25:11	1.3
+++ pci_pci.c	2001/01/26 19:56:40
@@ -283,10 +283,10 @@
 	case SYS_RES_IOPORT:
 	    if ((start < sc->iobase) || (end > sc->iolimit)) {
 		device_printf(dev, "device %s%d requested unsupported I/O range 0x%lx-0x%lx"
-			      " (decoding 0x%x-0x%x)\n",
+			      " (decoding 0x%x-0x%x) IGNORED\n",
 			      device_get_name(child), device_get_unit(child), start, end,
 			      sc->iobase, sc->iolimit);
-		return(NULL);
+		/* return(NULL); */
 	    }
 	    if (bootverbose)
 		device_printf(sc->dev, "device %s%d requested decoded I/O range 0x%lx-0x%lx\n",
@@ -303,10 +303,10 @@
 	    if (((start < sc->membase) || (end > sc->memlimit)) &&
 		((start < sc->pmembase) || (end > sc->pmemlimit))) {
 		device_printf(dev, "device %s%d requested unsupported memory range 0x%lx-0x%lx"
-			      " (decoding 0x%x-0x%x, 0x%x-0x%x)\n",
+			      " (decoding 0x%x-0x%x, 0x%x-0x%x) IGNORED\n",
 			      device_get_name(child), device_get_unit(child), start, end,
 			      sc->membase, sc->memlimit, sc->pmembase, sc->pmemlimit);
-		return(NULL);
+		/* return(NULL); */
 	    }
 	    if (bootverbose)
 		device_printf(sc->dev, "device %s%d requested decoded memory range 0x%lx-0x%lx\n",


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010126125037.B28316>