[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] Correctly mapping in a Dom0 page globally
Hello all, I'm mapping in some memory from Dom0 to use globally, based on a domctl that sends up a virtual address. It seems to be working for me so far. Here's my current code ---------------- { struct page_info* page_info = NULL; l1_pgentry_t pte; /* Attempt to read the PTE that maps the VA being accessed. */ guest_get_eff_l1e(current, va, &pte); /* Make sure the page is present */ if ( ((l1e_get_flags(pte) & (_PAGE_PRESENT)) != _PAGE_PRESENT) ) { ret = -ENOMEM; break; } /* Get the page_info struct */ page_info = l1e_get_page(pte); if ( !page_info ) { ret = -ESRCH; break; } d->arch.hvm_domain.test.buffer = (uint8_t*)__map_domain_page_global(page_info); if ( !d->arch.hvm_domain.test.buffer ) { ret = -ESRCH; break; } ---------------- In the unmap function, I simply call "map_domain_page_global(d->arch.hvm_domain.test.buffer)" My concern is that I'm not actually calling get_page()/put_page(). The function "l1e_get_page()" seems to always succeed, but simply does some math to find the structure. It doesn't end up calling get_page() and incrementing the reference count. My question is, am I doing this correctly? Will l1e_get_page() always succeed? I was having issues getting get_page() and put_page() to work using the pte. Any comments will be greatly appreciated. Thanks! _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |