From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BF93432D42A; Wed, 14 Jan 2026 17:50:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768413030; cv=none; b=ewK3EHBtKBY8IgSBJ/xLfBzgq68VhQwA7HYORzZOlq39satbbNF7KbaDMqjBrZxvf45FbAI6czFds4RTn2MHybRVcfIptjBo2FgWwnTLQp9IFqaiEq5WD4nQ9hC0fiI2NbxXuCdEY4Hy2oWfTf+7ZzSxcCEjLbsDeZvbHrf1mEU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768413030; c=relaxed/simple; bh=F6cbQLf9UARh7CD8RoRzbiMKpPHFPVB2C0c+e23aWI4=; h=Date:Message-ID:From:To:Cc:Subject:In-Reply-To:References: MIME-Version:Content-Type; b=YQTJIzq7lC3wzRWNzztH9C+3EhimUx+ZP/xrTgHJoBqkoBPUVAJQNdyAVIT6W0pTXwRpAnPAYPkMsLf2O2RjWgrZje19YNJV3R9AA7qE2EX8H75e4GmYXiRFVcQ+UztqRI17K+MjSX9AjCyvHIp1bLZUgQcdpzVGY7UUGrOY0hY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AoFOzJDP; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="AoFOzJDP" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 634AAC4CEF7; Wed, 14 Jan 2026 17:50:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768413030; bh=F6cbQLf9UARh7CD8RoRzbiMKpPHFPVB2C0c+e23aWI4=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=AoFOzJDPAV+aUvTHu2W1JqLU2FVetimtn0KpFkscDiPAQyeYmjTPqLbuFeQxvAbTG c02gAa9SQhDKO6dZvMF07gxCfIX8sCJM/DqZ08HLr791QULxdWwaRLsmqfiK+2bsdU q4btGoUwuQ652ws305BUnp5P++cB1HCU6/1tWgDO/+I0JXjyZGd9B1EflgGY3Nx8y7 xBfPEXi7zjCwJxYyhL5e27L8laEPoxZm9gDAGyebUqXlXgM9s9+OZYkmIQjbgy2mLh NTvqDv9hjo8ysTI6F1yPEAkGNqK6zKAi7K2reLSNWeDclIbT7+hqtpiH4bqZImrleY Wex2pcc3BzGtw== Received: from sofa.misterjones.org ([185.219.108.64] helo=goblin-girl.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vg50l-00000002H1E-2GRL; Wed, 14 Jan 2026 17:50:27 +0000 Date: Wed, 14 Jan 2026 17:50:26 +0000 Message-ID: <86ms2gkrrx.wl-maz@kernel.org> From: Marc Zyngier To: Ben Horgan 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 Subject: Re: [PATCH v3 13/47] KVM: arm64: Use kernel-space partid configuration for hypercalls In-Reply-To: References: <20260112165914.4086692-1-ben.horgan@arm.com> <20260112165914.4086692-14-ben.horgan@arm.com> <86o6mwl7kl.wl-maz@kernel.org> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/30.1 (aarch64-unknown-linux-gnu) MULE/6.0 (HANACHIRUSATO) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: ben.horgan@arm.com, 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 X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false On Wed, 14 Jan 2026 16:50:50 +0000, Ben Horgan wrote: > > Hi Marc, > > On 1/14/26 14:39, Ben Horgan wrote: > > Hi Marc, > > > > On 1/14/26 12:09, Marc Zyngier wrote: > >> On Mon, 12 Jan 2026 16:58:40 +0000, > >> Ben Horgan 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. > >>> > >>> Signed-off-by: Ben Horgan > >>> --- > >>> Changes since v2: > >>> Use mask > >>> Use read_sysreg_el1 to cope with hvhe > >>> --- > >>> arch/arm64/kvm/hyp/nvhe/hyp-main.c | 8 ++++++++ > >>> 1 file changed, 8 insertions(+) > >>> > >>> diff --git a/arch/arm64/kvm/hyp/nvhe/hyp-main.c b/arch/arm64/kvm/hyp/nvhe/hyp-main.c > >>> index a7c689152f68..ad99d8a73a9e 100644 > >>> --- a/arch/arm64/kvm/hyp/nvhe/hyp-main.c > >>> +++ b/arch/arm64/kvm/hyp/nvhe/hyp-main.c > >>> @@ -635,6 +635,14 @@ 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; > >>> + > >>> + write_sysreg_s(read_sysreg_el1(SYS_MPAM1) & mask, SYS_MPAM2_EL2); > >>> + isb(); > >>> + } > >> > >> Is it really OK to not preserve the rest of MPAM2_EL2? This explicitly > >> clears MPAM2_EL2.MPAMEN, which feels counter-productive. > >> > >> M. > >> > > > > There are 3 things to consider: > > 1. traps - these are only relevant when we leave EL2 and are dealt with > > in __activate_traps_mpam(). (This also covers EnMPAMSM which is a > > not-trap bit.) > > 2. MPAM2_EL2.MPAMEN - this is read only as long as we have an EL3 and if > > we don't have EL3 will be 0 anyway from el2_setup.h and MPAM won't be > > considered supported in the kernel. > > 3. The alternate partid space fields which are kept as zero and relate > > to FEAT_RME. > > > > So, safe. Ok with you or would you rather I make it more obviously safe? > > As discussed offline, to avoid having to reason about MPAM2_EL2.MPAMEN > I'll set this bit to 1 in this write as we are already assuming mpam is > enabled and we want to keep it enabled. Sounds good, thanks. M. -- Without deviation from the norm, progress is not possible.