Skip to content
  • Arnd Bergmann's avatar
    smp: Fix smp_call_function_single_async prototype · 1139aeb1
    Arnd Bergmann authored
    As of commit 966a9671 ("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 4ccafe03
    
     ("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.
    
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: default avatarJens Axboe <axboe@kernel.dk>
    Link: https://lkml.kernel.org/r/20210505211300.3174456-1-arnd@kernel.org
    1139aeb1