Generic Linux architectural discussions
 help / color / mirror / Atom feed
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

  parent reply	other threads:[~2012-02-02 10:50 UTC|newest]

Thread overview: 57+ 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 ` 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   ` 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 16:57   ` Bjorn Helgaas
2012-01-30 20:52   ` Yinghai Lu
2012-01-30 20:52     ` Yinghai Lu
2012-01-30 22:00     ` Bjorn Helgaas
2012-01-30 22:00       ` Bjorn Helgaas
2012-01-30 22:29       ` Yinghai Lu
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   ` 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   ` Bjorn Helgaas
2012-01-30 16:57 ` [RFC PATCH v1 07/18] arm/PCI: " Bjorn Helgaas
2012-01-30 16:57   ` Bjorn Helgaas
2012-02-03 16:01   ` Russell King - ARM Linux
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 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:57   ` Bjorn Helgaas
2012-01-30 16:58 ` [RFC PATCH v1 10/18] microblaze/PCI: " Bjorn Helgaas
2012-01-30 16:58   ` Bjorn Helgaas
2012-02-02 10:50   ` Michal Simek [this message]
2012-02-02 10:50     ` Michal Simek
2012-02-03 11:46     ` Benjamin Herrenschmidt
2012-02-03 11:46       ` Benjamin Herrenschmidt
2012-01-30 16:58 ` [RFC PATCH v1 11/18] mips/PCI: " Bjorn Helgaas
2012-01-30 16:58   ` Bjorn Helgaas
2012-01-31  2:42   ` Yoichi Yuasa
2012-01-31  2:42     ` Yoichi Yuasa
2012-01-31  3:54     ` Bjorn Helgaas
2012-01-31  3:54       ` Bjorn Helgaas
2012-02-08  2:56       ` 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   ` Bjorn Helgaas
2012-01-30 16:58 ` [RFC PATCH v1 13/18] parisc/PCI: " Bjorn Helgaas
2012-01-30 16:58   ` 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 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   ` 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox