public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
From: Ben Horgan <ben.horgan@arm.com>
To: Marc Zyngier <maz@kernel.org>
Cc: amitsinght@marvell.com, baisheng.gao@unisoc.com,
	baolin.wang@linux.alibaba.com, carl@os.amperecomputing.com,
	dave.martin@arm.com, david@kernel.org, dfustini@baylibre.com,
	fenghuay@nvidia.com, gshan@redhat.com, james.morse@arm.com,
	jonathan.cameron@huawei.com, kobak@nvidia.com,
	lcherian@marvell.com, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, peternewman@google.com,
	punit.agrawal@oss.qualcomm.com, quic_jiles@quicinc.com,
	reinette.chatre@intel.com, rohit.mathew@arm.com,
	scott@os.amperecomputing.com, sdonthineni@nvidia.com,
	tan.shaopeng@fujitsu.com, xhao@linux.alibaba.com,
	catalin.marinas@arm.com, will@kernel.org, corbet@lwn.net,
	oupton@kernel.org, joey.gouly@arm.com, suzuki.poulose@arm.com,
	kvmarm@lists.linux.dev, zengheng4@huawei.com,
	linux-doc@vger.kernel.org,
	Shaopeng Tan <tan.shaopeng@jp.fujitsu.com>
Subject: Re: [PATCH v5 12/41] KVM: arm64: Use kernel-space partid configuration for hypercalls
Date: Tue, 3 Mar 2026 16:33:23 +0000	[thread overview]
Message-ID: <fd0cf579-77c4-4a76-bc8e-b19bb7988155@arm.com> (raw)
In-Reply-To: <86jyvu85dj.wl-maz@kernel.org>

Hi Marc,

On 3/2/26 18:15, Marc Zyngier wrote:
> On Tue, 24 Feb 2026 17:56:51 +0000,
> Ben Horgan <ben.horgan@arm.com> wrote:
>>
>> On nVHE systems whether or not MPAM is enabled, EL2 continues to use
>> partid-0 for hypercalls, even when the host may have configured its kernel
>> threads to use a different partid. 0 may have been assigned to another
>> task. Copy the EL1 MPAM register to EL2. This ensures hypercalls use the
>> same partid as the kernel thread does on the host.
>>
>> Tested-by: Gavin Shan <gshan@redhat.com>
>> Tested-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.com>
>> Tested-by: Peter Newman <peternewman@google.com>
>> Tested-by: Zeng Heng <zengheng4@huawei.com>
>> Reviewed-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.com>
>> Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
>> Signed-off-by: Ben Horgan <ben.horgan@arm.com>
>> ---
>> Changes since v2:
>> Use mask
>> Use read_sysreg_el1 to cope with hvhe
>>
>> Changes since v3:
>> Set MPAM2_EL2.MPAMEN to 1 as we rely on that before and after
>> ---
>>  arch/arm64/kvm/hyp/nvhe/hyp-main.c | 9 +++++++++
>>  1 file changed, 9 insertions(+)
>>
>> diff --git a/arch/arm64/kvm/hyp/nvhe/hyp-main.c b/arch/arm64/kvm/hyp/nvhe/hyp-main.c
>> index e7790097db93..80e71eeddc03 100644
>> --- a/arch/arm64/kvm/hyp/nvhe/hyp-main.c
>> +++ b/arch/arm64/kvm/hyp/nvhe/hyp-main.c
>> @@ -638,6 +638,15 @@ static void handle_host_hcall(struct kvm_cpu_context *host_ctxt)
>>  	unsigned long hcall_min = 0;
>>  	hcall_t hfn;
>>  
>> +	if (system_supports_mpam()) {
>> +		u64 mask = MPAM1_EL1_PARTID_D | MPAM1_EL1_PARTID_I |
>> +			MPAM1_EL1_PMG_D | MPAM1_EL1_PMG_I;
>> +		u64 val = MPAM2_EL2_MPAMEN | (read_sysreg_el1(SYS_MPAM1) & mask);
>> +
>> +		write_sysreg_s(val, SYS_MPAM2_EL2);
>> +		isb();
>> +	}
>> +
>>  	/*
>>  	 * If pKVM has been initialised then reject any calls to the
>>  	 * early "privileged" hypercalls. Note that we cannot reject
> 
> It is extremely debatable whether this is desirable:
> 
> - pKVM really shouldn't be influenced by what the host does, which
>   means reserving PARTIDs and indirecting what the host sees. This can
>   be deferred until pKVM is actually useful upstream.
> 
> - repeatedly hammering that register plus an ISB on the hot path of a
>   hypercall is a sure way to make things worse than they should be,
>   and that should be fixed now.

Would a read modify write be preferable?

> 
> Do you really expect the EL1 settings to change on a regular basis? If

The MPAM EL1 partid/pmg configuration is kept in sync with the MPAM EL0
partid/pmg configuration (see mpam_thread_switch() in patch 4) which
means that the EL1 configuration will change whenever the user changes
the EL0 configuration.

> so, I'd rather you use a specific host hypercall, or even a trap to
> propagate the EL1 configuration. If not, just set it as part of the

I think this ends up trapping context switch which doesn't seem any more
desirable.

> KVM init and be done with it.

If we just forego this patch then the MPAM configuration for el2 as
initially configured, partid=0, pmg=0 would be used. This is also the
default for requestors that aren't MPAM aware or unconfigured, like
trusted firmware, its, gpu. VHE mode (required from 8.1?) should be
available in any platform that has MPAM (introduced in 8.4, back
portable to 8.3) and so using nvhe with MPAM seems unlikely and the
amount of data should be small enough. That leaves pKVM for which,
perhaps, doing nothing is also the correct answer.

What do you think? Drop, read modify write, or something else?

> 
> Thanks,
> 
> 	M.
> 

Thanks,

Ben



  reply	other threads:[~2026-03-03 16:33 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-24 17:56 [PATCH v5 00/41] arm_mpam: Add KVM/arm64 and resctrl glue code Ben Horgan
2026-02-24 17:56 ` [PATCH v5 01/41] arm64/sysreg: Add MPAMSM_EL1 register Ben Horgan
2026-02-24 17:56 ` [PATCH v5 02/41] KVM: arm64: Preserve host MPAM configuration when changing traps Ben Horgan
2026-03-02 17:52   ` Marc Zyngier
2026-02-24 17:56 ` [PATCH v5 03/41] KVM: arm64: Make MPAMSM_EL1 accesses UNDEF Ben Horgan
2026-03-02 17:54   ` Marc Zyngier
2026-02-24 17:56 ` [PATCH v5 04/41] arm64: mpam: Context switch the MPAM registers Ben Horgan
2026-02-24 17:56 ` [PATCH v5 05/41] arm64: mpam: Re-initialise MPAM regs when CPU comes online Ben Horgan
2026-02-24 17:56 ` [PATCH v5 06/41] arm64: mpam: Drop the CONFIG_EXPERT restriction Ben Horgan
2026-03-09  6:42   ` Gavin Shan
2026-02-24 17:56 ` [PATCH v5 07/41] arm64: mpam: Advertise the CPUs MPAM limits to the driver Ben Horgan
2026-03-09  6:43   ` Gavin Shan
2026-02-24 17:56 ` [PATCH v5 08/41] arm64: mpam: Add cpu_pm notifier to restore MPAM sysregs Ben Horgan
2026-02-24 17:56 ` [PATCH v5 09/41] arm64: mpam: Initialise and context switch the MPAMSM_EL1 register Ben Horgan
2026-02-24 17:56 ` [PATCH v5 10/41] arm64: mpam: Add helpers to change a task or cpu's MPAM PARTID/PMG values Ben Horgan
2026-03-09  6:44   ` Gavin Shan
2026-02-24 17:56 ` [PATCH v5 11/41] KVM: arm64: Force guest EL1 to use user-space's partid configuration Ben Horgan
2026-03-02 17:58   ` Marc Zyngier
2026-03-09  6:45   ` Gavin Shan
2026-02-24 17:56 ` [PATCH v5 12/41] KVM: arm64: Use kernel-space partid configuration for hypercalls Ben Horgan
2026-03-02 18:15   ` Marc Zyngier
2026-03-03 16:33     ` Ben Horgan [this message]
2026-03-13  9:43       ` Ben Horgan
2026-02-24 17:56 ` [PATCH v5 13/41] arm_mpam: resctrl: Add boilerplate cpuhp and domain allocation Ben Horgan
2026-03-10  6:17   ` Gavin Shan
2026-03-10 10:34     ` Ben Horgan
2026-02-24 17:56 ` [PATCH v5 14/41] arm_mpam: resctrl: Pick the caches we will use as resctrl resources Ben Horgan
2026-02-24 17:56 ` [PATCH v5 15/41] arm_mpam: resctrl: Implement resctrl_arch_reset_all_ctrls() Ben Horgan
2026-02-25 11:03   ` Jonathan Cameron
2026-02-24 17:56 ` [PATCH v5 16/41] arm_mpam: resctrl: Add resctrl_arch_get_config() Ben Horgan
2026-02-24 17:56 ` [PATCH v5 17/41] arm_mpam: resctrl: Implement helpers to update configuration Ben Horgan
2026-02-24 17:56 ` [PATCH v5 18/41] arm_mpam: resctrl: Add plumbing against arm64 task and cpu hooks Ben Horgan
2026-02-24 17:56 ` [PATCH v5 19/41] arm_mpam: resctrl: Add CDP emulation Ben Horgan
2026-02-25  6:25   ` Zeng Heng
2026-02-24 17:56 ` [PATCH v5 20/41] arm_mpam: resctrl: Convert to/from MPAMs fixed-point formats Ben Horgan
2026-02-24 17:57 ` [PATCH v5 21/41] arm_mpam: resctrl: Add kunit test for control format conversions Ben Horgan
2026-02-24 17:57 ` [PATCH v5 22/41] arm_mpam: resctrl: Add rmid index helpers Ben Horgan
2026-02-24 17:57 ` [PATCH v5 23/41] arm_mpam: resctrl: Add kunit test for rmid idx conversions Ben Horgan
2026-02-24 17:57 ` [PATCH v5 24/41] arm_mpam: resctrl: Wait for cacheinfo to be ready Ben Horgan
2026-02-24 17:57 ` [PATCH v5 25/41] arm_mpam: resctrl: Add support for 'MB' resource Ben Horgan
2026-02-24 17:57 ` [PATCH v5 26/41] arm_mpam: resctrl: Add monitor initialisation and domain boilerplate Ben Horgan
2026-02-25 11:14   ` Jonathan Cameron
     [not found]   ` <d233d198-9c68-b32e-4a0f-73a9314bdedd@huawei.com>
2026-02-26 10:26     ` Ben Horgan
2026-02-27  3:01       ` Zeng Heng
2026-02-24 17:57 ` [PATCH v5 27/41] arm_mpam: resctrl: Add support for csu counters Ben Horgan
2026-02-24 17:57 ` [PATCH v5 28/41] arm_mpam: resctrl: Pick classes for use as mbm counters Ben Horgan
2026-02-24 17:57 ` [PATCH v5 29/41] arm_mpam: resctrl: Pre-allocate free running monitors Ben Horgan
2026-02-24 17:57 ` [PATCH v5 30/41] arm_mpam: resctrl: Allow resctrl to allocate monitors Ben Horgan
2026-02-24 17:57 ` [PATCH v5 31/41] arm_mpam: resctrl: Add resctrl_arch_rmid_read() and resctrl_arch_reset_rmid() Ben Horgan
2026-03-07  9:29   ` Zeng Heng
2026-03-09 16:30     ` Ben Horgan
2026-03-10  3:23       ` Zeng Heng
2026-02-24 17:57 ` [PATCH v5 32/41] arm_mpam: resctrl: Update the rmid reallocation limit Ben Horgan
2026-02-24 17:57 ` [PATCH v5 33/41] arm_mpam: resctrl: Add empty definitions for assorted resctrl functions Ben Horgan
2026-02-24 17:57 ` [PATCH v5 34/41] arm64: mpam: Select ARCH_HAS_CPU_RESCTRL Ben Horgan
2026-02-24 17:57 ` [PATCH v5 35/41] arm_mpam: resctrl: Call resctrl_init() on platforms that can support resctrl Ben Horgan
2026-02-24 17:57 ` [PATCH v5 36/41] arm_mpam: Add quirk framework Ben Horgan
2026-02-24 17:57 ` [PATCH v5 37/41] arm_mpam: Add workaround for T241-MPAM-1 Ben Horgan
2026-02-24 17:57 ` [PATCH v5 38/41] arm_mpam: Add workaround for T241-MPAM-4 Ben Horgan
2026-03-01 17:28   ` Fenghua Yu
2026-03-02 17:11     ` Ben Horgan
2026-03-09 17:39       ` Fenghua Yu
2026-03-10 11:26         ` Ben Horgan
2026-02-24 17:57 ` [PATCH v5 39/41] arm_mpam: Add workaround for T241-MPAM-6 Ben Horgan
2026-02-24 17:57 ` [PATCH v5 40/41] arm_mpam: Quirk CMN-650's CSU NRDY behaviour Ben Horgan
2026-02-24 17:57 ` [PATCH v5 41/41] arm64: mpam: Add initial MPAM documentation Ben Horgan
2026-02-25 11:01   ` Jonathan Cameron
2026-02-25 21:10 ` [PATCH v5 00/41] arm_mpam: Add KVM/arm64 and resctrl glue code Ben Horgan
2026-02-27 17:04   ` Catalin Marinas
2026-02-26  7:34 ` Zeng Heng
2026-03-03 20:18 ` Punit Agrawal
2026-03-04  9:42   ` Ben Horgan

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=fd0cf579-77c4-4a76-bc8e-b19bb7988155@arm.com \
    --to=ben.horgan@arm.com \
    --cc=amitsinght@marvell.com \
    --cc=baisheng.gao@unisoc.com \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=carl@os.amperecomputing.com \
    --cc=catalin.marinas@arm.com \
    --cc=corbet@lwn.net \
    --cc=dave.martin@arm.com \
    --cc=david@kernel.org \
    --cc=dfustini@baylibre.com \
    --cc=fenghuay@nvidia.com \
    --cc=gshan@redhat.com \
    --cc=james.morse@arm.com \
    --cc=joey.gouly@arm.com \
    --cc=jonathan.cameron@huawei.com \
    --cc=kobak@nvidia.com \
    --cc=kvmarm@lists.linux.dev \
    --cc=lcherian@marvell.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maz@kernel.org \
    --cc=oupton@kernel.org \
    --cc=peternewman@google.com \
    --cc=punit.agrawal@oss.qualcomm.com \
    --cc=quic_jiles@quicinc.com \
    --cc=reinette.chatre@intel.com \
    --cc=rohit.mathew@arm.com \
    --cc=scott@os.amperecomputing.com \
    --cc=sdonthineni@nvidia.com \
    --cc=suzuki.poulose@arm.com \
    --cc=tan.shaopeng@fujitsu.com \
    --cc=tan.shaopeng@jp.fujitsu.com \
    --cc=will@kernel.org \
    --cc=xhao@linux.alibaba.com \
    --cc=zengheng4@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox