On Tue, Apr 18, 2023 at 12:30 PM Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote: > > On Mon, Apr 17, 2023 at 06:22:14PM +0200, John Stultz wrote: > > On Mon, Apr 17, 2023 at 1:19 PM Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote: > > > > > > On Wed, Apr 12, 2023 at 03:59:05AM +0000, John Stultz wrote: > > > > Apparently despite it being marked inline, the compiler > > > > may not inline __down_read_common() which makes it difficult > > > > to identify the cause of lock contention, as the blocked > > > > function will always be listed as __down_read_common(). > > > > > > > > So this patch adds __always_inline annotation to the > > > > function to force it to be inlines so the calling function > > > > will be listed. > > > > > > I'm a wee bit confused; what are you looking at? Wchan? > > > > Apologies! Yes, traceevent data via wchan, sorry I didn't make that clear. > > No worries; good addition to the v3 Changelog ;-) > > > > What is stopping > > > the compiler from now handing you > > > __down_read{,_interruptible,_killable}() instead? Is that fine? > > > > No, we want to make the blocked calling function, rather than the > > locking functions, visible in the tracepoints captured. That said, the > > other __down_read* functions seem to be properly inlined in practice > > (Waiman's theory as to why sounds convincing to me). > > Right, but we should not rely on the compiler heuristics for correctness > :-) > > > If you'd like I can add those as well to be always_inline, as well so > > it's more consistent? > > Yes please. I'm not sure I care much about the whole 'inline __sched' vs > '__always_inline' thing, but I do feel it should all be consistently > applied. Sounds good. I'll respin with this. Thanks so much for the review! -john