Re: Unable to allocate PCI I/O resources

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Dec 17, 2015 at 11:29:52PM +0200, Matti Laakso wrote:
> Hello all,
> 
> I have some oldish MIPS-based (Lantiq Danube) routers that have a PCI
> bus and a VIA 6212 USB-controller connected to it. The USB controller
> requires I/O resources in addition to memory. It seems that with kernel
> 3.18 and newer PCI I/O resources can no longer be allocated on this
> platform. I tracked the problem down to a patch set from Liviu Dudau
> (Support for creating generic PCI host bridges from DT). After this
> patch the function pci_address_to_pio in drivers/of/address.c hits the check
> 
> address > IO_SPACE_LIMIT
> 
> since address on this SoC is 0x1AE00000 and IO_SPACE_LIMIT is 0xFFFF on
> MIPS (PCI_IOBASE is not defined). Changing IO_SPACE_LIMIT to 0xFFFFFFFF
> I can work around the problem, but I think that is not the proper solution.

if PCI_IOBASE is not defined then you should not hit the code I have added
with commit 41f8bba7f5552d0 but the old code path, in which case I would
guess the code was broken before my change?

> 
> Any ideas on how to fix this?
> 

There is a distinction between IO range being visible from the CPU @ 0x1AE00000
and the IO address being used by the PCI subsystem. The IO address is a
bus address and it should be between 0 - IO_SPACE_LIMIT.

I would look into the actual user of pci_address_to_pio(), and maybe define
PCI_IOBASE for your platform to tell it where the IO space starts from CPU
point of view.

Best regards,
Liviu

> Best regards,
> Matti Laakso
> 

-- 
====================
| I would like to |
| fix the world,  |
| but they're not |
| giving me the   |
 \ source code!  /
  ---------------
    ¯\_(ツ)_/¯




[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux