lkml.org 
[lkml]   [2020]   [Nov]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.9 061/252] selftests: kvm: Fix the segment descriptor layout to match the actual layout
    Date
    From: Aaron Lewis <aaronlewis@google.com>

    [ Upstream commit df11f7dd5834146defa448acba097e8d7703cc42 ]

    Fix the layout of 'struct desc64' to match the layout described in the
    SDM Vol 3, Chapter 3 "Protected-Mode Memory Management", section 3.4.5
    "Segment Descriptors", Figure 3-8 "Segment Descriptor". The test added
    later in this series relies on this and crashes if this layout is not
    correct.

    Signed-off-by: Aaron Lewis <aaronlewis@google.com>
    Reviewed-by: Alexander Graf <graf@amazon.com>
    Message-Id: <20201012194716.3950330-2-aaronlewis@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/testing/selftests/kvm/include/x86_64/processor.h | 2 +-
    tools/testing/selftests/kvm/lib/x86_64/processor.c | 3 ++-
    2 files changed, 3 insertions(+), 2 deletions(-)

    diff --git a/tools/testing/selftests/kvm/include/x86_64/processor.h b/tools/testing/selftests/kvm/include/x86_64/processor.h
    index 82b7fe16a8242..0a65e7bb5249e 100644
    --- a/tools/testing/selftests/kvm/include/x86_64/processor.h
    +++ b/tools/testing/selftests/kvm/include/x86_64/processor.h
    @@ -59,7 +59,7 @@ struct gpr64_regs {
    struct desc64 {
    uint16_t limit0;
    uint16_t base0;
    - unsigned base1:8, s:1, type:4, dpl:2, p:1;
    + unsigned base1:8, type:4, s:1, dpl:2, p:1;
    unsigned limit1:4, avl:1, l:1, db:1, g:1, base2:8;
    uint32_t base3;
    uint32_t zero1;
    diff --git a/tools/testing/selftests/kvm/lib/x86_64/processor.c b/tools/testing/selftests/kvm/lib/x86_64/processor.c
    index f6eb34eaa0d22..1ccf6c9b3476d 100644
    --- a/tools/testing/selftests/kvm/lib/x86_64/processor.c
    +++ b/tools/testing/selftests/kvm/lib/x86_64/processor.c
    @@ -392,11 +392,12 @@ static void kvm_seg_fill_gdt_64bit(struct kvm_vm *vm, struct kvm_segment *segp)
    desc->limit0 = segp->limit & 0xFFFF;
    desc->base0 = segp->base & 0xFFFF;
    desc->base1 = segp->base >> 16;
    - desc->s = segp->s;
    desc->type = segp->type;
    + desc->s = segp->s;
    desc->dpl = segp->dpl;
    desc->p = segp->present;
    desc->limit1 = segp->limit >> 16;
    + desc->avl = segp->avl;
    desc->l = segp->l;
    desc->db = segp->db;
    desc->g = segp->g;
    --
    2.27.0


    \
     
     \ /
      Last update: 2020-11-23 14:09    [W:4.054 / U:0.772 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site