[PATCH] Restore PCI IO space behind Freescale pseudo-bridge

Kumar Gala kumar.gala at freescale.com
Wed Jan 28 16:37:09 EST 2009


On Jan 27, 2009, at 12:13 PM, Andrew Klossner wrote:

> Kumar, you wrote:
>
>> Any resolution to all this.. Not exactly sure what change impacts
>> things and what part of our screwy HW is causing issues.
>
> The change in question is commit  
> b556151110ff003ce77d84597400c84824690ccf.
>
> The fundamental problem is that the "PCI Bus Command" register, the 16
> bits at offset 4 in config space for both the PCI and PCI-Express bus
> interfaces, does not populate PCI_COMMAND_IO, the least-significant
> bit.  The PCI bridge standard says that software must set this bit to
> 1 before the bridge can respond as a slave to I/O space access,
> including access to devices on the subordinate bus.  The FSL parts
> ignore this requirement and control response to I/O space with the
> (vendor-specific) outbound window attributes registers (POWARn.)
> 2.6.28 differs from 2.6.27 in that it examines this bit and sees that
> it's set to 0, then observes that the I/O space window starts at
> offset 0 and concludes that no I/O space resource should be allocated
> for the bridge.
>
> We are using the patch I emailed.  It's ugly in that it hard-codes the
> Freescale vendor ID, but it works for us.

I guess I'm confused what the actual breakage is beyond some printk  
messages.

We "fixup" the resources in fsl_pcibios_fixup_bus() so Ben's change  
shouldn't have an impact.  Does something actually stop functioning?

> Another option would have been to configure our I/O space window to
> start at an offset other than 0.  This would take me some time to
> achieve, and it feels ugly.


agreed, that's not the right solution.

- k



More information about the Linuxppc-dev mailing list