Message ID | 20230801232204.1481902-1-bvanassche@acm.org |
---|---|
State | New |
Headers | show |
Series | [v2] scsi: ufs: Fix the build for gcc 9 and before | expand |
On Wed, Aug 2, 2023, at 01:21, Bart Van Assche wrote: > 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> > Suggested-by: Arnd Bergmann <arnd@arndb.de> > Signed-off-by: Bart Van Assche <bvanassche@acm.org> Looks good to me, I gave it a quick spin with all versions from gcc-6 through gcc-10 to make sure this works for all of them. Tested-by: Arnd Bergmann <arnd@arndb.de>
Bart, > 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. Applied to 6.6/scsi-staging, thanks!
diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index 23335aaa6a66..4f5174735a4c 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -10564,6 +10564,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);
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> Suggested-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Bart Van Assche <bvanassche@acm.org> --- drivers/ufs/core/ufshcd.c | 8 ++++++++ 1 file changed, 8 insertions(+)