[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 05 of 14] Don't trigger unnecessary shadow scans on p2m entry update
>>> On 23.11.11 at 22:11, Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx> wrote: > xen/arch/x86/mm/shadow/common.c | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > > When updating a p2m entry, the hypervisor scans all shadow pte's to find > mappings of that gfn and tear them down. This is avoided if the page count > reveals that there are no additional mappings. The current test ignores the > PGC_allocated flag and its effect on the page count. > > Signed-off-by: Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx> > Signed-off-by: Adin Scannell <adin@xxxxxxxxxxx> > > diff -r 93066bdc1e1c -r e8f0709af2b7 xen/arch/x86/mm/shadow/common.c > --- a/xen/arch/x86/mm/shadow/common.c > +++ b/xen/arch/x86/mm/shadow/common.c > @@ -2501,7 +2501,8 @@ int sh_remove_all_mappings(struct vcpu * > ; > > perfc_incr(shadow_mappings); > - if ( (page->count_info & PGC_count_mask) == 0 ) > + expected_count = (page->count_info & PGC_allocated) ? 1 : 0; > + if ( (page->count_info & PGC_count_mask) == expected_count ) Is that really valid outside the locked region? > return 0; > > /* Although this is an externally visible function, we do not know > @@ -2517,7 +2518,6 @@ int sh_remove_all_mappings(struct vcpu * > hash_foreach(v, callback_mask, callbacks, gmfn); > > /* If that didn't catch the mapping, something is very wrong */ > - expected_count = (page->count_info & PGC_allocated) ? 1 : 0; This certainly isn't right - iiuc the count would normally have changed during the hash_foreach() above this. Jan > if ( (page->count_info & PGC_count_mask) != expected_count ) > { > /* Don't complain if we're in HVM and there are some extra > mappings: _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |