freebsd-nq/sys/arm
Svatopluk Kraus 52ece7d15b Fix duplicate TLB entries issue during section promotion/demotion.
Such situation is defined as UNPREDICTABLE by arm arm manual.

This patch fixes all explicit TLB fetches which could cause this issue
and speculative TLB fetches for sections mapped in user address space.
Speculative TLB fetches for sections mapped in kernel address space are
not fixed yet as the break-before-make approach must be implemented for
kernel mappings too. This means that promoted/demoted section will be
unmapped for a while. Either kernel stack the promotion/demotion is
being done on or L1 page table(s) which must be modified may be mapped
by this section. Thus the fix will not be so simple like for userland
mappings.

The issue was detectable only on Cortex-A8 platforms and only very
rarely. It was reported few times. First, it was by Mikael Urankar
in June 2015. He helped to identify the mechanism of this issue, but
we were not sure how to fix it correctly until now.

PR:		208381
Reported by:	Mikael Urankar (mikael.urankar at gmail.com)
Reviewed by:	kib
2016-04-22 06:42:50 +00:00
..
allwinner Replace the A20 kernel config with a generic ALLWINNER kernel config that 2016-04-21 16:49:04 +00:00
altera/socfpga Rename ARM_INTRNG and MIPS_INTRNG to INTRNG. This will help with machine 2016-04-15 16:05:41 +00:00
amlogic/aml8726 Use our nitems() macro when param.h is available. 2016-04-20 15:45:55 +00:00
annapurna/alpine Rename ARM_INTRNG and MIPS_INTRNG to INTRNG. This will help with machine 2016-04-15 16:05:41 +00:00
arm Fix duplicate TLB entries issue during section promotion/demotion. 2016-04-22 06:42:50 +00:00
at91 sys: use our roundup2/rounddown2() macros when param.h is available. 2016-04-21 19:57:40 +00:00
broadcom/bcm2835 Use proper type of tag in bcm2835_mbox_fb_init 2016-04-21 18:58:06 +00:00
cavium/cns11xx sys: use our roundup2/rounddown2() macros when param.h is available. 2016-04-21 19:57:40 +00:00
conf Replace the A20 kernel config with a generic ALLWINNER kernel config that 2016-04-21 16:49:04 +00:00
freescale Rename ARM_INTRNG and MIPS_INTRNG to INTRNG. This will help with machine 2016-04-15 16:05:41 +00:00
include Don't use atomic operations for page table entries and handle access 2016-04-22 06:32:27 +00:00
lpc Rename ARM_INTRNG and MIPS_INTRNG to INTRNG. This will help with machine 2016-04-15 16:05:41 +00:00
mv sys: use our roundup2/rounddown2() macros when param.h is available. 2016-04-21 19:57:40 +00:00
nvidia Rename ARM_INTRNG and MIPS_INTRNG to INTRNG. This will help with machine 2016-04-15 16:05:41 +00:00
qemu Rename ARM_INTRNG and MIPS_INTRNG to INTRNG. This will help with machine 2016-04-15 16:05:41 +00:00
rockchip Rename ARM_INTRNG and MIPS_INTRNG to INTRNG. This will help with machine 2016-04-15 16:05:41 +00:00
samsung/exynos Rename ARM_INTRNG and MIPS_INTRNG to INTRNG. This will help with machine 2016-04-15 16:05:41 +00:00
ti Use our nitems() macro when param.h is available. 2016-04-20 15:45:55 +00:00
versatile Rename ARM_INTRNG and MIPS_INTRNG to INTRNG. This will help with machine 2016-04-15 16:05:41 +00:00
xilinx Rename ARM_INTRNG and MIPS_INTRNG to INTRNG. This will help with machine 2016-04-15 16:05:41 +00:00
xscale sys: use our roundup2/rounddown2() macros when param.h is available. 2016-04-21 19:57:40 +00:00