summaryrefslogtreecommitdiffstats
path: root/arch/arc/include
diff options
context:
space:
mode:
authorVineet Gupta <vgupta@synopsys.com>2017-08-03 17:45:44 +0530
committerVineet Gupta <vgupta@synopsys.com>2017-08-04 13:56:35 +0530
commitb5ddb6d54729d814356937572d6c9b599f10c29f (patch)
tree122ddb43a2f0a0472237e20114ea78b1db5ff7a3 /arch/arc/include
parent7d79cee2c6540ea64dd917a14e2fd63d4ac3d3c0 (diff)
downloadlinux-b5ddb6d54729d814356937572d6c9b599f10c29f.tar.gz
linux-b5ddb6d54729d814356937572d6c9b599f10c29f.tar.bz2
linux-b5ddb6d54729d814356937572d6c9b599f10c29f.zip
ARCv2: PAE40: set MSB even if !CONFIG_ARC_HAS_PAE40 but PAE exists in SoC
PAE40 confiuration in hardware extends some of the address registers for TLB/cache ops to 2 words. So far kernel was NOT setting the higher word if feature was not enabled in software which is wrong. Those need to be set to 0 in such case. Normally this would be done in the cache flush / tlb ops, however since these registers only exist conditionally, this would have to be conditional to a flag being set on boot which is expensive/ugly - specially for the more common case of PAE exists but not in use. Optimize that by zero'ing them once at boot - nobody will write to them afterwards Cc: stable@vger.kernel.org #4.4+ Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'arch/arc/include')
-rw-r--r--arch/arc/include/asm/mmu.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/arc/include/asm/mmu.h b/arch/arc/include/asm/mmu.h
index db7319e9b506..efb79fafff1d 100644
--- a/arch/arc/include/asm/mmu.h
+++ b/arch/arc/include/asm/mmu.h
@@ -94,6 +94,8 @@ static inline int is_pae40_enabled(void)
return IS_ENABLED(CONFIG_ARC_HAS_PAE40);
}
+extern int pae40_exist_but_not_enab(void);
+
#endif /* !__ASSEMBLY__ */
#endif