On Sat, Oct 26, 2013 at 07:07:06PM +0200, Stephane Eranian wrote: > On Fri, Oct 25, 2013 at 7:44 PM, Jiri Olsa <jo...@redhat.com> wrote: > > On Wed, Oct 23, 2013 at 02:58:05PM +0200, Stephane Eranian wrote:
SNIP > >> + list_for_each_entry(event, &pmu->active_list, active_entry) { > >> + rapl_event_update(event); > >> + } > > > > hi, > > I dont fully understand the reason for the timer, > > I'm probably missing something.. > > > The reason is rather simple and is similar to what happens with uncore. > The counter are narrow, 32-bit and there is no interrupt capability. We > need to poll the counters and accumulate in the sw counter to avoid missing > an overflow. > > > - the timer calls rapl_event_update for all defined events > > No, only for the defined RAPL events which is what we want. ok, that's what I meant > > > - but rapl_pmu_event_read calls rapl_event_update any time the > > event is read (sys_read) > > > Yes, but we want to prevent missing a counter overflow. It may happen > if the counter counts in a unit which increments fast. > > > The rapl_event_update only read msr and updates > > event->count|hw,prev_count. > No, it does update the count: > local64_add(sdelta, &event->count); ah, there's the shift that takes care of the overflowed msr value.. ok thanks, jirka -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/