From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: Gavin Shan <gshan@redhat.com>, qemu-arm@nongnu.org
Cc: qemu-devel@nongnu.org, qemu-riscv@nongnu.org,
qemu-ppc@nongnu.org, imp@bsdimp.com, kevans@freebsd.org,
richard.henderson@linaro.org, pbonzini@redhat.com,
peter.maydell@linaro.org, imammedo@redhat.com,
b.galvani@gmail.com, strahinja.p.jankovic@gmail.com,
sundeep.lkml@gmail.com, kfting@nuvoton.com, wuhaotsh@google.com,
nieklinnenbank@gmail.com, rad@semihalf.com,
quic_llindhol@quicinc.com, marcin.juszkiewicz@linaro.org,
eduardo@habkost.net, marcel.apfelbaum@gmail.com,
wangyanan55@huawei.com, laurent@vivier.eu, vijai@behindbytes.com,
palmer@dabbelt.com, alistair.francis@wdc.com,
bin.meng@windriver.com, liwei1518@gmail.com,
dbarboza@ventanamicro.com, zhiwei_liu@linux.alibaba.com,
mrolnik@gmail.com, edgar.iglesias@gmail.com, bcain@quicinc.com,
gaosong@loongson.cn, aurelien@aurel32.net,
jiaxun.yang@flygoat.com, aleksandar.rikalo@syrmia.com,
chenhuacai@kernel.org, shorne@gmail.com, npiggin@gmail.com,
clg@kaod.org, ysato@users.sourceforge.jp,
kbastian@mail.uni-paderborn.de, jcmvbkbc@gmail.com,
shan.gavin@gmail.com
Subject: Re: [PATCH v5 06/31] cpu: Add generic cpu_list()
Date: Thu, 16 Nov 2023 11:25:29 +0100 [thread overview]
Message-ID: <38629155-9f2e-43b1-b8eb-e274755109fb@linaro.org> (raw)
In-Reply-To: <ac71b101-3b61-47fa-b017-766ba55a2c8f@linaro.org>
On 16/11/23 11:19, Philippe Mathieu-Daudé wrote:
> On 16/11/23 08:51, Philippe Mathieu-Daudé wrote:
>> On 16/11/23 08:39, Philippe Mathieu-Daudé wrote:
>>> Hi Gavin,
>>>
>>> On 15/11/23 00:56, Gavin Shan wrote:
>>>> Add generic cpu_list() to replace the individual target's
>>>> implementation
>>>> in the subsequent commits. Currently, there are 3 targets with no
>>>> cpu_list()
>>>> implementation: microblaze and nios2. With this applied, those two
>>>> targets
>>>> switch to the generic cpu_list().
>>>>
>>>> [gshan@gshan q]$ ./build/qemu-system-microblaze -cpu ?
>>>> Available CPUs:
>>>> microblaze-cpu
>>>>
>>>> [gshan@gshan q]$ ./build/qemu-system-nios2 -cpu ?
>>>> Available CPUs:
>>>> nios2-cpu
>>>>
>>>> Suggested-by: Richard Henderson <richard.henderson@linaro.org>
>>>> Signed-off-by: Gavin Shan <gshan@redhat.com>
>>>> ---
>>>> bsd-user/main.c | 5 +----
>>>> cpu-target.c | 29 ++++++++++++++++++++++++++---
>>>> 2 files changed, 27 insertions(+), 7 deletions(-)
>>>
>>>
>>>> diff --git a/cpu-target.c b/cpu-target.c
>>>> index c078c0e91b..acfc654b95 100644
>>>> --- a/cpu-target.c
>>>> +++ b/cpu-target.c
>>>> @@ -24,6 +24,7 @@
>>>> #include "hw/qdev-core.h"
>>>> #include "hw/qdev-properties.h"
>>>> #include "qemu/error-report.h"
>>>> +#include "qemu/qemu-print.h"
>>>> #include "migration/vmstate.h"
>>>> #ifdef CONFIG_USER_ONLY
>>>> #include "qemu.h"
>>>> @@ -283,12 +284,34 @@ const char *parse_cpu_option(const char
>>>> *cpu_option)
>>>> return cpu_type;
>>>> }
>>>> +#ifndef cpu_list
>>>> +static void cpu_list_entry(gpointer data, gpointer user_data)
>>>> +{
>>>> + CPUClass *cc = CPU_CLASS(OBJECT_CLASS(data));
>>>> + const char *typename = object_class_get_name(OBJECT_CLASS(data));
>>>> + g_autofree char *model = cpu_model_from_type(typename);
>>>> +
>>>> + if (cc->deprecation_note) {
>>>> + qemu_printf(" %s (deprecated)\n", model);
>>>> + } else {
>>>> + qemu_printf(" %s\n", model);
>
> Wondering how this scale to heterogeneous emulation. Should we
> display the architecture, i.e.:
>
> -- >8 --
> diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
> index 76ef59de0a..aeff182a37 100644
> --- a/include/hw/core/cpu.h
> +++ b/include/hw/core/cpu.h
> @@ -792,6 +792,8 @@ ObjectClass *cpu_class_by_name(const char *typename,
> const char *cpu_model);
> */
> char *cpu_model_from_type(const char *typename);
>
> +char *cpu_arch_from_type(const char *typename);
> +
> /**
> * cpu_create:
> * @typename: The CPU type.
> diff --git a/cpu-target.c b/cpu-target.c
> index acfc654b95..75412f902f 100644
> --- a/cpu-target.c
> +++ b/cpu-target.c
> @@ -257,6 +257,12 @@ char *cpu_model_from_type(const char *typename)
> return g_strdup(typename);
> }
>
> +char *cpu_arch_from_type(const char *typename)
> +{
> + assert(g_str_has_suffix(CPU_RESOLVING_TYPE, "-cpu"));
> + return g_strndup(CPU_RESOLVING_TYPE, strlen(CPU_RESOLVING_TYPE) -
> strlen("-cpu"));
Not good enough:
$ ./qemu-system-mips64el -M mps2-an500 -cpu \?
Available CPUs:
20Kc (MIPS64)
24Kc (MIPS64)
24KEc (MIPS64)
24Kf (MIPS64)
34Kf (MIPS64)
4Kc (MIPS64)
4KEc (MIPS64)
4KEcR1 (MIPS64)
4KEm (MIPS64)
4KEmR1 (MIPS64)
4Km (MIPS64)
5Kc (MIPS64)
5KEc (MIPS64)
5KEf (MIPS64)
5Kf (MIPS64)
Anyhow we can't use CPU_RESOLVING_TYPE in heterogeneous context,
so we'll probably have to add the arch as a CPUClass field.
> +}
> +
> const char *parse_cpu_option(const char *cpu_option)
> {
> ObjectClass *oc;
> @@ -290,12 +296,11 @@ static void cpu_list_entry(gpointer data, gpointer
> user_data)
> CPUClass *cc = CPU_CLASS(OBJECT_CLASS(data));
> const char *typename = object_class_get_name(OBJECT_CLASS(data));
> g_autofree char *model = cpu_model_from_type(typename);
> + g_autofree char *arch = cpu_arch_from_type(typename);
> + g_autofree char *arch_up = g_ascii_strup(arch, -1);
>
> - if (cc->deprecation_note) {
> - qemu_printf(" %s (deprecated)\n", model);
> - } else {
> - qemu_printf(" %s\n", model);
> - }
> + qemu_printf(" %s (%s%s)\n", model, arch_up,
> + cc->deprecation_note ? ", deprecated" : "");
> }
> ---
>
> Produces:
>
> qemu-system-aarch64 -M mps2-an500 -cpu \?
> Available CPUs:
> a64fx (ARM)
> arm1026 (ARM)
> arm1136 (ARM)
> arm1136-r2 (ARM)
> arm1176 (ARM)
> arm11mpcore (ARM)
> arm926 (ARM)
> arm946 (ARM)
> cortex-a15 (ARM)
> cortex-a35 (ARM)
> cortex-a53 (ARM)
> cortex-a55 (ARM)
> cortex-a57 (ARM)
> cortex-a7 (ARM)
> cortex-a710 (ARM)
> cortex-a72 (ARM)
> cortex-a76 (ARM)
next prev parent reply other threads:[~2023-11-16 10:26 UTC|newest]
Thread overview: 102+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-14 23:55 [PATCH v5 00/31] Unified CPU type check Gavin Shan
2023-11-14 23:55 ` [PATCH v5 01/31] target/alpha: Remove 'ev67' CPU class Gavin Shan
2023-11-15 0:22 ` Richard Henderson
2023-11-16 6:58 ` Philippe Mathieu-Daudé
2024-01-04 17:58 ` Philippe Mathieu-Daudé
2024-01-04 18:03 ` Philippe Mathieu-Daudé
2024-01-04 18:12 ` Philippe Mathieu-Daudé
2023-11-14 23:55 ` [PATCH v5 02/31] target/hppa: Remove object_class_is_abstract() Gavin Shan
2023-11-15 0:26 ` Richard Henderson
2023-11-15 11:18 ` BALATON Zoltan
2023-11-15 11:24 ` Gavin Shan
2023-11-15 11:27 ` BALATON Zoltan
2023-11-16 7:09 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 03/31] cpu: Call object_class_dynamic_cast() once in cpu_class_by_name() Gavin Shan
2023-11-15 0:30 ` Richard Henderson
2023-11-16 16:08 ` Philippe Mathieu-Daudé
2023-11-16 23:13 ` Gavin Shan
2023-11-14 23:56 ` [PATCH v5 04/31] target: Remove 'oc == NULL' check Gavin Shan
2023-11-15 0:34 ` Richard Henderson
2023-11-14 23:56 ` [PATCH v5 05/31] cpu: Add helper cpu_model_from_type() Gavin Shan
2023-11-15 0:35 ` Richard Henderson
2023-11-16 7:45 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 06/31] cpu: Add generic cpu_list() Gavin Shan
2023-11-15 0:37 ` Richard Henderson
2023-11-16 7:39 ` Philippe Mathieu-Daudé
2023-11-16 7:51 ` Philippe Mathieu-Daudé
2023-11-16 10:19 ` Philippe Mathieu-Daudé
2023-11-16 10:25 ` Philippe Mathieu-Daudé [this message]
2023-11-16 10:37 ` Gavin Shan
2023-11-16 10:34 ` Gavin Shan
2023-11-16 13:22 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 07/31] target/alpha: Use " Gavin Shan
2023-11-15 0:38 ` Richard Henderson
2023-11-16 7:47 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 08/31] target/arm: " Gavin Shan
2023-11-15 0:41 ` Richard Henderson
2023-11-16 7:51 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 09/31] target/avr: " Gavin Shan
2023-11-15 0:42 ` Richard Henderson
2023-11-16 7:51 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 10/31] target/cris: " Gavin Shan
2023-11-15 0:44 ` Richard Henderson
2023-11-16 7:52 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 11/31] target/hexagon: " Gavin Shan
2023-11-15 0:46 ` Richard Henderson
2023-11-16 7:52 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 12/31] target/hppa: " Gavin Shan
2023-11-15 0:57 ` Richard Henderson
2023-11-16 7:52 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 13/31] target/loongarch: " Gavin Shan
2023-11-15 0:59 ` Richard Henderson
2023-11-16 10:27 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 14/31] target/m68k: " Gavin Shan
2023-11-15 1:01 ` Richard Henderson
2023-11-16 10:27 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 15/31] target/mips: " Gavin Shan
2023-11-15 1:02 ` Richard Henderson
2023-11-16 7:53 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 16/31] target/openrisc: " Gavin Shan
2023-11-15 1:04 ` Richard Henderson
2023-11-16 10:28 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 17/31] target/riscv: " Gavin Shan
2023-11-15 1:05 ` Richard Henderson
2023-11-16 10:28 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 18/31] target/rx: " Gavin Shan
2023-11-15 1:07 ` Richard Henderson
2023-11-16 7:54 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 19/31] target/sh4: " Gavin Shan
2023-11-15 1:08 ` Richard Henderson
2023-11-16 7:55 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 20/31] target/tricore: " Gavin Shan
2023-11-15 1:09 ` Richard Henderson
2023-11-16 7:55 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 21/31] target/xtensa: " Gavin Shan
2023-11-15 1:12 ` Richard Henderson
2023-11-16 13:29 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 22/31] target: Use generic cpu_model_from_type() Gavin Shan
2023-11-15 1:17 ` Richard Henderson
2023-11-16 13:32 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 23/31] machine: Constify MachineClass::valid_cpu_types[i] Gavin Shan
2023-11-15 1:17 ` Richard Henderson
2023-11-16 9:52 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 24/31] machine: Use error handling when CPU type is checked Gavin Shan
2023-11-15 1:21 ` Richard Henderson
2023-11-15 1:26 ` Richard Henderson
2023-11-14 23:56 ` [PATCH v5 25/31] machine: Introduce helper is_cpu_type_supported() Gavin Shan
2023-11-16 9:33 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 26/31] machine: Print CPU model name instead of CPU type name Gavin Shan
2023-11-15 1:32 ` Richard Henderson
2023-11-14 23:56 ` [PATCH v5 27/31] hw/arm/virt: Hide host CPU model for tcg Gavin Shan
2023-11-14 23:56 ` [PATCH v5 28/31] hw/arm/virt: Check CPU type in machine_run_board_init() Gavin Shan
2023-11-14 23:56 ` [PATCH v5 29/31] hw/arm/sbsa-ref: " Gavin Shan
2023-11-14 23:56 ` [PATCH v5 30/31] hw/arm: " Gavin Shan
2023-11-16 8:35 ` Philippe Mathieu-Daudé
2023-11-14 23:56 ` [PATCH v5 31/31] hw/riscv/shakti_c: " Gavin Shan
2023-11-16 10:01 ` [PATCH v5 00/31] Unified CPU type check Philippe Mathieu-Daudé
2023-11-16 10:12 ` Gavin Shan
2023-11-16 13:35 ` Philippe Mathieu-Daudé
2023-11-16 16:20 ` Philippe Mathieu-Daudé
2023-11-16 23:26 ` Gavin Shan
2023-11-17 7:34 ` Philippe Mathieu-Daudé
2023-11-18 6:40 ` Gavin Shan
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=38629155-9f2e-43b1-b8eb-e274755109fb@linaro.org \
--to=philmd@linaro.org \
--cc=aleksandar.rikalo@syrmia.com \
--cc=alistair.francis@wdc.com \
--cc=aurelien@aurel32.net \
--cc=b.galvani@gmail.com \
--cc=bcain@quicinc.com \
--cc=bin.meng@windriver.com \
--cc=chenhuacai@kernel.org \
--cc=clg@kaod.org \
--cc=dbarboza@ventanamicro.com \
--cc=edgar.iglesias@gmail.com \
--cc=eduardo@habkost.net \
--cc=gaosong@loongson.cn \
--cc=gshan@redhat.com \
--cc=imammedo@redhat.com \
--cc=imp@bsdimp.com \
--cc=jcmvbkbc@gmail.com \
--cc=jiaxun.yang@flygoat.com \
--cc=kbastian@mail.uni-paderborn.de \
--cc=kevans@freebsd.org \
--cc=kfting@nuvoton.com \
--cc=laurent@vivier.eu \
--cc=liwei1518@gmail.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=marcin.juszkiewicz@linaro.org \
--cc=mrolnik@gmail.com \
--cc=nieklinnenbank@gmail.com \
--cc=npiggin@gmail.com \
--cc=palmer@dabbelt.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=qemu-riscv@nongnu.org \
--cc=quic_llindhol@quicinc.com \
--cc=rad@semihalf.com \
--cc=richard.henderson@linaro.org \
--cc=shan.gavin@gmail.com \
--cc=shorne@gmail.com \
--cc=strahinja.p.jankovic@gmail.com \
--cc=sundeep.lkml@gmail.com \
--cc=vijai@behindbytes.com \
--cc=wangyanan55@huawei.com \
--cc=wuhaotsh@google.com \
--cc=ysato@users.sourceforge.jp \
--cc=zhiwei_liu@linux.alibaba.com \
/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).