From: "Alex Bennée" <alex.bennee@linaro.org>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: QEMU Developers <qemu-devel@nongnu.org>,
qemu-arm <qemu-arm@nongnu.org>,
Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [PATCH v1 05/23] semihosting: enable chardev backed output
Date: Sat, 11 May 2019 19:04:31 +0100 [thread overview]
Message-ID: <87k1ewrhow.fsf@zen.linaroharston> (raw)
In-Reply-To: <CAFEAcA9q9n24wZF9nRM=norAK+tPv9LL4LM4-8gwH8F+0D0umw@mail.gmail.com>
Peter Maydell <peter.maydell@linaro.org> writes:
> On Fri, 10 May 2019 at 17:59, Alex Bennée <alex.bennee@linaro.org> wrote:
>>
>>
>> Peter Maydell <peter.maydell@linaro.org> writes:
>>
>> > On Thu, 9 May 2019 at 17:59, Alex Bennée <alex.bennee@linaro.org> wrote:
>> >>
>> >> For running system tests we want to be able to re-direct output to a
>> >> file like we do with serial output. This does the wiring to allow us
>> >> to treat semihosting like just another character output device.
>> >>
>> >> diff --git a/qemu-options.hx b/qemu-options.hx
>> >> index 51802cbb266..6aa3a08c2fb 100644
>> >> --- a/qemu-options.hx
>> >> +++ b/qemu-options.hx
>> >> @@ -3975,12 +3975,12 @@ STEXI
>> >> Enable semihosting mode (ARM, M68K, Xtensa, MIPS, Nios II only).
>> >> ETEXI
>> >> DEF("semihosting-config", HAS_ARG, QEMU_OPTION_semihosting_config,
>> >> - "-semihosting-config [enable=on|off][,target=native|gdb|auto][,arg=str[,...]]\n" \
>> >> + "-semihosting-config [enable=on|off][,target=native|gdb|auto][,chardev=id][,arg=str[,...]]\n" \
>> >> " semihosting configuration\n",
>> >> QEMU_ARCH_ARM | QEMU_ARCH_M68K | QEMU_ARCH_XTENSA | QEMU_ARCH_LM32 |
>> >> QEMU_ARCH_MIPS | QEMU_ARCH_NIOS2)
>> >
>> > As you can see in the docs here, semihosting is supported on
>> > five guest architectures, so we should implement this new
>> > feature for all of them, not just arm.
>>
>> As I've introduced this for testing I see no reason not to add support
>> for other architectures. However I was hoping this is something that
>> could be done organically as other system tests get enabled.
>
> IME transitions done "organically" really means "slowly, and
> nobody ever gets round to actually completing them".
> Semihosting is a user-facing feature, so if we want to add
> the user feature of allowing output to go to a chardev we
> should add it properly, I think.
So a quick review of the current semi output:
- MIPS
This has a fairly generalised open/read/write support with special
handling for open/close on /dev/std[out/err/in]. There is also a
UHI_plog which currently just printf's to stdout
- xtensa
This already has support for a sim_console char device as part of
the xtensa sim platform. Otherwise the TARGET_SYS_open can open
paths directly (which I assume could include stdio) which then
read/write.
- m68k
This has the usual open/read/write/close support directly to the
FD's as well as support for integrating with the gdbstub via
gdb_do_syscall.
- lm32
Although based on the m68k semithosting support it lacks the gdbstub
integration. It has the usual open/read/write/close stuff.
- NIOS2
Again based on the m68k semihosting but looks like it was taken
later because it retains the gdbsub integration support.
Generally all the other semihosting stuff looks a lot cleaner - probably
an indication of being done later and avoiding some of the warts of the
early arm semihosting code.
One difference with ARM is it has specific calls aside from the
open/read/write/close (WRITEC/WRITE0) which are specifically aimed at
"console" type logging. They don't seem to require an explicit open at
the start and assume you can write to them from the get go.
One question that would need to be answered is should the chardev
support be generalised for all semihosts that can read/write to the
stdio outputs or should we restrict it to the "console" log operations
(xtensa sim, mips plog and ARM)?
--
Alex Bennée
WARNING: multiple messages have this Message-ID (diff)
From: "Alex Bennée" <alex.bennee@linaro.org>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
qemu-arm <qemu-arm@nongnu.org>,
QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH v1 05/23] semihosting: enable chardev backed output
Date: Sat, 11 May 2019 19:04:31 +0100 [thread overview]
Message-ID: <87k1ewrhow.fsf@zen.linaroharston> (raw)
In-Reply-To: <CAFEAcA9q9n24wZF9nRM=norAK+tPv9LL4LM4-8gwH8F+0D0umw@mail.gmail.com>
Peter Maydell <peter.maydell@linaro.org> writes:
> On Fri, 10 May 2019 at 17:59, Alex Bennée <alex.bennee@linaro.org> wrote:
>>
>>
>> Peter Maydell <peter.maydell@linaro.org> writes:
>>
>> > On Thu, 9 May 2019 at 17:59, Alex Bennée <alex.bennee@linaro.org> wrote:
>> >>
>> >> For running system tests we want to be able to re-direct output to a
>> >> file like we do with serial output. This does the wiring to allow us
>> >> to treat semihosting like just another character output device.
>> >>
>> >> diff --git a/qemu-options.hx b/qemu-options.hx
>> >> index 51802cbb266..6aa3a08c2fb 100644
>> >> --- a/qemu-options.hx
>> >> +++ b/qemu-options.hx
>> >> @@ -3975,12 +3975,12 @@ STEXI
>> >> Enable semihosting mode (ARM, M68K, Xtensa, MIPS, Nios II only).
>> >> ETEXI
>> >> DEF("semihosting-config", HAS_ARG, QEMU_OPTION_semihosting_config,
>> >> - "-semihosting-config [enable=on|off][,target=native|gdb|auto][,arg=str[,...]]\n" \
>> >> + "-semihosting-config [enable=on|off][,target=native|gdb|auto][,chardev=id][,arg=str[,...]]\n" \
>> >> " semihosting configuration\n",
>> >> QEMU_ARCH_ARM | QEMU_ARCH_M68K | QEMU_ARCH_XTENSA | QEMU_ARCH_LM32 |
>> >> QEMU_ARCH_MIPS | QEMU_ARCH_NIOS2)
>> >
>> > As you can see in the docs here, semihosting is supported on
>> > five guest architectures, so we should implement this new
>> > feature for all of them, not just arm.
>>
>> As I've introduced this for testing I see no reason not to add support
>> for other architectures. However I was hoping this is something that
>> could be done organically as other system tests get enabled.
>
> IME transitions done "organically" really means "slowly, and
> nobody ever gets round to actually completing them".
> Semihosting is a user-facing feature, so if we want to add
> the user feature of allowing output to go to a chardev we
> should add it properly, I think.
So a quick review of the current semi output:
- MIPS
This has a fairly generalised open/read/write support with special
handling for open/close on /dev/std[out/err/in]. There is also a
UHI_plog which currently just printf's to stdout
- xtensa
This already has support for a sim_console char device as part of
the xtensa sim platform. Otherwise the TARGET_SYS_open can open
paths directly (which I assume could include stdio) which then
read/write.
- m68k
This has the usual open/read/write/close support directly to the
FD's as well as support for integrating with the gdbstub via
gdb_do_syscall.
- lm32
Although based on the m68k semithosting support it lacks the gdbstub
integration. It has the usual open/read/write/close stuff.
- NIOS2
Again based on the m68k semihosting but looks like it was taken
later because it retains the gdbsub integration support.
Generally all the other semihosting stuff looks a lot cleaner - probably
an indication of being done later and avoiding some of the warts of the
early arm semihosting code.
One difference with ARM is it has specific calls aside from the
open/read/write/close (WRITEC/WRITE0) which are specifically aimed at
"console" type logging. They don't seem to require an explicit open at
the start and assume you can write to them from the get go.
One question that would need to be answered is should the chardev
support be generalised for all semihosts that can read/write to the
stdio outputs or should we restrict it to the "console" log operations
(xtensa sim, mips plog and ARM)?
--
Alex Bennée
next prev parent reply other threads:[~2019-05-11 18:04 UTC|newest]
Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-09 16:58 [PATCH v1 00/23] current testing/next queue (docker/system & io tests) Alex Bennée
2019-05-09 16:58 ` [Qemu-devel] " Alex Bennée
2019-05-09 16:58 ` [PATCH v1 01/23] tests/docker: add ubuntu 18.04 Alex Bennée
2019-05-09 16:58 ` [Qemu-devel] " Alex Bennée
2019-05-09 17:41 ` Philippe Mathieu-Daudé
2019-05-09 17:41 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-05-09 16:58 ` [PATCH v1 02/23] tests/docker: Test more components on the Fedora default image Alex Bennée
2019-05-09 16:58 ` [Qemu-devel] " Alex Bennée
2019-05-09 17:40 ` Philippe Mathieu-Daudé
2019-05-09 17:40 ` [Qemu-devel] " Philippe Mathieu-Daudé
2019-05-09 17:53 ` Richard Henderson
2019-05-09 16:58 ` [PATCH v1 03/23] tests/tcg/multiarch: add support for multiarch system tests Alex Bennée
2019-05-09 16:58 ` [Qemu-devel] " Alex Bennée
2019-05-09 16:58 ` [PATCH v1 04/23] tests/tcg/multiarch: add hello world system test Alex Bennée
2019-05-09 16:58 ` [Qemu-devel] " Alex Bennée
2019-05-09 16:58 ` [PATCH v1 05/23] semihosting: enable chardev backed output Alex Bennée
2019-05-09 16:58 ` [Qemu-devel] " Alex Bennée
2019-05-09 22:48 ` Richard Henderson
2019-05-10 6:55 ` Alex Bennée
2019-05-10 6:55 ` Alex Bennée
2019-05-10 13:52 ` Richard Henderson
2019-05-10 13:52 ` Richard Henderson
2019-05-10 14:05 ` Alex Bennée
2019-05-10 14:05 ` Alex Bennée
2019-05-10 14:21 ` Peter Maydell
2019-05-10 14:21 ` Peter Maydell
2019-05-10 14:22 ` Peter Maydell
2019-05-10 14:22 ` [Qemu-devel] " Peter Maydell
2019-05-10 16:59 ` Alex Bennée
2019-05-10 16:59 ` [Qemu-devel] " Alex Bennée
2019-05-10 17:02 ` Peter Maydell
2019-05-10 17:02 ` [Qemu-devel] " Peter Maydell
2019-05-11 18:04 ` Alex Bennée [this message]
2019-05-11 18:04 ` Alex Bennée
2019-05-09 16:58 ` [PATCH v1 06/23] editorconfig: add settings for .s/.S files Alex Bennée
2019-05-09 16:58 ` [Qemu-devel] " Alex Bennée
2019-05-09 22:50 ` Richard Henderson
2019-05-09 16:58 ` [PATCH v1 07/23] tests/tcg/aarch64: add system boot.S Alex Bennée
2019-05-09 16:58 ` [Qemu-devel] " Alex Bennée
2019-05-09 16:58 ` [PATCH v1 08/23] tests/tcg/multiarch: move the system memory test Alex Bennée
2019-05-09 16:58 ` [Qemu-devel] " Alex Bennée
2019-05-09 16:58 ` [PATCH v1 09/23] tests/tcg/minilib: support %c format char Alex Bennée
2019-05-09 16:58 ` [Qemu-devel] " Alex Bennée
2019-05-09 16:58 ` [PATCH v1 10/23] tests/tcg/multiarch: expand system memory test to cover more Alex Bennée
2019-05-09 16:58 ` [Qemu-devel] " Alex Bennée
2019-05-09 17:03 ` Richard Henderson
2019-05-09 17:03 ` [Qemu-devel] " Richard Henderson
2019-05-09 16:58 ` [PATCH v1 11/23] tests/tcg/alpha: add system boot.S Alex Bennée
2019-05-09 16:58 ` [Qemu-devel] " Alex Bennée
2019-05-09 16:59 ` [PATCH v1 12/23] .travis.yml: enable aarch64-softmmu and alpha-softmmu tcg tests Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] " Alex Bennée
2019-05-09 23:01 ` Richard Henderson
2019-05-09 23:01 ` Richard Henderson
2019-05-09 16:59 ` [PATCH v1 13/23] Makefile: fix coverage-report reference to BUILD_DIR Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] " Alex Bennée
2019-05-09 16:59 ` [PATCH v1 14/23] Makefile: include per-target build directories in coverage report Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] " Alex Bennée
2019-05-09 16:59 ` [PATCH v1 15/23] Makefile.target: support per-target coverage reports Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] " Alex Bennée
2019-05-09 16:59 ` [PATCH v1 16/23] tests/qemu-iotests/005: Add a sanity check for large sparse file support Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] " Alex Bennée
2019-05-09 23:03 ` Richard Henderson
2019-05-09 23:03 ` Richard Henderson
2019-05-09 16:59 ` [PATCH v1 17/23] tests/qemu-iotests/check: Pick a default machine if necessary Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] " Alex Bennée
2019-05-09 16:59 ` [PATCH v1 18/23] tests/qemu-iotests: Do not hard-code the path to bash Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] " Alex Bennée
2019-05-09 16:59 ` [PATCH v1 19/23] cirrus / travis: Add gnu-sed and bash for macOS and FreeBSD Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] " Alex Bennée
2019-05-09 16:59 ` [PATCH v1 20/23] tests/qemu-iotests: Remove the "_supported_os Linux" line from many tests Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] " Alex Bennée
2019-05-09 16:59 ` [PATCH v1 21/23] tests/qemu-iotests/group: Re-use the "auto" group for tests that can always run Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] " Alex Bennée
2019-05-09 16:59 ` [PATCH v1 22/23] tests/qemu-iotests: re-format output to for make check-block Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] " Alex Bennée
2019-05-09 18:12 ` Max Reitz
2019-05-09 18:12 ` [Qemu-devel] " Max Reitz
2019-05-09 20:38 ` Alex Bennée
2019-05-09 20:38 ` [Qemu-devel] " Alex Bennée
2019-05-09 20:45 ` Eric Blake
2019-05-09 20:45 ` Eric Blake
2019-05-10 4:45 ` Thomas Huth
2019-05-09 16:59 ` [PATCH v1 23/23] tests: Run the iotests during "make check" again Alex Bennée
2019-05-09 16:59 ` [Qemu-devel] " Alex Bennée
2019-05-10 8:46 ` Thomas Huth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87k1ewrhow.fsf@zen.linaroharston \
--to=alex.bennee@linaro.org \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.