arm64: cpufeature: Correctly display signed override values
authorMarc Zyngier <maz@kernel.org>
Mon, 22 Jan 2024 18:13:37 +0000 (18:13 +0000)
committerOliver Upton <oliver.upton@linux.dev>
Thu, 8 Feb 2024 15:12:44 +0000 (15:12 +0000)
When a field gets overriden, the kernel indicates the result of
the override in dmesg. This works well with unsigned fields, but
results in a pretty ugly output when the field is signed.

Truncate the field to its width before displaying it.

Reviewed-by: Oliver Upton <oliver.upton@linux.dev>
Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Link: https://lore.kernel.org/r/20240122181344.258974-4-maz@kernel.org
Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
arch/arm64/kernel/cpufeature.c

index 92b1546f26223b4750fdfc2fc38dd2a353e35076..bae5d0655262e2a18094eda84c9ced169e0e99bc 100644 (file)
@@ -949,7 +949,8 @@ static void init_cpu_ftr_reg(u32 sys_reg, u64 new)
                                pr_warn("%s[%d:%d]: %s to %llx\n",
                                        reg->name,
                                        ftrp->shift + ftrp->width - 1,
-                                       ftrp->shift, str, tmp);
+                                       ftrp->shift, str,
+                                       tmp & (BIT(ftrp->width) - 1));
                } else if ((ftr_mask & reg->override->val) == ftr_mask) {
                        reg->override->val &= ~ftr_mask;
                        pr_warn("%s[%d:%d]: impossible override, ignored\n",