Thank you for pointing that out. CTR does not use miselect and mireg*. There is no dependency on Smcsrind. I believe the spec needs to be corrected.

Chapter 1 states that:
Smctr depends on the Smcsrind extension, while Ssctr depends on the Sscsrind extension. Further, both Smctr and Ssctr depend upon implementation of S-mode.

Beeman Strong 於 2024/6/5 上午 06:32 寫道:
There is no dependency on Smcsrind, only Sscsrind.

On Tue, Jun 4, 2024 at 12:29 AM Jason Chien <jason.ch...@sifive.com> wrote:

    Smctr depends on the Smcsrind extension, Ssctr depends on the
    Sscsrind
    extension, and both Smctr and Ssctr depend upon implementation of
    S-mode.
    There should be a dependency check in
    riscv_cpu_validate_set_extensions().

    Rajnesh Kanwal 於 2024/5/30 上午 12:09 寫道:
    > 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 the latest release can be
    found here [0]
    >
    > CTR extension depends on couple of other extensions:
    >
    > 1. S[m|s]csrind : The indirect CSR extension [1] which defines
    additional
    >     ([M|S|VS]IREG2-[M|S|VS]IREG6) register to address size
    limitation of
    >     RISC-V CSR address space. CTR access ctrsource, ctrtartget
    and ctrdata
    >     CSRs using sscsrind extension.
    >
    > 2. Smstateen: The mstateen bit[54] controls the access to the
    CTR ext to
    >     S-mode.
    >
    > 3. Sscofpmf: Counter overflow and privilege mode filtering. [2]
    >
    > The series is based on Smcdeleg/Ssccfg counter delegation
    extension [3]
    > patches. CTR itself doesn't depend on counter delegation
    support. This
    > rebase is basically to include the Smcsrind patches.
    >
    > Due to the dependency of these extensions, the following
    extensions must be
    > enabled to use the control transfer records feature.
    >
    >
    
"smstateen=true,sscofpmf=true,smcsrind=true,sscsrind=true,smctr=true,ssctr=true"
    >
    > Here is the link to a quick guide [5] to setup and run a basic
    perf demo on
    > Linux to use CTR Ext.
    >
    > The Qemu patches can be found here:
    > https://github.com/rajnesh-kanwal/qemu/tree/ctr_upstream
    >
    > The opensbi patch can be found here:
    > https://github.com/rajnesh-kanwal/opensbi/tree/ctr_upstream
    >
    > The Linux kernel patches can be found here:
    > https://github.com/rajnesh-kanwal/linux/tree/ctr_upstream
    >
    > [0]:https://github.com/riscv/riscv-control-transfer-records/release
    > [1]:https://github.com/riscv/riscv-indirect-csr-access
    > [2]:https://github.com/riscvarchive/riscv-count-overflow/tree/main
    > [3]:https://github.com/riscv/riscv-smcdeleg-ssccfg
    >
    
[4]:https://lore.kernel.org/all/20240217000134.3634191-1-ati...@rivosinc.com/
    >
    
[5]:https://github.com/rajnesh-kanwal/linux/wiki/Running-CTR-basic-demo-on-QEMU-RISC%E2%80%90V-Virt-machine
    >
    > Rajnesh Kanwal (6):
    >    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/cpu.c                            |   4 +
    >   target/riscv/cpu.h                            |  14 +
    >   target/riscv/cpu_bits.h                       | 154 +++++++++
    >   target/riscv/cpu_cfg.h                        |   2 +
    >   target/riscv/cpu_helper.c                     | 213 ++++++++++++
    >   target/riscv/csr.c                            | 312
    +++++++++++++++++-
    >   target/riscv/helper.h                         |   8 +-
    >   target/riscv/insn32.decode                    |   2 +-
    >   .../riscv/insn_trans/trans_privileged.c.inc   |  21 +-
    >   target/riscv/insn_trans/trans_rvi.c.inc       |  27 ++
    >   target/riscv/op_helper.c                      | 117 ++++++-
    >   target/riscv/translate.c                      |   9 +
    >   12 files changed, 870 insertions(+), 13 deletions(-)
    >

Reply via email to