Chipset Quirks Driver for BSD/OS

While working on some desktop machines for the network consulting company that I recently co-founded, Zero Millimeter, a problem with certain VIA chipsets was brought to my attention. Many AMD Athlon based motherboards, including the ones that our machines are built around, have some data corruption issues under high load. While I haven't personally experienced any known data corruption on our machines, countless others running both FreeBSD and Linux have had serious problems with these same chipsets. This problem affects the VIA chips on many different manufacturer's motherboards.

Since I don't run either FreeBSD or Linux, if I can help it, but rather have thrown in with the small BSD/OS lot, I immediately sent some email to some of the engineers that I know inside of the BSD/OS engineering team about this problem. I also sent along detailed references as to the causes of the problem. And some references to the existing Linux workarounds. No response. Not even an acknowledgement of the problem existing, much less a fix.

Left to my own devices, I coded up a pseudo-device driver that takes care of the chipset issues on my machine that I was most worried about. While I was hacking on the code, I figured that I would extend the driver a little to make it handle other chipset workarounds, if possible. As such, the driver also should be able to replace the BSD/OS provided saturn(4) chipset driver in functionality. This hasn't been tested, as of this writing (15-Jan-2002). If someone can test that this works and report back to me, I'll be happy to update this information.

The Problems

The problems that this driver addresses for VIA chipset based motherboards are the following:
VIA Northbridge PCI Latency Timers
The first fix is a workaround for a deficiency between the Northbridge chip and certain Southbridge chips in handling PCI latency timers. The default timer setting programmed by many BIOS can cause memory corruption when faced with high PCI loading. This can easily occur on machines that have more than one device on a PCI channel, and often results in corrupted data being read from or written to the disk devices. Another common way for this problem to be exhibited is simultaneous use of a disk device and a PCI based SoundBlaster Live! audio card.
VIA Northbridge Memory Write Queue Timer
The second fix changes a timer associated with the Memory Write Queue (MWQ). The default setting for this timer can cause memory corruption when certain high-speed memory streaming instructions (e.g. movntq) are used to move blocks of memory within the system. I doubt this problem actually occurs on a stock BSD/OS system, as the kernel isn't optimized to use this AMD extension. User programs that use this instruction might cause memory corruption in the system.

The Code

I developed this on an early-availability release of BSD/OS 4.3. I know of no reason that it would not work on a BSD/OS 4.2 machine. Probably BSD/OS 4.1 as well, but I'm not as confident about that one. There are two files that you will need to retrieve. The first one is a shar file that contains the new driver files (including documentation). The second file is a patch file that patches the files.i386, the GENERIC kernel configuration configuration and the Makefile for the i386/pci directory to install the new documentation.

To install this driver, you'll need to do the following. If any of the following steps sound unclear or confusing, you probably will want to find someone a little more experienced to help you out. Or, contact a competent consultant. (Check the link at the top of this file for a least one company that can do this work for you!)


There is none. I make this code available as I find it useful. You might also. You might not. Either way, if you choose to run it, you are responsible for any problems that arise from installing it onto your system. Calling WRS tech support with problems about this driver is likely to be futile. I sent WRS a copy of the code, but you'll notice they haven't shipped it as a part of their system.


Copyright (c) 2001, 2002 Kurt J. Lidl. All rights reserved.
Redistributions of this information must retain the above copyright notice.
This page has been accessed (counter) times since this counter was installed (15 January 2002).
Valid HTML 4.0!
$Date: 2007/12/07 02:57:23 $