From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932863AbcHVWy0 (ORCPT ); Mon, 22 Aug 2016 18:54:26 -0400 Received: from mail-by2nam03on0056.outbound.protection.outlook.com ([104.47.42.56]:45305 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932828AbcHVWyV (ORCPT ); Mon, 22 Aug 2016 18:54:21 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; From: Tom Lendacky Subject: [RFC PATCH v2 15/20] iommu/amd: AMD IOMMU support for memory encryption To: , , , , , , , , CC: Radim =?utf-8?b?S3LEjW3DocWZ?= , Arnd Bergmann , Jonathan Corbet , Matt Fleming , Joerg Roedel , "Konrad Rzeszutek Wilk" , Andrey Ryabinin , Ingo Molnar , Borislav Petkov , "Andy Lutomirski" , "H. Peter Anvin" , "Paolo Bonzini" , Alexander Potapenko , Thomas Gleixner , Dmitry Vyukov Date: Mon, 22 Aug 2016 17:38:20 -0500 Message-ID: <20160822223820.29880.17752.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20160822223529.29880.50884.stgit@tlendack-t1.amdoffice.net> References: <20160822223529.29880.50884.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: BLUPR05CA0048.namprd05.prod.outlook.com (10.141.20.18) To BN6PR12MB1138.namprd12.prod.outlook.com (10.168.226.140) X-MS-Office365-Filtering-Correlation-Id: 813d5c8e-5754-429d-d50d-08d3cadd066b X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1138;2:KyaIDqO66DFpeTS3Bq4it/OjNaDFssmhaDX1NAh9KE1LSeyk6OqPM9Prjeicx5XFhZbIUlfTvplyrKI83mJ3Au1Z+dzt+8c7CYuvDofkzSKaiJ4j+FLKKG98y9mZmZSYOAyBtx/jkS5GHGA/Sg6Pm/N4WxptAsvUWKGdYW8L1FKvPzdpH40toZfjcpG3CaiP;3:sKA/6JIwCHecwgARrOlVobR86qs+MWe5ncP28EMNNhKzSbb6yvU9zMLJGuOtOYRTleYjalgjGG/aX67hnapImEfkb/Ar9WpMeY1qyJhYtiza6uNNJb52fcHOjj5FB0qi;25:nEMjchBdGuvCp9o5rCSnxZ3jyk+/by8elBtXx+Gxs5QxrSTuWPMjI90DcNblvd81tZccO4b5/sJ84nZZRFp0or9/4oFX32w4FoLA8Nwh+5v0IvnCxz+ISRvhjyhq1TYYXW4SYvAbsJOKwyeifQaGoWrXAXFuEXOTPxS1yLSMNnQeiT9xqOO6O/lCdHgNG8ZkGZnwcxxIdAG3uihQ2kl5Gq10609e/xOGqhOpzhPf6P16gSMmAGRv+ymJz0JaCdmYd4G03XBvCykwPAu63CbgijxDHYjJG2lLjpomaPgb21tHI1kVfa5fPhaYR0Zv2oDQ/RGRgszOsM9E1rD3joBFuOOnYlLTcPyfj9/U83JeJQ+gbsCtiMqtVrhz+4TUmgTlagWM7AMAQs4vhGzzmfc8yHwx0FvBJsnu7V4tR+CgiuA= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN6PR12MB1138; X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1138;31:bn0nJkYKDFvdocYsyDU87wK0OKZI6kF795yaPh57ust5frmv/XhwEEd84yNdnNJwcR5SnD/1TJ0zf5GWlUZ9uaX618W2aMW15txIVyzBBtS2jwOjFmxHpreagsdWxDBZXjQx0vyf5AUhCA38SVq1/MBwyfppEasMHaKerzWE034YCOWEPl0dBO6xiq5XutLyKb9Svkb0NSf5G56D0pL4ovpMb1o5tloWkL14Ek1IpYY=;20:lUkbMq4qMEp4bqrdYkqfUG7Ap1UPsTfGh0nqLLwtbFegxwPH77zqpXUs5PvREsrPidrTahVSy4QOBYnoxwbxNAlHKc/WlhfrHwCG1uMvS64hxGrCi80MHaJ7E9yR0eXAT7xt/f8xS4UbMiJf80AEQLPd5tOw6fSCJyimZTDsqAyaP4xMccGmL7UOPaoX7k+hj2qMKAXhikj4Q2/dCibslfUHLTbhYE5UXh6qpvkmvepbHbBsou/DSI9uVBDA1MP5T8QiQsLvT8Un96N+/j79vvfp8ekV9dyC5vmKwtwC7uROqOeTJLIMY767JzfMnRmhAgpcRJ7mZUsa0ja2C581GHsBI2KKmjesV5mS4yGZazK9AVxTs3J6Zc77w8pNnRUZqPXiwCaMjKMtLj6V+Nb/ea9oOeYtF+uplM1lkry0nm2CIs4+cfkOm5XtKgjCJkK6HSmknwebipfV3BGYdzjPDjfrwTwwSxJ7WGlgOy7lgFNiTqP0QgfKbXUXY5Rqcs35 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026);SRVR:BN6PR12MB1138;BCL:0;PCL:0;RULEID:;SRVR:BN6PR12MB1138; X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1138;4:3BIB+ONzysfnIZtVcyEyQH0NdyN/vBogPVZO/QKVR2gkluqKe/ciQ2mz4zE1L/4UqFYFT0gF45+JjP2XVfdBjlsIvNzwtKwiJHWvJl1UORH/6QfM7qHNtgte2d7avrfJbyjHCefI5Qmn2IYHWldubPUMJe9043Hff0YPHsUs7bvzQtPHVu52y7YrO8dss5ufGZeA8LolMlZS9slDlWl+EkRhsG1Ypah3LU2IamE9qQpP8dX7ODgMpKeDkI4jd8WGHiYk65oEhlurHd0xUXAgBEF3q921TbM+aE3rqSY6+EnoNt8kma+2Z+4hWnoOGb39g6QPsXd62jjdJ+BCdUy6Ai2/fwnCoQu7vti87jzNZP/+vgNEhEtw6EkZl2UKSmE4T4ubtrNgwn0yGUKbSFV5xctWatKUBCNzioZIV6SQMbx/gdA1Pc4sQ07iRFvc2GfX X-Forefront-PRVS: 00429279BA X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(199003)(189002)(47776003)(9686002)(68736007)(7846002)(86362001)(19580395003)(7736002)(66066001)(230700001)(6116002)(42186005)(189998001)(103116003)(4326007)(69596002)(2906002)(19580405001)(1076002)(50466002)(305945005)(33646002)(83506001)(5660300001)(229853001)(105586002)(7416002)(54356999)(76176999)(50986999)(97746001)(2201001)(92566002)(8676002)(23676002)(77096005)(81156014)(586003)(3846002)(5001770100001)(4001350100001)(101416001)(53416004)(106356001)(2950100001)(81166006)(97736004)(71626007)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR12MB1138;H:tlendack-t1.amdoffice.net;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjZQUjEyTUIxMTM4OzIzOm53TzROamtVaG93MENZWG1oVlFQdWRPLzlZ?= =?utf-8?B?T1NsbmpiMjZ1YWp5STBqdlpIMzhManRvOWh5ZWRKdmhrb2VNV2ZGTWdzeDBw?= =?utf-8?B?M2pheWZ5dU4zRUNnNVlnVkowaDd6VjFOYVN6NGd6MWY0WUJuelVRN3VEb1Fr?= =?utf-8?B?bUlidCt5dEVZMGNqL0M1TWhZRDNkN1plYk83cUNUa25DZ28xeDBqdFNCakdR?= =?utf-8?B?d2sxTTNKMjVVRk5lQW5Fa3daVTdLb2YwQiszV1BQRHlqMUNENmo0TTJJRXpu?= =?utf-8?B?T1hETDdaK3BYSlVWMmxnZlhHS3lWTlJwbkYzOHlSclVJNUs2WEtOTVpCRFF5?= =?utf-8?B?NUY3ODErcHdJMlNZZXFkRU5yRHBndnkyU3UwR2VqdzlJSHZ3ajNvUzVVUU8r?= =?utf-8?B?cUVBc0VkM0YxeE13Q2lTdWF6R1ZKY21aakdjckUyZ3FZOS9MNFFsYnZkRGVQ?= =?utf-8?B?eEtrc1Rta1VYZ2xwaEhxOWU3L1NtRVJ5ajlnejBEYkdlMTN5SDBXVUxZOGRm?= =?utf-8?B?Zzgvc0tFaE9uNUh1UmZrL0VKK2hkTDMxSCs5UFlpVjlmRFNMUGdTZTkreDNM?= =?utf-8?B?SGhFS2JlUUZzcStXNGwya0I0eUQ1T2M0em5Jd3F3alRhQW4wUkVuMlpNZW9G?= =?utf-8?B?dFh6UTFwaFIvQ2N6bnJ3MlRGOC8xMUpweVBMRHhUcTREeXh4cTVtUlRrVUVF?= =?utf-8?B?WkVhRkNKWDZESmtwNnRtV2FubldSOW1kVDAyYlRBeHc2NzVlTklmSjNmd3Zk?= =?utf-8?B?ZWt4dUtUL0dndHdpb3pMV0ZrOEZ4UHFLVGJOV01FM3NkcldaL1M4ak9CY1Nn?= =?utf-8?B?ZlNCblFraGF1K0JoYnlRNmFNWTNXK1NIUHhqNnRIVHlCT1lnTGk5aWw1THIv?= =?utf-8?B?ak40RU9wdmdtVXZaVzRNajJJZzZYVXV3WTdlcjhXcFhoYWVZeCtYUnJEYy9M?= =?utf-8?B?RFIwWDJWYk1VbHg3ZThLODNHZkNxWXB5TnJtWWlBUHFxeURwTzNpbEU0ZUhl?= =?utf-8?B?akl6TFRITU5xNHlrR25vZEl1TUJ1L3NZT09VSlpWMmdaQ2tPM2FVUkx2MnIy?= =?utf-8?B?Ti85c3pXSGpzTkxOOGlVZjEvSDlkc0VDcHRYeThXd3NVeGdxa1lXQUhYamFR?= =?utf-8?B?WUhTMng2Y09SUkZnc01YSDRva05uMWZrWEZiQkFxMmhTYXZBcUxuZFdPVmFM?= =?utf-8?B?bkRlRnYyZGI5T0dRNnU0cnluaWxnajF5eG1YQTNwTDk0SHYxZEZSeUdzdFY3?= =?utf-8?B?d01RaEFEYWxrTzk5ek82blFpVmUvVWk5OEprTitOcjdyU0N6a1d6bFEyai9s?= =?utf-8?B?VkUzRWU2Y2tCQTQxazdJaGd3QkVHNUNwN1BqeFNQbzNVa3RMK1NWN01EU3Rp?= =?utf-8?B?UGE1MWRkQ0RlVWVQV3E0RkE1WC9odlBIaDRkTVJSa2kvTzI2TENrSGYwZWtH?= =?utf-8?B?RHE0RFdXZGxKNGdSbGZrM0l0ZDNEUTFaZmxFYVYxMEVmRlZEQVpmTkNSWm0w?= =?utf-8?B?SmRsUjhUOXEvclVTcHZXUUhyVmlUeW5yVkhGUE0rNnlvbGxLR1BCTnNUYW5Q?= =?utf-8?B?c3R4TWQ4dWNqZURiN0I0YUxDdXdWQUpLNlFEZTVrSFB4aWJCWVFpMVp1QjMr?= =?utf-8?B?MDBSSThUc2RRZ1UwWXN2b3RXM29ycWlCbGR0enAvTlhxUHBxSW9ZbmN3N0xC?= =?utf-8?B?NWI4ZzBLcHk4ZnYrc1pjSHhZWUpFcmVtbk5rVGZPQi93NVRWMjNwOFBrTVlJ?= =?utf-8?Q?yo7rzaveX9nXZtsZBhhcT2NeKHAacA7B6H1fg=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1138;6:pQ6aj+NlYkqEEgUwj10VYYlvSzy0np5jmdJI/ychtMMBqY9vByyBM7XssPhO4wMFbizM0j9y3vdFWkIjc2C1fCTuZh36ZzVr3dZDS/YBBJ5fnM6aLyV8VLFaDBCVcjnbIMcsH1YJiRPt7tHlVXfq+nEl4W20UonC+PJlqdEySctvnhp2Q0DQmZx1JHITZyLAl6bw2FbP9Uyv/J8TSGBfjNYxq1MOA6kMf4A+WfULUfyAK6FerNjHg4HKk77HfnbgSm+PpJJL5tfD6nm6DnIVuYd0PUkpxXnMLqvYox8Wa6xkp7mpWsHtJN2lCTngZ73hjztx9Ucg99DiWbrwAtgTTQ==;5:99blBh5cMWLE2h4EWWjsC99PSMCJAyaJ2CKOKVu38gXrZw3l3kc8n5/YXHHSAzPUwdZbbYNHRiKLEH++ZMrZ+bj7rki0GAC/H+NCYiUGbAdo9Qd1P8gqbQJUy0g5ZKn662AemRCEwPRMCb0Re9HszA==;24:zZgARBBorQG+9XuwYfjzjh5PfYwtul9aOCn9rrLseBdQjHi6J9s2C2pnx+bLseIZ5lEX36gJXYFyB5ejoOExEovQWFn/nfUX2EFs5aZE+cg=;7:bUZcfZmIg8zJlGPhG/OOZM0TIF9b4uqsdyQTJiOFwYLpKroVXFg+tfgyh98t4o9cWePQVGTWAVOLQ9GTyCktt3uwbuPRmCFXnrSMJfpp5EJsbYM0Yz1KUr7SZ1u6PNiFd8AEQFcatT+iw5zCWWQK1riOal5pcbslz8fR7LaIBFBPMSrCZ0vUKlP5bQhWLsDiS8JPmetAeZt6b0NRgc5K17Tk415S5HKRCeBCLdQu1tJ78VD50cj8AE5O+pZ+TWcI SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1138;20:Y5ZzRLN2U3lBXg/UdEfwRPrGolBLZeK4+5O95EB7orKcjWG5+2Lf2FamPaEDjSzoj8RA0ay7MxZHjin4O22jbktB8/p2JmQDpxpzFLyOj6r+sciGoK/9rzxJOge5b/8gwIkV2IXVL0jnzE4peDhQhvmAJlGHU3/sGh1L+D1CCi9rz8+L2dhcOqN4YKa34yzOR1i0QHIlMxqlrucza8v1coaTKq3cQFCHYlORWQm3Lk2/IA+RaA8ebMD+ed0w402q X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Aug 2016 22:38:22.0624 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1138 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add support to the AMD IOMMU driver to set the memory encryption mask if memory encryption is enabled. Signed-off-by: Tom Lendacky --- arch/x86/include/asm/mem_encrypt.h | 2 ++ arch/x86/mm/mem_encrypt.c | 5 +++++ drivers/iommu/amd_iommu.c | 10 ++++++++++ 3 files changed, 17 insertions(+) diff --git a/arch/x86/include/asm/mem_encrypt.h b/arch/x86/include/asm/mem_encrypt.h index 384fdfb..e395729 100644 --- a/arch/x86/include/asm/mem_encrypt.h +++ b/arch/x86/include/asm/mem_encrypt.h @@ -36,6 +36,8 @@ void __init sme_early_init(void); /* Architecture __weak replacement functions */ void __init mem_encrypt_init(void); +unsigned long amd_iommu_get_me_mask(void); + unsigned long swiotlb_get_me_mask(void); void swiotlb_set_mem_dec(void *vaddr, unsigned long size); diff --git a/arch/x86/mm/mem_encrypt.c b/arch/x86/mm/mem_encrypt.c index 6b2e8bf..2f28d87 100644 --- a/arch/x86/mm/mem_encrypt.c +++ b/arch/x86/mm/mem_encrypt.c @@ -185,6 +185,11 @@ void __init mem_encrypt_init(void) swiotlb_clear_encryption(); } +unsigned long amd_iommu_get_me_mask(void) +{ + return sme_me_mask; +} + unsigned long swiotlb_get_me_mask(void) { return sme_me_mask; diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c index 96de97a..63995e3 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c @@ -166,6 +166,15 @@ struct dma_ops_domain { static struct iova_domain reserved_iova_ranges; static struct lock_class_key reserved_rbtree_key; +/* + * Support for memory encryption. If memory encryption is supported, then an + * override to this function will be provided. + */ +unsigned long __weak amd_iommu_get_me_mask(void) +{ + return 0; +} + /**************************************************************************** * * Helper functions @@ -2302,6 +2311,7 @@ static dma_addr_t __map_single(struct device *dev, prot = dir2prot(direction); + paddr |= amd_iommu_get_me_mask(); start = address; for (i = 0; i < pages; ++i) { ret = iommu_map_page(&dma_dom->domain, start, paddr, From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom Lendacky Subject: [RFC PATCH v2 15/20] iommu/amd: AMD IOMMU support for memory encryption Date: Mon, 22 Aug 2016 17:38:20 -0500 Message-ID: <20160822223820.29880.17752.stgit@tlendack-t1.amdoffice.net> References: <20160822223529.29880.50884.stgit@tlendack-t1.amdoffice.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20160822223529.29880.50884.stgit@tlendack-t1.amdoffice.net> Sender: owner-linux-mm@kvack.org To: linux-arch@vger.kernel.org, linux-efi@vger.kernel.org, kvm@vger.kernel.org, linux-doc@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, iommu@lists.linux-foundation.org Cc: Radim =?utf-8?b?S3LEjW3DocWZ?= , Arnd Bergmann , Jonathan Corbet , Matt Fleming , Joerg Roedel , Konrad Rzeszutek Wilk , Andrey Ryabinin , Ingo Molnar , Borislav Petkov , Andy Lutomirski , "H. Peter Anvin" , Paolo Bonzini , Alexander Potapenko , Thomas Gleixner , Dmitry Vyukov List-Id: linux-efi@vger.kernel.org Add support to the AMD IOMMU driver to set the memory encryption mask if memory encryption is enabled. Signed-off-by: Tom Lendacky --- arch/x86/include/asm/mem_encrypt.h | 2 ++ arch/x86/mm/mem_encrypt.c | 5 +++++ drivers/iommu/amd_iommu.c | 10 ++++++++++ 3 files changed, 17 insertions(+) diff --git a/arch/x86/include/asm/mem_encrypt.h b/arch/x86/include/asm/mem_encrypt.h index 384fdfb..e395729 100644 --- a/arch/x86/include/asm/mem_encrypt.h +++ b/arch/x86/include/asm/mem_encrypt.h @@ -36,6 +36,8 @@ void __init sme_early_init(void); /* Architecture __weak replacement functions */ void __init mem_encrypt_init(void); +unsigned long amd_iommu_get_me_mask(void); + unsigned long swiotlb_get_me_mask(void); void swiotlb_set_mem_dec(void *vaddr, unsigned long size); diff --git a/arch/x86/mm/mem_encrypt.c b/arch/x86/mm/mem_encrypt.c index 6b2e8bf..2f28d87 100644 --- a/arch/x86/mm/mem_encrypt.c +++ b/arch/x86/mm/mem_encrypt.c @@ -185,6 +185,11 @@ void __init mem_encrypt_init(void) swiotlb_clear_encryption(); } +unsigned long amd_iommu_get_me_mask(void) +{ + return sme_me_mask; +} + unsigned long swiotlb_get_me_mask(void) { return sme_me_mask; diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c index 96de97a..63995e3 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c @@ -166,6 +166,15 @@ struct dma_ops_domain { static struct iova_domain reserved_iova_ranges; static struct lock_class_key reserved_rbtree_key; +/* + * Support for memory encryption. If memory encryption is supported, then an + * override to this function will be provided. + */ +unsigned long __weak amd_iommu_get_me_mask(void) +{ + return 0; +} + /**************************************************************************** * * Helper functions @@ -2302,6 +2311,7 @@ static dma_addr_t __map_single(struct device *dev, prot = dir2prot(direction); + paddr |= amd_iommu_get_me_mask(); start = address; for (i = 0; i < pages; ++i) { ret = iommu_map_page(&dma_dom->domain, start, paddr, -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-by2nam03on0056.outbound.protection.outlook.com ([104.47.42.56]:45305 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932828AbcHVWyV (ORCPT ); Mon, 22 Aug 2016 18:54:21 -0400 From: Tom Lendacky Subject: [RFC PATCH v2 15/20] iommu/amd: AMD IOMMU support for memory encryption Date: Mon, 22 Aug 2016 17:38:20 -0500 Message-ID: <20160822223820.29880.17752.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20160822223529.29880.50884.stgit@tlendack-t1.amdoffice.net> References: <20160822223529.29880.50884.stgit@tlendack-t1.amdoffice.net> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-arch-owner@vger.kernel.org List-ID: To: linux-arch@vger.kernel.org, linux-efi@vger.kernel.org, kvm@vger.kernel.org, linux-doc@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, iommu@lists.linux-foundation.org Cc: Radim =?utf-8?b?S3LEjW3DocWZ?= , Arnd Bergmann , Jonathan Corbet , Matt Fleming , Joerg Roedel , Konrad Rzeszutek Wilk , Andrey Ryabinin , Ingo Molnar , Borislav Petkov , Andy Lutomirski , "H. Peter Anvin" , Paolo Bonzini , Alexander Potapenko , Thomas Gleixner , Dmitry Vyukov Message-ID: <20160822223820.v3JtXvSe66PrFGc73Ju1kS4opDf-o5yGyfyiFGcsZKU@z> Add support to the AMD IOMMU driver to set the memory encryption mask if memory encryption is enabled. Signed-off-by: Tom Lendacky --- arch/x86/include/asm/mem_encrypt.h | 2 ++ arch/x86/mm/mem_encrypt.c | 5 +++++ drivers/iommu/amd_iommu.c | 10 ++++++++++ 3 files changed, 17 insertions(+) diff --git a/arch/x86/include/asm/mem_encrypt.h b/arch/x86/include/asm/mem_encrypt.h index 384fdfb..e395729 100644 --- a/arch/x86/include/asm/mem_encrypt.h +++ b/arch/x86/include/asm/mem_encrypt.h @@ -36,6 +36,8 @@ void __init sme_early_init(void); /* Architecture __weak replacement functions */ void __init mem_encrypt_init(void); +unsigned long amd_iommu_get_me_mask(void); + unsigned long swiotlb_get_me_mask(void); void swiotlb_set_mem_dec(void *vaddr, unsigned long size); diff --git a/arch/x86/mm/mem_encrypt.c b/arch/x86/mm/mem_encrypt.c index 6b2e8bf..2f28d87 100644 --- a/arch/x86/mm/mem_encrypt.c +++ b/arch/x86/mm/mem_encrypt.c @@ -185,6 +185,11 @@ void __init mem_encrypt_init(void) swiotlb_clear_encryption(); } +unsigned long amd_iommu_get_me_mask(void) +{ + return sme_me_mask; +} + unsigned long swiotlb_get_me_mask(void) { return sme_me_mask; diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c index 96de97a..63995e3 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c @@ -166,6 +166,15 @@ struct dma_ops_domain { static struct iova_domain reserved_iova_ranges; static struct lock_class_key reserved_rbtree_key; +/* + * Support for memory encryption. If memory encryption is supported, then an + * override to this function will be provided. + */ +unsigned long __weak amd_iommu_get_me_mask(void) +{ + return 0; +} + /**************************************************************************** * * Helper functions @@ -2302,6 +2311,7 @@ static dma_addr_t __map_single(struct device *dev, prot = dir2prot(direction); + paddr |= amd_iommu_get_me_mask(); start = address; for (i = 0; i < pages; ++i) { ret = iommu_map_page(&dma_dom->domain, start, paddr, From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom Lendacky Subject: [RFC PATCH v2 15/20] iommu/amd: AMD IOMMU support for memory encryption Date: Mon, 22 Aug 2016 17:38:20 -0500 Message-ID: <20160822223820.29880.17752.stgit@tlendack-t1.amdoffice.net> References: <20160822223529.29880.50884.stgit@tlendack-t1.amdoffice.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Cc: Radim =?utf-8?b?S3LEjW3DocWZ?= , Arnd Bergmann , Jonathan Corbet , Matt Fleming , Joerg Roedel , "Konrad Rzeszutek Wilk" , Andrey Ryabinin , Ingo Molnar , Borislav Petkov , "Andy Lutomirski" , "H. Peter Anvin" , Paolo Bonzini , Alexander Potapenko , "Thomas Gleixner" , Dmitry Vyukov To: , , , , , , , , Return-path: In-Reply-To: <20160822223529.29880.50884.stgit@tlendack-t1.amdoffice.net> Sender: owner-linux-mm@kvack.org List-Id: kvm.vger.kernel.org Add support to the AMD IOMMU driver to set the memory encryption mask if memory encryption is enabled. Signed-off-by: Tom Lendacky --- arch/x86/include/asm/mem_encrypt.h | 2 ++ arch/x86/mm/mem_encrypt.c | 5 +++++ drivers/iommu/amd_iommu.c | 10 ++++++++++ 3 files changed, 17 insertions(+) diff --git a/arch/x86/include/asm/mem_encrypt.h b/arch/x86/include/asm/mem_encrypt.h index 384fdfb..e395729 100644 --- a/arch/x86/include/asm/mem_encrypt.h +++ b/arch/x86/include/asm/mem_encrypt.h @@ -36,6 +36,8 @@ void __init sme_early_init(void); /* Architecture __weak replacement functions */ void __init mem_encrypt_init(void); +unsigned long amd_iommu_get_me_mask(void); + unsigned long swiotlb_get_me_mask(void); void swiotlb_set_mem_dec(void *vaddr, unsigned long size); diff --git a/arch/x86/mm/mem_encrypt.c b/arch/x86/mm/mem_encrypt.c index 6b2e8bf..2f28d87 100644 --- a/arch/x86/mm/mem_encrypt.c +++ b/arch/x86/mm/mem_encrypt.c @@ -185,6 +185,11 @@ void __init mem_encrypt_init(void) swiotlb_clear_encryption(); } +unsigned long amd_iommu_get_me_mask(void) +{ + return sme_me_mask; +} + unsigned long swiotlb_get_me_mask(void) { return sme_me_mask; diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c index 96de97a..63995e3 100644 --- a/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c @@ -166,6 +166,15 @@ struct dma_ops_domain { static struct iova_domain reserved_iova_ranges; static struct lock_class_key reserved_rbtree_key; +/* + * Support for memory encryption. If memory encryption is supported, then an + * override to this function will be provided. + */ +unsigned long __weak amd_iommu_get_me_mask(void) +{ + return 0; +} + /**************************************************************************** * * Helper functions @@ -2302,6 +2311,7 @@ static dma_addr_t __map_single(struct device *dev, prot = dir2prot(direction); + paddr |= amd_iommu_get_me_mask(); start = address; for (i = 0; i < pages; ++i) { ret = iommu_map_page(&dma_dom->domain, start, paddr, -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org