Out of curiosity i enabled CONFIG_PREEMPT on my c8000. The kernel didn't even compile. After fixing compilation i noticed a lot of segmentation faults - usually a few processes crashed already at boot, with sshd the most notable one. Most of the time the processes where crashing with a DTLB or ITLB miss. With these fixes, i was able to compile a linux kernel on the c8000 with preemption enabled without crashes. Changes in v2: - also fix flush_cache_range(), also extend the preemption-disabled region to the end of the function, as there's also a tlb flush in the last for loop - add patch to deduplicate code a bit Sven Schnelle (5): parisc: disable preemption during local tlb flush parisc: deduplicate code in flush_cache_mm() and flush_cache_range() parisc: fix preempt_count() check in entry.S parisc: disable preemption in send_IPI_allbutself() parisc: fix warning in flush_tlb_all arch/parisc/kernel/cache.c | 87 ++++++++++++++++---------------------- arch/parisc/kernel/entry.S | 4 +- arch/parisc/kernel/smp.c | 4 +- arch/parisc/mm/init.c | 4 +- 4 files changed, 43 insertions(+), 56 deletions(-) -- 2.33.0