qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Pierrick Bouvier <pierrick.bouvier@linaro.org>
To: "Philippe Mathieu-Daudé" <philmd@linaro.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Anton Johansson <anjo@rev.ng>,
	Markus Armbruster <armbru@redhat.com>
Subject: Re: [RFC PATCH v4 14/19] qemu/target_info: Add %target_arch field to TargetInfo
Date: Wed, 23 Apr 2025 07:59:18 -0700	[thread overview]
Message-ID: <39a51598-e17d-4fc4-a917-e2481d23f15f@linaro.org> (raw)
In-Reply-To: <9d811c1d-7431-4348-9252-37c412593556@linaro.org>

On 4/23/25 02:14, Philippe Mathieu-Daudé wrote:
> On 23/4/25 08:24, Pierrick Bouvier wrote:
>> On 4/22/25 22:34, Philippe Mathieu-Daudé wrote:
>>> On 22/4/25 20:30, Pierrick Bouvier wrote:
>>>> On 4/22/25 11:24, Philippe Mathieu-Daudé wrote:
>>>>> On 22/4/25 20:20, Pierrick Bouvier wrote:
>>>>>> On 4/22/25 07:54, Philippe Mathieu-Daudé wrote:
>>>>>>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>>>>>>> ---
>>>>>>>      include/qemu/target-info-impl.h   | 4 ++++
>>>>>>>      configs/targets/aarch64-softmmu.c | 1 +
>>>>>>>      configs/targets/arm-softmmu.c     | 1 +
>>>>>>>      target-info-stub.c                | 1 +
>>>>>>>      4 files changed, 7 insertions(+)
>>>>>>>
>>>>>>> diff --git a/include/qemu/target-info-impl.h b/include/qemu/target-
>>>>>>> info-impl.h
>>>>>>> index 4ef54c5136a..e5cd169b49a 100644
>>>>>>> --- a/include/qemu/target-info-impl.h
>>>>>>> +++ b/include/qemu/target-info-impl.h
>>>>>>> @@ -10,12 +10,16 @@
>>>>>>>      #define QEMU_TARGET_INFO_IMPL_H
>>>>>>>      #include "qemu/target-info.h"
>>>>>>> +#include "qapi/qapi-types-machine.h"
>>>>>>>      typedef struct TargetInfo {
>>>>>>>          /* runtime equivalent of TARGET_NAME definition */
>>>>>>>          const char *const target_name;
>>>>>>> +    /* related to TARGET_ARCH definition */
>>>>>>> +    SysEmuTarget target_arch;
>>>>>>> +
>>>>>>>          /* QOM typename machines for this binary must implement */
>>>>>>>          const char *const machine_typename;
>>>>>>> diff --git a/configs/targets/aarch64-softmmu.c b/configs/targets/
>>>>>>> aarch64-softmmu.c
>>>>>>> index 375e6fa0b7b..ff89401ea34 100644
>>>>>>> --- a/configs/targets/aarch64-softmmu.c
>>>>>>> +++ b/configs/targets/aarch64-softmmu.c
>>>>>>> @@ -13,6 +13,7 @@
>>>>>>>      static const TargetInfo target_info_aarch64_system = {
>>>>>>>          .target_name = "aarch64",
>>>>>>> +    .target_arch = SYS_EMU_TARGET_AARCH64,
>>>>>>>          .machine_typename = TYPE_TARGET_AARCH64_MACHINE,
>>>>>>>      };
>>>>>>> diff --git a/configs/targets/arm-softmmu.c b/configs/targets/arm-
>>>>>>> softmmu.c
>>>>>>> index d4acdae64f3..22ec9e4faa3 100644
>>>>>>> --- a/configs/targets/arm-softmmu.c
>>>>>>> +++ b/configs/targets/arm-softmmu.c
>>>>>>> @@ -13,6 +13,7 @@
>>>>>>>      static const TargetInfo target_info_arm_system = {
>>>>>>>          .target_name = "arm",
>>>>>>> +    .target_arch = SYS_EMU_TARGET_ARM,
>>>>>>>          .machine_typename = TYPE_TARGET_ARM_MACHINE,
>>>>>>>      };
>>>>>>> diff --git a/target-info-stub.c b/target-info-stub.c
>>>>>>> index 218e5898e7f..e573f5c1975 100644
>>>>>>> --- a/target-info-stub.c
>>>>>>> +++ b/target-info-stub.c
>>>>>>> @@ -12,6 +12,7 @@
>>>>>>>      static const TargetInfo target_info_stub = {
>>>>>>>          .target_name = TARGET_NAME,
>>>>>>> +    .target_arch = -1,
>>>>>>
>>>>>> I think we should have a full ifdef ladder here, to handle all
>>>>>> architectures. Setting -1 is not a safe default.
>>>>>
>>>>> TargetInfo definition is internal to "qemu/target-info-impl.h",
>>>>> otherwise its type is forward-declared as opaque.
>>>>>
>>>>
>>>> Fine, but we need to be able to access to target_arch(), which returns
>>>> the enum value, without having to deal with -1 situation, which is not a
>>>> proper enum value.
>>>>
>>>> switch (target_arch()) {
>>>> case SYS_EMU_TARGET_ARM:
>>>> case SYS_EMU_TARGET_AARCH64:
>>>> ...
>>>> default:
>>>>        break;
>>>> }
>>>
>>> I didn't mentioned that because in
>>> https://lore.kernel.org/qemu-devel/3242cee6-7485-4958-
>>> a198-38d0fc68e8cd@linaro.org/
>>> you said:
>>>
>>>      At this point, I would like to focus on having a first version of
>>>      TargetInfo API, and not reviewing any other changes, as things may
>>>      be modified, and they would need to be reviewed again. It's hard
>>>      to follow the same abstraction done multiple times in multiple
>>> series.
>>>
>>> What is your "full ifdef ladder" suggestion to avoid -1?
>>
>> #ifdef TARGET_AARCH64
>> # define TARGET_ARCH SYS_EMU_TARGET_AARCH64
>> #elif TARGET_ARCH_ALPHA
>> # define TARGET_ARCH SYS_EMU_TARGET_ALPHA
>> ...
>> #else
>> #error Target architecture can't be detected
> 
> I'm sorry but I don't understand what we gain doing that.
> 

For QAPI generated files, we'll need a various bunch of TARGET_X runtime 
conversion, to enable some commands only for targets.
Some of the concerned targets are different from the one we focus on for 
single binary.

My hope was to include target_arch() function in this series, so it's 
not a debate in next series that will touch to QAPI.
In short, move the noise here and now compared to later with another 
unrelated topic, that will have a lot of heated opinions already.

List of needed (target_()) for QAPI:
TARGET_S390X
TARGET_PPC
TARGET_ARM
TARGET_I386
TARGET_LOONGARCH64
TARGET_MIPS
TARGET_RISCV
TARGET_I386

If it's too much work on your side, would you be open that I provide 
this patch on top of your series, and that we include it with it?

Thanks,
Pierrick

  reply	other threads:[~2025-04-23 15:00 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-22 14:54 [RFC PATCH v4 00/19] single-binary: Make hw/arm/ common Philippe Mathieu-Daudé
2025-04-22 14:54 ` [RFC PATCH v4 01/19] qapi: Rename TargetInfo structure as QemuTargetInfo Philippe Mathieu-Daudé
2025-04-22 14:57   ` Philippe Mathieu-Daudé
2025-04-22 17:33   ` Markus Armbruster
2025-04-22 14:54 ` [RFC PATCH v4 02/19] qemu: Convert target_name() to TargetInfo API Philippe Mathieu-Daudé
2025-04-22 17:27   ` Richard Henderson
2025-04-22 17:28   ` Richard Henderson
2025-04-22 14:54 ` [RFC PATCH v4 03/19] system/vl: Filter machine list available for a particular target binary Philippe Mathieu-Daudé
2025-04-22 17:29   ` Richard Henderson
2025-04-22 14:54 ` [RFC PATCH v4 04/19] hw/arm: Register TYPE_TARGET_ARM/AARCH64_MACHINE QOM interfaces Philippe Mathieu-Daudé
2025-04-22 17:31   ` Richard Henderson
2025-04-22 14:54 ` [RFC PATCH v4 05/19] hw/core: Allow ARM/Aarch64 binaries to use the 'none' machine Philippe Mathieu-Daudé
2025-04-22 17:34   ` Richard Henderson
2025-04-22 14:54 ` [RFC PATCH v4 06/19] hw/arm: Filter machine types for qemu-system-arm/aarch64 binaries Philippe Mathieu-Daudé
2025-04-22 17:40   ` Richard Henderson
2025-04-23 16:34     ` Philippe Mathieu-Daudé
2025-04-23 17:43       ` Pierrick Bouvier
2025-04-23 19:12         ` Richard Henderson
2025-04-23 19:33           ` Pierrick Bouvier
2025-04-23 19:53             ` Philippe Mathieu-Daudé
2025-04-23 20:10               ` Pierrick Bouvier
2025-04-23 20:04             ` Richard Henderson
2025-04-23 20:12               ` Pierrick Bouvier
2025-04-23 17:07     ` Philippe Mathieu-Daudé
2025-04-22 14:54 ` [RFC PATCH v4 07/19] meson: Prepare to accept per-binary TargetInfo structure implementation Philippe Mathieu-Daudé
2025-04-22 17:41   ` Richard Henderson
2025-04-22 14:54 ` [RFC PATCH v4 08/19] config/target: Implement per-binary TargetInfo structure (ARM, AARCH64) Philippe Mathieu-Daudé
2025-04-22 17:42   ` Richard Henderson
2025-04-22 14:54 ` [RFC PATCH v4 09/19] hw/arm/aspeed: Build objects once Philippe Mathieu-Daudé
2025-04-22 17:42   ` Richard Henderson
2025-04-22 14:54 ` [RFC PATCH v4 10/19] hw/arm/raspi: " Philippe Mathieu-Daudé
2025-04-22 17:43   ` Richard Henderson
2025-04-22 14:54 ` [RFC PATCH v4 11/19] hw/core/machine: Allow dynamic registration of valid CPU types Philippe Mathieu-Daudé
2025-04-22 17:54   ` Richard Henderson
2025-04-22 18:06     ` Pierrick Bouvier
2025-04-22 14:54 ` [RFC PATCH v4 12/19] hw/arm/virt: Register valid CPU types dynamically Philippe Mathieu-Daudé
2025-04-22 17:56   ` Richard Henderson
2025-04-22 18:10     ` Pierrick Bouvier
2025-04-22 18:18     ` Philippe Mathieu-Daudé
2025-04-22 14:54 ` [RFC PATCH v4 13/19] hw/arm/virt: Check accelerator availability at runtime Philippe Mathieu-Daudé
2025-04-22 17:56   ` Richard Henderson
2025-04-22 18:18   ` Pierrick Bouvier
2025-04-22 14:54 ` [RFC PATCH v4 14/19] qemu/target_info: Add %target_arch field to TargetInfo Philippe Mathieu-Daudé
2025-04-22 17:46   ` Richard Henderson
2025-04-22 18:20   ` Pierrick Bouvier
2025-04-22 18:24     ` Philippe Mathieu-Daudé
2025-04-22 18:30       ` Pierrick Bouvier
2025-04-23  5:34         ` Philippe Mathieu-Daudé
2025-04-23  6:24           ` Pierrick Bouvier
2025-04-23  6:28             ` Pierrick Bouvier
2025-04-23  9:14             ` Philippe Mathieu-Daudé
2025-04-23 14:59               ` Pierrick Bouvier [this message]
2025-04-22 14:54 ` [RFC PATCH v4 15/19] qemu/target_info: Add target_aarch64() helper Philippe Mathieu-Daudé
2025-04-22 17:46   ` Richard Henderson
2025-04-22 18:21   ` Pierrick Bouvier
2025-04-22 14:54 ` [RFC PATCH v4 16/19] hw/arm/virt: Replace TARGET_AARCH64 -> target_aarch64() Philippe Mathieu-Daudé
2025-04-22 17:47   ` Richard Henderson
2025-04-22 18:22   ` Pierrick Bouvier
2025-04-22 14:54 ` [RFC PATCH v4 17/19] hw/core: Get default_cpu_type calling machine_class_default_cpu_type() Philippe Mathieu-Daudé
2025-04-22 17:58   ` Richard Henderson
2025-04-22 18:23   ` Pierrick Bouvier
2025-04-22 14:55 ` [RFC PATCH v4 18/19] hw/core: Introduce MachineClass::get_default_cpu_type() helper Philippe Mathieu-Daudé
2025-04-22 17:59   ` Richard Henderson
2025-04-22 18:24     ` Pierrick Bouvier
2025-04-22 14:55 ` [RFC PATCH v4 19/19] hw/arm/virt: Get default CPU type at runtime Philippe Mathieu-Daudé
2025-04-22 18:06   ` Richard Henderson

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=39a51598-e17d-4fc4-a917-e2481d23f15f@linaro.org \
    --to=pierrick.bouvier@linaro.org \
    --cc=anjo@rev.ng \
    --cc=armbru@redhat.com \
    --cc=philmd@linaro.org \
    --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).