From: Stephen Boyd <sboyd@kernel.org>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: David Gow <davidgow@google.com>, Rob Herring <robh+dt@kernel.org>,
linux-kernel@vger.kernel.org, patches@lists.linux.dev,
linux-um@lists.infradead.org,
linux-arm-kernel@lists.infradead.org, kunit-dev@googlegroups.com,
linux-kselftest@vger.kernel.org, devicetree@vger.kernel.org,
Frank Rowand <frowand.list@gmail.com>,
Brendan Higgins <brendan.higgins@linux.dev>
Subject: Re: [PATCH v3 7/7] of: Add KUnit test to confirm DTB is loaded
Date: Fri, 09 Feb 2024 18:59:33 -0800 [thread overview]
Message-ID: <2185a3cc3152a0b9a94b0c64353bc9a1.sboyd@kernel.org> (raw)
In-Reply-To: <CAMuHMdUuP5Ya2gU3V_ET=Ji_+yx+jr7eCch5uDJSqvQN9jJM3g@mail.gmail.com>
Quoting Geert Uytterhoeven (2024-02-05 11:55:29)
> On Mon, Feb 5, 2024 at 8:19 PM Stephen Boyd <sboyd@kernel.org> wrote:
> > Quoting David Gow (2024-02-02 20:10:17)
> > > On Sat, 3 Feb 2024 at 03:59, Stephen Boyd <sboyd@kernel.org> wrote:
> > > > Add a KUnit test that confirms a DTB has been loaded, i.e. there is a
> > > > root node, and that the of_have_populated_dt() API works properly.
> > > >
> > > > Cc: Rob Herring <robh+dt@kernel.org>
> > > > Cc: Frank Rowand <frowand.list@gmail.com>
> > > > Cc: David Gow <davidgow@google.com>
> > > > Cc: Brendan Higgins <brendan.higgins@linux.dev>
> > > > Signed-off-by: Stephen Boyd <sboyd@kernel.org>
> > > > ---
> > >
> > > This looks pretty good to me test-wise, though it still fails on m68k.
> > > (Everything else I tried it on works, though I've definitely not tried
> > > _every_ architecture.)
> > >
> > > aarch64: PASSED
> > > i386: PASSED
> > > x86_64: PASSED
> > > x86_64 KASAN: PASSED
> > > powerpc64: PASSED
> > > UML: PASSED
> > > UML LLVM: PASSED
> > > m68k: FAILED
> > > > $ qemu-system-m68k -nodefaults -m 1024 -kernel .kunit-all-m68k/vmlinux -append 'kunit.enable=1 console=hvc0 kunit_shutdown=reboot' -no-reboot -nographic -serial stdio -machine virt
> > > > [11:55:05] ===================== dtb (2 subtests) =====================
> > > > [11:55:05] # dtb_root_node_found_by_path: EXPECTATION FAILED at drivers/of/of_test.c:18
> > > > [11:55:05] Expected np is not null, but is
> > > > [11:55:05] [FAILED] dtb_root_node_found_by_path
> > > > [11:55:05] # dtb_root_node_populates_of_root: EXPECTATION FAILED at drivers/of/of_test.c:28
> > > > [11:55:05] Expected of_root is not null, but is
> > > > [11:55:05] [FAILED] dtb_root_node_populates_of_root
> > > > [11:55:05] # module: of_test
> > > > [11:55:05] # dtb: pass:0 fail:2 skip:0 total:2
> > > > [11:55:05] # Totals: pass:0 fail:2 skip:0 total:2
> > > > [11:55:05] ======================= [FAILED] dtb =======================
> >
> > Ah yeah I forgot to mention that. m68k fails because it doesn't call the
> > unflatten_(and_copy)?_device_tree() function, so we don't populate a
> > root node on that architecture. One solution would be to make CONFIG_OF
> > unavailable on m68k. Or we have to make sure DT works on any
> > architecture. Rob, what do you prefer here?
>
> I guess the latter?
> Alpha, hexagon, parisc, s390, and sparc are also lacking calls
> to unflatten.*device_tree().
>
sparc does that on purpose. Perhaps it's simplest to call
unflatten_device_tree() if of_root is still NULL after setup_arch()
returns.
---8<---
diff --git a/init/main.c b/init/main.c
index e24b0780fdff..02f5cf8be6c1 100644
--- a/init/main.c
+++ b/init/main.c
@@ -97,6 +97,8 @@
#include <linux/jump_label.h>
#include <linux/kcsan.h>
#include <linux/init_syscalls.h>
+#include <linux/of.h>
+#include <linux/of_fdt.h>
#include <linux/stackdepot.h>
#include <linux/randomize_kstack.h>
#include <net/net_namespace.h>
@@ -895,6 +897,8 @@ void start_kernel(void)
pr_notice("%s", linux_banner);
early_security_init();
setup_arch(&command_line);
+ if (!of_root)
+ unflatten_device_tree();
setup_boot_config();
setup_command_line(command_line);
setup_nr_cpu_ids();
next prev parent reply other threads:[~2024-02-10 2:59 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-02 19:59 [PATCH v3 0/7] of: populate of_root node if bootloader doesn't Stephen Boyd
2024-02-02 19:59 ` [PATCH v3 1/7] of: Always unflatten in unflatten_and_copy_device_tree() Stephen Boyd
2024-02-02 19:59 ` [PATCH v3 2/7] of: Create of_root if no dtb provided by firmware Stephen Boyd
2024-02-02 19:59 ` [PATCH v3 3/7] um: Unconditionally call unflatten_device_tree() Stephen Boyd
2024-02-02 19:59 ` [PATCH v3 4/7] x86/of: Unconditionally call unflatten_and_copy_device_tree() Stephen Boyd
2024-02-02 19:59 ` [PATCH v3 5/7] arm64: Unconditionally call unflatten_device_tree() Stephen Boyd
2024-02-02 19:59 ` [PATCH v3 6/7] of: unittest: treat missing of_root as error instead of fixing up Stephen Boyd
2024-02-02 19:59 ` [PATCH v3 7/7] of: Add KUnit test to confirm DTB is loaded Stephen Boyd
2024-02-03 4:10 ` David Gow
2024-02-05 19:19 ` Stephen Boyd
2024-02-05 19:55 ` Geert Uytterhoeven
2024-02-10 2:59 ` Stephen Boyd [this message]
2024-02-13 17:52 ` Rob Herring
2024-02-15 21:57 ` Stephen Boyd
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=2185a3cc3152a0b9a94b0c64353bc9a1.sboyd@kernel.org \
--to=sboyd@kernel.org \
--cc=brendan.higgins@linux.dev \
--cc=davidgow@google.com \
--cc=devicetree@vger.kernel.org \
--cc=frowand.list@gmail.com \
--cc=geert@linux-m68k.org \
--cc=kunit-dev@googlegroups.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-um@lists.infradead.org \
--cc=patches@lists.linux.dev \
--cc=robh+dt@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 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).