linux/arch/parisc
John David Anglin ae7a609c34 parisc: Prevent TLB speculation on flushed pages on CPUs that only support equivalent aliases
Helge noticed that we flush the TLB page in flush_cache_page but not in
flush_cache_range or flush_cache_mm.

For a long time, we have had random segmentation faults building
packages on machines with PA8800/8900 processors.  These machines only
support equivalent aliases.  We don't see these faults on machines that
don't require strict coherency.  So, it appears TLB speculation
sometimes leads to cache corruption on machines that require coherency.

This patch adds TLB flushes to flush_cache_range and flush_cache_mm when
coherency is required.  We only flush the TLB in flush_cache_page when
coherency is required.

The patch also optimizes flush_cache_range.  It turns out we always have
the right context to use flush_user_dcache_range_asm and
flush_user_icache_range_asm.

The patch has been tested for some time on rp3440, rp3410 and A500-44.
It's been boot tested on c8000.  No random segmentation faults were
observed during testing.

Signed-off-by: John David Anglin <dave.anglin@bell.net>
Cc: stable@vger.kernel.org # 4.9+
Signed-off-by: Helge Deller <deller@gmx.de>
2017-07-25 23:36:53 +02:00
..
configs parisc: regenerate defconfig files 2017-07-23 22:08:42 +02:00
include parisc: Add function to return DIMM slot of physical address 2017-07-25 19:28:37 +02:00
kernel parisc: Prevent TLB speculation on flushed pages on CPUs that only support equivalent aliases 2017-07-25 23:36:53 +02:00
lib parisc: Inline trivial exception code in lusercopy.S 2017-05-10 17:46:12 +02:00
math-emu sched/headers: Prepare for new header dependencies before moving code to <linux/sched/signal.h> 2017-03-02 08:42:29 +01:00
mm mm/hugetlb: add size parameter to huge_pte_offset() 2017-07-06 16:24:34 -07:00
oprofile
defpalo.conf parisc: switch to gzip-compressed vmlinuz kernel 2013-07-09 22:09:20 +02:00
install.sh parisc: make "make install" not depend on vmlinux 2013-11-07 22:28:06 +01:00
Kconfig HAVE_ARCH_HARDENED_USERCOPY is unconditional now 2017-04-26 12:11:06 -04:00
Kconfig.debug arch: Move CONFIG_DEBUG_RODATA and CONFIG_SET_MODULE_RONX to be common 2017-02-07 12:32:52 -08:00
Makefile parisc: Fix ftrace function tracer 2016-04-14 17:47:19 +02:00
nm