|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 5/8] dm_op: convert HVMOP_modified_memory
>>> On 06.12.16 at 14:46, <paul.durrant@xxxxxxxxxx> wrote:
> @@ -142,18 +143,77 @@ static int set_isa_irq_level(struct domain *d, uint8_t
> isa_irq,
> return 0;
> }
>
> +static int 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));
I guess this will need re-basing over Andrew's about to be committed
(I think) parameter type change of this function. And you probably
want to latch the MFN into a local variable instead of doing the
translation (which is not as cheap as we'd like it to be) twice.
> long do_dm_op(domid_t domid,
> unsigned int nr_bufs,
> XEN_GUEST_HANDLE_PARAM(xen_dm_op_buf_t) bufs)
> {
> struct domain *d;
> struct xen_dm_op op;
> + bool restart;
> long rc;
>
> rc = rcu_lock_remote_domain_by_id(domid, &d);
> if ( rc )
> return rc;
>
> + restart = false;
Please make this the initializer of the variable.
> --- a/xen/include/public/hvm/dm_op.h
> +++ b/xen/include/public/hvm/dm_op.h
> @@ -233,6 +233,24 @@ struct xen_dm_op_set_pci_link_route {
> uint16_t pad;
> };
>
> +/*
> + * XEN_DMOP_modified_memory: Notify that a set of pages were modified by
> + * an emulator.
> + *
> + * NOTE: In the event of a continuation (return code -ERESTART), the
> + * @first_pfn is set to the value of the pfn of the remaining
> + * set of pages and @nr reduced to the size of the remaining set.
> + */
There's no point in mentioning -ERESTART here, as that's never be
seen by the caller.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |