Messages in this thread | | | Subject | Re: [PATCH] smp: fix smp_call_function_single_async prototype | From | Jens Axboe <> | Date | Thu, 29 Apr 2021 09:54:10 -0600 |
| |
On 4/29/21 9:09 AM, 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.
I think that's the right approach, rather than work-around it in eg blk-mq.
Acked-by: Jens Axboe <axboe@kernel.dk>
-- Jens Axboe
| |