[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 3/4] mm: make MEMF_no_refcount pages safe to assign
On 29.01.2020 15:38, Paul Durrant wrote: > @@ -2371,6 +2383,8 @@ void free_domheap_pages(struct page_info *pg, unsigned > int order) > > if ( likely(d) && likely(d != dom_cow) ) > { > + long pages = 0; > + > /* NB. May recursively lock from relinquish_memory(). */ > spin_lock_recursive(&d->page_alloc_lock); > > @@ -2386,9 +2400,11 @@ void free_domheap_pages(struct page_info *pg, unsigned > int order) > BUG(); > } > arch_free_heap_page(d, &pg[i]); > + if ( !(pg[i].count_info & PGC_no_refcount) ) > + pages--; > } > > - drop_dom_ref = !domain_adjust_tot_pages(d, -(1 << order)); > + drop_dom_ref = !domain_adjust_tot_pages(d, pages); Following from what I've just said on the previous patch, this needs further changing then as well. There'll need to be a per-domain "non-refcounted-pages" count, which - when transitioning from zero to non-zero is accompanied by obtaining a domain ref, and when transitioning back to zero causes this domain ref to be dropped. Otherwise, once the last ref-counted page was freed, the domain may become ready for final destruction, no matter how many non- refcounted pages there still are on its page lists. (An alternative model might be to include all pages in ->tot_pages, keep using just that for the domain ref acquire/release, and subtract the new count when e.g. comparing against ->max_pages.) Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |