All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Zyngier <maz@kernel.org>
To: James Clark <james.clark@linaro.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Jonathan Corbet <corbet@lwn.net>,
	Oliver Upton <oliver.upton@linux.dev>,
	Joey Gouly <joey.gouly@arm.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Zenghui Yu <yuzenghui@huawei.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@kernel.org>, Ian Rogers <irogers@google.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
	linux-doc@vger.kernel.org, kvmarm@lists.linux.dev
Subject: Re: [PATCH v2 06/11] KVM: arm64: Add trap configs for PMSDSFR_EL1
Date: Wed, 04 Jun 2025 16:31:08 +0100	[thread overview]
Message-ID: <87a56ned6r.wl-maz@kernel.org> (raw)
In-Reply-To: <2fb1965b-bef9-4a8e-a1c7-c8a77d957b23@linaro.org>

On Tue, 03 Jun 2025 10:50:23 +0100,
James Clark <james.clark@linaro.org> wrote:
> 
> 
> 
> On 29/05/2025 5:56 pm, Marc Zyngier wrote:
> > On Thu, 29 May 2025 12:30:27 +0100,
> > James Clark <james.clark@linaro.org> wrote:
> >> 
> >> SPE data source filtering (SPE_FEAT_FDS) adds a new register
> >> PMSDSFR_EL1, add the trap configs for it.
> >> 
> >> Signed-off-by: James Clark <james.clark@linaro.org>
> >> ---
> >>   arch/arm64/kvm/emulate-nested.c | 1 +
> >>   arch/arm64/kvm/sys_regs.c       | 1 +
> >>   2 files changed, 2 insertions(+)
> >> 
> >> diff --git a/arch/arm64/kvm/emulate-nested.c b/arch/arm64/kvm/emulate-nested.c
> >> index 0fcfcc0478f9..05d3e6b93ae9 100644
> >> --- a/arch/arm64/kvm/emulate-nested.c
> >> +++ b/arch/arm64/kvm/emulate-nested.c
> >> @@ -1169,6 +1169,7 @@ static const struct encoding_to_trap_config encoding_to_cgt[] __initconst = {
> >>   	SR_TRAP(SYS_PMSIRR_EL1,		CGT_MDCR_TPMS),
> >>   	SR_TRAP(SYS_PMSLATFR_EL1,	CGT_MDCR_TPMS),
> >>   	SR_TRAP(SYS_PMSNEVFR_EL1,	CGT_MDCR_TPMS),
> >> +	SR_TRAP(SYS_PMSDSFR_EL1,	CGT_MDCR_TPMS),
> >>   	SR_TRAP(SYS_TRFCR_EL1,		CGT_MDCR_TTRF),
> >>   	SR_TRAP(SYS_TRBBASER_EL1,	CGT_MDCR_E2TB),
> >>   	SR_TRAP(SYS_TRBLIMITR_EL1,	CGT_MDCR_E2TB),
> >> diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
> >> index 5dde9285afc8..9f544ac7b5a6 100644
> >> --- a/arch/arm64/kvm/sys_regs.c
> >> +++ b/arch/arm64/kvm/sys_regs.c
> >> @@ -2956,6 +2956,7 @@ static const struct sys_reg_desc sys_reg_descs[] = {
> >>   	{ SYS_DESC(SYS_PMBLIMITR_EL1), undef_access },
> >>   	{ SYS_DESC(SYS_PMBPTR_EL1), undef_access },
> >>   	{ SYS_DESC(SYS_PMBSR_EL1), undef_access },
> >> +	{ SYS_DESC(SYS_PMSDSFR_EL1), undef_access },
> > 
> > PMSDSFR_EL1 has an offset in the VNCR page (0x858), and must be
> > described as such. This is equally true for a bunch of other
> > SPE-related registers, so you might as well fix those while you're at
> > it.
> > 
> > Thanks,
> > 
> > 	M.
> > 
> 
> I got a bit stuck with what that would look like with registers that
> are only undef in case there was something that I missed, but do I
> just document the offsets?
> 
> +++ b/arch/arm64/include/asm/vncr_mapping.h
> @@ -87,6 +87,8 @@
>  #define VNCR_PMSICR_EL1         0x838
>  #define VNCR_PMSIRR_EL1         0x840
>  #define VNCR_PMSLATFR_EL1       0x848
> +#define VNCR_PMSNEVFR_EL1       0x850
> +#define VNCR_PMSDSFR_EL1        0x858
>

This should be enough.

> +++ b/arch/arm64/include/asm/kvm_host.h
> @@ -596,6 +596,16 @@ enum vcpu_sysreg {
>         VNCR(ICH_HCR_EL2),
>         VNCR(ICH_VMCR_EL2),
> 
> +       /* SPE Registers */
> +       VNCR(PMBLIMITR_EL1),
> +       VNCR(PMBPTR_EL1),
> +       VNCR(PMBSR_EL1),
> +       VNCR(PMSCR_EL1),
> +       VNCR(PMSEVFR_EL1),
> +       VNCR(PMSICR_EL1),
> +       VNCR(PMSIRR_EL1),
> +       VNCR(PMSLATFR_EL1),

I don't see a point in having those until we actually have SPE support
for guests, if ever, as these will potentially increase the size of
the vcpu sysreg array for no good reason.

> And then sys_reg_descs[] remain as "{ SYS_DESC(SYS_PMBLIMITR_EL1),
> undef_access }," rather than EL2_REG_VNCR() because we don't actually
> want to change to bad_vncr_trap()?

This seem OK for now. We may want to refine this in the future though,
as these registers cannot trap when NV is enabled. Yes, this is a bug
in the architecture.

> There are some other parts about fine grained traps and res0 bits for
> NV, but they all already look to be setup correctly. Except
> HDFGRTR2_EL2.nPMSDSFR_EL1, but it's inverted, none of the FGT2 traps
> are configured currently and PMSDSFR_EL1 is already trapped by
> MDCR_EL2 anyway.

Can you elaborate on that? We have:

	SR_FGT(SYS_PMSDSFR_EL1,		HDFGRTR2, nPMSDSFR_EL1, 0),

which seems to match the spec.

We also have full support for FEAT_FGT2 already (even if we have no
support for the stuff they trap).

Thanks,

	M.

-- 
Jazz isn't dead. It just smells funny.

  reply	other threads:[~2025-06-04 15:31 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-29 11:30 [PATCH v2 00/11] perf: arm_spe: Armv8.8 SPE features James Clark
2025-05-29 11:30 ` [PATCH v2 01/11] arm64: sysreg: Update PMSIDR_EL1 description James Clark
2025-05-29 11:30 ` [PATCH v2 02/11] arm64: sysreg: Add new PMSFCR_EL1 fields and PMSDSFR_EL1 register James Clark
2025-05-29 11:30 ` [PATCH v2 03/11] perf: arm_spe: Support FEAT_SPEv1p4 filters James Clark
2025-05-29 11:30 ` [PATCH v2 04/11] perf: arm_spe: Add support for FEAT_SPE_EFT extended filtering James Clark
2025-05-29 11:30 ` [PATCH v2 05/11] arm64/boot: Enable EL2 requirements for SPE_FEAT_FDS James Clark
2025-05-29 16:57   ` Marc Zyngier
2025-05-29 11:30 ` [PATCH v2 06/11] KVM: arm64: Add trap configs for PMSDSFR_EL1 James Clark
2025-05-29 16:56   ` Marc Zyngier
2025-06-03  9:50     ` James Clark
2025-06-04 15:31       ` Marc Zyngier [this message]
2025-06-05 10:33         ` James Clark
2025-05-29 11:30 ` [PATCH v2 07/11] perf: Add perf_event_attr::config4 James Clark
2025-05-29 11:30 ` [PATCH v2 08/11] perf: arm_spe: Add support for filtering on data source James Clark
2025-05-29 11:30 ` [PATCH v2 09/11] tools headers UAPI: Sync linux/perf_event.h with the kernel sources James Clark
2025-05-29 11:30 ` [PATCH v2 10/11] perf tools: Add support for perf_event_attr::config4 James Clark
2025-05-29 17:25   ` Ian Rogers
2025-05-29 11:30 ` [PATCH v2 11/11] perf docs: arm-spe: Document new SPE filtering features James Clark
2025-05-29 16:43   ` Leo Yan
2025-05-29 16:48 ` [PATCH v2 00/11] perf: arm_spe: Armv8.8 SPE features Leo Yan

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=87a56ned6r.wl-maz@kernel.org \
    --to=maz@kernel.org \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=catalin.marinas@arm.com \
    --cc=corbet@lwn.net \
    --cc=irogers@google.com \
    --cc=james.clark@linaro.org \
    --cc=joey.gouly@arm.com \
    --cc=jolsa@kernel.org \
    --cc=kvmarm@lists.linux.dev \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=oliver.upton@linux.dev \
    --cc=peterz@infradead.org \
    --cc=suzuki.poulose@arm.com \
    --cc=will@kernel.org \
    --cc=yuzenghui@huawei.com \
    /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.