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

Hi,

During the review of a series that did some work in the RISCV_FEATURES*
enum, Liu Zhiwei commented on how we could centralize the all the
extension validation code and integrate it with write_misa() [1].

This does at least part of what was suggested. The idea is that, ATM, we
have too many places setting cpu->cfg and the validation logic is
scattered around (e.g. there are some contraints in write_misa() that
should be applicable elsewhere). This series is an attempt to centralize
things a bit.

The main accomplishments of this series are:

- the parent device riscv-cpu no longer sets any cpu->cfg attribute. This
  was forcing init() functions to disable extensions that it wouldn't
  use just because the parent device was enabling it;

- all validations are centered in validate_set_extensions(), with
  pontual exceptions in write_misa() that has exclusive contraints;

- set_misa() now writes cpu->cfg. No need to have one function to set
  env->misa_ext and then another to set cpu->cfg;

- register_cpu_props() now only exposes user-facing props;

- all validations from validate_set_extensions() are done at the start
  of the function. Validate first, set extensions after;

- RVE is now forbidden in all validations, not just in write_misa();

- RVG is now forbidden in write_misa();

- write_misa now uses set_misa() and validate_set_extensions().



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

Daniel Henrique Barboza (17):
  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 macro
  target/riscv/cpu.c: add riscv_cpu_validate_priv_spec()
  target/riscv: move realize() validations to
    riscv_cpu_validate_set_extensions()
  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/cpu.c: move riscv_cpu_validate_v() up
  target/riscv: put env->misa_ext <-> cpu->cfg code into helpers
  target/riscv/cpu.c: split riscv_cpu_validate_priv_spec()
  target/riscv/cpu.c: do not allow RVE to be set
  target/riscv: add RVG
  target/riscv: do not allow RVG in write_misa()
  target/riscv: rework write_misa()

 target/riscv/cpu.c | 516 +++++++++++++++++++++++++--------------------
 target/riscv/cpu.h |   9 +-
 target/riscv/csr.c |  52 ++---
 3 files changed, 323 insertions(+), 254 deletions(-)

-- 
2.39.2



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

end of thread, other threads:[~2023-03-10  0:20 UTC | newest]

Thread overview: 33+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-08 20:19 [PATCH for-8.1 00/17] centralize CPU extensions logic Daniel Henrique Barboza
2023-03-08 20:19 ` [PATCH for-8.1 01/17] target/riscv/cpu.c: add riscv_cpu_validate_v() Daniel Henrique Barboza
2023-03-08 20:19 ` [PATCH for-8.1 02/17] target/riscv/cpu.c: remove set_vext_version() Daniel Henrique Barboza
2023-03-09  7:28   ` LIU Zhiwei
2023-03-08 20:19 ` [PATCH for-8.1 03/17] target/riscv/cpu.c: remove set_priv_version() Daniel Henrique Barboza
2023-03-09  7:28   ` LIU Zhiwei
2023-03-09 16:22     ` Daniel Henrique Barboza
2023-03-10  0:18       ` Alistair Francis
2023-03-08 20:19 ` [PATCH for-8.1 04/17] target/riscv: add PRIV_VERSION_LATEST macro Daniel Henrique Barboza
2023-03-08 23:00   ` Richard Henderson
2023-03-09 15:59     ` Daniel Henrique Barboza
2023-03-09  7:31   ` LIU Zhiwei
2023-03-08 20:19 ` [PATCH for-8.1 05/17] target/riscv/cpu.c: add riscv_cpu_validate_priv_spec() Daniel Henrique Barboza
2023-03-08 23:06   ` Richard Henderson
2023-03-08 20:19 ` [PATCH for-8.1 06/17] target/riscv: move realize() validations to riscv_cpu_validate_set_extensions() Daniel Henrique Barboza
2023-03-08 20:19 ` [PATCH for-8.1 07/17] target/riscv/cpu.c: remove cfg setup from riscv_cpu_init() Daniel Henrique Barboza
2023-03-08 20:19 ` [PATCH for-8.1 08/17] target/riscv/cpu.c: avoid set_misa() in validate_set_extensions() Daniel Henrique Barboza
2023-03-08 20:19 ` [PATCH for-8.1 09/17] target/riscv/cpu.c: set cpu config in set_misa() Daniel Henrique Barboza
2023-03-08 20:19 ` [PATCH for-8.1 10/17] target/riscv/cpu.c: redesign register_cpu_props() Daniel Henrique Barboza
2023-03-08 20:19 ` [PATCH for-8.1 11/17] target/riscv/cpu.c: move riscv_cpu_validate_v() up Daniel Henrique Barboza
2023-03-08 20:19 ` [PATCH for-8.1 12/17] target/riscv: put env->misa_ext <-> cpu->cfg code into helpers Daniel Henrique Barboza
2023-03-08 20:19 ` [PATCH for-8.1 13/17] target/riscv/cpu.c: split riscv_cpu_validate_priv_spec() Daniel Henrique Barboza
2023-03-08 20:19 ` [PATCH for-8.1 14/17] target/riscv/cpu.c: do not allow RVE to be set Daniel Henrique Barboza
2023-03-09  7:10   ` LIU Zhiwei
2023-03-09 16:23     ` Daniel Henrique Barboza
2023-03-08 20:19 ` [PATCH for-8.1 15/17] target/riscv: add RVG Daniel Henrique Barboza
2023-03-08 20:19 ` [PATCH for-8.1 16/17] target/riscv: do not allow RVG in write_misa() Daniel Henrique Barboza
2023-03-08 20:19 ` [PATCH for-8.1 17/17] target/riscv: rework write_misa() Daniel Henrique Barboza
2023-03-09  7:27   ` LIU Zhiwei
2023-03-09  7:40     ` LIU Zhiwei
2023-03-09 16:35       ` Daniel Henrique Barboza
2023-03-09 16:33     ` Daniel Henrique Barboza
2023-03-09 21:14 ` [PATCH for-8.1 00/17] centralize CPU extensions logic 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).