[LTP] [PATCH 4/7] KVM: Add async communication helper functions
Martin Doucha
mdoucha@suse.cz
Thu May 18 10:36:44 CEST 2023
On 18. 05. 23 0:47, Petr Vorel wrote:
> Hi Martin,
>
> Acked-by: Petr Vorel <pvorel@suse.cz>
>
>> /*
>> * Result value indicating end of test. If the test program exits using
>> * the HLT instruction with any valid result value other than KVM_TEXIT or
>> diff --git a/testcases/kernel/kvm/include/kvm_guest.h b/testcases/kernel/kvm/include/kvm_guest.h
>> index ec13c5845..96f246155 100644
>> --- a/testcases/kernel/kvm/include/kvm_guest.h
>> +++ b/testcases/kernel/kvm/include/kvm_guest.h
>> @@ -64,6 +64,20 @@ void tst_brk_(const char *file, const int lineno, int result,
>> const char *message) __attribute__((noreturn));
>> #define tst_brk(result, msg) tst_brk_(__FILE__, __LINE__, (result), (msg))
>
> BTW (unrelated to this commit, as it was not added to this commit) tst_brk()
> definition from include/tst_test.h contains also
> TST_BRK_SUPPORTS_ONLY_TCONF_TBROK().
>
> And tst_res() has also TST_RES_SUPPORTS_TCONF_TFAIL_TINFO_TPASS_TWARN().
The support macros are not needed, the controller program always handles
TBROK using tst_brk() even if the guest incorrectly called tst_res(TBROK).
> We could rename tst_res_flags.h to tst_res.h and add there tst_brk() and
> tst_res() definitions and tst_brk_() and tst_res_() signatures.
I don't think that's a good idea. The guest library currently does not
support variadic parameters for tst_res() and tst_brk() so the function
signatures are slightly different.
>> diff --git a/testcases/kernel/kvm/lib_guest.c b/testcases/kernel/kvm/lib_guest.c
>> index d3b2ac3d5..f3e21d3d6 100644
>> --- a/testcases/kernel/kvm/lib_guest.c
>> +++ b/testcases/kernel/kvm/lib_guest.c
>> @@ -155,6 +155,22 @@ void tst_brk_(const char *file, const int lineno, int result,
>> kvm_exit();
>> }
>
>> +void tst_signal_host(void *data)
>> +{
>> + test_result->file_addr = (uintptr_t)data;
>> + test_result->result = KVM_TSYNC;
>> +}
>> +
>> +void tst_wait_host(void *data)
>> +{
>> + volatile int32_t *vres = &test_result->result;
>> +
>> + tst_signal_host(data);
>> +
>> + while (*vres != KVM_TNONE)
>> + ;
> Interesting there is no any usleep().
usleep() does not exist in the guest library. And even if it did,
yielding the CPU to the host would prevent kvm_svm03 from ever
reproducing the CLGI bug.
--
Martin Doucha mdoucha@suse.cz
QA Engineer for Software Maintenance
SUSE LINUX, s.r.o.
CORSO IIa
Krizikova 148/34
186 00 Prague 8
Czech Republic
More information about the ltp
mailing list