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

Re: [Xen-devel] shadow_clean_dirty_bitmap's another solution



At 10:08 +0100 on 24 Jun (1245838118), zhujun wrote:
> 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);

Stop right there! :)  Why are you looking in sl2es?  You need to make
_all_ the sl1es read-only for this to work.  You should be using
hash_foreach() to walk through every l1 shadow.  Have a look at
sh_remove_all_mappings for an example of code that walks every sl1 table.

Also your code below seems a bit too cautious: it should be OK to just
check for_PAGE_PRESENT and _PAGE_RW and then clean _PAGE_RW.

Cheers,

Tim.

>                 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
> 

Content-Description: ATT00001.txt
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel


-- 
Tim Deegan <Tim.Deegan@xxxxxxxxxx>
Principal Software Engineer, Citrix Systems (R&D) Ltd.
[Company #02300071, SL9 0DZ, UK.]

_______________________________________________
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®.