Messages in this thread | | | Date | Thu, 6 May 2021 12:10:52 +0200 | From | Peter Zijlstra <> | Subject | Re: [PATCH] [v2] smp: fix smp_call_function_single_async prototype |
| |
On Wed, May 05, 2021 at 11:12:42PM +0200, Arnd Bergmann wrote: > From: Arnd Bergmann <arnd@arndb.de> > > As of commit 966a967116e6 ("smp: Avoid using two cache lines for struct > call_single_data"), the smp code prefers 32-byte aligned call_single_data > objects for performance reasons, but the block layer includes an instance > of this structure in the main 'struct request' that is more senstive > to size than to performance here, see 4ccafe032005 ("block: unalign > call_single_data in struct request"). > > The result is a violation of the calling conventions that clang correctly > points out: > > block/blk-mq.c:630:39: warning: passing 8-byte aligned argument to 32-byte aligned parameter 2 of 'smp_call_function_single_async' may result in an unaligned pointer access [-Walign-mismatch] > smp_call_function_single_async(cpu, &rq->csd); > > It does seem that the usage of the call_single_data without cache line > alignment should still be allowed by the smp code, so just change the > function prototype so it accepts both, but leave the default alignment > unchanged for the other users. This seems better to me than adding > a local hack to shut up an otherwise correct warning in the caller. > > Link: https://lore.kernel.org/linux-block/20210330230249.709221-1-jiancai@google.com/ > Link: https://github.com/ClangBuiltLinux/linux/issues/1328 > Acked-by: Jens Axboe <axboe@kernel.dk> > Cc: Jian Cai <jiancai@google.com> > Cc: Guenter Roeck <linux@roeck-us.net> > Cc: Peter Zijlstra <peterz@infradead.org> > Cc: "Huang, Ying" <ying.huang@intel.com> > Cc: Borislav Petkov <bp@suse.de> > Cc: Eric Dumazet <eric.dumazet@gmail.com> > Cc: Juergen Gross <jgross@suse.com> > Cc: Michael Ellerman <mpe@ellerman.id.au> > Cc: Thomas Gleixner <tglx@linutronix.de> > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Thanks!
| |