lkml.org 
[lkml]   [2017]   [Jul]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC] perf: Delayed userspace unwind (Was: [PATCH v3 00/10] x86: ORC unwinder)
    On Fri, Jul 28, 2017 at 04:13:25PM +0200, Jiri Olsa wrote:
    > On Tue, Jul 25, 2017 at 01:55:12PM +0200, Peter Zijlstra wrote:
    >
    > SNIP
    >
    > >
    > > diff --git a/kernel/events/callchain.c b/kernel/events/callchain.c
    > > index 1b2be63c8528..c98a12f3592c 100644
    > > --- a/kernel/events/callchain.c
    > > +++ b/kernel/events/callchain.c
    > > @@ -12,6 +12,7 @@
    > > #include <linux/perf_event.h>
    > > #include <linux/slab.h>
    > > #include <linux/sched/task_stack.h>
    > > +#include <linux/task_work.h>
    > >
    > > #include "internal.h"
    > >
    > > @@ -178,19 +179,94 @@ put_callchain_entry(int rctx)
    > > put_recursion_context(this_cpu_ptr(callchain_recursion), rctx);
    > > }
    > >
    > > +static struct perf_callchain_entry __empty = { .nr = 0, };
    > > +
    > > +static void perf_callchain_work(struct callback_head *work)
    > > +{
    > > + struct perf_event *event = container_of(work, struct perf_event, pending_callchain);
    > > + struct perf_output_handle handle;
    > > + struct perf_sample_data sample;
    > > + size_t size;
    > > + int ret;
    > > +
    > > + struct {
    > > + struct perf_event_header header;
    > > + } callchain_event = {
    > > + .header = {
    > > + .type = PERF_RECORD_CALLCHAIN,
    > > + .misc = 0,
    > > + .size = sizeof(callchain_event),
    > > + },
    > > + };
    >
    > how about we make this generic for all user space sample_type?
    >
    > I think we could certainly use it for PERF_SAMPLE_STACK_USER,
    > maybe PERF_SAMPLE_REGS_USER would also help.. just a little ;-)
    >
    > I'll check on that

    Right, so I put all the magic in the callchain code itself, which would
    make that a wee bit harder. But yes, putting all the USER stuff in there
    makes sense.

    \
     
     \ /
      Last update: 2017-07-28 16:21    [W:4.419 / U:0.172 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site