Re: [PATCH v2 13/16] perf parse-events: Improvements to modifier parsing

Liang, Kan
2024-04-19T13:21:10Z

On 2024-04-19 2:22 a.m., Ian Rogers wrote:
>>> + /* Simple modifiers copied to the evsel. */
>>> + if (mod.precise) {
>>> + u8 precise = evsel->core.attr.precise_ip + mod.precise;
>>> + /*
>>> + * precise ip:
>>> + *
>>> + * 0 - SAMPLE_IP can have arbitrary skid
>>> + * 1 - SAMPLE_IP must have constant skid
>>> + * 2 - SAMPLE_IP requested to have 0 skid
>>> + * 3 - SAMPLE_IP must have 0 skid
>>> + *
>>> + * See also PERF_RECORD_MISC_EXACT_IP
>>> + */
>>> + if (precise > 3) {
>> The pmu_max_precise() should return the max precise the current kernel
>> supports. It checks the /sys/devices/cpu/caps/max_precise.
>>
>> I think we should use that value rather than hard code it to 3.
> I'll add an extra patch to do that. I'm a bit concerned it may break
> event parsing on platforms not supporting max_precise of 3.

The kernel already rejects the precise_ip > max_precise (using the same
x86_pmu_max_precise()). It should be fine to apply the same logic in the
tool.
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/x86/events/core.c#n566

Will the extra patch be sent separately?

Thanks,
Kan