linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [Fwd: [PATCH] PCI Domains Support]
@ 2009-12-16 14:13 Richard Liu
  2009-12-17  0:06 ` Simon Horman
  0 siblings, 1 reply; 10+ messages in thread
From: Richard Liu @ 2009-12-16 14:13 UTC (permalink / raw)
  To: linux-arm-kernel

Hi, all:

    Seems ARM don's support PCI Domains function now.
Here is a tiny patch for PCI Domains support

    It's work on my platform,
There are two PCIe host controller on my platform, and both bus number
should be 0
So, use PCI Domain to control both PCIe host controller is better choice.

Here is platform PCIe sample code,
static struct hw_pci cxxxxxx_pcie0 __initdata = {
        .swizzle = pci_std_swizzle,
        .map_irq = cxxxxxx_pcie0_map_irq,
        .nr_controllers = 1,
        .nr_domains = 0,
        .setup = cxxxxxx_pci_setup,
        .scan = cxxxxxx_pci_scan_bus,
        .preinit = cxxxxxx_pci_preinit,
        .postinit = cxxxxxx_pcie0_postinit,
};
static struct hw_pci cxxxxxx_pcie1 __initdata = {
        .swizzle = pci_std_swizzle,
        .map_irq = cxxxxxx_pcie1_map_irq,
        .nr_controllers = 1,
        .nr_domains = 1,
        .setup = cxxxxxx_pci_setup,
        .scan = cxxxxxx_pci_scan_bus,
        .postinit = cxxxxxx_pcie1_postinit,
};

static int __init cxxxxxx_pci_init(void)
{
        pci_common_init(&cxxxxxx_pcie0);
        pci_common_init(&cxxxxxx_pcie1);
        return 0;
}


--
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 79a3074..33a49ba 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -865,6 +865,10 @@ config PCI
       your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
       VESA. If you have PCI, say Y, otherwise N.
 
+config PCI_DOMAINS
+        def_bool y
+        depends on PCI
+
 config PCI_SYSCALL
     def_bool PCI
 
diff --git a/arch/arm/include/asm/mach/pci.h
b/arch/arm/include/asm/mach/pci.h
index a38bdc7..f099067 100644
--- a/arch/arm/include/asm/mach/pci.h
+++ b/arch/arm/include/asm/mach/pci.h
@@ -20,6 +20,9 @@ struct hw_pci {
     void        (*postinit)(void);
     u8        (*swizzle)(struct pci_dev *dev, u8 *pin);
     int        (*map_irq)(struct pci_dev *dev, u8 slot, u8 pin);
+#ifdef CONFIG_PCI_DOMAINS
+    int        nr_domains;
+#endif
 };
 
 /*
@@ -37,8 +40,12 @@ struct pci_sys_data {
                     /* IRQ mapping                */
     int        (*map_irq)(struct pci_dev *, u8, u8);
     struct hw_pci    *hw;
+#ifdef CONFIG_PCI_DOMAINS
+    int        domain;
+#endif
 };
 
+
 /*
  * This is the standard PCI-PCI bridge swizzling algorithm.
  */
diff --git a/arch/arm/include/asm/pci.h b/arch/arm/include/asm/pci.h
index 0abf386..57ce5bd 100644
--- a/arch/arm/include/asm/pci.h
+++ b/arch/arm/include/asm/pci.h
@@ -25,6 +25,11 @@ static inline void pcibios_penalize_isa_irq(int irq,
int active)
     /* We don't do dynamic PCI IRQ allocation */
 }
 
+#ifdef CONFIG_PCI_DOMAINS
+int pci_domain_nr(struct pci_bus *bus);
+int pci_proc_domain(struct pci_bus *bus);
+#endif
+
 /*
  * The PCI address space does equal the physical memory address space.
  * The networking and block device layers use this boolean for bounce
diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c
index 8096819..b364ca8 100644
--- a/arch/arm/kernel/bios32.c
+++ b/arch/arm/kernel/bios32.c
@@ -531,6 +531,7 @@ static void __init pcibios_init_hw(struct hw_pci *hw)
         sys->busnr   = busnr;
         sys->swizzle = hw->swizzle;
         sys->map_irq = hw->map_irq;
+        sys->domain  = hw->nr_domains;
         sys->resource[0] = &ioport_resource;
         sys->resource[1] = &iomem_resource;
 
@@ -694,3 +695,20 @@ int pci_mmap_page_range(struct pci_dev *dev, struct
vm_area_struct *vma,
 
     return 0;
 }
+#ifdef CONFIG_PCI_DOMAINS
+int pci_domain_nr(struct pci_bus *bus)
+{
+
+        //struct pci_sysdata *sd = bus->sysdata;
+        struct pci_sys_data *sd = bus->sysdata;
+        return sd->domain;
+
+}
+EXPORT_SYMBOL(pci_domain_nr);
+
+int pci_proc_domain(struct pci_bus *bus)
+{
+        return pci_domain_nr(bus);
+}
+EXPORT_SYMBOL(pci_proc_domain);
+#endif

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [Fwd: [PATCH] PCI Domains Support]
  2009-12-16 14:13 [Fwd: [PATCH] PCI Domains Support] Richard Liu
@ 2009-12-17  0:06 ` Simon Horman
  2009-12-17 13:01   ` [PATCH] PCI Domains Support Richard Liu
  0 siblings, 1 reply; 10+ messages in thread
From: Simon Horman @ 2009-12-17  0:06 UTC (permalink / raw)
  To: linux-arm-kernel

On Wed, Dec 16, 2009 at 10:13:35PM +0800, Richard Liu wrote:
> Hi, all:
> 
>     Seems ARM don's support PCI Domains function now.
> Here is a tiny patch for PCI Domains support
> 
>     It's work on my platform,
> There are two PCIe host controller on my platform, and both bus number
> should be 0
> So, use PCI Domain to control both PCIe host controller is better choice.
> 
> Here is platform PCIe sample code,
> static struct hw_pci cxxxxxx_pcie0 __initdata = {
>         .swizzle = pci_std_swizzle,
>         .map_irq = cxxxxxx_pcie0_map_irq,
>         .nr_controllers = 1,
>         .nr_domains = 0,
>         .setup = cxxxxxx_pci_setup,
>         .scan = cxxxxxx_pci_scan_bus,
>         .preinit = cxxxxxx_pci_preinit,
>         .postinit = cxxxxxx_pcie0_postinit,
> };
> static struct hw_pci cxxxxxx_pcie1 __initdata = {
>         .swizzle = pci_std_swizzle,
>         .map_irq = cxxxxxx_pcie1_map_irq,
>         .nr_controllers = 1,
>         .nr_domains = 1,
>         .setup = cxxxxxx_pci_setup,
>         .scan = cxxxxxx_pci_scan_bus,
>         .postinit = cxxxxxx_pcie1_postinit,
> };
> 
> static int __init cxxxxxx_pci_init(void)
> {
>         pci_common_init(&cxxxxxx_pcie0);
>         pci_common_init(&cxxxxxx_pcie1);
>         return 0;
> }
> 
> 
> --
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 79a3074..33a49ba 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -865,6 +865,10 @@ config PCI
>        your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
>        VESA. If you have PCI, say Y, otherwise N.
>  
> +config PCI_DOMAINS
> +        def_bool y
> +        depends on PCI
> +

The PCI_DOMAINS config variable seems unnecessary to me.

>  config PCI_SYSCALL
>      def_bool PCI
>  
> diff --git a/arch/arm/include/asm/mach/pci.h
> b/arch/arm/include/asm/mach/pci.h
> index a38bdc7..f099067 100644
> --- a/arch/arm/include/asm/mach/pci.h
> +++ b/arch/arm/include/asm/mach/pci.h
> @@ -20,6 +20,9 @@ struct hw_pci {
>      void        (*postinit)(void);
>      u8        (*swizzle)(struct pci_dev *dev, u8 *pin);
>      int        (*map_irq)(struct pci_dev *dev, u8 slot, u8 pin);
> +#ifdef CONFIG_PCI_DOMAINS
> +    int        nr_domains;
> +#endif
>  };
>  
>  /*
> @@ -37,8 +40,12 @@ struct pci_sys_data {
>                      /* IRQ mapping                */
>      int        (*map_irq)(struct pci_dev *, u8, u8);
>      struct hw_pci    *hw;
> +#ifdef CONFIG_PCI_DOMAINS
> +    int        domain;
> +#endif
>  };
>  
> +
>  /*
>   * This is the standard PCI-PCI bridge swizzling algorithm.
>   */
> diff --git a/arch/arm/include/asm/pci.h b/arch/arm/include/asm/pci.h
> index 0abf386..57ce5bd 100644
> --- a/arch/arm/include/asm/pci.h
> +++ b/arch/arm/include/asm/pci.h
> @@ -25,6 +25,11 @@ static inline void pcibios_penalize_isa_irq(int irq,
> int active)
>      /* We don't do dynamic PCI IRQ allocation */
>  }
>  
> +#ifdef CONFIG_PCI_DOMAINS
> +int pci_domain_nr(struct pci_bus *bus);
> +int pci_proc_domain(struct pci_bus *bus);
> +#endif
> +
>  /*
>   * The PCI address space does equal the physical memory address space.
>   * The networking and block device layers use this boolean for bounce
> diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c
> index 8096819..b364ca8 100644
> --- a/arch/arm/kernel/bios32.c
> +++ b/arch/arm/kernel/bios32.c
> @@ -531,6 +531,7 @@ static void __init pcibios_init_hw(struct hw_pci *hw)
>          sys->busnr   = busnr;
>          sys->swizzle = hw->swizzle;
>          sys->map_irq = hw->map_irq;
> +        sys->domain  = hw->nr_domains;
>          sys->resource[0] = &ioport_resource;
>          sys->resource[1] = &iomem_resource;
>  
> @@ -694,3 +695,20 @@ int pci_mmap_page_range(struct pci_dev *dev, struct
> vm_area_struct *vma,
>  
>      return 0;
>  }
> +#ifdef CONFIG_PCI_DOMAINS
> +int pci_domain_nr(struct pci_bus *bus)
> +{
> +
> +        //struct pci_sysdata *sd = bus->sysdata;

	Should the line above should be removed?
	It seems to be noise.

> +        struct pci_sys_data *sd = bus->sysdata;
> +        return sd->domain;
> +
> +}
> +EXPORT_SYMBOL(pci_domain_nr);
> +
> +int pci_proc_domain(struct pci_bus *bus)
> +{
> +        return pci_domain_nr(bus);
> +}
> +EXPORT_SYMBOL(pci_proc_domain);
> +#endif
> 
> 
> 
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH] PCI Domains Support
  2009-12-17  0:06 ` Simon Horman
@ 2009-12-17 13:01   ` Richard Liu
  2009-12-20  1:27     ` Simon Horman
  0 siblings, 1 reply; 10+ messages in thread
From: Richard Liu @ 2009-12-17 13:01 UTC (permalink / raw)
  To: linux-arm-kernel

Dear Simon:

Simon Horman wrote:
> On Wed, Dec 16, 2009 at 10:13:35PM +0800, Richard Liu wrote:
>   
>> Hi, all:
>>
>>     Seems ARM don's support PCI Domains function now.
>> Here is a tiny patch for PCI Domains support
>>
>>     It's work on my platform,
>> There are two PCIe host controller on my platform, and both bus number
>> should be 0
>> So, use PCI Domain to control both PCIe host controller is better choice.
>>
>> Here is platform PCIe sample code,
>> static struct hw_pci cxxxxxx_pcie0 __initdata = {
>>         .swizzle = pci_std_swizzle,
>>         .map_irq = cxxxxxx_pcie0_map_irq,
>>         .nr_controllers = 1,
>>         .nr_domains = 0,
>>         .setup = cxxxxxx_pci_setup,
>>         .scan = cxxxxxx_pci_scan_bus,
>>         .preinit = cxxxxxx_pci_preinit,
>>         .postinit = cxxxxxx_pcie0_postinit,
>> };
>> static struct hw_pci cxxxxxx_pcie1 __initdata = {
>>         .swizzle = pci_std_swizzle,
>>         .map_irq = cxxxxxx_pcie1_map_irq,
>>         .nr_controllers = 1,
>>         .nr_domains = 1,
>>         .setup = cxxxxxx_pci_setup,
>>         .scan = cxxxxxx_pci_scan_bus,
>>         .postinit = cxxxxxx_pcie1_postinit,
>> };
>>
>> static int __init cxxxxxx_pci_init(void)
>> {
>>         pci_common_init(&cxxxxxx_pcie0);
>>         pci_common_init(&cxxxxxx_pcie1);
>>         return 0;
>> }
>>
>>
>> --
>> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
>> index 79a3074..33a49ba 100644
>> --- a/arch/arm/Kconfig
>> +++ b/arch/arm/Kconfig
>> @@ -865,6 +865,10 @@ config PCI
>>        your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
>>        VESA. If you have PCI, say Y, otherwise N.
>>  
>> +config PCI_DOMAINS
>> +        def_bool y
>> +        depends on PCI
>> +
>>     
>
> The PCI_DOMAINS config variable seems unnecessary to me.
>   
ARM is a highly custom platform, just reverse for other platform add
their code,
Some platforms might need PCI domains, but some platforms not.
>   
>>  config PCI_SYSCALL
>>      def_bool PCI
>>  
>> diff --git a/arch/arm/include/asm/mach/pci.h
>> b/arch/arm/include/asm/mach/pci.h
>> index a38bdc7..f099067 100644
>> --- a/arch/arm/include/asm/mach/pci.h
>> +++ b/arch/arm/include/asm/mach/pci.h
>> @@ -20,6 +20,9 @@ struct hw_pci {
>>      void        (*postinit)(void);
>>      u8        (*swizzle)(struct pci_dev *dev, u8 *pin);
>>      int        (*map_irq)(struct pci_dev *dev, u8 slot, u8 pin);
>> +#ifdef CONFIG_PCI_DOMAINS
>> +    int        nr_domains;
>> +#endif
>>  };
>>  
>>  /*
>> @@ -37,8 +40,12 @@ struct pci_sys_data {
>>                      /* IRQ mapping                */
>>      int        (*map_irq)(struct pci_dev *, u8, u8);
>>      struct hw_pci    *hw;
>> +#ifdef CONFIG_PCI_DOMAINS
>> +    int        domain;
>> +#endif
>>  };
>>  
>> +
>>  /*
>>   * This is the standard PCI-PCI bridge swizzling algorithm.
>>   */
>> diff --git a/arch/arm/include/asm/pci.h b/arch/arm/include/asm/pci.h
>> index 0abf386..57ce5bd 100644
>> --- a/arch/arm/include/asm/pci.h
>> +++ b/arch/arm/include/asm/pci.h
>> @@ -25,6 +25,11 @@ static inline void pcibios_penalize_isa_irq(int irq,
>> int active)
>>      /* We don't do dynamic PCI IRQ allocation */
>>  }
>>  
>> +#ifdef CONFIG_PCI_DOMAINS
>> +int pci_domain_nr(struct pci_bus *bus);
>> +int pci_proc_domain(struct pci_bus *bus);
>> +#endif
>> +
>>  /*
>>   * The PCI address space does equal the physical memory address space.
>>   * The networking and block device layers use this boolean for bounce
>> diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c
>> index 8096819..b364ca8 100644
>> --- a/arch/arm/kernel/bios32.c
>> +++ b/arch/arm/kernel/bios32.c
>> @@ -531,6 +531,7 @@ static void __init pcibios_init_hw(struct hw_pci *hw)
>>          sys->busnr   = busnr;
>>          sys->swizzle = hw->swizzle;
>>          sys->map_irq = hw->map_irq;
>> +        sys->domain  = hw->nr_domains;
>>          sys->resource[0] = &ioport_resource;
>>          sys->resource[1] = &iomem_resource;
>>  
>> @@ -694,3 +695,20 @@ int pci_mmap_page_range(struct pci_dev *dev, struct
>> vm_area_struct *vma,
>>  
>>      return 0;
>>  }
>> +#ifdef CONFIG_PCI_DOMAINS
>> +int pci_domain_nr(struct pci_bus *bus)
>> +{
>> +
>> +        //struct pci_sysdata *sd = bus->sysdata;
>>     
>
> 	Should the line above should be removed?
> 	It seems to be noise.
>   
Yes,
I am sorry that I forget remove it when I review it.

>   
>> +        struct pci_sys_data *sd = bus->sysdata;
>> +        return sd->domain;
>> +
>> +}
>> +EXPORT_SYMBOL(pci_domain_nr);
>> +
>> +int pci_proc_domain(struct pci_bus *bus)
>> +{
>> +        return pci_domain_nr(bus);
>> +}
>> +EXPORT_SYMBOL(pci_proc_domain);
>> +#endif
>>
>>
>>
>>
>>
>> _______________________________________________
>> linux-arm-kernel mailing list
>> linux-arm-kernel at lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>>     
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
>   

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20091217/4c5d4bf4/attachment-0001.htm>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH] PCI Domains Support
  2009-12-17 13:01   ` [PATCH] PCI Domains Support Richard Liu
@ 2009-12-20  1:27     ` Simon Horman
  2009-12-21  6:00       ` Richard Liu
  0 siblings, 1 reply; 10+ messages in thread
From: Simon Horman @ 2009-12-20  1:27 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Dec 17, 2009 at 09:01:06PM +0800, Richard Liu wrote:
> Dear Simon:
> 
> Simon Horman wrote:

[snip]

> >> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> >> index 79a3074..33a49ba 100644
> >> --- a/arch/arm/Kconfig
> >> +++ b/arch/arm/Kconfig
> >> @@ -865,6 +865,10 @@ config PCI
> >>        your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
> >>        VESA. If you have PCI, say Y, otherwise N.
> >>  
> >> +config PCI_DOMAINS
> >> +        def_bool y
> >> +        depends on PCI
> >> +
> >>     
> >
> > The PCI_DOMAINS config variable seems unnecessary to me.
> >   
> ARM is a highly custom platform, just reverse for other platform add
> their code,
> Some platforms might need PCI domains, but some platforms not.

Understood. Do you have any platforms in mind that wouldn't want
PCI domains? I was just thinking that perhaps PCI_DOMAINS could be added
later as needed, reducing noise in the code until the need arises.
But perhaps I'm reading the situation incorrectly.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH] PCI Domains Support
  2009-12-20  1:27     ` Simon Horman
@ 2009-12-21  6:00       ` Richard Liu
  2009-12-22  4:55         ` Simon Horman
  0 siblings, 1 reply; 10+ messages in thread
From: Richard Liu @ 2009-12-21  6:00 UTC (permalink / raw)
  To: linux-arm-kernel

Simon Horman wrote:
> On Thu, Dec 17, 2009 at 09:01:06PM +0800, Richard Liu wrote:
>   
>> Dear Simon:
>>
>> Simon Horman wrote:  
>>     
>> ARM is a highly custom platform, just reverse for other platform add
>> their code,
>> Some platforms might need PCI domains, but some platforms not.
>>     
>
> Understood. Do you have any platforms in mind that wouldn't want
> PCI domains? I was just thinking that perhaps PCI_DOMAINS could be added
> later as needed, reducing noise in the code until the need arises.
> But perhaps I'm reading the situation incorrectly.
>   
Actually, most ARM platforms didn't need PCI domains.

So, original patch is

+config PCI_DOMAINS
+        def_bool y
+        depends on PCI && ARCH_CXXXXXX
+

But I removed the "&& ARCH_CXXXXXXX" before I provided the patch.
Because ARCH_CXXXXXXX is not exist in ARM Linux kernel now (maybe it
would be committed at someday)

I traced other ARM platforms,
some platforms like Marvell Orion5x seems has both PCI and PCIe host
controller,
Maybe they can use PCI domain to control their PCI/PCIe host controller.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20091221/2622c2af/attachment-0001.htm>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH] PCI Domains Support
  2009-12-21  6:00       ` Richard Liu
@ 2009-12-22  4:55         ` Simon Horman
  2009-12-25 21:58           ` Richard Liu
  0 siblings, 1 reply; 10+ messages in thread
From: Simon Horman @ 2009-12-22  4:55 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Dec 21, 2009 at 02:00:25PM +0800, Richard Liu wrote:
> Simon Horman wrote:
> > On Thu, Dec 17, 2009 at 09:01:06PM +0800, Richard Liu wrote:
> >   
> >> Dear Simon:
> >>
> >> Simon Horman wrote:  
> >>     
> >> ARM is a highly custom platform, just reverse for other platform add
> >> their code,
> >> Some platforms might need PCI domains, but some platforms not.
> >>     
> >
> > Understood. Do you have any platforms in mind that wouldn't want
> > PCI domains? I was just thinking that perhaps PCI_DOMAINS could be added
> > later as needed, reducing noise in the code until the need arises.
> > But perhaps I'm reading the situation incorrectly.
> >   
> Actually, most ARM platforms didn't need PCI domains.
> 
> So, original patch is
> 
> +config PCI_DOMAINS
> +        def_bool y
> +        depends on PCI && ARCH_CXXXXXX
> +
>
> But I removed the "&& ARCH_CXXXXXXX" before I provided the patch.
> Because ARCH_CXXXXXXX is not exist in ARM Linux kernel now (maybe it
> would be committed at someday)

Ok, now I am completely confused. Nothing currently in-tree should
use PCI_DOMAINS, but it defaults to y and nothing switches it to n?

Perhaps the following would be more appropriate:

config PCI_DOMAINS
        bool

And then platforms can "select PCI_DOMAINS" as needed.

> I traced other ARM platforms,
> some platforms like Marvell Orion5x seems has both PCI and PCIe host
> controller,
> Maybe they can use PCI domain to control their PCI/PCIe host controller.
> 
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH] PCI Domains Support
  2009-12-25 21:58           ` Richard Liu
@ 2009-12-23  4:07             ` Simon Horman
  2009-12-31  3:37               ` Richard Liu
  0 siblings, 1 reply; 10+ messages in thread
From: Simon Horman @ 2009-12-23  4:07 UTC (permalink / raw)
  To: linux-arm-kernel

On Sat, Dec 26, 2009 at 05:58:05AM +0800, Richard Liu wrote:
> Simon Horman wrote:
> >> Actually, most ARM platforms didn't need PCI domains.
> >>
> >> So, original patch is
> >>
> >> +config PCI_DOMAINS
> >> +        def_bool y
> >> +        depends on PCI && ARCH_CXXXXXX
> >> +
> >>
> >> But I removed the "&& ARCH_CXXXXXXX" before I provided the patch.
> >> Because ARCH_CXXXXXXX is not exist in ARM Linux kernel now (maybe it
> >> would be committed at someday)
> >>     
> >
> > Ok, now I am completely confused. Nothing currently in-tree should
> > use PCI_DOMAINS, but it defaults to y and nothing switches it to n?
> >
> > Perhaps the following would be more appropriate:
> >
> > config PCI_DOMAINS
> >         bool
> >
> > And then platforms can "select PCI_DOMAINS" as needed.
> >
> >   
> You are right,
> Don't use def_bool is right choice.
> 
> I only maintain one arch, so I didn't think too much.
> 
> Should I regenerate a new patch, or you will handle it ?
> 
> 

I think it would be best if you regenerated your patch.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH] PCI Domains Support
  2009-12-22  4:55         ` Simon Horman
@ 2009-12-25 21:58           ` Richard Liu
  2009-12-23  4:07             ` Simon Horman
  0 siblings, 1 reply; 10+ messages in thread
From: Richard Liu @ 2009-12-25 21:58 UTC (permalink / raw)
  To: linux-arm-kernel

Simon Horman wrote:
>> Actually, most ARM platforms didn't need PCI domains.
>>
>> So, original patch is
>>
>> +config PCI_DOMAINS
>> +        def_bool y
>> +        depends on PCI && ARCH_CXXXXXX
>> +
>>
>> But I removed the "&& ARCH_CXXXXXXX" before I provided the patch.
>> Because ARCH_CXXXXXXX is not exist in ARM Linux kernel now (maybe it
>> would be committed at someday)
>>     
>
> Ok, now I am completely confused. Nothing currently in-tree should
> use PCI_DOMAINS, but it defaults to y and nothing switches it to n?
>
> Perhaps the following would be more appropriate:
>
> config PCI_DOMAINS
>         bool
>
> And then platforms can "select PCI_DOMAINS" as needed.
>
>   
You are right,
Don't use def_bool is right choice.

I only maintain one arch, so I didn't think too much.

Should I regenerate a new patch, or you will handle it ?


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20091226/b630705f/attachment-0001.htm>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH] PCI Domains Support
  2009-12-23  4:07             ` Simon Horman
@ 2009-12-31  3:37               ` Richard Liu
  2009-12-31  4:36                 ` Simon Horman
  0 siblings, 1 reply; 10+ messages in thread
From: Richard Liu @ 2009-12-31  3:37 UTC (permalink / raw)
  To: linux-arm-kernel

Dear Simon:

    Regenerate the patch.

--
 arch/arm/Kconfig                |    3 +++
 arch/arm/include/asm/mach/pci.h |    6 ++++++
 arch/arm/include/asm/pci.h      |    5 +++++
 arch/arm/kernel/bios32.c        |   17 +++++++++++++++++
 4 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 233a222..cd3756c 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -957,6 +957,9 @@ config PCI
       your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
       VESA. If you have PCI, say Y, otherwise N.
 
+config PCI_DOMAINS
+        depends on PCI
+
 config PCI_SYSCALL
     def_bool PCI
 
diff --git a/arch/arm/include/asm/mach/pci.h
b/arch/arm/include/asm/mach/pci.h
index a38bdc7..e6f3ad7 100644
--- a/arch/arm/include/asm/mach/pci.h
+++ b/arch/arm/include/asm/mach/pci.h
@@ -20,6 +20,9 @@ struct hw_pci {
     void        (*postinit)(void);
     u8        (*swizzle)(struct pci_dev *dev, u8 *pin);
     int        (*map_irq)(struct pci_dev *dev, u8 slot, u8 pin);
+#ifdef CONFIG_PCI_DOMAINS
+    int        nr_domains;
+#endif
 };
 
 /*
@@ -37,6 +40,9 @@ struct pci_sys_data {
                     /* IRQ mapping                */
     int        (*map_irq)(struct pci_dev *, u8, u8);
     struct hw_pci    *hw;
+#ifdef CONFIG_PCI_DOMAINS
+    int        domain;
+#endif
 };
 
 /*
diff --git a/arch/arm/include/asm/pci.h b/arch/arm/include/asm/pci.h
index 226cddd..6937d58 100644
--- a/arch/arm/include/asm/pci.h
+++ b/arch/arm/include/asm/pci.h
@@ -23,6 +23,11 @@ static inline void pcibios_penalize_isa_irq(int irq,
int active)
     /* We don't do dynamic PCI IRQ allocation */
 }
 
+#ifdef CONFIG_PCI_DOMAINS
+int pci_domain_nr(struct pci_bus *bus);
+int pci_proc_domain(struct pci_bus *bus);
+#endif
+
 /*
  * The PCI address space does equal the physical memory address space.
  * The networking and block device layers use this boolean for bounce
diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c
index 8096819..3a784a1 100644
--- a/arch/arm/kernel/bios32.c
+++ b/arch/arm/kernel/bios32.c
@@ -531,6 +531,7 @@ static void __init pcibios_init_hw(struct hw_pci *hw)
         sys->busnr   = busnr;
         sys->swizzle = hw->swizzle;
         sys->map_irq = hw->map_irq;
+        sys->domain  = hw->nr_domains;
         sys->resource[0] = &ioport_resource;
         sys->resource[1] = &iomem_resource;
 
@@ -694,3 +695,19 @@ int pci_mmap_page_range(struct pci_dev *dev, struct
vm_area_struct *vma,
 
     return 0;
 }
+#ifdef CONFIG_PCI_DOMAINS
+int pci_domain_nr(struct pci_bus *bus)
+{
+
+        struct pci_sys_data *sd = bus->sysdata;
+        return sd->domain;
+
+}
+EXPORT_SYMBOL(pci_domain_nr);
+
+int pci_proc_domain(struct pci_bus *bus)
+{
+        return pci_domain_nr(bus);
+}
+EXPORT_SYMBOL(pci_proc_domain);
+#endif

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH] PCI Domains Support
  2009-12-31  3:37               ` Richard Liu
@ 2009-12-31  4:36                 ` Simon Horman
  0 siblings, 0 replies; 10+ messages in thread
From: Simon Horman @ 2009-12-31  4:36 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Dec 31, 2009 at 11:37:10AM +0800, Richard Liu wrote:
> Dear Simon:
> 
>     Regenerate the patch.

Thanks, looks good.

Acked-by: Simon Horman <horms@verge.net.au>

> 
> --
>  arch/arm/Kconfig                |    3 +++
>  arch/arm/include/asm/mach/pci.h |    6 ++++++
>  arch/arm/include/asm/pci.h      |    5 +++++
>  arch/arm/kernel/bios32.c        |   17 +++++++++++++++++
>  4 files changed, 31 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 233a222..cd3756c 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -957,6 +957,9 @@ config PCI
>        your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
>        VESA. If you have PCI, say Y, otherwise N.
>  
> +config PCI_DOMAINS
> +        depends on PCI
> +
>  config PCI_SYSCALL
>      def_bool PCI
>  
> diff --git a/arch/arm/include/asm/mach/pci.h
> b/arch/arm/include/asm/mach/pci.h
> index a38bdc7..e6f3ad7 100644
> --- a/arch/arm/include/asm/mach/pci.h
> +++ b/arch/arm/include/asm/mach/pci.h
> @@ -20,6 +20,9 @@ struct hw_pci {
>      void        (*postinit)(void);
>      u8        (*swizzle)(struct pci_dev *dev, u8 *pin);
>      int        (*map_irq)(struct pci_dev *dev, u8 slot, u8 pin);
> +#ifdef CONFIG_PCI_DOMAINS
> +    int        nr_domains;
> +#endif
>  };
>  
>  /*
> @@ -37,6 +40,9 @@ struct pci_sys_data {
>                      /* IRQ mapping                */
>      int        (*map_irq)(struct pci_dev *, u8, u8);
>      struct hw_pci    *hw;
> +#ifdef CONFIG_PCI_DOMAINS
> +    int        domain;
> +#endif
>  };
>  
>  /*
> diff --git a/arch/arm/include/asm/pci.h b/arch/arm/include/asm/pci.h
> index 226cddd..6937d58 100644
> --- a/arch/arm/include/asm/pci.h
> +++ b/arch/arm/include/asm/pci.h
> @@ -23,6 +23,11 @@ static inline void pcibios_penalize_isa_irq(int irq,
> int active)
>      /* We don't do dynamic PCI IRQ allocation */
>  }
>  
> +#ifdef CONFIG_PCI_DOMAINS
> +int pci_domain_nr(struct pci_bus *bus);
> +int pci_proc_domain(struct pci_bus *bus);
> +#endif
> +
>  /*
>   * The PCI address space does equal the physical memory address space.
>   * The networking and block device layers use this boolean for bounce
> diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c
> index 8096819..3a784a1 100644
> --- a/arch/arm/kernel/bios32.c
> +++ b/arch/arm/kernel/bios32.c
> @@ -531,6 +531,7 @@ static void __init pcibios_init_hw(struct hw_pci *hw)
>          sys->busnr   = busnr;
>          sys->swizzle = hw->swizzle;
>          sys->map_irq = hw->map_irq;
> +        sys->domain  = hw->nr_domains;
>          sys->resource[0] = &ioport_resource;
>          sys->resource[1] = &iomem_resource;
>  
> @@ -694,3 +695,19 @@ int pci_mmap_page_range(struct pci_dev *dev, struct
> vm_area_struct *vma,
>  
>      return 0;
>  }
> +#ifdef CONFIG_PCI_DOMAINS
> +int pci_domain_nr(struct pci_bus *bus)
> +{
> +
> +        struct pci_sys_data *sd = bus->sysdata;
> +        return sd->domain;
> +
> +}
> +EXPORT_SYMBOL(pci_domain_nr);
> +
> +int pci_proc_domain(struct pci_bus *bus)
> +{
> +        return pci_domain_nr(bus);
> +}
> +EXPORT_SYMBOL(pci_proc_domain);
> +#endif
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2009-12-31  4:36 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-12-16 14:13 [Fwd: [PATCH] PCI Domains Support] Richard Liu
2009-12-17  0:06 ` Simon Horman
2009-12-17 13:01   ` [PATCH] PCI Domains Support Richard Liu
2009-12-20  1:27     ` Simon Horman
2009-12-21  6:00       ` Richard Liu
2009-12-22  4:55         ` Simon Horman
2009-12-25 21:58           ` Richard Liu
2009-12-23  4:07             ` Simon Horman
2009-12-31  3:37               ` Richard Liu
2009-12-31  4:36                 ` Simon Horman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).