瀏覽代碼

[POWERPC] EEH: log error only after driver notification.

It turns out many/most versions of firmware enable MMIO when
the slto-error-detail rtas call is made (in violation of the
architecture). Thus, it would be best to call slot-error-detail
only after notifying device drivers of a freeze, as otherwise,
a variety of strange and unexpected things may happen.

Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Linas Vepstas 18 年之前
父節點
當前提交
ede8ca269f
共有 1 個文件被更改,包括 5 次插入1 次删除
  1. 5 1
      arch/powerpc/platforms/pseries/eeh_driver.c

+ 5 - 1
arch/powerpc/platforms/pseries/eeh_driver.c

@@ -361,7 +361,6 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event)
 		goto hard_fail;
 		goto hard_fail;
 	}
 	}
 
 
-	eeh_slot_error_detail(frozen_pdn, 1 /* Temporary Error */);
 	printk(KERN_WARNING
 	printk(KERN_WARNING
 	   "EEH: This PCI device has failed %d times since last reboot: "
 	   "EEH: This PCI device has failed %d times since last reboot: "
 		"location=%s driver=%s pci addr=%s\n",
 		"location=%s driver=%s pci addr=%s\n",
@@ -375,6 +374,11 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event)
 	 */
 	 */
 	pci_walk_bus(frozen_bus, eeh_report_error, &result);
 	pci_walk_bus(frozen_bus, eeh_report_error, &result);
 
 
+	/* Since rtas may enable MMIO when posting the error log,
+	 * don't post the error log until after all dev drivers
+	 * have been informed. */
+	eeh_slot_error_detail(frozen_pdn, 1 /* Temporary Error */);
+
 	/* If all device drivers were EEH-unaware, then shut
 	/* If all device drivers were EEH-unaware, then shut
 	 * down all of the device drivers, and hope they
 	 * down all of the device drivers, and hope they
 	 * go down willingly, without panicing the system.
 	 * go down willingly, without panicing the system.