> 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