Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Feb 2013 14:25:17 -0500
From:      John Baldwin <jhb@freebsd.org>
To:        "Mikhail T." <mi+thun@aldan.algebra.com>
Cc:        freebsd-stable@freebsd.org
Subject:   Re: FreeBSD-9.1 would not boot on pentium3 laptop
Message-ID:  <201302071425.17064.jhb@freebsd.org>
In-Reply-To: <5113F24E.3070207@aldan.algebra.com>
References:  <5111DE44.7040008@aldan.algebra.com> <201302071316.29898.jhb@freebsd.org> <5113F24E.3070207@aldan.algebra.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday, February 07, 2013 1:28:30 pm Mikhail T. wrote:
> On 07.02.2013 13:16, John Baldwin wrote:
> > Can you get pciconf -lc output?
> Here:
> 
>     hostb0@pci0:0:0:0:      class=0x060000 card=0x00000000
>     chip=0x11308086 rev=0x02 hdr=0x00
>          cap 09[88] = vendor (length 4) Intel cap 15 version 1
>          cap 02[a0] = AGP 4x 2x 1x SBA disabled

Looks like you have one of the systems the comment mentions.  Try this patch 
to see if ichss is disabled automatically for you:

Index: ichss.c
===================================================================
--- ichss.c	(revision 246122)
+++ ichss.c	(working copy)
@@ -67,7 +67,7 @@ struct ichss_softc {
 #define PCI_DEV_82801BA		0x244c /* ICH2M */
 #define PCI_DEV_82801CA		0x248c /* ICH3M */
 #define PCI_DEV_82801DB		0x24cc /* ICH4M */
-#define PCI_DEV_82815BA		0x1130 /* Unsupported/buggy part */
+#define PCI_DEV_82815_MC	0x1130 /* Unsupported/buggy part */
 
 /* PCI config registers for finding PMBASE and enabling SpeedStep. */
 #define ICHSS_PMBASE_OFFSET	0x40
@@ -155,9 +155,6 @@ ichss_identify(driver_t *driver, device_t parent)
 	 * E.g. see Section 6.1 "PCI Devices and Functions" and table 6.1 of
 	 * Intel(r) 82801BA I/O Controller Hub 2 (ICH2) and Intel(r) 82801BAM
 	 * I/O Controller Hub 2 Mobile (ICH2-M).
-	 *
-	 * TODO: add a quirk to disable if we see the 82815_MC along
-	 * with the 82801BA and revision < 5.
 	 */
 	ich_device = pci_find_bsf(0, 0x1f, 0);
 	if (ich_device == NULL ||
@@ -167,6 +164,22 @@ ichss_identify(driver_t *driver, device_t parent)
 	    pci_get_device(ich_device) != PCI_DEV_82801DB))
 		return;
 
+	/*
+	 * Certain systems with ICH2 and an Intel 82815_MC host bridge
+	 * where the host bridge's revision is < 5 lockup if SpeedStep
+	 * is used.
+	 */
+	if (pci_get_device(ich_device) == PCI_DEV_82801BA) {
+		device_t hostb;
+
+		hostb = pci_find_bsf(0, 0, 0);
+		if (hostb != NULL &&
+		    pci_get_vendor(hostb) == PCI_VENDOR_INTEL &&
+		    pci_get_device(hostb) == PCI_DEV_82815_MC &&
+		    pci_get_revid(hostb) < 5)
+			return;
+	}
+
 	/* Find the PMBASE register from our PCI config header. */
 	pmbase = pci_read_config(ich_device, ICHSS_PMBASE_OFFSET,
 	    sizeof(pmbase));

-- 
John Baldwin



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