Re: Help: DGE-560T not recognized by Linux

From: Willy Tarreau
Date: Mon Feb 20 2006 - 06:45:38 EST


Hi Greg,

On Sat, Feb 18, 2006 at 05:04:41PM -0800, Greg KH wrote:
> On Sat, Feb 18, 2006 at 04:35:55PM -0800, Stephen Hemminger wrote:
> > On Sat, 18 Feb 2006 22:29:46 +0300
> > Sergey Vlasov <vsu@xxxxxxxxxxx> wrote:
> >
> > > On Sat, 18 Feb 2006 10:01:26 -0700 Brian Hall wrote:
> > >
> > > > On Fri, 17 Feb 2006 23:48:41 -0800
> > > > Andrew Morton <akpm@xxxxxxxx> wrote:
> > > > > Brian Hall <brihall@xxxxxxxxxx> wrote:
> > > > > > I see that the sky2 driver in 2.6.16rc4 lists my card, but for some
> > > > > > reason it fails to access the card, maybe because I have an ULi
> > > > > > chipset?
> > > > > >
> > > > > > Feb 17 23:18:46 syrinx sky2 0000:02:00.0: can't access PCI config
> > > > > > space
> > > > >
> > > > > Looks like something died way down in the PCI bus config space
> > > > > read/write operations. I don't know what would cause that. You
> > > > > could perhaps play with `pci=conf1', `pci=conf2', etc as per
> > > > > Documentation/kernel-parameters.txt.
> > > >
> > > > OK, I tried all these pci= options, plus acpi=off, to no effect:
> > > > conf1, conf2, nommconf, biosirq, noacpi, routeirq, nosort, rom,
> > > > lastbus=2, assign-busses, usepirqmask acpi=off
> > > >
> > > > Also tried adjusting PCIe-related stuff in the BIOS (underclocking PCIe
> > > > from 100 to 70 and adjusting Northbridge options). No change.
> > >
> > > Most likely it fails here:
> > >
> > > err = pci_write_config_dword(hw->pdev, PEX_UNC_ERR_STAT,
> > > 0xffffffffUL);
> > > if (err)
> > > goto pci_err;
> > >
> > > PEX_UNC_ERR_STAT is 0x104; this register is outside of the standard
> > > 256-byte PCI configuration space, and is reachable only via the MMCONFIG
> > > access mechanism. Seems that kernel is not using MMCONFIG for some
> > > reason; you mentioned that you have CONFIG_PCI_MMCONFIG=y in kernel
> > > config, so it looks like your BIOS does not provide proper MCFG table.
> > > Full dmesg output might give some clues.
> >
> > The problem can also be caused by buggy BIOS's that don't report
> > proper values for mmconfig space. There is some code in mmconfig.c that
> > tries to handle that. It might not handle what ever your system is reporting.
> > Andi Kleen seems to be the last person involved and might be able to help.
> >
> > It would be useful to add some printk's to mmconfig to dump out the table
> > after it discovers the table.
>
> Andi has a follow-on patch at:
> http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/gregkh-03-pci/pci-give-pci-config-access-initialization-a-defined-ordering.patch
> that should take care of these kinds of mmconfig issues by ordering the
> pci config accessors properly.
>
> Can you test this patch out to see if it fixes this problem on your
> machine?

Today, I had the *exact* same problem on one server equipped with the same
card. I tried the patch above which did not change anything. However, I
finally fixed it by simply enabling ACPI. Then it always works with and
without the patch above. I could not test marvell's driver because it does
not build on 2.6.16-rc4, but strangely my previous kernel on this machine
was a 2.6.12-rc4-mm2 patched with marvell's driver and with ACPI disabled.

So it seems that marvell's driver on 2.6.12 was able to access config space
even without ACPI while sky2 on 2.6.16-rc4 cannot. I have no idea why,
unfortunately.

Just my 2 cents,
Willy

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/