>>> On 21.09.15 at 15:31, <rcojoc...@bitdefender.com> wrote: > --- a/xen/arch/x86/hvm/emulate.c > +++ b/xen/arch/x86/hvm/emulate.c > @@ -514,7 +514,8 @@ static int hvmemul_virtual_to_linear( > * being triggered for repeated writes to a whole page. > */ > *reps = min_t(unsigned long, *reps, > - unlikely(current->domain->arch.mem_access_emulate_enabled) > + unlikely(current->domain->arch.mem_access_emulate_enabled > && > + current->domain->arch.mem_access_emulate_each_rep) > ? 1 : 4096);
unlikely() should not wrap compound conditions, or else its effect of eliminating mis-predicted branches from the fast path won't be achieved. In the case here I wonder though whether you couldn't simply test only ->arch.mem_access_emulate_each_rep. > --- a/xen/arch/x86/monitor.c > +++ b/xen/arch/x86/monitor.c > @@ -79,6 +79,12 @@ int monitor_domctl(struct domain *d, struct > xen_domctl_monitor_op *mop) > return 0; > } > > + if ( mop->op == XEN_DOMCTL_MONITOR_OP_EMULATE_EACH_REP ) > + { > + d->arch.mem_access_emulate_each_rep = !!mop->event; > + return 0; > + } Considering that there's another "if(mop->op == ...)" right above this, these two together should become another switch(). Jan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel