From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932756AbdBPPsJ (ORCPT ); Thu, 16 Feb 2017 10:48:09 -0500 Received: from mail-sn1nam02on0085.outbound.protection.outlook.com ([104.47.36.85]:31552 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932821AbdBPPrI (ORCPT ); Thu, 16 Feb 2017 10:47:08 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; From: Tom Lendacky Subject: [RFC PATCH v4 22/28] x86: Do not specify encrypted memory for video mappings To: , , , , , , , , CC: Rik van Riel , Radim =?utf-8?b?S3LEjW3DocWZ?= , 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" , Borislav Petkov , Andrey Ryabinin , Thomas Gleixner , Larry Woodman , Dmitry Vyukov Date: Thu, 16 Feb 2017 09:47:00 -0600 Message-ID: <20170216154700.19244.74874.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20170216154158.19244.66630.stgit@tlendack-t1.amdoffice.net> References: <20170216154158.19244.66630.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: CY4PR21CA0005.namprd21.prod.outlook.com (10.172.122.143) To DM5PR12MB1145.namprd12.prod.outlook.com (10.168.236.140) X-MS-Office365-Filtering-Correlation-Id: fb2de777-246a-4c2c-acfc-08d456830e22 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081);SRVR:DM5PR12MB1145; X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1145;3:UOiznkdQnQ5KTrKr/IGLDDGJcTFRVrbolS9med2ktR6Ra5yXb7/Pi8umwssNPBT209BX+IjmXDIyXWTsvt6ot1xVlaKs49JIzQWlvKBaKvUz3Vg25giuUsydO6rOvpN9MSMdZVjntAqKJJtKJ/KfuE2vZMnaZzfMZaUUbbccTlErhtudTjQeh6ifkC2zVAUyZw9M8AEJBTEo1ceqP3W60E/tDiUTm3ul2i1YYTYg6U5WExMIZAmsBsnOVL1cqQvF5dufEA4VcSoju0IsK5vvFtSC7EHnV5KxFp4paBfdcsk=;25:PbSoj9+uDZZdrsQtcGQyUuDsG/NzaLl5HLyC4AAyYKXq3qDjCU5/TMUicM5fr9Y/BnfXmp1gJ9DaWxQDzu9RZglNX1IY3mzctB79jUfZPFgPkZzn3BWbFW81cuIapkkfqYc7yyRiYFBjson6FxUKmb1c4ggCv8tCGm7X4y7/pNY1xJKJ2qfBDu3c4tkr/AUbDYF0lKPmmwTo9Mw9LQJd6GFMx7ShIQyQYOQBu6vx/nsdlrEgnh7VqU/d3H6CcwKLxlHDeqH0XM9QlJ9E2C+jgxbmrYrxWatOrqMtk7rD823SJmxsDqGM42bAe0sgkiZwHXXYp2XfSv7eQFBIDOVL1Nivb91iR0LBJzLmEKzVugr7jNTc+QfXOwQcSM9KsRe3o4rj1su9dWyr4oHhIOGfPuA1i79eTqEyu0wgF0cCPYckefyRD392DDRzr+r7ST4VZF98LMJHNipNBniTjrlzdw== X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1145;31:gwbwaycywz9kBr/dniQAS3cZkraPkHwQYJNH5AQbMEc3kqz8WldlriQ0uVejqRiRq/QKVX9EkX/J8qP1Q41DsB4c5edR/AydZ5/9ScL8keZFxWZkVMiuUWeV0aEiaU82HVieF9hPMudtNXCDHQApzoQGArcHQtYzqSUA4/1/x88DN+1GeKx6x5pfh0sneeTAV4G4Qy5JIzdAzv+EnSI0QqRBLLuS6acEmH87/R2cW1o=;20:iWbJMvGdEt4FasjwX5QGLQL9aar2GMfq3PKaRoBZ2us4uA5z+nRvwQ5f+f7AzfNq30QJeT+OSgTpgGUL6TwFUO6DTk3IiUoeq/JE2fTbEOR5DlobGmZI955ordXBdYf2Om2P4Gem9KjRyXmxsTOe0wUcfoUoSRZIZOrWSstab+ijnK2MpN2n+4TWFloX4J40aqBjUBGeBVAMOrR+eTgWfrFD1d9rwsgpsn6gl4xuoc2773o1kwhxRH/jF3FPdHiGZiQSDT8W8Z+wpzsBqJjm2M60yZ3rKoOh/UNLCQEEO1PU/lyHcTdgdqokZ5N594C+oaP9ID9tF3Iw/YZre/Jaz6OAEIliquRQHPbL9IB108Rq+AN65cBhihA9W/w44emeZRp2sKtNV5dbuAOQHcC/wGV8F1NN12sr2ZwCnU5CdiYThd9vCeiZ/Jp8dz2b4uiU8/OeaRahKNDl5B+5Nj/Ajk8ndTY7YaqYmzKxfj9PUTd7N1gfpSWKnh2nJEGnIUAG 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)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123562025)(20161123558025)(20161123564025)(20161123560025)(20161123555025)(6072148);SRVR:DM5PR12MB1145;BCL:0;PCL:0;RULEID:;SRVR:DM5PR12MB1145; X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1145;4:G8DpP0IwtV8WWuE8QlhB42Ud7QYIhI75J4Eeb7Xj9Nt2VtIUwCpotbS90R4TYpcgx/mMs9vCMg9Anzd/wTMQNZlwfaJLAmSfy6TfaEU7wCi3vROLpLke2zkZdqQHkC5KQdDxS4fz+dThW9VZK4QWBu1DUj4+ArfGkgMzdvGEcuDSGH1cHiSxaKsR9wsxPcJeU0V49i7ozDaU/LAYzEz31275JAdVwt0DlELc1Hag6wqbWrJh3f+w58zRale0hD89xsFrtXlnpw2zqLsdKSyhy5uW3fmF0sSWeKn+VqcHxqmdsWOrpWSiE4HQhA/uOJY+4DSwqd+xCJwRU8WGrYzWdVqqlEOVzwkgbJ4zLuJy7zPZfLXzrwDa6715IxeNaK9kow5eTyc6oRa/z9abeXqgI1H+XcNJ4a7k6nATH1G23hknWjnSvGkhsOUR1iufTxMQPeS1UdT+E0VvVh5zu3lVAC+aseZ5+478ta5emNzf8wWubZn5jZvgZh7ZYnLdoKDZ2KStbDWCwUwThugcFtPOsag8P9NgpMzUrIMiLwmuyiv0t/7jcoQTvQDwGZ6C6Y0s4PgflyPNXHtn8Roj/HfCUD1SPOT+x5X+sV7O8rx76z6G1y+ee0AFevH5EdRS+ZAxp95/P5ZSloCgmrUVdhVrQ294/qZJ9J4KuiDYW65JBUE= X-Forefront-PRVS: 0220D4B98D X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(39860400002)(39840400002)(39850400002)(39410400002)(39450400003)(189002)(199003)(5660300001)(230700001)(2950100002)(103116003)(305945005)(68736007)(38730400002)(53936002)(50466002)(23676002)(25786008)(6506006)(55016002)(9686003)(54906002)(389900003)(69596002)(7416002)(33646002)(1076002)(4326007)(6116002)(83506001)(92566002)(105586002)(3846002)(8676002)(97746001)(81166006)(2906002)(106356001)(81156014)(7736002)(53416004)(575784001)(4001350100001)(97736004)(86362001)(76176999)(2201001)(54356999)(101416001)(50986999)(42186005)(47776003)(189998001)(66066001)(71626007)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR12MB1145;H:tlendack-t1.amdoffice.net;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjEyTUIxMTQ1OzIzOjNDU01RQlRsdEx1WFJEOEVjWnlQa2VxR09x?= =?utf-8?B?dENaMGFCZG1QK0ZxeTRvZkVJR1pvWmFBb0ZIdEVnMEJjRlVENFYza1RtOTFI?= =?utf-8?B?YmxsNndFV1FmcmVOSkZzYTRBaWdXK28vejdBcmdWcy9hRXlBbVJETnFEWDVM?= =?utf-8?B?Smt0VjhoTkh6S29iTVNZbVd5UmlrT1MvdC8xQnJOaC9GMFYvaHF2SlhwVmlW?= =?utf-8?B?S24yOXg5TDZZbVhOeHl0RmNMMkJZUEh4dCsvM28xd2xoaVNYZ0d6QlppVFls?= =?utf-8?B?emVobkhmZDZBTWVBa3NqVmJGZ3dUT3lVSEg4endTQS9aMldYRlp0Y05lOTBZ?= =?utf-8?B?aXZ0Qzk4SWJRTFJpRm9odjIydi9YTHduTWJscVRvVUlZcFA2ZDFEV2c3RUFV?= =?utf-8?B?RXpwaHVWRWlMZnVrM0Q0VDJyMGE0MFN0KzBiQThoZjI4R3BTckZ3d0dKWUht?= =?utf-8?B?Z3pIK3kxNCtwNkpicUZUR0pNdWNTc1kzTlZxZlJqYnVhRFlpYklBYk1vTnJo?= =?utf-8?B?YStla2dYR3hnUFRRYysvMGdjQ1hYWjlRbklVQ2RJaEJWSkFBNnd3endLbEFy?= =?utf-8?B?ZVZyYmNBc1E2L0J1TjdFUkQ4cnJNeml5SFFKbHJaWkpBaHNuTUk3bzRRWGsw?= =?utf-8?B?YStYU1hEV2NvTGhvdkYwaExmRHdGTlNTdXcyeGtPclVHWktJSWk5TkZCU1h5?= =?utf-8?B?bnYwaW1xVVRxRjA0SXhBeTBmL1h5djJRN3NlNXp3dUVWRGwzcDFTK2pERFp4?= =?utf-8?B?WC90eEtLWWJOc01BQStiY1BSU0F1T29VVTdSQ1lIVmRKWHdYbGoxUXZQUzN1?= =?utf-8?B?dVZJL0hUNEpNeElZa05HSWVjTDUxTmJZa2tNYk04UHRRZlFqcnM5elVwMHhE?= =?utf-8?B?SHZZU2FabWhaSERaUXRxWEhjK09ycmRQWnRGT2YrRzdSNlBtTDZybTdQVGtZ?= =?utf-8?B?WEg3ckY0MkxhQnE3YWlBdjlpc0NHQkJUemo5K3JYcklQQzVBL1g2WS9LRFph?= =?utf-8?B?dnl6ME5SQmVranliNC92TjdRb1ExUEJ2QmU3YjdmcGRRelAvZHYwUlZaQzNa?= =?utf-8?B?S2w0QlZkVGIybkM2L2xRZEt1cm9WU3hTUkx4TGhOcm1mU0J4Y0lBQkxuRUMy?= =?utf-8?B?bE8xVHAyTzNZQ3BOT0dSb0pKMndPdUtCWi9xS1E5SXhrVW5JZnpIdGFaa0hQ?= =?utf-8?B?UVp1Z0xMNE1BK0N2cUpYTnNVTHI1UVdKRHE4bUlkZnAweXhWTmlnZ0NRakJ1?= =?utf-8?B?QWpOU1FmZ0I4cGFVMDlzRVJKMkQvQXRESGpibkdEdUExVDEySUJoY3FielA5?= =?utf-8?B?RzN6WjZPTmg4VnJLRWd6Ry9JR1UycHJtYkpTdGt5VzIwanZyNFB5aElabDND?= =?utf-8?B?a243aW9oNzJYWFpvUzlqeG9YakxXLzFYS1dKQSsxazk3cS9lcDlFTHBMaXMw?= =?utf-8?B?UkxNcUZpU3JhbFJMNW5lUFVORXhmVTVhR2VhWm13UFhlUExsYzlTWUpNMWlH?= =?utf-8?B?cjhjdEM5ZXR4YVlzNmg2L29OekY0bVA5SGVIeHRIdXlpV09KYWtkK0NrM3ht?= =?utf-8?B?c0o1YjNnTEdISnlDRGkxVml2NG1idStzbkNQTjFDQVJSWVVGcGxXV0tKR2tR?= =?utf-8?B?ZjZteHlsTXVINnA3L29Oa0ZyWXY4MGd4cGo1T0oyU3RTOFE0bUh2WlJVV1hR?= =?utf-8?B?WGVTSEd1ci9zL245elJhTmhDWmFBRTE5SS9VTHNvbUFhS1RNU2I3MGpLZHR2?= =?utf-8?B?cHRkK1lwL256UitmQVkxWTRuY1pYSzB6azhnVGhwQVNCemQ0RHZGSm4rR2Fu?= =?utf-8?B?ZWprYW56U2JRc2IxaFFWZC9IbHZXRlZKQ0ZFUy9TcE1sdXcrenZzSVRhb2dr?= =?utf-8?B?bU93NXN4UDlMNkxXK0tGaENnQ0tORFpNRE1HQUxsUWxyMkdSRDRraEJVTE5F?= =?utf-8?B?YlpVbjdxbDFBPT0=?= X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1145;6:IfqV4aaZrxbQJv+kIATdgBiii2SccUo76GEQUUzQz23ScGiQo5YkMERcJE+9x2i92obK/FtgA5f2SUTY+jQXKa9xkC8fy0LWDzAkS2SiucA0MpnBdcz9e3GctDaaIPA0VrKs/N09IClKoVXGV6XYFsm030xPsdRUknYsopE1Z7d4XzRTNOKQeLVQ43B4/zHUkJ7TP4r/5N7YBLP1GNcNAclBlQTRnFXgcamLI5FZHnmJR2VhmUhpJSYZNUkm0xbG9aWGhGTiuUVeFy9Z1f2SGaUczqL7QhcSWru/+jr3JnNSXcry6ogQwm7zkwQ3/X5ZSZUwnYoEvJz9nklPpfYfCctteYegQG5uKP2r+ZqLN3iXjz9drmKfx5YyqXfOAbCVEztVSBa6lhQPjoSObLsiqhdfyqYUgKyvkNx1aClFq+8=;5:c6x/xvtegOd/pZyQAAnBOAe1vtk+I+BZrb/Ksn4aqlBejwZSqvx9E0Wd/QnYTdOOcdAi0mrAsOVZq37DvuS6/sIwSGw420BYwIIO6ht45API03n12wkl8U7ESYaEM0Z4+iqs3d3+Ryz5ySitAY8FWQ==;24:FC/w9YHmXHlFlLZMe1wkaF0CSJxPr/44hjC9pP+HCbH4fjCLGoQwYQLGicH3MXPWJkcX/stEaPbAnbBX57tPL/aaB/znjjquqDwkxrCuVig= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM5PR12MB1145;7:M/5hVEvIbrFLXAmSpV+PlYyhdt6ocMfGq/MTBOeIxcC9yTPOUsjXgWSXIAtnLJ4/HoYJzFsCtNy65u+3mvozYOXP0xiPk+1ju2x/3bQ/awN6Tt5UPyq0PJh2PiO/uOff8AF4EItJTR1oB4/38RjCWq6ZSXyHTQXmkSeGvtPZ9VePBcOkcIBdlqKdT1YelOUGhTgSCY1S9y40+01Gp7XGrvshzt7tsAvXPxpMSofTv8FVSiUqQYaI5IEzlrrXeDAOf3o24sSLvg+afLG2fujk7M7tH6YPRVg/IRkdTcd1zQec9Pu3FniA0RUGZzOhdWceJteEfkgphW7ILvftMn6BAA==;20:2vvvexX6vsIelUWStCoRpvR9Tc1pdUwOnKjps7SobxZJxUthYp+oEOm7pgq04x4ESzOKJlROU/4OIS4ef42MHw/mN0mnCYUnoLrXU2WJaV0qW4qPejYTyUKOp1f5nEDK1e4LanvGm56LsjFDk2GljOUDcJAhF7r44m0XcfKvf6gFGPVhD+3r9hoos8HXT1/LHFfReZ9g+YNrGSwz4Sqp1MsPWt/nh3058+lE2/42rxQIJ9mZXOAnIGg8zxAM9U70 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Feb 2017 15:47:02.9308 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR12MB1145 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Since video memory needs to be accessed decrypted, be sure that the memory encryption mask is not set for the video ranges. Signed-off-by: Tom Lendacky --- arch/x86/include/asm/vga.h | 13 +++++++++++++ drivers/gpu/drm/drm_gem.c | 2 ++ drivers/gpu/drm/drm_vm.c | 4 ++++ drivers/gpu/drm/ttm/ttm_bo_vm.c | 7 +++++-- drivers/gpu/drm/udl/udl_fb.c | 4 ++++ drivers/video/fbdev/core/fbmem.c | 12 ++++++++++++ 6 files changed, 40 insertions(+), 2 deletions(-) diff --git a/arch/x86/include/asm/vga.h b/arch/x86/include/asm/vga.h index c4b9dc2..5c7567a 100644 --- a/arch/x86/include/asm/vga.h +++ b/arch/x86/include/asm/vga.h @@ -7,12 +7,25 @@ #ifndef _ASM_X86_VGA_H #define _ASM_X86_VGA_H +#include + /* * On the PC, we can just recalculate addresses and then * access the videoram directly without any black magic. + * To support memory encryption however, we need to access + * the videoram as decrypted memory. */ +#ifdef CONFIG_AMD_MEM_ENCRYPT +#define VGA_MAP_MEM(x, s) \ +({ \ + unsigned long start = (unsigned long)phys_to_virt(x); \ + set_memory_decrypted(start, (s) >> PAGE_SHIFT); \ + start; \ +}) +#else #define VGA_MAP_MEM(x, s) (unsigned long)phys_to_virt(x) +#endif #define vga_readb(x) (*(x)) #define vga_writeb(x, y) (*(y) = (x)) diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index 465bacd..f9b3be0 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -928,6 +929,7 @@ int drm_gem_mmap_obj(struct drm_gem_object *obj, unsigned long obj_size, vma->vm_ops = dev->driver->gem_vm_ops; vma->vm_private_data = obj; vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags)); + vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot); /* Take a ref for this mapping of the object, so that the fault * handler can dereference the mmap offset's pointer to the object. diff --git a/drivers/gpu/drm/drm_vm.c b/drivers/gpu/drm/drm_vm.c index bd311c7..f0fc52a 100644 --- a/drivers/gpu/drm/drm_vm.c +++ b/drivers/gpu/drm/drm_vm.c @@ -40,6 +40,7 @@ #include #include #endif +#include #include #include "drm_internal.h" #include "drm_legacy.h" @@ -58,6 +59,9 @@ static pgprot_t drm_io_prot(struct drm_local_map *map, { pgprot_t tmp = vm_get_page_prot(vma->vm_flags); + /* We don't want graphics memory to be mapped encrypted */ + tmp = pgprot_decrypted(tmp); + #if defined(__i386__) || defined(__x86_64__) || defined(__powerpc__) if (map->type == _DRM_REGISTERS && !(map->flags & _DRM_WRITE_COMBINING)) tmp = pgprot_noncached(tmp); diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c index 68ef993..09f2e73 100644 --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c @@ -39,6 +39,7 @@ #include #include #include +#include #define TTM_BO_VM_NUM_PREFAULT 16 @@ -218,9 +219,11 @@ static int ttm_bo_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf) * first page. */ for (i = 0; i < TTM_BO_VM_NUM_PREFAULT; ++i) { - if (bo->mem.bus.is_iomem) + if (bo->mem.bus.is_iomem) { + /* Iomem should not be marked encrypted */ + cvma.vm_page_prot = pgprot_decrypted(cvma.vm_page_prot); pfn = ((bo->mem.bus.base + bo->mem.bus.offset) >> PAGE_SHIFT) + page_offset; - else { + } else { page = ttm->pages[page_offset]; if (unlikely(!page && i == 0)) { retval = VM_FAULT_OOM; diff --git a/drivers/gpu/drm/udl/udl_fb.c b/drivers/gpu/drm/udl/udl_fb.c index 167f42c..2207ec0 100644 --- a/drivers/gpu/drm/udl/udl_fb.c +++ b/drivers/gpu/drm/udl/udl_fb.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -169,6 +170,9 @@ static int udl_fb_mmap(struct fb_info *info, struct vm_area_struct *vma) pr_notice("mmap() framebuffer addr:%lu size:%lu\n", pos, size); + /* We don't want the framebuffer to be mapped encrypted */ + vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot); + while (size > 0) { page = vmalloc_to_pfn((void *)pos); if (remap_pfn_range(vma, start, page, PAGE_SIZE, PAGE_SHARED)) diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index 76c1ad9..b895e60 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -32,6 +32,7 @@ #include #include #include +#include #include @@ -1405,6 +1406,12 @@ static long fb_compat_ioctl(struct file *file, unsigned int cmd, mutex_lock(&info->mm_lock); if (fb->fb_mmap) { int res; + + /* + * The framebuffer needs to be accessed decrypted, be sure + * SME protection is removed ahead of the call + */ + vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot); res = fb->fb_mmap(info, vma); mutex_unlock(&info->mm_lock); return res; @@ -1430,6 +1437,11 @@ static long fb_compat_ioctl(struct file *file, unsigned int cmd, mutex_unlock(&info->mm_lock); vma->vm_page_prot = vm_get_page_prot(vma->vm_flags); + /* + * The framebuffer needs to be accessed decrypted, be sure + * SME protection is removed + */ + vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot); fb_pgprotect(file, vma, start); return vm_iomap_memory(vma, start, len);