Thread (42 messages) 42 messages, 6 authors, 2021-10-14

Re: [PATCH 16/22] PCI: pciehp: Use RESPONSE_IS_PCI_ERROR() to check read from hardware

From: Lukas Wunner <lukas@wunner.de>
Date: 2021-10-13 12:25:36
Also in: linux-pci, lkml

On Wed, Oct 13, 2021 at 01:12:01AM +0200, Pali Rohár wrote:
quoted
On 11/10, Lukas Wunner wrote:
quoted
On Mon, Oct 11, 2021 at 11:37:33PM +0530, Naveen Naidu wrote:
quoted
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
_______________________________________________
Linux-kernel-mentees mailing list
Linux-kernel-mentees@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help