All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] arm64/cache: Fix cache_type_cwg() for register generation
@ 2022-08-17 16:02 Mark Brown
  2022-08-17 16:56 ` Mark Rutland
  0 siblings, 1 reply; 7+ messages in thread
From: Mark Brown @ 2022-08-17 16:02 UTC (permalink / raw)
  To: Will Deacon, Catalin Marinas; +Cc: linux-arm-kernel, Mark Brown, Ard Biesheuvel

Ard noticed that since we converted CTR_EL0 to automatic generation we have
been seeing errors on some systems handling the value of cache_type_cwg()
such as

   CPU features: No Cache Writeback Granule information, assuming 128

This is because the manual definition of CTR_EL0_CWG_MASK was done without
a shift while our convention is to define the mask after shifting. This
means that the user in cache_type_cwg() was broken as it was written for
the manually written shift then mask. Fix this by reversing, we don't use
SYS_FIELD_GET() since that is defined in sysreg.h which we don't want to
include in cache.h.

The only other field where the _MASK for this register is used is IminLine
which is at offset 0 so unaffected.

Fixes: 9a3634d02301 ("arm64/sysreg: Convert CTR_EL0 to automatic generation")
Reported-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
---
 arch/arm64/include/asm/cache.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm64/include/asm/cache.h b/arch/arm64/include/asm/cache.h
index 119e4aa02eb1..8445a3213b2f 100644
--- a/arch/arm64/include/asm/cache.h
+++ b/arch/arm64/include/asm/cache.h
@@ -67,7 +67,7 @@ static __always_inline int icache_is_vpipt(void)
 
 static inline u32 cache_type_cwg(void)
 {
-	return (read_cpuid_cachetype() >> CTR_EL0_CWG_SHIFT) & CTR_EL0_CWG_MASK;
+	return (read_cpuid_cachetype() & CTR_EL0_CWG_MASK) >> CTR_EL0_CWG_SHIFT;
 }
 
 #define __read_mostly __section(".data..read_mostly")
-- 
2.30.2


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-08-18 13:50 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-17 16:02 [PATCH] arm64/cache: Fix cache_type_cwg() for register generation Mark Brown
2022-08-17 16:56 ` Mark Rutland
2022-08-17 17:25   ` Mark Rutland
2022-08-17 18:22   ` Mark Brown
2022-08-18 13:20     ` Mark Rutland
2022-08-18 13:33       ` Mark Brown
2022-08-18 13:40         ` Mark Rutland

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.