Messages in this thread | | | Date | Tue, 12 Jul 2022 10:29:17 +1000 | From | Nicholas Piggin <> | Subject | Re: [PATCH 05/13] locking/qspinlock: be less clever with the preprocessor |
| |
Excerpts from Peter Zijlstra's message of July 6, 2022 3:08 am: > On Tue, Jul 05, 2022 at 12:38:12AM +1000, Nicholas Piggin wrote: >> Stop qspinlock.c including itself and avoid most of the function >> renaming with the preprocessor. >> >> This is mostly done by having the common slowpath code take a 'bool >> paravirt' argument and adjusting code based on that. > > What does code-gen do? Is it clever enough to constant fold the lot? > > Should we be using __always_inline to ensure the compiler doesn't decide > against inlining because $raisin and then emitting extra condtionals? >
It seems to fold it. Code is just different enough to make it hard to follow what the asm differences are exactly but doesn't seem to pass 'paravirt' anywhere.
Yes it does need __always_inline certainly. Only one path will ever be used at runtime so any icache sharing decision by the compiler would be wrong (and we don't care about image size very much).
Thanks, Nick
| |