From: leo.yan@linaro.org
To: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: Al Grant <Al.Grant@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Coresight ML <coresight@lists.linaro.org>,
linux-kernel@vger.kernel.org,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Robert Walker <robert.walker@arm.com>,
Jiri Olsa <jolsa@redhat.com>,
linux-arm-kernel@lists.infradead.org,
Mike Leach <mike.leach@linaro.org>
Subject: Re: [PATCH v1 2/5] perf cs-etm: Avoid stale branch samples when flush packet
Date: Wed, 5 Dec 2018 10:58:32 +0800 [thread overview]
Message-ID: <20181205025832.GA13305@leoy-ThinkPad-X240s> (raw)
In-Reply-To: <20181116230511.GB25258@xps15>
On Fri, Nov 16, 2018 at 04:05:11PM -0700, Mathieu Poirier wrote:
[...]
> > -static int cs_etm__flush(struct cs_etm_queue *etmq)
> > +static int cs_etm__flush(struct cs_etm_queue *etmq, bool new_packet)
> > {
> > int err = 0;
> > struct cs_etm_auxtrace *etm = etmq->etm;
> > @@ -989,6 +989,20 @@ static int cs_etm__flush(struct cs_etm_queue *etmq)
> >
> > }
> >
> > + /*
> > + * If 'new_packet' is false, this time call has no a new packet
> > + * coming and 'etmq->packet' contains the stale packet which is
> > + * set at the previous time with packets swapping. In this case
> > + * this function is invoked only for flushing branch stack at
> > + * the end of buffer handling.
> > + *
> > + * Simply to say, branch samples should be generated when every
> > + * time receive one new packet; otherwise, directly bail out to
> > + * avoid generate branch sample with stale packet.
> > + */
> > + if (!new_packet)
> > + return 0;
> > +
> > if (etm->sample_branches &&
> > etmq->prev_packet->sample_type == CS_ETM_RANGE) {
> > err = cs_etm__synth_branch_sample(etmq);
> > @@ -1075,7 +1089,7 @@ static int cs_etm__run_decoder(struct cs_etm_queue *etmq)
> > * Discontinuity in trace, flush
> > * previous branch stack
> > */
> > - cs_etm__flush(etmq);
> > + cs_etm__flush(etmq, true);
> > break;
> > case CS_ETM_EMPTY:
> > /*
> > @@ -1092,7 +1106,7 @@ static int cs_etm__run_decoder(struct cs_etm_queue *etmq)
> >
> > if (err == 0)
> > /* Flush any remaining branch stack entries */
> > - err = cs_etm__flush(etmq);
> > + err = cs_etm__flush(etmq, false);
>
> I understand what you're doing and it will yield the correct results. What I'm
> not sure about is if we wouldn't be better off splitting cs_etm__flush()
> in order to reduce the complexity of the main decoding loop. That is rename
> cs_etm__flush() to something like cs_etm__trace_on() and spin off a new
> cs_etm__end_block().
>
> It does introduce a little bit of code duplication but I think we'd win in terms
> of readability and flexibility.
Sorry for long delay, Mathieu.
Agree with the idea of splitting cs_etm__flush() into two functions.
Will spin patch for new version.
Thanks,
Leo Yan
> > }
> >
> > return err;
> > --
> > 2.7.4
> >
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2018-12-05 2:59 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-11 4:59 [PATCH v1 0/5] perf cs-etm: Correct packets handling Leo Yan
2018-11-11 4:59 ` [PATCH v1 1/5] perf cs-etm: Correct packets swapping in cs_etm__flush() Leo Yan
2018-11-16 22:58 ` Mathieu Poirier
2018-11-11 4:59 ` [PATCH v1 2/5] perf cs-etm: Avoid stale branch samples when flush packet Leo Yan
2018-11-16 23:05 ` Mathieu Poirier
2018-11-18 6:38 ` leo.yan at linaro.org
2018-12-05 2:58 ` leo.yan [this message]
2018-11-11 4:59 ` [PATCH v1 3/5] perf cs-etm: Support for NO_SYNC packet Leo Yan
2018-11-19 18:27 ` Mathieu Poirier
2018-12-05 3:31 ` leo.yan
2018-12-05 17:48 ` Mathieu Poirier
2018-12-06 5:45 ` leo.yan
2018-11-11 4:59 ` [PATCH v1 4/5] perf cs-etm: Generate branch sample for exception packet Leo Yan
2018-11-11 4:59 ` [PATCH v1 5/5] perf cs-etm: Track exception number Leo Yan
2018-11-19 20:47 ` Mathieu Poirier
2018-12-05 3:49 ` leo.yan
2018-12-05 18:03 ` Mathieu Poirier
2018-12-06 5:47 ` leo.yan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181205025832.GA13305@leoy-ThinkPad-X240s \
--to=leo.yan@linaro.org \
--cc=Al.Grant@arm.com \
--cc=acme@kernel.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=coresight@lists.linaro.org \
--cc=jolsa@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.poirier@linaro.org \
--cc=mike.leach@linaro.org \
--cc=namhyung@kernel.org \
--cc=robert.walker@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox