Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 06 Jun 1999 03:51:33 +0200
From:      Tor.Egge@fast.no
To:        cs@sdata.de
Cc:        K.R.A.M.Schreel@wtb.tue.nl, freebsd-stable@FreeBSD.ORG
Subject:   Re: Bug in SMP Kernel in 3.1, was it fixed in 3.2?
Message-ID:  <199906060151.DAA85295@midten.fast.no>
In-Reply-To: Your message of "Fri, 04 Jun 1999 17:49:15 %2B0200"
References:  <3757F57B.AE8A68B8@sdata.de>

next in thread | previous in thread | raw e-mail | index | archive | help
----Next_Part(Sun_Jun__6_03:46:22_1999)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

> Koen Schreel wrote:
> > 
> > Same for me on a P2B-DS with a build made yesterday. Has been this way
> 
> Yes, I have the same motherboard; - maybe this is motherboard related.
> Can somebody with a different SMP-motherboard verify this ?

I've upgraded a victim P2B-DS machine to BIOS revision 1.008, while keeping
a reference P2B-DS machine at BIOS revision 1.006.  

One interesting difference in the hardware configuration is:


BIOS			1.006			1.008	

82371AB (PIIX4) 
Power Management
DEVRESG			000000h			100070h

82371AB (PIIX4) 
Power Management
DEVCTL			00000000h		02000000h

I've enclosed an experimental workaround, which is probably
incompatible with power management being enabled in the BIOS.

To activate it, you'll also need
	options	BROKEN_RTC
in your kernel config file.

- Tor Egge


----Next_Part(Sun_Jun__6_03:46:22_1999)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Index: sys/pci/pcisupport.c
===================================================================
RCS file: /home/ncvs/src/sys/pci/pcisupport.c,v
retrieving revision 1.86.2.8
diff -u -r1.86.2.8 pcisupport.c
--- pcisupport.c	1999/05/26 16:39:42	1.86.2.8
+++ pcisupport.c	1999/06/06 01:26:07
@@ -213,7 +213,29 @@
 		tag->secondarybus = tag->subordinatebus = secondarybus + 1;
 }
 
+#ifdef BROKEN_RTC
 static void
+fix_82371ab_power_management(pcici_t tag)
+{
+	int pmba;
+	int devctl;
+
+#define PMBA_CONFIG_OFFSET 0x40
+#define DEVCTL_IO_OFFSET 0x2c
+#define PMBA_TO_IO(addr)  (addr & 0xffc0)
+
+	pmba = pci_cfgread(tag, PMBA_CONFIG_OFFSET, 4);
+	devctl = inl(PMBA_TO_IO(pmba) + DEVCTL_IO_OFFSET);
+	outl(PMBA_TO_IO(pmba) + DEVCTL_IO_OFFSET, 0);
+
+#undef PMBA_CONFIG_OFFSET
+#undef DEVCTL_IO_OFFSET
+#undef PMBA_TO_IO
+}
+#endif
+
+
+static void
 fixwsc_natoma(pcici_t tag)
 {
 	int pmccfg;
@@ -284,6 +306,9 @@
 	case 0x71108086:
 		return ("Intel 82371AB PCI to ISA bridge");
 	case 0x71138086:
+#ifdef BROKEN_RTC
+		fix_82371ab_power_management(tag);
+#endif
 		return ("Intel 82371AB Power management controller");
 	case 0x71808086:
 		return ("Intel 82443LX host to PCI bridge");

----Next_Part(Sun_Jun__6_03:46:22_1999)----


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




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