linux_dsm_epyc7002/arch/arm64/include/asm
Christoffer Dall 38f791a4e4 arm64: KVM: Implement 48 VA support for KVM EL2 and Stage-2
This patch adds the necessary support for all host kernel PGSIZE and
VA_SPACE configuration options for both EL2 and the Stage-2 page tables.

However, for 40bit and 42bit PARange systems, the architecture mandates
that VTCR_EL2.SL0 is maximum 1, resulting in fewer levels of stage-2
pagge tables than levels of host kernel page tables.  At the same time,
systems with a PARange > 42bit, we limit the IPA range by always setting
VTCR_EL2.T0SZ to 24.

To solve the situation with different levels of page tables for Stage-2
translation than the host kernel page tables, we allocate a dummy PGD
with pointers to our actual inital level Stage-2 page table, in order
for us to reuse the kernel pgtable manipulation primitives.  Reproducing
all these in KVM does not look pretty and unnecessarily complicates the
32-bit side.

Systems with a PARange < 40bits are not yet supported.

 [ I have reworked this patch from its original form submitted by
   Jungseok to take the architecture constraints into consideration.
   There were too many changes from the original patch for me to
   preserve the authorship.  Thanks to Catalin Marinas for his help in
   figuring out a good solution to this challenge.  I have also fixed
   various bugs and missing error code handling from the original
   patch. - Christoffer ]

Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Jungseok Lee <jungseoklee85@gmail.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
2014-10-14 05:48:19 -07:00
..
xen xen/arm64: do not call the swiotlb functions twice 2013-12-11 16:21:00 +00:00
arch_timer.h ARM64: arch_timer: add support to configure and enable event stream 2013-09-26 09:47:43 +01:00
asm-offsets.h arm64: Assembly macros and definitions 2012-09-17 10:24:44 +01:00
assembler.h arm64: debug: avoid accessing mdscr_el1 on fault paths where possible 2014-05-12 16:43:28 +01:00
atomic.h - Optimised assembly string/memory routines (based on the AArch64 Cortex 2014-06-06 10:43:28 -07:00
barrier.h - Optimised assembly string/memory routines (based on the AArch64 Cortex 2014-06-06 10:43:28 -07:00
bitops.h arch,arm64: Convert smp_mb__*() 2014-04-18 11:40:33 +02:00
cache.h arm64: Implement cache_line_size() based on CTR_EL0.CWG 2014-05-09 15:47:45 +01:00
cacheflush.h arm64: Fix barriers used for page table modifications 2014-07-24 10:25:42 +01:00
cachetype.h arm64: cachetype: report weakest cache policy 2014-07-18 15:24:10 +01:00
cmpxchg.h arm64: xchg: prevent warning if return value is unused 2014-05-09 17:00:00 +01:00
compat.h arm64: is_compat_task is defined both in asm/compat.h and linux/compat.h 2014-05-12 16:43:29 +01:00
compiler.h arm64: Miscellaneous header files 2012-09-17 13:42:21 +01:00
cpu_ops.h ARM: Check if a CPU has gone offline 2014-05-15 10:16:30 -04:00
cpu.h arm64: cpuinfo: record cpu system register values 2014-07-18 15:24:09 +01:00
cpufeature.h arm64: enable generic CPU feature modalias matching for this architecture 2014-03-14 18:01:36 +00:00
cputable.h arm64: CPU support 2012-09-17 13:41:59 +01:00
cputype.h arm64: add MIDR_EL1 field accessors 2014-07-18 15:24:08 +01:00
debug-monitors.h arm64: move DBG_MDSCR_* to asm/debug-monitors.h 2014-07-11 04:57:43 -07:00
device.h arm64: device: add iommu pointer to device archdata 2013-06-11 18:15:55 +01:00
dma-contiguous.h arm64: fix build error if DMA_CMA is enabled 2014-01-27 12:00:25 +00:00
dma-mapping.h arm64/dma: Removing ARCH_HAS_DMA_GET_REQUIRED_MASK macro 2014-06-18 12:41:30 +01:00
efi.h efi/arm64: efistub: Move shared dependencies to <asm/efi.h> 2014-07-07 20:29:47 +01:00
elf.h arm64: compat: add support for big-endian (BE8) AArch32 binaries 2013-10-25 15:59:35 +01:00
esr.h arm64: Provide read/write fault information in compat signal handlers 2014-05-09 15:47:47 +01:00
exception.h arm64: Use irqchip_init() for interrupt controller initialisation 2013-03-26 16:02:23 +00:00
exec.h arm64: Miscellaneous header files 2012-09-17 13:42:21 +01:00
fb.h arm64: Device specific operations 2012-09-17 13:42:04 +01:00
fixmap.h arm64: add early_ioremap support 2014-04-07 16:36:15 -07:00
fpsimd.h arm64: add support for kernel mode NEON in interrupt context 2014-05-08 11:31:57 +02:00
fpsimdmacros.h arm64: fpsimd: avoid restoring fpcr if the contents haven't changed 2014-07-18 10:21:17 +01:00
ftrace.h arm64: ftrace: Add system call tracepoint 2014-05-29 09:08:33 +01:00
futex.h arm64: asm: remove redundant "cc" clobbers 2014-02-07 16:46:07 +00:00
hardirq.h arm64: Support arch_irq_work_raise() via self IPIs 2014-05-16 17:42:21 +01:00
hugetlb.h ARM64: mm: HugeTLB support. 2013-06-14 09:52:40 +01:00
hw_breakpoint.h arm64: Debugging support 2012-09-17 13:42:14 +01:00
hwcap.h arm64: advertise ARMv8 extensions to 32-bit compat ELF binaries 2014-03-04 08:06:32 +00:00
hypervisor.h arm64/xen: introduce asm/xen header files on arm64 2013-06-07 10:39:45 +00:00
insn.h arm64: add __ASSEMBLY__ in asm/insn.h 2014-05-29 09:04:31 +01:00
io.h arm64: Clean up the default pgprot setting 2014-05-09 15:53:37 +01:00
irq.h arm64: add CPU_HOTPLUG infrastructure 2013-10-25 11:33:21 +01:00
irqflags.h arm64: Add macros to manage processor debug state 2014-02-26 11:16:25 +00:00
jump_label.h arm64, jump label: optimize jump label implementation 2014-01-08 15:23:53 +00:00
Kbuild arm64: uid16: fix __kernel_old_{gid,uid}_t definitions 2014-06-18 12:41:09 +01:00
kgdb.h arm64: KGDB: Add Basic KGDB support 2014-02-26 11:16:25 +00:00
kvm_arm.h arm/arm64: KVM: Fix VTTBR_BADDR_MASK and pgd alloc 2014-09-26 14:39:13 +02:00
kvm_asm.h arm64: KVM: add trap handlers for AArch32 debug registers 2014-07-11 04:57:45 -07:00
kvm_coproc.h arm64: KVM: common infrastructure for handling AArch32 CP14/CP15 2014-07-11 04:57:44 -07:00
kvm_emulate.h arm/arm64: KVM: Report correct FSC for unsupported fault types 2014-09-26 14:39:45 +02:00
kvm_host.h Merge remote-tracking branch 'kvm/next' into queue 2014-09-18 18:15:32 -07:00
kvm_mmio.h arm64: KVM: MMIO access backend 2013-06-07 14:03:38 +01:00
kvm_mmu.h arm64: KVM: Implement 48 VA support for KVM EL2 and Stage-2 2014-10-14 05:48:19 -07: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 arm64: fix alignment padding in assembly code 2012-10-20 11:12:01 +01:00
memblock.h arm64: MMU initialisation 2012-09-17 13:41:56 +01:00
memory.h arm64 updates for 3.17 2014-08-04 12:31:53 -07:00
mmu_context.h arm64: mm: don't bother invalidating the icache in switch_mm 2013-06-07 18:00:11 +01:00
mmu.h Merge branch 'arm64-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into next 2014-06-05 13:15:32 -07:00
module.h arm64: Loadable modules 2012-09-17 13:42:19 +01:00
neon.h arm64: add support for kernel mode NEON in interrupt context 2014-05-08 11:31:57 +02:00
page.h arm64,ia64,ppc,s390,sh,tile,um,x86,mm: remove default gate area 2014-08-08 15:57:27 -07:00
percpu.h arm64: Fix !CONFIG_SMP kernel build 2014-02-28 16:12:25 +00:00
perf_event.h arm64: perf: add guest vs host discrimination 2013-01-29 16:56:17 +00:00
pgalloc.h arm64: Convert bool ARM64_x_LEVELS to int ARM64_PGTABLE_LEVELS 2014-07-23 15:27:46 +01:00
pgtable-hwdef.h arm64: Remove asm/pgtable-*level-hwdef.h files 2014-07-23 15:27:51 +01:00
pgtable-types.h arm64: Remove asm/pgtable-*level-types.h files 2014-07-23 15:27:56 +01:00
pgtable.h arm64: kvm: define PAGE_S2_DEVICE as read-only by default 2014-10-10 13:07:38 +02:00
pmu.h arm64: Performance counters support 2012-09-17 13:42:17 +01:00
proc-fns.h arm64: kernel: suspend/resume registers save/restore 2013-12-16 17:17:31 +00:00
processor.h Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-08-04 16:09:06 -07:00
psci.h PSCI: Add initial support for PSCIv0.2 functions 2014-05-15 10:16:00 -04:00
ptrace.h arm64: fix el2_setup check of CurrentEL 2014-07-04 16:16:52 +01:00
shmparam.h arm64: ELF definitions 2012-09-17 13:42:07 +01:00
signal32.h arm64: Use get_signal() signal_setup_done() 2014-08-06 12:56:16 +02:00
smp_plat.h arm64: kernel: build MPIDR_EL1 hash function data structure 2013-12-16 17:17:30 +00:00
smp.h arm64: add CPU_HOTPLUG infrastructure 2013-10-25 11:33:21 +01:00
sparsemem.h arm64: MMU definitions 2012-09-17 13:41:56 +01:00
spinlock_types.h arm64: Fix the endianness of arch_spinlock_t 2013-10-25 16:10:22 +01:00
spinlock.h arm64: asm: remove redundant "cc" clobbers 2014-02-07 16:46:07 +00:00
stackprotector.h arm64: Add CONFIG_CC_STACKPROTECTOR 2014-07-09 12:23:48 +01:00
stacktrace.h arm64: Exception handling 2012-09-17 10:24:46 +01:00
stat.h UAPI: (Scripted) Disintegrate arch/arm64/include/asm 2012-10-11 11:05:13 +01:00
string.h arm64: lib: Implement optimized string length routines 2014-05-23 15:17:12 +01:00
suspend.h arm64: kernel: cpu_{suspend/resume} implementation 2013-12-16 17:17:31 +00: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
syscalls.h arm64: switch to generic sigaltstack 2013-02-14 09:17:29 -05:00
sysreg.h arm64: gicv3: Allow GICv3 compilation with older binutils 2014-07-25 13:12:15 +01:00
system_misc.h arm64: use common reboot infrastructure 2013-07-19 15:57:08 +01:00
thread_info.h arm64: enable context tracking 2014-07-10 10:10:21 +01:00
timex.h arm64: kernel: compiling issue, need delete read_current_timer() 2013-06-10 17:58:20 +01:00
tlb.h arm64: Convert bool ARM64_x_LEVELS to int ARM64_PGTABLE_LEVELS 2014-07-23 15:27:46 +01:00
tlbflush.h arm64: fix soft lockup due to large tlb flush range 2014-07-24 18:41:13 +01:00
topology.h arm64: sched: Remove unused mc_capable() and smt_capable() 2014-05-16 17:12:04 +01:00
traps.h arm64: Exception handling 2012-09-17 10:24:46 +01:00
uaccess.h arm64: Fix __range_ok macro 2014-03-20 17:41:27 +00:00
ucontext.h arm64: fix padding computation in struct ucontext 2013-03-18 10:42:16 +00:00
unistd32.h arm64: Add __NR_* definitions for compat syscalls 2014-07-10 11:02:40 +01:00
unistd.h arm64: Add __NR_* definitions for compat syscalls 2014-07-10 11:02:40 +01:00
vdso_datapage.h arm64: VDSO support 2012-09-17 13:42:09 +01:00
vdso.h arm64: VDSO support 2012-09-17 13:42:09 +01:00
virt.h arm64: KVM: remove __kvm_hyp_code_{start,end} from hyp.S 2014-07-11 04:57:35 -07:00
word-at-a-time.h arm64: dcache: select DCACHE_WORD_ACCESS for little-endian CPUs 2013-12-19 17:43:08 +00:00