[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 02/15] xen: tracing: avoid checking tb_init_done multiple times.
On Wed, 2017-06-07 at 08:46 -0600, Jan Beulich wrote: > > > > On 01.06.17 at 19:33, <dario.faggioli@xxxxxxxxxx> wrote: > > > > In fact, when calling __trace_var() directly, we can > > assume that tb_init_done has been checked to be true, > > and the if is hence redundant. > > The "assume" here worries me: What if there's a single place > somewhere that a grep can't easily find where no check is > present? Is it certain that ... > > > @@ -691,7 +691,8 @@ void __trace_var(u32 event, bool_t cycles, > > unsigned int extra, > > unsigned int extra_word; > > bool_t started_below_highwater; > > > > - if( !tb_init_done ) > > + /* If the event is not interesting, bail, as early as possible > > */ > > + if ( (tb_event_mask & event) == 0 ) > > return; > > ... this check would always be false then (i.e. tb_event_mask is > always zero) in that case? > As said when replying to Andrew, I originally put an ASSERT() there. That made me realize, though, that the existing if(!tb_init_done) is ineffective and potentially racy (or, if you want to be kind "it's a best effort kind of measure") already. In fact, even right now, without my patches, we don't hold the tracing lock when we execute that if. Nothing prevents tb_init_done to become 0 _right_after_ we saw it being 1 and decide to go ahead. This, to me, looks like an even more compelling reason to remove it. But I think I can improve the commit message so that it explains this thing that I just said above too. Thanks and Regards, Dario -- <<This happens because I choose it to happen!>> (Raistlin Majere) ----------------------------------------------------------------- Dario Faggioli, Ph.D, http://about.me/dario.faggioli Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK) Attachment:
signature.asc _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |