I'm sorry if this is a duplicate post. I've sent this message two times
before but it does not appear in the list, so...
Well, this is a known problem, and here is a possible solution...
At least, it works for me... Not completely, though. May be some more
clever hacker can suggest something better...
It seems that VIA motherboard chipsets have some flaws which may lead
to the system instabilities, filesystem corruptions and crashes.
Recently I've acquired new Soyo Dragon Plus motherboard with KT266A
chipset, Athlon XP 1800+ CPU and 512MB DDR RAM. While testing the
system I've found that it becomes unstable and even freezes under heavy
PCI load. Initially these problems were detected in Windows-98 and then
in Linux.
This is a brief report about the problem and possible solution...
Hardware
========
Motherboard: SOYO SY-K7V Dragon Plus! with C-Media CMI8738 audio.
http://www.soyo.com.tw/product/k7v-dragon-plus.htm
BIOS: K7VXA-2BA1 11/13/2001-VT8366-8233-6A6LVS29C-00
CPU: Athlon XP 1800+
RAM: 2x256MB DDR 2100 SDRAM CL2.5 (512MB total)
The system is not overclocked and RAM timing settings are
very conservative.
AGP slot: empty.
PCI slots:
1. Creative DXR3 MPEG2 decoder card
2. Pinnacle System DC10plus MJPEG video capture/playback card.
3. Empty.
4. Cougar Video Edition VGA adapter (nVidia TNT2 M64 with 32MB RAM).
5. Empty.
Note that this system has a PCI graphics card instead of AGP one.
Problems
========
1. Windows98 (clean install, Soyo/VIA 4 in 1 drivers installed)
a. DirectX based games using TNT2 3D acceleration crash completely.
The system must be restarted by RESET button.
b. Playing MP3 files while doing some other work sometimes crashes
the system too.
2. Linux (kernel 2.4.16, K7 enabled, VIA chipset support compiled in)
a. Playing back movies by mplayer (http://www.MPlayerHQ.hu/homepage/)
on TV using DXR3 card crashes the system.
b. Playing back video using DC10plus card and Linux driver
(http://www.cicese.mx/~mirsev/Linux/DC10plus/) crashes the system.
c. Building the kernel with 'make -j6 bzImage' sometimes corrupts
the filesystem.
Temporary solution
==================
Windows:
Using "PCI latency" patch (George E. Breese) from
http://www.networking.tzo.com/net/software/, Windows98 problems have
been solved so far.
Linux:
Since source code for "PCI latency" patch is closed, I started to look
for similar solution for Linux. Unfortunately, I could find nothing...
PCI and Athlon quirks in the kernel source did not provide acceptable
solution for KT266A chipset.
To write my own code, I tested KT266A chip configuration before and
after applying George's "PCI latency" patch in Windows98 using WPCREDIT
program from H.Oda! (http://www.h-oda.com/). Finally I wrote a very
dirty hack which fixes some issues in Linux too. Now I can playback
video using both DXR3 and DC10plus card but in some conditions the
system still freezes. It happens when video is played back by DC10plus
in xawtv window. This makes me to think that problem is caused by
multiple PCI bus master transfers.
This temporary solution is provided as Linux kernel module which
changes KT266A chip configuration when loaded by 'insmod vialat.o'
command and restores it back when is unloaded with 'rmmod vialat'. I
have put 'insmod vialat.o' command to my /etc/rc.d/rc.sysinit script to
make configuration changes before mounting filesystems in 'rw' mode.
WARNING: This software is provided 'as is' without any warranty. Use it
on your own risk. If you agree and accept any possible damage resulted
from using this software, download the source code from
http://www.cicese.mx/~mirsev/Linux/VIA/vialatency.tar.gz
The source code vialat.c is free and can be distributed or included in
any other program under terms of GNU General Public License, version 2.
You can also modify the code to try it for other VIA chipset. Please,
let me know if it helps.
The distribution also includes KT266A registers descriptions from H.Oda!
and configuration dumps. These files are _not_ covered by GNU License.
To install the module, uncompress the distribution file and go to
'vialatency' directory. Type 'make' to build the module (you must have
your kernel source installed and configured properly). Then type
'insmod vialat.o' and check if your former hardware problems are
solved.
Additional information: http://www.tecchannel.de/hardware/817/index.html
Copyright (c) 2001 Serguei Miridonov <[email protected]>
On Sat, 29 Dec 2001, Serguei Miridonov wrote:
> program from H.Oda! (http://www.h-oda.com/). Finally I wrote a very
> dirty hack which fixes some issues in Linux too. Now I can playback
> video using both DXR3 and DC10plus card but in some conditions the
> system still freezes. It happens when video is played back by DC10plus
> in xawtv window. This makes me to think that problem is caused by
> multiple PCI bus master transfers.
Hmm... this is bad. Just to make it clear, the lockup was there before your
module, right?
BTW, disabling PCI Master Read Caching in BIOS appears to have decreased
memory performance on my machine by a very small ammount (Asus A7V, KT133
chipset, also affected by the low-performance PCI bug/misdesign in VIA
chipsets). Since your patch also does that, you may want to verify if that
also happens in your machine and document it.
One can use setpci(1) to fix the device latency to a high value in the buses
that have IDE controllers, btw. This, along with options in the system BIOS
may allow one to test much of the suggested patches in a non-KT266A VIA
chipset.
> The distribution also includes KT266A registers descriptions from H.Oda!
> and configuration dumps. These files are _not_ covered by GNU License.
Could you please send me the KT133 description files, if you have them? I
might merge in a change to your patch that deals with KT133 (and KT133A if
you include that info as well). I can only test KT133.
--
"One disk to rule them all, One disk to find them. One disk to bring
them all and in the darkness grind them. In the Land of Redmond
where the shadows lie." -- The Silicon Valley Tarot
Henrique Holschuh