* [PATCH v2 1/3] meson.build: export TARGET_ARCH_VARIANT in target config
2026-10-07 18:46 [PATCH v2 0/3] target-info: expose full target variant Pierrick Bouvier
@ 2026-10-07 18:46 ` Pierrick Bouvier
2026-10-07 18:46 ` [PATCH v2 2/3] target-info: use TARGET_ARCH_VARIANT Pierrick Bouvier
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Pierrick Bouvier @ 2026-10-07 18:46 UTC (permalink / raw)
To: qemu-devel
Cc: Laurent Vivier, Pierrick Bouvier, Paolo Bonzini,
Daniel P. Berrangé, Philippe Mathieu-Daudé,
Fabiano Rosas, Marc-André Lureau, Markus Armbruster,
Yonggang Luo
For now, TARGET_ARCH only contains 32 vs 64 bit arch. The variants,
based on endianness, are accessible through TARGET_NAME. However,
TARGET_NAME is a string, and thus can't be concatenated to generate code
and retrieve matching SYS_EMU_TARGET enum entry.
Thus, export this information in TARGET_ARCH_VARIANT as an unquoted
identifier.
There is one more subtlety, user binaries have extra targets that are
not present in SYS_EMU_TARGET, like armeb.
Thus, for user binaries, simply export TARGET_ARCH.
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Suggested-by: Yonggang Luo <luoyonggang@gmail.com>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
meson.build | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/meson.build b/meson.build
index 828100de816..48da6cf3e6b 100644
--- a/meson.build
+++ b/meson.build
@@ -3288,7 +3288,14 @@ default_targets = 'CONFIG_DEFAULT_TARGETS' in config_host
actual_target_dirs = []
fdt_required = []
foreach target : target_dirs
- config_target = { 'TARGET_NAME': target.split('-')[0] }
+ target_name = target.split('-')[0]
+ config_target = { 'TARGET_NAME': target_name }
+ if target.endswith('linux-user')
+ config_target += { 'TARGET_ARCH_VARIANT': 'TARGET_ARCH' }
+ else
+ config_target += { 'TARGET_ARCH_VARIANT': target_name.to_upper() }
+ endif
+
if target.endswith('linux-user')
if host_os != 'linux'
if default_targets
@@ -3372,7 +3379,7 @@ foreach target : target_dirs
# do nothing
elif ignored.contains(k)
# do nothing
- elif k == 'TARGET_ARCH'
+ elif k == 'TARGET_ARCH' or k == 'TARGET_ARCH_VARIANT'
config_target_data.set(k, v.to_upper())
elif k == 'TARGET_BASE_ARCH'
# Note that TARGET_BASE_ARCH ends up in config-target.h but it is
--
2.43.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v2 2/3] target-info: use TARGET_ARCH_VARIANT
2026-10-07 18:46 [PATCH v2 0/3] target-info: expose full target variant Pierrick Bouvier
2026-10-07 18:46 ` [PATCH v2 1/3] meson.build: export TARGET_ARCH_VARIANT in target config Pierrick Bouvier
@ 2026-10-07 18:46 ` Pierrick Bouvier
2026-10-07 18:46 ` [PATCH v2 3/3] tests/qtest: check query-target architecture Pierrick Bouvier
2026-10-09 22:03 ` [PATCH v2 0/3] target-info: expose full target variant Pierrick Bouvier
3 siblings, 0 replies; 6+ messages in thread
From: Pierrick Bouvier @ 2026-10-07 18:46 UTC (permalink / raw)
To: qemu-devel
Cc: Laurent Vivier, Pierrick Bouvier, Paolo Bonzini,
Daniel P. Berrangé, Philippe Mathieu-Daudé,
Fabiano Rosas, Marc-André Lureau, Markus Armbruster,
Yonggang Luo
target_arch() will now return the full variant, per SYS_EMU_TARGET enum.
Reported-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Suggested-by: Yonggang Luo <luoyonggang@gmail.com>
Fixes: e934c624f3 ("target-info: Statically initialize target_arch")
Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/4640
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
target-info-stub.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target-info-stub.c b/target-info-stub.c
index d121b8c0170..b0079d44dcf 100644
--- a/target-info-stub.c
+++ b/target-info-stub.c
@@ -26,7 +26,7 @@ QEMU_BUILD_BUG_ON(TARGET_PAGE_BITS < TARGET_PAGE_BITS_MIN);
static const TargetInfo target_info_stub = {
.target_name = TARGET_NAME,
- .target_arch = glue(SYS_EMU_TARGET_, TARGET_ARCH),
+ .target_arch = glue(SYS_EMU_TARGET_, TARGET_ARCH_VARIANT),
.long_bits = TARGET_LONG_BITS,
.cpu_type = CPU_RESOLVING_TYPE,
.endianness = TARGET_BIG_ENDIAN ? ENDIAN_MODE_BIG : ENDIAN_MODE_LITTLE,
--
2.43.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH v2 3/3] tests/qtest: check query-target architecture
2026-10-07 18:46 [PATCH v2 0/3] target-info: expose full target variant Pierrick Bouvier
2026-10-07 18:46 ` [PATCH v2 1/3] meson.build: export TARGET_ARCH_VARIANT in target config Pierrick Bouvier
2026-10-07 18:46 ` [PATCH v2 2/3] target-info: use TARGET_ARCH_VARIANT Pierrick Bouvier
@ 2026-10-07 18:46 ` Pierrick Bouvier
2026-10-08 9:44 ` Daniel P. Berrangé
2026-10-09 22:03 ` [PATCH v2 0/3] target-info: expose full target variant Pierrick Bouvier
3 siblings, 1 reply; 6+ messages in thread
From: Pierrick Bouvier @ 2026-10-07 18:46 UTC (permalink / raw)
To: qemu-devel
Cc: Laurent Vivier, Pierrick Bouvier, Paolo Bonzini,
Daniel P. Berrangé, Philippe Mathieu-Daudé,
Fabiano Rosas, Marc-André Lureau, Markus Armbruster,
Yonggang Luo
From: Yonggang Luo <luoyonggang@gmail.com>
Check that query-target reports the target identity selected by the qtest
binary, including softmmu variants.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
---
tests/qtest/qmp-test.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/tests/qtest/qmp-test.c b/tests/qtest/qmp-test.c
index 927ab053f8a..c70f6a681c1 100644
--- a/tests/qtest/qmp-test.c
+++ b/tests/qtest/qmp-test.c
@@ -164,6 +164,18 @@ static void test_qmp_protocol(void)
qtest_quit(qts);
}
+static void test_query_target(void)
+{
+ QTestState *qts = qtest_init(common_args);
+ QDict *target;
+
+ target = qtest_qmp_assert_success_ref(qts,
+ "{ 'execute': 'query-target' }");
+ g_assert_cmpstr(qdict_get_try_str(target, "arch"), ==, qtest_get_arch());
+ qobject_unref(target);
+ qtest_quit(qts);
+}
+
#ifndef _WIN32
/* Out-of-band tests */
@@ -517,6 +529,7 @@ int main(int argc, char *argv[])
g_test_init(&argc, &argv, NULL);
qtest_add_func("qmp/protocol", test_qmp_protocol);
+ qtest_add_func("qmp/query-target", test_query_target);
#ifndef _WIN32
/* This case calls mkfifo() which does not exist on win32 */
qtest_add_func("qmp/oob", test_qmp_oob);
--
2.43.0
^ permalink raw reply related [flat|nested] 6+ messages in thread* Re: [PATCH v2 3/3] tests/qtest: check query-target architecture
2026-10-07 18:46 ` [PATCH v2 3/3] tests/qtest: check query-target architecture Pierrick Bouvier
@ 2026-10-08 9:44 ` Daniel P. Berrangé
0 siblings, 0 replies; 6+ messages in thread
From: Daniel P. Berrangé @ 2026-10-08 9:44 UTC (permalink / raw)
To: Pierrick Bouvier
Cc: qemu-devel, Laurent Vivier, Paolo Bonzini,
Philippe Mathieu-Daudé, Fabiano Rosas,
Marc-André Lureau, Markus Armbruster, Yonggang Luo
On Wed, Oct 07, 2026 at 06:46:12PM +0000, Pierrick Bouvier wrote:
> From: Yonggang Luo <luoyonggang@gmail.com>
>
> Check that query-target reports the target identity selected by the qtest
> binary, including softmmu variants.
>
> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
> ---
> tests/qtest/qmp-test.c | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
>
> diff --git a/tests/qtest/qmp-test.c b/tests/qtest/qmp-test.c
> index 927ab053f8a..c70f6a681c1 100644
> --- a/tests/qtest/qmp-test.c
> +++ b/tests/qtest/qmp-test.c
> @@ -164,6 +164,18 @@ static void test_qmp_protocol(void)
> qtest_quit(qts);
> }
>
> +static void test_query_target(void)
> +{
> + QTestState *qts = qtest_init(common_args);
> + QDict *target;
> +
> + target = qtest_qmp_assert_success_ref(qts,
> + "{ 'execute': 'query-target' }");
> + g_assert_cmpstr(qdict_get_try_str(target, "arch"), ==, qtest_get_arch());
> + qobject_unref(target);
> + qtest_quit(qts);
> +}
> +
> #ifndef _WIN32
>
> /* Out-of-band tests */
> @@ -517,6 +529,7 @@ int main(int argc, char *argv[])
> g_test_init(&argc, &argv, NULL);
>
> qtest_add_func("qmp/protocol", test_qmp_protocol);
> + qtest_add_func("qmp/query-target", test_query_target);
> #ifndef _WIN32
> /* This case calls mkfifo() which does not exist on win32 */
> qtest_add_func("qmp/oob", test_qmp_oob);
> --
> 2.43.0
>
With regards,
Daniel
--
|: https://berrange.com ~~ https://hachyderm.io/@berrange :|
|: https://libvirt.org ~~ https://entangle-photo.org :|
|: https://pixelfed.art/berrange ~~ https://fstop138.berrange.com :|
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 0/3] target-info: expose full target variant
2026-10-07 18:46 [PATCH v2 0/3] target-info: expose full target variant Pierrick Bouvier
` (2 preceding siblings ...)
2026-10-07 18:46 ` [PATCH v2 3/3] tests/qtest: check query-target architecture Pierrick Bouvier
@ 2026-10-09 22:03 ` Pierrick Bouvier
3 siblings, 0 replies; 6+ messages in thread
From: Pierrick Bouvier @ 2026-10-09 22:03 UTC (permalink / raw)
To: qemu-devel
Cc: Laurent Vivier, Paolo Bonzini, Daniel P. Berrangé,
Philippe Mathieu-Daudé, Fabiano Rosas,
Marc-André Lureau, Markus Armbruster
On 10/7/2026 11:46 AM, Pierrick Bouvier wrote:
> Recently, a regression was introduced that restricted list of targets returned
> by target-info by ignoring endianness variants. As a result, qmp query_target
> output changed compared to previous releases.
>
> Fix that by exporting the full variant, and use that to define arch in
> target_info, thus giving us back a 1:1 mapping with SYS_EMU_TARGET enum.
>
> v2
> --
>
> - Add Suggested-by for Yonggang on two first patches
> - Add test patch from Yonggang
>
> Pierrick Bouvier (2):
> meson.build: export TARGET_ARCH_VARIANT in target config
> target-info: use TARGET_ARCH_VARIANT
>
> Yonggang Luo (1):
> tests/qtest: check query-target architecture
>
> meson.build | 11 +++++++++--
> target-info-stub.c | 2 +-
> tests/qtest/qmp-test.c | 13 +++++++++++++
> 3 files changed, 23 insertions(+), 3 deletions(-)
>
This was merged into master (14c00f0e5d4ed837050a7fa1a41e4c1e9ba84cb9).
Regards,
Pierrick
^ permalink raw reply [flat|nested] 6+ messages in thread