|
|
|
|
|
|
|
|
|
|
xen-devel
[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
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] page counts & type counts,
Mike Sun <=
|
|
|
|
|