On Tue, Sep 29, 2026 at 3:11 AM Philippe Mathieu-Daudé <[email protected]> wrote: > > On 28/9/26 20:34, Yonggang Luo wrote: > > On Mon, Sep 28, 2026 at 6:39 PM Philippe Mathieu-Daudé < > > [email protected]> wrote: > >> > >> On 28/9/26 12:13, Daniel P. Berrangé wrote: > >>> On Sat, Sep 26, 2026 at 03:00:45PM +0800, Yonggang Luo wrote: > >>>> query-targets lists each linked target, including none, with its > >>>> arch, endianness, and the machines that target accepts. > >>>> > >>>> Signed-off-by: Yonggang Luo <[email protected]> > >>>> --- > >>>> hw/core/machine-qmp-cmds.c | 30 ++++++++++++++++++++++++++++++ > >>>> qapi/machine.json | 35 +++++++++++++++++++++++++++++++++++ > >>>> 2 files changed, 65 insertions(+) > >>> > >>> > >>>> diff --git a/qapi/machine.json b/qapi/machine.json > >>>> index 6aaa2af709a..d8cdea6203e 100644 > >>>> --- a/qapi/machine.json > >>>> +++ b/qapi/machine.json > >>>> @@ -307,6 +307,41 @@ > >>>> ## > >>>> { 'command': 'query-target', 'returns': 'QemuTargetInfo' } > >>>> > >>>> +## > >>>> +# @TargetMachines: > >>>> +# > >>>> +# One registered system target and the machines that can run on it. > >>>> +# > >>>> +# @arch: the target architecture > >>>> +# > >>>> +# @endianness: the target endianness > >>>> +# > >>>> +# @machines: machine type names, not aliases > >>>> +# > >>>> +# Since: 11.2 > >>>> +## > >>>> +{ 'struct': 'TargetMachines', > >>>> + 'data': { 'arch': 'SysEmuTarget', > >>>> + 'endianness': 'EndianMode', > >>>> + 'machines': ['str'] } } > >>> > >>> We already have 'QemuTargetInfo' struct which is used > >>> with 'query-target', that should also be used with the > >>> new 'query-targets' command. > >>> > >>> We need to add the 'endianness' field to QemuTargetInfo. > >> > >> Why do we want to expose endianness, and what endianness to > >> expose? Endianness is a runtime bit state of CPUs. Sometime > >> this bit is hardwired but that is an implementation detail. > >> > >> See commit 0e2c5647d92 and surrounding for MicroBlaze for > >> example. > > > > Please take a look at > > https://gitlab.com/lygstate-qemu/qemu/-/pipelines/2890507627 > > > > I do not have clue to fixes it properly > > What are you asking here? I'm seeing failures on targets supporting > dual endianness. I can not try to help you until I understand what > your goal is (I asked it multiple times but you don't reply explaining).
Now I can answer the question more clear, it's because the pitfall of commit https://gitlab.com/qemu-project/qemu/-/commit/e934c624f32f6f44f427d73a2e6a67e983a02ae6 cause the issue target-info-stub.c | 2 +- target-info.c | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/target-info-stub.c b/target-info-stub.c index 8392d81e8f..65220cc782 100644 --- a/target-info-stub.c +++ b/target-info-stub.c @@ -18,7 +18,7 @@ QEMU_BUILD_BUG_ON(offsetof(ArchCPU, env) != sizeof(CPUState)); static const TargetInfo target_info_stub = { .target_name = TARGET_NAME, - .target_arch = SYS_EMU_TARGET__MAX, + .target_arch = glue(SYS_EMU_TARGET_, TARGET_ARCH), .long_bits = TARGET_LONG_BITS, .cpu_type = CPU_RESOLVING_TYPE, .machine_typename = TYPE_MACHINE, diff --git a/target-info.c b/target-info.c index 5a6d728252..a26532f660 100644 --- a/target-info.c +++ b/target-info.c @@ -24,13 +24,7 @@ unsigned target_long_bits(void) SysEmuTarget target_arch(void) { - SysEmuTarget arch = target_info()->target_arch; - - if (arch == SYS_EMU_TARGET__MAX) { - arch = qapi_enum_parse(&SysEmuTarget_lookup, target_name(), -1, - &error_abort); - } - return arch; + return target_info()->target_arch; } const char *target_cpu_type(void) Look at the diff, the original one is directly parsed from target_name(). and the new one defines "glue(SYS_EMU_TARGET_, TARGET_ARCH)", but that indeed does not match target_name() at all. And TARGET_ARCH is introduced in commit https://gitlab.com/lygstate-qemu/qemu/-/commit/f87f7e145d63f93315e0f0e00fb9ba0b6ee8570f for this. Hi Richard, is this done for intention or a mistake? maybe we should always generate target_arch from target_name() in meson.build? > -- 此致 礼 罗勇刚 Yours sincerely, Yonggang Luo
