Messages in this thread |  | | Date | Thu, 13 Sep 2001 12:13:04 +0300 | From | VDA <> | Subject | Stomping on Athlon bug |
| |
Hi. Below is a modified printout of lspci -vvvxxx made on VIA KT133A based mainboard with BIOS version 3R flashed in (this system is exhibiting Athlon bug) and on the same system with BIOS version YH (which do not trigger bug). Each chipset config register which is changed between these two BIOSes is underlined with carets "^" with programming details immediately below. Each register is then commented with: *** 3R BIOS: settings made by 3R BIOS *** YH BIOS: settings made by YH BIOS *** TODO: is this relevant and what to do
Anyone interested in trying to pin down the bug might try to reprogram this chipset along the lines: ... struct pci_dev *dev; dev = pci_find_device(PCI_VENDOR_ID_VIA, 0x0305, NULL); if(dev) { printk("Trying to stomp on Athlon bug...\n"); u8 v; pci_read_config_byte(dev, 0x52, &v); /* set 52.7: Disconnect Enable When STPGNT Detected */ v |= 0x80; pci_write_config_byte(dev, 0x52, v); ... } ... I'm not sure where exactly this piece of code should go. Anyway, compile K7 optimized kernel with this fix and give it a try. ======================================================== 00:00.0 Host bridge: VIA Technologies, Inc.: Unknown device 0305 (rev 03) Subsystem: ABIT Computer Corp.: Unknown device a401 YH 00: 06 11 05 03 06 00 10 22 03 00 00 06 00 00 00 00 3R 00: 06 11 05 03 06 00 10 22 03 00 00 06 00 08 00 00 ^^ Device 0 Offset D - Latency Timer (00h)(RW) Specifies the latency timer value in PCI bus clocks. 7-3 Guaranteed Time Slice for CPU. default=0 2-0 Reserved (fixed granularity of 8 clks). always read 0 Bits 2-1 are writeable but read 0 for PCI specification compatibility. The programmed value may be read back in Offset 75 bits 5-4 (PCI Arbitration 1). *** 3R BIOS: bits 7-3=00001 *** YH BIOS: bits 7-3=00000 *** TODO: probably does not matter
YH 10: 08 00 00 d0 00 00 00 00 00 00 00 00 00 00 00 00 3R 10: 08 00 00 e0 00 00 00 00 00 00 00 00 00 00 00 00 ^^^^^^^^^^^ Device 0 Offset 13-10 - Graphics Aperture Base (00000008h) (RW) 31-28 Upper Programmable Base Address Bits. default=0 27-20 Lower Programmable Base Address Bits. default=0 These bits behave as if hardwired to 0 if the corresponding Graphics Aperture Size register bit (Device 0 Offset 84h) is 0. 27 26 25 24 23 22 21 20 (This Register) 7 6 5 4 3 2 1 0 (Gr Aper Size) RW RW RW RW RW RW RW RW 1M RW RW RW RW RW RW RW 0 2M RW RW RW RW RW RW 0 0 4M RW RW RW RW RW 0 0 0 8M RW RW RW RW 0 0 0 0 16M RW RW RW 0 0 0 0 0 32M RW RW 0 0 0 0 0 0 64M RW 0 0 0 0 0 0 0 128M 0 0 0 0 0 0 0 0 256M 19-0 Reserved. always reads 00008 Note: The locations in the address range defined by this register are prefetchable.
*** 3R BIOS: addr: E0000000 *** YH BIOS: addr: D0000000 *** TODO: probably does not matter
YH 50: 16 f4 eb 3R 50: 16 f4 6b ^^ Device 0 Offset 52 - S2K Timing Control III..................RW The contents of this register are preserved during suspend. Bits 2-0 have no default value. 7 Disconnect Enable When STPGNT Detected 6 Write to Read Delay. default = 1 5-4 Read to Write Delay. default = 11b 3 1ns Skew Between Even / Odd Clock Group For Data (Strapped from MAB3) 0 Disable (default if no strap on MAB3) 1 Enable 2-0 Write Data Delay from SYSDC to CPU Data Output (WrDataDly) *** 3R BIOS: bit 7=0 *** YH BIOS: bit 7=1 *** TODO: try to set bit 7 to 1.
YH 50: .. .. .. b4 06 3R 50: .. .. .. b4 47 ^^ Device 0 Offset 54 - BIU Control (RW) 7 SDRAM Self-Refresh When Disconnected 0 Disable (default) 1 Enable 6 Probe Next Tag State T1 When PCI Master Read Cacheing Enabled 0 Disable (default) 1 Enable 5 S2K Data Input Buffer 0 Disable (default ) 1 Enable 4 S2K Data Output Enable Timing 0 1T Setup / Hold (default) 1 1/2T Setup / Hold 3 DRAM Speculative Read for PCI Master Read (Before Probe Result is Known) 0 Disable (default) 1 Enable 2 PCI Master Pipeline Request 0 Disable (default) 1 Enable 1 PCI-to-CPU / CPU-to-PCI (P2C / C2P) Concurrency 0 Disable (default) 1 Enable 0 Fast Write-to-Read Turnaround 0 Disable (default) 1 Enable *** 3R BIOS: enabled 6,2,1,0 bits only. *** YH BIOS: enabled 2,1 bits only. *** TODO: try disabling bits 6,0. bit 0 is most interesting. Try it first. YH 50: .. .. .. .. .. 00 04 04 00 00 01 02 03 04 04 04 3R 50: .. .. .. .. .. 89 04 04 00 00 01 02 03 04 04 04 ^^ Device 0 Offset 55 - Debug (RW) 7-0 Reserved (do not program). default = 0 *** 3R BIOS: non-zero!? *** YH BIOS: zero. *** TODO: try to set to 0.
YH 60: 0f 0a 00 20 e4 e4 d4 c4 50 28 65 0d 08 5f 00 00 3R 60: 0f 0a 00 20 e4 e4 d4 00 50 08 65 0d 08 5f 00 00 ^^ Device 0 Offset 69 - DRAM Clock Select (00h) (RW) 7 Reserved. always reads 0 6 DRAM Operating Frequency Faster Than CPU 0 DRAM Same As or Equal to CPU (default) 1 DRAM Faster Than CPU by 33 MHz Rx68[0] Rx69[6] CPU / DRAM 0 0 100 / 100 0 1 100 / 133 1 0 133 / 133 (default) 1 1 -reserved- 5 Write Recovery Time For Write With Auto-Precharge 0 1T (default) 1 2T 4 DRAM Controller Command Register Output 0 Disable (default) 1 Enable 3 Fast DRAM Precharge for Different Bank 0 Disable (default) 1 Enable 2 DRAM 4K Page Enable (for 64Mbit DRAM) 0 Disable (default) 1 Enable 1 DIMM Type 0 Unbuffered (default) 1 Registered 0 AutoPrecharge on CPU Writeback / TLB Lookup 0 Disable (default) 1 Enable *** 3R BIOS: bit 5 is 0 *** YH BIOS: bit 5 is 1 *** TODO: try setting it back to 1
YH 70: d4 88 cc 0c 0e 81 d2 00 01 b4 19 02 00 00 00 00 3R 70: d8 88 cc 0c 0e 81 d2 00 01 b4 19 02 00 00 00 00 ^^ Device 0 Offset 70 - PCI Buffer Control (00h) (RW) 7 CPU to PCI Post-Write 0 Disable (default) 1 Enable 6 PCI Master to DRAM Post-Write 0 Disable (default) 1 Enable 5 Reserved. always reads 0 4 PCI Master to DRAM Prefetch 0 Enable (default) 1 Disable 3 Enhance CPU-to-PCI Write 0 Normal operation (default) 1 Reduce 1 cycle when the CPU-to-PCI buffer becomes available after being full (PCI and AGP buses) 2 PCI Master Read Caching 0 Disable (default) 1 Enable 1 Delay Transaction 0 Disable (default) 1 Enable 0 Slave Device Stopped Idle Cycle Reduction 0 Normal Operation (default) 1 Reduce 1 PCI idle cycle when stopped by a slave device (PCI and AGP buses) *** 3R BIOS: bit 4=1, 3=0 *** YH BIOS: bit 4=0, 3=1 *** TODO: probably doesn't matter
YH a0: 02 c0 20 00 03 02 00 1f 00 00 00 00 2b 12 00 00 3R a0: 02 c0 20 00 03 02 00 1f 00 00 00 00 2f 12 00 00 ^^ Device 0 Offset AC - AGP Control (00h) (RW) 7 Reserved. always reads 0 6 CPU Stall on AGP Command FIFO GART Address Request 0 Disable (default) 1 Enable 5 AGP Read Snoop DRAM Post-Write Buffer 0 Disable (default) 1 Enable 4 GREQ# Priority Becomes Higher When Arbiter is Parked at AGP Master 0 Disable (default) 1 Enable 3 2X Rate Supported (read also at RxA4[1]) 0 Not supported (default) 1 Supported 2 LPR In-Order Access (Force Fence) 0 Fence/Flush functions not guaranteed. AGP read requests (low/normal priority and high priority) may be executed before previously issued write requests (default) 1 Force all requests to be executed in order (automatically enables Fence/Flush functions). Low (i.e., normal) priority AGP read requests will never be executed before previously issued writes. High priority AGP read requests may still be executed prior to previously issued write requests as required. 1 AGP Arbitration Parking 0 Disable (default) 1 Enable (GGNT# remains asserted until either GREQ# de-asserts or data phase ready) 0 AGP to PCI Master or CPU to PCI Turnaround Cycle 0 2T or 3T Timing (default) 1 1T Timing *** 3R BIOS: bit 2=1 *** YH BIOS: bit 2=0 *** TODO: probably doesn't matter YH b0: db 63 02 3R b0: db 63 1a ^^ Device 0 Offset B2 - AGP Pad Drive / Delay Control (RW) 7 GD/GBE/GDS, SBA/SBS Control 1.5V (Bit-1 = 0) 0 SBA/SBS = no cap (default) GD/GBE/GDS = no cap 1 SBA/SBS = no cap GD/GBE/GDS = cap 3.3V (Bit-1 = 1) 0 SBA/SBS = cap (default) GD/GBE/GDS = no cap 1 SBA/SBS = cap GD/GBE/GDS = cap 6 Reserved. always reads 0 5 S2K Slew Rate Control. strapped from SRASA# 0 Enable (default) 1 Disable 4 GD[31-16] Staggered Delay 0 None (default) 1 GD[31:16] delayed by 1 ns 3 Reserved. always reads 0 2 AGP Preamble Control 0 Disable (default) 1 Enable 1 AGP Voltage 0 1.5V (default) 1 3.3V 0 GDS Output Delay 0 None (default) 1 GDS[1-0] & GDS[1-0]# delayed by 0.4 ns (GDS1 & GDS1# will be delayed an additional 1ns if bit-4 = 1) *** 3R BIOS: 1A=00011010 *** YH BIOS: 02=00000010 *** TODO: probably doesn't matter
YH b0: .. .. .. 50 31 ff 80 0a 67 00 00 00 00 00 00 00 3R b0: .. .. .. 50 31 ff 80 0b 67 00 00 00 00 00 00 00 ^^ Device 0 Offset B7 - S2K Compensation Result 3 (RO) 7-5 Reserved. always reads 0 4-0 S2K Strobe Delay from DLL Counter (Auto) default = 0 *** TODO: readonly. doesn't matter
YH f0: 00 00 00 00 00 03 03 00 22 00 00 00 00 00 00 00 3R f0: 00 00 00 00 00 03 03 00 22 00 00 00 00 80 00 00 ^^ Device 0 Offset FD - Back-DoorControl 2 (00h) ........... RW 7-5 Reserved. always reads 0 4-0 Max # of AGP Requests. default = 0 00000 1 Request 00001 2 Requests 00010 3 Requests ..... ........ 11111 32 Requests (see also RxA7 and RxFC[1]) *** 3R BIOS: 80 *** YH BIOS: 00 *** TODO: probably doesn't matter Curious how "always zero" bit 7 happen to become 1 -- Best regards, VDA mailto:VDA@port.imtp.ilyichevsk.odessa.ua http://port.imtp.ilyichevsk.odessa.ua/vda/
- 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/
|  |