From: Michal Simek <monstr@monstr.eu>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-pci@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Re: [RFC PATCH v1 10/18] microblaze/PCI: get rid of device resource fixups
Date: Thu, 02 Feb 2012 11:50:47 +0100 [thread overview]
Message-ID: <4F2A6A87.6020308@monstr.eu> (raw)
In-Reply-To: <20120130165800.3231.42814.stgit@bhelgaas.mtv.corp.google.com>
Hi,
Bjorn Helgaas wrote:
> Tell the PCI core about host bridge address translation so it can take
> care of bus-to-resource conversion for us.
>
> N.B. We might need to tweak the I/O range and offset to account for the
> 32-bit mask previously used in pcibios_resource_to_bus(). I don't
> know the details of this mapping. If anybody can help me test and
> fix this, please let me know.
>
> CC: Michal Simek <monstr@monstr.eu>
> ---
> arch/microblaze/include/asm/pci.h | 8 +---
> arch/microblaze/pci/pci-common.c | 69 ++-----------------------------------
> 2 files changed, 4 insertions(+), 73 deletions(-)
>
> diff --git a/arch/microblaze/include/asm/pci.h b/arch/microblaze/include/asm/pci.h
> index 0331376..8db01f7 100644
> --- a/arch/microblaze/include/asm/pci.h
> +++ b/arch/microblaze/include/asm/pci.h
> @@ -94,13 +94,7 @@ extern int pci_mmap_legacy_page_range(struct pci_bus *bus,
> */
> #define PCI_DMA_BUS_IS_PHYS (1)
>
> -extern void pcibios_resource_to_bus(struct pci_dev *dev,
> - struct pci_bus_region *region,
> - struct resource *res);
> -
> -extern void pcibios_bus_to_resource(struct pci_dev *dev,
> - struct resource *res,
> - struct pci_bus_region *region);
> +#define ARCH_HAS_GENERIC_PCI_OFFSETS
>
> static inline struct resource *pcibios_select_root(struct pci_dev *pdev,
> struct resource *res)
> diff --git a/arch/microblaze/pci/pci-common.c b/arch/microblaze/pci/pci-common.c
> index 85f2ac1..a9fa875 100644
> --- a/arch/microblaze/pci/pci-common.c
> +++ b/arch/microblaze/pci/pci-common.c
> @@ -840,59 +840,6 @@ int pci_proc_domain(struct pci_bus *bus)
> return 1;
> }
>
> -void pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region,
> - struct resource *res)
> -{
> - resource_size_t offset = 0, mask = (resource_size_t)-1;
> - struct pci_controller *hose = pci_bus_to_host(dev->bus);
> -
> - if (!hose)
> - return;
> - if (res->flags & IORESOURCE_IO) {
> - offset = (unsigned long)hose->io_base_virt - _IO_BASE;
> - mask = 0xffffffffu;
> - } else if (res->flags & IORESOURCE_MEM)
> - offset = hose->pci_mem_offset;
> -
> - region->start = (res->start - offset) & mask;
> - region->end = (res->end - offset) & mask;
> -}
> -EXPORT_SYMBOL(pcibios_resource_to_bus);
> -
> -void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
> - struct pci_bus_region *region)
> -{
> - resource_size_t offset = 0, mask = (resource_size_t)-1;
> - struct pci_controller *hose = pci_bus_to_host(dev->bus);
> -
> - if (!hose)
> - return;
> - if (res->flags & IORESOURCE_IO) {
> - offset = (unsigned long)hose->io_base_virt - _IO_BASE;
> - mask = 0xffffffffu;
> - } else if (res->flags & IORESOURCE_MEM)
> - offset = hose->pci_mem_offset;
> - res->start = (region->start + offset) & mask;
> - res->end = (region->end + offset) & mask;
> -}
> -EXPORT_SYMBOL(pcibios_bus_to_resource);
> -
> -/* Fixup a bus resource into a linux resource */
> -static void __devinit fixup_resource(struct resource *res, struct pci_dev *dev)
> -{
> - struct pci_controller *hose = pci_bus_to_host(dev->bus);
> - resource_size_t offset = 0, mask = (resource_size_t)-1;
> -
> - if (res->flags & IORESOURCE_IO) {
> - offset = (unsigned long)hose->io_base_virt - _IO_BASE;
> - mask = 0xffffffffu;
> - } else if (res->flags & IORESOURCE_MEM)
> - offset = hose->pci_mem_offset;
> -
> - res->start = (res->start + offset) & mask;
> - res->end = (res->end + offset) & mask;
> -}
> -
> /* This header fixup will do the resource fixup for all devices as they are
> * probed, but not for bridge ranges
> */
> @@ -929,18 +876,11 @@ static void __devinit pcibios_fixup_resources(struct pci_dev *dev)
> continue;
> }
>
> - pr_debug("PCI:%s Resource %d %016llx-%016llx [%x] fixup...\n",
> + pr_debug("PCI:%s Resource %d %016llx-%016llx [%x]\n",
> pci_name(dev), i,
> (unsigned long long)res->start,\
> (unsigned long long)res->end,
> (unsigned int)res->flags);
> -
> - fixup_resource(res, dev);
> -
> - pr_debug("PCI:%s %016llx-%016llx\n",
> - pci_name(dev),
> - (unsigned long long)res->start,
> - (unsigned long long)res->end);
> }
> }
> DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pcibios_fixup_resources);
> @@ -1037,9 +977,6 @@ static void __devinit pcibios_fixup_bridge(struct pci_bus *bus)
> (unsigned long long)res->end,
> (unsigned int)res->flags);
>
> - /* Perform fixup */
> - fixup_resource(res, dev);
> -
> /* Try to detect uninitialized P2P bridge resources,
> * and clear them out so they get re-assigned later
> */
> @@ -1535,7 +1472,7 @@ static void __devinit pcibios_setup_phb_resources(struct pci_controller *hose, s
> res->end = res->start + IO_SPACE_LIMIT;
> res->flags = IORESOURCE_IO;
> }
> - pci_add_resource(resources, res);
> + pci_add_resource_offset(resources, res, hose->io_base_virt - _IO_BASE);
>
> pr_debug("PCI: PHB IO resource = %016llx-%016llx [%lx]\n",
> (unsigned long long)res->start,
> @@ -1558,7 +1495,7 @@ static void __devinit pcibios_setup_phb_resources(struct pci_controller *hose, s
> res->flags = IORESOURCE_MEM;
>
> }
> - pci_add_resource(resources, res);
> + pci_add_resource_offset(resources, res, hose->pci_mem_offset);
>
> pr_debug("PCI: PHB MEM resource %d = %016llx-%016llx [%lx]\n",
> i, (unsigned long long)res->start,
>
I don't have any pci board for testing this. The most of things come from ppc.
We share pci IPs with xilinx ppc405/440.
Sorry that I can't help you with it and I have no problem with unification patches.
If someone has any problem with it can be bisected and solved in future.
Thanks,
Michal
--
Michal Simek, Ing. (M.Eng)
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/
Microblaze U-BOOT custodian
next prev parent reply other threads:[~2012-02-02 10:50 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-30 16:57 [RFC PATCH v1 00/18] add PCI bus-to-resource offset support in core Bjorn Helgaas
2012-01-30 16:57 ` [RFC PATCH v1 01/18] PCI: don't publish new root bus until it's fully initialized Bjorn Helgaas
2012-01-30 16:57 ` [RFC PATCH v1 02/18] PCI: add struct pci_host_bridge and a list of all bridges found Bjorn Helgaas
2012-01-30 20:52 ` Yinghai Lu
2012-01-30 22:00 ` Bjorn Helgaas
2012-01-30 22:29 ` Yinghai Lu
2012-01-30 16:57 ` [RFC PATCH v1 03/18] PCI: add struct pci_host_bridge_window with CPU/bus address offset Bjorn Helgaas
2012-01-30 16:57 ` [RFC PATCH v1 04/18] PCI: convert bus addresses to resource when reading BARs Bjorn Helgaas
2012-01-30 16:57 ` [RFC PATCH v1 05/18] PCI: add generic pcibios_resource_to_bus() Bjorn Helgaas
2012-01-30 16:57 ` [RFC PATCH v1 06/18] alpha/PCI: get rid of device resource fixups Bjorn Helgaas
2012-01-30 16:57 ` [RFC PATCH v1 07/18] arm/PCI: " Bjorn Helgaas
2012-02-03 16:01 ` Russell King - ARM Linux
2012-02-03 16:12 ` Bjorn Helgaas
2012-02-03 16:55 ` Russell King - ARM Linux
2012-02-03 17:51 ` Bjorn Helgaas
2012-01-30 16:57 ` [RFC PATCH v1 08/18] ia64/PCI: SN: convert to pci_scan_root_bus() for correct root bus resources Bjorn Helgaas
2012-01-30 16:57 ` [RFC PATCH v1 09/18] ia64/PCI: get rid of device resource fixups Bjorn Helgaas
2012-01-30 16:58 ` [RFC PATCH v1 10/18] microblaze/PCI: " Bjorn Helgaas
2012-02-02 10:50 ` Michal Simek [this message]
2012-02-03 11:46 ` Benjamin Herrenschmidt
2012-01-30 16:58 ` [RFC PATCH v1 11/18] mips/PCI: " Bjorn Helgaas
2012-01-31 2:42 ` Yoichi Yuasa
2012-01-31 3:54 ` Bjorn Helgaas
2012-02-08 2:56 ` Bjorn Helgaas
[not found] ` <20120208132234.710f19be.yuasa@linux-mips.org>
2012-02-08 21:16 ` Bjorn Helgaas
2012-01-30 16:58 ` [RFC PATCH v1 12/18] mn10300/PCI: " Bjorn Helgaas
2012-01-30 16:58 ` [RFC PATCH v1 13/18] parisc/PCI: " Bjorn Helgaas
2012-01-30 16:58 ` [RFC PATCH v1 14/18] powerpc/PCI: " Bjorn Helgaas
2012-01-30 20:49 ` Benjamin Herrenschmidt
2012-01-30 21:46 ` Bjorn Helgaas
2012-01-30 16:58 ` [RFC PATCH v1 15/18] sh/PCI: " Bjorn Helgaas
2012-01-30 16:58 ` [RFC PATCH v1 16/18] sparc/PCI: " Bjorn Helgaas
2012-01-30 16:58 ` [RFC PATCH v1 17/18] xtensa/PCI: " Bjorn Helgaas
2012-01-30 16:58 ` [RFC PATCH v1 18/18] PCI: collapse pcibios_resource_to_bus Bjorn Helgaas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F2A6A87.6020308@monstr.eu \
--to=monstr@monstr.eu \
--cc=bhelgaas@google.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.