On Fri, Dec 9, 2022 at 2:22 PM David Matlack <dmatlack@xxxxxxxxxx> 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@xxxxxxxxxx> > > --- > [...] > > 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.