RE: [RFC] perf/x86/intel/uncore: pmu->type->single_fixed question
From: Liang, Kan
Date: Wed Nov 30 2016 - 10:27:59 EST
>
> > hi,
> > I'm trying to find out some documentation background for this part of
> > uncore code:
> >
> > ---
> > static int uncore_pmu_event_init(struct perf_event *event) {
> > ...
> > if (event->attr.config == UNCORE_FIXED_EVENT) {
> > /* no fixed counter */
> > if (!pmu->type->fixed_ctl)
> > return -EINVAL;
> > /*
> > * if there is only one fixed counter, only the first pmu
> > * can access the fixed counter
> > */
> > if (pmu->type->single_fixed && pmu->pmu_idx > 0)
> > return -EINVAL;
> > ...
> > ---
> >
> > that for some uncore types (those with pmu->type->single_fixed) only
> > the first pmu (code_id == 0) will allow to touch the clocktick event
> >
> > other cores boxes will not allow to open clocktick event, eventhough
> > it's announced via /sys/../events/..
> >
> > I'm probably missing some HW logic of specific boxes that would
> > explain that, but I can't find it.
>
> The client uncore has a standalone clocktick fixed counter. It doesn't belong
> to any boxes, which is different from server uncore.
>
> But client and server uncore share the same uncore_pmu_event_init.
> So it forces that only the first box can access the fixed counter.
>
> Maybe we should create a clocktick box for client uncore to fix it.
>
> You can find the fixed counter information from 18.11.6 in latest SDM
> (Order Number: 325384-060US).
>
> There should be a Skylake client uncore document published somewhere.
> But I cannot find it from Google. Let me ask around.
Here is the published document.
http://www.intel.com/content/www/us/en/processors/core/6th-gen-core-family-uncore-performance-monitoring-manual.html
>
> Thanks,
> Kan