|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] xenheap pages mapped by dom0
Jan Beulich wrote:
Keir Fraser <keir.fraser@xxxxxxxxxxxxx> 18.12.09 16:24 >>>
I think the right thing to do would be very roughly:
On allocation:
page = alloc_xenheap_page();
share_xen_page_with_guest(page);
On deallocation:
if (test_and_clear(PGC_allocated)) put_page();
if (page->count_info & PGC_count_mask) return -EBUSY;
Hmm, and how would you recover from that? I don't think George wants
his enclosing operation to fail because of a page still being mapped. On
x86-64, at least, it might be possible to play with PGC_xen_heap, to
convert a Xen heap page to a domain heap one, but that wouldn't
cover anyone else (and would seem rather hackish, if it works at all).
I wouldn't really mind the op failing; I just want it to fail cleanly.
All-or-nothing would be optimal IMHO. Failing such that everything will
automatically clean itself up if/when dom0 does unmap the pages would be
OK too. Having half the pages freed / marked unallocated, but some
still allocated doesn't seem very good.
Anyway, I care more about allocating larger buffers than I do about
re-allocating, so maybe I'll just punt on freeing maybe-mapped buffers
for now.
However, that brings up another point: suppose that I do several
allocations, one per cpu, and one fails. Now I want to go and free the
buffers I've just allocated (which shouldn't be mapped in dom0 yet).
Can I not just call free_xenheap_pages()? Do I need to clear
PGC_allocated before calling?
Is any of this stuff written down somewhere? :-)
-George
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|