Hey Boris, On Fri, 25 Oct 2024 at 13:41, Borislav Petkov <bp@xxxxxxxxx> wrote: > > On Fri, Jul 12, 2024 at 05:00:19PM +0000, Brendan Jackman wrote: > > +/* > > + * Can be used for functions which themselves are not strictly noinstr, but > > + * may be called from noinstr code. > > + */ > > +#define inline_or_noinstr \ > > Hmm, this is confusing. So is it noinstr or is it getting inlined? We don't care if it's getting inlined, which is kinda the point. This annotation means "you may call this function from noinstr code". My current understanding is that the normal noinstr annotation means "this function fundamentally mustn't be instrumented". So with inline_or_noinstr you get: 1. "Documentation" that the function itself doesn't have any problem with getting traced etc. 2. Freedom for the compiler to inline or not. > I'd expect you either always inline the small functions - as you do for some > aleady - or mark the others noinstr. But not something in between. > > Why this? Overall it's pretty likely I'm wrong about the subtlety of noinstr's meaning. And the benefits I listed above are pretty minor. I should have looked into this as it would have been an opportunity to reduce the patch count of this RFC! Maybe I'm also forgetting something more important, perhaps Junaid will weigh in...