forked from luck/tmp_suning_uos_patched
sparc64: Support RAW perf events.
Encoding is "(encoding << 16) | pic_mask" Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b19f820039
commit
b343ae51c1
|
@ -1038,6 +1038,7 @@ static int __hw_perf_event_init(struct perf_event *event)
|
|||
if (atomic_read(&nmi_active) < 0)
|
||||
return -ENODEV;
|
||||
|
||||
pmap = NULL;
|
||||
if (attr->type == PERF_TYPE_HARDWARE) {
|
||||
if (attr->config >= sparc_pmu->max_events)
|
||||
return -EINVAL;
|
||||
|
@ -1046,9 +1047,18 @@ static int __hw_perf_event_init(struct perf_event *event)
|
|||
pmap = sparc_map_cache_event(attr->config);
|
||||
if (IS_ERR(pmap))
|
||||
return PTR_ERR(pmap);
|
||||
} else
|
||||
} else if (attr->type != PERF_TYPE_RAW)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (pmap) {
|
||||
hwc->event_base = perf_event_encode(pmap);
|
||||
} else {
|
||||
/* User gives us "(encoding << 16) | pic_mask" for
|
||||
* PERF_TYPE_RAW events.
|
||||
*/
|
||||
hwc->event_base = attr->config;
|
||||
}
|
||||
|
||||
/* We save the enable bits in the config_base. */
|
||||
hwc->config_base = sparc_pmu->irq_bit;
|
||||
if (!attr->exclude_user)
|
||||
|
@ -1058,8 +1068,6 @@ static int __hw_perf_event_init(struct perf_event *event)
|
|||
if (!attr->exclude_hv)
|
||||
hwc->config_base |= sparc_pmu->hv_bit;
|
||||
|
||||
hwc->event_base = perf_event_encode(pmap);
|
||||
|
||||
n = 0;
|
||||
if (event->group_leader != event) {
|
||||
n = collect_events(event->group_leader,
|
||||
|
|
Loading…
Reference in New Issue
Block a user