From: Alexandru Elisei <alexandru.elisei@arm.com>
To: Andrew Jones <drjones@redhat.com>
Cc: thuth@redhat.com, pbonzini@redhat.com, lvivier@redhat.com,
kvm-ppc@vger.kernel.org, david@redhat.com, frankja@linux.ibm.com,
cohuck@redhat.com, imbrenda@linux.ibm.com,
linux-s390@vger.kernel.org, kvm@vger.kernel.org,
kvmarm@lists.cs.columbia.edu, andre.przywara@arm.com,
maz@kernel.org, vivek.gautam@arm.com
Subject: Re: [kvm-unit-tests RFC PATCH 4/5] scripts: Generate kvmtool standalone tests
Date: Thu, 9 Sep 2021 12:11:52 +0100 [thread overview]
Message-ID: <9d5da497-7070-31ef-282a-a11a86e0102e@arm.com> (raw)
In-Reply-To: <20210908160743.l4hrl4de7wkxwuda@gator>
Hi Drew,
On 9/8/21 5:07 PM, Andrew Jones wrote:
> On Wed, Sep 08, 2021 at 04:37:39PM +0100, Alexandru Elisei wrote:
>> Hi Drew,
>>
>> On 9/7/21 11:21 AM, Andrew Jones wrote:
>>> On Fri, Jul 02, 2021 at 05:31:21PM +0100, Alexandru Elisei wrote:
>>>> Add support for the standalone target when running kvm-unit-tests under
>>>> kvmtool.
>>>>
>>>> Example command line invocation:
>>>>
>>>> $ ./configure --target=kvmtool
>>>> $ make clean && make standalone
>>>>
>>>> Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com>
>>>> ---
>>>> scripts/mkstandalone.sh | 14 +++++++-------
>>>> 1 file changed, 7 insertions(+), 7 deletions(-)
>>>>
>>>> diff --git a/scripts/mkstandalone.sh b/scripts/mkstandalone.sh
>>>> index 16f461c06842..d84bdb7e278c 100755
>>>> --- a/scripts/mkstandalone.sh
>>>> +++ b/scripts/mkstandalone.sh
>>>> @@ -44,6 +44,10 @@ generate_test ()
>>>> config_export ARCH_NAME
>>>> config_export PROCESSOR
>>>>
>>>> + if [ "$ARCH" = "arm64" ] || [ "$ARCH" = "arm" ]; then
>>>> + config_export TARGET
>>>> + fi
>>> Should export unconditionally, since we'll want TARGET set
>>> unconditionally.
>> Yes, will do.
>>
>>>> +
>>>> echo "echo BUILD_HEAD=$(cat build-head)"
>>>>
>>>> if [ ! -f $kernel ]; then
>>>> @@ -59,7 +63,7 @@ generate_test ()
>>>> echo 'export FIRMWARE'
>>>> fi
>>>>
>>>> - if [ "$ENVIRON_DEFAULT" = "yes" ] && [ "$ERRATATXT" ]; then
>>>> + if [ "$TARGET" != "kvmtool" ] && [ "$ENVIRON_DEFAULT" = "yes" ] && [ "$ERRATATXT" ]; then
>>> I think it would be better to ensure that ENVIRON_DEFAULT is "no" for
>>> TARGET=kvmtool in configure.
>> From looking at the code, it is my understanding that with ENVIRON_DEFAULT=yes, an
>> initrd file is generated with the contents of erratatxt and other information, in
>> a key=value pair format. This initrd is then passed on to the test (please correct
>> me if I'm wrong). With ENVIRON_DEFAULT=no (set via ./configure
>> --disable-default-environ), this initrd is not generated.
>>
>> kvmtool doesn't have support for passing an initrd when loading firmware, so yes,
>> I believe the default should be no.
>>
>> However, I have two questions:
>>
>> 1. What happens when the user specifically enables the default environ via
>> ./configure --enable-default-environ --target=kvmtool? In my opinion, that should
>> be an error because the user wants something that is not possible with kvmtool
>> (loading an image with --firmware in kvmtool means that the initrd image it not
>> loaded into the guest memory and no node is generated for it in the dtb), but I
>> would like to hear your thoughts about it.
> As part of the forcing ENVIRON_DEFAULT to "no" for kvmtool in configure an
> error should be generated if a user tries to explicitly enable it.
>
>> 2. If the default environment is disabled, is it still possible for an user to
>> pass an initrd via other means? I couldn't find where that is implemented, so I'm
>> guessing it's not possible.
> Yes, a user could have a KVM_UNIT_TESTS_ENV environment variable set when
> they launch the tests. If that variable points to a file then it will get
> passed as an initrd. I guess you should also report a warning in arm/run
> if KVM_UNIT_TESTS_ENV is set which states that the environment file will
> be ignored when running with kvmtool.
Thank you for explaining it, I had looked at
scripts/arch-run.bash::initrd_create(), but it didn't click that setting the
KVM_UNIT_TESTS_ENV environment variable is enough to generate and use the initrd.
After looking at the code some more, in the logs the -initrd argument is shown as
a comment, instead of an actual argument that is passed to qemu:
timeout -k 1s --foreground 90s /usr/bin/qemu-system-aarch64 -nodefaults -machine
virt,gic-version=host,accel=kvm -cpu host -device virtio-serial-device -device
virtconsole,chardev=ctd -chardev testdev,id=ctd -device pci-testdev -display none
-serial stdio -kernel arm/cache.flat -smp 1 # -initrd /tmp/tmp.rUIZ3h9KLJ
QEMU_ACCEL = kvm
INFO: IDC-DIC: dcache clean to PoU required
INFO: IDC-DIC: icache invalidation to PoU required
PASS: IDC-DIC: code generation
SUMMARY: 1 tests
This is done intentionally in scripts/arch-run.bash::run_qemu(). I don't
understand the reason for that. When I first looked at the logs, I was sure that
no initrd is passed to the test. I had to go dig through the scripts to figure out
that the "#" sign (which marks the beginning of a comment) is not present in the
qemu invocation.
Thanks,
Alex
>
> There aren't currently any other ways to invoke the addition of the
> -initrd command line option, because so far we only support passing a
> single file to test (the environment "file"). If we ever want to pass
> more files, then we'd need to create a simple file system on the initrd
> and make it possible to add -initrd even when no environment is desired.
> But, that may never happen.
>
> Thanks,
> drew
>
>> Thanks,
>>
>> Alex
>>
>>>
>>>> temp_file ERRATATXT "$ERRATATXT"
>>>> echo 'export ERRATATXT'
>>>> fi
>>>> @@ -95,12 +99,8 @@ function mkstandalone()
>>>> echo Written $standalone.
>>>> }
>>>>
>>>> -if [ "$TARGET" = "kvmtool" ]; then
>>>> - echo "Standalone tests not supported with kvmtool"
>>>> - exit 2
>>>> -fi
>>>> -
>>>> -if [ "$ENVIRON_DEFAULT" = "yes" ] && [ "$ERRATATXT" ] && [ ! -f "$ERRATATXT" ]; then
>>>> +if [ "$TARGET" != "kvmtool" ] && [ "$ENVIRON_DEFAULT" = "yes" ] && \
>>>> + [ "$ERRATATXT" ] && [ ! -f "$ERRATATXT" ]; then
>>>> echo "$ERRATATXT not found. (ERRATATXT=$ERRATATXT)" >&2
>>>> exit 2
>>>> fi
>>>> --
>>>> 2.32.0
>>>>
>>> Thanks,
>>> drew
>>>
next prev parent reply other threads:[~2021-09-09 11:10 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-02 16:31 [kvm-unit-tests RFC PATCH 0/5] arm: Add kvmtool to the runner script Alexandru Elisei
2021-07-02 16:31 ` [kvm-unit-tests RFC PATCH 1/5] lib: arm: Print test exit status on exit if chr-testdev is not available Alexandru Elisei
2021-07-12 16:36 ` Andrew Jones
2021-09-06 10:20 ` Alexandru Elisei
2021-09-06 10:58 ` Andrew Jones
2021-09-06 11:06 ` Alexandru Elisei
2021-07-12 16:51 ` Andre Przywara
2021-07-12 17:07 ` Andrew Jones
2021-07-12 17:12 ` Nadav Amit
2021-07-02 16:31 ` [kvm-unit-tests RFC PATCH 2/5] scripts: Rename run_qemu_status -> run_test_status Alexandru Elisei
2021-07-12 16:37 ` Andrew Jones
2021-07-13 7:45 ` Thomas Huth
2021-07-02 16:31 ` [kvm-unit-tests RFC PATCH 3/5] run_tests.sh: Add kvmtool support Alexandru Elisei
2021-07-12 16:52 ` Andre Przywara
2021-09-06 10:28 ` Alexandru Elisei
2021-09-06 11:01 ` Andrew Jones
2021-09-06 11:07 ` Alexandru Elisei
2021-09-07 10:17 ` Andrew Jones
2021-09-08 14:33 ` Alexandru Elisei
2021-09-08 15:09 ` Andrew Jones
2021-09-08 15:46 ` Alexandru Elisei
2021-09-08 15:49 ` Andrew Jones
2021-09-09 11:33 ` Alexandru Elisei
2021-09-09 12:49 ` Andrew Jones
2021-07-02 16:31 ` [kvm-unit-tests RFC PATCH 4/5] scripts: Generate kvmtool standalone tests Alexandru Elisei
2021-09-07 10:21 ` Andrew Jones
2021-09-08 15:37 ` Alexandru Elisei
2021-09-08 16:07 ` Andrew Jones
2021-09-09 11:11 ` Alexandru Elisei [this message]
2021-09-09 13:05 ` Andrew Jones
2021-09-09 13:47 ` Alexandru Elisei
2021-09-09 13:54 ` Andrew Jones
2021-09-09 14:42 ` Alexandru Elisei
2021-07-02 16:31 ` [kvm-unit-tests RFC PATCH 5/5] configure: Ignore --erratatxt when --target=kvmtool Alexandru Elisei
2021-09-07 10:25 ` Andrew Jones
2021-09-08 16:13 ` Alexandru Elisei
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=9d5da497-7070-31ef-282a-a11a86e0102e@arm.com \
--to=alexandru.elisei@arm.com \
--cc=andre.przywara@arm.com \
--cc=cohuck@redhat.com \
--cc=david@redhat.com \
--cc=drjones@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=kvm-ppc@vger.kernel.org \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=linux-s390@vger.kernel.org \
--cc=lvivier@redhat.com \
--cc=maz@kernel.org \
--cc=pbonzini@redhat.com \
--cc=thuth@redhat.com \
--cc=vivek.gautam@arm.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).