[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