> On Thu, Jan 25, 2018 at 12:13:45PM -0800, [email protected] wrote:
> > @@ -512,6 +538,17 @@ static int uncore_pmu_event_add(struct
> perf_event *event, int flags)
> >     if (!box)
> >             return -ENODEV;
> >
> > +   /*
> > +    * The free funning counter is assigned in event_init().
> > +    * The free running counter event and free running counter
> > +    * are 1:1 mapped. It doesn't need to be tracked in event_list.
> > +    */
> > +   if (uncore_pmc_freerunning(hwc->idx)) {
> > +           if (flags & PERF_EF_START)
> > +                   uncore_pmu_event_start(event, 0);
> > +           return 0;
> > +   }
> > +
> >     ret = n = uncore_collect_events(box, event, false);
> >     if (ret < 0)
> >             return ret;
> 
> This will result in some (probably) unexpected scheduling artifacts.
> Probably the only way to really cure that is to have the free running
> counters in their own PMU and not share with the GP counters of this
> box.

I'm not quite sure what the unexpected scheduling artifacts could be.
But, yes, I can move all the free running counters to new PMU for SKX
and later platforms.

Thanks,
Kan

Reply via email to