[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 01 of 12] x86/mm: Eliminate hash table in sharing code as index of shared mfns
Hi, This seems basically fine; it's a logical progression from the interface changes. A few comments inline below. One other thing I noticed, which is independent of this patch, really: I'm not sure that having a domain ID in the gfn_info is the right thing to do. It seems like we could just carry a domain pointer. At 21:56 -0500 on 15 Jan (1326664581), Andres Lagar-Cavilla wrote: > The hashtable mechanism used by the sharing code is a bit odd. It seems > unnecessary and adds complexity. I think that's a bit harsh, since you removed its main use yourself! :) > Instead, we replace this by storing a list > head directly in the page info for the case when the page is shared. This > does > not add any extra space to the page_info and serves to remove significant > complexity from sharing. > > Signed-off-by: Adin Scannell <adin@xxxxxxxxxxx> > Signed-off-by: Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx> > > diff -r 302a58874eb1 -r 2a4112172e44 xen/arch/x86/mm/mem_sharing.c > --- a/xen/arch/x86/mm/mem_sharing.c > +++ b/xen/arch/x86/mm/mem_sharing.c > @@ -3,6 +3,7 @@ > * > * Memory sharing support. > * > + * Copyright (c) 2011 GridCentric, Inc. (Adin Scannell & Andres > Lagar-Cavilla) > * Copyright (c) 2009 Citrix Systems, Inc. (Grzegorz Milos) > * > * This program is free software; you can redistribute it and/or modify > @@ -34,15 +35,30 @@ > > #include "mm-locks.h" > > -/* Auditing of memory sharing code? */ > -#define MEM_SHARING_AUDIT 0 > - > #if MEM_SHARING_AUDIT > -static void mem_sharing_audit(void); > +static int mem_sharing_audit(void); Hmmm. You haven't made any of the callers use this new return value. :( Better to leave it as it was. > struct page_info > { > union { > @@ -49,8 +51,13 @@ struct page_info > /* For non-pinnable single-page shadows, a higher entry that points > * at us. */ > paddr_t up; > - /* For shared/sharable pages the sharing handle */ > - uint64_t shr_handle; > + /* For shared/sharable pages, we use a doubly-linked list > + * of all the {pfn,domain} pairs that map this page. We also include > + * an opaque handle, which is effectively a version, so that clients > + * of sharing share the version they expect to. > + * This list is allocated and freed when a page is shared/unshared. > + */ > + struct page_sharing_info *shared_info; Can you call this field 'sharing' instead? 'shared-info' makes me think of the per-domain shared_info page, and tripped me up a few times reading this patch. :) Cheers, Tim. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |