twx-linux/arch/arm/include/asm
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
..
crypto ARM: 8119/1: crypto: sha1: add ARM NEON implementation 2014-08-02 08:51:47 +01:00
hardware ARM: removing support for etb/etm in "arch/arm/kernel/" 2014-11-07 15:19:33 -08:00
mach ARM/PCI: Remove unused pcibios_add_bus() and pcibios_remove_bus() 2014-11-21 09:34:29 -07:00
xen xen/arm/arm64: introduce xen_arch_need_swiotlb 2014-12-04 12:41:54 +00:00
arch_timer.h clocksource: arch_timer: Fix code to use physical timers when requested 2014-12-04 23:30:26 -08:00
asm-offsets.h
assembler.h ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
atomic.h locking,arch: Use ACCESS_ONCE() instead of cast to volatile in atomic_read() 2014-10-03 06:06:23 +02:00
barrier.h arch: Add lightweight memory barriers dma_rmb() and dma_wmb() 2014-12-11 21:15:06 -05:00
bitops.h arch,arm: Convert smp_mb__*() 2014-04-18 11:40:32 +02:00
bL_switcher.h
bug.h
bugs.h
cache.h
cacheflush.h ARM: mm: allow text and rodata sections to be read-only 2014-10-16 14:38:54 -07:00
cachetype.h
checksum.h
clkdev.h
cmpxchg.h
compiler.h
cp15.h ARM: remove global cr_no_alignment 2014-06-02 09:20:18 +01:00
cpu.h
cpuidle.h cpuidle: Invert CPUIDLE_FLAG_TIME_VALID logic 2014-11-12 21:17:27 +01:00
cputype.h ARM: 8130/1: cpuidle/cpuidle-big_little: fix reading cpu id part number 2014-08-27 15:40:45 +01:00
cti.h
dcc.h ARM: tty: Move HVC DCC assembly to arch/arm 2014-05-28 13:33:18 -07:00
delay.h
device.h arm: introduce is_device_dma_coherent 2014-12-04 12:41:50 +00:00
div64.h ARM: 8027/1: fix do_div() bug in big-endian systems 2014-04-22 22:23:57 +01:00
dma-contiguous.h
dma-iommu.h arm: dma-iommu: Clean up redundant variable 2014-05-20 13:43:26 +02:00
dma-mapping.h ARM: SoC/iommu configuration for 3.19 2014-12-16 14:53:01 -08:00
dma.h
domain.h
ecard.h
edac.h
elf.h ARM: 8127/1: module: add support for R_ARM_TARGET1 relocations 2014-08-27 15:40:11 +01:00
entry-macro-multi.S ARM: convert all "mov.* pc, reg" to "bx reg" for ARMv6+ 2014-07-18 12:29:04 +01:00
exception.h
fb.h
fiq.h
firmware.h ARM: firmware: add AFTR mode support to firmware do_idle method 2014-10-21 00:06:35 +09:00
fixmap.h arm: use fixmap for text patching when text is RO 2014-10-16 14:38:53 -07:00
flat.h
floppy.h
fncpy.h
fpstate.h
ftrace.h ARM: 8158/1: LLVMLinux: use static inline in ARM ftrace.h 2014-09-26 14:40:03 +01:00
futex.h
glue-cache.h ARM: LLVMLinux: Change "extern inline" to "static inline" in glue-cache.h 2014-06-07 11:44:39 -07:00
glue-df.h ARM: 8065/1: remove last use of CONFIG_CPU_ARM710 2014-05-30 01:12:30 +01:00
glue-pf.h
glue-proc.h ARM: 8103/1: save/restore Cortex-A9 CP15 registers on suspend/resume 2014-07-18 12:29:37 +01:00
glue.h
gpio.h ARM: delete old reference to ARM_GPIOLIB_COMPLEX 2014-06-30 21:37:39 +02:00
hardirq.h
highmem.h ARM: 8031/2: change fixmap mapping region to support 32 CPUs 2014-04-23 11:09:42 +01:00
hugetlb-3level.h
hugetlb.h
hw_breakpoint.h
hw_irq.h ARM: 8218/1: warn if bad IRQ was scheduled 2014-11-27 16:15:33 +00:00
hwcap.h
hypervisor.h
ide.h
idmap.h
io.h ARM: Use include/asm-generic/io.h 2014-11-10 15:59:23 +01:00
irq_work.h arm: Tell irq work about self IPI support 2014-09-13 18:38:39 +02:00
irq.h
irqflags.h
jump_label.h
Kbuild net, lib: kill arch_fast_hash library bits 2014-12-10 15:17:46 -05:00
kexec.h
kgdb.h
kmap_types.h
kprobes.h
kvm_arm.h
kvm_asm.h ARM: KVM: handle 64bit values passed to mrcc or from mcrr instructions in BE case 2014-07-11 04:57:38 -07:00
kvm_coproc.h
kvm_emulate.h arm/arm64: KVM: Use set/way op trapping to track the state of the caches 2015-01-29 23:24:56 +01:00
kvm_host.h arm/arm64: KVM: Use set/way op trapping to track the state of the caches 2015-01-29 23:24:56 +01:00
kvm_mmio.h
kvm_mmu.h arm/arm64: KVM: Use kernel mapping to perform invalidation on page fault 2015-01-29 23:24:57 +01:00
kvm_psci.h ARM/ARM64: KVM: Make kvm_psci_call() return convention more flexible 2014-04-30 04:18:57 -07:00
limits.h
linkage.h
mach-types.h
mc146818rtc.h
mcpm.h ARM: 8240/1: MCPM: document mcpm_sync_init() 2014-12-03 16:00:06 +00:00
mcs_spinlock.h ARM: 8098/1: mcs lock: implement wfe-based polling for MCS locking 2014-07-18 12:29:35 +01:00
memblock.h ARM: 8025/1: Get rid of meminfo 2014-06-01 01:17:12 +01:00
memory.h ARM: Use include/asm-generic/io.h 2014-11-10 15:59:23 +01:00
mmu_context.h
mmu.h
module.h
mpu.h
mtd-xip.h
mutex.h
neon.h
nwflash.h
opcodes-sec.h
opcodes-virt.h
opcodes.h
outercache.h ARM: l2c: remove old .set_debug method 2014-05-30 00:50:35 +01:00
page-nommu.h
page.h
pci.h PCI: Turn pcibios_penalize_isa_irq() into a weak function 2014-05-27 16:23:58 -06:00
percpu.h ARM: 8174/1: Use global stack register variable for percpu 2014-11-13 23:58:06 +00:00
perf_event.h arm: perf: factor out callchain code 2014-10-30 12:16:58 +00:00
pgalloc.h ARM: 8235/1: Support for the PXN CPU feature on ARMv7 2014-12-03 15:57:45 +00:00
pgtable-2level-hwdef.h ARM: 8235/1: Support for the PXN CPU feature on ARMv7 2014-12-03 15:57:45 +00:00
pgtable-2level-types.h
pgtable-2level.h arm: mm: introduce special ptes for LPAE 2014-10-09 22:26:00 -04:00
pgtable-3level-hwdef.h ARM: 8235/1: Support for the PXN CPU feature on ARMv7 2014-12-03 15:57:45 +00:00
pgtable-3level-types.h
pgtable-3level.h arm: mm: enable RCU fast_gup 2014-10-09 22:26:01 -04:00
pgtable-hwdef.h
pgtable-nommu.h
pgtable.h ARM: 8239/1: Introduce {set,clear}_pte_bit 2014-12-03 16:00:06 +00:00
pmu.h arm: perf: fold hotplug notifier into arm_pmu 2014-10-30 12:17:01 +00:00
probes.h
proc-fns.h
processor.h arch, locking: Ciao arch_mutex_cpu_relax() 2014-07-17 12:32:47 +02:00
procinfo.h
prom.h of/fdt: move memreserve and dtb memory reservations into core 2014-04-30 00:59:17 -05:00
psci.h arm: Fix compile warning for psci 2014-05-27 15:58:49 +02:00
ptrace.h ARM: 8175/1: Use current_stack_pointer to calculate pt_regs address 2014-11-13 23:58:07 +00:00
seccomp.h
setup.h ARM: 8025/1: Get rid of meminfo 2014-06-01 01:17:12 +01:00
shmparam.h
signal.h
smp_plat.h ARM: 8130/1: cpuidle/cpuidle-big_little: fix reading cpu id part number 2014-08-27 15:40:45 +01:00
smp_scu.h ARM: make it easier to check the CPU part number correctly 2014-07-18 12:29:02 +01:00
smp_twd.h
smp.h ARM: 8131/1: arm/smp: Absorb boot_secondary() 2014-08-27 15:44:13 +01:00
sparsemem.h
spinlock_types.h
spinlock.h arm/spinlock: Replace ACCESS_ONCE with READ_ONCE 2014-12-18 09:54:40 +01:00
stackprotector.h
stacktrace.h ARM: 8070/1: Introduce arm_get_current_stack_frame() 2014-07-18 12:29:11 +01:00
string.h
suspend.h
swab.h
switch_to.h
sync_bitops.h
syscall.h ARM: 8152/1: Convert pr_warning to pr_warn 2014-09-26 14:39:53 +01:00
system_info.h
system_misc.h
tcm.h
therm.h
thread_info.h Merge branches 'fixes', 'misc', 'pm' and 'sa1100' into for-next 2014-12-05 16:30:47 +00:00
thread_notify.h
timex.h
tlb.h arm: mm: enable HAVE_RCU_TABLE_FREE logic 2014-10-09 22:26:01 -04:00
tlbflush.h
tls.h ARM: 8178/1: fix set_tls for !CONFIG_KUSER_HELPERS 2014-09-30 16:55:23 +01:00
topology.h
traps.h
trusted_foundations.h ARM: trusted_foundations: fix compile error on non-SMP 2014-05-23 21:28:11 +02:00
types.h
uaccess.h ARM: 8137/1: fix get_user BE behavior for target variable with size of 8 bytes 2014-09-12 17:38:59 +01:00
ucontext.h
unified.h
unistd.h ARM: wire up getrandom syscall 2014-08-09 14:07:53 +01:00
unwind.h
uprobes.h
user.h
v7m.h
vfp.h ARM: 8197/1: vfp: Fix VFPv3 hwcap detection on CPUID based cpus 2014-11-21 15:24:43 +00:00
vfpmacros.h
vga.h
virt.h
word-at-a-time.h
xor.h