* [PATCH RESEND v2 0/3] target/riscv: add missing named features
@ 2025-06-04 17:43 Daniel Henrique Barboza
2025-06-04 17:43 ` [PATCH RESEND v2 1/3] target/riscv/cpu.c: add 'sdtrig' in riscv,isa Daniel Henrique Barboza
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Daniel Henrique Barboza @ 2025-06-04 17:43 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-riscv, alistair.francis, liwei1518, zhiwei_liu, palmer,
Daniel Henrique Barboza
Hi,
In this version I fixed the problems caused in bios-table-test qtest by
patches 1 and 2.
A small change was also made in patch 1 to avoid spamming "Disabling
sdtrig due to priv spec version" warnings when running vendor CPUs
with priv spec < 1.12.
Patches based on alistair/riscv-to-apply.next.
Changes from v1:
- patch 1:
- skip the warning and disable of 'sdtrig' for CPUs that have priv
version < 1.12
- update bios-table-test
- patch 2:
- update bios-table-test
- v1 link: https://lore.kernel.org/qemu-riscv/20250529202315.1684198-1-dbarboza@ventanamicro.com/
Daniel Henrique Barboza (3):
target/riscv/cpu.c: add 'sdtrig' in riscv,isa
target/riscv/cpu.c: add 'ssstrict' to riscv,isa
target/riscv/cpu.c: do better with 'named features' doc
target/riscv/cpu.c | 16 ++++++++++++++--
target/riscv/tcg/tcg-cpu.c | 9 +++++++++
tests/data/acpi/riscv64/virt/RHCT | Bin 400 -> 416 bytes
3 files changed, 23 insertions(+), 2 deletions(-)
--
2.49.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH RESEND v2 1/3] target/riscv/cpu.c: add 'sdtrig' in riscv,isa
2025-06-04 17:43 [PATCH RESEND v2 0/3] target/riscv: add missing named features Daniel Henrique Barboza
@ 2025-06-04 17:43 ` Daniel Henrique Barboza
2025-06-05 3:37 ` [PATCH RESEND v2 1/3] target/riscv/cpu.c: add 'sdtrig' in riscv, isa Alistair Francis
2025-06-04 17:43 ` [PATCH RESEND v2 2/3] target/riscv/cpu.c: add 'ssstrict' to " Daniel Henrique Barboza
2025-06-04 17:43 ` [PATCH RESEND v2 3/3] target/riscv/cpu.c: do better with 'named features' doc Daniel Henrique Barboza
2 siblings, 1 reply; 6+ messages in thread
From: Daniel Henrique Barboza @ 2025-06-04 17:43 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-riscv, alistair.francis, liwei1518, zhiwei_liu, palmer,
Daniel Henrique Barboza
We have support for sdtrig for awhile but we are not advertising it. It
is enabled by default via the 'debug' flag. Use the same flag to also
advertise sdtrig.
Add an exception in disable_priv_spec_isa_exts() to avoid spamming
warnings for 'sdtrig' for vendor CPUs like sifive_u.
Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
---
target/riscv/cpu.c | 1 +
target/riscv/tcg/tcg-cpu.c | 9 +++++++++
tests/data/acpi/riscv64/virt/RHCT | Bin 400 -> 406 bytes
3 files changed, 10 insertions(+)
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
index ee3ee0e883..eeb44a2f1e 100644
--- a/target/riscv/cpu.c
+++ b/target/riscv/cpu.c
@@ -189,6 +189,7 @@ const RISCVIsaExtData isa_edata_arr[] = {
ISA_EXT_DATA_ENTRY(zvkt, PRIV_VERSION_1_12_0, ext_zvkt),
ISA_EXT_DATA_ENTRY(zhinx, PRIV_VERSION_1_12_0, ext_zhinx),
ISA_EXT_DATA_ENTRY(zhinxmin, PRIV_VERSION_1_12_0, ext_zhinxmin),
+ ISA_EXT_DATA_ENTRY(sdtrig, PRIV_VERSION_1_12_0, debug),
ISA_EXT_DATA_ENTRY(shcounterenw, PRIV_VERSION_1_12_0, has_priv_1_12),
ISA_EXT_DATA_ENTRY(sha, PRIV_VERSION_1_12_0, ext_sha),
ISA_EXT_DATA_ENTRY(shgatpa, PRIV_VERSION_1_12_0, has_priv_1_12),
diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c
index 81174de409..7fbfc26adf 100644
--- a/target/riscv/tcg/tcg-cpu.c
+++ b/target/riscv/tcg/tcg-cpu.c
@@ -451,6 +451,15 @@ static void riscv_cpu_disable_priv_spec_isa_exts(RISCVCPU *cpu)
continue;
}
+ /*
+ * cpu.debug = true is marked as 'sdtrig', priv spec 1.12.
+ * Skip this warning dince existing CPUs with older priv
+ * specd and debug = true will be impacted.
+ */
+ if (!strcmp(edata->name, "sdtrig")) {
+ continue;
+ }
+
isa_ext_update_enabled(cpu, edata->ext_enable_offset, false);
/*
diff --git a/tests/data/acpi/riscv64/virt/RHCT b/tests/data/acpi/riscv64/virt/RHCT
index 13c8025b868051485be5ba62974a22971a07bc6a..156607dec45b0e63e5b3ebed62e81076dacd80d0 100644
GIT binary patch
delta 49
zcmbQhJdK$v$iq2g8Y2S(<Ex2W2COEGj0`#x?N_s=loVyAPkd23IgL??BZrZJp^TA%
F0RTq!4730M
delta 43
zcmbQnJb{@j$iq2g0wV(h<JXB?2CRCFj0~z1?N?9ySUowLQJEu+k%6Irk%0jK_Q(p3
--
2.49.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH RESEND v2 2/3] target/riscv/cpu.c: add 'ssstrict' to riscv, isa
2025-06-04 17:43 [PATCH RESEND v2 0/3] target/riscv: add missing named features Daniel Henrique Barboza
2025-06-04 17:43 ` [PATCH RESEND v2 1/3] target/riscv/cpu.c: add 'sdtrig' in riscv,isa Daniel Henrique Barboza
@ 2025-06-04 17:43 ` Daniel Henrique Barboza
2025-06-04 17:43 ` [PATCH RESEND v2 3/3] target/riscv/cpu.c: do better with 'named features' doc Daniel Henrique Barboza
2 siblings, 0 replies; 6+ messages in thread
From: Daniel Henrique Barboza @ 2025-06-04 17:43 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-riscv, alistair.francis, liwei1518, zhiwei_liu, palmer,
Daniel Henrique Barboza, Andrew Jones
'ssstrict' is a RVA23 profile-defined extension defined as follows:
"No non-conforming extensions are present. Attempts to execute
unimplemented opcodes or access unimplemented CSRs in the standard or
reserved encoding spaces raises an illegal instruction exception that
results in a contained trap to the supervisor-mode trap handler."
In short, we need to throw an exception when accessing unimplemented
CSRs or opcodes. We do that, so let's advertise it.
Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Message-ID: <20250529202315.1684198-3-dbarboza@ventanamicro.com>
---
target/riscv/cpu.c | 1 +
tests/data/acpi/riscv64/virt/RHCT | Bin 406 -> 416 bytes
2 files changed, 1 insertion(+)
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
index eeb44a2f1e..c1bcf60988 100644
--- a/target/riscv/cpu.c
+++ b/target/riscv/cpu.c
@@ -217,6 +217,7 @@ const RISCVIsaExtData isa_edata_arr[] = {
ISA_EXT_DATA_ENTRY(ssnpm, PRIV_VERSION_1_13_0, ext_ssnpm),
ISA_EXT_DATA_ENTRY(sspm, PRIV_VERSION_1_13_0, ext_sspm),
ISA_EXT_DATA_ENTRY(ssstateen, PRIV_VERSION_1_12_0, ext_ssstateen),
+ ISA_EXT_DATA_ENTRY(ssstrict, PRIV_VERSION_1_12_0, has_priv_1_12),
ISA_EXT_DATA_ENTRY(sstc, PRIV_VERSION_1_12_0, ext_sstc),
ISA_EXT_DATA_ENTRY(sstvala, PRIV_VERSION_1_12_0, has_priv_1_12),
ISA_EXT_DATA_ENTRY(sstvecd, PRIV_VERSION_1_12_0, has_priv_1_12),
diff --git a/tests/data/acpi/riscv64/virt/RHCT b/tests/data/acpi/riscv64/virt/RHCT
index 156607dec45b0e63e5b3ebed62e81076dacd80d0..52a4cc4b6380eee3299b965271a39e9e01f5a698 100644
GIT binary patch
delta 52
zcmbQnynvZ2$iq2g0V4wg<L!xD2CR0Bj0~n5?U@+aic5+zlS?MsG3rguW>n@VV`N}x
IU}Rtb08<(Z?f?J)
delta 45
zcmZ3$JdK$v$iq2g8Y2S(<Ex2W2COEGj0`#(?U@)SdogNHE@M>U$YEq)C}U(`008kX
B2|xe<
--
2.49.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH RESEND v2 3/3] target/riscv/cpu.c: do better with 'named features' doc
2025-06-04 17:43 [PATCH RESEND v2 0/3] target/riscv: add missing named features Daniel Henrique Barboza
2025-06-04 17:43 ` [PATCH RESEND v2 1/3] target/riscv/cpu.c: add 'sdtrig' in riscv,isa Daniel Henrique Barboza
2025-06-04 17:43 ` [PATCH RESEND v2 2/3] target/riscv/cpu.c: add 'ssstrict' to " Daniel Henrique Barboza
@ 2025-06-04 17:43 ` Daniel Henrique Barboza
2025-06-05 3:43 ` Alistair Francis
2 siblings, 1 reply; 6+ messages in thread
From: Daniel Henrique Barboza @ 2025-06-04 17:43 UTC (permalink / raw)
To: qemu-devel
Cc: qemu-riscv, alistair.francis, liwei1518, zhiwei_liu, palmer,
Daniel Henrique Barboza
Most of the named features are added directly in isa_edata_arr[], some
of them are also added in riscv_cpu_named_features(). There is a reason
for that, and the existing docs can do better explaining it.
Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Message-ID: <20250529202315.1684198-4-dbarboza@ventanamicro.com>
---
target/riscv/cpu.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
index c1bcf60988..758f254c15 100644
--- a/target/riscv/cpu.c
+++ b/target/riscv/cpu.c
@@ -1378,13 +1378,23 @@ const RISCVCPUMultiExtConfig riscv_cpu_experimental_exts[] = {
* 'Named features' is the name we give to extensions that we
* don't want to expose to users. They are either immutable
* (always enabled/disable) or they'll vary depending on
- * the resulting CPU state. They have riscv,isa strings
- * and priv_ver like regular extensions.
+ * the resulting CPU state.
+ *
+ * Some of them are always enabled depending on priv version
+ * of the CPU and are declared directly in isa_edata_arr[].
+ * The ones listed here have special checks during finalize()
+ * time and require their own flags like regular extensions.
+ * See riscv_cpu_update_named_features() for more info.
*/
const RISCVCPUMultiExtConfig riscv_cpu_named_features[] = {
MULTI_EXT_CFG_BOOL("zic64b", ext_zic64b, true),
MULTI_EXT_CFG_BOOL("ssstateen", ext_ssstateen, true),
MULTI_EXT_CFG_BOOL("sha", ext_sha, true),
+
+ /*
+ * 'ziccrse' has its own flag because the KVM driver
+ * wants to enable/disable it on its own accord.
+ */
MULTI_EXT_CFG_BOOL("ziccrse", ext_ziccrse, true),
{ },
--
2.49.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH RESEND v2 1/3] target/riscv/cpu.c: add 'sdtrig' in riscv, isa
2025-06-04 17:43 ` [PATCH RESEND v2 1/3] target/riscv/cpu.c: add 'sdtrig' in riscv,isa Daniel Henrique Barboza
@ 2025-06-05 3:37 ` Alistair Francis
0 siblings, 0 replies; 6+ messages in thread
From: Alistair Francis @ 2025-06-05 3:37 UTC (permalink / raw)
To: Daniel Henrique Barboza
Cc: qemu-devel, qemu-riscv, alistair.francis, liwei1518, zhiwei_liu,
palmer
On Thu, Jun 5, 2025 at 3:45 AM Daniel Henrique Barboza
<dbarboza@ventanamicro.com> wrote:
>
> We have support for sdtrig for awhile but we are not advertising it. It
> is enabled by default via the 'debug' flag. Use the same flag to also
> advertise sdtrig.
>
> Add an exception in disable_priv_spec_isa_exts() to avoid spamming
> warnings for 'sdtrig' for vendor CPUs like sifive_u.
>
> Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
> ---
> target/riscv/cpu.c | 1 +
> target/riscv/tcg/tcg-cpu.c | 9 +++++++++
> tests/data/acpi/riscv64/virt/RHCT | Bin 400 -> 406 bytes
> 3 files changed, 10 insertions(+)
>
> diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
> index ee3ee0e883..eeb44a2f1e 100644
> --- a/target/riscv/cpu.c
> +++ b/target/riscv/cpu.c
> @@ -189,6 +189,7 @@ const RISCVIsaExtData isa_edata_arr[] = {
> ISA_EXT_DATA_ENTRY(zvkt, PRIV_VERSION_1_12_0, ext_zvkt),
> ISA_EXT_DATA_ENTRY(zhinx, PRIV_VERSION_1_12_0, ext_zhinx),
> ISA_EXT_DATA_ENTRY(zhinxmin, PRIV_VERSION_1_12_0, ext_zhinxmin),
> + ISA_EXT_DATA_ENTRY(sdtrig, PRIV_VERSION_1_12_0, debug),
> ISA_EXT_DATA_ENTRY(shcounterenw, PRIV_VERSION_1_12_0, has_priv_1_12),
> ISA_EXT_DATA_ENTRY(sha, PRIV_VERSION_1_12_0, ext_sha),
> ISA_EXT_DATA_ENTRY(shgatpa, PRIV_VERSION_1_12_0, has_priv_1_12),
> diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c
> index 81174de409..7fbfc26adf 100644
> --- a/target/riscv/tcg/tcg-cpu.c
> +++ b/target/riscv/tcg/tcg-cpu.c
> @@ -451,6 +451,15 @@ static void riscv_cpu_disable_priv_spec_isa_exts(RISCVCPU *cpu)
> continue;
> }
>
> + /*
> + * cpu.debug = true is marked as 'sdtrig', priv spec 1.12.
> + * Skip this warning dince existing CPUs with older priv
since
> + * specd and debug = true will be impacted.
spec
Otherwise:
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Alistair
> + */
> + if (!strcmp(edata->name, "sdtrig")) {
> + continue;
> + }
> +
> isa_ext_update_enabled(cpu, edata->ext_enable_offset, false);
>
> /*
> diff --git a/tests/data/acpi/riscv64/virt/RHCT b/tests/data/acpi/riscv64/virt/RHCT
> index 13c8025b868051485be5ba62974a22971a07bc6a..156607dec45b0e63e5b3ebed62e81076dacd80d0 100644
> GIT binary patch
> delta 49
> zcmbQhJdK$v$iq2g8Y2S(<Ex2W2COEGj0`#x?N_s=loVyAPkd23IgL??BZrZJp^TA%
> F0RTq!4730M
>
> delta 43
> zcmbQnJb{@j$iq2g0wV(h<JXB?2CRCFj0~z1?N?9ySUowLQJEu+k%6Irk%0jK_Q(p3
>
> --
> 2.49.0
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH RESEND v2 3/3] target/riscv/cpu.c: do better with 'named features' doc
2025-06-04 17:43 ` [PATCH RESEND v2 3/3] target/riscv/cpu.c: do better with 'named features' doc Daniel Henrique Barboza
@ 2025-06-05 3:43 ` Alistair Francis
0 siblings, 0 replies; 6+ messages in thread
From: Alistair Francis @ 2025-06-05 3:43 UTC (permalink / raw)
To: Daniel Henrique Barboza
Cc: qemu-devel, qemu-riscv, alistair.francis, liwei1518, zhiwei_liu,
palmer
On Thu, Jun 5, 2025 at 3:45 AM Daniel Henrique Barboza
<dbarboza@ventanamicro.com> wrote:
>
> Most of the named features are added directly in isa_edata_arr[], some
> of them are also added in riscv_cpu_named_features(). There is a reason
> for that, and the existing docs can do better explaining it.
>
> Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
> Message-ID: <20250529202315.1684198-4-dbarboza@ventanamicro.com>
Acked-by: Alistair Francis <alistair.francis@wdc.com>
Alistair
> ---
> target/riscv/cpu.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
> index c1bcf60988..758f254c15 100644
> --- a/target/riscv/cpu.c
> +++ b/target/riscv/cpu.c
> @@ -1378,13 +1378,23 @@ const RISCVCPUMultiExtConfig riscv_cpu_experimental_exts[] = {
> * 'Named features' is the name we give to extensions that we
> * don't want to expose to users. They are either immutable
> * (always enabled/disable) or they'll vary depending on
> - * the resulting CPU state. They have riscv,isa strings
> - * and priv_ver like regular extensions.
> + * the resulting CPU state.
> + *
> + * Some of them are always enabled depending on priv version
> + * of the CPU and are declared directly in isa_edata_arr[].
> + * The ones listed here have special checks during finalize()
> + * time and require their own flags like regular extensions.
> + * See riscv_cpu_update_named_features() for more info.
> */
> const RISCVCPUMultiExtConfig riscv_cpu_named_features[] = {
> MULTI_EXT_CFG_BOOL("zic64b", ext_zic64b, true),
> MULTI_EXT_CFG_BOOL("ssstateen", ext_ssstateen, true),
> MULTI_EXT_CFG_BOOL("sha", ext_sha, true),
> +
> + /*
> + * 'ziccrse' has its own flag because the KVM driver
> + * wants to enable/disable it on its own accord.
> + */
> MULTI_EXT_CFG_BOOL("ziccrse", ext_ziccrse, true),
>
> { },
> --
> 2.49.0
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-06-05 3:44 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-04 17:43 [PATCH RESEND v2 0/3] target/riscv: add missing named features Daniel Henrique Barboza
2025-06-04 17:43 ` [PATCH RESEND v2 1/3] target/riscv/cpu.c: add 'sdtrig' in riscv,isa Daniel Henrique Barboza
2025-06-05 3:37 ` [PATCH RESEND v2 1/3] target/riscv/cpu.c: add 'sdtrig' in riscv, isa Alistair Francis
2025-06-04 17:43 ` [PATCH RESEND v2 2/3] target/riscv/cpu.c: add 'ssstrict' to " Daniel Henrique Barboza
2025-06-04 17:43 ` [PATCH RESEND v2 3/3] target/riscv/cpu.c: do better with 'named features' doc Daniel Henrique Barboza
2025-06-05 3:43 ` Alistair Francis
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).