lkml.org 
[lkml]   [2022]   [Dec]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH 1/7] KVM: x86/MMU: Move pte_list operations to rmap.c
    On Tue, Dec 06, 2022 at 05:35:55PM +0000, Ben Gardon wrote:
    > In the interest of eventually splitting the Shadow MMU out of mmu.c,
    > start by moving some of the operations for manipulating pte_lists out of
    > mmu.c and into a new pair of files: rmap.c and rmap.h.
    >
    > No functional change intended.
    >
    > Signed-off-by: Ben Gardon <bgardon@google.com>
    > ---
    [...]
    > diff --git a/arch/x86/kvm/mmu/rmap.h b/arch/x86/kvm/mmu/rmap.h
    > new file mode 100644
    > index 000000000000..059765b6e066
    > --- /dev/null
    > +++ b/arch/x86/kvm/mmu/rmap.h
    > @@ -0,0 +1,34 @@
    > +// SPDX-License-Identifier: GPL-2.0
    > +
    > +#ifndef __KVM_X86_MMU_RMAP_H
    > +#define __KVM_X86_MMU_RMAP_H
    > +
    > +#include <linux/kvm_host.h>
    > +
    > +/* make pte_list_desc fit well in cache lines */
    > +#define PTE_LIST_EXT 14
    > +
    > +/*
    > + * Slight optimization of cacheline layout, by putting `more' and `spte_count'
    > + * at the start; then accessing it will only use one single cacheline for
    > + * either full (entries==PTE_LIST_EXT) case or entries<=6.
    > + */
    > +struct pte_list_desc {
    > + struct pte_list_desc *more;
    > + /*
    > + * Stores number of entries stored in the pte_list_desc. No need to be
    > + * u64 but just for easier alignment. When PTE_LIST_EXT, means full.
    > + */
    > + u64 spte_count;
    > + u64 *sptes[PTE_LIST_EXT];
    > +};
    > +
    > +static struct kmem_cache *pte_list_desc_cache;
    The definition of pte_list_desc_cache needs to go in a C file since it's
    a global variable. Since it now needs to be accessed by more than once C
    file, drop the static. Then it can be accessed with extern.

    Since most of the code that sets up and deals with pte_list_desc_cache
    is still in mmu.c, my vote is to keep the definition there.

    i.e.

    mmu.c:

    struct kmem_cache *pte_list_desc_cache;

    rmap.c

    extern struct kmem_cache *pte_list_desc_cache;

    And no need for anything in rmap.h.

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