perf: passing struct perf_event to function setup_aux()
authorMathieu Poirier <mathieu.poirier@linaro.org>
Thu, 28 Apr 2016 22:26:25 +0000 (16:26 -0600)
committerMathieu Poirier <mathieu.poirier@linaro.org>
Mon, 20 Jun 2016 17:09:46 +0000 (11:09 -0600)
Some information, like driver specific configuration, is found
in the perf event structure.  As such pass a 'struct perf_event'
to function setup_aux() rather than just the CPU number so that
individual drivers can make the right configuration when setting
up a session.

Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
drivers/hwtracing/coresight/coresight-etm-perf.c
include/linux/perf_event.h
kernel/events/ring_buffer.c

index 755125f7917f2cb6aa369fd88d28d763e688a9d6..f4174f36c5a095be2ed18c2528f59f4372127b76 100644 (file)
@@ -155,7 +155,7 @@ static void etm_free_aux(void *data)
        schedule_work(&event_data->work);
 }
 
-static void *etm_setup_aux(int event_cpu, void **pages,
+static void *etm_setup_aux(struct perf_event *event, void **pages,
                           int nr_pages, bool overwrite)
 {
        int cpu;
@@ -163,7 +163,7 @@ static void *etm_setup_aux(int event_cpu, void **pages,
        struct coresight_device *sink;
        struct etm_event_data *event_data = NULL;
 
-       event_data = alloc_event_data(event_cpu);
+       event_data = alloc_event_data(event->cpu);
        if (!event_data)
                return NULL;
 
index 6e02e62fa1d9015a4f054f2f8060845a03ce8cb5..ece8b9629a47bfe15099829ae91ebe4e28240f18 100644 (file)
@@ -378,7 +378,7 @@ struct pmu {
        /*
         * Set up pmu-private data structures for an AUX area
         */
-       void *(*setup_aux)              (int cpu, void **pages,
+       void *(*setup_aux)              (struct perf_event *event, void **pages,
                                         int nr_pages, bool overwrite);
                                        /* optional */
 
index 084be7d41bcf60dd9ecd7f7709755e6d05fb3f6e..8c60a4eb408057f9143f2d5c01c8047f145a5463 100644 (file)
@@ -562,7 +562,7 @@ int rb_alloc_aux(struct ring_buffer *rb, struct perf_event *event,
                        goto out;
        }
 
-       rb->aux_priv = event->pmu->setup_aux(event->cpu, rb->aux_pages, nr_pages,
+       rb->aux_priv = event->pmu->setup_aux(event, rb->aux_pages, nr_pages,
                                             overwrite);
        if (!rb->aux_priv)
                goto out;