Re: [PATCH] perf/core: fast breakpoint modification via _IOC_MODIFY_BREAKPOINT.

Milind Chabbi
2017-11-07T17:42:28Z

I am fine with Andi's suggestion. In summary,

1. I will introduce an ioctl flag _IOC_MODIFY_ATTRIBUTES.
(Yes, plural ATTRIBUTES not ATTRIBUTE)
2. Currently, implement only updates to breakpoints and all others
will fail with -EOPNOTSUPP.
3. The implementation of breakpoint update shall check the following
before modifying:
(event->attr.type == PERF_TYPE_BREAKPOINT) && (new_attr.type ==
PERF_TYPE_BREAKPOINT)
This ensures that both the passed in fd's event and the new_attr
are PERF_TYPE_BREAKPOINT.

Can we have a consensus on this?

Now the question is what other attribute values to check in
the implementation of the breakpoint update.

Do you expect all fields other than the ones that we allow modification remain
unchanged from the original creation time? and if anything changes
should we fail with -EOPNOTSUPP? I think that is too strict.
Expecting them to be zeros can be seen as a change from the original
values, hence zero is not the right expectation.
I am open to suggestions here and your help in listing a few attribute
fields that need
validation will be valuable.

-Milind

On Tue, Nov 7, 2017 at 9:24 AM, Andi Kleen <ak@linux.intel.com> wrote:
> On Tue, Nov 07, 2017 at 07:43:35AM -0800, Milind Chabbi wrote:
>> Peter,
>>
>> Generic update perf_event_attr interface is noble but impractical.
>> It will cause a validation nightmare.
>> Many of the behaviors or choices will become hard to reason.
>
> I don't think you would necessarily need to support modifying
> all of this. Just define a general interface that could be used
> to modify these things, but right now it would be only
> implemented for the special case of breakpoints.
>
> Your ioctl is very near it anyways, just need to change
> the name and do more sanity checking on the input values.
>
> -Andi