[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] Improve performance of IOCTL_PRIVCMD_MMAPBATCH_V2
>>> On 21.11.12 at 11:51, Mats Petersson <mats.petersson@xxxxxxxxxx> wrote: > On 21/11/12 10:29, Jan Beulich wrote: >>>>> On 16.11.12 at 15:45, Mats Petersson <mats.petersson@xxxxxxxxxx> wrote: >>> @@ -2526,12 +2540,25 @@ int xen_remap_domain_mfn_range(struct >>> vm_area_struct > *vma, >>> if (err) >>> goto out; >>> >>> - err = HYPERVISOR_mmu_update(mmu_update, batch, NULL, domid); >>> - if (err < 0) >>> - goto out; >>> + /* We record the error for each page that gives an error, but >>> + * continue mapping until the whole set is done */ >>> + do { >>> + err = HYPERVISOR_mmu_update(&mmu_update[index], >>> + batch_left, &done, domid); >>> + if (err < 0) { >>> + if (err_ptr) >>> + err_ptr[index] = err; >> Shouldn't you increment "done" here, in order to not retry the failed >> slot immediately? > > Yes, good spot - for some reason, I have double checked the behaviour of > "done", and it returns the index of the item which gave the error, not > actually "how many were processed". Isn't the index of failure equal to the number of successfully processed ones? > I have rewritten this part of code for V3 of this patch, but I think it > still requires an increment of "done" to make it work correctly. >> >>> + else /* exit if error and no err_ptr */ >>> + goto out; >>> + } >>> + batch_left -= done; >>> + index += done; >>> + } while (batch_left); >>> >>> nr -= batch; >>> addr += range; >>> + if (err_ptr) >>> + err_ptr += batch; >>> } >>> >>> err = 0; >>> @@ -303,6 +349,8 @@ static int mmap_return_errors_v1(void *data, void >>> *state) >>> return __put_user(*mfnp, st->user_mfn++); >>> } >>> >>> + >>> + >> ??? > This is cleaned up in the V3 patch. Did I miss that (and v2 too)? Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |