lkml.org 
[lkml]   [2021]   [Mar]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[PATCH v3 25/32] KVM: arm64: Sort the hypervisor memblocks
    From
    We will soon need to check if a Physical Address belongs to a memblock
    at EL2, so make sure to sort them so this can be done efficiently.

    Signed-off-by: Quentin Perret <qperret@google.com>
    ---
    arch/arm64/kvm/hyp/reserved_mem.c | 19 +++++++++++++++++++
    1 file changed, 19 insertions(+)

    diff --git a/arch/arm64/kvm/hyp/reserved_mem.c b/arch/arm64/kvm/hyp/reserved_mem.c
    index fd42705a3c26..83ca23ac259b 100644
    --- a/arch/arm64/kvm/hyp/reserved_mem.c
    +++ b/arch/arm64/kvm/hyp/reserved_mem.c
    @@ -6,6 +6,7 @@

    #include <linux/kvm_host.h>
    #include <linux/memblock.h>
    +#include <linux/sort.h>

    #include <asm/kvm_host.h>

    @@ -18,6 +19,23 @@ static unsigned int *hyp_memblock_nr_ptr = &kvm_nvhe_sym(hyp_memblock_nr);
    phys_addr_t hyp_mem_base;
    phys_addr_t hyp_mem_size;

    +static int cmp_hyp_memblock(const void *p1, const void *p2)
    +{
    + const struct memblock_region *r1 = p1;
    + const struct memblock_region *r2 = p2;
    +
    + return r1->base < r2->base ? -1 : (r1->base > r2->base);
    +}
    +
    +static void __init sort_memblock_regions(void)
    +{
    + sort(hyp_memory,
    + *hyp_memblock_nr_ptr,
    + sizeof(struct memblock_region),
    + cmp_hyp_memblock,
    + NULL);
    +}
    +
    static int __init register_memblock_regions(void)
    {
    struct memblock_region *reg;
    @@ -29,6 +47,7 @@ static int __init register_memblock_regions(void)
    hyp_memory[*hyp_memblock_nr_ptr] = *reg;
    (*hyp_memblock_nr_ptr)++;
    }
    + sort_memblock_regions();

    return 0;
    }
    --
    2.30.1.766.gb4fecdf3b7-goog
    \
     
     \ /
      Last update: 2021-03-02 18:33    [W:2.281 / U:0.312 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site