diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2009-12-17 06:27:56 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2009-12-17 06:27:56 +0000 |
commit | cf5e23f6c44689bcf1996cf890b1c61c6fdb89d0 (patch) | |
tree | 3adab80d2ce2331909586e3819de29f742851d29 /xen/include/asm-x86/mm.h | |
parent | 3e3ccc354377859506ad948df84572813204c99c (diff) | |
download | xen-cf5e23f6c44689bcf1996cf890b1c61c6fdb89d0.tar.gz xen-cf5e23f6c44689bcf1996cf890b1c61c6fdb89d0.tar.bz2 xen-cf5e23f6c44689bcf1996cf890b1c61c6fdb89d0.zip |
This patch establishes a new abstraction of sharing handles (encoded as a 64bit
int), each corresponding to a single sharable pages. Externally all sharing related
operations (e.g. nominate/share) will use sharing handles, thus solving a lot of
consistency problems (like: is this sharable page still the same sharable page
as before).
Internally, sharing handles can be translated to the MFNs (using a newly created
hashtable), and then for each MFNs a doubly linked list of GFNs translating to
this MFN is maintained. Finally, sharing handle is stored in page_info strucutre
for each sharable MFN.
All this allows to share and unshare pages efficiently. However, at the moment a
single lock is used to protect the sharing handle hash table. For scalability
reasons, the locking needs to be made more granular.
Signed-off-by: Grzegorz Milos <Grzegorz.Milos@citrix.com>
Diffstat (limited to 'xen/include/asm-x86/mm.h')
-rw-r--r-- | xen/include/asm-x86/mm.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h index 5c3ab88c3a..5f8aeb5d00 100644 --- a/xen/include/asm-x86/mm.h +++ b/xen/include/asm-x86/mm.h @@ -43,6 +43,8 @@ struct page_info struct page_list_entry list; /* For non-pinnable shadows, a higher entry that points at us. */ paddr_t up; + /* For shared/sharable pages the sharing handle */ + uint64_t shr_handle; }; /* Reference count and various PGC_xxx flags and fields. */ |