| From 26aa38cafae0dbef3b2fe75ea487c83313c36d45 Mon Sep 17 00:00:00 2001 |
| From: Lucas Kannebley Tavares <lucaskt@linux.vnet.ibm.com> |
| Date: Mon, 9 Jan 2012 10:58:06 -0200 |
| Subject: jsm: Fixed EEH recovery error |
| |
| From: Lucas Kannebley Tavares <lucaskt@linux.vnet.ibm.com> |
| |
| commit 26aa38cafae0dbef3b2fe75ea487c83313c36d45 upstream. |
| |
| There was an error on the jsm driver that would cause it to be unable to |
| recover after a second error is detected. |
| |
| At the first error, the device recovers properly: |
| |
| [72521.485691] EEH: Detected PCI bus error on device 0003:02:00.0 |
| [72521.485695] EEH: This PCI device has failed 1 times in the last hour: |
| ... |
| [72532.035693] ttyn3 at MMIO 0x0 (irq = 49) is a jsm |
| [72532.105689] jsm: Port 3 added |
| |
| However, at the second error, it cascades until EEH disables the device: |
| |
| [72631.229549] Call Trace: |
| ... |
| [72641.725687] jsm: Port 3 added |
| [72641.725695] EEH: Detected PCI bus error on device 0003:02:00.0 |
| [72641.725698] EEH: This PCI device has failed 3 times in the last hour: |
| |
| It was caused because the PCI state was not being saved after the first |
| restore. Therefore, at the second recovery the PCI state would not be |
| restored. |
| |
| Signed-off-by: Lucas Kannebley Tavares <lucaskt@linux.vnet.ibm.com> |
| Signed-off-by: Breno Leitao <brenohl@br.ibm.com> |
| Acked-by: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/tty/serial/jsm/jsm_driver.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/drivers/tty/serial/jsm/jsm_driver.c |
| +++ b/drivers/tty/serial/jsm/jsm_driver.c |
| @@ -251,6 +251,7 @@ static void jsm_io_resume(struct pci_dev |
| struct jsm_board *brd = pci_get_drvdata(pdev); |
| |
| pci_restore_state(pdev); |
| + pci_save_state(pdev); |
| |
| jsm_uart_port_init(brd); |
| } |