Tim Deegan
2010-Nov-18 13:08 UTC
[Xen-devel] [PATCH] x86/mm: don''t override an existing shadow memory allocation
x86/mm: don''t override an existing shadow memory allocation when enabling log-dirty shadows on a PV guest. Signed-off-by: Tim Deegan <Tim.Deegan@citrix.com> diff -r 9f1257be88ad xen/arch/x86/mm/shadow/common.c --- a/xen/arch/x86/mm/shadow/common.c Thu Nov 18 12:42:07 2010 +0000 +++ b/xen/arch/x86/mm/shadow/common.c Thu Nov 18 12:45:44 2010 +0000 @@ -3328,11 +3328,10 @@ static int shadow_one_bit_enable(struct mode |= PG_SH_enable; - if ( d->arch.paging.mode == 0 ) + if ( d->arch.paging.shadow.total_pages == 0 ) { - /* Init the shadow memory allocation and the hash table */ - if ( sh_set_allocation(d, 1, NULL) != 0 - || shadow_hash_alloc(d) != 0 ) + /* Init the shadow memory allocation if the user hasn''t done so */ + if ( sh_set_allocation(d, 1, NULL) != 0 ) { sh_set_allocation(d, 0, NULL); return -ENOMEM; @@ -3343,6 +3342,13 @@ static int shadow_one_bit_enable(struct d->arch.paging.free_page = shadow_free_p2m_page; } + if ( d->arch.paging.mode == 0 ) + { + /* Init the shadow hash table */ + if ( shadow_hash_alloc(d) != 0 ) + return -ENOMEM; + } + /* Update the bits */ sh_new_mode(d, d->arch.paging.mode | mode); _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel