From: Nathan Chancellor <nathan@xxxxxxxxxx> Sent: Sunday, February 6, 2022 5:38 PM > > Hi Michael, > > On Sun, Feb 06, 2022 at 11:36:56AM -0800, Michael Kelley wrote: > > Using DMA_BIT_MASK(64) as an initializer for a global variable > > causes problems with Clang 12.0.1. The compiler doesn't understand > > that value 64 is excluded from the shift at compile time, resulting > > in a build error. > > > > While this is a compiler problem, avoid the issue by setting up > > the dma_mask memory as part of struct hv_device, and initialize > > it using dma_set_mask(). > > > > Reported-by: Nathan Chancellor <nathan@xxxxxxxxxx> > > Reported-by: Vitaly Chikunov <vt@xxxxxxxxxxxx> > > Reported-by: Jakub Kicinski <kuba@xxxxxxxxxx> > > Fixes: 743b237c3a7b ("scsi: storvsc: Add Isolation VM support for storvsc driver") > > Signed-off-by: Michael Kelley <mikelley@xxxxxxxxxxxxx> > > Thanks a lot for working around this. I am hoping that this will be > fixed in clang soon, as it is high priority on our list of issues to > fix. Once it has been fixed, we should be able to undo this workaround > in one way or another. FWIW, the new code is as good a solution as the old code. The new code also follows some existing patterns, such as with struct platform_device. As such, I don't think of this as a workaround that needs to be undone in the future. Michael > > I can confirm the warning is resolved, which will allow us to build > ARCH=arm64 and ARCH=x86_64 allmodconfig with -Werror on mainline with > clang once another fix [1] is merged. > > Reviewed-by: Nathan Chancellor <nathan@xxxxxxxxxx> > Tested-by: Nathan Chancellor <nathan@xxxxxxxxxx> >