From: Andrea della Porta <andrea.porta@suse.com>
To: Herve Codina <herve.codina@bootlin.com>
Cc: Bjorn Helgaas <helgaas@kernel.org>, Angel J <iamanaws@httpd.dev>,
Lizhi Hou <lizhi.hou@amd.com>,
"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
"regressions@lists.linux.dev" <regressions@lists.linux.dev>,
"stable@vger.kernel.org" <stable@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"linux-rpi-kernel@lists.infradead.org"
<linux-rpi-kernel@lists.infradead.org>,
"robh@kernel.org" <robh@kernel.org>,
Andrea della Porta <andrea.porta@suse.com>,
"florian.fainelli@broadcom.com" <florian.fainelli@broadcom.com>
Subject: Re: [REGRESSION] PCI: Dynamic OF node creation hangs on invalid bridge configuration
Date: Wed, 9 Sep 2026 13:27:30 +0200 [thread overview]
Message-ID: <aqFCouobgTYOBbEe@apocalypse> (raw)
In-Reply-To: <20260904105743.1c396a8b@bootlin.com>
Hi,
On 10:57 Fri 04 Sep , Herve Codina wrote:
> Hi Angel, Bjorn,
>
> On Thu, 3 Sep 2026 18:17:44 -0500
> Bjorn Helgaas <helgaas@kernel.org> wrote:
>
> > [+to Herve, Lizhi for PCI dynamic OF node stuff]
> >
> > On Sun, Aug 23, 2026 at 02:14:25AM +0000, Angel J wrote:
> > > Hello,
> > >
> > > This regression was introduced in v6.17-rc1 and remains in the dynamic
> > > PCI OF node code. Linux 6.18 fails very early during boot on my Dell XPS
> > > 8940 when CONFIG_PCI_DYNAMIC_OF_NODES=y. The display goes black before
> > > any useful console or pstore output appears, and the machine remains
> > > hung.
> >
> > Oof, sorry, that's a terrible failure to debug. Thanks for your
> > persistence in chasing it.
> >
> > I don't think 49d63971f963 ("misc: rp1: RaspberryPi RP1 misc driver")
> > is a likely culprit by itself because there's just nothing there that
> > looks like it would relate to a Dell XPS 8940.
> >
> > > Disabling CONFIG_PCI_DYNAMIC_OF_NODES makes the same kernel boot normally.
> > > Linux v6.19-rc5 also boots because the RP1 driver stopped selecting that
> > > option, not because the dynamic PCI OF node code changed.
> > >
> > > Hardware:
> > >
> > > System: Dell XPS 8940, board 0K3CM7, BIOS 2.27.1 (2025-04-03)
> > > CPU: Intel Core i7-11700 (Rocket Lake)
> > > Triggering device: 0000:00:00.0, Intel 8086:4c43
> > > Firmware boot: UEFI, ACPI-based x86_64
> > >
> > > Test results:
> > >
> > > Linux 6.12.103: good
> > > Linux v6.17-rc1: bad
> > > Linux 6.18.44, CONFIG_PCI_DYNAMIC_OF_NODES=y: bad
> > > Linux 6.18.44, CONFIG_PCI_DYNAMIC_OF_NODES=n: good
> > > Linux 6.18.44, CONFIG_PCI_DYNAMIC_OF_NODES=y, skip invalid bridge: good
> > > Linux v6.19-rc4: bad
> > > Linux v6.19-rc5: good
> > > Linux 4621c338d33f: bad
> > > Linux e55feea3a03a: good
> > >
> > > The first-parent boundary between the last two tests is:
> > >
> > > e55feea3a03a ("Merge tag 'soc-fixes-6.19' ...")
> > >
> > > That merge contains ce26f588c831 ("misc: rp1: drop overlay support"), which
> > > removes:
> > >
> > > select PCI_DYNAMIC_OF_NODES
> > >
> > > from MISC_RP1. The generated configurations differed only by:
> > >
> > > -CONFIG_PCI_DYNAMIC_OF_NODES=y
> > > +# CONFIG_PCI_DYNAMIC_OF_NODES is not set
> > >
> > > CONFIG_MISC_RP1=m in both. The known-bad 4621c338d33f and Linux 6.18.44
> > > both boot after disabling PCI_DYNAMIC_OF_NODES (and MISC_RP1, whose Kconfig
> > > select otherwise forces it on).
> > >
> > > There is no RP1 device in this machine, and its driver does not probe.
> > > MISC_RP1 affects this x86 system only because its Kconfig select enables
> > > PCI_DYNAMIC_OF_NODES globally.
> > >
> > > I narrowed the hang to dynamic OF node creation for 0000:00:00.0
> > > (8086:4c43), the Intel Rocket Lake-S integrated memory controller. On
> > > this machine it reports PCI class 0604 and header type 1, but it is bound
> > > to icl_uncore and is not a usable forwarding bridge:
> > >
> > > Bus: primary=ff, secondary=ff, subordinate=ff
> > > I/O and memory bridge windows: invalid/all ones
> > > kernel: bridge configuration invalid ([bus ff-ff]), reconfiguring
>
> Is this PCI logs reported with PCI_DYNAMIC_OF_NODES=y or PCI_DYNAMIC_OF_NODES=n
> or always whatever the PCI_DYNAMIC_OF_NODES Kconfig value ?
>
> A PCI class 0604 is a PCI-to-PCI bridge.
>
> Something in kernel code prevent the scan of this PCI-to-PCI bridge even if the
> kernel tries to reconfigure it. Indeed, the device is "Intel Rocket Lake-S
> integrated memory controller" and not a PCI-to-PCI bridge
Indeed, a Host-bridge should have 0600 class and Header 0 (or 80, if it's multi
function as it seems). Angel, could you please provide the following output:
lspci -nn
setpci -s 00:00.0 HEADER_TYPE
from a running (i.e. with CONFIG_PCI_DYNAMIC_OF_NODES=n) system? Just to make
sure we're talking about the correct device and that the hw is 'lying' to us...
Many thanks,
Andrea
>
> The of_pci_make_dev_node() is called by the PCI core [1] to create OF node for
> bridges.
>
> of_pci_make_dev_node() will set (device_type = "pci" in the created node).
>
> But if the device it is not a bridge, this is obviously wrong (even if I don't
> understand why it hangs the system).
>
> Maybe the test done at [1] should be improved to detect those wrong bridges.
> and skip the of_pci_make_dev_node() call when a wrong bridge is detected.
>
> [1] https://elixir.bootlin.com/linux/v7.2/source/drivers/pci/bus.c#L355
>
>
> Best regards,
> Hervé
next prev parent reply other threads:[~2026-09-09 11:23 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-23 2:14 [REGRESSION] PCI: Dynamic OF node creation hangs on invalid bridge configuration Angel J
2026-09-01 0:59 ` Angel J
2026-09-01 6:07 ` Thorsten Leemhuis
2026-09-03 23:17 ` Bjorn Helgaas
2026-09-04 8:57 ` Herve Codina
2026-09-09 11:27 ` Andrea della Porta [this message]
2026-09-11 23:01 ` Angel J
2026-09-11 23:04 ` [PATCH] PCI: of: Skip dynamic nodes for bridges without a subordinate bus Angel J
2026-09-11 23:13 ` sashiko-bot
2026-09-12 4:31 ` [PATCH v2] PCI: of_property: Omit bus properties " Angel J
2026-09-12 4:42 ` sashiko-bot
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=aqFCouobgTYOBbEe@apocalypse \
--to=andrea.porta@suse.com \
--cc=devicetree@vger.kernel.org \
--cc=florian.fainelli@broadcom.com \
--cc=helgaas@kernel.org \
--cc=herve.codina@bootlin.com \
--cc=iamanaws@httpd.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-rpi-kernel@lists.infradead.org \
--cc=lizhi.hou@amd.com \
--cc=regressions@lists.linux.dev \
--cc=robh@kernel.org \
--cc=stable@vger.kernel.org \
/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 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.