}
counter = ctrs[i];
if (first) {
- eu = counter->hw_event.exclude_user;
- ek = counter->hw_event.exclude_kernel;
- eh = counter->hw_event.exclude_hv;
+ eu = counter->attr.exclude_user;
+ ek = counter->attr.exclude_kernel;
+ eh = counter->attr.exclude_hv;
first = 0;
- } else if (counter->hw_event.exclude_user != eu ||
- counter->hw_event.exclude_kernel != ek ||
- counter->hw_event.exclude_hv != eh) {
+ } else if (counter->attr.exclude_user != eu ||
+ counter->attr.exclude_kernel != ek ||
+ counter->attr.exclude_hv != eh) {
return -EAGAIN;
}
}
/*
* Add in MMCR0 freeze bits corresponding to the
- * hw_event.exclude_* bits for the first counter.
+ * attr.exclude_* bits for the first counter.
* We have already checked that all counters have the
* same values for these bits as the first counter.
*/
counter = cpuhw->counter[0];
- if (counter->hw_event.exclude_user)
+ if (counter->attr.exclude_user)
cpuhw->mmcr[0] |= MMCR0_FCP;
- if (counter->hw_event.exclude_kernel)
+ if (counter->attr.exclude_kernel)
cpuhw->mmcr[0] |= freeze_counters_kernel;
- if (counter->hw_event.exclude_hv)
+ if (counter->attr.exclude_hv)
cpuhw->mmcr[0] |= MMCR0_FCHV;
/*
continue;
}
val = 0;
- if (counter->hw.irq_period) {
+ if (counter->hw.sample_period) {
left = atomic64_read(&counter->hw.period_left);
if (left < 0x80000000L)
val = 0x80000000L - left;
s64 val, left;
unsigned long flags;
- if (!counter->hw.idx || !counter->hw.irq_period)
+ if (!counter->hw.idx || !counter->hw.sample_period)
return;
local_irq_save(flags);
perf_disable();
power_pmu_read(counter);
- left = counter->hw.irq_period;
+ left = counter->hw.sample_period;
val = 0;
if (left < 0x80000000L)
val = 0x80000000L - left;
int n;
u64 alt[MAX_EVENT_ALTERNATIVES];
- if (counter->hw_event.exclude_user
- || counter->hw_event.exclude_kernel
- || counter->hw_event.exclude_hv
- || counter->hw_event.irq_period)
+ if (counter->attr.exclude_user
+ || counter->attr.exclude_kernel
+ || counter->attr.exclude_hv
+ || counter->attr.sample_period)
return 0;
if (ppmu->limited_pmc_event(ev))
if (!ppmu)
return ERR_PTR(-ENXIO);
- if (!perf_event_raw(&counter->hw_event)) {
- ev = perf_event_id(&counter->hw_event);
+ if (!perf_event_raw(&counter->attr)) {
+ ev = perf_event_id(&counter->attr);
if (ev >= ppmu->n_generic || ppmu->generic_events[ev] == 0)
return ERR_PTR(-EOPNOTSUPP);
ev = ppmu->generic_events[ev];
} else {
- ev = perf_event_config(&counter->hw_event);
+ ev = perf_event_config(&counter->attr);
}
counter->hw.config_base = ev;
counter->hw.idx = 0;
* the user set it to.
*/
if (!firmware_has_feature(FW_FEATURE_LPAR))
- counter->hw_event.exclude_hv = 0;
+ counter->attr.exclude_hv = 0;
/*
* If this is a per-task counter, then we can use
counter->hw.config = events[n];
counter->hw.counter_base = cflags[n];
- atomic64_set(&counter->hw.period_left, counter->hw.irq_period);
+ atomic64_set(&counter->hw.period_left, counter->hw.sample_period);
/*
* See if we need to reserve the PMU.
static void record_and_restart(struct perf_counter *counter, long val,
struct pt_regs *regs, int nmi)
{
- u64 period = counter->hw.irq_period;
+ u64 period = counter->hw.sample_period;
s64 prev, delta, left;
int record = 0;
u64 addr, mmcra, sdsync;
*/
if (record) {
addr = 0;
- if (counter->hw_event.record_type & PERF_RECORD_ADDR) {
+ if (counter->attr.record_type & PERF_RECORD_ADDR) {
/*
* The user wants a data address recorded.
* If we're not doing instruction sampling,