linux/arch/parisc
John David Anglin 2de8b4cc20 parisc: Rewrite cache flush code for PA8800/PA8900
Originally, I was convinced that we needed to use tmpalias flushes
everwhere, for both user and kernel flushes. However, when I modified
flush_kernel_dcache_page_addr, to use a tmpalias flush, my c8000
would crash quite early when booting.

The PDC returns alias values of 0 for the icache and dcache. This
indicates that either the alias boundary is greater than 16MB or
equivalent aliasing doesn't work. I modified the tmpalias code to
make it easy to try alternate boundaries. I tried boundaries up to
128MB but still kernel tmpalias flushes didn't work on c8000.

This led me to conclude that tmpalias flushes don't work on PA8800
and PA8900 machines, and that we needed to flush directly using the
virtual address of user and kernel pages. This is likely the major
cause of instability on the c8000 and rp34xx machines.

Flushing user pages requires doing a temporary context switch as we
have to flush pages that don't belong to the current context. Further,
we have to deal with pages that aren't present. If a page isn't
present, the flush instructions fault on every line.

Other code has been rearranged and simplified based on testing. For
example, I introduced a flush_cache_dup_mm routine. flush_cache_mm
and flush_cache_dup_mm differ in that flush_cache_mm calls
purge_cache_pages and flush_cache_dup_mm calls flush_cache_pages.
In some implementations, pdc is more efficient than fdc. Based on
my testing, I don't believe there's any performance benefit on the
c8000.

Signed-off-by: John David Anglin <dave.anglin@bell.net>
Signed-off-by: Helge Deller <deller@gmx.de>
2022-05-17 21:52:47 +02:00
..
boot Kbuild updates for v5.17 2022-01-19 11:15:19 +02:00
configs parisc: Update 32- and 64-bit defconfigs 2022-05-08 20:01:11 +02:00
include parisc: Rewrite cache flush code for PA8800/PA8900 2022-05-17 21:52:47 +02:00
kernel parisc: Rewrite cache flush code for PA8800/PA8900 2022-05-17 21:52:47 +02:00
lib parisc: Use constants to encode the space registers like SR_KERNEL 2022-03-11 19:49:31 +01:00
math-emu parisc: Fix typos in comments 2022-05-08 20:01:12 +02:00
mm parisc: Disable debug code regarding cache flushes in handle_nadtlb_fault() 2022-05-17 21:49:06 +02:00
Kbuild kbuild: use more subdir- for visiting subdirectories while cleaning 2021-10-24 13:49:46 +09:00
Kconfig parisc: Re-enable GENERIC_CPU_DEVICES for !SMP 2022-05-08 20:01:11 +02:00
Kconfig.debug tracing: Refactor TRACE_IRQFLAGS_SUPPORT in Kconfig 2021-08-16 11:37:21 -04:00
Makefile parisc: Detect hppa-suse-linux-gcc compiler for cross-building 2022-03-29 21:37:12 +02:00
defpalo.conf
install.sh parisc: Fix "make install" on newer debian releases 2021-12-04 21:36:04 +01:00
nm