From: Herve Codina <herve.codina@bootlin.com>
To: Bjorn Helgaas <helgaas@kernel.org>
Cc: 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: Fri, 4 Sep 2026 10:57:43 +0200 [thread overview]
Message-ID: <20260904105743.1c396a8b@bootlin.com> (raw)
In-Reply-To: <20260903231744.GA2281658@bhelgaas>
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
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-04 8:57 UTC|newest]
Thread overview: 24+ 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 [this message]
2026-09-09 11:27 ` Andrea della Porta
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
2026-09-16 14:50 ` Bjorn Helgaas
2026-09-18 19:55 ` [PATCH v3] " Bjorn Helgaas
2026-09-18 20:02 ` sashiko-bot
2026-09-18 20:20 ` Bjorn Helgaas
2026-09-18 20:24 ` Angel J
2026-09-14 11:53 ` [REGRESSION] PCI: Dynamic OF node creation hangs on invalid bridge configuration Andrea della Porta
2026-09-14 22:05 ` Angel J
2026-09-14 23:28 ` Angel J
2026-09-15 10:30 ` Andrea della Porta
2026-09-16 1:21 ` Bjorn Helgaas
2026-09-16 11:14 ` Angel J
2026-09-16 14:42 ` Bjorn Helgaas
2026-09-16 19:28 ` Sasha Levin
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=20260904105743.1c396a8b@bootlin.com \
--to=herve.codina@bootlin.com \
--cc=andrea.porta@suse.com \
--cc=devicetree@vger.kernel.org \
--cc=florian.fainelli@broadcom.com \
--cc=helgaas@kernel.org \
--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.