|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] x86/mem_sharing: Allow paging-in pages to be replaced by shared ones.
# HG changeset patch
# User Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx>
# Date 1337354361 -3600
# Node ID 592d15bd4d5ec58486d32ee9998319e7c95fcd66
# Parent 745b9920dfa39ac7e569f86591835d0984fa4b88
x86/mem_sharing: Allow paging-in pages to be replaced by shared ones.
Making sure to tidy up any partially paged frames.
Signed-off-by: Andres Lagar-Cavilla <andres@xxxxxxxxxxxxxxxx>
Acked-by: Tim Deegan <tim@xxxxxxx>
Committed-by: Tim Deegan <tim@xxxxxxx>
---
diff -r 745b9920dfa3 -r 592d15bd4d5e xen/arch/x86/mm/mem_sharing.c
--- a/xen/arch/x86/mm/mem_sharing.c Fri May 18 13:40:00 2012 +0100
+++ b/xen/arch/x86/mm/mem_sharing.c Fri May 18 16:19:21 2012 +0100
@@ -1103,7 +1103,17 @@ int mem_sharing_add_to_physmap(struct do
ret = 0;
/* There is a chance we're plugging a hole where a paged out page was
*/
if ( p2m_is_paging(cmfn_type) && (cmfn_type != p2m_ram_paging_out) )
+ {
atomic_dec(&cd->paged_pages);
+ /* Further, there is a chance this was a valid page. Don't leak
it. */
+ if ( mfn_valid(cmfn) )
+ {
+ struct page_info *cpage = mfn_to_page(cmfn);
+ ASSERT(cpage != NULL);
+ if ( test_and_clear_bit(_PGC_allocated, &cpage->count_info) )
+ put_page(cpage);
+ }
+ }
}
atomic_inc(&nr_saved_mfns);
diff -r 745b9920dfa3 -r 592d15bd4d5e xen/include/asm-x86/p2m.h
--- a/xen/include/asm-x86/p2m.h Fri May 18 13:40:00 2012 +0100
+++ b/xen/include/asm-x86/p2m.h Fri May 18 16:19:21 2012 +0100
@@ -137,6 +137,7 @@ typedef unsigned int p2m_query_t;
* entry */
#define P2M_HOLE_TYPES (p2m_to_mask(p2m_mmio_dm) \
| p2m_to_mask(p2m_invalid) \
+ | p2m_to_mask(p2m_ram_paging_in) \
| p2m_to_mask(p2m_ram_paged))
/* Grant mapping types, which map to a real machine frame in another
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |