lkml.org 
[lkml]   [2014]   [Jun]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.10 29/52] MIPS: KVM: Allocate at least 16KB for exception handlers
    Date
    3.10-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: James Hogan <james.hogan@imgtec.com>

    commit 7006e2dfda9adfa40251093604db76d7e44263b3 upstream.

    Each MIPS KVM guest has its own copy of the KVM exception vector. This
    contains the TLB refill exception handler at offset 0x000, the general
    exception handler at offset 0x180, and interrupt exception handlers at
    offset 0x200 in case Cause_IV=1. A common handler is copied to offset
    0x2000 and offset 0x3000 is used for temporarily storing k1 during entry
    from guest.

    However the amount of memory allocated for this purpose is calculated as
    0x200 rounded up to the next page boundary, which is insufficient if 4KB
    pages are in use. This can lead to the common handler at offset 0x2000
    being overwritten and infinitely recursive exceptions on the next exit
    from the guest.

    Increase the minimum size from 0x200 to 0x4000 to cover the full use of
    the page.

    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Gleb Natapov <gleb@kernel.org>
    Cc: kvm@vger.kernel.org
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: Sanjay Lal <sanjayl@kymasys.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/mips/kvm/kvm_mips.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/arch/mips/kvm/kvm_mips.c
    +++ b/arch/mips/kvm/kvm_mips.c
    @@ -299,7 +299,7 @@ struct kvm_vcpu *kvm_arch_vcpu_create(st
    if (cpu_has_veic || cpu_has_vint) {
    size = 0x200 + VECTORSPACING * 64;
    } else {
    - size = 0x200;
    + size = 0x4000;
    }

    /* Save Linux EBASE */



    \
     
     \ /
      Last update: 2014-06-24 20:01    [W:4.123 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site