|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] 15142:78389dbb08bb and domain state
On Fri, Nov 16, 2007 at 12:01:38AM +0000, Keir Fraser wrote:
> Reference counting for l4 pagetable entries happens in
> get_page_from_l4e(),
The circular reference was a red herring - I was looking at Xen's own
mapping in its private PTEs (d'oh).
However, I did notice that we leak a ref count per VCPU, which gave me a
big clue. Changeset 13302:7c5eea5feebd from Jan added this code:
+#ifdef __x86_64__
+ if ( pfn == pagetable_get_pfn(v->arch.guest_table_user) )
+ v->arch.guest_table_user = pagetable_null();
+#endif
Presumably for the benefit of compat guests where this is always true.
However, it can be true on native Solaris guests too - when we switch
to the kernel L4 we also load it into _USER_BASEPTR.
The patch below fixes it for me (though I'm not positive it's correct).
Assuming this or something like it is the right thing, that will still
leave the 'xm list' problem, which I see with both Solaris and Linux
domU's. Still looking at that.
cheers,
john
# HG changeset patch
# User john.levon@xxxxxxx
# Date 1195467196 28800
# Node ID b972585a05838dc3a622438299572423a7a8de8d
# Parent 00c6696dcc8b17cd9ea2325f260899e489e262e0
Fix VCPU pagetable cleanup
Solaris can have the same PT in guest_table and guest_table_user without
it being a compat domain. Be more careful when cleaning up.
Signed-off-by: John Levon <john.levon@xxxxxxx>
diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -1625,7 +1625,8 @@ static void vcpu_destroy_pagetables(stru
else
put_page_and_type(mfn_to_page(pfn));
#ifdef __x86_64__
- if ( pfn == pagetable_get_pfn(v->arch.guest_table_user) )
+ if ( is_pv_32on64_vcpu(v) &&
+ pfn == pagetable_get_pfn(v->arch.guest_table_user) )
v->arch.guest_table_user = pagetable_null();
#endif
v->arch.guest_table = pagetable_null();
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- Re: [Xen-devel] 15142:78389dbb08bb and domain state, (continued)
- Re: [Xen-devel] 15142:78389dbb08bb and domain state, Keir Fraser
- Re: [Xen-devel] 15142:78389dbb08bb and domain state, John Levon
- Re: [Xen-devel] 15142:78389dbb08bb and domain state, John Levon
- Re: [Xen-devel] 15142:78389dbb08bb and domain state, Keir Fraser
- Re: [Xen-devel] 15142:78389dbb08bb and domain state, Keir Fraser
- Re: [Xen-devel] 15142:78389dbb08bb and domain state, John Levon
- Re: [Xen-devel] 15142:78389dbb08bb and domain state, Keir Fraser
- Re: [Xen-devel] 15142:78389dbb08bb and domain state, John Levon
- Re: [Xen-devel] 15142:78389dbb08bb and domain state, Keir Fraser
- Re: [Xen-devel] 15142:78389dbb08bb and domain state, John Levon
- Message not available
- Re: [Xen-devel] 15142:78389dbb08bb and domain state,
John Levon <=
- Re: [Xen-devel] 15142:78389dbb08bb and domain state, Keir Fraser
- Re: [Xen-devel] 15142:78389dbb08bb and domain state, John Levon
|
|
|
|
|