mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-25 21:24:08 +08:00
powerpc/perf: Infrastructure to support checking of attr.config*
Introduce code to support the checking of attr.config* for values which are reserved for a given platform. Performance Monitoring Unit (PMU) configuration registers have fields that are reserved and some specific values for bit fields are reserved. For ex., MMCRA[61:62] is Random Sampling Mode (SM) and value of 0b11 for this field is reserved. Writing non-zero or invalid values in these fields will have unknown behaviours. Patch adds a generic call-back function "check_attr_config" in "struct power_pmu", to be called in event_init to check for attr.config* values for a given platform. Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20210408074504.248211-1-maddy@linux.ibm.com
This commit is contained in:
parent
59fd366b9b
commit
2e2a441d2c
@ -67,6 +67,12 @@ struct power_pmu {
|
||||
* the pmu supports extended perf regs capability
|
||||
*/
|
||||
int capabilities;
|
||||
/*
|
||||
* Function to check event code for values which are
|
||||
* reserved. Function takes struct perf_event as input,
|
||||
* since event code could be spread in attr.config*
|
||||
*/
|
||||
int (*check_attr_config)(struct perf_event *ev);
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -1963,6 +1963,17 @@ static int power_pmu_event_init(struct perf_event *event)
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
/*
|
||||
* PMU config registers have fields that are
|
||||
* reserved and some specific values for bit fields are reserved.
|
||||
* For ex., MMCRA[61:62] is Randome Sampling Mode (SM)
|
||||
* and value of 0b11 to this field is reserved.
|
||||
* Check for invalid values in attr.config.
|
||||
*/
|
||||
if (ppmu->check_attr_config &&
|
||||
ppmu->check_attr_config(event))
|
||||
return -EINVAL;
|
||||
|
||||
event->hw.config_base = ev;
|
||||
event->hw.idx = 0;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user