From: Hajime Tazaki <thehajime@gmail.com>
To: johannes@sipsolutions.net
Cc: linux-um@lists.infradead.org, ricarkol@google.com,
Liam.Howlett@oracle.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH RESEND v11 10/13] um: nommu: a work around for MMU dependency to PCI driver
Date: Sat, 20 Sep 2025 08:46:14 +0900 [thread overview]
Message-ID: <m25xde80qh.wl-thehajime@gmail.com> (raw)
In-Reply-To: <da39f51b76cca54e5304064f7e34a8863442605d.camel@sipsolutions.net>
thanks Johannes, I think I got a clearer view than before.
I guess Kconfig does the right thing.
And Kunit does the right too but an additional job which Kunit does
prevents run tests w/ !MMU.
> > CONIFG_MMU=n
> >
> > via --kconfig_add CONFIG_MMU=n.
>
> Sure. But that should disable CONFIG_UML_PCI_OVER_VIRTIO, and it doesn't
> now.
Kconfig (via kunit.py config) disables CONFIG_UML_PCI_OVER_VIRTIO
correctly.
But after that, Kunit does the additional job, validate_config() (in
kunit_kernel.py), which checks the configs (arch_uml.config +
--kconfig_add) is a subset of the final result of .config.
When I applied a patch below:
diff --git a/arch/um/drivers/Kconfig b/arch/um/drivers/Kconfig
index 6a0354ca032f..04025207a077 100644
--- a/arch/um/drivers/Kconfig
+++ b/arch/um/drivers/Kconfig
@@ -159,6 +159,7 @@ config UML_RTC
config UML_PCI
bool
+ depends on MMU
select FORCE_PCI
select IRQ_MSI_LIB
select UML_IOMEM_EMULATION
@@ -170,6 +171,7 @@ config UML_PCI_OVER_VIRTIO
bool "Enable PCI over VIRTIO device simulation"
# in theory, just VIRTIO is enough, but that causes recursion
depends on VIRTIO_UML
+ depends on MMU
select UML_PCI
and do
./tools/testing/kunit/kunit.py config --kconfig_add CONFIG_MMU=n
the validation currently gives the following error:
ERROR:root:Not all Kconfig options selected in kunitconfig were in the generated .config.
This is probably due to unsatisfied dependencies.
Missing: CONFIG_UML_PCI_OVER_VIRTIO=y
Note: many Kconfig options aren't available on UML. You can try
running on a different architecture with something like
"--arch=x86_64".
so, if I give an additional --kconfig_add CONFIG_UML_PCI_OVER_VIRTIO=n
to the command line, the validation passes, because the configs
(arch_uml.config + --kconfig_add) becomes the subset of the final
result.
what I can handle this would be either of them:
1) use --kconfig_add CONFIG_UML_PCI_OVER_VIRTIO=n when using kunit w/
!MMU, and drop this patch from the series (no modification to the tree)
2) prepare a different file for !MMU & ARCH=um testing (e.g.,
arch_uml_nommu.config), and add an option to kunit.py to switch MMU
or !MMU
3) implement virtio-pci for !MMU and propose to remove the restriction
of CONFIG_PCI depends on CONFIG_MMU.
2) will be removed when 3) is done so, I'm hesitating to propose a
patch used by whole tree.
so, I think 1) is (not the best but) a reasonable solution, with a
note in nommu-uml specific document (i.e., [PATCH 12/13]).
Let me know what you think.
-- Hajime
On Fri, 19 Sep 2025 18:38:03 +0900,
Johannes Berg wrote:
>
> On Fri, 2025-09-19 at 18:32 +0900, Hajime Tazaki wrote:
> > currently, drivers/pci/Kconfig (CONFIG_PCI) marks as depends on MMU,
>
> Right.
>
> > so we cannot select it when CONFIG_MMU=n.
>
> Actually, I believe that's not true, I think it *can* select something
> even if you override the 'depends on' it has, it just causes a warning
> in Kconfig.
>
> But I don't think PCI is even selected, UML_PCI is selected, and then
> that selects PCI_MSI which should really only be reachable when PCI is
> enabled, so this perhaps does nothing? Not sure ...
>
> > but it's different with kunit when using them via kunit.py config,
>
> It really isn't, you just don't see everything because kunit.py hides
> the build from you.
>
> > it first adds
> >
> > CONFIG_VIRTIO_UML=y
> > CONFIG_UML_PCI_OVER_VIRTIO=y
> >
> > via tools/testing/kunit/configs/arch_uml.config, and then add
> >
> > CONIFG_MMU=n
> >
> > via --kconfig_add CONFIG_MMU=n.
>
> Sure. But that should disable CONFIG_UML_PCI_OVER_VIRTIO, and it doesn't
> now.
>
> > and then execute make ARCH=um olddefconfig, which in turn enables
> > CONFIG_UML_PCI_OVER_VIRTIO.
>
> Keeps it, let's say.
>
> > if we append "--kconfig_add CONFIG_UML_PCI_OVER_VIRTIO=n" to kunit.py,
> > it will overwrite the arch_uml.config.
>
> Yeah but that being required doesn't make sense - the Kconfig should
> express the correct dependencies.
>
> > # I don't know how kunit handles those appended CONFIG entries, though..
>
> It just puts them into the file and runs oldconfig, I guess?
>
> > my goal is simple; to test !MMU code via kunit.
>
> Sure.
>
> > my original patch or the additional kconfig argument (--kconfig_add)
> > satisfies this goal.
>
> Sure. But both are the wrong solution, as I said, the Kconfig should
> express the correct dependencies.
>
> > > The problem is probably UML_PCI_OVER_VIRTIO selecting UML_PCI selecting
> > > various PCI code, but nothing depends on PCI in the first place. Which
> > > it should, then?
> >
> > I don't understand the 'nothing depends on PCI...' part. care to
> > elaborate ?
>
> See above, I think?
>
> My gut feeling is that UML_PCI_OVER_VIRTIO should depend on PCI but I
> don't know if that then doesn't end up in some kind of circular
> dependency.
>
> johannes
next prev parent reply other threads:[~2025-09-19 23:46 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-18 7:38 [PATCH RESEND v11 00/13] nommu UML Hajime Tazaki
2025-09-18 7:38 ` [PATCH RESEND v11 01/13] x86/um: nommu: elf loader for fdpic Hajime Tazaki
2025-09-18 7:38 ` [PATCH RESEND v11 02/13] um: decouple MMU specific code from the common part Hajime Tazaki
2025-09-18 7:38 ` [PATCH RESEND v11 03/13] um: nommu: memory handling Hajime Tazaki
2025-09-18 7:38 ` [PATCH RESEND v11 04/13] x86/um: nommu: syscall handling Hajime Tazaki
2025-09-18 7:39 ` [PATCH RESEND v11 05/13] um: nommu: seccomp syscalls hook Hajime Tazaki
2025-09-18 7:39 ` [PATCH RESEND v11 06/13] x86/um: nommu: process/thread handling Hajime Tazaki
2025-09-18 7:39 ` [PATCH RESEND v11 07/13] um: nommu: configure fs register on host syscall invocation Hajime Tazaki
2025-09-18 7:39 ` [PATCH RESEND v11 08/13] x86/um/vdso: nommu: vdso memory update Hajime Tazaki
2025-09-18 7:39 ` [PATCH RESEND v11 09/13] x86/um: nommu: signal handling Hajime Tazaki
2025-09-18 7:39 ` [PATCH RESEND v11 10/13] um: nommu: a work around for MMU dependency to PCI driver Hajime Tazaki
2025-09-18 8:30 ` Johannes Berg
2025-09-19 0:03 ` Hajime Tazaki
2025-09-19 7:24 ` Johannes Berg
2025-09-19 9:32 ` Hajime Tazaki
2025-09-19 9:38 ` Johannes Berg
2025-09-19 9:38 ` Johannes Berg
2025-09-19 9:43 ` Johannes Berg
2025-09-19 23:46 ` Hajime Tazaki [this message]
2025-09-22 6:32 ` Johannes Berg
2025-09-23 23:44 ` Hajime Tazaki
2025-09-23 15:42 ` Geert Uytterhoeven
2025-09-23 17:13 ` Johannes Berg
2025-09-23 23:51 ` Hajime Tazaki
2025-09-24 8:02 ` Geert Uytterhoeven
2025-09-24 11:03 ` Arnd Bergmann
2025-09-24 23:27 ` Hajime Tazaki
2025-09-18 7:39 ` [PATCH RESEND v11 11/13] um: change machine name for uname output Hajime Tazaki
2025-09-18 7:39 ` [PATCH RESEND v11 12/13] um: nommu: add documentation of nommu UML Hajime Tazaki
2025-09-18 7:39 ` [PATCH RESEND v11 13/13] um: nommu: plug nommu code into build system Hajime Tazaki
2025-09-18 10:39 ` [PATCH RESEND v11 00/13] nommu UML Lorenzo Stoakes
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=m25xde80qh.wl-thehajime@gmail.com \
--to=thehajime@gmail.com \
--cc=Liam.Howlett@oracle.com \
--cc=johannes@sipsolutions.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-um@lists.infradead.org \
--cc=ricarkol@google.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: 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).