On Mon, 2013-05-20 at 10:37 -0500, Linas Vepstas wrote: > I think Joe Liu has it right. I'm going to top-post because things > are a bit tangled below. I urge a review of > /Documentation/PCI/pci-error-recovery.txt, as that gives the details. > > The intended sequence is that, after an error, the device driver gets > a shot at running some diagnostics & dumps, and then the pci > bridges/controllers/ports/links are reset (by platform code, viz. aer > in this case) to a state resembling a fresh power-on. Then the > .slot_reset() callback is called on the device driver, to tell the > driver "hey everything upstream is now working, go set yourself up for > normal ops." Thus, in particular, one should have pdev->error_state = > pci_channel_io_normal; before .slot_reset() is called, and the PCI > config space contents should resemble a fresh power-on state (and > **NOT** some other saved state!) > > If the device driver wanted to leave the card in a dead state, it had > several opportunities to say so, earlier in the callback sequence. If > the driver wanted to fiddle with the card with the old PCI config > space, it already had a chance to do that too, before the > bridges/controllers/ports/links were fully reset by the platform. By > the time that .slot_reset() is being called, both the platform and the > device driver are expecting smooth sailing ahead. Yes. It's flexible for drivers to do that in many callbacks. AER framework provides such flexibility. > > So, looking at the original patch, it seems reasonable. I agree. > My impression > is that maybe the AER driver had been doing not quite the right thing > for a long time. Pls. provide evidence/facts. The new patch is to facilitate device driver implementation. It doesn't mean current AER driver is incorrect. We need a tradeoff. Just like what Bjoin says, we shouldn't change error_state to pci_channel_io_normal before we really recover the hardware. The patch changes it just because drivers might call some functions to recover the devices, while such functions need (error_state==pci_channel_io_normal). > > -- Linas Vepstas -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html