[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Re: [PATCH] mem_sharing: fix race condition of nominate and unshare


  • To: Tim Deegan <Tim.Deegan@xxxxxxxxxx>
  • From: Jui-Hao Chiang <juihaochiang@xxxxxxxxx>
  • Date: Thu, 13 Jan 2011 23:24:59 +0800
  • Cc: MaoXiaoyun <tinnycloud@xxxxxxxxxxx>, xen devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Thu, 13 Jan 2011 07:25:48 -0800
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=lS2SsBYAaDhEOAQROPJXaoqMTTH6IaSI4PLPROiG0ljDOf8wqSPfdgHrJi0xuAvv4M +6w1w6XL6pg/9MqYj/t3denvuDWClCjgb4Po+X/9s4yGtGxSeo8LxbnTcecUUEmDcofZ jvSqlRMCILCMMqWRzf1DlAOuM+uaI9y//LiPg=
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

Hi, Tim:

>> (2) The major problem is the __put_page_type() never handle the
>> special case for shared pages.
>>
>> If the (1) is changed as I said, the problem still exists as the following
>> /* Before nominating domain 1, gfn 0x63 */
>> (XEN) Debug for domain=1, gfn=63, Debug page: MFN=4836c7 is
>> ci=8000000000000002, ti=0, owner_id=1
>> /* After a failed nominate  [desired: ci=8000000000000002, ti=0]*/
>> (XEN) Debug for domain=1, gfn=63, Debug page: MFN=4836c7 is
>> ci=8000000000000002, ti=8400000000000000, owner_id=1
>
> Is this causing a real problem other than this printout?
>
> One of the reasons to use get_page_and_type/put_page_and_type was that
> it gets rid of the code that requires pages to have PGT_none before
> they're shared.
>
> As I have been trying to explain, when a page has typecount 0 its type
> is only relevant for the TLB flushing logic.  If there's still a place
> in the page-sharing code that relies on (type == PGT_none && count == 0)
> then AFAICS that's a bug.
>

Thanks for the clarification. As you said, the following is excerpted
from the mm.c
"* So, type_count is a count of the number of times a frame is being
 * referred to in its current incarnation. Therefore, a page can only
 * change its type when its type count is zero."

After testing the code with your patch, it's ok for the mem_sharing.
And as the argument says, when (type_count & PGT_count_mask) is zero,
it's ok for changing the page type. (even when there is a old value in
type_count & PGT_type_mask, e.g., ti=8400000000000000)

Thanks,
Jui-Hao

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.