[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 0/7] semihosting: proper QEMU exit on semihosted exit syscall
From: |
Luc Michel |
Subject: |
Re: [PATCH 0/7] semihosting: proper QEMU exit on semihosted exit syscall |
Date: |
Mon, 20 Jun 2022 21:08:34 +0200 |
User-agent: |
Mutt/1.9.4 (2018-02-28) |
On 08:59 Mon 20 Jun , Richard Henderson wrote:
> On 6/20/22 07:24, Luc Michel wrote:
> > Hi,
> >
> > This series implements a clean way for semihosted exit syscalls to
> > terminate QEMU with a given return code.
> >
> > Until now, exit syscalls implementations consisted in calling exit()
> > with the wanted return code. The problem with this approach is that
> > other CPUs are not properly stopped, leading to possible crashes in
> > MTTCG mode, especially when at_exit callbacks have been registered. This
> > can be the case e.g., when plugins are in use. Plugins can register
> > at_exit callbacks. Those will be called on the CPU thread the exit
> > syscall is comming from, while other CPUs can continue to run and thus
> > call other plugin callbacks.
> >
> > The semihosting_exit_request function provides a mean to cleanly
> > terminate QEMU. It introduces an new exit reason
> > (SHUTDOWN_CAUSE_GUEST_SEMI_EXIT) used in this case. The CPU is stopped
> > and returns to the main CPU loop so that no more instruction get
> > executed (the semihosting_exit_request is declared G_NORETURN).
> >
> > All targets are converted to use this new function.
>
> Did you test a complete build? At a glance I would guess that
> arm-linux-user will no longer link because qemu_set/get_exit_status is
> missing.
You are right I forgot to test build *-linux-user. There is a
compilation issue because I forgot "static inline" on the
semihosting_exit_request function on the CONFIG_USER_ONLY side. I'll fix
that in v2.
qemu_set/get_exit_status is fine though as it is only called from
softmmu-only code (and declared in sysemu/sysemu.h).
thanks,
Luc
>
>
> r~
>
> >
> > Thanks,
> > Luc
> >
> > Luc Michel (7):
> > softmmu: add qemu_[set|get]_exit_status functions
> > semihosting: add the semihosting_exit_request function
> > semihosting/arm-compat-semi: use semihosting_exit_request
> > target/m68k: use semihosting_exit_request on semihosted exit syscall
> > target/mips: use semihosting_exit_request on semihosted exit syscall
> > target/nios2: use semihosting_exit_request on semihosted exit syscall
> > target/xtensa: use semihosting_exit_request on semihosted exit syscall
> >
> > qapi/run-state.json | 4 +++-
> > include/semihosting/semihost.h | 4 ++++
> > include/sysemu/sysemu.h | 2 ++
> > semihosting/arm-compat-semi.c | 3 +--
> > semihosting/config.c | 17 +++++++++++++++++
> > softmmu/main.c | 2 +-
> > softmmu/runstate.c | 11 +++++++++++
> > target/m68k/m68k-semi.c | 4 ++--
> > target/mips/tcg/sysemu/mips-semi.c | 2 +-
> > target/nios2/nios2-semi.c | 4 ++--
> > target/xtensa/xtensa-semi.c | 2 +-
> > 11 files changed, 45 insertions(+), 10 deletions(-)
> >
>
>
>
> To declare a filtering error, please use the following link :
> https://www.security-mail.net/reporter.php?mid=bb16.62b09954.79e61.0&r=lmichel%40kalray.eu&s=richard.henderson%40linaro.org&o=Re%3A+%5BPATCH+0%2F7%5D+semihosting%3A+proper+QEMU+exit+on+semihosted+exit+syscall&verdict=C&c=d52db680df8df28629e4a26f18787c389730fd78
>
--
- [PATCH 7/7] target/xtensa: use semihosting_exit_request on semihosted exit syscall, (continued)
- [PATCH 7/7] target/xtensa: use semihosting_exit_request on semihosted exit syscall, Luc Michel, 2022/06/20
- [PATCH 1/7] softmmu: add qemu_[set|get]_exit_status functions, Luc Michel, 2022/06/20
- [PATCH 4/7] target/m68k: use semihosting_exit_request on semihosted exit syscall, Luc Michel, 2022/06/20
- [PATCH 3/7] semihosting/arm-compat-semi: use semihosting_exit_request, Luc Michel, 2022/06/20
- [PATCH 6/7] target/nios2: use semihosting_exit_request on semihosted exit syscall, Luc Michel, 2022/06/20
- [PATCH 5/7] target/mips: use semihosting_exit_request on semihosted exit syscall, Luc Michel, 2022/06/20
- Re: [PATCH 0/7] semihosting: proper QEMU exit on semihosted exit syscall, Peter Maydell, 2022/06/20
- Re: [PATCH 0/7] semihosting: proper QEMU exit on semihosted exit syscall, Richard Henderson, 2022/06/20
- Re: [PATCH 0/7] semihosting: proper QEMU exit on semihosted exit syscall,
Luc Michel <=