[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH 1/3] xenoprof: adjust ordering of page sharing vs domain type setting
Buffer pages should be shared with "ignored" or "active" guests only (besides, obviously, the primary profiling domain). Hence domain type should be set to "ignored" before unsharing from the primary domain (which implies even a previously "passive" domain may then access its buffers, albeit that's not very useful unless it gets promoted to "active" subsequently), i.e. such that no further writes of records to the buffer would occur, and (at least for consistency) also before sharing it (with the calling domain) from the XENOPROF_get_buffer path. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Wei Liu <wl@xxxxxxx> --- a/xen/common/xenoprof.c +++ b/xen/common/xenoprof.c @@ -372,8 +372,8 @@ static void reset_passive(struct domain if ( x == NULL ) return; - unshare_xenoprof_page_with_guest(x); x->domain_type = XENOPROF_DOMAIN_IGNORED; + unshare_xenoprof_page_with_guest(x); } static void reset_active_list(void) @@ -654,6 +654,13 @@ static int xenoprof_op_get_buffer(XEN_GU if ( ret < 0 ) return ret; } + else + { + d->xenoprof->domain_ready = 0; + d->xenoprof->domain_type = XENOPROF_DOMAIN_IGNORED; + } + + d->xenoprof->is_primary = (xenoprof_primary_profiler == d); ret = share_xenoprof_page_with_guest( d, virt_to_mfn(d->xenoprof->rawbuf), d->xenoprof->npages); @@ -662,10 +669,6 @@ static int xenoprof_op_get_buffer(XEN_GU xenoprof_reset_buf(d); - d->xenoprof->domain_type = XENOPROF_DOMAIN_IGNORED; - d->xenoprof->domain_ready = 0; - d->xenoprof->is_primary = (xenoprof_primary_profiler == current->domain); - xenoprof_get_buffer.nbuf = d->xenoprof->nbuf; xenoprof_get_buffer.bufsize = d->xenoprof->bufsize; if ( !paging_mode_translate(d) )
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |