From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751704AbdB1Xl5 (ORCPT ); Tue, 28 Feb 2017 18:41:57 -0500 Received: from mail-by2nam03on0065.outbound.protection.outlook.com ([104.47.42.65]:17600 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751450AbdB1XlS (ORCPT ); Tue, 28 Feb 2017 18:41:18 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Subject: Re: [RFC PATCH v4 19/28] swiotlb: Add warnings for use of bounce buffers with SME To: Borislav Petkov References: <20170216154158.19244.66630.stgit@tlendack-t1.amdoffice.net> <20170216154619.19244.76653.stgit@tlendack-t1.amdoffice.net> <20170227175259.whl75utazbzxp7jo@pd.tnic> CC: , , , , , , , , , Rik van Riel , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , Toshimitsu Kani , Arnd Bergmann , "Jonathan Corbet" , Matt Fleming , "Michael S. Tsirkin" , Joerg Roedel , "Konrad Rzeszutek Wilk" , Paolo Bonzini , "Brijesh Singh" , Ingo Molnar , "Alexander Potapenko" , Andy Lutomirski , "H. Peter Anvin" , Andrey Ryabinin , "Thomas Gleixner" , Larry Woodman , "Dmitry Vyukov" From: Tom Lendacky Message-ID: <9b5af67b-0969-5402-cc01-3ea98f41b748@amd.com> Date: Tue, 28 Feb 2017 17:19:51 -0600 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1 MIME-Version: 1.0 In-Reply-To: <20170227175259.whl75utazbzxp7jo@pd.tnic> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: MWHPR1301CA0008.namprd13.prod.outlook.com (10.174.164.149) To DM5PR12MB1148.namprd12.prod.outlook.com (10.168.236.143) X-MS-Office365-Filtering-Correlation-Id: 753ed6c0-490a-445d-251c-08d460305034 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081);SRVR:DM5PR12MB1148; X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1148;3:mO8QwFKD+ZbNVaipYUDCMNMvzTPDtmRwSKisgR1axrymCFxcs5aeqzoZAeF/VUoow2jNN+LlTm7ryq7a7e4NQ0MkSp/KciJ78ygKI+umngbrylJ6GoF9kyQB0Gv4A/qDNVCsrbMQ3ufziw+Twaj5LhpWyLXpZE6zmx0/JLs5fOll0HksrRFgdMQMU9dY1AQf/8tEok+fxIZPzOIU0zEmXq18iL6X+lUv8gKAaqyXRh8qKaU5Aul1DuVxUkM9Tc8fpJ6gJ2bm1soZzqI6p+C693mNfQjoJBI3wzevXH1265E=;25:tKxzq4Jj8z86j3YElKLgKPWGHhwQsAg/PJT9ygcRD01oGuptVNyTBsRa4FArNoyZ8kZw2ZlA7RRpUwpOOgTSN8ibg8x+usCjobDRVEKeSVwwdzIszqqvPsVgpGcdVCZnfPSe8pcbkJohIvxx5Y9oenG7wKGOE567PneiFsUeF/SrePGVo/jQxH7BbQcRsjvd7fKYTC3Q7cLp+NIDv4t7bxn8mQwbS3az4Su0jqlMt+DLBUb8UWj/MmTeatnoWinbh+dZuenEi6tJMIGLd7lZUwCv69rk7rvIbcJs7vbNell3aPmn03z9okdg/Ig/Z9iVcMnIigU7fyCMTL+kNEeCXbvIfMtRQbAi0eqt8N5m/wqTjRAOpayYjcYnD14T6FtjJkewUcqBITxoYB3GlofbVSWwl6S/1Dt5O4uvClXQSPZo279r+wBaByu66abZ0YGtKY8JgWBDdFrF0RFMT6oO3Q== X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1148;31:3G/oGczo6+43tdQsWbaDG40gILKObQr3JDMGs97rpqo1qJl8bMUQRbx3Ey81tYkRI1VEzYFScPYXkNIO9wtvOgWmsYaNAC3ZCRxH4IjPZj96oN/B/8abG9q9pBRURDZwCYlqpFLV5QGbP82SaZbPpjGGi/pdlUqxPssus6jpCubXJzceTIbPrgckW2Br+AE2EmFyuEhaCDPSwMkYxM90JSd0d7akpKWuSXTFqQjL6Bb31irsKHpWPI41plUCXQNG;20:Qqgaec8RWzwEigOlgRiiTyN4ug6cL2IVahr3c4CPZ8rR22CuxIsn6m1MQXF6Bg92WCaiirLUKfGnAvCbe0LG9dE3GG1uwLoGe6Isnu3qMjrHtP/4+iClKDHdnZNZLRjdB+rruQajfT0zArapxAY2Tb7x0rT0TiKstzjqaqPy2zMrRH83yx3xQlpI106u+31G6qYrVNbMEASs5tP9l+KArHQ+3opX+6kT9AeRwVx7WAby9lCAtoTocxGdXqcOwkthouL4EQ978CNfZTlgBaxYsFzdOHzvShc+Js6oVl4b/a1C7bdGq8WbkT/51KoSbhrTTFkHQLgCUszkjBwr4/qUB/mpV03y6e8cxLaUbbNEBtV3c+PmghVv8r0wDmDxyeSZC7UECnZI8grmscEvgnGglZMlsiBZXiQlFikCmcXvrGyCJsUuxvFMf2rgGZ+HhFyFSN2BiL+e76v8rqfseHTfqL566PFum7U7dKWf30lumJbrjDSHl8L8sUe6Hn5yWD98 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123558025)(20161123562025)(20161123560025)(20161123555025)(20161123564025)(6072148);SRVR:DM5PR12MB1148;BCL:0;PCL:0;RULEID:;SRVR:DM5PR12MB1148; X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1148;4:DH5njqeMoidavyLl2rypb3beuL3fzlWR6uSOWGWd3yPmzX65s6sl9Z0Brz31AOLLcPEurjH59PvSHkJBMk0tWWxzD7guIek89Dcsw4aeOHQuTNEhuNdp5VLnAIrdvcq/CEAAzVg+Uba/YahFvixh3lsBllQy4cxqscluHtKWunSWDA0XkDCag7g9nJ7RJD4N81N789/wlnesYZ6FD6hVxKObbvg3kJo3Wd0ust3W0cLfSuMBxVRI9JzOSJyW3WkoulOXdXUYN7hAdUSK9xMYQ8IkEotJYYi14wxGeEiPfIWqyl8SXbV2SUJHIoRaKe+qjPjpd66TfRXvZLCNIBNvwEX8e4iuLYTPold3xFm5+eH4stFNKtESK6WywNHEJTNg83SuLE0q8FPtw58p750pFRO2q4uDQ5wEA1TBn+IG1sIhr+ltyhhJpPLf7geN8VaOr1vxsogj9FW8wyusZfoPBbzkH0CRKnp9fHv6nDXb7Q7FJrSkdOuCfhdayUv9XGKo/eypp87SrQJJEvUNFwX3BYsCvfSSysognJhyHBdIQjrG6D5dkCHZCJwYh0nXDAxP2rONDM7GaUZ2D1mT/SjZojsscfuw7XW59n2LBU6xVEcX722t8duzTUmfXlJkYZEjZCscvfUO2/f2QJXm8NrWZIbhFFPhThadJvPFYG3T3Xw= X-Forefront-PRVS: 0232B30BBC X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6049001)(6009001)(7916002)(39410400002)(39860400002)(39450400003)(39850400002)(39840400002)(199003)(189002)(24454002)(377454003)(2950100002)(36756003)(6916009)(50466002)(81166006)(65826007)(53546006)(106356001)(77096006)(92566002)(81156014)(31686004)(42186005)(8676002)(105586002)(6486002)(23676002)(2906002)(54906002)(90366009)(4326008)(25786008)(6666003)(5660300001)(53936002)(83506001)(68736007)(97736004)(4001350100001)(229853002)(7736002)(230700001)(33646002)(305945005)(76176999)(189998001)(7416002)(54356999)(101416001)(38730400002)(65956001)(65806001)(110136004)(47776003)(64126003)(31696002)(6246003)(86362001)(66066001)(50986999)(3846002)(6116002)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR12MB1148;H:[10.236.64.179];FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjEyTUIxMTQ4OzIzOkFXSThvei92anMzdWpCcnJ2NFZ0bUcvM1hN?= =?utf-8?B?STN0R1FYK0xmZ0swNnJhc1F2Y1Zlb1NMYkc0em5oNFY3azdQRkhDL2RYdmh3?= =?utf-8?B?eFJvSGtiZTVuV2Q1Y1Y1RlRJVm5uakdneU1VcGpDQWhzdHFhREFUUHJGekJD?= =?utf-8?B?K09DZU41VnZxYkNoYSsyY1dCYXRtOGxDSXBCTFB4ZFg5YjlGK0hsQVllc2lF?= =?utf-8?B?d1RVNGJqdkNVTTAzTG80c0o4V1cweUZPMVhwamM4dUIrS1QwMFo5U3RSM0ox?= =?utf-8?B?bjMzWWs5eEk3Vnk3enY4U0o2dE9URXRtT2ZraHZFOEZYSXRlbUhLd2g2MVdu?= =?utf-8?B?WmtHZFNrRmVKOGcwQ1RBWUxmYmRLNmQ2OFk2T2VGZU5MU1RUVHdWOHhac3RG?= =?utf-8?B?ZnV4TldHOEtnR1djUVhPWTcrRUdmZ2hENWo1NjZ0NnpGOE01V1ZBVmtXWXNB?= =?utf-8?B?SDgrVFIwcTdpZWthZjM0dUZwUG9WWlZQMFA1UXNpNG9NaGhvbHllYkR4MGVO?= =?utf-8?B?WmMxdlphUlQ3a3Q0ZXgvYk5ibUlJUGN6emsvbVV1aERtQ2NoN013ZjlBd2F2?= =?utf-8?B?K0xXMEJNbzZiczZyaWJva0w4ZmF1S3g4bWxFVFZxSXUxZkNCNmtJRzQ5eTdi?= =?utf-8?B?ZEVVUVE4UVN0NGJOMWJkU0ZXWFhVSTdTMWVWdE9MZHVJSW5BTTNlVnZCK095?= =?utf-8?B?dzB5V0JGT2cxWWVIcjBZUGppWGhrS0ZUdmZPRUtlMWNrcU9sSG82ejU3bzUv?= =?utf-8?B?OE5TYjlHbmpKZjlTYUI0K2JlYmRvbm5teGdCMFdyMUV2WTl2R1p3WThuRzBR?= =?utf-8?B?bkNNc3lNRXJrZTF0K0lMU2lPMW16Rm9JTFBoRHRnNG1nd0FTZk93dWVrNmhk?= =?utf-8?B?R1lOdFBERHp0Z2V1TTkrVzM2c1laNktzOTY3RDBwcDBPdTB4VGdaOVg5M2Jr?= =?utf-8?B?NEVBbElQa3ZvMjlvTkZ0czRGMER6VGp4OW5RcENYWXloTFk2YlNuS1hZeS9D?= =?utf-8?B?eVVEd2R3aEhpczZRankyam9WU0xIRDlsdUd3ckpBcWJPVmhET0h6Z1NJdFQ4?= =?utf-8?B?b3R4V3ZaYTBTYjVmT09WRzNhTjIySUtMZHIya1B6cU1lNkplODN5VU5lRmUx?= =?utf-8?B?b3BMUkRvMVZTckxGanREREUyQ1ZXREEzWkZjTjk3RmgxV05KUW80SUlNOGFo?= =?utf-8?B?b0MybUsvSHVVM3FTSFA1d3NpMHBkRmM4MkJZVVlycXg4bGxzVFovYkdZR3hi?= =?utf-8?B?QzdwS3BqbDZmUS9VVmtJZWpZcTNuSFV6VHB3WnJ3SVE4ak1YaExVV0owdzIz?= =?utf-8?B?ckNzSXU0TW9uUGdndDRZRDVzNGU4TzZ5c1lQY25lbjcxQlFUeWVYUGRrOEVp?= =?utf-8?B?dno2OTdpcTBvZ0JKMU1KdnBsRk96UnF4WXU3K2xtWjNGNlZuMUtMTW1kS0Q0?= =?utf-8?B?aW1ycTZ0UktrVDBUWHFRY1JWa0N0aFNHdzB5QU1yVXVTZlREVnhLY2VBM01t?= =?utf-8?B?UjRnSm1RTjdRZTV5NTI5QTl6S2FhZ1YrbVYxM2ZkWWw1MDhySVBMZzcwd0Nq?= =?utf-8?B?SG1lKzNwUUxCZXhIL0JuQXJzbElnTlEzUU84c2N4OFZkV1VaNWlEVXBBUXd4?= =?utf-8?B?TmFaeVNOK01lckxxbTA1K0NqT1hpMkY5SXVKWVlqUm9ma2dvaG93U3dTUmlv?= =?utf-8?B?OEFaSElCT0UwNGRKcm9PdFBUNE83eEdNRm5jMngyV05VYkRGd2QyRURpNlNh?= =?utf-8?B?ODEzc203WGxCNm1Zb2tCclN6QlIzK1A3Y1pZT3RzcUlLa0c5enY5TWFoajVk?= =?utf-8?B?YUxxaXRqVGlCaEFmMyt2Z09TcHE3UGdtMXBJUTFBcE9Pcll2THBybjVObVp3?= =?utf-8?B?Z1hZM3RRdVU0am9FWUJHOVNZaC8yOE9mYS9Od2NyUjBuNURhYmczMVJBSVM5?= =?utf-8?B?bGY0RmpiaDVxSmhsOWk5NGZUaGtCaHJtWUxMUHlqNGt5RzBhR3hDWDVIYUdo?= =?utf-8?B?cm0yNnBZZDlIZGU3cFVLOWxHNTRYSkNIdndFODN6d09oUVBqVzEvMnV2Rm9i?= =?utf-8?B?MXJrVi9vbjBkdFM2YUpOeTR1TllSYjIwRFBFMnVYbkdWTUNIZVVtL1czdlVM?= =?utf-8?Q?O//UWxVEnEeEslDo/lo4gAY=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1148;6:ETeIHdKWtyEwwpUNLwUuBkwjFOabk8UDcSwSaVTwctUu/ntk5E0/rAD2eCpeyfpPC72JmCG6OcaTFReoorB6Ho2RD0zCz3IqAU0F5CIN6aG0cxbdCwpxTeP02+lV4ahAqRK7oty+l8vPIWNmQSQnucvNPOSwoUPd5aD52wTiZCe1l/zPyUoHJs7qqs5XMooUaY7sYIBKrQmO0gFskM6AdyED3zkAWE0eNASVSEKyI7hq82v8hV6GePJurXLe8j/PFGRfSer468LdrHfOGcjExWiWczxW2/rURJMd4yWyjMLu/s+fdexay0eGNeMfHrDPw6iW5Gx70++JfKtiPapHmlbeED73ZlNY2NZGhBfwjo/TRxdZdhbiR+1KxWLzS/e5UYR8rf6mYynwMByPwrFy1VTQV84sGDrCkyu4mHS5Ge8=;5:iFz8TzpEjF2dAnM2UlVJ/eURH8OgpNqc/nTsWtqYTQP/YmsbR81vMjb6unIWZnctYaCvvOprHheQNtSLsykFG16YBShpgSUzvBQ62uiq77QgNxoVBYZbUTDwtnjl2dkejijPOWu9pEmT//UqNNjwbQ==;24:r32jrRoER5mcfaD23WjWiVuJtv2CypkMv4ssw06//NTHLC6L4jrPMJ+U7CfRXyhkYs78QLAEQFEXcb+KdF72MXz+O5tSevlEa5fDntvADyE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1148;7:z7DmEeECemoXtXDCHywsXvCZuZYXcqziWqIXKU4SGnkHuP2SJQQpBC0UVI5gJAz6MEKCnHsMLqHKEooYXTLKZ3yNXNDbOvvZDZE76DWLuLmC8Bf103H+Ytnrm8cVvAyigbod/f7Rd8pgdQibORfWTWh3Z9EhLYKRFXSdxxBPhKMnZV8+QHxQHHOPy034xlL/2NJ3J6mSFHtDRu58hrXE7JsNxoQtpWJ0cKtltlCHQWepkY8Gxk/ThufnoihTITeYHdWiW9CXP1b16Z74VTJzGSYwn4c1FdsTJJ2l2qZNSscqF+2rGpSuSzSia2o3me650aiLJYf1SGPOUi+8DIv01A==;20:TiHCfgRi5wZRZV1YbefDkeVfsdaozHw+6HkHCA9In4JTEOZjruSQKpDzjgPF2XyaMdIcB7g0rhyf56nfSzr30rsoLjW0pUvSlDx2lcdt7YYGLi9sgL/rhknfGzcxP9Zr6NvNW4f/HzU/7kwFcBFOApaWoKAQmgo0MeLMIfinr/nxp1mbEIz8JgV74zcj0BltRGAjANge2cBH4qGeYkW7dTeJeF0OSbnBkidhR/FqbJcldrPyx3uQCUehecNA5bxc X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2017 23:19:55.7990 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1148 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2/27/2017 11:52 AM, Borislav Petkov wrote: > On Thu, Feb 16, 2017 at 09:46:19AM -0600, 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 >> --- >> 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 87e816f..5a17f1b 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) ? true : false; >> } >> >> +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, >> @@ -53,6 +58,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 10c5a17..130bef7 100644 >> --- a/include/linux/dma-mapping.h >> +++ b/include/linux/dma-mapping.h >> @@ -10,6 +10,7 @@ >> #include >> #include >> #include >> +#include >> >> /** >> * List of possible attributes associated with a DMA mapping. The semantics >> @@ -557,6 +558,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(dev, >> + "SME is active, device will require DMA bounce buffers\n"); >> + > > Yes, definitely _once() here. Setting the mask is a probe/init type event, so I think not having the _once() would be better so that all devices that set a mask to something less than the SME encryption mask would be identified. This isn't done for every DMA, etc. > > It could be extended later to be per-device if the need arises. > > Also, a bit above in this function, we test if (ops->set_dma_mask) so > device drivers which supply even an empty ->set_dma_mask will circumvent > this check. > > It probably doesn't matter all that much right now because the > only driver I see right now defining this method, though, is > ethernet/intel/fm10k/fm10k_pf.c and some other arches' functionality > which is unrelated here. Device drivers don't supply set_dma_mask() since that is part of the dma_map_ops structure. The fm10k_pf.c file function is unrelated to this (it's part of an internal driver structure). The dma_map_ops structure is setup by the arch or an iommu. Thanks, Tom > > But still... > >