All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/3] target-info: expose full target variant
@ 2026-10-07 18:46 Pierrick Bouvier
  2026-10-07 18:46 ` [PATCH v2 1/3] meson.build: export TARGET_ARCH_VARIANT in target config Pierrick Bouvier
                   ` (3 more replies)
  0 siblings, 4 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

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(-)

-- 
2.43.0



^ permalink raw reply	[flat|nested] 6+ messages in thread

* [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

end of thread, other threads:[~2026-10-09 22:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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 ` [PATCH v2 3/3] tests/qtest: check query-target architecture 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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.