qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v5 0/7] target/riscv: Add support for Control Transfer Records Ext.
@ 2024-12-05 11:34 Rajnesh Kanwal
  2024-12-05 11:34 ` [PATCH v5 1/7] target/riscv: Remove obsolete sfence.vm instruction Rajnesh Kanwal
                   ` (6 more replies)
  0 siblings, 7 replies; 14+ messages in thread
From: Rajnesh Kanwal @ 2024-12-05 11:34 UTC (permalink / raw)
  To: qemu-riscv, qemu-devel, Rajnesh Kanwal
  Cc: alistair.francis, bin.meng, liweiwei, dbarboza, zhiwei_liu,
	atishp, apatel, beeman, jason.chien, frank.chang,
	richard.henderson

This series enables Control Transfer Records extension support on riscv
platform. This extension is similar to Arch LBR in x86 and BRBE in ARM.
The Extension has been stable and this series is based on v1.0_rc6 [0]

CTR extension depends on both the implementation of S-mode and Sscsrind
extension v1.0.0 [1]. CTR access ctrsource, ctrtartget and ctrdata CSRs using
sscsrind extension.

The series is based on Smcdeleg/Ssccfg counter delegation extension [2]
patches [3]. CTR itself doesn't depend on counter delegation support. This
rebase is basically to include the Smcsrind patches.

Here is the link to a quick start guide [4] to setup and run a basic perf demo
on Linux to use CTR Ext.

Qemu patches can be found here:
https://github.com/rajnesh-kanwal/qemu/tree/b4/ctr_upstream_v5

Opensbi patch can be found here:
https://github.com/rajnesh-kanwal/opensbi/tree/ctr_upstream_v2

Linux kernel patches can be found here:
https://github.com/rajnesh-kanwal/linux/tree/b4/ctr_upstream_v2

[0]: https://github.com/riscv/riscv-control-transfer-records/releases/tag/v1.0_rc6
[1]: https://github.com/riscvarchive/riscv-indirect-csr-access/releases/tag/v1.0.0
[2]: https://github.com/riscvarchive/riscv-smcdeleg-ssccfg/releases/tag/v1.0.0
[3]: https://lore.kernel.org/qemu-riscv/20241203-counter_delegation-v4-0-c12a89baed86@rivosinc.com/
[4]: https://github.com/rajnesh-kanwal/linux/wiki/Running-CTR-basic-demo-on-QEMU-RISC%E2%80%90V-Virt-machine

Signed-off-by: Rajnesh Kanwal <rkanwal@rivosinc.com>
---
Changelog:
v5: Improvements based on Richard Henderson's feedback.
  - Fixed code gen logic to use gen_update_pc() instead of
    tcg_constant_tl().
  - Some function renaming.
  - Rebased onto v4 of counter delegation series.

v4: Improvements based on Richard Henderson's feedback.
  - Refactored CTR related code generation to move more code into
    translation side and avoid unnecessary code execution in generated
    code.
  - Added missing code in machine.c to migrate the new state.
  - https://lore.kernel.org/r/20241204-b4-ctr_upstream_v3-v4-0-d3ce6bef9432@rivosinc.com

v3: Improvements based on Jason Chien and Frank Chang's feedback.
  - Created single set of MACROs for CTR CSRs in cpu_bit.h
  - Some fixes in riscv_ctr_add_entry.
  - Return zero for vs/sireg4-6 for CTR 0x200 to 0x2ff range.
  - Improved extension dependency check.
  - Fixed invalid ctrctl csr selection bug in riscv_ctr_freeze.
  - Added implied rules for Smctr and Ssctr.
  - Added missing SMSTATEEN0_CTR bit in mstateen0 and hstateen0 write ops.
  - Some more cosmetic changes.
  - https://lore.kernel.org/qemu-riscv/20241104-b4-ctr_upstream_v3-v3-0-32fd3c48205f@rivosinc.com/

v2: Lots of improvements based on Jason Chien's feedback including:
  - Added CTR recording for cm.jalt, cm.jt, cm.popret, cm.popretz.
  - Fixed and added more CTR extension enable checks.
  - Fixed CTR CSR predicate functions.
  - Fixed external trap xTE bit checks.
  - One fix in freeze function for VS-mode.
  - Lots of minor code improvements.
  - Added checks in sctrclr instruction helper.
  - https://lore.kernel.org/qemu-riscv/20240619152708.135991-1-rkanwal@rivosinc.com/

v1:
  - https://lore.kernel.org/qemu-riscv/20240529160950.132754-1-rkanwal@rivosinc.com/

---
Rajnesh Kanwal (7):
      target/riscv: Remove obsolete sfence.vm instruction
      target/riscv: Add Control Transfer Records CSR definitions.
      target/riscv: Add support for Control Transfer Records extension CSRs.
      target/riscv: Add support to record CTR entries.
      target/riscv: Add CTR sctrclr instruction.
      target/riscv: Add support to access ctrsource, ctrtarget, ctrdata regs.
      target/riscv: machine: Add Control Transfer Record state description

 target/riscv/cpu.c                             |  26 ++-
 target/riscv/cpu.h                             |  13 ++
 target/riscv/cpu_bits.h                        |  94 ++++++++
 target/riscv/cpu_cfg.h                         |   2 +
 target/riscv/cpu_helper.c                      | 266 ++++++++++++++++++++++
 target/riscv/csr.c                             | 294 ++++++++++++++++++++++++-
 target/riscv/helper.h                          |   2 +
 target/riscv/insn32.decode                     |   2 +-
 target/riscv/insn_trans/trans_privileged.c.inc |  18 +-
 target/riscv/insn_trans/trans_rvi.c.inc        |  75 +++++++
 target/riscv/insn_trans/trans_rvzce.c.inc      |  21 ++
 target/riscv/machine.c                         |  25 +++
 target/riscv/op_helper.c                       |  48 ++++
 target/riscv/tcg/tcg-cpu.c                     |  11 +
 target/riscv/translate.c                       |  46 ++++
 15 files changed, 935 insertions(+), 8 deletions(-)
---
base-commit: 685c44c5d40b6796e4a88c0335f7ae01cb7a2121
change-id: 20241029-b4-ctr_upstream_v3-7ab764c68bf1
-- 
Best Regards,
Rajnesh Kanwal



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

end of thread, other threads:[~2025-02-04 13:52 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-05 11:34 [PATCH v5 0/7] target/riscv: Add support for Control Transfer Records Ext Rajnesh Kanwal
2024-12-05 11:34 ` [PATCH v5 1/7] target/riscv: Remove obsolete sfence.vm instruction Rajnesh Kanwal
2024-12-05 11:34 ` [PATCH v5 2/7] target/riscv: Add Control Transfer Records CSR definitions Rajnesh Kanwal
2024-12-05 11:34 ` [PATCH v5 3/7] target/riscv: Add support for Control Transfer Records extension CSRs Rajnesh Kanwal
2025-02-03  1:41   ` Alistair Francis
2024-12-05 11:34 ` [PATCH v5 4/7] target/riscv: Add support to record CTR entries Rajnesh Kanwal
2025-02-03  2:51   ` Alistair Francis
2024-12-05 11:34 ` [PATCH v5 5/7] target/riscv: Add CTR sctrclr instruction Rajnesh Kanwal
2025-02-03  2:53   ` Alistair Francis
2024-12-05 11:34 ` [PATCH v5 6/7] target/riscv: Add support to access ctrsource, ctrtarget, ctrdata regs Rajnesh Kanwal
2025-02-03  2:57   ` Alistair Francis
2025-02-04 13:51     ` Rajnesh Kanwal
2024-12-05 11:34 ` [PATCH v5 7/7] target/riscv: machine: Add Control Transfer Record state description Rajnesh Kanwal
2025-02-03  2:58   ` 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).