[PATCH v2 3/3] arm64: cacheinfo: Provide helper to compress MPIDR value into u32
Gavin Shan
gshan at redhat.com
Thu Jul 10 21:43:03 PDT 2025
On 7/5/25 3:38 AM, James Morse wrote:
> Filesystems like resctrl use the cache-id exposed via sysfs to identify
> groups of CPUs. The value is also used for PCIe cache steering tags. On
> DT platforms cache-id is not something that is described in the
> device-tree, but instead generated from the smallest MPIDR of the CPUs
> associated with that cache. The cache-id exposed to user-space has
> historically been 32 bits.
>
> MPIDR values may be larger than 32 bits.
>
> MPIDR only has 32 bits worth of affinity data, but the aff3 field lives
> above 32bits. The corresponding lower bits are masked out by
> MPIDR_HWID_BITMASK and contain an SMT flag and Uni-Processor flag.
>
> Swizzzle the aff3 field into the bottom 32 bits and using that.
>
> In case more affinity fields are added in the future, the upper RES0
> area should be checked. Returning a value greater than 32 bits from
> this helper will cause the caller to give up on allocating cache-ids.
>
> Signed-off-by: James Morse <james.morse at arm.com>
> Reviewed-by: Jonathan Cameron <jonathan.cameron at huawei.com>
> ---
> Changes since v1:
> * Removal of unrelated changes.
> * Added a comment about how the RES0 bit safety net works.
> ---
> arch/arm64/include/asm/cache.h | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
Reviewed-by: Gavin Shan <gshan at redha.com>
More information about the linux-arm-kernel
mailing list