[PATCH] powerpc/pseries: Increment fail counter in PCI recovery
When a PCI device driver does not support PCI error recovery, the powerpc/pseries code takes a walk through a branch of code that resets the failure counter. Because of this, if a broken PCI card is present, the kernel will attempt to reset it an infinite number of times. (This is annoying but mostly harmless: each reset takes about 10-20 seconds, and uses almost no CPU time). This patch preserves the failure count across resets. Signed-off-by: Linas Vepstas <linas@austin.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Родитель
877fbae3d5
Коммит
4240545661
|
@ -201,7 +201,11 @@ static void eeh_report_failure(struct pci_dev *dev, void *userdata)
|
||||||
|
|
||||||
static int eeh_reset_device (struct pci_dn *pe_dn, struct pci_bus *bus)
|
static int eeh_reset_device (struct pci_dn *pe_dn, struct pci_bus *bus)
|
||||||
{
|
{
|
||||||
int rc;
|
int cnt, rc;
|
||||||
|
|
||||||
|
/* pcibios will clear the counter; save the value */
|
||||||
|
cnt = pe_dn->eeh_freeze_count;
|
||||||
|
|
||||||
if (bus)
|
if (bus)
|
||||||
pcibios_remove_pci_devices(bus);
|
pcibios_remove_pci_devices(bus);
|
||||||
|
|
||||||
|
@ -240,6 +244,7 @@ static int eeh_reset_device (struct pci_dn *pe_dn, struct pci_bus *bus)
|
||||||
ssleep (5);
|
ssleep (5);
|
||||||
pcibios_add_pci_devices(bus);
|
pcibios_add_pci_devices(bus);
|
||||||
}
|
}
|
||||||
|
pe_dn->eeh_freeze_count = cnt;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче