|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] [xen-unstable] x86: No need to flush TLBs on free_page_t
# 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
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] [xen-unstable] x86: No need to flush TLBs on free_page_type() as we no longer trust,
Xen patchbot-unstable <=
|
|
|
|
|