public inbox for linux-riscv@lists.infradead.org
 help / color / mirror / Atom feed
From: Conor Dooley <conor.dooley@microchip.com>
To: Atish Patra <atishp@rivosinc.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	Alexandre Ghiti <alexghiti@rivosinc.com>,
	kvm@vger.kernel.org, Anup Patel <anup@brainfault.org>,
	Paul Walmsley <paul.walmsley@sifive.com>,
	linux-kernel@vger.kernel.org, Guo Ren <guoren@kernel.org>,
	kvm-riscv@lists.infradead.org,
	Atish Patra <atishp@atishpatra.org>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	linux-riscv@lists.infradead.org, Will Deacon <will@kernel.org>,
	Andrew Jones <ajones@ventanamicro.com>
Subject: Re: [RFC 0/9] RISC-V SBI v2.0 PMU improvements and Perf sampling in KVM guest
Date: Thu, 7 Dec 2023 12:02:50 +0000	[thread overview]
Message-ID: <20231207-affiliate-state-c4a20ea7e8de@wendy> (raw)
In-Reply-To: <20231205024310.1593100-1-atishp@rivosinc.com>


[-- Attachment #1.1: Type: text/plain, Size: 5881 bytes --]

Hey Atish,

On Mon, Dec 04, 2023 at 06:43:01PM -0800, Atish Patra wrote:
> This series implements SBI PMU improvements done in SBI v2.0[1] i.e. PMU snapshot
> and fw_read_hi() functions. 

I don't see any commentary in this cover letter as to why the series is
an RFC. v2.0 is a frozen spec per the Releases tab on GitHub, so that
has ruled out the usual reason for spec related things being RFCs.

What is it about the series that you are not yet willing to stand over?

Cheers,
Conor.

> SBI v2.0 introduced PMU snapshot feature which allows the SBI implementation
> to provide counter information (i.e. values/overlfow status) via a shared
> memory between the SBI implementation and supervisor OS. This allows to minimize
> the number of traps in when perf being used inside a kvm guest as it relies on
> SBI PMU + trap/emulation of the counters. 
> 
> The current set of ratified RISC-V specification also doesn't allow scountovf
> to be trap/emulated by the hypervisor. The SBI PMU snapshot bridges the gap
> in ISA as well and enables perf sampling in the guest. However, LCOFI in the
> guest only works via IRQ filtering in AIA specification. That's why, AIA
> has to be enabled in the hardware (at least the Ssaia extension) in order to
> use the sampling support in the perf. 
> 
> Here are the patch wise implementation details.
> 
> PATCH 1-2 : Generic cleanups/improvements.
> PATCH 3,4,9 : FW_READ_HI function implementation
> PATCH 5-6: Add PMU snapshot feature in sbi pmu driver
> PATCH 7-8: KVM implementation for snapshot and sampling in kvm guests
> 
> The series is based on v6.70-rc3 and is available at:
> 
> https://github.com/atishp04/linux/tree/kvm_pmu_snapshot_v1
> 
> The kvmtool patch is also available at:
> https://github.com/atishp04/kvmtool/tree/sscofpmf
> 
> It also requires Ssaia ISA extension to be present in the hardware in order to
> get perf sampling support in the guest. In Qemu virt machine, it can be done
> by the following config.
> 
> ```
> -cpu rv64,sscofpmf=true,x-ssaia=true
> ```
> 
> There is no other dependancies on AIA apart from that. Thus, Ssaia must be disabled
> for the guest if AIA patches are not available. Here is the example command.
> 
> ```
> ./lkvm-static run -m 256 -c2 --console serial -p "console=ttyS0 earlycon" --disable-ssaia -k ./Image --debug 
> ```
> 
> The series has been tested only in Qemu.
> Here is the snippet of the perf running inside a kvm guest.
> 
> ===================================================
> # perf record -e cycles -e instructions perf bench sched messaging -g 5
> ...
> # Running 'sched/messaging' benchmark:
> ...
> [   45.928723] perf_duration_warn: 2 callbacks suppressed
> [   45.929000] perf: interrupt took too long (484426 > 483186), lowering kernel.perf_event_max_sample_rate to 250
> # 20 sender and receiver processes per group
> # 5 groups == 200 processes run
> 
>      Total time: 14.220 [sec]
> [ perf record: Woken up 1 times to write data ]
> [ perf record: Captured and wrote 0.117 MB perf.data (1942 samples) ]
> # perf report --stdio
> # To display the perf.data header info, please use --header/--header-only optio>
> #
> #
> # Total Lost Samples: 0
> #
> # Samples: 943  of event 'cycles'
> # Event count (approx.): 5128976844
> #
> # Overhead  Command          Shared Object                Symbol               >
> # ........  ...............  ...........................  .....................>
> #
>      7.59%  sched-messaging  [kernel.kallsyms]            [k] memcpy
>      5.48%  sched-messaging  [kernel.kallsyms]            [k] percpu_counter_ad>
>      5.24%  sched-messaging  [kernel.kallsyms]            [k] __sbi_rfence_v02_>
>      4.00%  sched-messaging  [kernel.kallsyms]            [k] _raw_spin_unlock_>
>      3.79%  sched-messaging  [kernel.kallsyms]            [k] set_pte_range
>      3.72%  sched-messaging  [kernel.kallsyms]            [k] next_uptodate_fol>
>      3.46%  sched-messaging  [kernel.kallsyms]            [k] filemap_map_pages
>      3.31%  sched-messaging  [kernel.kallsyms]            [k] handle_mm_fault
>      3.20%  sched-messaging  [kernel.kallsyms]            [k] finish_task_switc>
>      3.16%  sched-messaging  [kernel.kallsyms]            [k] clear_page
>      3.03%  sched-messaging  [kernel.kallsyms]            [k] mtree_range_walk
>      2.42%  sched-messaging  [kernel.kallsyms]            [k] flush_icache_pte
> 
> ===================================================
> 
> [1] https://github.com/riscv-non-isa/riscv-sbi-doc
> 
> Atish Patra (9):
> RISC-V: Fix the typo in Scountovf CSR name
> drivers/perf: riscv: Add a flag to indicate SBI v2.0 support
> RISC-V: Add FIRMWARE_READ_HI definition
> drivers/perf: riscv: Read upper bits of a firmware counter
> RISC-V: Add SBI PMU snapshot definitions
> drivers/perf: riscv: Implement SBI PMU snapshot function
> RISC-V: KVM: Implement SBI PMU Snapshot feature
> RISC-V: KVM: Add perf sampling support for guests
> RISC-V: KVM: Support 64 bit firmware counters on RV32
> 
> arch/riscv/include/asm/csr.h          |   5 +-
> arch/riscv/include/asm/errata_list.h  |   2 +-
> arch/riscv/include/asm/kvm_vcpu_pmu.h |  16 +-
> arch/riscv/include/asm/sbi.h          |  11 ++
> arch/riscv/include/uapi/asm/kvm.h     |   1 +
> arch/riscv/kvm/main.c                 |   1 +
> arch/riscv/kvm/vcpu.c                 |   8 +-
> arch/riscv/kvm/vcpu_onereg.c          |   1 +
> arch/riscv/kvm/vcpu_pmu.c             | 232 ++++++++++++++++++++++++--
> arch/riscv/kvm/vcpu_sbi_pmu.c         |  10 ++
> drivers/perf/riscv_pmu.c              |   1 +
> drivers/perf/riscv_pmu_sbi.c          | 219 ++++++++++++++++++++++--
> include/linux/perf/riscv_pmu.h        |   6 +
> 13 files changed, 478 insertions(+), 35 deletions(-)
> 
> --
> 2.34.1
> 

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 161 bytes --]

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

  parent reply	other threads:[~2023-12-07 12:04 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-05  2:43 [RFC 0/9] RISC-V SBI v2.0 PMU improvements and Perf sampling in KVM guest Atish Patra
2023-12-05  2:43 ` [RFC 1/9] RISC-V: Fix the typo in Scountovf CSR name Atish Patra
2023-12-07 12:04   ` Conor Dooley
2023-12-14 12:13   ` Anup Patel
2023-12-05  2:43 ` [RFC 2/9] drivers/perf: riscv: Add a flag to indicate SBI v2.0 support Atish Patra
2023-12-07 12:07   ` Conor Dooley
2023-12-14 12:15     ` Anup Patel
2023-12-16 23:54       ` Atish Kumar Patra
2023-12-05  2:43 ` [RFC 3/9] RISC-V: Add FIRMWARE_READ_HI definition Atish Patra
2023-12-07 12:11   ` Conor Dooley
2023-12-14 12:16   ` Anup Patel
2023-12-05  2:43 ` [RFC 4/9] drivers/perf: riscv: Read upper bits of a firmware counter Atish Patra
2023-12-07 12:32   ` Conor Dooley
2023-12-14 12:30     ` Anup Patel
2023-12-16 23:54       ` Atish Kumar Patra
2023-12-05  2:43 ` [RFC 5/9] RISC-V: Add SBI PMU snapshot definitions Atish Patra
2023-12-07 12:33   ` Conor Dooley
2023-12-16 23:33     ` Atish Patra
2023-12-14 12:32   ` Anup Patel
2023-12-05  2:43 ` [RFC 6/9] drivers/perf: riscv: Implement SBI PMU snapshot function Atish Patra
2023-12-07 13:05   ` Conor Dooley
2023-12-17  1:39     ` Atish Kumar Patra
2023-12-17 12:10       ` Conor Dooley
2023-12-18  0:57         ` Atish Kumar Patra
2023-12-05  2:43 ` [RFC 7/9] RISC-V: KVM: Implement SBI PMU Snapshot feature Atish Patra
2023-12-14 13:46   ` Anup Patel
2023-12-17  9:36     ` Atish Kumar Patra
2023-12-05  2:43 ` [RFC 8/9] RISC-V: KVM: Add perf sampling support for guests Atish Patra
2023-12-06  6:43   ` Vladimir Isaev
2023-12-06  7:41     ` Atish Kumar Patra
2023-12-14 16:02   ` Anup Patel
2023-12-17  1:48     ` Atish Kumar Patra
2023-12-05  2:43 ` [RFC 9/9] RISC-V: KVM: Support 64 bit firmware counters on RV32 Atish Patra
2023-12-14 12:41   ` Anup Patel
2023-12-07 12:02 ` Conor Dooley [this message]
2023-12-07 22:28   ` [RFC 0/9] RISC-V SBI v2.0 PMU improvements and Perf sampling in KVM guest Atish Kumar Patra

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231207-affiliate-state-c4a20ea7e8de@wendy \
    --to=conor.dooley@microchip.com \
    --cc=ajones@ventanamicro.com \
    --cc=alexghiti@rivosinc.com \
    --cc=anup@brainfault.org \
    --cc=atishp@atishpatra.org \
    --cc=atishp@rivosinc.com \
    --cc=guoren@kernel.org \
    --cc=kvm-riscv@lists.infradead.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox