PCIe host controller without IO port access.

Rob Herring robh at kernel.org
Mon Nov 3 14:00:46 PST 2014

On Mon, Nov 3, 2014 at 11:41 AM, Bjorn Helgaas <bhelgaas at google.com> wrote:
> [+cc Rob (author of 3c5d1699887b), Arnd]
> On Sun, Nov 2, 2014 at 4:37 PM, Hauke Mehrtens <hauke at hauke-m.de> wrote:
>> Hi,
>> I am currently writing a driver for a PCIe host controller which does
>> not support IO port access.
>> My plan was to only provide IORESOURCE_MEM to pci_sys_data->resources,
>> but then it allocates some generic IORESOURCE_IO memory in
>> arch/arm/kernel/bios32.c:pcibios_init_resources(). This will work for
>> the fist PCIe controller, but when the second controller gets registered
>> I am getting this: "unable to allocate I/O port region (-16)".
>> Is there an example for an arm driver for a PCIe controller which does
>> not support IO port access?
>> Should I change arch/arm/kernel/bios32.c in a way so that it would
>> ignore the io port mem?
> I think this is a case of "all current platforms support an I/O space,
> so we'll set it up in the ARM PCI core."  But I/O space is not (as far
> as I know) a required feature of PCI host bridges on ARM, so I suspect
> you should change arch/arm/kernel/bios32.c in some way to accomodate
> controllers with no I/O port space at all.

I guess we could ignore the error on request_resource or define a way
to flag no i/o space. However, any new driver should be using all the
new generic infrastructure. I think this code path should not even be
called in that case.


More information about the linux-arm-kernel mailing list