Re: Legacy features in PCI Express devices
From: Bjorn Helgaas <helgaas@kernel.org>
Date: 2017-03-13 18:55:04
Also in:
linux-arm-kernel, linux-pci
On Mon, Mar 13, 2017 at 05:10:57PM +0100, Mason wrote:
Hello, There are two revisions of our PCI Express controller. Rev 1 did not support the following features: 1) legacy PCI interrupt delivery (INTx signals) 2) I/O address space Internally, someone stated that such missing support would prevent some PCIe cards from working with our controller. Are there really modern PCIe cards that require 1) and/or 2) to function?
From a spec point of view, all endpoints, including Legacy, PCI
Express, and Root Complex Integrated Endpoints, are "required to support MSI or MSI-X or both if an interrupt resource is requested" (PCIe r3.0, sec 1.3.2). The same section says Legacy Endpoints are permitted to use I/O Requests, but PCI Express and Root Complex Integrated Endpoints are not. There's a little wiggle room in the I/O BAR description; I would interpret it to mean the latter two varieties are permitted to have I/O BARs, but they must make the resources described by those BARs available via a memory BAR as well, so they can operate with I/O address space. But that's only in theory; David has already given examples of devices that don't support MSI, and Greg hinted at new devices that might require I/O space. I'm particularly curious about that last one, because there are several host bridges that don't support I/O space at all. Bjorn