From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 3D365275B15 for ; Mon, 19 Jan 2026 06:50:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768805434; cv=none; b=hkpOrD5rKnBAejOf2sZH8HlHVk7d9GSGw8JAvimjSC/Y2PPRY2vIcwP10XgBWjcO7e3E1RILfxZU5nwDWLJP8Ud9EMOA4eeoAq2XodqJi7lb4szK/68IKeyNn1SEB6ucQZQb6dpOKmdZ4goDz8igEaeC4wijZsKXJ5+oPPtPUg4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768805434; c=relaxed/simple; bh=Jh0m/yszHtEL5bTqPtdLSaj+gK2Hg5A3eZDsiwV4vW4=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=OkJvd0/WlCjojohPzbs0Q2LJLbT9Bn2ghad9f6iHC+ocoN2wNAtBt0BUyRnsfYFsPMTOgtlGHCndOw+5DExKoAwORlSTC1hZ7R6ZmxUhw9rvbvj49W8AdSThwvhfSaqhitpjyaREnSu3jLFv8f4zu/Yz8fSbuHoFNhoA93BVwnQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=V0tpcc2a; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=IbRq8hTw; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="V0tpcc2a"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="IbRq8hTw" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1768805432; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=uZXssrWO4VNoRsonbFVHKtNwsTR5/H1t40KyaHBjVhQ=; b=V0tpcc2alhvurgSf2oPyESnZzSQRYReC5Upf9zsSqYbUULAYGMjbla6uWShlCn8t5NT4Nj T4OCVbGP5KEb0lPKEBKSx3i1LChybpVNysQ0z7XMxhCTxhhcxe9AV1sDLupHhrcu/T2r/P iksdmJu9pIJUHMlzWOF7By3AGC22Hs8= Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-447-jcnlF_k2M0-WBucOaMaR-g-1; Mon, 19 Jan 2026 01:50:30 -0500 X-MC-Unique: jcnlF_k2M0-WBucOaMaR-g-1 X-Mimecast-MFC-AGG-ID: jcnlF_k2M0-WBucOaMaR-g_1768805430 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2a13cd9a784so31294965ad.2 for ; Sun, 18 Jan 2026 22:50:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1768805429; x=1769410229; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=uZXssrWO4VNoRsonbFVHKtNwsTR5/H1t40KyaHBjVhQ=; b=IbRq8hTwJw9MdnXfaRv+O+2zZObR0DqLTC7+PlijfJXcpMrcPvJctaceghq55e3sYJ cKo8pEA2JB8jxT7YYdj+qt/i15JdIp9Pqz/CS06fFsev8eS+DgkF+XL7E+a3wUgKtRND rRL1ecW81zCVU+UAIDhQTRzvbeeMv/w20dklQEIECCVPD4bsLbsfTgRoJguSgtGIBi46 QBxw1G12dESg4qWqYTtBJI9orZlxvZQHKYBcG0NVvxIguPOLk7uqaFt+na8Pwsh6CqSW 7hMKGKqoHg+nPddU47Kow1QRLFcVxMPYxl6EerNRrNklRaFWkLDXjO19AGQ9UXc1f8lq BRTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768805429; x=1769410229; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=uZXssrWO4VNoRsonbFVHKtNwsTR5/H1t40KyaHBjVhQ=; b=TZq4UHf9v8CCoyrHCWKgCYI4vr6ebFxrfvWLnP1hbt3h9yqvCTkPIJJEowWSMdTZa9 VQJikDnYL7qcbUW/NPQ4yrQDdlRR4nCxr9p4CObX7+q9s4cqP9oOjb2lVWpGMSHZCU8U 8IxDcfDvoastSUb/Y9BC4SAlCQaxDv4FCZmK1qztA40GFRy+0BHgGLRN25stoJrxNJk4 XZTHilR8yZDKTgLN4cwPKDua9qjEjxI03S9R1oPq9aYGguymv6UwTMcRCIbiXNssxS3B 2pPfb/jlG2EeHvDgR4K21M3I8fhZt3397G5ljEfYXMSuPIHqRXj/xYQ06SJfh9HsvJwM A2zQ== X-Forwarded-Encrypted: i=1; AJvYcCUHrgHJ8RcCIuUoIJDNeHMEai4nqx4NVgCHPNroHCY4JRwPP6mru3pLUs+DIKeOI2NwqMjiQMYtSotwEtY=@vger.kernel.org X-Gm-Message-State: AOJu0YzNCyvq6Jrs7iWiYt1z0ehXrG9PfI8byTbLz8YiZKuHZhJiaGfM 7ePsWdVSi+4Ed48pHez03KYWzIAVxKOzFyvOxJhRiKHKZkdPQwoaNjDztUPnwez4R9FzQ8Qujlw 7oaeFlKc3E6HOQtvDEvVFwPgv5b5EY42HuEENqZHRwQEsPeTuLQevCieqvPbVucAoFQ== X-Gm-Gg: AZuq6aJJq5XxxaoE6+y04YyNaXUf0vY0N6xioWAny7iKGDkEChJeeJeQQPx7JoW2v2o LHP6UND+8kPUIOAje5ziqJBRe0ziNGClTQNyjzB1NuYzXCxa87tOk79vNzDNMS3OcMmean3wqvW bhspJtpdLTQa8IBZya8+tou1XWBwRJ6D03xjWpcprQu2duJKMQBH294MUy850p0vUo7uOEgxDGZ Ipy/8nG+NzKJJvg8n64rSXUOGqzuEFy5gpvADpFKsoR+3TJKa8slwcBHMAEaQ0sqi3tG+qy0k1x Cr6QBm+P18qnktz4po8LacScXrwBbJx4tdD/BQNTPD2juDp88gKfgBWROBxPXh80lAuOozwKczB LhUQwrhwNPZs= X-Received: by 2002:a17:902:fc86:b0:295:9db1:ff3a with SMTP id d9443c01a7336-2a7188fc362mr96351385ad.28.1768805429487; Sun, 18 Jan 2026 22:50:29 -0800 (PST) X-Received: by 2002:a17:902:fc86:b0:295:9db1:ff3a with SMTP id d9443c01a7336-2a7188fc362mr96351035ad.28.1768805429090; Sun, 18 Jan 2026 22:50:29 -0800 (PST) Received: from [10.72.112.128] ([209.132.188.88]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7193dbed7sm85660715ad.63.2026.01.18.22.50.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 18 Jan 2026 22:50:28 -0800 (PST) Message-ID: <5c79d642-cd95-4c6b-9eeb-bd055719ca91@redhat.com> Date: Mon, 19 Jan 2026 14:50:16 +0800 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 09/47] arm64: mpam: Add cpu_pm notifier to restore MPAM sysregs 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, 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, maz@kernel.org, oupton@kernel.org, joey.gouly@arm.com, suzuki.poulose@arm.com, kvmarm@lists.linux.dev References: <20260112165914.4086692-1-ben.horgan@arm.com> <20260112165914.4086692-10-ben.horgan@arm.com> Content-Language: en-US From: Gavin Shan In-Reply-To: <20260112165914.4086692-10-ben.horgan@arm.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi Ben, On 1/13/26 12:58 AM, Ben Horgan wrote: > From: James Morse > > The MPAM system registers will be lost if the CPU is reset during PSCI's > CPU_SUSPEND. > > Add a PM notifier to restore them. > > mpam_thread_switch(current) can't be used as this won't make any changes if > the in-memory copy says the register already has the correct value. In > reality the system register is UNKNOWN out of reset. > > Reviewed-by: Jonathan Cameron > Signed-off-by: James Morse > Signed-off-by: Ben Horgan > --- > arch/arm64/kernel/mpam.c | 30 ++++++++++++++++++++++++++++++ > 1 file changed, 30 insertions(+) > One question below... > diff --git a/arch/arm64/kernel/mpam.c b/arch/arm64/kernel/mpam.c > index e6feff2324ac..dbe0a2d05abb 100644 > --- a/arch/arm64/kernel/mpam.c > +++ b/arch/arm64/kernel/mpam.c > @@ -4,6 +4,7 @@ > #include > > #include > +#include > #include > #include > > @@ -13,12 +14,41 @@ DEFINE_PER_CPU(u64, arm64_mpam_current); > > u64 arm64_mpam_global_default; > > +static int mpam_pm_notifier(struct notifier_block *self, > + unsigned long cmd, void *v) > +{ > + u64 regval; > + int cpu = smp_processor_id(); > + > + switch (cmd) { > + case CPU_PM_EXIT: > + /* > + * Don't use mpam_thread_switch() as the system register > + * value has changed under our feet. > + */ > + regval = READ_ONCE(per_cpu(arm64_mpam_current, cpu)); > + write_sysreg_s(regval, SYS_MPAM1_EL1); > + isb(); > + > + write_sysreg_s(regval, SYS_MPAM0_EL1); > + > + return NOTIFY_OK; > + default: > + return NOTIFY_DONE; > + } > +} > + > +static struct notifier_block mpam_pm_nb = { > + .notifier_call = mpam_pm_notifier, > +}; > + > static int __init arm64_mpam_register_cpus(void) > { > u64 mpamidr = read_sanitised_ftr_reg(SYS_MPAMIDR_EL1); > u16 partid_max = FIELD_GET(MPAMIDR_EL1_PARTID_MAX, mpamidr); > u8 pmg_max = FIELD_GET(MPAMIDR_EL1_PMG_MAX, mpamidr); > > + cpu_pm_register_notifier(&mpam_pm_nb); Need we ensure MPAM capability exists in the hardware before the notifier is registerred? Otherwise, mpam_pm_notifier() can accesses SYS_MPAM0_EL1 and SYS_MPAM1_EL1 system registers which may not supported by the hardware. > return mpam_register_requestor(partid_max, pmg_max); > } > /* Must occur before mpam_msc_driver_init() from subsys_initcall() */ Thanks, Gavin