Re: [PATCH v2 15/29] arm_mpam: Reset MSC controls from cpu hp callbacks
From: James Morse <james.morse@arm.com>
Date: 2025-10-17 18:50:54
Also in:
linux-acpi, lkml
Hi Fenghua, On 05/10/2025 21:43, Fenghua Yu wrote:
Hi, James, On 9/10/25 13:42, James Morse wrote:quoted
When a CPU comes online, it may bring a newly accessible MSC with it. Only the default partid has its value reset by hardware, and even then the MSC might not have been reset since its config was previously dirtyied. e.g. Kexec.typo: s/dirtyied/dirtied/quoted
Any in-use partid must have its configuration restored, or reset. In-use partids may be held in caches and evicted later. MSC are also reset when CPUs are taken offline to cover cases where firmware doesn't reset the MSC over reboot using UEFI, or kexec where there is no firmware involvement. If the configuration for a RIS has not been touched since it was brought online, it does not need resetting again. To reset, write the maximum values for all discovered controls. CC: Rohit Mathew<redacted> Signed-off-by: James Morse<james.morse@arm.com>Other than the minor comments, Reviewed-by: Fenghua Yu <fenghuay@nvidia.com>
Thanks,
[SNIP]quoted
+static void mpam_reset_ris(struct mpam_msc_ris *ris) +{ + u16 partid, partid_max; + + mpam_assert_srcu_read_lock_held(); + + if (ris->in_reset_state) + return; + + spin_lock(&partid_max_lock); + partid_max = mpam_partid_max; + spin_unlock(&partid_max_lock); + for (partid = 0; partid < partid_max; partid++)* Should partid_max be inclusive? So it's "partid < partid_max + 1" here? MPAM spec says max PARTID is inclusive: "The range of valid PARTIDs is 0 to the maximum PARTID, inclusive. The maximum values of a PARTID implemented by different MSCs need not be the same".
Hmmm, if partid_max is 0 then this loop should run only once, so yet. Thanks, James