On Wed, Oct 13, 2021 at 01:12:01AM +0200, Pali Rohár wrote: > > On 11/10, Lukas Wunner wrote: > > > On Mon, Oct 11, 2021 at 11:37:33PM +0530, Naveen Naidu wrote: > > > > An MMIO read from a PCI device that doesn't exist or doesn't respond > > > > causes a PCI error. There's no real data to return to satisfy the > > > > CPU read, so most hardware fabricates ~0 data. > > > > > > > > Use RESPONSE_IS_PCI_ERROR() to check the response we get when we read > > > > data from hardware. > > > > > > Actually what happens is that PCI read transactions *time out*, > > > so the host controller fabricates a response. > > This is not fully correct. 0xffffffff is returned when some error > happens. It does not have to be timeout error. Errors like Unsupported > Request, Completer Abort or Configuration Request Retry Status (when > CRSSVE bit is disabled) are also reported as 0xffffffff and they do not > represent timeout. For example Unsupported Request is returned when you > try to read from non-existent device behind some PCIe switch. This particular patch concerns pciehp and in that context, "all ones" responses are predominantly timeouts caused by hot-removed devices. Thanks, Lukas