[PATCH v2 19/27] pci: PCIe driver for Marvell Armada 370/XP systems
Thierry Reding
thierry.reding at avionic-design.de
Wed Jan 30 07:03:44 EST 2013
On Wed, Jan 30, 2013 at 11:32:46AM +0000, Russell King - ARM Linux wrote:
> On Mon, Jan 28, 2013 at 07:56:28PM +0100, Thomas Petazzoni wrote:
> > +static resource_size_t mvebu_pcie_align_resource(struct pci_dev *dev,
> > + const struct resource *res,
> > + resource_size_t start,
> > + resource_size_t size,
> > + resource_size_t align)
> > +{
> > + if (!(res->flags & IORESOURCE_IO))
> > + return start;
> > +
> > + /*
> > + * The I/O regions must be 64K aligned, because the
> > + * granularity of PCIe I/O address decoding windows is 64 K
> > + */
> > + return round_up(start, SZ_64K);
> > +}
>
> You do realise that this will result in all PCI I/O BARs being rounded
> up to 64K.
>
> I've just been digging through the PCI code and have come across a
> function - pcibios_window_alignment() - which the PCI code allows to be
> overriden which allows you to increase the alignment requirement of
> bridge windows. It takes the PCI bus and window type as arguments.
>
> I'd suggest using that, and checking whether the bus which is passed
> corresponds with a bus which gives you problems, so that you don't
> impose the 64K requirement on downstream bridges.
That approach isn't going to work very well with multi-platform, though,
since the function can only be overridden on a per-architecture basis.
Thierry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130130/74cffa44/attachment.sig>
More information about the linux-arm-kernel
mailing list