[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. I was wary that accessing the pointer directly might be unsafe if the domain is gone, and it was better to search the domain on a list when we needed to. Other stuff will fix Andres > > > 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 |