I'm running kernel 2.4.3-pre8 on an ASUS A7V (BIOS 1007) motherboard and
recently noticed that it sometimes corrupts my hard disk, an IBM 75GXP on
the onboard PDC20265 IDE controller. The corruption is detectable with a
simple 'dd if=/dev/urandom of=test bs=16384 count=32768; cp test test2 ;
diff test test2'.
I traced the problem to a combination of choosing "Optimal" for the System
Permorfance Setting in the BIOS and the the new pci_fixup_vt8363 added to
arch/i386/kernel/pci-pc.c in kernel 2.4.3-pre3. So I did a bunch of tests
using no pci_fixup function, the pci_fixup_vt8363 function, and the
following subset of pci_fixup_vt8363:
pci_read_config_byte(d, 0x54, &tmp);
if(tmp & (1<<2)) {
printk("PCI: Bus master Pipeline request disabled\n");
pci_write_config_byte(d, 0x54, tmp & ~(1<<2));
}
pci_read_config_byte(d, 0x70, &tmp);
if(tmp & (1<<2)) {
printk("PCI: Disabled Master Read Caching\n");
pci_write_config_byte(d, 0x70, tmp & ~(1<<2));
}
The results for me:
Normal Optimal
------ -------
no pci_fixup no corruption no corruption
pci_fixup_vt8363 subset corruption corruption
pci_fixup_vt8363 no corruption corruption
At this point my skills and perseverance gave out, but if someone would
like me to do a few more specific tests, I could.
Below is the output of 'lspci -xxx -s 0:0' on this hardware, with no
pci_fixup, for both the Normal and Optimal BIOS settings, in the form of a
unified diff. Hopefully this will shed some light on what the BIOS is
doing, as we don't see to have pci_fixup_vt8363 quite right yet.
Cheers,
Wayne
[root@pizza /mnt]# diff -u --unified=20 normal optimal
--- normal Wed Mar 28 20:37:57 2001
+++ optimal Wed Mar 28 20:35:32 2001
@@ -1,18 +1,18 @@
00:00.0 Host bridge: VIA Technologies, Inc. VT8363/8365 [KT133/KM133] (rev 02)
00: 06 11 05 03 06 00 10 22 02 00 00 06 00 00 00 00
10: 08 00 00 e4 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 43 10 33 80
30: 00 00 00 00 a0 00 00 00 00 00 00 00 00 00 00 00
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50: 17 a4 6b b4 07 89 20 20 80 80 10 10 10 10 20 20
-60: 33 ff 55 a0 d4 d4 d4 00 40 78 86 2f 08 23 00 00
-70: d8 c0 cc 0d 0e a1 d2 00 01 b4 09 02 00 00 00 03
+60: 33 ff 55 a0 d4 d4 d4 00 44 5c 86 2f 08 23 00 00
+70: de c0 cc 0d 0e a1 d2 00 01 b4 19 02 00 00 00 03
80: 0f 40 00 00 c0 00 00 00 03 00 25 1f 00 00 00 00
90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a0: 02 c0 20 00 17 02 00 1f 00 00 00 00 6e 02 14 00
b0: 62 ec 80 e5 32 33 28 00 00 00 00 00 00 00 00 00
c0: 01 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00
d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
f0: 00 00 00 00 00 00 00 0e 22 00 00 00 00 00 91 06
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/