On Sat, Dec 22, 2018 at 04:32:40PM +0000, Lendacky, Thomas wrote: > commit c92a54cfa0257e8ffd66b2a17d49e9c0bd4b769f upstream > > This fix appears in 4.20, but dma_direct_supported() was changed in 4.20 > such that the original version of the fix will not apply to previous > versions of the kernel. The fix only applies to the 4.19-stable tree and > has been backported for that tree. > > The dma_direct_supported() function intends to check the DMA mask against > specific values. However, the phys_to_dma() function includes the SME > encryption mask, which defeats the intended purpose of the check. This > results in drivers that support less than 48-bit DMA (SME encryption mask > is bit 47) from being able to set the DMA mask successfully when SME is > active, which results in the driver failing to initialize. > > Change the function used to check the mask from phys_to_dma() to > __phys_to_dma() so that the SME encryption mask is not part of the check. > > Fixes: c1d0af1a1d5d ("kernel/dma/direct: take DMA offset into account in dma_direct_supported") > Cc: <stable@xxxxxxxxxxxxxxx> # 4.19.x > Signed-off-by: Tom Lendacky <thomas.lendacky@xxxxxxx> > --- > kernel/dma/direct.c | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-) Now queued up, thanks. greg k-h