On Fri, Jul 12, 2024 at 8:33 AM Atish Patra <ati...@rivosinc.com> wrote:
>
> This patch series adds the support for RISC-V ISA extension smcntrpmf (cycle 
> and
> privilege mode filtering) [1]. It is based on Kevin's earlier work but 
> improves
> it by actually implement privilege mode filtering by tracking the privilege
> mode switches. This enables the privilege mode filtering for mhpmcounters as
> well. However, Smcntrpmf/Sscofpmf must be enabled to leverage this.
>
> The series is also available at [2] as well.
>
> Changes in v8:
> - Moved the config option to a separate patch at the end of the series.
> - Fixed a comments recieved in v7 around setting INH bit based on available 
> priv modes.
> - Updated the RB/AB tags.
> - Link to v7: 
> https://lore.kernel.org/r/20240626-smcntrpmf_v7-v7-0-bb0f10af7...@rivosinc.com
>
> Changes from v6->v7:
> 1. Fixed a compilation issue.
>
> Changes from v5->v6:
> 1. Rebased on top of alister/riscv-to-apply.next (c50aabe132) and icount fix
>    patch[4] which may cause conflicts.
> 2. Fixed a bug in pmf logic related to VS<->HS transition and same mode
>    recording.
> 3. Merged assorted fixes PR as the changes are intertwined. [2]
> 4. Fix counter inhibit CSR behavior. This change now start counters from both
>    mhpmcounter and mcountinhibit writes. Previously cycle/inst timer was
>    only started on mhpmcounterx write.
> 5. Optimized the PMU timer setup code.
>
> Changes from v4->v5:
> 1. Rebased on top of master(158a054c4d1a).
> 2. Fixed a bug for VS<->HS transition.
>
> Changes from v3->v4:
> 1. Fixed the ordering of the ISA extension names in isa_edata_arr.
> 2. Added RB tags.
>
> Changes from v2->v3:
> 1. Fixed the rebasing error in PATCH2.
> 2. Added RB tags.
> 3. Addressed other review comments.
>
> Changes from v1->v2:
> 1. Implemented actual mode filtering for both icount and host ticks mode.
> 1. Addressed comments in v1.
> 2. Added Kevin's personal email address.
>
> [1] https://github.com/riscv/riscv-smcntrpmf
> [2] https://github.com/atishp04/qemu/tree/b4/smcntrpmf_v7
> [3] 
> https://lore.kernel.org/all/20240429-countinhibit_fix-v1-0-802ec1e99...@rivosinc.com/
> [4] 
> https://lore.kernel.org/qemu-riscv/20240618112649.76683-1-cle...@rivosinc.com/
>
> Cc: Rajnesh Kanwal <rkan...@rivosinc.com>
>
> Signed-off-by: Atish Patra <ati...@rivosinc.com>
> ---
> Atish Patra (7):
>       target/riscv: Fix the predicate functions for mhpmeventhX CSRs
>       target/riscv: Only set INH fields if priv mode is available
>       target/riscv: Implement privilege mode filtering for cycle/instret
>       target/riscv: Save counter values during countinhibit update
>       target/riscv: Enforce WARL behavior for scounteren/hcounteren
>       target/riscv: Do not setup pmu timer if OF is disabled
>       target/riscv: Expose the Smcntrpmf config
>
> Kaiwen Xue (3):
>       target/riscv: Add cycle & instret privilege mode filtering properties
>       target/riscv: Add cycle & instret privilege mode filtering definitions
>       target/riscv: Add cycle & instret privilege mode filtering support
>
> Rajnesh Kanwal (3):
>       target/riscv: Combine set_mode and set_virt functions.
>       target/riscv: Start counters from both mhpmcounter and mcountinhibit
>       target/riscv: More accurately model priv mode filtering.
>
>  target/riscv/cpu.c        |   2 +
>  target/riscv/cpu.h        |  20 ++-
>  target/riscv/cpu_bits.h   |  41 +++++
>  target/riscv/cpu_cfg.h    |   1 +
>  target/riscv/cpu_helper.c |  66 +++----
>  target/riscv/csr.c        | 437 
> +++++++++++++++++++++++++++++++++++++---------
>  target/riscv/machine.c    |   5 +-
>  target/riscv/op_helper.c  |  17 +-
>  target/riscv/pmu.c        | 181 +++++++++++++++++--
>  target/riscv/pmu.h        |   4 +
>  10 files changed, 624 insertions(+), 150 deletions(-)

Thanks!

Applied to riscv-to-apply.next

Alistair

> ---
> base-commit: 842a3d79a0e37cd3d685c4728308fac0d9bfd0bb
> change-id: 20240626-smcntrpmf_v7-3b275d1da117
> --
> Regards,
> Atish patra
>
>

Reply via email to