From: Andrew Jones <ajones@ventanamicro.com>
To: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Cc: qemu-devel@nongnu.org, qemu-riscv@nongnu.org,
alistair.francis@wdc.com, bmeng@tinylab.org,
liweiwei@iscas.ac.cn, zhiwei_liu@linux.alibaba.com,
palmer@rivosinc.com
Subject: Re: [PATCH v7 16/16] riscv-qmp-cmds.c: add profile flags in cpu-model-expansion
Date: Wed, 1 Nov 2023 10:19:25 +0100 [thread overview]
Message-ID: <20231101-7e45796c91beaf0972b55f7d@orel> (raw)
In-Reply-To: <20231031203916.197332-17-dbarboza@ventanamicro.com>
On Tue, Oct 31, 2023 at 05:39:16PM -0300, Daniel Henrique Barboza wrote:
> Expose all profile flags for all CPUs when executing
> query-cpu-model-expansion. This will allow callers to quickly determine
> if a certain profile is implemented by a given CPU. This includes
> vendor CPUs - the fact that they don't have profile user flags doesn't
> mean that they don't implement the profile.
>
> After this change it's possible to quickly determine if our stock CPUs
> implement the existing rva22u64 profile. Here's a few examples:
>
> $ ./build/qemu-system-riscv64 -S -M virt -display none
> -qmp tcp:localhost:1234,server,wait=off
>
> $ ./scripts/qmp/qmp-shell localhost:1234
> Welcome to the QMP low-level shell!
> Connected to QEMU 8.1.50
>
> - As expected, the 'max' CPU implements the rva22u64 profile.
>
> (QEMU) query-cpu-model-expansion type=full model={"name":"max"}
> {"return": {"model":
> {"name": "rv64", "props": {... "rva22u64": true, ...}}}}
>
> - rv64 is missing "zba", "zbb", "zbs", "zkt" and "zfhmin":
>
> query-cpu-model-expansion type=full model={"name":"rv64"}
> {"return": {"model":
> {"name": "rv64", "props": {... "rva22u64": false, ...}}}}
>
> query-cpu-model-expansion type=full model={"name":"rv64",
> "props":{"zba":true,"zbb":true,"zbs":true,"zkt":true,"zfhmin":true}}
> {"return": {"model":
> {"name": "rv64", "props": {... "rva22u64": true, ...}}}}
Nice!
>
> We have no vendor CPUs that supports rva22u64 (veyron-v1 is the closest
> - it is missing just 'zkt').
>
> In short, aside from the 'max' CPU, we have no CPUs that supports
> rva22u64 by default.
>
> Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
> ---
> target/riscv/riscv-qmp-cmds.c | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/target/riscv/riscv-qmp-cmds.c b/target/riscv/riscv-qmp-cmds.c
> index 5ada279776..205aaabeb9 100644
> --- a/target/riscv/riscv-qmp-cmds.c
> +++ b/target/riscv/riscv-qmp-cmds.c
> @@ -116,6 +116,19 @@ static void riscv_obj_add_named_feats_qdict(Object *obj, QDict *qdict_out)
> }
> }
>
> +static void riscv_obj_add_profiles_qdict(Object *obj, QDict *qdict_out)
> +{
> + RISCVCPUProfile *profile;
> + QObject *value;
> +
> + for (int i = 0; riscv_profiles[i] != NULL; i++) {
> + profile = riscv_profiles[i];
> + value = QOBJECT(qbool_from_bool(profile->enabled));
> +
> + qdict_put_obj(qdict_out, profile->name, value);
> + }
> +}
> +
> static void riscv_cpuobj_validate_qdict_in(Object *obj, QObject *props,
> const QDict *qdict_in,
> Error **errp)
> @@ -220,6 +233,7 @@ CpuModelExpansionInfo *qmp_query_cpu_model_expansion(CpuModelExpansionType type,
> riscv_obj_add_multiext_props(obj, qdict_out, riscv_cpu_experimental_exts);
> riscv_obj_add_multiext_props(obj, qdict_out, riscv_cpu_vendor_exts);
> riscv_obj_add_named_feats_qdict(obj, qdict_out);
> + riscv_obj_add_profiles_qdict(obj, qdict_out);
>
> /* Add our CPU boolean options too */
> riscv_obj_add_qdict_prop(obj, qdict_out, "mmu");
> --
> 2.41.0
>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
prev parent reply other threads:[~2023-11-01 9:19 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-31 20:39 [PATCH v7 00/16] rv64i CPU, RVA22U64 profile support Daniel Henrique Barboza
2023-10-31 20:39 ` [PATCH v7 01/16] target/riscv: create TYPE_RISCV_VENDOR_CPU Daniel Henrique Barboza
2023-11-01 9:19 ` Andrew Jones
2023-10-31 20:39 ` [PATCH v7 02/16] target/riscv/tcg: do not use "!generic" CPU checks Daniel Henrique Barboza
2023-11-01 9:20 ` Andrew Jones
2023-10-31 20:39 ` [PATCH v7 03/16] target/riscv: add rv64i CPU Daniel Henrique Barboza
2023-11-01 9:02 ` Andrew Jones
2023-11-01 9:27 ` Daniel Henrique Barboza
2023-11-01 9:47 ` Andrew Jones
2023-10-31 20:39 ` [PATCH v7 04/16] target/riscv: add zicbop extension flag Daniel Henrique Barboza
2023-10-31 20:39 ` [PATCH v7 05/16] target/riscv/tcg: add 'zic64b' support Daniel Henrique Barboza
2023-11-01 9:04 ` Andrew Jones
2023-10-31 20:39 ` [PATCH v7 06/16] riscv-qmp-cmds.c: expose named features in cpu_model_expansion Daniel Henrique Barboza
2023-10-31 20:39 ` [PATCH v7 07/16] target/riscv: add rva22u64 profile definition Daniel Henrique Barboza
2023-10-31 20:39 ` [PATCH v7 08/16] target/riscv/kvm: add 'rva22u64' flag as unavailable Daniel Henrique Barboza
2023-10-31 20:39 ` [PATCH v7 09/16] target/riscv/tcg: add user flag for profile support Daniel Henrique Barboza
2023-10-31 20:39 ` [PATCH v7 10/16] target/riscv/tcg: add MISA user options hash Daniel Henrique Barboza
2023-10-31 20:39 ` [PATCH v7 11/16] target/riscv/tcg: add riscv_cpu_write_misa_bit() Daniel Henrique Barboza
2023-10-31 20:39 ` [PATCH v7 12/16] target/riscv/tcg: handle profile MISA bits Daniel Henrique Barboza
2023-10-31 20:39 ` [PATCH v7 13/16] target/riscv/tcg: add hash table insert helpers Daniel Henrique Barboza
2023-10-31 20:39 ` [PATCH v7 14/16] target/riscv/tcg: honor user choice for G MISA bits Daniel Henrique Barboza
2023-10-31 20:39 ` [PATCH v7 15/16] target/riscv/tcg: validate profiles during finalize Daniel Henrique Barboza
2023-11-01 9:17 ` Andrew Jones
2023-10-31 20:39 ` [PATCH v7 16/16] riscv-qmp-cmds.c: add profile flags in cpu-model-expansion Daniel Henrique Barboza
2023-11-01 9:19 ` Andrew Jones [this message]
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=20231101-7e45796c91beaf0972b55f7d@orel \
--to=ajones@ventanamicro.com \
--cc=alistair.francis@wdc.com \
--cc=bmeng@tinylab.org \
--cc=dbarboza@ventanamicro.com \
--cc=liweiwei@iscas.ac.cn \
--cc=palmer@rivosinc.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-riscv@nongnu.org \
--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 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.