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@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); 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(). > + } 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