From: Brian Norris <briannorris@chromium.org>
To: Chen-Yu Tsai <wenst@chromium.org>, Rob Herring <robh@kernel.org>
Cc: Sasha Levin <sashal@kernel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
Conor Dooley <conor+dt@kernel.org>,
linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
Matthias Brugger <matthias.bgg@gmail.com>,
Doug Anderson <dianders@chromium.org>,
Julius Werner <jwerner@chromium.org>,
chrome-platform@lists.linux.dev
Subject: [regression] of: mis-parsing Depthcharge's /firmware
Date: Fri, 17 Apr 2026 14:25:55 -0700 [thread overview]
Message-ID: <aeKlYzTiL0OB1y3g@google.com> (raw)
In-Reply-To: <20241209092809.GA3246424@google.com>
Hi all,
(New subject; was "Re: [GIT PULL] Devicetree updates for v6.13")
On Mon, Dec 09, 2024 at 05:28:09PM +0800, Chen-Yu Tsai wrote:
> steelix.dtb is the same, plus the firmware now inserts #address-cells
> and #size-cells under /firmware. This fix has landed for all future
> ChromeOS devices via our main firmware branch [1].
>
> AFAIK they also have a bad FDT END symbol. This was only recently
> discovered and fixed for future devices [2].
>
>
> ChenYu
>
> [1] Gerrit: https://crrev.com/c/6051580
> [2] Gerrit: https://review.coreboot.org/c/coreboot/+/85462
This all comes back to bite us, since nobody went back to patch the
existing Chromebook device trees, and now we've added a true regression
on top:
In commit 6e5773d52f4a ("of/address: Fix WARN when attempting
translating non-translatable addresses") we now reject devices without
'#address-cells', and this breaks the DTs generated by bootloaders
without Chen-Yu's https://crrev.com/c/6051580 fix (this is ... pretty
much all Chromebooks). Specifically, Linux now refuses to add 'reg'
resources to the /firmware/coreboot device, and we fail with:
[ 11.886271] coreboot_table firmware:coreboot: probe with driver coreboot_table failed with error -22
This is almost certainly a DTB ABI regression.
This was noticed here (OpenWrt supports some Chromium-based WiFi routers
that use Depthcharge-based bootloaders from many years ago):
https://github.com/openwrt/openwrt/issues/21243
For now, I just patched up the OpenWrt DTS files like so:
https://github.com/openwrt/openwrt/pull/22951
But what should we do going forward? I note that Rob says "We may
revisit this later and address with a fixup to the DT itself" in commit
8600058ba28a ("of: Add coreboot firmware to excluded default cells
list").
That never happened, and a ton of Chromium devices are still broken.
(They don't have WARNINGs, but /sys/firmware/vpd, etc., is still
missing.)
Can we patch of_bus_default_match() to accept an empty 'ranges' [1]? Or
should I go patch every Chromium-device DTS file I can find? So far, I
think I can get that done in 17 files in the upstream tree...
Brian
[1] From ePAPR:
"If the [ranges] property is defined with an <empty> value, it
specifies that the parent and child address 28 space is identical, and
no address translation is required."
And:
"An ePAPR-compliant boot program shall supply #address-cells and
#size-cells on all nodes 16 that have children.
If missing, a client program should assume a default value of 2 for
#address-cells, and a value of 1 for #size-cells."
So far, this does the trick, but I didn't review all the ramifications
here.
diff --git a/drivers/of/address.c b/drivers/of/address.c
index 4034d798c55a..f86386c407d4 100644
--- a/drivers/of/address.c
+++ b/drivers/of/address.c
@@ -328,7 +328,15 @@ static int of_bus_default_flags_match(struct device_node *np)
static int of_bus_default_match(struct device_node *np)
{
- return of_property_present(np, "#address-cells");
+ int len;
+
+ if (of_property_present(np, "#address-cells"))
+ return true;
+
+ if (of_find_property(np, "ranges", &len) && len == 0)
+ return true;
+
+ return false;
}
/*
prev parent reply other threads:[~2026-04-17 21:25 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-18 21:07 [GIT PULL] Devicetree updates for v6.13 Rob Herring
2024-11-20 22:56 ` pr-tracker-bot
2024-11-24 16:29 ` Sasha Levin
2024-11-24 16:47 ` Krzysztof Kozlowski
2024-11-24 16:59 ` Sasha Levin
2024-11-25 9:48 ` AngeloGioacchino Del Regno
2024-11-25 10:34 ` Chen-Yu Tsai
2024-11-25 11:00 ` Krzysztof Kozlowski
2024-11-25 11:33 ` Krzysztof Kozlowski
2024-11-25 12:11 ` AngeloGioacchino Del Regno
2024-11-25 13:24 ` Sasha Levin
2024-11-25 15:15 ` Rob Herring
2024-12-09 9:28 ` Chen-Yu Tsai
2026-04-17 21:25 ` Brian Norris [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=aeKlYzTiL0OB1y3g@google.com \
--to=briannorris@chromium.org \
--cc=angelogioacchino.delregno@collabora.com \
--cc=chrome-platform@lists.linux.dev \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dianders@chromium.org \
--cc=jwerner@chromium.org \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=krzysztof.kozlowski@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matthias.bgg@gmail.com \
--cc=robh@kernel.org \
--cc=sashal@kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=wenst@chromium.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox