OpenCloudOS-Kernel/arch/arm/kvm
Marc Zyngier 04b8dc85bf arm64: KVM: Do not use pgd_index to index stage-2 pgd
The kernel's pgd_index macro is designed to index a normal, page
sized array. KVM is a bit diffferent, as we can use concatenated
pages to have a bigger address space (for example 40bit IPA with
4kB pages gives us an 8kB PGD.

In the above case, the use of pgd_index will always return an index
inside the first 4kB, which makes a guest that has memory above
0x8000000000 rather unhappy, as it spins forever in a page fault,
whist the host happilly corrupts the lower pgd.

The obvious fix is to get our own kvm_pgd_index that does the right
thing(tm).

Tested on X-Gene with a hacked kvmtool that put memory at a stupidly
high address.

Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
2015-03-11 14:24:36 +01:00
..
Kconfig Fairly small update, but there are some interesting new features. 2015-02-13 09:55:09 -08:00
Makefile arm/arm64: KVM: split GICv2 specific emulation code from vgic.c 2015-01-20 18:25:30 +01:00
arm.c arm/arm64: KVM: Add exit reaons to kvm_exit event tracing 2015-02-23 22:28:48 +01:00
coproc.c arm/arm64: KVM: Use set/way op trapping to track the state of the caches 2015-01-29 23:24:56 +01:00
coproc.h arm/arm64: KVM: Use set/way op trapping to track the state of the caches 2015-01-29 23:24:56 +01:00
coproc_a7.c arm/arm64: KVM: Use set/way op trapping to track the state of the caches 2015-01-29 23:24:56 +01:00
coproc_a15.c arm/arm64: KVM: Use set/way op trapping to track the state of the caches 2015-01-29 23:24:56 +01:00
emulate.c KVM: ARM: Fix typo in comments of inject_abt() 2013-10-02 17:29:19 +01:00
guest.c arm/arm64: KVM: Clarify KVM_ARM_VCPU_INIT ABI 2014-12-13 14:15:26 +01:00
handle_exit.c ARM: KVM: extend WFI tracepoint to differentiate between wfi and wfe 2015-01-15 13:12:27 +01:00
init.S ARM/ARM64: KVM: Nuke Hyp-mode tlbs before enabling MMU 2014-08-29 11:53:26 +02:00
interrupts.S KVM: arm: Add ARMv7 API to flush TLBs 2015-01-16 14:40:14 +01:00
interrupts_head.S arm/arm64: KVM: Fix BE accesses to GICv2 EISR and ELRSR regs 2014-10-16 10:57:41 +02:00
mmio.c arm/arm64: KVM: avoid unnecessary guest register mangling on MMIO read 2014-11-25 13:57:28 +00:00
mmu.c arm64: KVM: Do not use pgd_index to index stage-2 pgd 2015-03-11 14:24:36 +01:00
perf.c ARM: KVM: add support for minimal host vs guest profiling 2013-04-28 21:44:01 -07:00
psci.c arm/arm64: KVM: rework MPIDR assignment and add accessors 2015-01-20 18:25:17 +01:00
reset.c Updates for KVM/ARM, take 3 supporting more than 4 CPUs. 2013-11-11 12:02:27 +01:00
trace.h arm/arm64: KVM: Add exit reaons to kvm_exit event tracing 2015-02-23 22:28:48 +01:00