From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
To: Thierry Reding <thierry.reding@gmail.com>
Cc: Pratyush Anand <pratyush.anand@gmail.com>,
Gabriele Paoloni <gabriele.paoloni@huawei.com>,
linux-pci@vger.kernel.org, Shawn Lin <shawn.lin@rock-chips.com>,
Will Deacon <will.deacon@arm.com>,
Michal Simek <michal.simek@xilinx.com>,
Tanmay Inamdar <tinamdar@apm.com>,
Matthew Minter <matt@masarand.com>, Rob Herring <robh@kernel.org>,
Joao Pinto <Joao.Pinto@synopsys.com>,
Wenrui Li <wenrui.li@rock-chips.com>,
Russell King <linux@armlinux.org.uk>,
Murali Karicheri <m-karicheri2@ti.com>,
Arnd Bergmann <arnd@arndb.de>,
Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>,
Simon Horman <horms@verge.net.au>,
Bjorn Helgaas <bhelgaas@google.com>,
Mingkai Hu <mingkai.hu@freescale.com>,
linux-arm-kernel@lists.infradead.org,
Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
Jingoo Han <jingoohan1@gmail.com>,
Stanimir Varbanov <svarbanov@mm-sol.com>,
Minghuan Lian <minghuan.Lian@freescale.com>,
Zhou Wang <wangzhou1@hisilicon.com>,
Roy Zang <tie-fei.zang@freescale.com>
Subject: Re: [RFC/RFT PATCH 00/18] PCI: ARM/ARM64: remove pci_fixup_irqs() usage
Date: Wed, 3 May 2017 11:34:56 +0100 [thread overview]
Message-ID: <20170503103456.GC10800@red-moon> (raw)
In-Reply-To: <20170427200635.GA6563@ulmo.ba.sec>
On Thu, Apr 27, 2017 at 10:06:35PM +0200, Thierry Reding wrote:
> On Wed, Apr 26, 2017 at 12:17:51PM +0100, Lorenzo Pieralisi wrote:
> > Current pci_fixup_irqs() usage on ARM/ARM64 host controller drivers is
> > flawed in that pci_fixup_irqs() allocates IRQs for all PCI devices present
> > in a system; those PCI devices possibly belong to different PCI bus trees
> > (and possibly rooted at different host bridges) and may well be enabled
> > (ie probed and bound to a driver) by the time pci_fixup_irqs() is called
> > when probing a given host bridge driver.
> >
> > Furthermore, current kernel code relying on pci_fixup_irqs() to
> > assign legacy PCI IRQs to devices does not work at all for
> > hotplugged devices in that the code carrying out the IRQ fixup
> > is called at host bridge driver probe time, which just cannot take
> > into account devices hotplugged after system has booted.
> >
> > By leveraging Matthew Minter's patch series (and its purpose):
> >
> > http://lkml.kernel.org/r/1445576642-29624-2-git-send-email-matt@masarand.com
> >
> > this series[1] adds IRQs mapping and swizzling primitives to
> > the struct pci_host_bridge which allows IRQs to be allocated for
> > for a device at probe time with host bridge specific functions,
> > fixing the aforementioned limitations.
> >
> > Current series remove pci_fixup_irqs() usage on ARM/ARM64; removal
> > can be extended to other architectures provided the IRQs map/swizzle
> > functions are set-up properly in the respective host bridges
> > set-up/probe paths.
> >
> > Tested on kvmtool with PCI host generic.
>
> I've tested this on Jetson TX1 (though I need a small patch specific to
> Tegra on top to fix a preexisting issue) and things seem to be working
> normally.
>
> The output of "lspci -v" is identical before and after applying the
> series (on top of next-20170427):
>
> -sh-4.4# lspci -v
> 00:01.0 PCI bridge: NVIDIA Corporation Device 0fae (rev a1) (prog-if 00 [Normal decode])
> Flags: bus master, fast devsel, latency 0, IRQ 348
> Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
> I/O behind bridge: 00001000-00001fff [size=4K]
> Memory behind bridge: 13000000-130fffff [size=1M]
> Prefetchable memory behind bridge: 0000000020000000-00000000200fffff [size=1M]
> Capabilities: [40] Subsystem: NVIDIA Corporation Device 0000
> Capabilities: [48] Power Management version 3
> Capabilities: [50] MSI: Enable+ Count=1/2 Maskable- 64bit+
> Capabilities: [60] HyperTransport: MSI Mapping Enable- Fixed-
> Capabilities: [80] Express Root Port (Slot+), MSI 00
> Capabilities: [100] #00
> Capabilities: [140] L1 PM Substates
> Kernel driver in use: pcieport
>
> 01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 02)
> Subsystem: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
> Flags: bus master, fast devsel, latency 0, IRQ 349
> I/O ports at 1000 [size=256]
> Memory at 13000000 (64-bit, non-prefetchable) [size=4K]
> Memory at 20000000 (64-bit, prefetchable) [size=64K]
> Capabilities: [40] Power Management version 3
> Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
> Capabilities: [70] Express Endpoint, MSI 01
> Capabilities: [b0] MSI-X: Enable- Count=2 Masked-
> Capabilities: [d0] Vital Product Data
> Capabilities: [100] Advanced Error Reporting
> Capabilities: [140] Virtual Channel
> Capabilities: [160] Device Serial Number 8d-08-00-00-68-4c-e0-00
> Kernel driver in use: r8169
>
> Note that the Realtek card is initialized by the r8169 driver and the
> network card is used to boot over NFS.
>
> My understanding is that this is what's expected, so:
>
> Tested-by: Thierry Reding <treding@nvidia.com>
Hi Thierry,
thanks a lot, that's very appreciated, it is exactly what I need.
Please let me know if you have comments on the individual patches too.
Thanks !
Lorenzo
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
prev parent reply other threads:[~2017-05-03 10:34 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-26 11:17 [RFC/RFT PATCH 00/18] PCI: ARM/ARM64: remove pci_fixup_irqs() usage Lorenzo Pieralisi
2017-04-26 11:17 ` [RFC/RFT PATCH 01/18] PCI: Initialize bridge release function at bridge allocation Lorenzo Pieralisi
2017-04-28 12:13 ` Arnd Bergmann
2017-04-26 11:17 ` [RFC/RFT PATCH 02/18] PCI: Add pci_free_host_bridge interface Lorenzo Pieralisi
2017-04-28 12:14 ` Arnd Bergmann
2017-04-26 11:17 ` [RFC/RFT PATCH 03/18] PCI: Introduce pci_scan_root_bus_bridge() Lorenzo Pieralisi
2017-04-28 12:28 ` Arnd Bergmann
2017-05-02 17:15 ` Lorenzo Pieralisi
2017-05-02 19:36 ` Arnd Bergmann
2017-05-25 20:56 ` Bjorn Helgaas
2017-05-26 13:07 ` Lorenzo Pieralisi
2017-05-26 17:29 ` Ray Jui
2017-05-31 10:20 ` Lorenzo Pieralisi
2017-05-30 11:16 ` Oza Oza
2017-05-31 11:13 ` Lorenzo Pieralisi
2017-04-26 11:17 ` [RFC/RFT PATCH 04/18] ARM: PCI: bios32: Convert PCI scan API to pci_scan_root_bus_bridge() Lorenzo Pieralisi
2017-04-28 12:41 ` Arnd Bergmann
2017-04-26 11:17 ` [RFC/RFT PATCH 05/18] ARM: PCI: dove: " Lorenzo Pieralisi
2017-04-28 12:38 ` Arnd Bergmann
2017-04-28 12:52 ` Arnd Bergmann
2017-05-03 10:31 ` Lorenzo Pieralisi
2017-05-03 12:02 ` Arnd Bergmann
2017-04-26 11:17 ` [RFC/RFT PATCH 06/18] ARM: PCI: iop13xx: " Lorenzo Pieralisi
2017-04-26 11:17 ` [RFC/RFT PATCH 07/18] ARM: PCI: orion5x: " Lorenzo Pieralisi
2017-04-26 15:12 ` Andrew Lunn
2017-04-26 16:13 ` Lorenzo Pieralisi
2017-04-26 18:53 ` Andrew Lunn
2017-04-27 10:40 ` Lorenzo Pieralisi
2017-04-26 11:17 ` [RFC/RFT PATCH 08/18] PCI: designware: " Lorenzo Pieralisi
2017-04-28 13:13 ` Arnd Bergmann
2017-05-03 10:16 ` Lorenzo Pieralisi
2017-06-02 11:49 ` Lorenzo Pieralisi
2017-06-02 13:12 ` Arnd Bergmann
2017-06-02 13:56 ` Lorenzo Pieralisi
2017-06-02 14:44 ` Arnd Bergmann
2017-04-26 11:18 ` [RFC/RFT PATCH 09/18] PCI: aardvark: " Lorenzo Pieralisi
2017-04-26 11:18 ` [RFC/RFT PATCH 10/18] PCI: rcar: " Lorenzo Pieralisi
2017-04-28 12:53 ` Arnd Bergmann
2017-04-26 11:18 ` [RFC/RFT PATCH 11/18] PCI: Remove pci_scan_root_bus_msi() Lorenzo Pieralisi
2017-04-26 11:18 ` [RFC/RFT PATCH 12/18] PCI: Build setup-irq.o on all arches Lorenzo Pieralisi
2017-04-26 11:18 ` [RFC/RFT PATCH 13/18] PCI: Add IRQ mapping function pointers to pci_host_bridge struct Lorenzo Pieralisi
2017-04-26 11:18 ` [RFC/RFT PATCH 14/18] PCI: Add pci_assign_irq() function and have pci_fixup_irqs() use it Lorenzo Pieralisi
2017-04-26 11:18 ` [RFC/RFT PATCH 15/18] OF/PCI: Update of_irq_parse_and_map_pci() comment Lorenzo Pieralisi
2017-04-26 11:18 ` [RFC/RFT PATCH 16/18] PCI: Add a call to pci_assign_irq() in pci_device_probe() Lorenzo Pieralisi
2017-04-26 11:18 ` [RFC/RFT PATCH 17/18] ARM: PCI: Remove pci_fixup_irqs() call for bios32 host controllers Lorenzo Pieralisi
2017-04-26 11:18 ` [RFC/RFT PATCH 18/18] ARM/ARM64: PCI: Drop pci_fixup_irqs() usage for DT based " Lorenzo Pieralisi
2017-04-28 13:05 ` Arnd Bergmann
2017-05-03 10:51 ` Lorenzo Pieralisi
2017-04-27 20:06 ` [RFC/RFT PATCH 00/18] PCI: ARM/ARM64: remove pci_fixup_irqs() usage Thierry Reding
2017-05-03 10:34 ` Lorenzo Pieralisi [this message]
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=20170503103456.GC10800@red-moon \
--to=lorenzo.pieralisi@arm.com \
--cc=Joao.Pinto@synopsys.com \
--cc=arnd@arndb.de \
--cc=bharat.kumar.gogada@xilinx.com \
--cc=bhelgaas@google.com \
--cc=gabriele.paoloni@huawei.com \
--cc=horms@verge.net.au \
--cc=jingoohan1@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=m-karicheri2@ti.com \
--cc=matt@masarand.com \
--cc=michal.simek@xilinx.com \
--cc=minghuan.Lian@freescale.com \
--cc=mingkai.hu@freescale.com \
--cc=pratyush.anand@gmail.com \
--cc=robh@kernel.org \
--cc=shawn.lin@rock-chips.com \
--cc=svarbanov@mm-sol.com \
--cc=thierry.reding@gmail.com \
--cc=thomas.petazzoni@free-electrons.com \
--cc=tie-fei.zang@freescale.com \
--cc=tinamdar@apm.com \
--cc=wangzhou1@hisilicon.com \
--cc=wenrui.li@rock-chips.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;
as well as URLs for NNTP newsgroup(s).