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

[Xen-devel] shadow_clean_dirty_bitmap's another solution

To: <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] shadow_clean_dirty_bitmap's another solution
From: "zhujun" <zhujun@xxxxxxxxxxxxxx>
Date: Wed, 24 Jun 2009 17:08:38 +0800
Delivery-date: Wed, 24 Jun 2009 02:09:09 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
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>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: Acn0q1x91Kd7nRC2RXW1QBgsymfyNg==

Hi,

         When doing live migration, the shadow code is translated to log dirty mode. However, in the shadow_clean_dirty_bitmap function, all the in-use shadow page tables are blew down. I think it is too crude, just as the comment of the function says. I am trying to find a better solution, but it does not succeeds. Would you please help me check my source code and give me some suggestions? My current solution is walking all the in-use L1 shadow page tables and clearing each L1 entry’s R/W bit if it has set.

         I don’t know whether it is enough to remove these R/W bits for live migration. If not, how to make all the pages of a PV domain read-only again? Thanks very much!

         My source code is here.

 

                    sl1mfn = shadow_l2e_get_mfn(*sl2e);

                if ( mfn_valid(sl1mfn) )

                {

                   SHADOW_FOREACH_L1E(sl1mfn, sl1e, 0, 0, {

                        flags = shadow_l1e_get_flags(*sl1e);

                        target_mfn = shadow_l1e_get_mfn(*sl1e);

                        if(mfn_valid(target_mfn))

                        {

                                pg = mfn_to_page(target_mfn);

                                if ((pg != NULL) || ((pg->u.inuse.type_info & PGT_type_mask) == PGT_writable_page))

                                {

                                        if ((flags & _PAGE_PRESENT) && (flags & _PAGE_RW))

                                        {

                                                shadow_l1e_t ro_sl1e = shadow_l1e_remove_flags(*sl1e, _PAGE_RW);

                                                (void) shadow_set_l1e(v, sl1e, ro_sl1e, sl1mfn);

                                        }

                                }

                        }

                   });

                }

        

 

zhujun

 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>