Re: [PATCH 1/1] Drivers: hv: vmbus: Rework use of DMA_BIT_MASK(64)

From: Wei Liu
Date: Mon Feb 07 2022 - 13:03:49 EST


On Mon, Feb 07, 2022 at 02:42:31AM +0000, Michael Kelley (LINUX) wrote:
> 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.
>

Yes indeed.

Patch applied to hyperv-fixes. Thanks.