[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/3] x86/PoD: correctly handle non-order-0 decrease-reservation requests
>>> On 07.12.17 at 13:56, <george.dunlap@xxxxxxxxxx> wrote: > On 12/04/2017 11:06 AM, Jan Beulich wrote: >> p2m_pod_decrease_reservation() returning just (not) all-done is not >> sufficient for the caller: If some pages were processed, >> guest_remove_page() returning an error for those pages is the expected >> result rather than an indication of a problem. Make guest_remove_page() >> return a distinct error code for this very case, and special case >> handling in case of seeing this error code in decrease_reservation(). > > The solution is good, but I think it needs more comments and a better > explanation. You suggestions in this regard all sound good; I'll integrate them, and unless you tell me otherwise I'll then also add you S-o-b. >> + for ( j = 0; j + pod_done < (1UL << a->extent_order); j++ ) >> + { >> + switch ( guest_remove_page(a->domain, gmfn + j) ) >> + { >> + case 0: >> + break; >> + case -ENOENT: >> + if ( !pod_done ) >> + goto out; >> + --pod_done; >> + break; >> + default: >> goto out; >> + } >> + } >> } > > What about: > > ASSERT(pod_done == 0); No, there's nothing preventing another vCPU of the guest doing something that could result in triggering this assertion. If anything I could make pod_done being non-zero after the loop a failure, too. But part of me thinks this is too harsh ... 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 |