INTRNG (Was: svn commit: r301453....)

Nathan Whitehorn nwhitehorn at freebsd.org
Tue Aug 16 12:36:39 UTC 2016



On 08/16/16 02:37, Andrew Turner wrote:
> On Fri, 12 Aug 2016 08:31:06 -0700
> Nathan Whitehorn <nwhitehorn at freebsd.org> wrote:
>> One other non-urgent question about PCI code:
>>
>> There's a new function ofw_bus_msimap() that does not seem to
>> implement any particular part of any real binding standard. There's
>> a .txt file in the device-tree repo, but many (most?, all?) PCI
>> bridges don't seem to implement MSI that way. This is out-of-scope
>> for the immediate discussion, but it would be good to fix later. If
>> there are indeed only a handful of bridges that do MSI that way, it
>> should probably be moved into the PCI bridge drivers that do use it.
> The ofw_bus_msimap() implements the standard FDT MSI properties to
> find the needed MSI/MSI-X controller. See [1] for the binding document.

Yes, but ThunderX seems to be the only host bridge that actually 
implements those bindings. I've never run into another, certainly, and 
there don't seem to be any others in the tree.
>> Similarly, dev/pci/pci_host_generic.c isn't actually generic and is
>> instead a driver for some particular ARM bridges. It should be moved
>> at some point under sys/arm. Most of the code in it also duplicates
>> dev/ofw/ofwpci.c (but with some added bugs in handling the "ranges"
>> property).
> I don't see why. There is nothing ARM specific in it. I also have
> patches to use it with ACPI as the existing driver makes assumptions
> about PCI that may not be true on all platforms.

There's an "arm,gem5_pcie" in there that is certainly suggestive of 
ARM-ness. At any rate, much like the MSI bits, I could imagine multiple 
controllers implementing the interface defined in this driver but there 
do not seem, at present, to be any. Most of the code is indeed generic 
but duplicates ofwpci. That code should be replaced through inheritance 
with the ofwpci.c equivalents; the only remaining bits are MSI 
allocation and config space access, which seem to be specific to a few 
kinds of ARM hardware.
-Nathan

>
> Andrew
>
> [1]
> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/pci/pci-msi.txt
>



More information about the freebsd-arm mailing list