lkml.org 
[lkml]   [2022]   [Dec]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH 1/7] KVM: x86/MMU: Move pte_list operations to rmap.c
    On Fri, Dec 9, 2022 at 2:22 PM David Matlack <dmatlack@google.com> wrote:
    >
    > 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.

    Right, good point. I'll fix that in the next edition.

    \
     
     \ /
      Last update: 2022-12-14 01:10    [W:3.917 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site