Re: Help: DGE-560T not recognized by Linux
From: Sergey Vlasov
Date: Mon Feb 20 2006 - 07:54:42 EST
On Mon, Feb 20, 2006 at 12:43:41PM +0100, Willy Tarreau wrote:
> 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.
Apparently Marvell's driver accesses PCIE configuration registers through
I/O ports specific to their hardware:
/*
* Macro PCI_C()
*
* Use this macro to access PCI config register from the I/O space.
*
* para:
* pAC Pointer to adapter context
* Addr PCI configuration register to access.
* Values: PCI_VENDOR_ID ... PCI_VPD_ADR_REG,
*
* usage SK_IN16(IoC, PCI_C(pAC, PCI_VENDOR_ID), pVal);
*/
#define PCI_C(p, Addr) \
(((CHIP_ID_YUKON_2(p)) ? Y2_CFG_SPC : B7_CFG_SPC) + (Addr))
...
/* clear any PEX errors */
SK_OUT32(IoC, PCI_C(pAC, PEX_UNC_ERR_STAT), 0xffffffffUL);
SK_IN16(IoC, PCI_C(pAC, PEX_LNK_STAT), &Word);
pAC->GIni.GIPexWidth = (SK_U8)((Word & PEX_LS_LINK_WI_MSK) >> 4);
...
SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_ON);
SK_OUT16(IoC, PCI_C(pAC, PEX_DEV_CTRL), Word);
SK_OUT8(IoC, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
...
/* clear the interrupt */
SK_OUT32(IoC, B2_TST_CTRL1, TST_CFG_WRITE_ON);
SK_OUT32(IoC, PCI_C(pAC, PEX_UNC_ERR_STAT), 0xffffffffUL);
SK_OUT32(IoC, B2_TST_CTRL1, TST_CFG_WRITE_OFF);
But sky2 uses standard pci_read_config_*, pci_write_config_* functions,
which require working MMCONFIG access. Maybe sky2 should be changed to
use I/O space for access to PCIE-specific configuration registers.
Attachment:
pgp00000.pgp
Description: PGP signature