From: Scott Branden <scott.branden@broadcom.com>
To: Bjorn Helgaas <helgaas@kernel.org>, Jim Quinlan <jim2101024@gmail.com>
Cc: Florian Fainelli <f.fainelli@gmail.com>,
Mark Rutland <mark.rutland@arm.com>,
devicetree@vger.kernel.org,
Linux-MIPS <linux-mips@linux-mips.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Kevin Cernekee <cernekee@gmail.com>,
Will Deacon <will.deacon@arm.com>,
linux-kernel@vger.kernel.org, Ralf Baechle <ralf@linux-mips.org>,
Russell King <rmk+kernel@armlinux.org.uk>,
Rob Herring <robh+dt@kernel.org>,
bcm-kernel-feedback-list <bcm-kernel-feedback-list@broadcom.com>,
Gregory Fong <gregory.0xf0@gmail.com>,
linux-pci <linux-pci@vger.kernel.org>,
Bjorn Helgaas <bhelgaas@google.com>,
Brian Norris <computersforpeace@gmail.com>,
Robin Murphy <robin.murphy@arm.com>,
Christoph Hellwig <hch@lst.de>,
linux-arm-kernel@lists.infradead.org, Ray Jui <rjui@broadcom.com>,
Scott Branden <sbranden@broadcom.com>,
Jon Mason <jonmason@broadcom.com>
Subject: Re: [PATCH 6/8] PCI: host: brcmstb: add MSI capability
Date: Wed, 25 Oct 2017 11:40:47 -0700 [thread overview]
Message-ID: <3c0219a5-6b4d-b7e4-c2a4-83eba18ae06a@broadcom.com> (raw)
In-Reply-To: <20171025172310.GN21840@bhelgaas-glaptop.roam.corp.google.com>
Hi Bjorn,
On 17-10-25 10:23 AM, Bjorn Helgaas wrote:
> [+cc Ray, Scott, Jon]
>
> On Wed, Oct 25, 2017 at 11:28:07AM -0400, Jim Quinlan wrote:
>> On Tue, Oct 24, 2017 at 2:57 PM, Florian Fainelli <f.fainelli@gmail.com> wrote:
>>> Hi Jim,
>>>
>>> On 10/24/2017 11:15 AM, Jim Quinlan wrote:
>>>> This commit adds MSI to the Broadcom STB PCIe host controller. It does
>>>> not add MSIX since that functionality is not in the HW. The MSI
>>>> controller is physically located within the PCIe block, however, there
>>>> is no reason why the MSI controller could not be moved elsewhere in
>>>> the future.
>>>>
>>>> Since the internal Brcmstb MSI controller is intertwined with the PCIe
>>>> controller, it is not its own platform device but rather part of the
>>>> PCIe platform device.
>>>>
>>>> Signed-off-by: Jim Quinlan <jim2101024@gmail.com>
>>>> ---
>>>> drivers/pci/host/Kconfig | 12 ++
>>>> drivers/pci/host/Makefile | 1 +
>>>> drivers/pci/host/pci-brcmstb-msi.c | 318 +++++++++++++++++++++++++++++++++++++
>>>> drivers/pci/host/pci-brcmstb.c | 72 +++++++--
>>>> drivers/pci/host/pci-brcmstb.h | 26 +++
>>>> 5 files changed, 419 insertions(+), 10 deletions(-)
>>>> create mode 100644 drivers/pci/host/pci-brcmstb-msi.c
>>>>
>>>> diff --git a/drivers/pci/host/Kconfig b/drivers/pci/host/Kconfig
>>>> index b9b4f11..54aa5d2 100644
>>>> --- a/drivers/pci/host/Kconfig
>>>> +++ b/drivers/pci/host/Kconfig
>>>> @@ -228,4 +228,16 @@ config PCI_BRCMSTB
>>>> default ARCH_BRCMSTB || BMIPS_GENERIC
>>>> help
>>>> Adds support for Broadcom Settop Box PCIe host controller.
>>>> + To compile this driver as a module, choose m here.
>>>> +
>>>> +config PCI_BRCMSTB_MSI
>>>> + bool "Broadcom Brcmstb PCIe MSI support"
>>>> + depends on ARCH_BRCMSTB || BMIPS_GENERIC
>>> This could probably be depends on PCI_BRCMSTB, which would imply these
>>> two conditions. PCI_BRCMSTB_MSI on its own is probably not very useful
>>> without the parent RC driver.
>>>
>>>> + depends on OF
>>>> + depends on PCI_MSI
>>>> + default PCI_BRCMSTB
>>>> + help
>>>> + Say Y here if you want to enable MSI support for Broadcom's iProc
>>>> + PCIe controller
>>>> +
>>>> endmenu
>>>> diff --git a/drivers/pci/host/Makefile b/drivers/pci/host/Makefile
>>>> index c283321..1026d6f 100644
>>>> --- a/drivers/pci/host/Makefile
>>>> +++ b/drivers/pci/host/Makefile
>>>> @@ -23,6 +23,7 @@ obj-$(CONFIG_PCIE_TANGO_SMP8759) += pcie-tango.o
>>>> obj-$(CONFIG_VMD) += vmd.o
>>>> obj-$(CONFIG_PCI_BRCMSTB) += brcmstb-pci.o
>>>> brcmstb-pci-objs := pci-brcmstb.o pci-brcmstb-dma.o
>>>> +obj-$(CONFIG_PCI_BRCMSTB_MSI) += pci-brcmstb-msi.o
>>> Should we combine this file with the brcmstb-pci.o? There is probably no
>>> functional difference, except that pci-brcmstb-msi.ko needs to be loaded
>>> first, right?
>>> --
>>> Florian
>> If you look at the pci/host/Kconfig you will see that other drivers
>> also have a separate MSI config (eg iproc, altera, xgene) so there is
>> precedent. The reason that pci-brcmstb-msi.c is its own file is
>> because it depends on an irq function that is not exported. That is
>> why CONFIG_PCI_BRCMSTB_MSI is bool, and CONFIG_PCI_BRCMSTB is
>> tristate. -- Jim
> There is precedent, but that doesn't mean I like it :)
> I would strongly prefer one file per driver when possible.
>
> Take iproc for example. iproc-msi.c is enabled by a Kconfig bool. It
> contains a bunch of code with the only external entry points being
> iproc_msi_init() and iproc_msi_exit(). These are only called via
> iproc_pcie_bcma_probe() or iproc_pcie_pltfm_probe(), both of which are
> tristate. So iproc-msi.c is only compiled if CONFIG_IPROC_BCMA or
> CONFIG_IPROC_PLATFORM are enabled, but all that text is loaded even if
> neither module is loaded, which seems suboptimal.
>
> I don't care if you have several config options to enable the BCMA
> probe and the platform probe (although these could probably be
> replaced in the code by a simple "#ifdef CONFIG_BCMA" and "#ifdef
> CONFIG_OF"), and making CONFIG_PCIE_IPROC tristate so it can be a
> module makes sense. But I think it would be better to put all the
> code in one file instead of five, and probably remove
> CONFIG_PCIE_IPROC_MSI. Maybe this requires exporting some IRQ
> function that currently isn't exported. But that seems like a simpler
> solution than what we currently have.
Placing pcie-iproc-bcma.c in its own file is useful in being able to
read the code that is actually used. BCMA is really unnecessary if a
few platforms stopped using BCMA and declared everything via devicetree
or ACPI. Same with pcie-iproc-platform.c. Both keep the mess out of
pcie-iproc.c.
It looks like pcie-iproc-msi.c followed existing pci drivers in place.
So if msi was cleaned up through the entire pci drivers then yes it
would make sense to remove CONFIG_PCIE_IPROC_MSI and combine code in
pcie-iproc.c. But I think leaving the bcma and platform code in their
own files makes it easier for us to work with the code rather than
placing unused code in ifdefs in the same file.
>
> Bjorn
Regards,
Scott
next prev parent reply other threads:[~2017-10-25 18:40 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-24 18:15 Subject: PCI: brcmstb: Add Broadcom Settopbox PCIe support (V2) Jim Quinlan
2017-10-24 18:15 ` [PATCH 1/8] SOC: brcmstb: add memory API Jim Quinlan
2017-10-25 0:23 ` Florian Fainelli
2017-10-25 15:00 ` Jim Quinlan
2017-10-24 18:15 ` [PATCH 2/8] PCI: host: brcmstb: add DT docs for Brcmstb PCIe device Jim Quinlan
2017-10-27 14:37 ` Rob Herring
2017-10-30 14:07 ` Jonas Gorski
2017-10-24 18:15 ` [PATCH 3/8] PCI: host: brcmstb: Broadcom PCIe Host Controller Jim Quinlan
2017-10-24 21:15 ` Bjorn Helgaas
2017-10-25 17:42 ` Jim Quinlan
2017-10-24 18:15 ` [PATCH 4/8] PCI: host: brcmstb: add dma-ranges for inbound traffic Jim Quinlan
2017-10-25 9:46 ` David Laight
2017-10-25 16:00 ` Jim Quinlan
2017-10-24 18:15 ` [PATCH 5/8] PCI/MSI: Enable PCI_MSI_IRQ_DOMAIN support for MIPS Jim Quinlan
2017-10-24 18:15 ` [PATCH 6/8] PCI: host: brcmstb: add MSI capability Jim Quinlan
2017-10-24 18:57 ` Florian Fainelli
2017-10-25 15:28 ` Jim Quinlan
2017-10-25 17:23 ` Bjorn Helgaas
2017-10-25 18:40 ` Scott Branden [this message]
2017-10-25 20:16 ` Bjorn Helgaas
2017-10-25 21:11 ` Jim Quinlan
2017-10-25 13:22 ` Bjorn Helgaas
2017-10-25 15:50 ` Jim Quinlan
2017-10-24 18:15 ` [PATCH 7/8] MIPS: BMIPS: add PCI bindings for 7425, 7435 Jim Quinlan
2017-10-24 18:15 ` [PATCH 8/8] MIPS: BMIPS: enable PCI Jim Quinlan
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=3c0219a5-6b4d-b7e4-c2a4-83eba18ae06a@broadcom.com \
--to=scott.branden@broadcom.com \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=bhelgaas@google.com \
--cc=catalin.marinas@arm.com \
--cc=cernekee@gmail.com \
--cc=computersforpeace@gmail.com \
--cc=devicetree@vger.kernel.org \
--cc=f.fainelli@gmail.com \
--cc=gregory.0xf0@gmail.com \
--cc=hch@lst.de \
--cc=helgaas@kernel.org \
--cc=jim2101024@gmail.com \
--cc=jonmason@broadcom.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=linux-pci@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=ralf@linux-mips.org \
--cc=rjui@broadcom.com \
--cc=rmk+kernel@armlinux.org.uk \
--cc=robh+dt@kernel.org \
--cc=robin.murphy@arm.com \
--cc=sbranden@broadcom.com \
--cc=will.deacon@arm.com \
/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
all inboxes | Powered by JetHome®