linux-brain/arch/arm64/include/asm
Kristina Martsenko 63fba9ff76 arm64: KVM: fix VTTBR_BADDR_MASK BUG_ON off-by-one
commit 26aa7b3b1c upstream.

VTTBR_BADDR_MASK is used to sanity check the size and alignment of the
VTTBR address. It seems to currently be off by one, thereby only
allowing up to 47-bit addresses (instead of 48-bit) and also
insufficiently checking the alignment. This patch fixes it.

As an example, with 4k pages, before this patch we have:

  PHYS_MASK_SHIFT = 48
  VTTBR_X = 37 - 24 = 13
  VTTBR_BADDR_SHIFT = 13 - 1 = 12
  VTTBR_BADDR_MASK = ((1 << 35) - 1) << 12 = 0x00007ffffffff000

Which is wrong, because the mask doesn't allow bit 47 of the VTTBR
address to be set, and only requires the address to be 12-bit (4k)
aligned, while it actually needs to be 13-bit (8k) aligned because we
concatenate two 4k tables.

With this patch, the mask becomes 0x0000ffffffffe000, which is what we
want.

Fixes: 0369f6a34b ("arm64: KVM: EL2 register definitions")
Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Kristina Martsenko <kristina.martsenko@arm.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-12-14 09:28:14 +01:00
..
xen ARM64: XEN: Add a function to initialize Xen specific UEFI runtime services 2016-07-06 10:34:46 +01:00
acenv.h ARM64 / ACPI: Get RSDP and ACPI boot-time tables 2015-03-25 11:49:30 +00:00
acpi.h ARM64/ACPI: Fix BAD_MADT_GICC_ENTRY() macro implementation 2017-07-05 14:40:29 +02:00
alternative.h arm64: Fix circular include of asm/lse.h through linux/jump_label.h 2016-11-05 20:59:06 +00: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 arm-cci: Get rid of secure transactions for PMU driver 2015-03-27 13:44:35 +00:00
asm-offsets.h
asm-uaccess.h arm64: entry: improve data abort handling of tagged pointers 2017-06-14 15:06:05 +02:00
assembler.h arm64: assembler: make adr_l work in modules under KASLR 2017-07-05 14:40:25 +02: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: ensure extension of smp_store_release value 2017-05-25 15:44:45 +02:00
bitops.h arch,arm64: Convert smp_mb__*() 2014-04-18 11:40:33 +02:00
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: 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: xchg: hazard against entire exchange variable 2017-05-25 15:44:44 +02: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: cpuinfo: Expose MIDR_EL1 and REVIDR_EL1 to sysfs 2016-07-12 16:09:37 +01:00
cpucaps.h arm64: Fix circular include of asm/lse.h through linux/jump_label.h 2016-11-05 20:59:06 +00:00
cpufeature.h arm64: Fix circular include of asm/lse.h through linux/jump_label.h 2016-11-05 20:59:06 +00: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: 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 arm64: introduce is_device_dma_coherent 2014-12-04 12:41:49 +00:00
dma-mapping.h arm64: Allow for different DMA and CPU bus offsets 2016-06-06 13:48:54 -07:00
dmi.h arm64: dmi: Add SMBIOS/DMI support 2014-11-05 09:03:25 +01:00
efi.h arm64 updates for 4.8: 2016-07-27 11:16:05 -07:00
elf.h mm: revert x86_64 and arm64 ELF_ET_DYN_BASE base changes 2017-08-24 17:12:20 -07: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 arm64: add support for kernel mode NEON in interrupt context 2014-05-08 11:31:57 +02:00
fpsimdmacros.h arm64: Avoid breakage caused by .altmacro in fpsimd save/restore macros 2015-01-29 17:24:39 +00:00
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 arm64/xen: introduce asm/xen header files on arm64 2013-06-07 10:39:45 +00:00
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 arm64: force CONFIG_SMP=y and remove redundant #ifdefs 2015-07-27 11:08:40 +01:00
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 locking/static_keys: Add a new static_key interface 2015-08-03 11:34:15 +02:00
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: fix VTTBR_BADDR_MASK BUG_ON off-by-one 2017-12-14 09:28:14 +01: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 arm64: KVM: common infrastructure for handling AArch32 CP14/CP15 2014-07-11 04:57:44 -07:00
kvm_emulate.h arm64: KVM: Fix decoding of Rt/Rt2 when trapping AArch32 CP accesses 2017-05-20 14:28:36 +02: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: Enforce unconditional flush to PoC when mapping to stage-2 2017-03-12 06:41:47 +01:00
kvm_psci.h ARM/ARM64: KVM: Make kvm_psci_call() return convention more flexible 2014-04-30 04:18:57 -07:00
linkage.h
lse.h arm64: Fix circular include of asm/lse.h through linux/jump_label.h 2016-11-05 20:59:06 +00:00
memblock.h
memory.h arm64: mm: avoid name clash in __page_to_voff() 2017-01-26 08:24:43 +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 arm64: add support for kernel mode NEON in interrupt context 2014-05-08 11:31:57 +02:00
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 KVM: arm64: Fix the issues when guest PMCCFILTR is configured 2016-11-18 09:06:58 +00: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: Implement arch-specific pte_access_permitted() 2017-11-30 08:39:01 +00:00
probes.h arm64: kprobes instruction simulation support 2016-07-19 15:03:21 +01:00
proc-fns.h arm64: kill flush_cache_all() 2015-05-19 15:27:42 +01:00
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 arm64: add seccomp support 2014-11-28 10:24:59 +00:00
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 arm64: Use get_signal() signal_setup_done() 2014-08-06 12:56:16 +02:00
smp_plat.h arm64: remove dead-code depending on CONFIG_UP_LATE_INIT 2015-07-29 18:32:09 +01:00
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 arm64: mm: update max pa bits to 48 2014-08-19 20:23:02 +01:00
spinlock_types.h arm64: include linux/types.h in asm/spinlock_types.h 2015-07-27 11:09:34 +01:00
spinlock.h arm64 updates for 4.9: 2016-10-03 08:58:35 -07:00
stackprotector.h arm64: Add CONFIG_CC_STACKPROTECTOR 2014-07-09 12:23:48 +01:00
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 arm64/xen: introduce asm/xen header files on arm64 2013-06-07 10:39:45 +00:00
syscall.h arm64: Add audit support 2014-07-10 11:06:00 +01:00
sysreg.h arm64: KVM: Preserve RES1 bits in SCTLR_EL2 2017-06-14 15:05:56 +02: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 arm64: kernel: compiling issue, need delete read_current_timer() 2013-06-10 17:58:20 +01:00
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: hw_breakpoint: fix watchpoint matching for tagged pointers 2017-06-14 15:06:05 +02:00
unistd.h arm64: unistd32.h: wire up missing syscalls for compat tasks 2016-06-01 18:48:20 +01:00
unistd32.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