All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sergey Matyukevich <geomatsi@gmail.com>
To: kvm-riscv@lists.infradead.org
Subject: [RFC  4/9] RISC-V: KVM: Improve privilege mode filtering for perf
Date: Wed, 9 Nov 2022 16:42:27 +0300	[thread overview]
Message-ID: <Y2uuQ4wH4dU98K2b@curiosity> (raw)
In-Reply-To: <20220718170205.2972215-5-atishp@rivosinc.com>

Hi Atish,

> Currently, the host driver doesn't have any method to identify if the
> requested perf event is from kvm or bare metal. As KVM runs in HS
> mode, there are no separate hypervisor privilege mode to distinguish
> between the attributes for guest/host.
> 
> Improve the privilege mode filtering by using the event specific
> config1 field.

... [snip]

> +static unsigned long pmu_sbi_get_filter_flags(struct perf_event *event)
> +{
> +	unsigned long cflags = 0;
> +	bool guest_events = false;
> +
> +	if (event->attr.config1 & RISCV_KVM_PMU_CONFIG1_GUEST_EVENTS)
> +		guest_events = true;
> +	if (event->attr.exclude_kernel)
> +		cflags |= guest_events ? SBI_PMU_CFG_FLAG_SET_VSINH : SBI_PMU_CFG_FLAG_SET_SINH;

IIUC we should inhibit host counting if we want guest events:
		cflags |= guest_events ? SBI_PMU_CFG_FLAG_SET_SINH : SBI_PMU_CFG_FLAG_SET_VSINH;

> +	if (event->attr.exclude_user)
> +		cflags |= guest_events ? SBI_PMU_CFG_FLAG_SET_VUINH : SBI_PMU_CFG_FLAG_SET_UINH;

Same here.

> +	if (guest_events && event->attr.exclude_hv)
> +		cflags |= SBI_PMU_CFG_FLAG_SET_SINH;
> +	if (event->attr.exclude_host)
> +		cflags |= SBI_PMU_CFG_FLAG_SET_UINH | SBI_PMU_CFG_FLAG_SET_SINH;
> +	if (event->attr.exclude_guest)
> +		cflags |= SBI_PMU_CFG_FLAG_SET_VSINH | SBI_PMU_CFG_FLAG_SET_VUINH;
> +
> +	return cflags;
> +}

Regards,
Sergey


WARNING: multiple messages have this Message-ID (diff)
From: Sergey Matyukevich <geomatsi@gmail.com>
To: Atish Patra <atishp@rivosinc.com>
Cc: linux-kernel@vger.kernel.org, Albert Ou <aou@eecs.berkeley.edu>,
	Anup Patel <anup@brainfault.org>,
	Atish Patra <atishp@atishpatra.org>, Guo Ren <guoren@kernel.org>,
	kvm-riscv@lists.infradead.org, kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org,
	Mark Rutland <mark.rutland@arm.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Paul Walmsley <paul.walmsley@sifive.com>,
	Will Deacon <will@kernel.org>
Subject: Re: [RFC  4/9] RISC-V: KVM: Improve privilege mode filtering for perf
Date: Wed, 9 Nov 2022 16:42:27 +0300	[thread overview]
Message-ID: <Y2uuQ4wH4dU98K2b@curiosity> (raw)
In-Reply-To: <20220718170205.2972215-5-atishp@rivosinc.com>

Hi Atish,

> Currently, the host driver doesn't have any method to identify if the
> requested perf event is from kvm or bare metal. As KVM runs in HS
> mode, there are no separate hypervisor privilege mode to distinguish
> between the attributes for guest/host.
> 
> Improve the privilege mode filtering by using the event specific
> config1 field.

... [snip]

> +static unsigned long pmu_sbi_get_filter_flags(struct perf_event *event)
> +{
> +	unsigned long cflags = 0;
> +	bool guest_events = false;
> +
> +	if (event->attr.config1 & RISCV_KVM_PMU_CONFIG1_GUEST_EVENTS)
> +		guest_events = true;
> +	if (event->attr.exclude_kernel)
> +		cflags |= guest_events ? SBI_PMU_CFG_FLAG_SET_VSINH : SBI_PMU_CFG_FLAG_SET_SINH;

IIUC we should inhibit host counting if we want guest events:
		cflags |= guest_events ? SBI_PMU_CFG_FLAG_SET_SINH : SBI_PMU_CFG_FLAG_SET_VSINH;

> +	if (event->attr.exclude_user)
> +		cflags |= guest_events ? SBI_PMU_CFG_FLAG_SET_VUINH : SBI_PMU_CFG_FLAG_SET_UINH;

Same here.

> +	if (guest_events && event->attr.exclude_hv)
> +		cflags |= SBI_PMU_CFG_FLAG_SET_SINH;
> +	if (event->attr.exclude_host)
> +		cflags |= SBI_PMU_CFG_FLAG_SET_UINH | SBI_PMU_CFG_FLAG_SET_SINH;
> +	if (event->attr.exclude_guest)
> +		cflags |= SBI_PMU_CFG_FLAG_SET_VSINH | SBI_PMU_CFG_FLAG_SET_VUINH;
> +
> +	return cflags;
> +}

Regards,
Sergey

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

WARNING: multiple messages have this Message-ID (diff)
From: Sergey Matyukevich <geomatsi@gmail.com>
To: Atish Patra <atishp@rivosinc.com>
Cc: linux-kernel@vger.kernel.org, Albert Ou <aou@eecs.berkeley.edu>,
	Anup Patel <anup@brainfault.org>,
	Atish Patra <atishp@atishpatra.org>, Guo Ren <guoren@kernel.org>,
	kvm-riscv@lists.infradead.org, kvm@vger.kernel.org,
	linux-riscv@lists.infradead.org,
	Mark Rutland <mark.rutland@arm.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Paul Walmsley <paul.walmsley@sifive.com>,
	Will Deacon <will@kernel.org>
Subject: Re: [RFC  4/9] RISC-V: KVM: Improve privilege mode filtering for perf
Date: Wed, 9 Nov 2022 16:42:27 +0300	[thread overview]
Message-ID: <Y2uuQ4wH4dU98K2b@curiosity> (raw)
In-Reply-To: <20220718170205.2972215-5-atishp@rivosinc.com>

Hi Atish,

> Currently, the host driver doesn't have any method to identify if the
> requested perf event is from kvm or bare metal. As KVM runs in HS
> mode, there are no separate hypervisor privilege mode to distinguish
> between the attributes for guest/host.
> 
> Improve the privilege mode filtering by using the event specific
> config1 field.

... [snip]

> +static unsigned long pmu_sbi_get_filter_flags(struct perf_event *event)
> +{
> +	unsigned long cflags = 0;
> +	bool guest_events = false;
> +
> +	if (event->attr.config1 & RISCV_KVM_PMU_CONFIG1_GUEST_EVENTS)
> +		guest_events = true;
> +	if (event->attr.exclude_kernel)
> +		cflags |= guest_events ? SBI_PMU_CFG_FLAG_SET_VSINH : SBI_PMU_CFG_FLAG_SET_SINH;

IIUC we should inhibit host counting if we want guest events:
		cflags |= guest_events ? SBI_PMU_CFG_FLAG_SET_SINH : SBI_PMU_CFG_FLAG_SET_VSINH;

> +	if (event->attr.exclude_user)
> +		cflags |= guest_events ? SBI_PMU_CFG_FLAG_SET_VUINH : SBI_PMU_CFG_FLAG_SET_UINH;

Same here.

> +	if (guest_events && event->attr.exclude_hv)
> +		cflags |= SBI_PMU_CFG_FLAG_SET_SINH;
> +	if (event->attr.exclude_host)
> +		cflags |= SBI_PMU_CFG_FLAG_SET_UINH | SBI_PMU_CFG_FLAG_SET_SINH;
> +	if (event->attr.exclude_guest)
> +		cflags |= SBI_PMU_CFG_FLAG_SET_VSINH | SBI_PMU_CFG_FLAG_SET_VUINH;
> +
> +	return cflags;
> +}

Regards,
Sergey

  parent reply	other threads:[~2022-11-09 13:42 UTC|newest]

Thread overview: 138+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-18 17:01 [RFC 0/9] KVM perf support Atish Patra
2022-07-18 17:01 ` Atish Patra
2022-07-18 17:01 ` Atish Patra
2022-07-18 17:01 ` [RFC 1/9] RISC-V: Define a helper function to probe number of hardware counters Atish Patra
2022-07-18 17:01   ` Atish Patra
2022-07-18 17:01   ` Atish Patra
2022-11-01 12:30   ` Andrew Jones
2022-11-01 12:30     ` Andrew Jones
2022-11-01 12:30     ` Andrew Jones
2022-11-21 23:50     ` Atish Patra
2022-11-21 23:50       ` Atish Patra
2022-11-21 23:50       ` Atish Patra
2022-07-18 17:01 ` [RFC 2/9] RISC-V: Define a helper function to return counter width Atish Patra
2022-07-18 17:01   ` Atish Patra
2022-07-18 17:01   ` Atish Patra
2022-07-18 17:01 ` [RFC 3/9] RISC-V: KVM: Define a probe function for SBI extension data structures Atish Patra
2022-07-18 17:01   ` Atish Patra
2022-07-18 17:01   ` Atish Patra
2022-11-01 15:32   ` Andrew Jones
2022-11-01 15:32     ` Andrew Jones
2022-11-01 15:32     ` Andrew Jones
2022-07-18 17:02 ` [RFC 4/9] RISC-V: KVM: Improve privilege mode filtering for perf Atish Patra
2022-07-18 17:02   ` Atish Patra
2022-07-18 17:02   ` Atish Patra
2022-11-01 12:51   ` Andrew Jones
2022-11-01 12:51     ` Andrew Jones
2022-11-01 12:51     ` Andrew Jones
2022-11-09 13:42   ` Sergey Matyukevich [this message]
2022-11-09 13:42     ` Sergey Matyukevich
2022-11-09 13:42     ` Sergey Matyukevich
2022-11-22  0:21     ` Atish Patra
2022-11-22  0:21       ` Atish Patra
2022-11-22  0:21       ` Atish Patra
2022-07-18 17:02 ` [RFC 5/9] RISC-V: KVM: Add skeleton support " Atish Patra
2022-07-18 17:02   ` Atish Patra
2022-07-18 17:02   ` Atish Patra
2022-11-01 14:13   ` Andrew Jones
2022-11-01 14:13     ` Andrew Jones
2022-11-01 14:13     ` Andrew Jones
2022-11-23  0:46     ` Atish Patra
2022-11-23  0:46       ` Atish Patra
2022-11-23  0:46       ` Atish Patra
2022-11-23  1:34       ` Atish Patra
2022-11-23  1:34         ` Atish Patra
2022-11-23  1:34         ` Atish Patra
2022-11-23 13:36         ` Andrew Jones
2022-11-23 13:36           ` Andrew Jones
2022-11-23 13:36           ` Andrew Jones
2022-11-24  9:04           ` Atish Patra
2022-11-24  9:04             ` Atish Patra
2022-11-24  9:04             ` Atish Patra
2022-11-24 10:55             ` Andrew Jones
2022-11-24 10:55               ` Andrew Jones
2022-11-24 10:55               ` Andrew Jones
2022-11-23 13:11       ` Andrew Jones
2022-11-23 13:11         ` Andrew Jones
2022-11-23 13:11         ` Andrew Jones
2022-11-24  9:09         ` Atish Patra
2022-11-24  9:09           ` Atish Patra
2022-11-24  9:09           ` Atish Patra
2022-11-24 11:14           ` Andrew Jones
2022-11-24 11:14             ` Andrew Jones
2022-11-24 11:14             ` Andrew Jones
2022-07-18 17:02 ` [RFC 6/9] RISC-V: KVM: Add SBI PMU extension support Atish Patra
2022-07-18 17:02   ` Atish Patra
2022-07-18 17:02   ` Atish Patra
2022-11-01 14:26   ` Andrew Jones
2022-11-01 14:26     ` Andrew Jones
2022-11-01 14:26     ` Andrew Jones
2022-11-22 23:08     ` Atish Patra
2022-11-22 23:08       ` Atish Patra
2022-11-22 23:08       ` Atish Patra
2022-11-23 13:58       ` Andrew Jones
2022-11-23 13:58         ` Andrew Jones
2022-11-23 13:58         ` Andrew Jones
2022-11-24 10:18         ` Atish Patra
2022-11-24 10:18           ` Atish Patra
2022-11-24 10:18           ` Atish Patra
2022-11-24 10:50           ` Andrew Jones
2022-11-24 10:50             ` Andrew Jones
2022-11-24 10:50             ` Andrew Jones
2022-11-24 12:59             ` Anup Patel
2022-11-24 12:59               ` Anup Patel
2022-11-24 12:59               ` Anup Patel
2022-11-28 21:00               ` Atish Patra
2022-11-28 21:00                 ` Atish Patra
2022-11-28 21:00                 ` Atish Patra
2022-07-18 17:02 ` [RFC 7/9] RISC-V: KVM: Implement trap & emulate for hpmcounters Atish Patra
2022-07-18 17:02   ` Atish Patra
2022-07-18 17:02   ` Atish Patra
2022-11-01 14:35   ` Andrew Jones
2022-11-01 14:35     ` Andrew Jones
2022-11-01 14:35     ` Andrew Jones
2022-11-22 23:11     ` Atish Patra
2022-11-22 23:11       ` Atish Patra
2022-11-22 23:11       ` Atish Patra
2022-07-18 17:02 ` [RFC 8/9] RISC-V: KVM: Implement perf support Atish Patra
2022-07-18 17:02   ` Atish Patra
2022-07-18 17:02   ` Atish Patra
2022-09-20  2:24   ` Eric Lin
2022-09-20  2:24     ` Eric Lin
2022-09-20  2:24     ` Eric Lin
2022-09-23 21:04     ` Atish Patra
2022-09-23 21:04       ` Atish Patra
2022-09-23 21:04       ` Atish Patra
2022-11-01 15:31   ` Andrew Jones
2022-11-01 15:31     ` Andrew Jones
2022-11-01 15:31     ` Andrew Jones
2022-11-23  0:45     ` Atish Patra
2022-11-23  0:45       ` Atish Patra
2022-11-23  0:45       ` Atish Patra
2022-11-23 14:22       ` Andrew Jones
2022-11-23 14:22         ` Andrew Jones
2022-11-23 14:22         ` Andrew Jones
2022-12-02  9:08         ` Atish Patra
2022-12-02  9:08           ` Atish Patra
2022-12-02  9:08           ` Atish Patra
2022-12-02 11:37           ` Andrew Jones
2022-12-02 11:37             ` Andrew Jones
2022-12-02 11:37             ` Andrew Jones
2022-12-07  8:49             ` Atish Patra
2022-12-07  8:49               ` Atish Patra
2022-12-07  8:49               ` Atish Patra
2022-12-02 17:09   ` Sean Christopherson
2022-12-02 17:09     ` Sean Christopherson
2022-12-02 17:09     ` Sean Christopherson
2022-12-07  8:06     ` Atish Patra
2022-12-07  8:06       ` Atish Patra
2022-12-07  8:06       ` Atish Patra
2022-12-07 16:31       ` Sean Christopherson
2022-12-07 16:31         ` Sean Christopherson
2022-12-07 16:31         ` Sean Christopherson
2022-12-08  1:11         ` Atish Patra
2022-12-08  1:11           ` Atish Patra
2022-12-08  1:11           ` Atish Patra
2022-07-18 17:02 ` [RFC 9/9] RISC-V: KVM: Implement firmware events Atish Patra
2022-07-18 17:02   ` Atish Patra
2022-07-18 17:02   ` Atish 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=Y2uuQ4wH4dU98K2b@curiosity \
    --to=geomatsi@gmail.com \
    --cc=kvm-riscv@lists.infradead.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.