qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Richard Henderson <richard.henderson@linaro.org>
To: "Alex Bennée" <alex.bennee@linaro.org>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>
Cc: qemu-devel@nongnu.org,
	Pierrick Bouvier <pierrick.bouvier@linaro.org>,
	Alistair Francis <alistair.francis@wdc.com>,
	Kito Cheng <kito.cheng@sifive.com>,
	Keith Packard <keithp@keithp.com>,
	Daniel Henrique Barboza <dbarboza@ventanamicro.com>,
	Thomas Huth <thuth@redhat.com>
Subject: Re: [PATCH 0/5] semihosting: Reduce target specific code
Date: Wed, 8 Jan 2025 14:53:57 -0800	[thread overview]
Message-ID: <14a2173f-e1b4-4290-99e5-c46b4153d800@linaro.org> (raw)
In-Reply-To: <87h669ba39.fsf@draig.linaro.org>

On 1/8/25 07:26, Alex Bennée wrote:
> Philippe Mathieu-Daudé <philmd@linaro.org> writes:
> 
>> This series makes semihosting config.c and console.c
>> target agnostic, building them once, removing symbol
>> collision of the following functions in the single
>> binary:
> 
> Queued to semihosting/next, thanks.
> 
>>   - qemu_semihosting_chardev_init
>>   - qemu_semihosting_config_options
>>   - qemu_semihosting_config_opts
>>   - qemu_semihosting_enable
>>   - semihosting_arg_fallback
>>   - semihosting_enabled
>>   - semihosting_get_argc
>>   - semihosting_get_target
>>
>> This function is still problematic, being built for
>> each target:
>>
>>   - qemu_semihosting_guestfd_init
>>
>> Note, it depends on CONFIG_ARM_COMPATIBLE_SEMIHOSTING
>> which is target specific, so doesn't scale in a
>> heterogeneous setup like the ZynqMP machine, having
>> ARM cores with CONFIG_ARM_COMPATIBLE_SEMIHOSTING=y and
>> MicroBlaze ones with CONFIG_ARM_COMPATIBLE_SEMIHOSTING=n.
> 
> Does MicroBlaze even do semihosting?
> 
>> I suppose the semihosting API needs rework to consider
>> the CPUClass? I'll let that investigation for the
>> maintainer ;)
> 
> Hmm most of it is already handled as EXCP_SEMIHOST exceptions are dealt
> with withing the target specific exception handlers.
> do_common_semihosting could be renamed though - do_armc_semihosting()
> maybe?
> 
> If we have the full list of CPUs at qemu_semihosting_chardev_init() time
> we could then selectively do the bits of qemu_semihosting_guestfd_init()
> depending on what combination we have. For normal open/read/write stuff
> I think they could co-exist.
> 
> Two independent cores could still write to stdout (0) though. Fixing
> that would need a per-cpu semihosting config.

None of the semihosting stuff is smp safe.

The assumption in the homogeneous cpu case is that the guest uses it's own mutexes to 
protect the semihosting calls.  This is obviously more complicated in the heterogeneous 
case, but it *still* should not be qemu's problem.


r~


  reply	other threads:[~2025-01-08 22:54 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-03 17:10 [PATCH 0/5] semihosting: Reduce target specific code Philippe Mathieu-Daudé
2025-01-03 17:10 ` [PATCH 1/5] semihosting/syscalls: Include missing 'exec/cpu-defs.h' header Philippe Mathieu-Daudé
2025-01-03 17:10 ` [PATCH 2/5] semihosting/uaccess: Include missing 'exec/cpu-all.h' header Philippe Mathieu-Daudé
2025-01-03 17:10 ` [PATCH 3/5] semihosting/arm-compat: Include missing 'cpu.h' header Philippe Mathieu-Daudé
2025-01-03 17:10 ` [PATCH 4/5] semihosting/console: Avoid including 'cpu.h' Philippe Mathieu-Daudé
2025-01-03 17:10 ` [PATCH 5/5] semihosting/meson: Build config.o and console.o once Philippe Mathieu-Daudé
2025-01-06 17:28 ` [PATCH 0/5] semihosting: Reduce target specific code Richard Henderson
2025-01-08 15:26 ` Alex Bennée
2025-01-08 22:53   ` Richard Henderson [this message]
2025-01-09 11:12     ` Philippe Mathieu-Daudé

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=14a2173f-e1b4-4290-99e5-c46b4153d800@linaro.org \
    --to=richard.henderson@linaro.org \
    --cc=alex.bennee@linaro.org \
    --cc=alistair.francis@wdc.com \
    --cc=dbarboza@ventanamicro.com \
    --cc=keithp@keithp.com \
    --cc=kito.cheng@sifive.com \
    --cc=philmd@linaro.org \
    --cc=pierrick.bouvier@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).