qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH for-8.1 v3 00/26] target/riscv: rework CPU extensions validation
@ 2023-03-18 20:04 Daniel Henrique Barboza
  2023-03-18 20:04 ` [PATCH for-8.1 v3 01/26] target/riscv/cpu.c: add riscv_cpu_validate_v() Daniel Henrique Barboza
                   ` (25 more replies)
  0 siblings, 26 replies; 38+ messages in thread
From: Daniel Henrique Barboza @ 2023-03-18 20:04 UTC (permalink / raw)
  To: qemu-devel
  Cc: qemu-riscv, alistair.francis, bmeng, liweiwei, zhiwei_liu, palmer,
	Daniel Henrique Barboza

Hi,

This new version contains changes suggested by Weiwei Li. I've also
reworked write_misa() to cover more cases. write_misa() is now able to
properly enable RVG, RVV and RVE.

A more in-depth description of what was attempted here can be found in
[1]. Note that the current validation flow already prevents certain misa
bits from being disabled (e.g. RVF) due to the presence of Z extensions
that are already enabled in the hart, so I decided not to add extra
logic to handle these cases.

Patches are rebased on top of Alistair's riscv-to-apply.next.

Changes from v2:
- patches removed:
  - patch 15 ('do not allow RVG in write_misa()')
  - patch 19 ('add misa_ext V-> D & F dependency')
- patch 15:
  - add zfinx dependency to enable RVG
- patch 19 (former patch 17):
  -  remove misa_ext* assignment from validate_set_extensions()
- patch 23 (former 25):
  - enable RVE in write_misa()
- new patch 25:
  - enable RVG in write_misa()
- new patch 26:
  - enable RVV in write_misa()
- v2 link: https://lists.gnu.org/archive/html/qemu-devel/2023-03/msg04424.html

[1] https://lists.gnu.org/archive/html/qemu-devel/2023-03/msg04674.html

Daniel Henrique Barboza (26):
  target/riscv/cpu.c: add riscv_cpu_validate_v()
  target/riscv/cpu.c: remove set_vext_version()
  target/riscv/cpu.c: remove set_priv_version()
  target/riscv: add PRIV_VERSION_LATEST
  target/riscv/cpu.c: add priv_spec validate/disable_exts helpers
  target/riscv/cpu.c: add riscv_cpu_validate_misa_mxl()
  target/riscv: move pmp and epmp validations to
    validate_set_extensions()
  target/riscv/cpu.c: validate extensions before riscv_timer_init()
  target/riscv/cpu.c: remove cfg setup from riscv_cpu_init()
  target/riscv/cpu.c: avoid set_misa() in validate_set_extensions()
  target/riscv/cpu.c: set cpu config in set_misa()
  target/riscv/cpu.c: redesign register_cpu_props()
  target/riscv: put env->misa_ext <-> cpu->cfg code into helpers
  target/riscv: add RVG
  target/riscv/cpu.c: split RVG code from validate_set_extensions()
  target/riscv/cpu.c: add riscv_cpu_validate_misa_ext()
  target/riscv: move riscv_cpu_validate_v() to validate_misa_ext()
  target/riscv: error out on priv failure for RVH
  target/riscv: write env->misa_ext* in register_generic_cpu_props()
  target/riscv: make validate_misa_ext() use a misa_ext val
  target/riscv: split riscv_cpu_validate_set_extensions()
  target/riscv: use misa_ext val in riscv_cpu_validate_extensions()
  target/riscv: rework write_misa()
  target/riscv: update cpu->cfg misa bits in commit_cpu_cfg()
  target/riscv: allow write_misa() to enable RVG
  target/riscv: allow write_misa() to enable RVV

 target/riscv/cpu.c | 691 +++++++++++++++++++++++++++++----------------
 target/riscv/cpu.h |  17 +-
 target/riscv/csr.c |  85 ++++--
 3 files changed, 522 insertions(+), 271 deletions(-)

-- 
2.39.2



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

end of thread, other threads:[~2023-03-22 17:42 UTC | newest]

Thread overview: 38+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-18 20:04 [PATCH for-8.1 v3 00/26] target/riscv: rework CPU extensions validation Daniel Henrique Barboza
2023-03-18 20:04 ` [PATCH for-8.1 v3 01/26] target/riscv/cpu.c: add riscv_cpu_validate_v() Daniel Henrique Barboza
2023-03-21  1:47   ` LIU Zhiwei
2023-03-18 20:04 ` [PATCH for-8.1 v3 02/26] target/riscv/cpu.c: remove set_vext_version() Daniel Henrique Barboza
2023-03-21  1:49   ` LIU Zhiwei
2023-03-18 20:04 ` [PATCH for-8.1 v3 03/26] target/riscv/cpu.c: remove set_priv_version() Daniel Henrique Barboza
2023-03-21  1:50   ` LIU Zhiwei
2023-03-18 20:04 ` [PATCH for-8.1 v3 04/26] target/riscv: add PRIV_VERSION_LATEST Daniel Henrique Barboza
2023-03-21  1:50   ` LIU Zhiwei
2023-03-18 20:04 ` [PATCH for-8.1 v3 05/26] target/riscv/cpu.c: add priv_spec validate/disable_exts helpers Daniel Henrique Barboza
2023-03-21  4:51   ` LIU Zhiwei
2023-03-18 20:04 ` [PATCH for-8.1 v3 06/26] target/riscv/cpu.c: add riscv_cpu_validate_misa_mxl() Daniel Henrique Barboza
2023-03-18 20:04 ` [PATCH for-8.1 v3 07/26] target/riscv: move pmp and epmp validations to validate_set_extensions() Daniel Henrique Barboza
2023-03-18 20:04 ` [PATCH for-8.1 v3 08/26] target/riscv/cpu.c: validate extensions before riscv_timer_init() Daniel Henrique Barboza
2023-03-18 20:04 ` [PATCH for-8.1 v3 09/26] target/riscv/cpu.c: remove cfg setup from riscv_cpu_init() Daniel Henrique Barboza
2023-03-18 20:04 ` [PATCH for-8.1 v3 10/26] target/riscv/cpu.c: avoid set_misa() in validate_set_extensions() Daniel Henrique Barboza
2023-03-18 20:04 ` [PATCH for-8.1 v3 11/26] target/riscv/cpu.c: set cpu config in set_misa() Daniel Henrique Barboza
2023-03-21  3:54   ` liweiwei
2023-03-18 20:04 ` [PATCH for-8.1 v3 12/26] target/riscv/cpu.c: redesign register_cpu_props() Daniel Henrique Barboza
2023-03-18 20:04 ` [PATCH for-8.1 v3 13/26] target/riscv: put env->misa_ext <-> cpu->cfg code into helpers Daniel Henrique Barboza
2023-03-18 20:04 ` [PATCH for-8.1 v3 14/26] target/riscv: add RVG Daniel Henrique Barboza
2023-03-18 20:04 ` [PATCH for-8.1 v3 15/26] target/riscv/cpu.c: split RVG code from validate_set_extensions() Daniel Henrique Barboza
2023-03-21  3:10   ` liweiwei
2023-03-18 20:04 ` [PATCH for-8.1 v3 16/26] target/riscv/cpu.c: add riscv_cpu_validate_misa_ext() Daniel Henrique Barboza
2023-03-18 20:04 ` [PATCH for-8.1 v3 17/26] target/riscv: move riscv_cpu_validate_v() to validate_misa_ext() Daniel Henrique Barboza
2023-03-18 20:04 ` [PATCH for-8.1 v3 18/26] target/riscv: error out on priv failure for RVH Daniel Henrique Barboza
2023-03-18 20:04 ` [PATCH for-8.1 v3 19/26] target/riscv: write env->misa_ext* in register_generic_cpu_props() Daniel Henrique Barboza
2023-03-18 20:04 ` [PATCH for-8.1 v3 20/26] target/riscv: make validate_misa_ext() use a misa_ext val Daniel Henrique Barboza
2023-03-18 20:04 ` [PATCH for-8.1 v3 21/26] target/riscv: split riscv_cpu_validate_set_extensions() Daniel Henrique Barboza
2023-03-18 20:04 ` [PATCH for-8.1 v3 22/26] target/riscv: use misa_ext val in riscv_cpu_validate_extensions() Daniel Henrique Barboza
2023-03-18 20:04 ` [PATCH for-8.1 v3 23/26] target/riscv: rework write_misa() Daniel Henrique Barboza
2023-03-18 20:04 ` [PATCH for-8.1 v3 24/26] target/riscv: update cpu->cfg misa bits in commit_cpu_cfg() Daniel Henrique Barboza
2023-03-18 20:04 ` [PATCH for-8.1 v3 25/26] target/riscv: allow write_misa() to enable RVG Daniel Henrique Barboza
2023-03-21  3:25   ` liweiwei
2023-03-22 17:42     ` Daniel Henrique Barboza
2023-03-18 20:04 ` [PATCH for-8.1 v3 26/26] target/riscv: allow write_misa() to enable RVV Daniel Henrique Barboza
2023-03-21  3:41   ` liweiwei
2023-03-22 17:39     ` Daniel Henrique Barboza

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