2024-04-27 00:57:07

by Zhouyi Zhou

[permalink] [raw]
Subject: [PATCH] x86/rcutorture move CONFIG_HYPERVISOR_GUEST to kvm-test-1-run.sh

CONFIG_HYPERVISOR_GUEST is a x86 specific kernel option, move to
kvm-test-1-run.sh to avoid ConfigFragment.diags in non-x86 platforms.

Tested in both PPC VM of Open Source lab of Oregon State University and
local x86_64 server.

Fixes: a6fda6dab93c ("rcutorture: Tweak kvm options")
Signed-off-by: Zhouyi Zhou <[email protected]>
---
tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh | 4 ++++
tools/testing/selftests/rcutorture/configs/rcu/CFcommon | 1 -
2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh b/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
index b33cd8753689..75774bc70be7 100755
--- a/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
+++ b/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
@@ -68,6 +68,10 @@ config_override_param "--gdb options" KcList "$TORTURE_KCONFIG_GDB_ARG"
config_override_param "--kasan options" KcList "$TORTURE_KCONFIG_KASAN_ARG"
config_override_param "--kcsan options" KcList "$TORTURE_KCONFIG_KCSAN_ARG"
config_override_param "--kconfig argument" KcList "$TORTURE_KCONFIG_ARG"
+if uname -a | grep -q x86
+then
+ config_override_param "x86 specific option" KcList "CONFIG_HYPERVISOR_GUEST=y"
+fi
cp $T/KcList $resdir/ConfigFragment

base_resdir=`echo $resdir | sed -e 's/\.[0-9]\+$//'`
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/CFcommon b/tools/testing/selftests/rcutorture/configs/rcu/CFcommon
index 0e92d85313aa..cf0387ae5358 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/CFcommon
+++ b/tools/testing/selftests/rcutorture/configs/rcu/CFcommon
@@ -1,6 +1,5 @@
CONFIG_RCU_TORTURE_TEST=y
CONFIG_PRINTK_TIME=y
-CONFIG_HYPERVISOR_GUEST=y
CONFIG_PARAVIRT=y
CONFIG_KVM_GUEST=y
CONFIG_KCSAN_ASSUME_PLAIN_WRITES_ATOMIC=n
--
2.34.1



2024-04-29 23:22:12

by Paul E. McKenney

[permalink] [raw]
Subject: Re: [PATCH] x86/rcutorture move CONFIG_HYPERVISOR_GUEST to kvm-test-1-run.sh

On Sat, Apr 27, 2024 at 12:56:26AM +0000, Zhouyi Zhou wrote:
> CONFIG_HYPERVISOR_GUEST is a x86 specific kernel option, move to
> kvm-test-1-run.sh to avoid ConfigFragment.diags in non-x86 platforms.
>
> Tested in both PPC VM of Open Source lab of Oregon State University and
> local x86_64 server.
>
> Fixes: a6fda6dab93c ("rcutorture: Tweak kvm options")
> Signed-off-by: Zhouyi Zhou <[email protected]>

I like this general approach, but why not have something like a
CFCOMMON.arch for the various "arch"s that need it?

Better yet, I bet that there is already something somewhere in the
Linux kernel source tree that knows what hypervisor Kconfig options
each architecture needs. If so, it would be most excellent to reuse
that information instead of maintaining it separately in RCU.

Thanx, Paul

> ---
> tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh | 4 ++++
> tools/testing/selftests/rcutorture/configs/rcu/CFcommon | 1 -
> 2 files changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh b/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
> index b33cd8753689..75774bc70be7 100755
> --- a/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
> +++ b/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
> @@ -68,6 +68,10 @@ config_override_param "--gdb options" KcList "$TORTURE_KCONFIG_GDB_ARG"
> config_override_param "--kasan options" KcList "$TORTURE_KCONFIG_KASAN_ARG"
> config_override_param "--kcsan options" KcList "$TORTURE_KCONFIG_KCSAN_ARG"
> config_override_param "--kconfig argument" KcList "$TORTURE_KCONFIG_ARG"
> +if uname -a | grep -q x86
> +then
> + config_override_param "x86 specific option" KcList "CONFIG_HYPERVISOR_GUEST=y"
> +fi
> cp $T/KcList $resdir/ConfigFragment
>
> base_resdir=`echo $resdir | sed -e 's/\.[0-9]\+$//'`
> diff --git a/tools/testing/selftests/rcutorture/configs/rcu/CFcommon b/tools/testing/selftests/rcutorture/configs/rcu/CFcommon
> index 0e92d85313aa..cf0387ae5358 100644
> --- a/tools/testing/selftests/rcutorture/configs/rcu/CFcommon
> +++ b/tools/testing/selftests/rcutorture/configs/rcu/CFcommon
> @@ -1,6 +1,5 @@
> CONFIG_RCU_TORTURE_TEST=y
> CONFIG_PRINTK_TIME=y
> -CONFIG_HYPERVISOR_GUEST=y
> CONFIG_PARAVIRT=y
> CONFIG_KVM_GUEST=y
> CONFIG_KCSAN_ASSUME_PLAIN_WRITES_ATOMIC=n
> --
> 2.34.1
>

2024-04-30 01:00:39

by Zhouyi Zhou

[permalink] [raw]
Subject: Re: [PATCH] x86/rcutorture move CONFIG_HYPERVISOR_GUEST to kvm-test-1-run.sh

On Tue, Apr 30, 2024 at 7:22 AM Paul E. McKenney <[email protected]> wrote:
>
> On Sat, Apr 27, 2024 at 12:56:26AM +0000, Zhouyi Zhou wrote:
> > CONFIG_HYPERVISOR_GUEST is a x86 specific kernel option, move to
> > kvm-test-1-run.sh to avoid ConfigFragment.diags in non-x86 platforms.
> >
> > Tested in both PPC VM of Open Source lab of Oregon State University and
> > local x86_64 server.
> >
> > Fixes: a6fda6dab93c ("rcutorture: Tweak kvm options")
> > Signed-off-by: Zhouyi Zhou <[email protected]>
>
> I like this general approach, but why not have something like a
> CFCOMMON.arch for the various "arch"s that need it?
>
> Better yet, I bet that there is already something somewhere in the
> Linux kernel source tree that knows what hypervisor Kconfig options
> each architecture needs. If so, it would be most excellent to reuse
> that information instead of maintaining it separately in RCU.
Thank Paul for your great guidance and valuable advice!

I will do a thorough research on the above approaches.

Thanks again ;-)
Zhouyi
>
> Thanx, Paul
>
> > ---
> > tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh | 4 ++++
> > tools/testing/selftests/rcutorture/configs/rcu/CFcommon | 1 -
> > 2 files changed, 4 insertions(+), 1 deletion(-)
> >
> > diff --git a/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh b/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
> > index b33cd8753689..75774bc70be7 100755
> > --- a/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
> > +++ b/tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh
> > @@ -68,6 +68,10 @@ config_override_param "--gdb options" KcList "$TORTURE_KCONFIG_GDB_ARG"
> > config_override_param "--kasan options" KcList "$TORTURE_KCONFIG_KASAN_ARG"
> > config_override_param "--kcsan options" KcList "$TORTURE_KCONFIG_KCSAN_ARG"
> > config_override_param "--kconfig argument" KcList "$TORTURE_KCONFIG_ARG"
> > +if uname -a | grep -q x86
> > +then
> > + config_override_param "x86 specific option" KcList "CONFIG_HYPERVISOR_GUEST=y"
> > +fi
> > cp $T/KcList $resdir/ConfigFragment
> >
> > base_resdir=`echo $resdir | sed -e 's/\.[0-9]\+$//'`
> > diff --git a/tools/testing/selftests/rcutorture/configs/rcu/CFcommon b/tools/testing/selftests/rcutorture/configs/rcu/CFcommon
> > index 0e92d85313aa..cf0387ae5358 100644
> > --- a/tools/testing/selftests/rcutorture/configs/rcu/CFcommon
> > +++ b/tools/testing/selftests/rcutorture/configs/rcu/CFcommon
> > @@ -1,6 +1,5 @@
> > CONFIG_RCU_TORTURE_TEST=y
> > CONFIG_PRINTK_TIME=y
> > -CONFIG_HYPERVISOR_GUEST=y
> > CONFIG_PARAVIRT=y
> > CONFIG_KVM_GUEST=y
> > CONFIG_KCSAN_ASSUME_PLAIN_WRITES_ATOMIC=n
> > --
> > 2.34.1
> >