On 9/27/20 10:29 AM, Sergei Shtylyov wrote: [...] >> the ARM 'imprecise external abort' handler is invoked. >> >> Just like other PCI controller drivers, here we hook the fault handler, >> perform the fixup to help the controller enter L1 link state, and then >> restart the instruction which triggered the fault. Since the controller > > If this is imprecise or async external abort, how we can re-execute > the instruction that triggered the fault? It's been probably executed > already, no? It has been executed and triggered the fault, because it could not access the data across the bus. Now the bus is back in operational state, so restart the instruction, let it access the data and do its task. [...]