2020-03-15 09:52:44

by Xiaoyao Li

[permalink] [raw]
Subject: [PATCH 0/2] Fix errors when try to build kvm selftests on

I attempted to build KVM selftests on a specified dir, unfortunately
neither "make O=~/mydir TARGETS=kvm" in tools/testing/selftests, nor
"make OUTPUT=~/mydir" in tools/testing/selftests/kvm work.

This series aims to make both work.

Xiaoyao Li (2):
kvm: selftests: Fix no directory error when OUTPUT specified
selftests: export INSTALL_HDR_PATH if using "O" to specify output dir

tools/testing/selftests/Makefile | 6 +++++-
tools/testing/selftests/kvm/Makefile | 3 ++-
2 files changed, 7 insertions(+), 2 deletions(-)

--
2.20.1


2020-03-15 09:52:53

by Xiaoyao Li

[permalink] [raw]
Subject: [PATCH 2/2] selftests: export INSTALL_HDR_PATH if using "O" to specify output dir

When build kvm selftests in tools/testing/selftests directory with

make O=~/kselftests TARGETS=kvm

it fails building some kvm test binaries due to lack of header files,
e.g.,

x86_64/vmx_set_nested_state_test.c: In function ‘set_default_vmx_state’:
x86_64/vmx_set_nested_state_test.c:85:7: error: ‘struct
kvm_nested_state’ has no member named ‘hdr’
state->hdr.vmx.vmxon_pa = 0x1000;

kvm's Makefile unconditionally thinks kernel headers are installed
in the "kernel-src/usr" with "INSTALL_HDR_PATH = $(top_srcdir)/usr".
However, with "O" is specified, it also takes effect on
"make headers_install", that causes no header files generated in
"kernel-src/usr".

Export INSTALL_HDR_PATH when "O" is specified, so that kvm get the right
kernel headers by checking if INSTALL_HDR_PATH is defined.

Signed-off-by: Xiaoyao Li <[email protected]>
---
tools/testing/selftests/Makefile | 6 +++++-
tools/testing/selftests/kvm/Makefile | 2 +-
2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile
index 6ec503912bea..5fd72d955e24 100644
--- a/tools/testing/selftests/Makefile
+++ b/tools/testing/selftests/Makefile
@@ -116,6 +116,10 @@ ARCH ?= $(SUBARCH)
export KSFT_KHDR_INSTALL_DONE := 1
export BUILD

+ifneq (1,$(DEFAULT_INSTALL_HDR_PATH))
+export INSTALL_HDR_PATH := $(BUILD)/usr
+endif
+
# build and run gpio when output directory is the src dir.
# gpio has dependency on tools/gpio and builds tools/gpio
# objects in the src directory in all cases making the src
@@ -148,7 +152,7 @@ khdr:
ifeq (1,$(DEFAULT_INSTALL_HDR_PATH))
$(MAKE) --no-builtin-rules ARCH=$(ARCH) -C $(top_srcdir) headers_install
else
- $(MAKE) --no-builtin-rules INSTALL_HDR_PATH=$$BUILD/usr \
+ $(MAKE) --no-builtin-rules INSTALL_HDR_PATH=$(INSTALL_HDR_PATH) \
ARCH=$(ARCH) -C $(top_srcdir) headers_install
endif

diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile
index 86797e0242d4..c14d23c978d5 100644
--- a/tools/testing/selftests/kvm/Makefile
+++ b/tools/testing/selftests/kvm/Makefile
@@ -44,7 +44,7 @@ TEST_GEN_PROGS_s390x += kvm_create_max_vcpus
TEST_GEN_PROGS += $(TEST_GEN_PROGS_$(UNAME_M))
LIBKVM += $(LIBKVM_$(UNAME_M))

-INSTALL_HDR_PATH = $(top_srcdir)/usr
+INSTALL_HDR_PATH ?= $(top_srcdir)/usr
LINUX_HDR_PATH = $(INSTALL_HDR_PATH)/include/
LINUX_TOOL_INCLUDE = $(top_srcdir)/tools/include
LINUX_TOOL_ARCH_INCLUDE = $(top_srcdir)/tools/arch/x86/include
--
2.20.1

2020-03-15 09:52:58

by Xiaoyao Li

[permalink] [raw]
Subject: [PATCH 1/2] kvm: selftests: Fix no directory error when OUTPUT specified

When build kvm selftests to an specified directory with

make OUTPUT=~/kvm-selftests

it encouters following error:

/usr/bin/ld: cannot open output file
/home/lxy/kvm-selftests/x86_64/cr4_cpuid_sync_test: No such file or
directory
collect2: error: ld returned 1 exit status
make: *** [../lib.mk:141:
/home/lxy/kvm-selftests/x86_64/cr4_cpuid_sync_test] Error 1

Signed-off-by: Xiaoyao Li <[email protected]>
---
tools/testing/selftests/kvm/Makefile | 1 +
1 file changed, 1 insertion(+)

diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile
index d91c53b726e6..86797e0242d4 100644
--- a/tools/testing/selftests/kvm/Makefile
+++ b/tools/testing/selftests/kvm/Makefile
@@ -66,6 +66,7 @@ LDFLAGS += -pthread $(no-pie-option) $(pgste-option)
# After inclusion, $(OUTPUT) is defined and
# $(TEST_GEN_PROGS) starts with $(OUTPUT)/
include ../lib.mk
+x := $(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS))))

STATIC_LIBS := $(OUTPUT)/libkvm.a
LIBKVM_OBJ := $(patsubst %.c, $(OUTPUT)/%.o, $(LIBKVM))
--
2.20.1

2020-03-18 13:14:41

by Paolo Bonzini

[permalink] [raw]
Subject: Re: [PATCH 0/2] Fix errors when try to build kvm selftests on

On 15/03/20 10:34, Xiaoyao Li wrote:
> I attempted to build KVM selftests on a specified dir, unfortunately
> neither "make O=~/mydir TARGETS=kvm" in tools/testing/selftests, nor
> "make OUTPUT=~/mydir" in tools/testing/selftests/kvm work.
>
> This series aims to make both work.
>
> Xiaoyao Li (2):
> kvm: selftests: Fix no directory error when OUTPUT specified
> selftests: export INSTALL_HDR_PATH if using "O" to specify output dir
>
> tools/testing/selftests/Makefile | 6 +++++-
> tools/testing/selftests/kvm/Makefile | 3 ++-
> 2 files changed, 7 insertions(+), 2 deletions(-)
>

Queued, thanks.

Paolo

2020-03-23 15:35:14

by Shuah Khan

[permalink] [raw]
Subject: Re: [PATCH 0/2] Fix errors when try to build kvm selftests on

On 3/18/20 7:13 AM, Paolo Bonzini wrote:
> On 15/03/20 10:34, Xiaoyao Li wrote:
>> I attempted to build KVM selftests on a specified dir, unfortunately
>> neither "make O=~/mydir TARGETS=kvm" in tools/testing/selftests, nor
>> "make OUTPUT=~/mydir" in tools/testing/selftests/kvm work.
>>
>> This series aims to make both work.
>>
>> Xiaoyao Li (2):
>> kvm: selftests: Fix no directory error when OUTPUT specified
>> selftests: export INSTALL_HDR_PATH if using "O" to specify output dir
>>
>> tools/testing/selftests/Makefile | 6 +++++-
>> tools/testing/selftests/kvm/Makefile | 3 ++-
>> 2 files changed, 7 insertions(+), 2 deletions(-)
>>
>
> Queued, thanks.
>
> Paolo
>
>

Sorry for the delay. I would like to see these two to go through
kselftest tree. These involve frame work changes and will cause
problems if they aren't integrated in kselftest next branch.

thanks,
-- Shuah

2020-03-23 15:41:03

by Shuah Khan

[permalink] [raw]
Subject: Re: [PATCH 1/2] kvm: selftests: Fix no directory error when OUTPUT specified

On 3/15/20 3:34 AM, Xiaoyao Li wrote:
> When build kvm selftests to an specified directory with
>
> make OUTPUT=~/kvm-selftests
>
> it encouters following error:

btw lib.mk can't handle relative paths yet. The problems
you are seeing are related to that as well. This relative
path issue should be fixed in lib.mk and not in individual
tests.

>
> /usr/bin/ld: cannot open output file
> /home/lxy/kvm-selftests/x86_64/cr4_cpuid_sync_test: No such file or
> directory
> collect2: error: ld returned 1 exit status
> make: *** [../lib.mk:141:
> /home/lxy/kvm-selftests/x86_64/cr4_cpuid_sync_test] Error 1
>
> Signed-off-by: Xiaoyao Li <[email protected]>
> ---
> tools/testing/selftests/kvm/Makefile | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/tools/testing/selftests/kvm/Makefile b/tools/testing/selftests/kvm/Makefile
> index d91c53b726e6..86797e0242d4 100644
> --- a/tools/testing/selftests/kvm/Makefile
> +++ b/tools/testing/selftests/kvm/Makefile
> @@ -66,6 +66,7 @@ LDFLAGS += -pthread $(no-pie-option) $(pgste-option)
> # After inclusion, $(OUTPUT) is defined and
> # $(TEST_GEN_PROGS) starts with $(OUTPUT)/
> include ../lib.mk
> +x := $(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS))))

lib.mk would have created the directory.

thanks,
-- Shuah

2020-03-23 15:45:43

by Shuah Khan

[permalink] [raw]
Subject: Re: [PATCH 0/2] Fix errors when try to build kvm selftests on

On 3/18/20 7:13 AM, Paolo Bonzini wrote:
> On 15/03/20 10:34, Xiaoyao Li wrote:
>> I attempted to build KVM selftests on a specified dir, unfortunately
>> neither "make O=~/mydir TARGETS=kvm" in tools/testing/selftests, nor
>> "make OUTPUT=~/mydir" in tools/testing/selftests/kvm work.
>>
>> This series aims to make both work.
>>
>> Xiaoyao Li (2):
>> kvm: selftests: Fix no directory error when OUTPUT specified

This definitely isn't thr right fix for this issue.

>> selftests: export INSTALL_HDR_PATH if using "O" to specify output dir

Might be okay, but hard to find problems with the limited testing
done just on the kvm test.

>>
>> tools/testing/selftests/Makefile | 6 +++++-
>> tools/testing/selftests/kvm/Makefile | 3 ++-
>> 2 files changed, 7 insertions(+), 2 deletions(-)
>>
>
> Queued, thanks.
>
> Paolo
>
>
Can you please drop these for your queue. I would like to make sure
they work with other patches queued in kselftest next and would like
these go through kselftest tree.

It will be easier to find regressions when tested with other patches
to framework as opposed to limited testing on just the kvm test.

thanks,
-- Shuah

2020-03-23 19:44:05

by Paolo Bonzini

[permalink] [raw]
Subject: Re: [PATCH 0/2] Fix errors when try to build kvm selftests on

On 23/03/20 16:44, shuah wrote:
> On 3/18/20 7:13 AM, Paolo Bonzini wrote:
>> On 15/03/20 10:34, Xiaoyao Li wrote:
>>> I attempted to build KVM selftests on a specified dir, unfortunately
>>> neither??? "make O=~/mydir TARGETS=kvm" in tools/testing/selftests, nor
>>> "make OUTPUT=~/mydir" in tools/testing/selftests/kvm work.
>>>
>>> This series aims to make both work.
>>>
>>> Xiaoyao Li (2):
>>> ?? kvm: selftests: Fix no directory error when OUTPUT specified
>
> This definitely isn't thr right fix for this issue.
>
>>> ?? selftests: export INSTALL_HDR_PATH if using "O" to specify output dir
>
> Might be okay, but hard to find problems with the limited testing
> done just on the kvm test.
>
>>>
>>> ? tools/testing/selftests/Makefile???? | 6 +++++-
>>> ? tools/testing/selftests/kvm/Makefile | 3 ++-
>>> ? 2 files changed, 7 insertions(+), 2 deletions(-)
>>>
>>
>> Queued, thanks.
>>
>> Paolo
>>
>>
> Can you please drop these for your queue. I would like to make sure
> they work with other patches queued in kselftest next and would like
> these go through kselftest tree.
>
> It will be easier to find regressions when tested with other patches
> to framework as opposed to limited testing on just the kvm test.

Sure, thanks.

Paolo

2020-03-24 01:53:11

by Xiaoyao Li

[permalink] [raw]
Subject: Re: [PATCH 1/2] kvm: selftests: Fix no directory error when OUTPUT specified

On 3/23/2020 11:40 PM, shuah wrote:
> On 3/15/20 3:34 AM, Xiaoyao Li wrote:
>> When build kvm selftests to an specified directory with
>>
>>     make OUTPUT=~/kvm-selftests
>>
>> it encouters following error:
>
> btw lib.mk can't handle relative paths yet. The problems
> you are seeing are related to that as well.

I tried with absolute path as well. It didn't work.

> This relative
> path issue should be fixed in lib.mk and not in individual
> tests.

OK. I'll try to fix it in lib.mk

>>
>> /usr/bin/ld: cannot open output file
>> /home/lxy/kvm-selftests/x86_64/cr4_cpuid_sync_test: No such file or
>> directory
>> collect2: error: ld returned 1 exit status
>> make: *** [../lib.mk:141:
>> /home/lxy/kvm-selftests/x86_64/cr4_cpuid_sync_test] Error 1
>>
>> Signed-off-by: Xiaoyao Li <[email protected]>
>> ---
>>   tools/testing/selftests/kvm/Makefile | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/tools/testing/selftests/kvm/Makefile
>> b/tools/testing/selftests/kvm/Makefile
>> index d91c53b726e6..86797e0242d4 100644
>> --- a/tools/testing/selftests/kvm/Makefile
>> +++ b/tools/testing/selftests/kvm/Makefile
>> @@ -66,6 +66,7 @@ LDFLAGS += -pthread $(no-pie-option) $(pgste-option)
>>   # After inclusion, $(OUTPUT) is defined and
>>   # $(TEST_GEN_PROGS) starts with $(OUTPUT)/
>>   include ../lib.mk
>> +x := $(shell mkdir -p $(sort $(dir $(TEST_GEN_PROGS))))
>
> lib.mk would have created the directory.
>
> thanks,
> -- Shuah
>