forked from luck/tmp_suning_uos_patched
i7core: fix probing on Xeon55xx
Xeon55xx fails to probe with this error message: EDAC DEBUG: in drivers/edac/i7core_edac.c, line at 1660: MC: drivers/edac/i7core_edac.c: i7core_init() EDAC i7core: Device not found: dev 00:00.0 PCI ID 8086:2c41 i7core_edac: probe of 0000:00:14.0 failed with error -22 This is due to the fact that, on Xeon35xx (and i7core), device 00.0 has PCI ID 8086:2c40. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
f237fcf2b7
commit
310cbb7284
@ -227,9 +227,6 @@ struct i7core_dev_info {
|
||||
.dev_id = (device_id)
|
||||
|
||||
struct pci_id_descr pci_devs[] = {
|
||||
/* Generic Non-core registers */
|
||||
{ PCI_DESCR(0, 0, PCI_DEVICE_ID_INTEL_I7_NOCORE) },
|
||||
|
||||
/* Memory controller */
|
||||
{ PCI_DESCR(3, 0, PCI_DEVICE_ID_INTEL_I7_MCR) },
|
||||
{ PCI_DESCR(3, 1, PCI_DEVICE_ID_INTEL_I7_MC_TAD) },
|
||||
@ -253,6 +250,16 @@ struct pci_id_descr pci_devs[] = {
|
||||
{ PCI_DESCR(6, 1, PCI_DEVICE_ID_INTEL_I7_MC_CH2_ADDR) },
|
||||
{ PCI_DESCR(6, 2, PCI_DEVICE_ID_INTEL_I7_MC_CH2_RANK) },
|
||||
{ PCI_DESCR(6, 3, PCI_DEVICE_ID_INTEL_I7_MC_CH2_TC) },
|
||||
|
||||
/* Generic Non-core registers */
|
||||
/*
|
||||
* This is the PCI device on i7core and on Xeon 35xx (8086:2c41)
|
||||
* On Xeon 55xx, however, it has a different id (8086:2c40). So,
|
||||
* the probing code needs to test for the other address in case of
|
||||
* failure of this one
|
||||
*/
|
||||
{ PCI_DESCR(0, 0, PCI_DEVICE_ID_INTEL_I7_NOCORE) },
|
||||
|
||||
};
|
||||
#define N_DEVS ARRAY_SIZE(pci_devs)
|
||||
|
||||
@ -1138,6 +1145,16 @@ static int i7core_get_devices(void)
|
||||
pci_devs[i].dev_id, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* On Xeon 55xx, the Intel Quckpath Arch Generic Non-core regs
|
||||
* is at addr 8086:2c40, instead of 8086:2c41. So, we need
|
||||
* to probe for the alternate address in case of failure
|
||||
*/
|
||||
if (pci_devs[i].dev_id == PCI_DEVICE_ID_INTEL_I7_NOCORE
|
||||
&& !pdev)
|
||||
pdev = pci_get_device(PCI_VENDOR_ID_INTEL,
|
||||
PCI_DEVICE_ID_INTEL_I7_NOCORE_ALT, NULL);
|
||||
|
||||
if (likely(pdev)) {
|
||||
bus = pdev->bus->number;
|
||||
|
||||
|
@ -2549,6 +2549,7 @@
|
||||
#define PCI_DEVICE_ID_INTEL_I7_MC_CH2_RANK 0x2c32
|
||||
#define PCI_DEVICE_ID_INTEL_I7_MC_CH2_TC 0x2c33
|
||||
#define PCI_DEVICE_ID_INTEL_I7_NOCORE 0x2c41
|
||||
#define PCI_DEVICE_ID_INTEL_I7_NOCORE_ALT 0x2c40
|
||||
#define PCI_DEVICE_ID_INTEL_82855PM_HB 0x3340
|
||||
#define PCI_DEVICE_ID_INTEL_IOAT_TBG4 0x3429
|
||||
#define PCI_DEVICE_ID_INTEL_IOAT_TBG5 0x342a
|
||||
|
Loading…
Reference in New Issue
Block a user