aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/mm.h
diff options
context:
space:
mode:
authorTim Deegan <Tim.Deegan@citrix.com>2010-09-01 11:23:48 +0100
committerTim Deegan <Tim.Deegan@citrix.com>2010-09-01 11:23:48 +0100
commit1c7493f10008fcd0aa7a168b05e9119a783278fb (patch)
tree7dbbb49d1ed726ccfb8b2348b499a4b4e82c5cab /xen/include/asm-x86/mm.h
parentc385d270797442a05bdbcd4791834f042df7c137 (diff)
downloadxen-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.h15
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;