lkml.org 
[lkml]   [2017]   [May]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v5 23/32] swiotlb: Add warnings for use of bounce buffers with SME
    From
    Date
    On 5/16/2017 9:52 AM, Borislav Petkov wrote:
    > On Tue, Apr 18, 2017 at 04:20:19PM -0500, Tom Lendacky wrote:
    >> Add warnings to let the user know when bounce buffers are being used for
    >> DMA when SME is active. Since the bounce buffers are not in encrypted
    >> memory, these notifications are to allow the user to determine some
    >> appropriate action - if necessary.
    >>
    >> Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    >> ---
    >> arch/x86/include/asm/mem_encrypt.h | 11 +++++++++++
    >> include/linux/dma-mapping.h | 11 +++++++++++
    >> include/linux/mem_encrypt.h | 6 ++++++
    >> lib/swiotlb.c | 3 +++
    >> 4 files changed, 31 insertions(+)
    >>
    >> diff --git a/arch/x86/include/asm/mem_encrypt.h b/arch/x86/include/asm/mem_encrypt.h
    >> index 0637b4b..b406df2 100644
    >> --- a/arch/x86/include/asm/mem_encrypt.h
    >> +++ b/arch/x86/include/asm/mem_encrypt.h
    >> @@ -26,6 +26,11 @@ static inline bool sme_active(void)
    >> return !!sme_me_mask;
    >> }
    >>
    >> +static inline u64 sme_dma_mask(void)
    >> +{
    >> + return ((u64)sme_me_mask << 1) - 1;
    >> +}
    >> +
    >> void __init sme_early_encrypt(resource_size_t paddr,
    >> unsigned long size);
    >> void __init sme_early_decrypt(resource_size_t paddr,
    >> @@ -50,6 +55,12 @@ static inline bool sme_active(void)
    >> {
    >> return false;
    >> }
    >> +
    >> +static inline u64 sme_dma_mask(void)
    >> +{
    >> + return 0ULL;
    >> +}
    >> +
    >> #endif
    >>
    >> static inline void __init sme_early_encrypt(resource_size_t paddr,
    >> diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
    >> index 0977317..f825870 100644
    >> --- a/include/linux/dma-mapping.h
    >> +++ b/include/linux/dma-mapping.h
    >> @@ -10,6 +10,7 @@
    >> #include <linux/scatterlist.h>
    >> #include <linux/kmemcheck.h>
    >> #include <linux/bug.h>
    >> +#include <linux/mem_encrypt.h>
    >>
    >> /**
    >> * List of possible attributes associated with a DMA mapping. The semantics
    >> @@ -577,6 +578,11 @@ static inline int dma_set_mask(struct device *dev, u64 mask)
    >>
    >> if (!dev->dma_mask || !dma_supported(dev, mask))
    >> return -EIO;
    >> +
    >> + if (sme_active() && (mask < sme_dma_mask()))
    >> + dev_warn_ratelimited(dev,
    >> + "SME is active, device will require DMA bounce buffers\n");
    >
    > Bah, no need to break that line - just let it stick out. Ditto for the
    > others.

    Ok.

    Thanks,
    Tom

    >

    \
     
     \ /
      Last update: 2017-05-19 21:56    [W:3.758 / U:0.344 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site