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>