VMID is a 8bit field in VTTBR, and the top bits are better left alone. Signed-off-by: Marc Zyngier <marc.zyngier at arm.com> --- arch/arm/kvm/arm.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/arch/arm/kvm/arm.c b/arch/arm/kvm/arm.c index 8dc723d..b402cd5 100644 --- a/arch/arm/kvm/arm.c +++ b/arch/arm/kvm/arm.c @@ -361,7 +361,7 @@ static void update_vttbr(struct kvm *kvm) pgd_phys = virt_to_phys(kvm->arch.pgd); kvm->arch.vttbr = pgd_phys & ((1LLU << 40) - 1) & ~((2 << VTTBR_X) - 1); - kvm->arch.vttbr |= kvm->arch.vmid << 48; + kvm->arch.vttbr |= (kvm->arch.vmid & VMID_MASK) << 48; } spin_unlock(&kvm_vmid_lock); -- 1.7.7.1