On Mon, Jul 12, 2021 at 05:51:55PM +0100, Andre Przywara wrote: > On Fri, 2 Jul 2021 17:31:18 +0100 > Alexandru Elisei <alexandru.elisei@xxxxxxx> wrote: > > Hi, > > > 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@xxxxxxx> > > --- > > 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); > > + } 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); > > It's more me being clueless here rather than a problem, but where does > this "EXIT: STATUS" line come from? In lib/chr-testdev.c I see "%dq", > so it this coming from QEMU (but I couldn't find it in there)? > > But anyways the patch looks good and matches what PPC and s390 do. I invented the 'EXIT: STATUS' format for PPC, which didn't/doesn't have an exit code testdev. Now that it has also been adopted by s390 I guess we've got a kvm-unit-tests standard to follow for arm :-) Thanks, drew > > Cheers, > Andre > > > > + } > > 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; > > +} >