linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Shishkin <alexander.shishkin@linux.intel.com>
To: Mathieu Poirier <mathieu.poirier@linaro.org>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Cc: linux-doc@vger.kernel.org, zhang.chunyan@linaro.org,
	mike.leach@arm.com, tor@ti.com, al.grant@arm.com, rabin@rab.in,
	Mathieu Poirier <mathieu.poirier@linaro.org>
Subject: Re: [PATCH V8 16/23] coresight: etb10: implementing AUX API
Date: Tue, 26 Jan 2016 17:53:56 +0200	[thread overview]
Message-ID: <8760yg72wb.fsf@ashishki-desk.ger.corp.intel.com> (raw)
In-Reply-To: <1452807977-8069-17-git-send-email-mathieu.poirier@linaro.org>

Mathieu Poirier <mathieu.poirier@linaro.org> writes:

> Adding an ETB10 specific AUX area operations to be used
> by the perf framework when events are initialised.
>
> Part of this operation involves modeling the mmap'ed area
> based on the specific ways a sink buffer gathers information.

I don't mind being CC'd on the rest of the patches too, btw. :)

> +static unsigned long etb_reset_buffer(struct coresight_device *csdev,
> +				      struct perf_output_handle *handle,
> +				      void *sink_config, bool *lost)
> +{
> +	unsigned long size = 0;
> +	struct cs_buffers *buf = sink_config;
> +
> +	if (buf) {
> +		/*
> +		 * In snapshot mode ->data_size holds the new address of the
> +		 * ring buffer's head.  The size itself is the whole address
> +		 * range since we want the latest information.
> +		 */
> +		if (buf->snapshot)
> +			handle->head = local_xchg(&buf->data_size,
> +						  buf->nr_pages << PAGE_SHIFT);
> +
> +		/*
> +		 * Tell the tracer PMU how much we got in this run and if
> +		 * something went wrong along the way.  Nobody else can use
> +		 * this cs_buffers instance until we are done.  As such
> +		 * resetting parameters here and squaring off with the ring
> +		 * buffer API in the tracer PMU is fine.
> +		 */
> +		*lost = local_xchg(&buf->lost, 0);

This is a thin ice, you can't really make assumptions about bool's
storage size or even type, afaict.

> +		size = local_xchg(&buf->data_size, 0);
> +	}
> +
> +	return size;
> +}
> +
> +static void etb_update_buffer(struct coresight_device *csdev,
> +			      struct perf_output_handle *handle,
> +			      void *sink_config)
> +{
> +	int i, cur;
> +	u8 *buf_ptr;
> +	u32 read_ptr, write_ptr, capacity;
> +	u32 status, read_data, to_read;
> +	unsigned long flags, offset;
> +	struct cs_buffers *buf = sink_config;
> +	struct etb_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
> +
> +	if (!buf)
> +		return;
> +
> +	capacity = drvdata->buffer_depth * ETB_FRAME_SIZE_WORDS;
> +
> +	spin_lock_irqsave(&drvdata->spinlock, flags);

This spinlock seems to be held over the entire readout operation,
however, I can't find clear rules wrt what structures etc are serialized
on it. Instead, the comment says "only one at a time pls". Same for
etm's big drvdata spinlock.

Regards,
--
Alex

  reply	other threads:[~2016-01-26 15:54 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-14 21:45 [PATCH V8 00/23] Coresight integration with perf Mathieu Poirier
2016-01-14 21:45 ` [PATCH V8 01/23] coresight: associating path with session rather than tracer Mathieu Poirier
2016-01-14 21:45 ` [PATCH V8 02/23] coresight: add API to get sink from path Mathieu Poirier
2016-01-14 21:45 ` [PATCH V8 03/23] coresight: moving PM runtime operations to core framework Mathieu Poirier
2016-01-14 21:45 ` [PATCH V8 04/23] coresight: etm3x: moving etm_readl/writel to header file Mathieu Poirier
2016-01-14 21:45 ` [PATCH V8 05/23] coresight: etm3x: moving sysFS entries to dedicated file Mathieu Poirier
2016-01-14 21:46 ` [PATCH V8 06/23] coresight: etm3x: unlocking tracers in default arch init Mathieu Poirier
2016-01-14 21:46 ` [PATCH V8 07/23] coresight: etm3x: splitting struct etm_drvdata Mathieu Poirier
2016-01-14 21:46 ` [PATCH V8 08/23] coresight: etm3x: adding operation mode for etm_enable() Mathieu Poirier
2016-01-14 21:46 ` [PATCH V8 09/23] coresight: etm3x: set progbit to stop trace collection Mathieu Poirier
2016-01-14 21:46 ` [PATCH V8 10/23] coresight: etm3x: changing default trace configuration Mathieu Poirier
2016-01-14 21:46 ` [PATCH V8 11/23] coresight: etm3x: consolidating initial config Mathieu Poirier
2016-01-14 21:46 ` [PATCH V8 12/23] coresight: etm3x: implementing user/kernel mode tracing Mathieu Poirier
2016-01-14 21:46 ` [PATCH V8 13/23] coresight: etm3x: implementing perf_enable/disable() API Mathieu Poirier
2016-01-14 21:46 ` [PATCH V8 14/23] coresight: etb10: moving to local atomic operations Mathieu Poirier
2016-01-14 21:46 ` [PATCH V8 15/23] coresight: etb10: adding operation mode for sink->enable() Mathieu Poirier
2016-01-14 21:46 ` [PATCH V8 16/23] coresight: etb10: implementing AUX API Mathieu Poirier
2016-01-26 15:53   ` Alexander Shishkin [this message]
2016-01-27 20:55     ` Mathieu Poirier
2016-01-14 21:46 ` [PATCH V8 17/23] coresight: updating documentation to reflect integration with perf Mathieu Poirier
2016-01-14 21:46 ` [PATCH V8 18/23] coresight: etm-perf: new PMU driver for ETM tracers Mathieu Poirier
2016-01-26 15:27   ` Alexander Shishkin
2016-01-27 18:33     ` Mathieu Poirier
2016-01-28 15:42       ` Alexander Shishkin
2016-01-28 21:12         ` Mathieu Poirier
2016-01-14 21:46 ` [PATCH V8 19/23] coresight: introducing a global trace ID function Mathieu Poirier
2016-01-14 21:46 ` [PATCH V8 20/23] perf tools: making function set_max_cpu_num() non static Mathieu Poirier
2016-01-25 20:46   ` Mathieu Poirier
2016-01-25 21:12     ` Arnaldo Carvalho de Melo
2016-01-25 21:29       ` Arnaldo Carvalho de Melo
2016-01-26 17:08         ` Mathieu Poirier
2016-01-26 18:51           ` Arnaldo Carvalho de Melo
2016-01-27 16:24             ` Mathieu Poirier
2016-02-03 10:15         ` [tip:perf/core] perf cpumap: Auto initialize cpu__max_{node,cpu} tip-bot for Arnaldo Carvalho de Melo
2016-01-14 21:46 ` [PATCH V8 21/23] perf tools: adding perf_evlist to *info_priv_size() Mathieu Poirier
2016-01-25 20:48   ` Mathieu Poirier
2016-01-25 21:08     ` Arnaldo Carvalho de Melo
2016-01-26 14:27       ` Adrian Hunter
2016-01-26 14:33         ` Arnaldo Carvalho de Melo
2016-01-29 10:14         ` Adrian Hunter
2016-02-03 10:17   ` [tip:perf/core] perf auxtrace: Add perf_evlist pointer " tip-bot for Mathieu Poirier
2016-01-14 21:46 ` [PATCH V8 22/23] perf tools: making coresight PMU listable Mathieu Poirier
2016-01-25 20:49   ` Mathieu Poirier
2016-01-25 21:10     ` Arnaldo Carvalho de Melo
2016-01-29 10:24       ` Adrian Hunter
2016-01-14 21:46 ` [PATCH V8 23/23] perf tools: adding coresight etm PMU record capabilities Mathieu Poirier
2016-01-25 20:51   ` Mathieu Poirier
2016-01-25 21:10     ` Arnaldo Carvalho de Melo
2016-01-29 10:34       ` Adrian Hunter
2016-01-29 17:37         ` Mathieu Poirier
2016-01-29 21:12           ` Arnaldo Carvalho de Melo
2016-01-29 22:24             ` Mathieu Poirier
2016-02-02 16:20               ` Mathieu Poirier
2016-02-02 16:41                 ` Arnaldo Carvalho de Melo
2016-02-03 16:11                   ` Mathieu Poirier

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=8760yg72wb.fsf@ashishki-desk.ger.corp.intel.com \
    --to=alexander.shishkin@linux.intel.com \
    --cc=al.grant@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.poirier@linaro.org \
    --cc=mike.leach@arm.com \
    --cc=rabin@rab.in \
    --cc=tor@ti.com \
    --cc=zhang.chunyan@linaro.org \
    /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;
as well as URLs for NNTP newsgroup(s).