Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1322064 > unrolled thread
| Started by | Bjorn Helgaas <helgaas@kernel.org> |
|---|---|
| First post | 2016-01-29 21:50 +0100 |
| Last post | 2016-02-01 10:40 +0100 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: [PATCH v6 1/2] PCI support added to ARC Bjorn Helgaas <helgaas@kernel.org> - 2016-01-29 21:50 +0100
Re: [PATCH v6 1/2] PCI support added to ARC Joao Pinto <Joao.Pinto@synopsys.com> - 2016-02-01 10:40 +0100
| From | Bjorn Helgaas <helgaas@kernel.org> |
|---|---|
| Date | 2016-01-29 21:50 +0100 |
| Subject | Re: [PATCH v6 1/2] PCI support added to ARC |
| Message-ID | <qWo9r-eo-1@gated-at.bofh.it> |
Hi Joao,
Trivial nits below; I wouldn't even mention them if you weren't making
a few updates to the other patch.
On Thu, Jan 14, 2016 at 11:04:32AM +0000, Joao Pinto wrote:
> This patch adds PCI support to ARC and updates drivers/pci Makefile
> enabling the ARC arch to use the generic PCI setup functions.
>
> Signed-off-by: Joao Pinto <jpinto@synopsys.com>
> ---
> Change v5 -> v6 (Vineet Gupta):
> - Removed EXPORT_SYMBOL(pcibios_fixup_bus) from pcibios.c
> Change v4 -> v5 (Vineet Gupta):
> - pcibios.c unused functions, variables and includes were removed
> - ioremap.c has no need for changes (no patch is necessary)
> - pci.h unused functions and variables were removed
> Change v3 -> v4:
> - Nothing changed (just to keep up with patch set version).
> Change v2 -> v3 (Bjorn Helgaas):
> - arch/arc/kernel/pcibios.c unused functions were removed and also the
> arch/arc/include/asm/mach/pci.h was removed because was no longer necessary
> Change v1 -> v2:
> - In arch/arc/Kconfig, the new menu entry (Bus Configuration) was moved to the
> slot between sourcing of drivers/Kconfig and fs/Kconfig (Vineet Gupta)
> - In arch/arc/plat-axs10x/Kconfig the "select MIGHT_HAVE_PCI" option was placed
> in order as suggested (Vineet Gupta)
> - ioport_map() and ioport_unmap() were static inlined and included in
> the io.h (Vineet Gupta)
> - pcibios_min_io and pcibios_min_mem declaration moved to
> pcibios.c (Vineet Gupta)
> - pr_err() replaced by dev_err() in pcibios_enable_device() (Bjorn Helgaas)
> - string simplified in pcibios_enable_device() (Vineet Gupta)
> - pci_host_bridge_window structure was replaced by resource_entry structure, and
> list_for_each_entry() for resource_list_for_each_entry() in pcibios.c
>
> arch/arc/Kconfig | 23 +++++++++++++++++++++++
> arch/arc/include/asm/dma.h | 5 +++++
> arch/arc/include/asm/io.h | 9 +++++++++
> arch/arc/include/asm/pci.h | 31 +++++++++++++++++++++++++++++++
> arch/arc/kernel/Makefile | 1 +
> arch/arc/kernel/pcibios.c | 23 ++++++++++++++++++++++++
> arch/arc/plat-axs10x/Kconfig | 1 +
> drivers/pci/Makefile | 1 +
> 8 files changed, 95 insertions(+)
> create mode 100644 arch/arc/include/asm/pci.h
> create mode 100644 arch/arc/kernel/pcibios.c
>
> diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
> index 2c2ac3f..98b32c1 100644
> --- a/arch/arc/Kconfig
> +++ b/arch/arc/Kconfig
> @@ -19,6 +19,7 @@ config ARC
> select GENERIC_FIND_FIRST_BIT
> # for now, we don't need GENERIC_IRQ_PROBE, CONFIG_GENERIC_IRQ_CHIP
> select GENERIC_IRQ_SHOW
> + select GENERIC_PCI_IOMAP
> select GENERIC_PENDING_IRQ if SMP
> select GENERIC_SMP_IDLE_THREAD
> select HAVE_ARCH_KGDB
> @@ -39,6 +40,9 @@ config ARC
> select PERF_USE_VMALLOC
> select HAVE_DEBUG_STACKOVERFLOW
>
> +config MIGHT_HAVE_PCI
> + bool
> +
> config TRACE_IRQFLAGS_SUPPORT
> def_bool y
>
> @@ -570,6 +574,25 @@ endmenu # "ARC Architecture Configuration"
> source "mm/Kconfig"
> source "net/Kconfig"
> source "drivers/Kconfig"
> +
> +menu "Bus Support"
> +
> +config PCI
> + bool "PCI support" if MIGHT_HAVE_PCI
> + help
> + PCI is the name of a bus system, i.e. the way the CPU talks to the other stuff inside
> + your box.Find out if your board/platform have PCI.
> + Note: PCIE support for Synopsys Device will be available only when
> + HAPS DX is configured with PCIE RC bitmap. If you have PCI, say Y, otherwise N.
> +
> +config PCI_SYSCALL
> + def_bool PCI
> +
> +source "drivers/pci/Kconfig"
> +source "drivers/pci/pcie/Kconfig"
> +
> +endmenu
> +
> source "fs/Kconfig"
> source "arch/arc/Kconfig.debug"
> source "security/Kconfig"
> diff --git a/arch/arc/include/asm/dma.h b/arch/arc/include/asm/dma.h
> index ca7c451..37942fa 100644
> --- a/arch/arc/include/asm/dma.h
> +++ b/arch/arc/include/asm/dma.h
> @@ -10,5 +10,10 @@
> #define ASM_ARC_DMA_H
>
> #define MAX_DMA_ADDRESS 0xC0000000
> +#ifdef CONFIG_PCI
> +extern int isa_dma_bridge_buggy;
> +#else
> +#define isa_dma_bridge_buggy (0)
No parens needed around "0".
> +#endif
>
> #endif
> diff --git a/arch/arc/include/asm/io.h b/arch/arc/include/asm/io.h
> index 694ece8..947bf0c 100644
> --- a/arch/arc/include/asm/io.h
> +++ b/arch/arc/include/asm/io.h
> @@ -16,6 +16,15 @@
> extern void __iomem *ioremap(unsigned long physaddr, unsigned long size);
> extern void __iomem *ioremap_prot(phys_addr_t offset, unsigned long size,
> unsigned long flags);
> +static inline void __iomem *ioport_map(unsigned long port, unsigned int nr)
> +{
> + return (void __iomem *)port;
> +}
> +
> +static inline void ioport_unmap(void __iomem *addr)
> +{
> +}
> +
> extern void iounmap(const void __iomem *addr);
>
> #define ioremap_nocache(phy, sz) ioremap(phy, sz)
> diff --git a/arch/arc/include/asm/pci.h b/arch/arc/include/asm/pci.h
> new file mode 100644
> index 0000000..2f091e1
> --- /dev/null
> +++ b/arch/arc/include/asm/pci.h
> @@ -0,0 +1,31 @@
> +/*
> + * Copyright (C) 2015-2016 Synopsys, Inc. (www.synopsys.com)
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + */
> +
> +#ifndef _ASM_ARC_PCI_H
> +#define _ASM_ARC_PCI_H
> +
> +#ifdef __KERNEL__
> +#include <asm-generic/pci-dma-compat.h>
> +#include <asm-generic/pci-bridge.h>
> +
> +#include <linux/ioport.h>
> +
> +#define PCIBIOS_MIN_IO 0x100
> +#define PCIBIOS_MIN_MEM 0x100000
> +
> +#define pcibios_assign_all_busses() 1
> +/*
> + * The PCI address space does equal the physical memory address space.
> + * The networking and block device layers use this boolean for bounce
> + * buffer decisions.
> + */
> +#define PCI_DMA_BUS_IS_PHYS (1)
Or around "1".
> +
> +#endif /* __KERNEL__ */
> +
> +#endif /* _ASM_ARC_PCI_H */
> diff --git a/arch/arc/kernel/Makefile b/arch/arc/kernel/Makefile
> index e7f3625..1bc2036 100644
> --- a/arch/arc/kernel/Makefile
> +++ b/arch/arc/kernel/Makefile
> @@ -12,6 +12,7 @@ obj-y := arcksyms.o setup.o irq.o time.o reset.o ptrace.o process.o devtree.o
> obj-y += signal.o traps.o sys.o troubleshoot.o stacktrace.o disasm.o clk.o
> obj-$(CONFIG_ISA_ARCOMPACT) += entry-compact.o intc-compact.o
> obj-$(CONFIG_ISA_ARCV2) += entry-arcv2.o intc-arcv2.o
> +obj-$(CONFIG_PCI) += pcibios.o
>
> obj-$(CONFIG_MODULES) += arcksyms.o module.o
> obj-$(CONFIG_SMP) += smp.o
> diff --git a/arch/arc/kernel/pcibios.c b/arch/arc/kernel/pcibios.c
> new file mode 100644
> index 0000000..12ea45a
> --- /dev/null
> +++ b/arch/arc/kernel/pcibios.c
> @@ -0,0 +1,23 @@
> +/*
> + * Copyright (C) 2014-2015 Synopsys, Inc. (www.synopsys.com)
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + */
> +
> +#include <linux/pci.h>
> +
> +/*
> + * We don't have to worry about legacy ISA devices, so nothing to do here
> + */
> +resource_size_t pcibios_align_resource(void *data, const struct resource *res,
> + resource_size_t size, resource_size_t align)
> +{
> + return res->start;
> +}
> +
> +void pcibios_fixup_bus(struct pci_bus *bus)
> +{
> +}
> diff --git a/arch/arc/plat-axs10x/Kconfig b/arch/arc/plat-axs10x/Kconfig
> index d475f9d..426ac4b 100644
> --- a/arch/arc/plat-axs10x/Kconfig
> +++ b/arch/arc/plat-axs10x/Kconfig
> @@ -11,6 +11,7 @@ menuconfig ARC_PLAT_AXS10X
> select DW_APB_ICTL
> select GPIO_DWAPB
> select OF_GPIO
> + select MIGHT_HAVE_PCI
> select GENERIC_IRQ_CHIP
> select ARCH_REQUIRE_GPIOLIB
> help
> diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile
> index be3f631..2154092 100644
> --- a/drivers/pci/Makefile
> +++ b/drivers/pci/Makefile
> @@ -32,6 +32,7 @@ obj-$(CONFIG_PCI_IOV) += iov.o
> # Some architectures use the generic PCI setup functions
> #
> obj-$(CONFIG_ALPHA) += setup-irq.o
> +obj-$(CONFIG_ARC) += setup-irq.o
> obj-$(CONFIG_ARM) += setup-irq.o
> obj-$(CONFIG_ARM64) += setup-irq.o
> obj-$(CONFIG_UNICORE32) += setup-irq.o
> --
> 1.8.1.5
[toc] | [next] | [standalone]
| From | Joao Pinto <Joao.Pinto@synopsys.com> |
|---|---|
| Date | 2016-02-01 10:40 +0100 |
| Message-ID | <qXj7I-Bb-13@gated-at.bofh.it> |
| In reply to | #1322064 |
Hi Bjorn,
Thank you for the review. I am going to update the needed points and send a new
patch version until tomorrow.
Joao
On 1/29/2016 8:40 PM, Bjorn Helgaas wrote:
> Hi Joao,
>
> Trivial nits below; I wouldn't even mention them if you weren't making
> a few updates to the other patch.
>
> On Thu, Jan 14, 2016 at 11:04:32AM +0000, Joao Pinto wrote:
>> This patch adds PCI support to ARC and updates drivers/pci Makefile
>> enabling the ARC arch to use the generic PCI setup functions.
>>
>> Signed-off-by: Joao Pinto <jpinto@synopsys.com>
>> ---
>> Change v5 -> v6 (Vineet Gupta):
>> - Removed EXPORT_SYMBOL(pcibios_fixup_bus) from pcibios.c
>> Change v4 -> v5 (Vineet Gupta):
>> - pcibios.c unused functions, variables and includes were removed
>> - ioremap.c has no need for changes (no patch is necessary)
>> - pci.h unused functions and variables were removed
>> Change v3 -> v4:
>> - Nothing changed (just to keep up with patch set version).
>> Change v2 -> v3 (Bjorn Helgaas):
>> - arch/arc/kernel/pcibios.c unused functions were removed and also the
>> arch/arc/include/asm/mach/pci.h was removed because was no longer necessary
>> Change v1 -> v2:
>> - In arch/arc/Kconfig, the new menu entry (Bus Configuration) was moved to the
>> slot between sourcing of drivers/Kconfig and fs/Kconfig (Vineet Gupta)
>> - In arch/arc/plat-axs10x/Kconfig the "select MIGHT_HAVE_PCI" option was placed
>> in order as suggested (Vineet Gupta)
>> - ioport_map() and ioport_unmap() were static inlined and included in
>> the io.h (Vineet Gupta)
>> - pcibios_min_io and pcibios_min_mem declaration moved to
>> pcibios.c (Vineet Gupta)
>> - pr_err() replaced by dev_err() in pcibios_enable_device() (Bjorn Helgaas)
>> - string simplified in pcibios_enable_device() (Vineet Gupta)
>> - pci_host_bridge_window structure was replaced by resource_entry structure, and
>> list_for_each_entry() for resource_list_for_each_entry() in pcibios.c
>>
>> arch/arc/Kconfig | 23 +++++++++++++++++++++++
>> arch/arc/include/asm/dma.h | 5 +++++
>> arch/arc/include/asm/io.h | 9 +++++++++
>> arch/arc/include/asm/pci.h | 31 +++++++++++++++++++++++++++++++
>> arch/arc/kernel/Makefile | 1 +
>> arch/arc/kernel/pcibios.c | 23 ++++++++++++++++++++++++
>> arch/arc/plat-axs10x/Kconfig | 1 +
>> drivers/pci/Makefile | 1 +
>> 8 files changed, 95 insertions(+)
>> create mode 100644 arch/arc/include/asm/pci.h
>> create mode 100644 arch/arc/kernel/pcibios.c
>>
>> diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
>> index 2c2ac3f..98b32c1 100644
>> --- a/arch/arc/Kconfig
>> +++ b/arch/arc/Kconfig
>> @@ -19,6 +19,7 @@ config ARC
>> select GENERIC_FIND_FIRST_BIT
>> # for now, we don't need GENERIC_IRQ_PROBE, CONFIG_GENERIC_IRQ_CHIP
>> select GENERIC_IRQ_SHOW
>> + select GENERIC_PCI_IOMAP
>> select GENERIC_PENDING_IRQ if SMP
>> select GENERIC_SMP_IDLE_THREAD
>> select HAVE_ARCH_KGDB
>> @@ -39,6 +40,9 @@ config ARC
>> select PERF_USE_VMALLOC
>> select HAVE_DEBUG_STACKOVERFLOW
>>
>> +config MIGHT_HAVE_PCI
>> + bool
>> +
>> config TRACE_IRQFLAGS_SUPPORT
>> def_bool y
>>
>> @@ -570,6 +574,25 @@ endmenu # "ARC Architecture Configuration"
>> source "mm/Kconfig"
>> source "net/Kconfig"
>> source "drivers/Kconfig"
>> +
>> +menu "Bus Support"
>> +
>> +config PCI
>> + bool "PCI support" if MIGHT_HAVE_PCI
>> + help
>> + PCI is the name of a bus system, i.e. the way the CPU talks to the other stuff inside
>> + your box.Find out if your board/platform have PCI.
>> + Note: PCIE support for Synopsys Device will be available only when
>> + HAPS DX is configured with PCIE RC bitmap. If you have PCI, say Y, otherwise N.
>> +
>> +config PCI_SYSCALL
>> + def_bool PCI
>> +
>> +source "drivers/pci/Kconfig"
>> +source "drivers/pci/pcie/Kconfig"
>> +
>> +endmenu
>> +
>> source "fs/Kconfig"
>> source "arch/arc/Kconfig.debug"
>> source "security/Kconfig"
>> diff --git a/arch/arc/include/asm/dma.h b/arch/arc/include/asm/dma.h
>> index ca7c451..37942fa 100644
>> --- a/arch/arc/include/asm/dma.h
>> +++ b/arch/arc/include/asm/dma.h
>> @@ -10,5 +10,10 @@
>> #define ASM_ARC_DMA_H
>>
>> #define MAX_DMA_ADDRESS 0xC0000000
>> +#ifdef CONFIG_PCI
>> +extern int isa_dma_bridge_buggy;
>> +#else
>> +#define isa_dma_bridge_buggy (0)
>
> No parens needed around "0".
>
>> +#endif
>>
>> #endif
>> diff --git a/arch/arc/include/asm/io.h b/arch/arc/include/asm/io.h
>> index 694ece8..947bf0c 100644
>> --- a/arch/arc/include/asm/io.h
>> +++ b/arch/arc/include/asm/io.h
>> @@ -16,6 +16,15 @@
>> extern void __iomem *ioremap(unsigned long physaddr, unsigned long size);
>> extern void __iomem *ioremap_prot(phys_addr_t offset, unsigned long size,
>> unsigned long flags);
>> +static inline void __iomem *ioport_map(unsigned long port, unsigned int nr)
>> +{
>> + return (void __iomem *)port;
>> +}
>> +
>> +static inline void ioport_unmap(void __iomem *addr)
>> +{
>> +}
>> +
>> extern void iounmap(const void __iomem *addr);
>>
>> #define ioremap_nocache(phy, sz) ioremap(phy, sz)
>> diff --git a/arch/arc/include/asm/pci.h b/arch/arc/include/asm/pci.h
>> new file mode 100644
>> index 0000000..2f091e1
>> --- /dev/null
>> +++ b/arch/arc/include/asm/pci.h
>> @@ -0,0 +1,31 @@
>> +/*
>> + * Copyright (C) 2015-2016 Synopsys, Inc. (www.synopsys.com)
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License version 2 as
>> + * published by the Free Software Foundation.
>> + */
>> +
>> +#ifndef _ASM_ARC_PCI_H
>> +#define _ASM_ARC_PCI_H
>> +
>> +#ifdef __KERNEL__
>> +#include <asm-generic/pci-dma-compat.h>
>> +#include <asm-generic/pci-bridge.h>
>> +
>> +#include <linux/ioport.h>
>> +
>> +#define PCIBIOS_MIN_IO 0x100
>> +#define PCIBIOS_MIN_MEM 0x100000
>> +
>> +#define pcibios_assign_all_busses() 1
>> +/*
>> + * The PCI address space does equal the physical memory address space.
>> + * The networking and block device layers use this boolean for bounce
>> + * buffer decisions.
>> + */
>> +#define PCI_DMA_BUS_IS_PHYS (1)
>
> Or around "1".
>
>> +
>> +#endif /* __KERNEL__ */
>> +
>> +#endif /* _ASM_ARC_PCI_H */
>> diff --git a/arch/arc/kernel/Makefile b/arch/arc/kernel/Makefile
>> index e7f3625..1bc2036 100644
>> --- a/arch/arc/kernel/Makefile
>> +++ b/arch/arc/kernel/Makefile
>> @@ -12,6 +12,7 @@ obj-y := arcksyms.o setup.o irq.o time.o reset.o ptrace.o process.o devtree.o
>> obj-y += signal.o traps.o sys.o troubleshoot.o stacktrace.o disasm.o clk.o
>> obj-$(CONFIG_ISA_ARCOMPACT) += entry-compact.o intc-compact.o
>> obj-$(CONFIG_ISA_ARCV2) += entry-arcv2.o intc-arcv2.o
>> +obj-$(CONFIG_PCI) += pcibios.o
>>
>> obj-$(CONFIG_MODULES) += arcksyms.o module.o
>> obj-$(CONFIG_SMP) += smp.o
>> diff --git a/arch/arc/kernel/pcibios.c b/arch/arc/kernel/pcibios.c
>> new file mode 100644
>> index 0000000..12ea45a
>> --- /dev/null
>> +++ b/arch/arc/kernel/pcibios.c
>> @@ -0,0 +1,23 @@
>> +/*
>> + * Copyright (C) 2014-2015 Synopsys, Inc. (www.synopsys.com)
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License version 2 as
>> + * published by the Free Software Foundation.
>> + *
>> + */
>> +
>> +#include <linux/pci.h>
>> +
>> +/*
>> + * We don't have to worry about legacy ISA devices, so nothing to do here
>> + */
>> +resource_size_t pcibios_align_resource(void *data, const struct resource *res,
>> + resource_size_t size, resource_size_t align)
>> +{
>> + return res->start;
>> +}
>> +
>> +void pcibios_fixup_bus(struct pci_bus *bus)
>> +{
>> +}
>> diff --git a/arch/arc/plat-axs10x/Kconfig b/arch/arc/plat-axs10x/Kconfig
>> index d475f9d..426ac4b 100644
>> --- a/arch/arc/plat-axs10x/Kconfig
>> +++ b/arch/arc/plat-axs10x/Kconfig
>> @@ -11,6 +11,7 @@ menuconfig ARC_PLAT_AXS10X
>> select DW_APB_ICTL
>> select GPIO_DWAPB
>> select OF_GPIO
>> + select MIGHT_HAVE_PCI
>> select GENERIC_IRQ_CHIP
>> select ARCH_REQUIRE_GPIOLIB
>> help
>> diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile
>> index be3f631..2154092 100644
>> --- a/drivers/pci/Makefile
>> +++ b/drivers/pci/Makefile
>> @@ -32,6 +32,7 @@ obj-$(CONFIG_PCI_IOV) += iov.o
>> # Some architectures use the generic PCI setup functions
>> #
>> obj-$(CONFIG_ALPHA) += setup-irq.o
>> +obj-$(CONFIG_ARC) += setup-irq.o
>> obj-$(CONFIG_ARM) += setup-irq.o
>> obj-$(CONFIG_ARM64) += setup-irq.o
>> obj-$(CONFIG_UNICORE32) += setup-irq.o
>> --
>> 1.8.1.5
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web