scsi: ufs: core: Fix the build for gcc 9 and before
authorBart Van Assche <bvanassche@acm.org>
Tue, 1 Aug 2023 23:21:50 +0000 (16:21 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 8 Aug 2023 01:12:32 +0000 (21:12 -0400)
gcc compilers before version 10 cannot do constant-folding for sub-byte
bitfields. This makes the compiler layout tests fail. Hence skip the layout
checks for gcc 9 and before.

Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Naresh Kamboju <naresh.kamboju@linaro.org>
Cc: Nathan Chancellor <nathan@kernel.org>
Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Closes: https://lore.kernel.org/linux-scsi/CA+G9fYur8UJoUyTLJFVEJPh-15TJ7kbdD2q8xVz8a3fLjkxxVw@mail.gmail.com/
Suggested-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20230801232204.1481902-1-bvanassche@acm.org
Tested-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/ufs/core/ufshcd.c

index 9f43b03f3b728ff546e31a63f0d5c967a449822d..8b5ee1a7d454ce7b053bd28c802f20a9ff36fea5 100644 (file)
@@ -10527,6 +10527,14 @@ static const struct dev_pm_ops ufshcd_wl_pm_ops = {
 
 static void ufshcd_check_header_layout(void)
 {
+       /*
+        * gcc compilers before version 10 cannot do constant-folding for
+        * sub-byte bitfields. Hence skip the layout checks for gcc 9 and
+        * before.
+        */
+       if (IS_ENABLED(CONFIG_CC_IS_GCC) && CONFIG_GCC_VERSION < 100000)
+               return;
+
        BUILD_BUG_ON(((u8 *)&(struct request_desc_header){
                                .cci = 3})[0] != 3);