diff options
author | Tim Deegan <Tim.Deegan@citrix.com> | 2010-09-01 11:23:48 +0100 |
---|---|---|
committer | Tim Deegan <Tim.Deegan@citrix.com> | 2010-09-01 11:23:48 +0100 |
commit | 1c7493f10008fcd0aa7a168b05e9119a783278fb (patch) | |
tree | 7dbbb49d1ed726ccfb8b2348b499a4b4e82c5cab /xen/include/asm-x86/mm.h | |
parent | c385d270797442a05bdbcd4791834f042df7c137 (diff) | |
download | xen-1c7493f10008fcd0aa7a168b05e9119a783278fb.tar.gz xen-1c7493f10008fcd0aa7a168b05e9119a783278fb.tar.bz2 xen-1c7493f10008fcd0aa7a168b05e9119a783278fb.zip |
x86 shadow: explicitly link the pages of multipage shadows
together using their list headers. Update the users of the
pinned-shadows list to expect l2_32 shadows to have four entries
in the list, which must be kept together during updates.
Signed-off-by: Tim Deegan <Tim.Deegan@citrix.com>
Diffstat (limited to 'xen/include/asm-x86/mm.h')
-rw-r--r-- | xen/include/asm-x86/mm.h | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h index a729475a2e..fdee0e0ba1 100644 --- a/xen/include/asm-x86/mm.h +++ b/xen/include/asm-x86/mm.h @@ -35,13 +35,18 @@ struct page_info union { /* Each frame can be threaded onto a doubly-linked list. * - * For unused shadow pages, a list of pages of this order; for - * pinnable shadows, if pinned, a list of other pinned shadows - * (see sh_type_is_pinnable() below for the definition of - * "pinnable" shadow types). + * For unused shadow pages, a list of pages of this order; + * for multi-page shadows, links to the other pages in this shadow; + * for pinnable shadows, if pinned, a list of all pinned shadows + * (see sh_type_is_pinnable() for the definition of "pinnable" + * shadow types). N.B. a shadow may be both pinnable and multi-page. + * In that case the pages are inserted in order in the list of + * pinned shadows and walkers of that list must be prepared + * to keep them all together during updates. */ struct page_list_entry list; - /* For non-pinnable shadows, a higher entry that points at us. */ + /* 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; |