linux/arch/arm
Marc Zyngier 0d3e4d4fad arm/arm64: KVM: Use kernel mapping to perform invalidation on page fault
When handling a fault in stage-2, we need to resync I$ and D$, just
to be sure we don't leave any old cache line behind.

That's very good, except that we do so using the *user* address.
Under heavy load (swapping like crazy), we may end up in a situation
where the page gets mapped in stage-2 while being unmapped from
userspace by another CPU.

At that point, the DC/IC instructions can generate a fault, which
we handle with kvm->mmu_lock held. The box quickly deadlocks, user
is unhappy.

Instead, perform this invalidation through the kernel mapping,
which is guaranteed to be present. The box is much happier, and so
am I.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
2015-01-29 23:24:57 +01:00
..
boot ARM: SoC fixes 2015-01-18 18:00:40 +12:00
common Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
configs Merge tag 'samsung-fixes-3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung into fixes 2015-01-16 19:11:37 -08:00
crypto crypto: arm - replace memset by memzero_explicit 2014-12-02 22:55:51 +08:00
firmware
include arm/arm64: KVM: Use kernel mapping to perform invalidation on page fault 2015-01-29 23:24:57 +01:00
kernel Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2015-01-11 12:44:10 -08:00
kvm arm/arm64: KVM: Use kernel mapping to perform invalidation on page fault 2015-01-29 23:24:57 +01:00
lib ARM: 8225/1: Add unwinding support for memory copy functions 2014-11-27 16:00:25 +00:00
mach-asm9260 ARM: add mach-asm9260 2014-11-28 15:06:38 +01:00
mach-at91 ARM: at91: board-dt-sama5: add phy_fixup to override NAND_Tree 2015-01-12 15:50:23 +01:00
mach-axxia
mach-bcm Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-12-10 08:38:57 -08:00
mach-berlin
mach-clps711x
mach-cns3xxx
mach-davinci More ACPI and power management updates for 3.19-rc1 2014-12-18 20:28:33 -08:00
mach-dove
mach-ebsa110
mach-efm32
mach-ep93xx arm: ep93xx: add dma_masks for the M2P and M2M DMA controllers 2014-11-28 12:34:08 +01:00
mach-exynos More ACPI and power management updates for 3.19-rc1 2014-12-18 20:28:33 -08:00
mach-footbridge
mach-gemini
mach-highbank
mach-hisi
mach-imx ARM: imx6sx: Set PLL2 as parent of QSPI clocks 2015-01-05 21:16:31 +08:00
mach-integrator
mach-iop13xx
mach-iop32x
mach-iop33x
mach-ixp4xx
mach-keystone ARM / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM 2014-12-13 00:42:49 +01:00
mach-ks8695
mach-lpc32xx
mach-mediatek ARM: SoC DT updates for 3.19 2014-12-09 14:57:37 -08:00
mach-meson
mach-mmp Please consider pulling the clk framework changes toward 3.19. It is 2014-12-20 16:42:36 -08:00
mach-moxart
mach-msm
mach-mv78xx0
mach-mvebu ARM: mvebu: use the cpufreq-dt platform_data for independent clocks 2014-12-04 17:31:32 +01:00
mach-mxs
mach-netx
mach-nomadik
mach-nspire
mach-omap1 ARM / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM 2014-12-13 00:42:49 +01:00
mach-omap2 ARM: OMAP2+: Fix n900 board name for legacy user space 2015-01-05 15:48:21 -08:00
mach-orion5x
mach-picoxcell
mach-prima2
mach-pxa Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
mach-qcom
mach-realview
mach-rockchip ARM: rockchip: disable jtag/sdmmc autoswitching on rk3288 2015-01-16 19:10:39 -08:00
mach-rpc
mach-s3c24xx Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
mach-s3c64xx
mach-s5pv210
mach-sa1100 Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
mach-shmobile Merge tag 'renesas-soc-fixes-for-v3.19' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into fixes 2015-01-16 19:10:43 -08:00
mach-socfpga
mach-spear
mach-sti
mach-sunxi
mach-tegra ACPI and power management updates for 3.19-rc1 2014-12-10 21:17:00 -08:00
mach-u300 Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
mach-ux500
mach-versatile
mach-vexpress ARM: vexpress: Enable regulator framework when MMCI is in use 2014-11-28 21:57:07 +01:00
mach-vt8500
mach-w90x900
mach-zynq ARM: zynq: Remove secondary_startup() declaration from header 2014-12-01 09:32:22 +01:00
mm ARM: 8275/1: mm: fix PMD_SECT_RDONLY undeclared compile error 2015-01-09 20:44:12 +00:00
net
nwfpe
oprofile
plat-iop
plat-omap
plat-orion ACPI and power management updates for 3.19-rc1 2014-12-10 21:17:00 -08:00
plat-pxa
plat-samsung Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
plat-versatile ARM: vexpress: Remove non-DT code 2014-11-28 16:08:16 +01:00
tools
vfp
xen xen/arm: introduce GNTTABOP_cache_flush 2014-12-04 12:41:54 +00:00
Kconfig Merge branch 'akpm' (second patch-bomb from Andrew) 2014-12-13 13:00:36 -08:00
Kconfig-nommu
Kconfig.debug Char/Misc driver patches for 3.19-rc1 2014-12-14 16:43:47 -08:00
Makefile