|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC] x86/ioreq server: Optimize p2m cleaning up code in p2m_finish_type_change().
>>> On 05.04.17 at 10:59, <yu.c.zhang@xxxxxxxxxxxxxxx> wrote:
> --- a/xen/arch/x86/mm/p2m.c
> +++ b/xen/arch/x86/mm/p2m.c
> @@ -1034,12 +1034,13 @@ void p2m_change_type_range(struct domain *d,
> /* Synchronously modify the p2m type for a range of gfns from ot to nt. */
> void p2m_finish_type_change(struct domain *d,
> gfn_t first_gfn, unsigned long max_nr,
> - p2m_type_t ot, p2m_type_t nt)
> + p2m_type_t ot, p2m_type_t nt, bool *changed)
> {
> struct p2m_domain *p2m = p2m_get_hostp2m(d);
> p2m_type_t t;
> unsigned long gfn = gfn_x(first_gfn);
> unsigned long last_gfn = gfn + max_nr - 1;
> + bool is_changed = false;
>
> ASSERT(ot != nt);
> ASSERT(p2m_is_changeable(ot) && p2m_is_changeable(nt));
> @@ -1052,12 +1053,18 @@ void p2m_finish_type_change(struct domain *d,
> get_gfn_query_unlocked(d, gfn, &t);
>
> if ( t == ot )
> + {
> p2m_change_type_one(d, gfn, t, nt);
> + is_changed = true;
> + }
>
> gfn++;
> }
>
> p2m_unlock(p2m);
> +
> + if ( changed )
> + *changed = is_changed;
> }
Also, wouldn't it be better to return a count here? If there was just
a single change in the current 256-GFN batch, surely we could take
on another?
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |