[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] x86: No need to flush TLBs on free_page_type() as we no longer trust
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1233757693 0 # Node ID 398291c661b3a3fc8332619f13e17f8e781a3aec # Parent faf20eb0b69e338668ecbb9f4714b70eba841ce6 x86: No need to flush TLBs on free_page_type() as we no longer trust the linear pagetable mapping (we use it but we double check it). Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx> --- xen/arch/x86/mm.c | 35 +++++++++++------------------------ 1 files changed, 11 insertions(+), 24 deletions(-) diff -r faf20eb0b69e -r 398291c661b3 xen/arch/x86/mm.c --- a/xen/arch/x86/mm.c Wed Feb 04 13:27:17 2009 +0000 +++ b/xen/arch/x86/mm.c Wed Feb 04 14:28:13 2009 +0000 @@ -2023,30 +2023,17 @@ int free_page_type(struct page_info *pag unsigned long gmfn; int rc; - if ( likely(owner != NULL) ) - { - /* - * We have to flush before the next use of the linear mapping - * (e.g., update_va_mapping()) or we could end up modifying a page - * that is no longer a page table (and hence screw up ref counts). - */ - if ( current->domain == owner ) - queue_deferred_ops(owner, DOP_FLUSH_ALL_TLBS); - else - flush_tlb_mask(owner->domain_dirty_cpumask); - - if ( unlikely(paging_mode_enabled(owner)) ) - { - /* A page table is dirtied when its type count becomes zero. */ - paging_mark_dirty(owner, page_to_mfn(page)); - - if ( shadow_mode_refcounts(owner) ) - return 0; - - gmfn = mfn_to_gmfn(owner, page_to_mfn(page)); - ASSERT(VALID_M2P(gmfn)); - shadow_remove_all_shadows(owner->vcpu[0], _mfn(gmfn)); - } + if ( likely(owner != NULL) && unlikely(paging_mode_enabled(owner)) ) + { + /* A page table is dirtied when its type count becomes zero. */ + paging_mark_dirty(owner, page_to_mfn(page)); + + if ( shadow_mode_refcounts(owner) ) + return 0; + + gmfn = mfn_to_gmfn(owner, page_to_mfn(page)); + ASSERT(VALID_M2P(gmfn)); + shadow_remove_all_shadows(owner->vcpu[0], _mfn(gmfn)); } if ( !(type & PGT_partial) ) _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |