|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH-for-4.9 v1 5/8] dm_op: convert HVMOP_modified_memory
>>> On 18.11.16 at 18:14, <paul.durrant@xxxxxxxxxx> wrote:
> --- a/xen/arch/x86/hvm/dm.c
> +++ b/xen/arch/x86/hvm/dm.c
> @@ -17,6 +17,7 @@
> #include <xen/hypercall.h>
> #include <xen/guest_access.h>
> #include <xen/sched.h>
> +#include <xen/event.h>
I should have notice before, but it's more evident here: May I ask
that you sort the xen/ and asm/ subgroups, rather than always
appending at the respective one's end? With sorted #include
directives the risk of merge conflicts reduces statistically.
> +static int dm_op_modified_memory(struct domain *d, xen_pfn_t *first_pfn,
> + unsigned int *nr)
> +{
> + xen_pfn_t last_pfn = *first_pfn + *nr - 1;
> + unsigned int iter;
> + int rc;
> +
> + if ( (*first_pfn > last_pfn) ||
> + (last_pfn > domain_get_maximum_gpfn(d)) )
> + return -EINVAL;
> +
> + if ( !paging_mode_log_dirty(d) )
> + return 0;
> +
> + iter = 0;
> + rc = 0;
> + while ( iter < *nr )
> + {
> + unsigned long pfn = *first_pfn + iter;
> + struct page_info *page;
> +
> + page = get_page_from_gfn(d, pfn, NULL, P2M_UNSHARE);
> + if ( page )
> + {
> + paging_mark_dirty(d, page_to_mfn(page));
> + /* These are most probably not page tables any more */
> + /* don't take a long time and don't die either */
Please fix the comment style.
> + sh_remove_shadows(d, _mfn(page_to_mfn(page)), 1, 0);
> + put_page(page);
> + }
> +
> + /* Check for continuation if it's not the last interation */
> + if ( (++iter < *nr) && hypercall_preempt_check() )
Please avoid checking on every iteration. In the hvmctl series I
did so every 256th one.
> + {
> + rc = -ERESTART;
> + break;
> + }
> + }
> +
> + *first_pfn += iter;
> + *nr -= iter;
So this is not the standard way we handle continuations: We try
hard to avoid modifying interface structures. This being a new
interface, I don't mind deviation (as it simplifies the implementation),
but this needs to be spelled out prominently in the header, to
avoid people assuming IN fields won't get modified.
> +struct xen_dm_op_modified_memory {
> + /* IN - number of contiguous pages modified */
> + uint32_t nr;
> + /* IN - first pfn modified */
> + uint64_t first_pfn;
Alignment missing. (At this point I can't resist to state that it
probably wouldn't have hurt if you had taken a little more of that
original series, as a number of comments I find myself making
are a result of comparing your code with my original.)
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |