> 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.

Thanks,
Kan

Reply via email to