Hi Catalin. The following two patches address your concerns regarding the page table setup for the initialization code. The first patch prepares the interface to use identity_mapping_add and the second patch contains the latest version of the hypervisor initialization code. I also have a set of other patches containing the general skeleton and the world switch implementation, which I can forward if you would like to see the bigger picture already. There is some sort of problem with this code, since the translations made in Hyp mode are somehow incorrect. I have tried parsing the page tables starting at HTTBR and using T0SZ==0 manually and I have looked over the LPAE specification several times, but I haven't been able to pin-point the problem. Please help :) --- Christoffer Dall (2): ARM: Hypervisor identity mapping ARM: KVM: Add hypervisor inititalization arch/arm/include/asm/kvm.h | 1 arch/arm/include/asm/kvm_arm.h | 80 ++++++++++++++++++ arch/arm/include/asm/kvm_asm.h | 12 +++ arch/arm/include/asm/pgtable-3level-hwdef.h | 1 arch/arm/include/asm/pgtable.h | 5 + arch/arm/kvm/arm.c | 122 +++++++++++++++++++++++++-- arch/arm/kvm/arm_interrupts.S | 94 +++++++++++++++++++++ arch/arm/mm/idmap.c | 47 ++++++++++ 8 files changed, 353 insertions(+), 9 deletions(-) create mode 100644 arch/arm/include/asm/kvm_arm.h -- Thanks, Christoffer