[LTP] [PATCH 4/7] KVM: Add async communication helper functions
Petr Vorel
pvorel@suse.cz
Thu May 18 11:55:03 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).
ack
> > 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.
Ah, right.
> > > 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.
Ah, I thought I'm missing something obvious, thanks for an explanation.
Kind regards,
Petr
More information about the ltp
mailing list