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 1/5] lib: arm: Print test exit status on exit if chr-testdev is not available
Date: Mon, 6 Sep 2021 12:06:10 +0100 [thread overview]
Message-ID: <8a851ff0-a112-19ff-8f4c-9f6bed0cb4d9@arm.com> (raw)
In-Reply-To: <20210906105827.wneqtlrsgbz3pxk5@gator.home>
Hi Drew,
On 9/6/21 11:58 AM, Andrew Jones wrote:
> On Mon, Sep 06, 2021 at 11:20:31AM +0100, Alexandru Elisei wrote:
>> Hi Drew,
>>
>> Sorry for taking so long to reply, been busy with other things.
>>
>> On 7/12/21 5:36 PM, Andrew Jones wrote:
>>> On Fri, Jul 02, 2021 at 05:31:18PM +0100, Alexandru Elisei wrote:
>>>> The arm64 tests can be run under kvmtool, which doesn't emulate a
>>>> chr-testdev device. In preparation for adding run script support for
>>>> kvmtool, print the test exit status so the scripts can pick it up and
>>>> correctly mark the test as pass or fail.
>>>>
>>>> Signed-off-by: Alexandru Elisei <alexandru.elisei@arm.com>
>>>> ---
>>>> lib/chr-testdev.h | 1 +
>>>> lib/arm/io.c | 10 +++++++++-
>>>> lib/chr-testdev.c | 5 +++++
>>>> 3 files changed, 15 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/lib/chr-testdev.h b/lib/chr-testdev.h
>>>> index ffd9a851aa9b..09b4b424670e 100644
>>>> --- a/lib/chr-testdev.h
>>>> +++ b/lib/chr-testdev.h
>>>> @@ -11,4 +11,5 @@
>>>> */
>>>> extern void chr_testdev_init(void);
>>>> extern void chr_testdev_exit(int code);
>>>> +extern bool chr_testdev_available(void);
>>>> #endif
>>>> diff --git a/lib/arm/io.c b/lib/arm/io.c
>>>> index 343e10822263..9e62b571a91b 100644
>>>> --- a/lib/arm/io.c
>>>> +++ b/lib/arm/io.c
>>>> @@ -125,7 +125,15 @@ extern void halt(int code);
>>>>
>>>> void exit(int code)
>>>> {
>>>> - chr_testdev_exit(code);
>>>> + if (chr_testdev_available()) {
>>>> + chr_testdev_exit(code);
>>> chr_testdev_exit() already has a 'if !vcon goto out' in it, so you can
>>> just call it unconditionally. No need for chr_testdev_available().
>> I'm not sure what you mean. There has to be a way to check if chr-testdev is
>> available, and if it's not present on the system, to print the EXIT: STATUS
>> message, and vcon is static in chr-testdev.c.
>>
>> Are you suggesting that we move the message to chr_testdev_exit(code)?
> I'm saying you can unconditionally call chr_testdev_exit(), because it
> only conditionally does anything, and on the same condition that you're
> adding (vcon != NULL).
>
> $ /usr/bin/qemu-system-aarch64 -nodefaults -machine virt,accel=tcg -cpu cortex-a57 -device virtio-serial-device -device virtconsole,chardev=ctd -chardev testdev,id=ctd -device pci-testdev -display none -serial stdio -kernel arm/selftest.flat
> ABORT: selftest: no test specified
> SUMMARY: 0 tests
> $ echo $?
> 127
> $ /usr/bin/qemu-system-aarch64 -nodefaults -machine virt,accel=tcg -cpu cortex-a57 -display none -serial stdio -kernel arm/selftest.flat
> ABORT: selftest: no test specified
> SUMMARY: 0 tests
> $ echo $?
> 0
>
> See, no explosions when the device is removed. Just a lack of return code.
Yup, this makes sense, this is exactly what happens today with kvmtool.
>
> Also, since chr_testdev_exit() exits, any calls after it won't happen. So
> the exit print statement doesn't need to be in an else clause. That said,
> I think the print statement should come first in order to also put it in
> the qemu output logs. We might as well have consistent output between qemu
> and kvmtool.
Makes sense, I'll move the printf before chr_testdev_exit(). Thanks for the quick
reply!
Thanks,
Alex
>
> Thanks,
> drew
>
>
>> Thanks,
>>
>> Alex
>>
>>>> + } else {
>>>> + /*
>>>> + * Print the test return code in the format used by chr-testdev
>>>> + * so the runner script can parse it.
>>>> + */
>>>> + printf("\nEXIT: STATUS=%d\n", ((code) << 1) | 1);
>>>> + }
>>>> psci_system_off();
>>>> halt(code);
>>>> __builtin_unreachable();
>>>> diff --git a/lib/chr-testdev.c b/lib/chr-testdev.c
>>>> index b3c641a833fe..301e73a6c064 100644
>>>> --- a/lib/chr-testdev.c
>>>> +++ b/lib/chr-testdev.c
>>>> @@ -68,3 +68,8 @@ void chr_testdev_init(void)
>>>> in_vq = vqs[0];
>>>> out_vq = vqs[1];
>>>> }
>>>> +
>>>> +bool chr_testdev_available(void)
>>>> +{
>>>> + return vcon != NULL;
>>>> +}
>>>> --
>>>> 2.32.0
>>>>
>>> Thanks,
>>> drew
>>>
next prev parent reply other threads:[~2021-09-06 11:04 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 [this message]
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
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=8a851ff0-a112-19ff-8f4c-9f6bed0cb4d9@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