From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> To: "Pali Rohár" <pali@kernel.org> Cc: "Thomas Petazzoni" <thomas.petazzoni@bootlin.com>, "Andrew Murray" <amurray@thegoodpenguin.co.uk>, "Bjorn Helgaas" <bhelgaas@google.com>, "Marek Behún" <marek.behun@nic.cz>, "Remi Pommarel" <repk@triplefau.lt>, "Tomasz Maciej Nowak" <tmn505@gmail.com>, Xogium <contact@xogium.me>, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3] PCI: aardvark: Don't touch PCIe registers if no card connected Date: Mon, 13 Jul 2020 12:23:25 +0100 [thread overview] Message-ID: <20200713112325.GA25865@e121166-lin.cambridge.arm.com> (raw) In-Reply-To: <20200713082747.e3q3ml3wpbszn4j7@pali> On Mon, Jul 13, 2020 at 10:27:47AM +0200, Pali Rohár wrote: > On Friday 10 July 2020 10:18:00 Lorenzo Pieralisi wrote: > > On Thu, Jul 09, 2020 at 05:09:59PM +0200, Pali Rohár wrote: > > > > I understand that but the bridge bus resource can be trimmed to just > > > > contain the root bus because that's the only one where there is a > > > > chance you can enumerate a device. > > > > > > It is possible to register only root bridge without endpoint? > > > > It is possible to register the root bridge with a trimmed IORESOURCE_BUS > > so that you don't enumerate anything other than the root port. > > Hello Lorenzo! I really do not know how to achieve it. From code it > looks like that pci/probe.c scans child buses unconditionally. > > pci-aardvark.c calls pci_host_probe() which calls functions > pci_scan_root_bus_bridge() which calls pci_scan_child_bus() which calls > pci_scan_child_bus_extend() which calls pci_scan_bridge_extend() (bridge > needs to be reconfigured) which then try to probe child bus via > pci_scan_child_bus_extend() because bridge is not card bus. > > In function pci_scan_bridge_extend() I do not see a way how to skip > probing for child buses which would avoid enumerating aardvark root > bridge when PCIe device is not connected. > > dmesg output contains: > > advk-pcie d0070000.pcie: link never came up > advk-pcie d0070000.pcie: PCI host bridge to bus 0000:00 > pci_bus 0000:00: root bus resource [bus 00-ff] This resource can be limited to the root bus number only before calling pci_host_probe() (ie see pci_parse_request_of_pci_ranges() and code in pci_scan_bridge_extend() that programs primary/secondary/subordinate busses) but I think that only papers over the issue, it does not fix it. I will go over the thread again but I suspect I can merge the patch even though I still believe there is work to be done to understand the issue we are facing. Lorenzo > pci_bus 0000:00: root bus resource [mem 0xe8000000-0xe8ffffff] > pci_bus 0000:00: root bus resource [io 0x0000-0xffff] (bus address [0xe9000000-0xe900ffff]) > pci_bus 0000:00: scanning bus > pci 0000:00:00.0: [1b4b:0100] type 01 class 0x060400 > pci 0000:00:00.0: reg 0x38: [mem 0x00000000-0x000007ff pref] > pci_bus 0000:00: fixups for bus > pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 0 > pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring > pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 1 > pci_bus 0000:01: scanning bus > advk-pcie d0070000.pcie: advk_pcie_valid_device
WARNING: multiple messages have this Message-ID (diff)
From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> To: "Pali Rohár" <pali@kernel.org> Cc: "Tomasz Maciej Nowak" <tmn505@gmail.com>, linux-pci@vger.kernel.org, Xogium <contact@xogium.me>, linux-kernel@vger.kernel.org, "Marek Behún" <marek.behun@nic.cz>, "Remi Pommarel" <repk@triplefau.lt>, "Thomas Petazzoni" <thomas.petazzoni@bootlin.com>, "Bjorn Helgaas" <bhelgaas@google.com>, linux-arm-kernel@lists.infradead.org, "Andrew Murray" <amurray@thegoodpenguin.co.uk> Subject: Re: [PATCH v3] PCI: aardvark: Don't touch PCIe registers if no card connected Date: Mon, 13 Jul 2020 12:23:25 +0100 [thread overview] Message-ID: <20200713112325.GA25865@e121166-lin.cambridge.arm.com> (raw) In-Reply-To: <20200713082747.e3q3ml3wpbszn4j7@pali> On Mon, Jul 13, 2020 at 10:27:47AM +0200, Pali Rohár wrote: > On Friday 10 July 2020 10:18:00 Lorenzo Pieralisi wrote: > > On Thu, Jul 09, 2020 at 05:09:59PM +0200, Pali Rohár wrote: > > > > I understand that but the bridge bus resource can be trimmed to just > > > > contain the root bus because that's the only one where there is a > > > > chance you can enumerate a device. > > > > > > It is possible to register only root bridge without endpoint? > > > > It is possible to register the root bridge with a trimmed IORESOURCE_BUS > > so that you don't enumerate anything other than the root port. > > Hello Lorenzo! I really do not know how to achieve it. From code it > looks like that pci/probe.c scans child buses unconditionally. > > pci-aardvark.c calls pci_host_probe() which calls functions > pci_scan_root_bus_bridge() which calls pci_scan_child_bus() which calls > pci_scan_child_bus_extend() which calls pci_scan_bridge_extend() (bridge > needs to be reconfigured) which then try to probe child bus via > pci_scan_child_bus_extend() because bridge is not card bus. > > In function pci_scan_bridge_extend() I do not see a way how to skip > probing for child buses which would avoid enumerating aardvark root > bridge when PCIe device is not connected. > > dmesg output contains: > > advk-pcie d0070000.pcie: link never came up > advk-pcie d0070000.pcie: PCI host bridge to bus 0000:00 > pci_bus 0000:00: root bus resource [bus 00-ff] This resource can be limited to the root bus number only before calling pci_host_probe() (ie see pci_parse_request_of_pci_ranges() and code in pci_scan_bridge_extend() that programs primary/secondary/subordinate busses) but I think that only papers over the issue, it does not fix it. I will go over the thread again but I suspect I can merge the patch even though I still believe there is work to be done to understand the issue we are facing. Lorenzo > pci_bus 0000:00: root bus resource [mem 0xe8000000-0xe8ffffff] > pci_bus 0000:00: root bus resource [io 0x0000-0xffff] (bus address [0xe9000000-0xe900ffff]) > pci_bus 0000:00: scanning bus > pci 0000:00:00.0: [1b4b:0100] type 01 class 0x060400 > pci 0000:00:00.0: reg 0x38: [mem 0x00000000-0x000007ff pref] > pci_bus 0000:00: fixups for bus > pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 0 > pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring > pci 0000:00:00.0: scanning [bus 00-00] behind bridge, pass 1 > pci_bus 0000:01: scanning bus > advk-pcie d0070000.pcie: advk_pcie_valid_device _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-07-13 11:23 UTC|newest] Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-05-28 14:31 [PATCH] PCI: aardvark: Don't touch PCIe registers if no card connected Pali Rohár 2020-05-28 14:31 ` Pali Rohár 2020-05-28 16:26 ` Bjorn Helgaas 2020-05-28 16:26 ` Bjorn Helgaas 2020-05-28 16:38 ` Pali Rohár 2020-05-28 16:38 ` Pali Rohár 2020-05-28 16:49 ` Bjorn Helgaas 2020-05-28 16:49 ` Bjorn Helgaas 2020-05-29 8:30 ` Pali Rohár 2020-05-29 8:30 ` Pali Rohár 2020-06-30 12:31 ` Pali Rohár 2020-06-30 12:31 ` Pali Rohár 2020-06-30 13:51 ` Bjorn Helgaas 2020-06-30 13:51 ` Bjorn Helgaas 2020-06-30 14:04 ` Pali Rohár 2020-06-30 14:04 ` Pali Rohár 2020-06-30 14:58 ` Bjorn Helgaas 2020-06-30 14:58 ` Bjorn Helgaas 2020-07-01 8:08 ` Pali Rohár 2020-07-01 8:08 ` Pali Rohár 2020-07-01 8:20 ` [PATCH v2] " Pali Rohár 2020-07-01 8:20 ` Pali Rohár 2020-07-01 21:34 ` Bjorn Helgaas 2020-07-01 21:34 ` Bjorn Helgaas 2020-07-02 8:23 ` Pali Rohár 2020-07-02 8:23 ` Pali Rohár 2020-07-02 8:30 ` [PATCH v3] " Pali Rohár 2020-07-02 8:30 ` Pali Rohár 2020-07-09 11:35 ` Lorenzo Pieralisi 2020-07-09 11:35 ` Lorenzo Pieralisi 2020-07-09 12:22 ` Pali Rohár 2020-07-09 12:22 ` Pali Rohár 2020-07-09 14:47 ` Lorenzo Pieralisi 2020-07-09 14:47 ` Lorenzo Pieralisi 2020-07-09 15:09 ` Pali Rohár 2020-07-09 15:09 ` Pali Rohár 2020-07-10 9:18 ` Lorenzo Pieralisi 2020-07-10 9:18 ` Lorenzo Pieralisi 2020-07-10 15:44 ` Pali Rohár 2020-07-10 15:44 ` Pali Rohár 2020-07-10 16:08 ` Bjorn Helgaas 2020-07-10 16:08 ` Bjorn Helgaas 2020-07-10 19:30 ` Pali Rohár 2020-07-10 19:30 ` Pali Rohár 2020-07-10 20:08 ` Bjorn Helgaas 2020-07-10 20:08 ` Bjorn Helgaas 2020-07-13 8:27 ` Pali Rohár 2020-07-13 8:27 ` Pali Rohár 2020-07-13 11:23 ` Lorenzo Pieralisi [this message] 2020-07-13 11:23 ` Lorenzo Pieralisi 2020-07-13 14:50 ` Pali Rohár 2020-07-13 14:50 ` Pali Rohár 2020-07-13 16:41 ` Lorenzo Pieralisi 2020-07-13 16:41 ` Lorenzo Pieralisi 2020-07-14 7:38 ` Pali Rohár 2020-07-14 7:38 ` Pali Rohár 2020-07-15 12:17 ` Pali Rohár 2020-07-15 12:17 ` Pali Rohár 2020-07-15 16:21 ` Lorenzo Pieralisi 2020-07-15 16:21 ` Lorenzo Pieralisi 2020-07-21 8:57 ` Pali Rohár 2020-07-21 8:57 ` Pali Rohár 2020-07-21 10:48 ` Lorenzo Pieralisi 2020-07-21 10:48 ` Lorenzo Pieralisi
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=20200713112325.GA25865@e121166-lin.cambridge.arm.com \ --to=lorenzo.pieralisi@arm.com \ --cc=amurray@thegoodpenguin.co.uk \ --cc=bhelgaas@google.com \ --cc=contact@xogium.me \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-pci@vger.kernel.org \ --cc=marek.behun@nic.cz \ --cc=pali@kernel.org \ --cc=repk@triplefau.lt \ --cc=thomas.petazzoni@bootlin.com \ --cc=tmn505@gmail.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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.