[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20151023053842.GB20335@localhost>
Date: Fri, 23 Oct 2015 00:38:42 -0500
From: Bjorn Helgaas <helgaas@...nel.org>
To: Benjamin Herrenschmidt <benh@...nel.crashing.org>
Cc: David Miller <davem@...emloft.net>, yinghai@...nel.org,
bhelgaas@...gle.com, weiyang@...ux.vnet.ibm.com, linux@....tj,
wangyijing@...wei.com, khalid.aziz@...cle.com,
linux-pci@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v7 03/60] sparc/PCI: Unify pci_register_region()
On Thu, Oct 22, 2015 at 02:47:42PM +1100, Benjamin Herrenschmidt wrote:
> On Wed, 2015-10-21 at 18:27 -0700, David Miller wrote:
> > From: Yinghai Lu <yinghai@...nel.org>
> > Date: Wed, 21 Oct 2015 11:16:53 -0700
> >
> > > otherwise we need to compare res with pbm->mem_space or pbm
> > ->mem64_space
> > > to get direct parent for request_resource_conflict() calling in
> > > pci_register_legacy_regions().
> >
> > Right, this is the issue.
> >
> > On sparc64, the cpu physical base address used for accessing 64-bit
> > and non-64-bit memory spaces is different.
> >
> > And that's why the resource values will be different.
>
> This is the same on power btw, we have separate PowerBus windows to the
> PHB that get mapped respectively to 32-bit PCI MMIO and 64-bit PCI
> MMIO. The former gets "remapped" to generates 0-based PCI cycles, while
> the latter is 1:1. So the offset between CPU and PCI changes depending
> on which window you hit.
Lots of architectures do this, and the PCI core supports it by keeping
a list of all the host bridge windows. Each entry has a struct
resource that contains the CPU address, as well as the offset from the
CPU address to the PCI address. The arch or host bridge driver uses
pci_add_resource_offset() to tell the core about the window and the
offset.
Bjorn
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists