WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] [PATCH] x86: fix domain cleanup

To: "Keir Fraser" <keir.fraser@xxxxxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH] x86: fix domain cleanup
From: "Jan Beulich" <jbeulich@xxxxxxxxxx>
Date: Tue, 28 Oct 2008 10:37:42 +0000
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Tue, 28 Oct 2008 03:37:01 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <C52C9915.2873B%keir.fraser@xxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <4906F204.76E4.0078.0@xxxxxxxxxx> <C52C9915.2873B%keir.fraser@xxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
>>> Keir Fraser <keir.fraser@xxxxxxxxxxxxx> 28.10.08 11:25 >>>
>On 28/10/08 10:05, "Jan Beulich" <jbeulich@xxxxxxxxxx> wrote:
>
>>> Ah, looks like it's been broken since the preemptible page_type patch went
>>> in. Perhaps the tail of free_page_type() should go into __put_page_type(),
>>> as it's not needed by the call site in relinquish_memory(): the caller
>>> doesn't really hold a type reference to be dropped; and the logic for being
>>> preempted doesn't apply since relinquish_memory() requests no preemption.
>> 
>> It doesn't at present, but it should (in favor of
>> DOMAIN_DESTRUCT_AVOID_RECURSION),
>> including the put_page_and_type() earlier in that function. But of course,
>> it may still turn out that cleaning up after preemption here must be handled
>> differently from the __put_page_type() case. I'll give moving that part
>> (and removing the put_page() added yesterday) a try.
>
>__put_page_type() is already a complex function actually, so let's define a
>__put_final_page_type() containing a call to free_page_type() plus the
>current tail of free_page_type(). __put_page_type() can call that;
>relinquish memory can call free_page_type() directly.

Will do it that way for submission. In testing it with that code inlined in
__put_page_type(), I can confirm that this closes the memory leak, but
it (obviously) doesn't address the crash when encountering a PGT_partial
page hanging off of a page table being cleaned up by that explicit call
to free_page_type() getting executed as a side effect of
DOMAIN_DESTRUCT_AVOID_RECURSION. The question of course really
is whether it's worthwhile trying to fix that, or rather to do away with it
altogether by utilizing the 'real' preemption.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel