Re: Any lingering Athlon bugs in Kernel 2.4.14?

From: Wayne Whitney (whitney@math.berkeley.edu)
Date: Sun Nov 11 2001 - 11:47:48 EST


In mailing-lists.linux-kernel, you wrote:

> I suppose this question is stuff I can find elsewhere but: where do I find
> just that patch alone (so that I cen see about adapting it to my redhat
> kernel)

The relevant function is from arch/i386/kernel/pci-pc.c:

static void __init pci_fixup_via_athlon_bug(struct pci_dev *d)
{
        u8 v;
        pci_read_config_byte(d, 0x55, &v);
        if (v & 0x80) {
                printk("Trying to stomp on Athlon bug...\n");
                v &= 0x7f; /* clear bit 55.7 */
                pci_write_config_byte(d, 0x55, v);
        }
}

Note also this line from struct pci_fixup pcibios_fixups[] in the same
file:

        { PCI_FIXUP_HEADER, PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8363_0, pci_fixup_via_athlon_bug },

I believe that all you have to do is add the above line to
pcibios_fixups[] and add the above function to pci-pc.c.

> and/or how do I do it from userspace ;) (i assume i just have to
> write to some registers or something using some user-space mechanism
> that i am unaware of???).

You can see what pci_fixup_via_athlon_bug does: it clears bit 7 of
register 0x55 of the PCI device VIA 8363. On a machine that has a VIA
8363 (the northbridge), I believe it will be PCI ID 0:0.0 (0th bus,
0th device, 0th subdevice). You can check this with 'lspci -n -s
0:0.0', it should say '00:00.0 Class 0600: 1106:0305' followed by a
revision (2 for the KT133, 3 for the KT133A)

Then as root, you do 'setpci -s 0:0.0 55' to query the register, do
the computation of clearing bit 7 of the result to get a value YY, and
do 'setpci -s 0:0.0 55=YY' to set the register. Note that both 55 and
YY are in hexadecimal.

Cheers, Wayne

-
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/



This archive was generated by hypermail 2b29 : Thu Nov 15 2001 - 21:00:26 EST