[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] page counts & type counts
Hi, I'm working with Xen 3.2 and having a hard time understanding what's going on in this piece of code used to do ref and type counting. int get_page_type(struct page_info *page, unsigned long type) { ... else if ( unlikely((x & PGT_count_mask) == 0) ) { struct domain *d = page_get_owner(page); /* Never allow a shadowed frame to go from type count 0 to 1 */ if ( d && shadow_mode_enabled(d) ) shadow_remove_all_shadows(d->vcpu[0], _mfn(page_to_mfn(page))); Does this mean that every time a page goes from read-only to writable, the shadow PTE mapping that page is destroyed and recreated? In particular, if I wanted to restore writable access to a page during log-dirty mode (such as what occurs when a fault is taken and that page is then marked dirty and RW is not revoked in _sh_propagate()), will the shadow always be destroyed and then recreated? >From what I understand, shadow_remove_all_shadows() will remove all shadows of the gmfn, which should be a guest PT. Basically, it'll remove all shadows inserted in the shadow_hash table for that gmfn. It IS NOT removing shadow PTEs mapping that gmfn. Is this a correct understanding? I don't understand how get_page_type() would know in the code that is there how the given page is actually a guest PT? -- Mike _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |