[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC XEN PATCH 05/16] xen/x86: release pmem pages at domain destroy
>>> On 10.10.16 at 02:32, <haozhong.zhang@xxxxxxxxx> wrote: > --- a/xen/arch/x86/pmem.c > +++ b/xen/arch/x86/pmem.c > @@ -282,3 +282,44 @@ int pmem_populate(struct xen_pmemmap_args *args) > args->nr_done = i; > return rc; > } > + > +static int pmem_teardown_preemptible(struct domain *d, int *preempted) > +{ > + struct page_info *pg, *next; > + int rc = 0; > + > + spin_lock(&d->pmem_lock); > + > + page_list_for_each_safe (pg, next, &d->pmem_page_list ) > + { > + BUG_ON(page_get_owner(pg) != d); > + BUG_ON(page_state_is(pg, free)); > + > + page_list_del(pg, &d->pmem_page_list); > + page_set_owner(pg, NULL); > + pg->count_info = (pg->count_info & ~PGC_count_mask) | PGC_state_free; > + > + if ( preempted && hypercall_preempt_check() ) > + { > + *preempted = 1; > + goto out; > + } > + } > + > + out: > + spin_unlock(&d->pmem_lock); > + return rc; > +} > + > +int pmem_teardown(struct domain *d) > +{ > + int preempted = 0; > + > + ASSERT(d->is_dying); > + ASSERT(d != current->domain); > + > + if ( !has_hvm_container_domain(d) || !paging_mode_translate(d) ) > + return -EINVAL; Why are these needed? > + return pmem_teardown_preemptible(d, &preempted); I don't see what you have "preempted" for here. You want the function to return -ERESTART in the preemption case. And I also don't see what the helper function is good for - the code can easily live right in this function. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |