linux_dsm_epyc7002/arch/arm64/include/asm
Pavel Fedin bc45a516fa arm64: KVM: Correctly handle zero register during MMIO
On ARM64 register index of 31 corresponds to both zero register and SP.
However, all memory access instructions, use ZR as transfer register. SP
is used only as a base register in indirect memory addressing, or by
register-register arithmetics, which cannot be trapped here.

Correct emulation is achieved by introducing new register accessor
functions, which can do special handling for reg_num == 31. These new
accessors intentionally do not rely on old vcpu_reg() on ARM64, because
it is to be removed. Since the affected code is shared by both ARM
flavours, implementations of these accessors are also added to ARM32 code.

This patch fixes setting MMIO register to a random value (actually SP)
instead of zero by something like:

 *((volatile int *)reg) = 0;

compilers tend to generate "str wzr, [xx]" here

[Marc: Fixed 32bit splat]

Signed-off-by: Pavel Fedin <p.fedin@samsung.com>
Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
2015-12-04 16:29:37 +00:00
..
xen xen/events: Support event channel rebind on ARM 2015-08-20 12:24:15 +01:00
acenv.h ARM64 / ACPI: Get RSDP and ACPI boot-time tables 2015-03-25 11:49:30 +00:00
acpi.h Power management and ACPI updates for v4.4-rc1 2015-11-04 18:10:13 -08:00
alternative.h arm64: alternative: put secondary CPUs into polling loop during patch 2015-07-30 19:07:28 +01:00
arch_gicv3.h irqchip/gic-v3: Specialize readq and writeq accesses 2015-10-09 23:11:53 +01:00
arch_timer.h arm64: fix missing linux/bug.h include in asm/arch_timer.h 2015-01-07 11:40:59 +00:00
arm-cci.h arm-cci: Get rid of secure transactions for PMU driver 2015-03-27 13:44:35 +00:00
asm-offsets.h
assembler.h arm64: use ENDPIPROC() to annotate position independent assembler routines 2015-10-12 16:19:45 +01:00
atomic_ll_sc.h arm64: cmpxchg_dbl: fix return value type 2015-11-05 17:29:40 +00:00
atomic_lse.h arm64: cmpxchg_dbl: fix return value type 2015-11-05 17:29:40 +00:00
atomic.h arm64 updates for 4.4: 2015-11-04 14:47:13 -08:00
barrier.h arm64: barriers: fix smp_load_acquire to work with const arguments 2015-11-18 18:06:43 +00:00
bitops.h
bitrev.h ARM: 8189/1: arm64:add bitrev.h file to support rbit instruction 2014-12-22 16:47:32 +00:00
boot.h arm64: use fixmap region for permanent FDT mapping 2015-06-02 16:31:33 +01:00
bug.h arm64/BUG: Use BRK instruction for generic BUG traps 2015-07-27 11:08:42 +01:00
cache.h arm64: Increase the max granular size 2015-10-28 19:09:17 +00:00
cacheflush.h arm64: flush: use local TLB and I-cache invalidation 2015-10-07 11:45:27 +01:00
cachetype.h arm64: cachetype: fix definitions of ICACHEF_* flags 2015-10-28 18:32:12 +00:00
cmpxchg.h arm64: atomics: implement native {relaxed, acquire, release} atomics 2015-10-12 17:36:58 +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 ARM64: kernel: unify ACPI and DT cpus initialization 2015-05-19 16:09:29 +01:00
cpu.h arm64: Consolidate CPU Sanity check to CPU Feature infrastructure 2015-10-21 15:35:56 +01:00
cpufeature.h arm64: KVM: Add workaround for Cortex-A57 erratum 834220 2015-11-24 17:58:14 +01:00
cpuidle.h arm64: kernel: rename __cpu_suspend to keep it aligned with arm 2015-06-19 14:46:39 +01:00
cputype.h arm64 updates for 4.4: 2015-11-04 14:47:13 -08:00
dcc.h ARM64: TTY: hvc_dcc: Add support for ARM64 dcc 2015-10-04 17:49:27 +01:00
debug-monitors.h arm64: debug: rename enum debug_el to avoid symbol collision 2015-07-27 18:36:54 +01:00
device.h
dma-mapping.h arm64: simplify dma_get_ops 2015-11-17 12:05:18 +00:00
dmi.h
efi.h arm64/efi: move virtmap init to early initcall 2015-01-22 14:59:25 +00:00
elf.h mm: fold arch_randomize_brk into ARCH_HAS_ELF_RANDOMIZE 2015-04-14 16:49:05 -07:00
esr.h arm64/debug: Add missing #includes 2015-07-27 11:08:42 +01:00
exception.h arm64: Add __exception_irq_entry definition for function graph 2015-08-12 17:23:45 +01:00
exec.h
fb.h
fixmap.h arm64: Simplify NR_FIX_BTMAPS calculation 2015-10-19 17:54:07 +01:00
fpsimd.h
fpsimdmacros.h arm64: Avoid breakage caused by .altmacro in fpsimd save/restore macros 2015-01-29 17:24:39 +00:00
ftrace.h
futex.h arm64: atomics: prefetch the destination word for write prior to stxr 2015-07-27 15:28:53 +01:00
hardirq.h arm64: Remove ununsed set_irq_flags 2015-09-16 16:53:39 +02:00
hugetlb.h arm64: hugetlb: remove paragraph about writing to FSF 2015-07-27 11:08:40 +01:00
hw_breakpoint.h arm64/debug: Make use of the system wide safe value 2015-10-21 15:35:59 +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 aarch64_{get,set}_branch_offset 2015-06-03 15:43:24 +01:00
io.h Revert "arm64: ioremap: add ioremap_cache macro" 2015-10-13 16:18:17 +01:00
irq_work.h arm64: force CONFIG_SMP=y and remove redundant #ifdefs 2015-07-27 11:08:40 +01:00
irq.h Power management and ACPI updates for v4.4-rc1 2015-11-04 18:10:13 -08:00
irqflags.h
jump_label.h locking/static_keys: Add a new static_key interface 2015-08-03 11:34:15 +02:00
kasan.h arm64: kasan: fix issues reported by sparse 2015-10-13 14:54:42 +01:00
Kbuild mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
kernel-pgtable.h arm64: Calculate size for idmap_pg_dir at compile time 2015-10-19 17:53:26 +01:00
kgdb.h
kvm_arm.h arm/arm64: KVM: Improve kvm_exit tracepoint 2015-10-22 23:01:47 +02:00
kvm_asm.h arm64: KVM: Remove all traces of the ThumbEE registers 2015-09-17 13:13:26 +01:00
kvm_coproc.h
kvm_emulate.h arm64: KVM: Correctly handle zero register during MMIO 2015-12-04 16:29:37 +00:00
kvm_host.h KVM: arm/arm64: implement kvm_arm_[halt,resume]_guest 2015-10-22 23:01:46 +02:00
kvm_mmio.h KVM: arm/arm64: rework MMIO abort handling to use KVM MMIO bus 2015-03-30 17:07:19 +01:00
kvm_mmu.h arm64 updates for 4.1: 2015-04-16 13:58:29 -05:00
kvm_psci.h
linkage.h
lse.h arm64: lse: rename ARM64_CPU_FEAT_LSE_ATOMICS for consistency 2015-07-27 15:28:54 +01:00
memblock.h
memory.h arm64 updates for 4.4: 2015-11-04 14:47:13 -08:00
mmu_context.h arm64: use non-global mappings for UEFI runtime regions 2015-11-18 09:40:20 +00:00
mmu.h arm64: mm: rewrite ASID allocator and MM context-switching code 2015-10-07 11:55:41 +01:00
module.h
neon.h
opcodes.h
page.h arm64: Add 16K page size support 2015-10-19 17:55:12 +01:00
pci.h ARM64 / ACPI: Introduce PCI stub functions for ACPI 2015-03-25 11:49:31 +00:00
percpu.h arm64: force CONFIG_SMP=y and remove redundant #ifdefs 2015-07-27 11:08:40 +01:00
perf_event.h arm64: perf: factor out callchain code 2015-07-27 11:08:39 +01:00
pgalloc.h arm64: move PGD_SIZE definition to pgalloc.h 2015-10-12 17:46:30 +01:00
pgtable-hwdef.h arm64: Introduce helpers for page table levels 2015-10-19 17:53:08 +01:00
pgtable-types.h arm64: expose number of page table levels on Kconfig level 2015-04-14 16:49:01 -07:00
pgtable.h arm64: Fix R/O permissions in mark_rodata_ro 2015-11-18 12:11:36 +00:00
proc-fns.h arm64: kill flush_cache_all() 2015-05-19 15:27:42 +01:00
processor.h arm64: Delay cpu feature capability checks 2015-10-21 15:35:58 +01:00
ptrace.h arm64: Fix compat register mappings 2015-10-29 16:55:15 +00:00
seccomp.h
shmparam.h
signal32.h
smp_plat.h arm64: remove dead-code depending on CONFIG_UP_LATE_INIT 2015-07-29 18:32:09 +01:00
smp.h arm64: force CONFIG_SMP=y and remove redundant #ifdefs 2015-07-27 11:08:40 +01:00
sparsemem.h
spinlock_types.h arm64: include linux/types.h in asm/spinlock_types.h 2015-07-27 11:09:34 +01:00
spinlock.h arm64: spinlock: fix ll/sc unlock on big-endian systems 2015-07-28 14:48:00 +01:00
stackprotector.h
stacktrace.h
stat.h
string.h arm64: add KASAN support 2015-10-12 17:46:36 +01:00
suspend.h arm64: kernel: rename __cpu_suspend to keep it aligned with arm 2015-06-19 14:46:39 +01:00
sync_bitops.h
syscall.h
sysreg.h arm64: Keep track of CPU feature registers 2015-10-21 15:35:37 +01:00
system_misc.h arm64: use private ratelimit state along with show_unhandled_signals 2015-06-19 16:26:15 +01:00
thread_info.h arm64: Add 16K page size support 2015-10-19 17:55:12 +01:00
timex.h
tlb.h arm64: tlbflush: avoid flushing when fullmm == 1 2015-10-07 11:56:21 +01:00
tlbflush.h arm64: tlb: remove redundant barrier from __flush_tlb_pgtable 2015-10-07 11:56:33 +01:00
topology.h arm64: force CONFIG_SMP=y and remove redundant #ifdefs 2015-07-27 11:08:40 +01:00
traps.h arm64: Add __exception_irq_entry definition for function graph 2015-08-12 17:23:45 +01:00
uaccess.h arm64: kernel: Add support for Privileged Access Never 2015-07-27 11:08:41 +01:00
unistd32.h arm64: compat: wire up new syscalls 2015-10-14 13:51:41 +01:00
unistd.h arm64: compat: wire up new syscalls 2015-10-14 13:51:41 +01:00
vdso_datapage.h
vdso.h
virt.h
word-at-a-time.h