qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Pierrick Bouvier <pierrick.bouvier@linaro.org>
To: BALATON Zoltan <balaton@eik.bme.hu>
Cc: Richard Henderson <richard.henderson@linaro.org>, qemu-devel@nongnu.org
Subject: Re: [PATCH 05/16] qemu/bswap: implement {ld,st}.*_p as functions
Date: Mon, 10 Mar 2025 13:31:48 -0700	[thread overview]
Message-ID: <d857d05b-3e55-4ec6-9aa7-9de0e5a3046a@linaro.org> (raw)
In-Reply-To: <d2b5f9b9-f567-5434-d9b3-05c0ea9b5b1c@eik.bme.hu>

On 3/10/25 13:17, BALATON Zoltan wrote:
> On Mon, 10 Mar 2025, Pierrick Bouvier wrote:
>> On 3/10/25 09:53, Richard Henderson wrote:
>>> On 3/10/25 09:43, Pierrick Bouvier wrote:
>>>> On 3/10/25 09:37, Richard Henderson wrote:
>>>>> On 3/10/25 09:14, Pierrick Bouvier wrote:
>>>>>> On 3/10/25 09:08, Richard Henderson wrote:
>>>>>>> On 3/9/25 21:58, Pierrick Bouvier wrote:
>>>>>>>> For now, they are duplicate of the same macros in cpu-all.h that we
>>>>>>>> eliminate in next commit.
>>>>>>>>
>>>>>>>> Keep code readable by not defining them with macros, but simply their
>>>>>>>> implementation.
>>>>>>>>
>>>>>>>> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
>>>>>>>
>>>>>>> Why do you want these in bswap.h, rather than tswap.h?
>>>>>>> They're target swaps, after all.
>>>>>>>
>>>>>>>
>>>>>>> r~
>>>>>>
>>>>>> No preference on that, I simply added them to the same file than their
>>>>>> explicit endianness
>>>>>> variant. Would you prefer the endianness agnostic variant to be in
>>>>>> tswap.h instead?
>>>>>
>>>>> I think I would.
>>>>
>>>> Ok, I will move it.
>>>>
>>>>>
>>>>> In addition, I think we want
>>>>>
>>>>> #ifdef COMPILING_PER_TARGET
>>>>> #define target_words_bigendian()  TARGET_BIG_ENDIAN
>>>>> #else
>>>>> bool target_words_bigendian(void);
>>>>> #endif
>>>>>
>>>>> moving the conditional from around target_needs_bswap just below.
>>>>>
>>>>> With that, we eliminate the extra branch that you're otherwise
>>>>> adding to target-specific code with this patch.
>>>>>
>>>>
>>>> I understand the change requested, but should we really aim in that
>>>> direction? In the end,
>>>> if we pursue the compilation units deduplication, the branch will be
>>>> present anyway.
>>>>
>>>> I'm ok with your change, just asking if we really want to preserve target
>>>> specific code
>>>> until the "end".
>>>
>>> All of target/ is target specific.  De-duplication will not eliminate that.
>>>
>>
>> My vocabulary was wrong here. I meant "if we want to preserve target specific
>> macros" until the end.
>> Sure, there will always be compilation units (devices, cpus, helpers, ...)
>> specific to a target. I just wonder if sticking to ifdef paradigm for this
>> kind of code is worth the "optimization" we are supposed to get.
> 
> I've already tried to say that in the previous reply but maybe I can
> explain it better here. I think keeping per target binaries would be
> desired so single binary would not replace it just become an additional
> option. For example when I want to play with old stuff I compile with
> --target-list=ppc-softmmu and don't want to wait compiling all the other
> targets I don't use and not even interested in PPC64. A distro may want to
> ship a single qemu-system binary instead but other distros may prefer per
> target packages not one huge package so users can decide which ones to
> install. All of these are valid use cases, therefore this single binary
> should be an additional option not the only true way from now on
> replacing existing per target builds.
> 

This valid use case is and *will* stay the default. There is no secret 
evil plan to break people habits here :).

For now, we don't even introduce a "single binary" configure option, 
simply because the resulting code could not link, so there is no point.

If you're curious about this, it is the command we use to check the work 
left before being able to do it:
# configure with any target list, we use all in our case
$ ./configure ...
$ jq --raw-output < build/compile_commands.json '.[].file' | sort |
   uniq -c | sort -rn | grep -v '^\s*1 '

Once this list is empty, we'll be able to link and execute a single 
binary (and adding a additional new main() for that). But first things 
first.

> Regards,
> BALATON Zoltan
> 
>> I'll add the change requested.
>>
>>>
>>> r~
>>
>>


  reply	other threads:[~2025-03-10 20:33 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 [this message]
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
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=d857d05b-3e55-4ec6-9aa7-9de0e5a3046a@linaro.org \
    --to=pierrick.bouvier@linaro.org \
    --cc=balaton@eik.bme.hu \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.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 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).