Message ID | 20220610131442.5032-1-mdoucha@suse.cz |
---|---|
State | Superseded |
Headers | show |
Series | configure: Check for KVM linker script support | expand |
Hi! > Some toolchains don't fully support the KVM linker scripts. Disable KVM tests > if linker check fails in configure script. > > Signed-off-by: Martin Doucha <mdoucha@suse.cz> > --- > configure.ac | 14 ++++++++++++++ > include/mk/features.mk.in | 3 +++ > testcases/kernel/Makefile | 5 ++++- > 3 files changed, 21 insertions(+), 1 deletion(-) > > diff --git a/configure.ac b/configure.ac > index 816ebf820..88ecbafda 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -397,6 +397,20 @@ LTP_CHECK_TASKSTATS > test "x$with_tirpc" = xyes && LTP_CHECK_TIRPC > LTP_DETECT_HOST_CPU > > +AC_MSG_CHECKING([whether linker can handle KVM payloads]) > +ltp_backup_ldflags=$LDFLAGS > +LDFLAGS="$LDFLAGS -T ${srcdir}/testcases/kernel/kvm/linker/${HOST_CPU}.lds" > +AC_LINK_IFELSE([AC_LANG_PROGRAM()], > + [ > + AC_MSG_RESULT([yes]) > + AC_SUBST([WITH_KVM_TESTSUITE],["yes"]) > + ], > + [ > + AC_MSG_RESULT([no]) > + AC_SUBST([WITH_KVM_TESTSUITE],["no"]) > + ]) > +LDFLAGS="$ltp_backup_ldflags" > + > AC_OUTPUT > > cat << EOF > diff --git a/include/mk/features.mk.in b/include/mk/features.mk.in > index ecb15a0f7..802ee0ba8 100644 > --- a/include/mk/features.mk.in > +++ b/include/mk/features.mk.in > @@ -52,3 +52,6 @@ WITH_REALTIME_TESTSUITE := no > else > WITH_REALTIME_TESTSUITE := @WITH_REALTIME_TESTSUITE@ > endif > + > +# Enable testcases/kernel/kvm compile and install? > +WITH_KVM_TESTSUITE := @WITH_KVM_TESTSUITE@ > diff --git a/testcases/kernel/Makefile b/testcases/kernel/Makefile > index c0fa24147..bf890e175 100644 > --- a/testcases/kernel/Makefile > +++ b/testcases/kernel/Makefile > @@ -29,7 +29,6 @@ SUBDIRS += connectors \ > io \ > ipc \ > irq \ > - kvm \ > logging \ > mem \ > numa \ > @@ -45,6 +44,10 @@ ifeq ($(WITH_POWER_MANAGEMENT_TESTSUITE),yes) > SUBDIRS += power_management > endif > > +ifeq ($(WITH_KVM_TESTSUITE),yes) > +SUBDIRS += kvm > +endif Skipping the whole directory will actually cause problems too, since the runltp files does include the kvm_pagefault01 now which will obvious fail because the binary would be missing. I'm not sure what the best solution would be, maybe install dummy libraries that just print TCONF in a case that linker does now work?
Hi! > Skipping the whole directory will actually cause problems too, since the > runltp files does include the kvm_pagefault01 now which will obvious > fail because the binary would be missing. > > I'm not sure what the best solution would be, maybe install dummy > libraries that just print TCONF in a case that linker does now work? s/libraries/binaries/
On 10. 06. 22 15:33, Cyril Hrubis wrote: > Skipping the whole directory will actually cause problems too, since the > runltp files does include the kvm_pagefault01 now which will obvious > fail because the binary would be missing. > > I'm not sure what the best solution would be, maybe install dummy > libraries that just print TCONF in a case that linker does now work? KVM tests have their own runfile which can be simply skipped. These tests should not be included in any other runfiles because they should only be run on baremetal. That's the solution: Don't run the KVM runfile if the KVM tests were not built. Also, the KVM Makefile already builds nothing on non-x86 archs so the problem was there from the beginning.
Hi! > > Skipping the whole directory will actually cause problems too, since the > > runltp files does include the kvm_pagefault01 now which will obvious > > fail because the binary would be missing. > > > > I'm not sure what the best solution would be, maybe install dummy > > libraries that just print TCONF in a case that linker does now work? > > KVM tests have their own runfile which can be simply skipped. These > tests should not be included in any other runfiles because they should > only be run on baremetal. That's the solution: Don't run the KVM runfile > if the KVM tests were not built. > > Also, the KVM Makefile already builds nothing on non-x86 archs so the > problem was there from the beginning. Looks like these are not in default scenario either, then this is not a reson to block the patch. However we should really figure out how to deal with cases like this at least for the new testrunner.
> Hi! > > > Skipping the whole directory will actually cause problems too, since the > > > runltp files does include the kvm_pagefault01 now which will obvious > > > fail because the binary would be missing. > > > I'm not sure what the best solution would be, maybe install dummy > > > libraries that just print TCONF in a case that linker does now work? > > KVM tests have their own runfile which can be simply skipped. These > > tests should not be included in any other runfiles because they should > > only be run on baremetal. That's the solution: Don't run the KVM runfile > > if the KVM tests were not built. > > Also, the KVM Makefile already builds nothing on non-x86 archs so the > > problem was there from the beginning. I thought we're using TST_TEST_TCONF() for non-x86 archs. > Looks like these are not in default scenario either, then this is not a > reson to block the patch. However we should really figure out how to > deal with cases like this at least for the new testrunner. Yes, not having to use TST_TEST_TCONF() would be nice. Kind regards, Petr
On 13. 06. 22 13:59, Petr Vorel wrote: >>> Also, the KVM Makefile already builds nothing on non-x86 archs so the >>> problem was there from the beginning. > > I thought we're using TST_TEST_TCONF() for non-x86 archs. We will use TST_TEST_TCONF() for KVM on unsupported archs once they have their own guest bootstrap code (which is currently available only for 32bit and 64bit x86). But it is not possible to link test binaries without bootstrap code so non-x86 archs are currently skipped during build.
Hi Martin, > > I thought we're using TST_TEST_TCONF() for non-x86 archs. > We will use TST_TEST_TCONF() for KVM on unsupported archs once they have > their own guest bootstrap code (which is currently available only for > 32bit and 64bit x86). But it is not possible to link test binaries > without bootstrap code so non-x86 archs are currently skipped during build. Ah, makes sense. Thanks for info! Kind regards, Petr
diff --git a/configure.ac b/configure.ac index 816ebf820..88ecbafda 100644 --- a/configure.ac +++ b/configure.ac @@ -397,6 +397,20 @@ LTP_CHECK_TASKSTATS test "x$with_tirpc" = xyes && LTP_CHECK_TIRPC LTP_DETECT_HOST_CPU +AC_MSG_CHECKING([whether linker can handle KVM payloads]) +ltp_backup_ldflags=$LDFLAGS +LDFLAGS="$LDFLAGS -T ${srcdir}/testcases/kernel/kvm/linker/${HOST_CPU}.lds" +AC_LINK_IFELSE([AC_LANG_PROGRAM()], + [ + AC_MSG_RESULT([yes]) + AC_SUBST([WITH_KVM_TESTSUITE],["yes"]) + ], + [ + AC_MSG_RESULT([no]) + AC_SUBST([WITH_KVM_TESTSUITE],["no"]) + ]) +LDFLAGS="$ltp_backup_ldflags" + AC_OUTPUT cat << EOF diff --git a/include/mk/features.mk.in b/include/mk/features.mk.in index ecb15a0f7..802ee0ba8 100644 --- a/include/mk/features.mk.in +++ b/include/mk/features.mk.in @@ -52,3 +52,6 @@ WITH_REALTIME_TESTSUITE := no else WITH_REALTIME_TESTSUITE := @WITH_REALTIME_TESTSUITE@ endif + +# Enable testcases/kernel/kvm compile and install? +WITH_KVM_TESTSUITE := @WITH_KVM_TESTSUITE@ diff --git a/testcases/kernel/Makefile b/testcases/kernel/Makefile index c0fa24147..bf890e175 100644 --- a/testcases/kernel/Makefile +++ b/testcases/kernel/Makefile @@ -29,7 +29,6 @@ SUBDIRS += connectors \ io \ ipc \ irq \ - kvm \ logging \ mem \ numa \ @@ -45,6 +44,10 @@ ifeq ($(WITH_POWER_MANAGEMENT_TESTSUITE),yes) SUBDIRS += power_management endif +ifeq ($(WITH_KVM_TESTSUITE),yes) +SUBDIRS += kvm +endif + endif ifeq ($(ANDROID),1)
Some toolchains don't fully support the KVM linker scripts. Disable KVM tests if linker check fails in configure script. Signed-off-by: Martin Doucha <mdoucha@suse.cz> --- configure.ac | 14 ++++++++++++++ include/mk/features.mk.in | 3 +++ testcases/kernel/Makefile | 5 ++++- 3 files changed, 21 insertions(+), 1 deletion(-)