From patchwork Thu Apr 6 14:05:03 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brijesh Singh X-Patchwork-Id: 747834 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3vzPcD6r6fz9s8T for ; Fri, 7 Apr 2017 00:05:16 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="nPv3I68m"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934700AbdDFOFP (ORCPT ); Thu, 6 Apr 2017 10:05:15 -0400 Received: from mail-dm3nam03on0044.outbound.protection.outlook.com ([104.47.41.44]:31664 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933624AbdDFOFM (ORCPT ); Thu, 6 Apr 2017 10:05:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=9KB3N50ZHczBKVrdPbdAv05ChY0s2pG0Z8HQ+aLJ+V4=; b=nPv3I68mhl1NQ3Q4eTrDN9GD6oNM+q6e8m/e3mAZp6PdowTkZ0KL13GsbKcmT6Ol0CfLyjY1IJDasBrzue0FEXIF1djqyq/THRgQi6tpVtllB9niIKoNr4n4YzWLKt87tSd+dD6FSrUMPQlgqydY64ZVkh7dhNryY+rpm6b8i9A= Authentication-Results: fedo.suse.de; dkim=none (message not signed) header.d=none; fedo.suse.de; dmarc=none action=none header.from=amd.com; Received: from [10.236.136.62] (165.204.77.1) by CY4PR1201MB0133.namprd12.prod.outlook.com (10.172.78.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1005.10; Thu, 6 Apr 2017 14:05:06 +0000 Subject: Re: [RFC PATCH v2 14/32] x86: mm: Provide support to use memblock when spliting large pages To: Borislav Petkov , Paolo Bonzini References: <148846752022.2349.13667498174822419498.stgit@brijesh-build-machine> <148846771545.2349.9373586041426414252.stgit@brijesh-build-machine> <20170310110657.hophlog2juw5hpzz@pd.tnic> <20170316182836.tyvxoeq56thtc4pd@pd.tnic> <20170317101737.icdois7sdmtutt6b@pd.tnic> CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , From: Brijesh Singh Message-ID: Date: Thu, 6 Apr 2017 09:05:03 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <20170317101737.icdois7sdmtutt6b@pd.tnic> X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: MWHPR21CA0011.namprd21.prod.outlook.com (10.173.47.21) To CY4PR1201MB0133.namprd12.prod.outlook.com (10.172.78.15) X-MS-Office365-Filtering-Correlation-Id: f4e37251-0b9c-493f-4075-08d47cf5f02d X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081)(201703131423075)(201703031133081); SRVR:CY4PR1201MB0133; X-Microsoft-Exchange-Diagnostics: 1; CY4PR1201MB0133; 3:xWkwrge4YOreW/WHqL3zwD4oNDtJsI13Fo8Wj2KxiAguq3U2nJ5jNprW2/cCpcTGM05PkPOk9GecboG0H6hJWEU/RE6yFfiF3YDCGoD9T2RObppgagmrXRbbVCjkyON4o5BEJwLVsfxfEgurmZwC4R4dY5YFpKMOMXvFcQSHxhcRPMeghyoo4SqvQ6jPtXZsffUowBavEJm23EjHejWKHwxDlMI6glP2UvIrW0xINypLSotjOG3JuXGQ4o0oAQjRLY0Nzb73fBBrakdfIoWXXRkY3I9Gq2DGgnZtcBQ0Vw0J3P156o5zciR5LPlD+WwLne1qxUvsDgt9mTIjNic5XPQrp719XX6OUdCeHet7QtU=; 25:HaF0y4Yn9HCyoD1yuB7NdIwz8ZaG/BibptiqsMfrTihpiJ8zQvdk2NvuaJmhKoCTWTjKa3bl8yPDe8hAROK6GtF/smyiNFDCwCtNx2v6EITI/xe4mQEhOK/6p7q8y2NkHYybklVCm3hlL8mgRRYvwU3JFTYjX9nsWuJskfyPyNvc7OOrY6wQ3kuPeKT51AqOSTIsmTX93BI20Rv922xy3U/o8n1NSVnQfEg+FGdbEa+TSG2kKcNG7tlxIKldiJazsmmR/9hWALlenvTn1+ArlecOa92fYCFyt3S7KwVvYEjOmR4UtfzDb6lk3+Y2gT8S98tpyE9HWN70nI1UFcqM1y5OoatTLgyHPhUAPQoFBVwJxzAIE+WYL0esgZKyzijpy2p9Elr0/KU47vRdu5CKuCHxPFusMq8UoAHAbsb023l+FhYqMWUdvJqh99gu48dNzIv4oE5Cz3pSmZD6X42tEA== X-Microsoft-Exchange-Diagnostics: 1; CY4PR1201MB0133; 31:ibk8qfRZ9jkz8SVLGYIJggQFOCg2G6Z/HySdXVyG27FoTdOUEePhDDYmTm5s6OHL/032fL52yQco0JPKN2kA7QWz3Pc0ezErKuxwTJRixMyYLzGmF8SHV1DPAY+B20w7gPgAiFEqO3odU+EtT71rqGInhFQoLkSy+MpVcVBfJc5cAlz5c4F1EpEPcUGmlHLBV9YiIgXtPTxNC5GJ122QEtGrUHPva2OPsNwsKtEvWIg=; 20:cuTrtBi2SSu7OJLhljenoN7i3hEdvpTzN8k35jOJkvQ/fsnGtV1nXn7IZvGvQ1QUeXGUPmAAY7U5Z1z6bzl4iXy5iGt9imPP+fEiUiiW+pWOgQeHyb43PzheBhBCj6tsmgPZEISA2v/e5mlDiIcUXma9vxAekgE5Ld/94JnU+qzz1O6EGAonNxtfI0Il/au3+d9a6Igp4maqh4f1luqtSvy6A2Zp+ht2WkIw9j0KJ9HswZe/h+TfsZ8aIvoLLhECpTiQ25qXflwN5yvDONiRBeKVxnRS7u0h+8IefdkHsWJKmzN9vuHfXL6OoOJ8Hu3yMSEbVO4aFXQc7v8Cj0KgjcO6TC16bZVNXaOR8ObgmdXr2syrVbfim9nfws3xbG9PeAA/9z67O+UC6uLJc2m9WkV2yybL/tsjkqnI1u7uPAemUqZm9iTjv4vxnCgV5Of8fO3IwS0zvrB7mKaKszRupNy/f1gThzNuLzkrzOnaLRACZnI6QYlP5MT+X592zU/B X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(20161123564025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(20161123555025)(6072148); SRVR:CY4PR1201MB0133; BCL:0; PCL:0; RULEID:; SRVR:CY4PR1201MB0133; X-Microsoft-Exchange-Diagnostics: 1; CY4PR1201MB0133; 4:SZTm4LMJ7tO3fPO2P/S785/M6cy02t6LHfMnWYaG8QRcdsnXij/JZqChCwboRnSKZgngD79Kq6YqRLrbCjurafBx5BMomWXPzlyqsybPX/GcU6l3bXLU1QioQDGU8iTb0YCQZ9dFCzpC8OC361WZnM23CKhO5ja5uvcCJQTDfLaC7xBbgZcvRiAuXmBGNJ/D2WSduRJdfIHnrusudDhbyz6wmy8W4ppO7Q1RRqOxVCPCQGZxTezXO6ECP+6LMMRZZOaYWOlqGARSieAc6qV/xVBeEzZensqjWfmQ6TqnmMHV+TqJQEV7s6yzEFx3IWTnq0l7LjOExeP2VyBfEx8cNyCa7Nmzqlqdps8XWcX7vzLcJ96D2OlBdyt4z9Z6pJDqhBWHDf6hueAPIz711RkHCwbJ8s8p8uEryUIwEMFjy926S1hdorcrvQBAmdOxVmnmPL6WpUi3197re9PAB0T4UGgbi+rvzkRhAIGtNbu6iWIDS2JT/nNqp8PLi5FGzkVT+3RStVzMaC3sZ4pDMsvyi0gcZ3O8RhYVWiWwP+qGo/CzXp1HDUwRL/M/0hnTiMoh+jXnfAI0GRMFo135hcdwwkwSCvRr7lJx539RDqWwN3h0zcbOuEGSnepmj1C4UuAufiwV4J1jBIanG58uMBZ3Y5WsJO0PsN+aII0xUy2K/dVqDkZEArkSqqH7idbD0ARsJTc6zvXaV2mpGBiT4pK3gf80/LIIxuJhTbdur94Bz+s= X-Forefront-PRVS: 02698DF457 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6049001)(6009001)(39850400002)(39840400002)(39860400002)(39450400003)(39400400002)(39410400002)(209900001)(24454002)(377454003)(54356999)(229853002)(76176999)(50986999)(6306002)(25786009)(53936002)(6666003)(42186005)(8676002)(33646002)(6116002)(93886004)(966004)(3846002)(53376002)(38730400002)(23676002)(31686004)(4001350100001)(81166006)(2950100002)(6246003)(36756003)(54906002)(53546009)(64126003)(305945005)(83506001)(6486002)(65806001)(66066001)(77096006)(65956001)(86362001)(47776003)(7416002)(5660300001)(31696002)(4326008)(230700001)(189998001)(7736002)(2906002)(217873001)(6606295002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR1201MB0133; H:[10.236.136.62]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyMDFNQjAxMzM7MjM6QmNoS2tmY2N1NElOSWNGb0RMam10cUtp?= =?utf-8?B?bmYzMytrQUlocUZnR3hwS3RtZUVQTDkxajVSSjJyZUsycWJVUHJBN0pENWho?= =?utf-8?B?bm05cGF0WElwVm5tVWswYUFOb29tQjFwbGVma3NSZXRBNFN1OGluN1d6blpL?= =?utf-8?B?MzV1cW1vUGY0S1MwVXlLSjFpWlJaK1NXN2RlaTRVRXp0c00yd2lrWmRYbFBP?= =?utf-8?B?TWlzU0QzKytpUy9ta2xoSHBJdlFHQmJKTWIzYWVuMnlkOFREN0Zta1ZjZUQw?= =?utf-8?B?Ukdjb044US90T2R6azNiM1NrUGlGNkp5N1VtREtqYmozUStSc2lOYjd3T1g2?= =?utf-8?B?cHRCWERBYkZud3JJZlN1ZS9RcW1BOUNrQVdLc25YOHlnamRoOXgxakJDTkp0?= =?utf-8?B?cDNoR1d4TExoaHRDQkNtb0ZsQzFlV0s3R1JFL0w0Uk11aG81Z1JJSiszZDAv?= =?utf-8?B?YkMwUHBQTGwzWDRvdXQ4dmJacVl3RDl1YndKWDdVYWdvalVjK1R4ekhxd20y?= =?utf-8?B?RFdzUTk2NnlEOVhMeDk5aXkzUkNaWE4vTExoVnJxcGFHMURIY3RsUVlVcEtv?= =?utf-8?B?Y1p3N1krNXEvK0hFdWdRdWpqbDBGcjRIWmlEb3BPVnhDOUdKVUhWTURqVGVT?= =?utf-8?B?VmpkWE5TTUoyOElNRUFtYWxub1pKWlJRNVhKaTljQUVQSFZpdFR2VStFWWdE?= =?utf-8?B?dFduVFlzcXRqWG5JS0ZHSVB0QmhHaFJnY01xV3EvdjVpdDhYK3lYR0ROYXFa?= =?utf-8?B?cFdtWmxJRllGWWNtdjlCdHMzc3dtNHloL1o4MGlxN3hrclhqVzZKOEdIZmhI?= =?utf-8?B?RmdpNnprZ1U2blo2QWovRHplTXhCdmxncE9Ca2dqTEdPelV1SnkzZ2swRGE0?= =?utf-8?B?UFFjWFJtNVBhd2J0UVRQc3FiNkNnYVpmaTQ1RHNVa2JSYXlUdGRnaHB3SHo2?= =?utf-8?B?Z0JPNXIwVkd2aUVuUHlOWTROR2YrZlRTRVBHNWREYmh6VDk2eWdXM3M5NHZX?= =?utf-8?B?YlhuSERwcG5mQVR3VE9DdTdBRU9ncHBabjlQMkt6TE9DRHBzK3B5U1ZxYzNL?= =?utf-8?B?L25ZZVpoeGZPMGdrcmowMjBRSUhVV1FGMDV6UUl6MkZ1U1h1WC82ZG1ER0xk?= =?utf-8?B?TVU4cGRDSTdlWjRFZnI4c3gyWHlVdGZrVlVYRU9KM0ZkSXkzVHV2MjB3bFE0?= =?utf-8?B?QitFaWQwSjdHbkFxZC9QVFlHcnNEQnYxbzJQYzNMeksra3BETnBXY2hLWnc1?= =?utf-8?B?VzdKZFJvaGJnSFRSOWVqU0IwbE9nN243K0FSeVhTbDFZU3lsREpZbmpGZWUy?= =?utf-8?B?R1RXSktUbXpPKy9QcHR4QkwyM0luN3ZveXplcFVjRWJickw1OEJBSG4vNmpk?= =?utf-8?B?WG5RcUcvWHU0N2JtY3E0ZFhPWk55RWdHcU82UE0wbFlwYWJvdytBWlZWRWVn?= =?utf-8?B?Z25mWlAwTCtJWUVPUnVNSnVBbmRZSlVIbkdEQlQ0MmU5TXdJV3BHWVV2SVpS?= =?utf-8?B?a1J5RHRqNEZ3ZkNOT0JGdFRFdW9SMmQxM0ttNEg0TXNEVDY5Q0FDd1E5ZVg0?= =?utf-8?B?SGRQNUpDeFJCemNrcCtBNzUzc1dlWkpxUEtWZ2lvaXVYb0tjK2JsOHN0cG1I?= =?utf-8?B?bUNkVTBjbmdtMGhSN0tYaUxyTW50YjdjUXRYcHVzMXluU2RZMmRNeGZsakRK?= =?utf-8?B?T1pMOWo4YjlJMkIwUzRheGc3OUY3dktTR0FPQkIyc3Q2Q28wSFJmbHhCQW1Q?= =?utf-8?B?VC93MkJCOHZrakRGaGhjYS9WTWQ2aGk4UUFnOGQvZ0VHdGxBdUtjdWpXbUIx?= =?utf-8?B?aTdaUmExTVJYOFQ1Zk83WDQ5S2crdjhNc2tmVVRycUYrckpyUmVycEdKa2Y0?= =?utf-8?B?OHNZdFJqZk81M2NqVjdzK2JjTEVOUDZ2TFMwWjRnTTNsTldtdStWYWl3dXdq?= =?utf-8?B?c1huQ1FFT0s1ZUE9PQ==?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR1201MB0133; 6:7g0hIo9NTIfVRLcBX2ZWv6M/0dDxpycRlxmgfrBFoldWt9sucZHAOhoUuoU5HJKTnWx+S8eZ3b93BUUiKn4SCKp0isqCL/xf3iLZZBa4WfMjzcZzKxTy5kpBYrvBO0zVja/eFEeB/MHnJqcUD/U68f9bMsa2mozlMXEEzVQ4SYCyV8jsOBzkrGzkpIn7Ot7TQWGfxxJA0UDnVwpn1UQE0p2zKlP91kkLiFskAS/pvLAQTDoGjAEWdZkrQZaKmlE+jmZ6YxDufbhOVOa0R/+6lefy6rin2aP/YrC7noQgcgHLldIIWewIDR1HxIiligLOFawimG7Isfs7EfR3GLLS4C0IT9N3snsiXdK55bFiK4xRcoxa2eF5VMNh3wHEzwZHbV5WF+ksfsINp6P631xT5DtCrsVyR/xkJjQxfeRcDek=; 5:GsH9n3P7Bb+rjWNApedrrYAxvI/xsXcnDWZLkyPlgLVL8Vr7BpZd0No8m57eTlXB3fjPueYt9TGX+lnZWNUXMMIao9rtziRImsb+lMWdjOuh3+P0EuzatHnOm0lFl+rz4Gp2C83+Ab3WkN4GZ9o+WA==; 24:fUp9RZT6BHNhQvtYHUgc/9QPnMRWbCepxf2gZXrwEgVA/lOey3ebQ1g24UD6iyabDmYCcWXn0r4vxPJSzr94cPa8q3WEHogPGEhpIhTFMYg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR1201MB0133; 7:j1ujoN9wR5rqs6OQLuuWdmtcD4P9d8MNzFzqX50vtQKneC94l+nOGztM91+mwv75vdJXHD1PbALnvB5Bhxazx06EvbkB6LEi4yCj8qfKZNGRb4BJvQzvepcPR4zkQK/QSaeIbCGax/2QepdICJXWeqKICKRPbhLW/KwUpB6ZD+VFkZbApcJeIp8U0/KpLw7PW4Ml7/pl6177bTHC62kbhSqc25AGJZKJvAlcVoK6UDEbuJlOPp/awLnlqoGeB0AI/e0Vj15NrACE6SxyOEBbiUQ/tebJpkHjaRfQHt2N4Ehqn7zsEFO5jkRMcWp9UD5XSf5XKn/HlbQ2BSXoZsRgsA==; 20:yg+ZDExL3XT/by+f+xwEo3eXJgnoP7RwgHaSQKUj7rGzwrECH1gBo6KaSSl2MEFGRQk1ips+SBqAYHbrby2xf+mg6nNSr5/djOOACSeCjtjSBYtZOmw+x2y+gXJicbnaUFFulNjeh4HHZ7aRuRj1Cl8KQr6WanZiG84M2bkJ/wULd1qUXHAVINtiujPZUH1TXpdjM5ckeHstqmeXhDJcPgvADAmBX9qqpt2uXN3KHWsYk1mvUuKghcXke6YOnYTa X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Apr 2017 14:05:06.8962 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1201MB0133 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Hi Boris, On 03/17/2017 05:17 AM, Borislav Petkov wrote: > On Thu, Mar 16, 2017 at 11:25:36PM +0100, Paolo Bonzini wrote: >> The kvmclock memory is initially zero so there is no need for the >> hypervisor to allocate anything; the point of these patches is just to >> access the data in a natural way from Linux source code. > > I realize that. > >> I also don't really like the patch as is (plus it fails modpost), but >> IMO reusing __change_page_attr and __split_large_page is the right thing >> to do. > > Right, so teaching pageattr.c about memblock could theoretically come > around and bite us later when a page allocated with memblock gets freed > with free_page(). > > And looking at this more, we have all this kernel pagetable preparation > code down the init_mem_mapping() call and the pagetable setup in > arch/x86/mm/init_{32,64}.c > > And that code even does some basic page splitting. Oh and it uses > alloc_low_pages() which knows whether to do memblock reservation or the > common __get_free_pages() when slabs are up. > I looked into arch/x86/mm/init_{32,64}.c and as you pointed the file contains routines to do basic page splitting. I think it sufficient for our usage. I should be able to drop the memblock patch from the series and update the Patch 15 [1] to use the kernel_physical_mapping_init(). The kernel_physical_mapping_init() creates the page table mapping using default KERNEL_PAGE attributes, I tried to extend the function by passing 'bool enc' flags to hint whether to clr or set _PAGE_ENC when splitting the pages. The code did not looked clean hence I dropped that idea. Instead, I took the below approach. I did some runtime test and it seem to be working okay. [1] http://marc.info/?l=linux-mm&m=148846773731212&w=2 > > init_mem_mapping() gets called before kvm_guest_init() in setup_arch() > so the guest would simply fixup its pagetable right there. > diff --git a/arch/x86/mm/mem_encrypt.c b/arch/x86/mm/mem_encrypt.c index 7df5f4c..de16ef4 100644 --- a/arch/x86/mm/mem_encrypt.c +++ b/arch/x86/mm/mem_encrypt.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -22,6 +23,8 @@ #include #include +#include "mm_internal.h" + extern pmdval_t early_pmd_flags; int __init __early_make_pgtable(unsigned long, pmdval_t); void __init __early_pgtable_flush(void); @@ -258,6 +261,72 @@ static void sme_free(struct device *dev, size_t size, void *vaddr, swiotlb_free_coherent(dev, size, vaddr, dma_handle); } +static int __init early_set_memory_enc_dec(resource_size_t paddr, + unsigned long size, bool enc) +{ + pte_t *kpte; + int level; + unsigned long vaddr, vaddr_end, vaddr_next; + + vaddr = (unsigned long)__va(paddr); + vaddr_next = vaddr; + vaddr_end = vaddr + size; + + /* + * We are going to change the physical page attribute from C=1 to C=0. + * Flush the caches to ensure that all the data with C=1 is flushed to + * memory. Any caching of the vaddr after function returns will + * use C=0. + */ + clflush_cache_range(__va(paddr), size); + + for (; vaddr < vaddr_end; vaddr = vaddr_next) { + kpte = lookup_address(vaddr, &level); + if (!kpte || pte_none(*kpte) ) + return 1; + + if (level == PG_LEVEL_4K) { + pte_t new_pte; + unsigned long pfn = pte_pfn(*kpte); + pgprot_t new_prot = pte_pgprot(*kpte); + + if (enc) + pgprot_val(new_prot) |= _PAGE_ENC; + else + pgprot_val(new_prot) &= ~_PAGE_ENC; + + new_pte = pfn_pte(pfn, canon_pgprot(new_prot)); + pr_info(" pte %016lx -> 0x%016lx\n", pte_val(*kpte), + pte_val(new_pte)); + set_pte_atomic(kpte, new_pte); + vaddr_next = (vaddr & PAGE_MASK) + PAGE_SIZE; + continue; + } + + /* + * virtual address is part of large page, create the page + * table mapping to use smaller pages (4K). The virtual and + * physical address must be aligned to PMD level. + */ + kernel_physical_mapping_init(__pa(vaddr & PMD_MASK), + __pa((vaddr_end & PMD_MASK) + PMD_SIZE), + 0); + } + + __flush_tlb_all(); + return 0; +} + +int __init early_set_memory_decrypted(resource_size_t paddr, unsigned long size) +{ + return early_set_memory_enc_dec(paddr, size, false); +} + +int __init early_set_memory_encrypted(resource_size_t paddr, unsigned long size) +{ + return early_set_memory_enc_dec(paddr, size, true); +} + > So what would be much cleaner, IMHO, is if one would reuse that code to > change init_mm.pgd mappings early without copying pageattr.c.