From: Pierrick Bouvier <pierrick.bouvier@linaro.org>
To: BALATON Zoltan <balaton@eik.bme.hu>
Cc: qemu-devel@nongnu.org, qemu-ppc@nongnu.org,
"Alistair Francis" <alistair.francis@wdc.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Harsh Prateek Bora" <harshpb@linux.ibm.com>,
alex.bennee@linaro.org, "Palmer Dabbelt" <palmer@dabbelt.com>,
"Daniel Henrique Barboza" <danielhb413@gmail.com>,
kvm@vger.kernel.org, "Peter Xu" <peterx@redhat.com>,
"Nicholas Piggin" <npiggin@gmail.com>,
"Liu Zhiwei" <zhiwei_liu@linux.alibaba.com>,
"David Hildenbrand" <david@redhat.com>,
"Weiwei Li" <liwei1518@gmail.com>, "Paul Durrant" <paul@xen.org>,
"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Anthony PERARD" <anthony@xenproject.org>,
"Yoshinori Sato" <ysato@users.sourceforge.jp>,
manos.pitsidianakis@linaro.org, qemu-riscv@nongnu.org,
"Paolo Bonzini" <pbonzini@redhat.com>,
xen-devel@lists.xenproject.org,
"Stefano Stabellini" <sstabellini@kernel.org>
Subject: Re: [PATCH 00/16] make system memory API available for common code
Date: Mon, 10 Mar 2025 09:28:06 -0700 [thread overview]
Message-ID: <c5b9eea9-c412-461d-b79b-0fa2f72128ee@linaro.org> (raw)
In-Reply-To: <f231b3be-b308-56cf-53ff-1a6a7fb4da5c@eik.bme.hu>
Hi Zoltan,
On 3/10/25 06:23, BALATON Zoltan wrote:
> On Sun, 9 Mar 2025, Pierrick Bouvier wrote:
>> The main goal of this series is to be able to call any memory ld/st function
>> from code that is *not* target dependent.
>
> Why is that needed?
>
this series belongs to the "single binary" topic, where we are trying to
build a single QEMU binary with all architectures embedded.
To achieve that, we need to have every single compilation unit compiled
only once, to be able to link a binary without any symbol conflict.
A consequence of that is target specific code (in terms of code relying
of target specific macros) needs to be converted to common code,
checking at runtime properties of the target we run. We are tackling
various places in QEMU codebase at the same time, which can be confusing
for the community members.
This series take care of system memory related functions and associated
compilation units in system/.
>> As a positive side effect, we can
>> turn related system compilation units into common code.
>
> Are there any negative side effects? In particular have you done any
> performance benchmarking to see if this causes a measurable slow down?
> Such as with the STREAM benchmark:
> https://stackoverflow.com/questions/56086993/what-does-stream-memory-bandwidth-benchmark-really-measure
>
> Maybe it would be good to have some performance tests similiar to
> functional tests that could be run like the CI tests to detect such
> performance changes. People report that QEMU is getting slower and slower
> with each release. Maybe it could be a GSoC project to make such tests but
> maybe we're too late for that.
>
I agree with you, and it's something we have mentioned during our
"internal" conversations. Testing performance with existing functional
tests would already be a first good step. However, given the poor
reliability we have on our CI runners, I think it's a bit doomed.
Ideally, every QEMU release cycle should have a performance measurement
window to detect potential sources of regressions.
To answer to your specific question, I am trying first to get a review
on the approach taken. We can always optimize in next series version, in
case we identify it's a big deal to introduce a branch for every memory
related function call.
In all cases, transforming code relying on compile time
optimization/dead code elimination through defines to runtime checks
will *always* have an impact, even though it should be minimal in most
of cases. But the maintenance and compilation time benefits, as well as
the perspectives it opens (single binary, heterogeneous emulation, use
QEMU as a library) are worth it IMHO.
> Regards,
> BALATON Zoltan
Regards,
Pierrick
next prev parent reply other threads:[~2025-03-10 16:28 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-10 4:58 [PATCH 00/16] make system memory API available for common code Pierrick Bouvier
2025-03-10 4:58 ` [PATCH 01/16] exec/memory_ldst: extract memory_ldst declarations from cpu-all.h Pierrick Bouvier
2025-03-10 15:17 ` Richard Henderson
2025-03-10 16:03 ` Pierrick Bouvier
2025-03-11 0:04 ` Pierrick Bouvier
2025-03-11 14:40 ` Richard Henderson
2025-03-10 4:58 ` [PATCH 02/16] exec/memory_ldst_phys: extract memory_ldst_phys " Pierrick Bouvier
2025-03-11 0:08 ` Pierrick Bouvier
2025-03-10 4:58 ` [PATCH 03/16] include: move target_words_bigendian() from tswap to bswap Pierrick Bouvier
2025-03-10 15:21 ` Richard Henderson
2025-03-10 16:05 ` Pierrick Bouvier
2025-03-10 4:58 ` [PATCH 04/16] exec/memory.h: make devend_memop target agnostic Pierrick Bouvier
2025-03-10 15:25 ` Richard Henderson
2025-03-10 16:04 ` Pierrick Bouvier
2025-03-10 16:30 ` Richard Henderson
2025-03-10 16:38 ` Pierrick Bouvier
2025-03-10 4:58 ` [PATCH 05/16] qemu/bswap: implement {ld,st}.*_p as functions Pierrick Bouvier
2025-03-10 16:08 ` Richard Henderson
2025-03-10 16:14 ` Pierrick Bouvier
2025-03-10 16:37 ` Richard Henderson
2025-03-10 16:43 ` Pierrick Bouvier
2025-03-10 16:53 ` Richard Henderson
2025-03-10 17:09 ` Pierrick Bouvier
2025-03-10 20:17 ` BALATON Zoltan
2025-03-10 20:31 ` Pierrick Bouvier
2025-03-10 4:58 ` [PATCH 06/16] exec/cpu-all.h: we can now remove ld/st macros Pierrick Bouvier
2025-03-10 16:39 ` Richard Henderson
2025-03-10 16:45 ` Pierrick Bouvier
2025-03-10 4:58 ` [PATCH 07/16] codebase: prepare to remove cpu.h from exec/exec-all.h Pierrick Bouvier
2025-03-10 17:22 ` Richard Henderson
2025-03-10 4:58 ` [PATCH 08/16] exec/exec-all: remove dependency on cpu.h Pierrick Bouvier
2025-03-10 17:29 ` Richard Henderson
2025-03-10 4:58 ` [PATCH 09/16] exec/memory-internal: " Pierrick Bouvier
2025-03-10 17:29 ` Richard Henderson
2025-03-10 4:58 ` [PATCH 10/16] exec/ram_addr: " Pierrick Bouvier
2025-03-10 17:29 ` Richard Henderson
2025-03-10 4:58 ` [PATCH 11/16] system/kvm: make kvm_flush_coalesced_mmio_buffer() accessible for common code Pierrick Bouvier
2025-03-10 17:30 ` Richard Henderson
2025-03-10 4:58 ` [PATCH 12/16] exec/ram_addr: call xen_hvm_modified_memory only if xen is enabled Pierrick Bouvier
2025-03-10 17:30 ` Richard Henderson
2025-03-10 4:58 ` [PATCH 13/16] hw/xen: add stubs for various functions Pierrick Bouvier
2025-03-10 17:32 ` Richard Henderson
2025-03-10 4:58 ` [PATCH 14/16] system/physmem: compilation unit is now common to all targets Pierrick Bouvier
2025-03-10 17:32 ` Richard Henderson
2025-03-10 4:58 ` [PATCH 15/16] system/memory: make compilation unit common Pierrick Bouvier
2025-03-10 17:43 ` Richard Henderson
2025-03-10 17:47 ` Pierrick Bouvier
2025-03-10 17:58 ` Richard Henderson
2025-03-10 18:04 ` Pierrick Bouvier
2025-03-10 18:10 ` Richard Henderson
2025-03-10 18:25 ` Pierrick Bouvier
2025-03-10 18:27 ` Philippe Mathieu-Daudé
2025-03-10 18:38 ` Pierrick Bouvier
2025-03-10 4:58 ` [PATCH 16/16] system/ioport: " Pierrick Bouvier
2025-03-10 17:43 ` Richard Henderson
2025-03-10 13:23 ` [PATCH 00/16] make system memory API available for common code BALATON Zoltan
2025-03-10 16:28 ` Pierrick Bouvier [this message]
2025-03-10 16:56 ` Pierrick Bouvier
2025-03-10 19:40 ` BALATON Zoltan
2025-03-10 20:26 ` Pierrick Bouvier
2025-03-10 21:02 ` BALATON Zoltan
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=c5b9eea9-c412-461d-b79b-0fa2f72128ee@linaro.org \
--to=pierrick.bouvier@linaro.org \
--cc=alex.bennee@linaro.org \
--cc=alistair.francis@wdc.com \
--cc=anthony@xenproject.org \
--cc=balaton@eik.bme.hu \
--cc=danielhb413@gmail.com \
--cc=david@redhat.com \
--cc=edgar.iglesias@gmail.com \
--cc=harshpb@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=liwei1518@gmail.com \
--cc=manos.pitsidianakis@linaro.org \
--cc=npiggin@gmail.com \
--cc=palmer@dabbelt.com \
--cc=paul@xen.org \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=qemu-riscv@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=sstabellini@kernel.org \
--cc=xen-devel@lists.xenproject.org \
--cc=ysato@users.sourceforge.jp \
--cc=zhiwei_liu@linux.alibaba.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).