On Tuesday 02 September 2008 01:41:24 pm Pascal Hofstee wrote: > On Tue, Sep 2, 2008 at 4:33 PM, John Baldwin <jhb_at_freebsd.org> wrote: > > This explains k8temp. So my earlier test patch to Christian only checked > > on i386 which is why it didn't find an issue before. Try the updated > > patch at http://www.FreeBSD.org/~jhb/patches/pcie.patch > > > > This does PCI config reads using both methods and panics if it doesn't > > get the same result. > > I had to adjust the patch slightly by actually initializing edata to > -1 to get the kernel to actually build (WARNS was complaining about > possibly uninitialized variable edata). I then booted the resulting > kernel and got the following boot log: > > [snip earlier parts of boot log] > acpi0: <090607 RSDT1001> on motherboard > PCIe: Memory Mapped configuration base _at_ 0xe0000000 > ioapic0: routing intpin 9 (ISA IRQ 9) to vector 48 > acpi0: [MPSAFE] > acpi0: [ITHREAD] > acpi0: Power Button (fixed) > panic: pci_cfgread(0:24:0, 11, 1) => 0x6, 0xff > cpuid = 0 > > According to pciconf -lv on a working kernel device 0:24:0 is the > following: hostb0_at_pci0:0:24:0: class=0x060000 card=0x00000000 > chip=0x11001022 rev=0x00 hdr=0x00 > vendor = 'Advanced Micro Devices (AMD)' > device = '(K8) Athlon 64/Opteron HyperTransport Technology > Configuration' > class = bridge > subclass = HOST-PCI > > Which matches perfectly with the first previously mentioned missing > devices that are normally attached to pcib0. So Linux has a rather gross work-around for this (it's a hardware bug) where they check all the slots on bus 0, and if a device isn't found via MCFG, it falls back to using the old style config access. That still doesn't explain the ata issue though. Let me see if I can come up with a patch for this issue first, and then we can move on to the ATA one. :-( Try http://www.FreeBSD.org/~jhb/patches/pcie_mcfg_k8.patch -- John BaldwinReceived on Mon Sep 08 2008 - 19:30:42 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:35 UTC