linux_dsm_epyc7002/arch/arm64/include/asm
Marc Zyngier 94d0e5980d arm/arm64: KVM: Perform local TLB invalidation when multiplexing vcpus on a single CPU
Architecturally, TLBs are private to the (physical) CPU they're
associated with. But when multiple vcpus from the same VM are
being multiplexed on the same CPU, the TLBs are not private
to the vcpus (and are actually shared across the VMID).

Let's consider the following scenario:

- vcpu-0 maps PA to VA
- vcpu-1 maps PA' to VA

If run on the same physical CPU, vcpu-1 can hit TLB entries generated
by vcpu-0 accesses, and access the wrong physical page.

The solution to this is to keep a per-VM map of which vcpu ran last
on each given physical CPU, and invalidate local TLBs when switching
to a different vcpu from the same VM.

Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
2016-11-04 17:56:28 +00:00
..
xen ARM64: XEN: Add a function to initialize Xen specific UEFI runtime services 2016-07-06 10:34:46 +01:00
acenv.h
acpi.h arm64: mark reserved memblock regions explicitly in iomem 2016-08-25 18:00:31 +01:00
alternative.h treewide: remove redundant #include <linux/kconfig.h> 2016-10-11 15:06:33 -07:00
arch_gicv3.h KVM updates for v4.9-rc1 2016-10-06 10:49:01 -07:00
arch_timer.h arm64: arch_timer: Work around QorIQ Erratum A-008585 2016-09-23 17:19:25 +01:00
arm-cci.h
asm-offsets.h
assembler.h arm64: barriers: introduce nops and __nops macros for NOP sequences 2016-09-09 18:12:28 +01:00
atomic_ll_sc.h locking/atomic, arch/arm64: Implement atomic{,64}_fetch_{add,sub,and,andnot,or,xor}{,_relaxed,_acquire,_release}() 2016-06-16 10:48:21 +02:00
atomic_lse.h arm64: lse: convert lse alternatives NOP padding to use __nops 2016-09-09 18:12:34 +01:00
atomic.h locking/atomic: Remove linux/atomic.h:atomic_fetch_or() 2016-06-16 10:48:32 +02:00
barrier.h arm64: barriers: introduce nops and __nops macros for NOP sequences 2016-09-09 18:12:28 +01:00
bitops.h
bitrev.h
boot.h arm64: allow kernel Image to be loaded anywhere in physical memory 2016-02-18 18:16:53 +00:00
brk-imm.h arm64: move brk immediate argument definitions to separate header 2016-02-23 17:43:25 +00:00
bug.h arm64: move brk immediate argument definitions to separate header 2016-02-23 17:43:25 +00:00
cache.h arm64: Increase the max granular size 2015-10-28 19:09:17 +00:00
cacheflush.h arm64: mm: convert __dma_* routines to use start, size 2016-08-22 10:00:48 +01:00
cachetype.h arm64: cachetype: fix definitions of ICACHEF_* flags 2015-10-28 18:32:12 +00:00
checksum.h arm64: Implement optimised IP checksum helpers 2016-06-21 15:09:11 +01:00
clocksource.h arm/arm64: arch_timer: Use archdata to indicate vdso suitability 2016-09-23 17:19:25 +01:00
cmpxchg.h arm64: lse: convert lse alternatives NOP padding to use __nops 2016-09-09 18:12:34 +01:00
compat.h arm64: do not include ptrace.h from compat.h 2015-11-17 13:24:36 +00:00
compiler.h
cpu_ops.h
cpu.h arm64: cpuinfo: Expose MIDR_EL1 and REVIDR_EL1 to sysfs 2016-07-12 16:09:37 +01:00
cpufeature.h arm64: cpufeature: Schedule enable() calls instead of calling them via IPI 2016-10-20 09:50:53 +01:00
cpuidle.h
cputype.h arm64: sysreg: replace open-coded mrs_s/msr_s with {read,write}_sysreg_s 2016-09-09 18:12:08 +01:00
dcc.h arm64: dcc: simplify accessors 2016-09-09 11:41:13 +01:00
debug-monitors.h arm64: kgdb: handle read-only text / modules 2016-09-23 11:25:01 +01:00
device.h
dma-mapping.h arm64: Allow for different DMA and CPU bus offsets 2016-06-06 13:48:54 -07:00
dmi.h
efi.h arm64 updates for 4.8: 2016-07-27 11:16:05 -07:00
elf.h arm64: Define AT_VECTOR_SIZE_ARCH for ARCH_DLINFO 2016-07-29 10:45:58 +01:00
esr.h arm64: Work around systems with mismatched cache line sizes 2016-09-09 15:03:29 +01:00
exception.h arch, ftrace: for KASAN put hard/soft IRQ entries into separate sections 2016-03-25 16:37:42 -07:00
exec.h arm64: suspend: Reconfigure PSTATE after resume from idle 2016-10-20 09:50:54 +01:00
fb.h
fixmap.h arm64: Remove fixmap include fragility 2016-02-26 15:22:53 +00:00
fpsimd.h
fpsimdmacros.h
ftrace.h arm64: Fix misspellings in comments. 2016-03-04 18:19:17 +00:00
futex.h arm64: switch to relative exception tables 2016-02-24 14:57:26 +00:00
hardirq.h arm64: kernel: implement ACPI parking protocol 2016-02-16 15:12:32 +00:00
hugetlb.h arm64: hugetlb: add support for PTE contiguous bit 2015-12-21 17:26:00 +00:00
hw_breakpoint.h arm64: simplify sysreg manipulation 2016-09-09 11:43:50 +01:00
hwcap.h arm64/HWCAP: Use system wide safe values 2015-10-21 15:35:58 +01:00
hypervisor.h
insn.h arm64: insn: Add helpers for adrp offsets 2016-09-09 15:03:28 +01:00
io.h arm64/io: Allow I/O writes to use {W,X}ZR 2016-09-08 11:04:13 +01:00
irq_work.h
irq.h arm64: remove irq_count and do_softirq_own_stack() 2015-12-21 17:26:01 +00:00
irqflags.h arm64: debug: remove unused local_dbg_{enable, disable} macros 2016-07-19 16:59:40 +01:00
jump_label.h
kasan.h arm64: move kernel image to base of vmalloc area 2016-02-18 18:16:44 +00:00
Kbuild arm64: Remove shadowed asm-generic headers 2016-09-09 15:05:08 +01:00
kernel-pgtable.h arm64: choose memstart_addr based on minimum sparsemem section alignment 2016-04-14 16:15:08 +01:00
kexec.h arm64/kexec: Add core kexec support 2016-06-27 16:31:25 +01:00
kgdb.h arm64: kgdb: Match pstate size with gdbserver protocol 2016-06-16 19:20:51 +01:00
kprobes.h arm64: Remove stack duplicating code from jprobes 2016-08-11 17:38:16 +01:00
kvm_arm.h arm64: KVM: Rename HCR_VA to HCR_VSE 2016-09-08 12:53:00 +02:00
kvm_asm.h arm/arm64: KVM: Perform local TLB invalidation when multiplexing vcpus on a single CPU 2016-11-04 17:56:28 +00:00
kvm_coproc.h
kvm_emulate.h arm64: KVM: Take S1 walks into account when determining S2 write faults 2016-10-21 17:25:47 +01:00
kvm_host.h arm/arm64: KVM: Perform local TLB invalidation when multiplexing vcpus on a single CPU 2016-11-04 17:56:28 +00:00
kvm_hyp.h arm64: KVM: Inject a vSerror if detecting a bad GICV access at EL2 2016-09-08 12:53:00 +02:00
kvm_mmio.h KVM: arm/arm64: Export mmio_read/write_bus 2016-05-20 15:39:42 +02:00
kvm_mmu.h arm/arm64: KVM: Perform local TLB invalidation when multiplexing vcpus on a single CPU 2016-11-04 17:56:28 +00:00
kvm_psci.h
linkage.h
lse.h arm64: lse: deal with clobbered IP registers after branch via PLT 2016-02-26 18:35:02 +00:00
memblock.h
memory.h arm64: Correctly bounds check virt_addr_valid 2016-09-22 10:17:22 +01:00
mmu_context.h arm64: simplify contextidr_thread_switch 2016-09-09 11:43:50 +01:00
mmu.h arm64: mm: add param to force create_pgd_mapping() to use page mappings 2016-07-01 11:56:26 +01:00
mmzone.h arm64, numa: Add NUMA support for arm64 platforms. 2016-04-15 18:06:09 +01:00
module.h arm64: kaslr: fix breakage with CONFIG_MODVERSIONS=y 2016-10-17 12:42:16 +01:00
neon.h
numa.h arm64, ACPI, NUMA: NUMA support based on SRAT and SLIT 2016-05-30 14:27:09 +02:00
opcodes.h arm64: opcodes.h: Add arm big-endian config options before including arm header 2016-03-29 16:04:57 +01:00
page.h arm64: move {PAGE,CONT}_SHIFT into Kconfig 2016-06-03 10:57:18 +01:00
paravirt.h arm64: introduce CONFIG_PARAVIRT, PARAVIRT_TIME_ACCOUNTING and pv_time_ops 2015-12-21 14:40:54 +00:00
pci.h PCI: Move pci_dma_* helpers to common code 2016-03-07 10:40:02 -06:00
percpu.h arm64: percpu: rewrite ll/sc loops in assembly 2016-10-19 15:37:29 +01:00
perf_event.h arm64: perf: Move PMU register related defines to asm/perf_event.h 2016-03-29 16:04:57 +01:00
pgalloc.h arm64: get rid of superfluous __GFP_REPEAT 2016-06-24 17:23:52 -07:00
pgtable-hwdef.h arm64: simplify sysreg manipulation 2016-09-09 11:43:50 +01:00
pgtable-prot.h arm64: Introduce execute-only page access permissions 2016-08-25 18:00:29 +01:00
pgtable-types.h arm64: always use STRICT_MM_TYPECHECKS 2016-05-03 09:58:38 +01:00
pgtable.h arm64: hibernate: Support DEBUG_PAGEALLOC 2016-08-25 18:00:30 +01:00
probes.h arm64: kprobes instruction simulation support 2016-07-19 15:03:21 +01:00
proc-fns.h
processor.h arm64: cpufeature: Schedule enable() calls instead of calling them via IPI 2016-10-20 09:50:53 +01:00
ptdump.h arm64: mm: dump: make page table dumping reusable 2016-06-21 15:09:11 +01:00
ptrace.h arm64 updates for 4.8: 2016-07-27 11:16:05 -07:00
seccomp.h
sections.h arm64: vmlinux.ld: Add mmuoff data sections and move mmuoff text into idmap 2016-08-25 18:00:30 +01:00
shmparam.h arm64: fix COMPAT_SHMLBA definition for large pages 2015-12-02 14:00:10 +00:00
signal32.h
smp_plat.h
smp.h arm64: smp: Add function to determine if cpus are stuck in the kernel 2016-06-27 16:24:51 +01:00
sparsemem.h
spinlock_types.h
spinlock.h arm64 updates for 4.9: 2016-10-03 08:58:35 -07:00
stackprotector.h
stacktrace.h arm64: ftrace: fix a stack tracer's output under function graph tracer 2015-12-21 17:26:02 +00:00
stage2_pgtable-nopmd.h kvm: arm64: Get rid of fake page table levels 2016-04-21 14:58:21 +02:00
stage2_pgtable-nopud.h kvm: arm64: Get rid of fake page table levels 2016-04-21 14:58:21 +02:00
stage2_pgtable.h kvm: arm64: Get rid of fake page table levels 2016-04-21 14:58:21 +02:00
stat.h
string.h arm64: add KASAN support 2015-10-12 17:46:36 +01:00
suspend.h arm64: hibernate: Resume when hibernate image created on non-boot CPU 2016-08-26 11:21:25 +01:00
sync_bitops.h
syscall.h
sysreg.h arm64: sysreg: Fix use of XZR in write_sysreg_s 2016-10-17 19:38:30 +01:00
system_misc.h arm64: cleanup unused UDBG_* define 2016-08-31 13:45:46 +01:00
thread_info.h arm64: simplify sysreg manipulation 2016-09-09 11:43:50 +01:00
timex.h
tlb.h arm64: tlbflush: avoid flushing when fullmm == 1 2015-10-07 11:56:21 +01:00
tlbflush.h arm64: tlbflush.h: add __tlbi() macro 2016-09-28 10:44:05 +01:00
topology.h arm64, numa: Add NUMA support for arm64 platforms. 2016-04-15 18:06:09 +01:00
traps.h arm64: Create sections.h 2016-08-25 18:00:29 +01:00
uaccess.h arm64: Cortex-A53 errata workaround: check for kernel addresses 2016-10-20 09:50:49 +01:00
unistd32.h arm64: unistd32.h: wire up missing syscalls for compat tasks 2016-06-01 18:48:20 +01:00
unistd.h arm64: unistd32.h: wire up missing syscalls for compat tasks 2016-06-01 18:48:20 +01:00
vdso_datapage.h arm64: Add support for CLOCK_MONOTONIC_RAW in clock_gettime() vDSO 2016-07-12 16:06:32 +01:00
vdso.h
virt.h arm64/kvm: use {read,write}_sysreg() 2016-09-09 11:42:27 +01:00
word-at-a-time.h arm64: switch to relative exception tables 2016-02-24 14:57:26 +00:00