Message ID | 20181213225110.6567.69313.stgit@tlendack-t1.amdoffice.net (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | kernel/dma/direct: Do not include SME mask in the DMA supported check | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | success | next/apply_patch Successfully applied |
snowpatch_ozlabs/build-ppc64le | success | build succeded & removed 0 sparse warning(s) |
snowpatch_ozlabs/build-ppc64be | success | build succeded & removed 0 sparse warning(s) |
snowpatch_ozlabs/build-ppc64e | success | build succeded & removed 0 sparse warning(s) |
snowpatch_ozlabs/build-pmac32 | success | build succeded & removed 0 sparse warning(s) |
snowpatch_ozlabs/checkpatch | warning | total: 0 errors, 1 warnings, 0 checks, 13 lines checked |
The mail seems to be so oddly encoded so that git-am fails on it. Can you resend as plain text?
On 12/15/2018 04:55 AM, Christoph Hellwig wrote: > The mail seems to be so oddly encoded so that git-am fails on it. Can > you resend as plain text? Hmmm... not sure what happened with that, but yeah, looking at the message source shows something strange went on. Let me take a look and I'll try to get a good version to you tommorow (Monday). Thanks, Tom >
On 12/16/2018 05:41 PM, Tom Lendacky wrote: > On 12/15/2018 04:55 AM, Christoph Hellwig wrote: >> The mail seems to be so oddly encoded so that git-am fails on it. Can >> you resend as plain text? > > Hmmm... not sure what happened with that, but yeah, looking at the message > source shows something strange went on. Let me take a look and I'll try to > get a good version to you tommorow (Monday). Must have been something with stgit... just resent using git format-patch and git send-email and it looks ok. Let me know if it's still not right when it gets to you. Thanks, Tom > > Thanks, > Tom > >>
diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c index 22a12ab..375c77e 100644 --- a/kernel/dma/direct.c +++ b/kernel/dma/direct.c @@ -309,7 +309,12 @@ int dma_direct_supported(struct device *dev, u64 mask) min_mask = min_t(u64, min_mask, (max_pfn - 1) << PAGE_SHIFT); - return mask >= phys_to_dma(dev, min_mask); + /* + * This check needs to be against the actual bit mask value, so + * use __phys_to_dma() here so that the SME encryption mask isn't + * part of the check. + */ + return mask >= __phys_to_dma(dev, min_mask); } int dma_direct_mapping_error(struct device *dev, dma_addr_t dma_addr)
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") Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com> --- kernel/dma/direct.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)