Re: [PATCH 1/2] perf: Add persistent events

From: Borislav Petkov
Date: Thu Jun 03 2010 - 09:43:16 EST


From: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Date: Fri, May 28, 2010 at 08:07:10PM +0200

> They can be found at:
>
> http://programming.kicks-ass.net/sekrit/patches.tar.bz2
>
> ignore the last 5 patches, those are random hackery.
>
> In particular, look at:
>
> patches/perf-fix-buffer-redirect.patch
> patches/perf-buffer.patch
> patches/perf-buffer-init.patch
>
> (they won't apply separately in that order, simply push the full queue
> until the last one or further)
>
> After that you should be able to add:
>
> buffer = perf_buffer_alloc(nr_pages, watermark, cpu, flags);
> rcu_assign_pointer(event->buffer, buffer);
>
> to allocate and attach a buffer to your event (do so for each cpu's MCE
> event).
>
> After that we still need a way to expose all that to userspace, but at
> least the events will be complete and able to record bits ;-)

Yep, so far so good, the kernel side is almost done - this was the
easy part :). So recently I started looking into how the userspace
part could be done most efficiently so that, initially, the RAS daemon
doesn't suck in all of tools/perf when building and depend unnecessary
on libelf etc, and, at the same time, doesn't duplicate functionality
like util/debugfs, get_debugfs_mntpt(), parse_events() maybe later etc.

So, the best way to do this, IMHO, is if I start carving out common and
generic functionality into tools/lib/ or tools/util/ or similar so that
perf and ras can share those. And maybe later even other tools. This
could be where we host all the kernel headers stuff which are good for
userspace, i.e. those which are in tools/perf/util/include/linux/

Opinions, comments?

--
Regards/Gruss,
Boris.

Operating Systems Research Center
Advanced Micro Devices, Inc.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/