Anton Romanov reports the following: AS arch/arm/kvm/interrupts.o /tmp/ccw2DnTo.s: Assembler messages: /tmp/ccw2DnTo.s: Error: bad immediate value for 8-bit offset (256) which is due to the vttbr field being out of reach from an ldrd instruction for some random configuration. Two workaround are implemented in this patch: - move the fields accessed by the assembly code towards the beginning of the structure, - use an add instead of an immediate indexing to load vttbr. Reported-by: Anton Romanov <theli.ua@xxxxxxxxx> Signed-off-by: Marc Zyngier <marc.zyngier@xxxxxxx> --- arch/arm/include/asm/kvm_host.h | 17 +++++++++++------ arch/arm/kvm/interrupts.S | 3 ++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h index 4e2cd67..149c92a 100644 --- a/arch/arm/include/asm/kvm_host.h +++ b/arch/arm/include/asm/kvm_host.h @@ -45,6 +45,17 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu); void kvm_reset_coprocs(struct kvm_vcpu *vcpu); struct kvm_arch { + /* VTTBR value associated with below pgd and vmid */ + u64 vttbr; + + /* Timer */ + struct arch_timer_kvm timer; + + /* + * Anything that is not used directly from assembly code goes + * here. + */ + /* The VMID generation used for the virt. memory system */ u64 vmid_gen; u32 vmid; @@ -52,14 +63,8 @@ struct kvm_arch { /* Stage-2 page table */ pgd_t *pgd; - /* VTTBR value associated with above pgd and vmid */ - u64 vttbr; - /* Interrupt controller */ struct vgic_dist vgic; - - /* Timer */ - struct arch_timer_kvm timer; }; #define KVM_NR_MEM_OBJS 40 diff --git a/arch/arm/kvm/interrupts.S b/arch/arm/kvm/interrupts.S index 775b29d..e08a985 100644 --- a/arch/arm/kvm/interrupts.S +++ b/arch/arm/kvm/interrupts.S @@ -126,7 +126,8 @@ ENTRY(__kvm_vcpu_run) @ Set up guest memory translation ldr r1, [r0, #VCPU_KVM] - ldrd r2, r3, [r1, #KVM_VTTBR] + add r1, r1, #KVM_VTTBR + ldrd r2, r3, [r1] mcrr p15, 6, r2, r3, c2 @ Write VTTBR @ At this point, r0 must contain the pointer to the VCPU -- 1.7.12 _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm