diff for duplicates of <a0799504-385b-40d8-a84c-eddb1bae930d@redhat.com> diff --git a/a/1.txt b/N1/1.txt index 63c9a49..a410199 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -201,3 +201,1060 @@ On 3/29/24 23:58, Michael Roth wrote: Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Paolo + + +X-sender: <kvm+bounces-13157-martin.weber=secunet.com@vger.kernel.org> +X-Receiver: <martin.weber@secunet.com> ORCPT=rfc822;martin.weber@secunet.com NOTIFY=NEVER; X-ExtendedProps=BQAVABYAAgAAAAUAFAARAJuYHy0vkvxLoOu7fW2WcxcPADUAAABNaWNyb3NvZnQuRXhjaGFuZ2UuVHJhbnNwb3J0LkRpcmVjdG9yeURhdGEuSXNSZXNvdXJjZQIAAAUAagAJAAEAAAAAAAAABQAWAAIAAAUAQwACAAAFAEYABwADAAAABQBHAAIAAAUAEgAPAF4AAAAvbz1zZWN1bmV0L291PUV4Y2hhbmdlIEFkbWluaXN0cmF0aXZlIEdyb3VwIChGWURJQk9IRjIzU1BETFQpL2NuPVJlY2lwaWVudHMvY249V2ViZXIgTWFydGluOTU1BQALABcAvgAAALMpUnVJ4+pPsL47FHo+lvtDTj1EQjIsQ049RGF0YWJhc2VzLENOPUV4Y2hhbmdlIEFkbWluaXN0cmF0aXZlIEdyb3VwIChGWURJQk9IRjIzU1BETFQpLENOPUFkbWluaXN0cmF0aXZlIEdyb3VwcyxDTj1zZWN1bmV0LENOPU1pY3Jvc29mdCBFeGNoYW5nZSxDTj1TZXJ2aWNlcyxDTj1Db25maWd1cmF0aW9uLERDPXNlY3VuZXQsREM9ZGUFAA4AEQBACf3SYEkDT461FZzDv+B7BQAdAA8ADAAAAG1ieC1lc3Nlbi0wMQUAPAACAAAPADYAAABNaWNyb3NvZnQuRXhjaGFuZ2UuVHJhbnNwb3J0Lk1haWxSZWNpcGllbnQuRGlzcGxheU5hbWUPAA0AAABXZWJlciwgTWFydGluBQAMAAIAAAUAbAACAAAFAFgAFwBGAAAAm5gfLS+S/Eug67t9bZZzF0NOPVdlYmVyIE1hcnRpbixPVT1Vc2VycyxPVT1NaWdyYXRpb24sREM9c2VjdW5ldCxEQz1kZQUAJgACAAEFACIADwAxAAAAQXV0b1Jlc3BvbnNlU3VwcHJlc3M6IDANClRyYW5zbWl0SGlzdG9yeTogRmFsc2UNCg8ALwAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuRXhwYW5zaW9uR3JvdXBUeXBlDwAVAAAATWVtYmVyc0dyb3VwRXhwYW5zaW9uBQAjAAIAAQ== +X-CreatedBy: MSExchange15 +X-HeloDomain: b.mx.secunet.com +X-ExtendedProps: BQBjAAoAQKNAQuxQ3AgFAGEACAABAAAABQA3AAIAAA8APAAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuTWFpbFJlY2lwaWVudC5Pcmdhbml6YXRpb25TY29wZREAAAAAAAAAAAAAAAAAAAAAAAUASQACAAEFAGIACgAUAAAAo4oAAAUABAAUIAEAAAAYAAAAbWFydGluLndlYmVyQHNlY3VuZXQuY29tBQAGAAIAAQUAKQACAAEPAAkAAABDSUF1ZGl0ZWQCAAEFAAIABwABAAAABQADAAcAAAAAAAUABQACAAEFAGQADwADAAAASHVi +X-Source: SMTP:Default MBX-DRESDEN-01 +X-SourceIPAddress: 62.96.220.37 +X-EndOfInjectedXHeaders: 27703 +Received: from cas-essen-02.secunet.de (10.53.40.202) by + mbx-dresden-01.secunet.de (10.53.40.199) with Microsoft SMTP Server + (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id + 15.1.2507.37; Sat, 30 Mar 2024 22:05:53 +0100 +Received: from b.mx.secunet.com (62.96.220.37) by cas-essen-02.secunet.de + (10.53.40.202) with Microsoft SMTP Server (version=TLS1_2, + cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.37 via Frontend + Transport; Sat, 30 Mar 2024 22:05:53 +0100 +Received: from localhost (localhost [127.0.0.1]) + by b.mx.secunet.com (Postfix) with ESMTP id 5F057202D2 + for <martin.weber@secunet.com>; Sat, 30 Mar 2024 22:05:53 +0100 (CET) +X-Virus-Scanned: by secunet +X-Spam-Flag: NO +X-Spam-Score: -2.851 +X-Spam-Level: +X-Spam-Status: No, score=-2.851 tagged_above=-999 required=2.1 + tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.1, DKIM_SIGNED=0.1, + DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, + HEADER_FROM_DIFFERENT_DOMAINS=0.249, MAILING_LIST_MULTI=-1, + RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] + autolearn=unavailable autolearn_force=no +Authentication-Results: a.mx.secunet.com (amavisd-new); + dkim=pass (1024-bit key) header.d=redhat.com +Received: from b.mx.secunet.com ([127.0.0.1]) + by localhost (a.mx.secunet.com [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id PRycOYGK0JkN for <martin.weber@secunet.com>; + Sat, 30 Mar 2024 22:05:52 +0100 (CET) +Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=147.75.48.161; helo=sy.mirrors.kernel.org; envelope-from=kvm+bounces-13157-martin.weber=secunet.com@vger.kernel.org; receiver=martin.weber@secunet.com +DKIM-Filter: OpenDKIM Filter v2.11.0 b.mx.secunet.com 197B92025D +Authentication-Results: b.mx.secunet.com; + dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Z/bwkp9z" +Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by b.mx.secunet.com (Postfix) with ESMTPS id 197B92025D + for <martin.weber@secunet.com>; Sat, 30 Mar 2024 22:05:52 +0100 (CET) +Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by sy.mirrors.kernel.org (Postfix) with ESMTPS id 3CF3FB213F1 + for <martin.weber@secunet.com>; Sat, 30 Mar 2024 21:05:48 +0000 (UTC) +Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) + by smtp.subspace.kernel.org (Postfix) with ESMTP id 66B8C4AEDA; + Sat, 30 Mar 2024 21:05:38 +0000 (UTC) +Authentication-Results: smtp.subspace.kernel.org; + dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Z/bwkp9z" +X-Original-To: kvm@vger.kernel.org +Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by smtp.subspace.kernel.org (Postfix) with ESMTPS id 447D31119F + for <kvm@vger.kernel.org>; Sat, 30 Mar 2024 21:05:35 +0000 (UTC) +Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 +ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; + t=1711832738; cv=none; b=RgcMHBL5TppxCypWP+MeFLHyN6Y50n0RFy8ilRxIwVyyTmkmLr2SdafFzS0/QYhS/Fa1N57WpDpUSl7eNGZvYv1vB6pIfwZzF5Mt0PTZE07unVC7oEUF3tHVMODS8y9p8xDv2qzcKUTZkNDh1d6XmBUXLTmozEndaq+EV3J20zc= +ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; + s=arc-20240116; t=1711832738; c=relaxed/simple; + bh=3Zs96oVvSrL1EcRD7qOwXkqb76tHEKhezfgjNzTnj6U=; + h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: + In-Reply-To:Content-Type; b=PNiXqlxdVW1AtHUYT9Lox0RqQ0gOqAH/C12a0WaJ8YJuT3b0WIe95P80NQpBMhIOJjfns+VZLYyFX2C6VDWeA8sxfBd+d0mCSzv9oWwE/aBPYyF9T3LwDu420y65l1CuvyN6jvX1SPtSIwerOVlpelaA7xn5Wl3AcKAsdyXFoig= +ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=Z/bwkp9z; arc=none smtp.client-ip=170.10.129.124 +Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com +Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; + s=mimecast20190719; t=1711832735; + h=from:from:reply-to:subject:subject:date:date:message-id:message-id: + to:to:cc:cc:mime-version:mime-version:content-type:content-type: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; + bh=zvlmNpxIDJrnhPj/YKT8a7uMmKqBTvBD1u10rPEnCzE=; + b=Z/bwkp9zeM6aOZHHVlrzAtv4msVYgJudKoGo3HvWI//S6NfoTmg/NiA8TY1vM4ge5cfxPd + ZY9JuTDXhqV0UWWfzd8gDVJ4kRYtrhtlVmkcfOojWzgkvXJR9f+TO/GsSye690KMIMW9eo + L1eXzKqiYeKFwr97odtklpwEa0Z3iPw= +Received: from mail-ej1-f72.google.com (mail-ej1-f72.google.com + [209.85.218.72]) by relay.mimecast.com with ESMTP with STARTTLS + (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id + us-mta-627-GrF2kdagN9aVR0Ep795vZQ-1; Sat, 30 Mar 2024 17:05:33 -0400 +X-MC-Unique: GrF2kdagN9aVR0Ep795vZQ-1 +Received: by mail-ej1-f72.google.com with SMTP id a640c23a62f3a-a4e4a0dcee5so55234366b.1 + for <kvm@vger.kernel.org>; Sat, 30 Mar 2024 14:05:33 -0700 (PDT) +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1711832731; x=1712437531; + h=content-transfer-encoding:in-reply-to:autocrypt:content-language + :from:references:cc:to:subject:user-agent:mime-version:date + :message-id:x-gm-message-state:from:to:cc:subject:date:message-id + :reply-to; + bh=zvlmNpxIDJrnhPj/YKT8a7uMmKqBTvBD1u10rPEnCzE=; + b=RnpHZC+ZE0uG/fB2COMZLRVQFqwYQujWF2OgEcNc/7KMMPiUvZWkpzPfBVgXqzG7XP + RJuZnGQRFbGG0FlvCRfHH+czWIMZHWk/NulrkY61K6Shq4LQLaWMK5kJXfqmR0uVwAE2 + pRiiief7uLtmCf2y+1dOuosjUu6snSU7uhAAJaDnuVsxcRdvD7+rXqCOpK1SrWS/5hS/ + +wv4HohG6dZHWeqMjGfZd4w9tEiZjIL67aVpFDQpUJcAtnXMy7N+dxl4ANpXKRIf+dAj + y6PO/ZkD+rMvAN3qJ4q6bAZTRP40gh1uej7/dJVdNsJzaZoeTnJWptDEMYfq3wISBLUk + FpYQ== +X-Forwarded-Encrypted: i=1; AJvYcCWmapTY4WRjne7TrJpioNGm157K7l92NI0vkXpwGw/dRQCiL7HXThx1rhAAySIgTjMYQWh9F16OODdGdNeoFj8eSHke +X-Gm-Message-State: AOJu0Yy5mGnc+fyEkQUXvsbrU2f3Ns4/6CU6ZDVUTvlejifN/XtIn7kc + 3RD5xS7PNLQPqUWKUehWBB2yJWzaGxxosWLB4A6QFu6GLftPSZ+A9os0f2SpG/s2NlRj2Ixnyv8 + Tnl02rGW/lX+e+jnWSaVdhLgi0J0eaggLB8bKXvK+64vsMdcQsHQpwE9gHQ== +X-Received: by 2002:a17:906:a40d:b0:a4e:253d:9641 with SMTP id l13-20020a170906a40d00b00a4e253d9641mr4204855ejz.8.1711832731490; + Sat, 30 Mar 2024 14:05:31 -0700 (PDT) +X-Google-Smtp-Source: AGHT+IFTeU1CiYPB2ByqnXfgbHYLBnkSUxAq1ZyFzRHCPzV8G1WZItagAlUo3C1OjOvbzmRD+zOCDA== +X-Received: by 2002:a17:906:a40d:b0:a4e:253d:9641 with SMTP id l13-20020a170906a40d00b00a4e253d9641mr4204815ejz.8.1711832731102; + Sat, 30 Mar 2024 14:05:31 -0700 (PDT) +Received: from [192.168.10.4] ([151.95.49.219]) + by smtp.googlemail.com with ESMTPSA id lb14-20020a170906adce00b00a4e57805d79sm513857ejb.181.2024.03.30.14.05.28 + (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); + Sat, 30 Mar 2024 14:05:30 -0700 (PDT) +Message-ID: <a0799504-385b-40d8-a84c-eddb1bae930d@redhat.com> +Date: Sat, 30 Mar 2024 22:05:28 +0100 +Precedence: bulk +X-Mailing-List: kvm@vger.kernel.org +List-Id: <kvm.vger.kernel.org> +List-Subscribe: <mailto:kvm+subscribe@vger.kernel.org> +List-Unsubscribe: <mailto:kvm+unsubscribe@vger.kernel.org> +MIME-Version: 1.0 +User-Agent: Mozilla Thunderbird +Subject: Re: [PATCH v12 21/29] KVM: SEV: Implement gmem hook for initializing + private pages +To: Michael Roth <michael.roth@amd.com>, kvm@vger.kernel.org +Cc: linux-coco@lists.linux.dev, linux-mm@kvack.org, + linux-crypto@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org, + tglx@linutronix.de, mingo@redhat.com, jroedel@suse.de, + thomas.lendacky@amd.com, hpa@zytor.com, ardb@kernel.org, seanjc@google.com, + vkuznets@redhat.com, jmattson@google.com, luto@kernel.org, + dave.hansen@linux.intel.com, slp@redhat.com, pgonda@google.com, + peterz@infradead.org, srinivas.pandruvada@linux.intel.com, + rientjes@google.com, dovmurik@linux.ibm.com, tobin@ibm.com, bp@alien8.de, + vbabka@suse.cz, kirill@shutemov.name, ak@linux.intel.com, + tony.luck@intel.com, sathyanarayanan.kuppuswamy@linux.intel.com, + alpergun@google.com, jarkko@kernel.org, ashish.kalra@amd.com, + nikunj.dadhania@amd.com, pankaj.gupta@amd.com, liam.merwick@oracle.com +References: <20240329225835.400662-1-michael.roth@amd.com> + <20240329225835.400662-22-michael.roth@amd.com> +From: Paolo Bonzini <pbonzini@redhat.com> +Content-Language: en-US +Autocrypt: addr=pbonzini@redhat.com; keydata= + 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 +In-Reply-To: <20240329225835.400662-22-michael.roth@amd.com> +Content-Type: text/plain; charset=UTF-8; format=flowed +Content-Transfer-Encoding: 7bit +Return-Path: kvm+bounces-13157-martin.weber=secunet.com@vger.kernel.org +X-MS-Exchange-Organization-OriginalArrivalTime: 30 Mar 2024 21:05:53.4483 + (UTC) +X-MS-Exchange-Organization-Network-Message-Id: d57deb7e-197f-4f11-4852-08dc50fd2f8d +X-MS-Exchange-Organization-OriginalClientIPAddress: 62.96.220.37 +X-MS-Exchange-Organization-OriginalServerIPAddress: 10.53.40.202 +X-MS-Exchange-Organization-Cross-Premises-Headers-Processed: cas-essen-02.secunet.de +X-MS-Exchange-Organization-OrderedPrecisionLatencyInProgress: LSRV=mbx-dresden-01.secunet.de:TOTAL-HUB=0.439|SMR=0.345(SMRDE=0.036|SMRC=0.309(SMRCL=0.102|X-SMRCR=0.309))|CAT=0.092(CATOS=0.012 + (CATSM=0.011(CATSM-Malware + Agent=0.011))|CATRESL=0.042(CATRESLP2R=0.018)|CATORES=0.037 + (CATRS=0.037(CATRS-Index Routing Agent=0.036)));2024-03-30T21:05:54.027Z +X-MS-Exchange-Forest-ArrivalHubServer: mbx-dresden-01.secunet.de +X-MS-Exchange-Organization-AuthSource: cas-essen-02.secunet.de +X-MS-Exchange-Organization-AuthAs: Anonymous +X-MS-Exchange-Organization-FromEntityHeader: Internet +X-MS-Exchange-Organization-OriginalSize: 19529 +X-MS-Exchange-Organization-HygienePolicy: Standard +X-MS-Exchange-Organization-MessageLatency: SRV=cas-essen-02.secunet.de:TOTAL-FE=0.140|SMR=0.009(SMRPI=0.006(SMRPI-FrontendProxyAgent=0.006))|SMS=0.131 +X-MS-Exchange-Organization-AVStamp-Enterprise: 1.0 +X-MS-Exchange-Organization-Recipient-Limit-Verified: True +X-MS-Exchange-Organization-TotalRecipientCount: 1 +X-MS-Exchange-Organization-Rules-Execution-History: 0b0cf904-14ac-4724-8bdf-482ee6223cf2%%%fd34672d-751c-45ae-a963-ed177fcabe23%%%d8080257-b0c3-47b4-b0db-23bc0c8ddb3c%%%95e591a2-5d7d-4afa-b1d0-7573d6c0a5d9%%%f7d0f6bc-4dcc-4876-8c5d-b3d6ddbb3d55%%%16355082-c50b-4214-9c7d-d39575f9f79b +X-MS-Exchange-Forest-RulesExecuted: mbx-dresden-01 +X-MS-Exchange-Organization-RulesExecuted: mbx-dresden-01 +X-MS-Exchange-Forest-IndexAgent-0: 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 + GOZLwl+AgE9OHvsBJgKWG7yRxisAV4J5+1J46rvBV7kZnR5AmpHwnD + oRCUjxzJDF1BRSRdgmildYvy5MYR5erCTYpc65yEsy+ZjORA6P+ok0 + xz9sB7fUhHJLUIgzLcO/CFSW1wuSvJkikqfRQRk6pefITWCYfwKRoQ + v2m0OQ86A5h0eUPAn8mergD/IRPU1LJ6XDHpU5XrNAd40e755jSmqm + gPrTxbnlLs16mEOI8kk//+dzqJmfe3OZ/wCG+iXTvC8AAAEK2wE8P3 + htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtMTYiPz4NCjxF + bWFpbFNldD4NCiAgPFZlcnNpb24+MTUuMC4wLjA8L1ZlcnNpb24+DQ + ogIDxFbWFpbHM+DQogICAgPEVtYWlsIFN0YXJ0SW5kZXg9IjIwMSI+ + DQogICAgICA8RW1haWxTdHJpbmc+bWljaGFlbC5yb3RoQGFtZC5jb2 + 08L0VtYWlsU3RyaW5nPg0KICAgIDwvRW1haWw+DQogIDwvRW1haWxz + Pg0KPC9FbWFpbFNldD4BDPEDPD94bWwgdmVyc2lvbj0iMS4wIiBlbm + NvZGluZz0idXRmLTE2Ij8+DQo8Q29udGFjdFNldD4NCiAgPFZlcnNp + b24+MTUuMC4wLjA8L1ZlcnNpb24+DQogIDxDb250YWN0cz4NCiAgIC + A8Q29udGFjdCBTdGFydEluZGV4PSIxODciPg0KICAgICAgPFBlcnNv + biBTdGFydEluZGV4PSIxODciPg0KICAgICAgICA8UGVyc29uU3RyaW + 5nPk1pY2hhZWwgUm90aDwvUGVyc29uU3RyaW5nPg0KICAgICAgPC9Q + ZXJzb24+DQogICAgICA8RW1haWxzPg0KICAgICAgICA8RW1haWwgU3 + RhcnRJbmRleD0iMjAxIj4NCiAgICAgICAgICA8RW1haWxTdHJpbmc+ + bWljaGFlbC5yb3RoQGFtZC5jb208L0VtYWlsU3RyaW5nPg0KICAgIC + AgICA8L0VtYWlsPg0KICAgICAgPC9FbWFpbHM+DQogICAgICA8Q29u + dGFjdFN0cmluZz5NaWNoYWVsIFJvdGggJmx0O21pY2hhZWwucm90aE + BhbWQuY29tPC9Db250YWN0U3RyaW5nPg0KICAgIDwvQ29udGFjdD4N + CiAgPC9Db250YWN0cz4NCjwvQ29udGFjdFNldD4BDs8BUmV0cmlldm + VyT3BlcmF0b3IsMTAsMDtSZXRyaWV2ZXJPcGVyYXRvciwxMSwxO1Bv + c3REb2NQYXJzZXJPcGVyYXRvciwxMCwwO1Bvc3REb2NQYXJzZXJPcG + VyYXRvciwxMSwwO1Bvc3RXb3JkQnJlYWtlckRpYWdub3N0aWNPcGVy + YXRvciwxMCwzO1Bvc3RXb3JkQnJlYWtlckRpYWdub3N0aWNPcGVyYX + RvciwxMSwwO1RyYW5zcG9ydFdyaXRlclByb2R1Y2VyLDIwLDI0 +X-MS-Exchange-Forest-IndexAgent: 1 4695 +X-MS-Exchange-Forest-EmailMessageHash: 57C8C240 +X-MS-Exchange-Forest-Language: en +X-MS-Exchange-Organization-Processed-By-Journaling: Journal Agent + +On 3/29/24 23:58, Michael Roth wrote: +> This will handle the RMP table updates needed to put a page into a +> private state before mapping it into an SEV-SNP guest. +> +> Signed-off-by: Michael Roth <michael.roth@amd.com> +> --- +> arch/x86/kvm/Kconfig | 1 + +> arch/x86/kvm/svm/sev.c | 98 ++++++++++++++++++++++++++++++++++++++++++ +> arch/x86/kvm/svm/svm.c | 2 + +> arch/x86/kvm/svm/svm.h | 5 +++ +> arch/x86/kvm/x86.c | 5 +++ +> virt/kvm/guest_memfd.c | 4 +- +> 6 files changed, 113 insertions(+), 2 deletions(-) +> +> diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig +> index d0bb0e7a4e80..286b40d0b07c 100644 +> --- a/arch/x86/kvm/Kconfig +> +++ b/arch/x86/kvm/Kconfig +> @@ -124,6 +124,7 @@ config KVM_AMD_SEV +> depends on CRYPTO_DEV_SP_PSP && !(KVM_AMD=y && CRYPTO_DEV_CCP_DD=m) +> select ARCH_HAS_CC_PLATFORM +> select KVM_GENERIC_PRIVATE_MEM +> + select HAVE_KVM_GMEM_PREPARE +> help +> Provides support for launching Encrypted VMs (SEV) and Encrypted VMs +> with Encrypted State (SEV-ES) on AMD processors. +> diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c +> index 9ea13c2de668..e1f8be1df219 100644 +> --- a/arch/x86/kvm/svm/sev.c +> +++ b/arch/x86/kvm/svm/sev.c +> @@ -4282,3 +4282,101 @@ void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code) +> out: +> put_page(pfn_to_page(pfn)); +> } +> + +> +static bool is_pfn_range_shared(kvm_pfn_t start, kvm_pfn_t end) +> +{ +> + kvm_pfn_t pfn = start; +> + +> + while (pfn < end) { +> + int ret, rmp_level; +> + bool assigned; +> + +> + ret = snp_lookup_rmpentry(pfn, &assigned, &rmp_level); +> + if (ret) { +> + pr_warn_ratelimited("SEV: Failed to retrieve RMP entry: PFN 0x%llx GFN start 0x%llx GFN end 0x%llx RMP level %d error %d\n", +> + pfn, start, end, rmp_level, ret); +> + return false; +> + } +> + +> + if (assigned) { +> + pr_debug("%s: overlap detected, PFN 0x%llx start 0x%llx end 0x%llx RMP level %d\n", +> + __func__, pfn, start, end, rmp_level); +> + return false; +> + } +> + +> + pfn++; +> + } +> + +> + return true; +> +} +> + +> +static u8 max_level_for_order(int order) +> +{ +> + if (order >= KVM_HPAGE_GFN_SHIFT(PG_LEVEL_2M)) +> + return PG_LEVEL_2M; +> + +> + return PG_LEVEL_4K; +> +} +> + +> +static bool is_large_rmp_possible(struct kvm *kvm, kvm_pfn_t pfn, int order) +> +{ +> + kvm_pfn_t pfn_aligned = ALIGN_DOWN(pfn, PTRS_PER_PMD); +> + +> + /* +> + * If this is a large folio, and the entire 2M range containing the +> + * PFN is currently shared, then the entire 2M-aligned range can be +> + * set to private via a single 2M RMP entry. +> + */ +> + if (max_level_for_order(order) > PG_LEVEL_4K && +> + is_pfn_range_shared(pfn_aligned, pfn_aligned + PTRS_PER_PMD)) +> + return true; +> + +> + return false; +> +} +> + +> +int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order) +> +{ +> + struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info; +> + kvm_pfn_t pfn_aligned; +> + gfn_t gfn_aligned; +> + int level, rc; +> + bool assigned; +> + +> + if (!sev_snp_guest(kvm)) +> + return 0; +> + +> + rc = snp_lookup_rmpentry(pfn, &assigned, &level); +> + if (rc) { +> + pr_err_ratelimited("SEV: Failed to look up RMP entry: GFN %llx PFN %llx error %d\n", +> + gfn, pfn, rc); +> + return -ENOENT; +> + } +> + +> + if (assigned) { +> + pr_debug("%s: already assigned: gfn %llx pfn %llx max_order %d level %d\n", +> + __func__, gfn, pfn, max_order, level); +> + return 0; +> + } +> + +> + if (is_large_rmp_possible(kvm, pfn, max_order)) { +> + level = PG_LEVEL_2M; +> + pfn_aligned = ALIGN_DOWN(pfn, PTRS_PER_PMD); +> + gfn_aligned = ALIGN_DOWN(gfn, PTRS_PER_PMD); +> + } else { +> + level = PG_LEVEL_4K; +> + pfn_aligned = pfn; +> + gfn_aligned = gfn; +> + } +> + +> + rc = rmp_make_private(pfn_aligned, gfn_to_gpa(gfn_aligned), level, sev->asid, false); +> + if (rc) { +> + pr_err_ratelimited("SEV: Failed to update RMP entry: GFN %llx PFN %llx level %d error %d\n", +> + gfn, pfn, level, rc); +> + return -EINVAL; +> + } +> + +> + pr_debug("%s: updated: gfn %llx pfn %llx pfn_aligned %llx max_order %d level %d\n", +> + __func__, gfn, pfn, pfn_aligned, max_order, level); +> + +> + return 0; +> +} +> diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c +> index a895d3f07cb8..c099154e326a 100644 +> --- a/arch/x86/kvm/svm/svm.c +> +++ b/arch/x86/kvm/svm/svm.c +> @@ -5078,6 +5078,8 @@ static struct kvm_x86_ops svm_x86_ops __initdata = { +> .vcpu_deliver_sipi_vector = svm_vcpu_deliver_sipi_vector, +> .vcpu_get_apicv_inhibit_reasons = avic_vcpu_get_apicv_inhibit_reasons, +> .alloc_apic_backing_page = svm_alloc_apic_backing_page, +> + +> + .gmem_prepare = sev_gmem_prepare, +> }; +> +> /* +> diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h +> index 0cdcd0759fe0..53618cfc2b89 100644 +> --- a/arch/x86/kvm/svm/svm.h +> +++ b/arch/x86/kvm/svm/svm.h +> @@ -730,6 +730,7 @@ extern unsigned int max_sev_asid; +> void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code); +> void sev_vcpu_unblocking(struct kvm_vcpu *vcpu); +> void sev_snp_init_protected_guest_state(struct kvm_vcpu *vcpu); +> +int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order); +> #else +> static inline struct page *snp_safe_alloc_page(struct kvm_vcpu *vcpu) { +> return alloc_page(GFP_KERNEL_ACCOUNT | __GFP_ZERO); +> @@ -746,6 +747,10 @@ static inline int sev_dev_get_attr(u64 attr, u64 *val) { return -ENXIO; } +> static inline void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code) {} +> static inline void sev_vcpu_unblocking(struct kvm_vcpu *vcpu) {} +> static inline void sev_snp_init_protected_guest_state(struct kvm_vcpu *vcpu) {} +> +static inline int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order) +> +{ +> + return 0; +> +} +> +> #endif +> +> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c +> index 617c38656757..d05922684005 100644 +> --- a/arch/x86/kvm/x86.c +> +++ b/arch/x86/kvm/x86.c +> @@ -13615,6 +13615,11 @@ bool kvm_arch_no_poll(struct kvm_vcpu *vcpu) +> EXPORT_SYMBOL_GPL(kvm_arch_no_poll); +> +> #ifdef CONFIG_HAVE_KVM_GMEM_PREPARE +> +bool kvm_arch_gmem_prepare_needed(struct kvm *kvm) +> +{ +> + return kvm->arch.vm_type == KVM_X86_SNP_VM; +> +} +> + +> int kvm_arch_gmem_prepare(struct kvm *kvm, gfn_t gfn, kvm_pfn_t pfn, int max_order) +> { +> return static_call(kvm_x86_gmem_prepare)(kvm, pfn, gfn, max_order); +> diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c +> index 3e3c4b7fff3b..11952254ae48 100644 +> --- a/virt/kvm/guest_memfd.c +> +++ b/virt/kvm/guest_memfd.c +> @@ -46,8 +46,8 @@ static int kvm_gmem_prepare_folio(struct inode *inode, pgoff_t index, struct fol +> gfn = slot->base_gfn + index - slot->gmem.pgoff; +> rc = kvm_arch_gmem_prepare(kvm, gfn, pfn, compound_order(compound_head(page))); +> if (rc) { +> - pr_warn_ratelimited("gmem: Failed to prepare folio for index %lx, error %d.\n", +> - index, rc); +> + pr_warn_ratelimited("gmem: Failed to prepare folio for index %lx GFN %llx PFN %llx error %d.\n", +> + index, gfn, pfn, rc); +> return rc; +> } +> } + +Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> + +Paolo + + +X-sender: <linux-kernel+bounces-125884-steffen.klassert=secunet.com@vger.kernel.org> +X-Receiver: <steffen.klassert@secunet.com> ORCPT=rfc822;steffen.klassert@secunet.com NOTIFY=NEVER; X-ExtendedProps=BQAVABYAAgAAAAUAFAARAPDFCS25BAlDktII2g02frgPADUAAABNaWNyb3NvZnQuRXhjaGFuZ2UuVHJhbnNwb3J0LkRpcmVjdG9yeURhdGEuSXNSZXNvdXJjZQIAAAUAagAJAAEAAAAAAAAABQAWAAIAAAUAQwACAAAFAEYABwADAAAABQBHAAIAAAUAEgAPAGIAAAAvbz1zZWN1bmV0L291PUV4Y2hhbmdlIEFkbWluaXN0cmF0aXZlIEdyb3VwIChGWURJQk9IRjIzU1BETFQpL2NuPVJlY2lwaWVudHMvY249U3RlZmZlbiBLbGFzc2VydDY4YwUACwAXAL4AAACheZxkHSGBRqAcAp3ukbifQ049REI2LENOPURhdGFiYXNlcyxDTj1FeGNoYW5nZSBBZG1pbmlzdHJhdGl2ZSBHcm91cCAoRllESUJPSEYyM1NQRExUKSxDTj1BZG1pbmlzdHJhdGl2ZSBHcm91cHMsQ049c2VjdW5ldCxDTj1NaWNyb3NvZnQgRXhjaGFuZ2UsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1zZWN1bmV0LERDPWRlBQAOABEABiAS9uuMOkqzwmEZDvWNNQUAHQAPAAwAAABtYngtZXNzZW4tMDIFADwAAgAADwA2AAAATWljcm9zb2Z0LkV4Y2hhbmdlLlRyYW5zcG9ydC5NYWlsUmVjaXBpZW50LkRpc3BsYXlOYW1lDwARAAAAS2xhc3NlcnQsIFN0ZWZmZW4FAAwAAgAABQBsAAIAAAUAWAAXAEoAAADwxQktuQQJQ5LSCNoNNn64Q049S2xhc3NlcnQgU3RlZmZlbixPVT1Vc2VycyxPVT1NaWdyYXRpb24sREM9c2VjdW5ldCxEQz1kZQUAJgACAAEFACIADwAxAAAAQXV0b1Jlc3BvbnNlU3VwcHJlc3M6IDANClRyYW5zbWl0SGlzdG9yeTogRmFsc2UNCg8ALwAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuRXhwYW5zaW9uR3JvdXBUeXBlDwAVAAAATWVtYmVyc0dyb3VwRXhwYW5zaW9uBQAjAAIAAQ== +X-CreatedBy: MSExchange15 +X-HeloDomain: a.mx.secunet.com +X-ExtendedProps: BQBjAAoAQKNAQuxQ3AgFAGEACAABAAAABQA3AAIAAA8APAAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuTWFpbFJlY2lwaWVudC5Pcmdhbml6YXRpb25TY29wZREAAAAAAAAAAAAAAAAAAAAAAAUASQACAAEFAGIACgAVAAAAo4oAAAUABAAUIAEAAAAcAAAAc3RlZmZlbi5rbGFzc2VydEBzZWN1bmV0LmNvbQUABgACAAEFACkAAgABDwAJAAAAQ0lBdWRpdGVkAgABBQACAAcAAQAAAAUAAwAHAAAAAAAFAAUAAgABBQBkAA8AAwAAAEh1Yg== +X-Source: SMTP:Default MBX-DRESDEN-01 +X-SourceIPAddress: 62.96.220.36 +X-EndOfInjectedXHeaders: 27632 +Received: from cas-essen-02.secunet.de (10.53.40.202) by + mbx-dresden-01.secunet.de (10.53.40.199) with Microsoft SMTP Server + (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id + 15.1.2507.37; Sat, 30 Mar 2024 22:05:59 +0100 +Received: from a.mx.secunet.com (62.96.220.36) by cas-essen-02.secunet.de + (10.53.40.202) with Microsoft SMTP Server (version=TLS1_2, + cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.37 via Frontend + Transport; Sat, 30 Mar 2024 22:05:59 +0100 +Received: from localhost (localhost [127.0.0.1]) + by a.mx.secunet.com (Postfix) with ESMTP id EFF4C20883 + for <steffen.klassert@secunet.com>; Sat, 30 Mar 2024 22:05:58 +0100 (CET) +X-Virus-Scanned: by secunet +X-Spam-Flag: NO +X-Spam-Score: -5.151 +X-Spam-Level: +X-Spam-Status: No, score=-5.151 tagged_above=-999 required=2.1 + tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.1, DKIM_SIGNED=0.1, + DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, + HEADER_FROM_DIFFERENT_DOMAINS=0.249, MAILING_LIST_MULTI=-1, + RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] + autolearn=ham autolearn_force=no +Authentication-Results: a.mx.secunet.com (amavisd-new); + dkim=pass (1024-bit key) header.d=redhat.com +Received: from a.mx.secunet.com ([127.0.0.1]) + by localhost (a.mx.secunet.com [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id jPyHFIQzS7lk for <steffen.klassert@secunet.com>; + Sat, 30 Mar 2024 22:05:58 +0100 (CET) +Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=139.178.88.99; helo=sv.mirrors.kernel.org; envelope-from=linux-kernel+bounces-125884-steffen.klassert=secunet.com@vger.kernel.org; receiver=steffen.klassert@secunet.com +DKIM-Filter: OpenDKIM Filter v2.11.0 a.mx.secunet.com D7FCA20520 +Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by a.mx.secunet.com (Postfix) with ESMTPS id D7FCA20520 + for <steffen.klassert@secunet.com>; Sat, 30 Mar 2024 22:05:57 +0100 (CET) +Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by sv.mirrors.kernel.org (Postfix) with ESMTPS id 7A319282BFF + for <steffen.klassert@secunet.com>; Sat, 30 Mar 2024 21:05:55 +0000 (UTC) +Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) + by smtp.subspace.kernel.org (Postfix) with ESMTP id 93E9B4D9E7; + Sat, 30 Mar 2024 21:05:40 +0000 (UTC) +Authentication-Results: smtp.subspace.kernel.org; + dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="iMz1hl2M" +Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by smtp.subspace.kernel.org (Postfix) with ESMTPS id 47DB243ADA + for <linux-kernel@vger.kernel.org>; Sat, 30 Mar 2024 21:05:35 +0000 (UTC) +Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 +ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; + t=1711832736; cv=none; b=mYjoV2BWBEI3RSD/GVtT3x+lj2mN83O7o83HDNjGWcct/RiBj4fT+oMsIBQgHT3p9EpmRhcxvnErkql3acDjfK6TpFr87TVQT4gp1phG18GrBRhsY79AAGQA8In3tU6xs+OPVpW4a+iVftFNYidhZZZ+6S0OgwBWulAld1Pu7xk= +ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; + s=arc-20240116; t=1711832736; c=relaxed/simple; + bh=3Zs96oVvSrL1EcRD7qOwXkqb76tHEKhezfgjNzTnj6U=; + h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: + In-Reply-To:Content-Type; b=ae1wa1GswZJRlxxXgy8YycVkEJOthYG2FpAKTw0BDXaPo1s30spPmdjif6fpbGfKo9tco6Ud2fa1IoHDYqcTptQOUOKVKIjmgUK7mOC8bUvXSMFCBIcDt+Krm2/802IiwANql4OgOx0ziO2IdVIjlXvxSf//LwzMBq7arunpDY4= +ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=iMz1hl2M; arc=none smtp.client-ip=170.10.133.124 +Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com +Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; + s=mimecast20190719; t=1711832734; + h=from:from:reply-to:subject:subject:date:date:message-id:message-id: + to:to:cc:cc:mime-version:mime-version:content-type:content-type: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; + bh=zvlmNpxIDJrnhPj/YKT8a7uMmKqBTvBD1u10rPEnCzE=; + b=iMz1hl2Mf/psN5Od7gln/fDHfKpEbYKAoJhvY6cNexwhZrtJjVZGFsdCoZU3kWgWk1RIwh + LKspXOWtfajfLA4pTm8k/VRcwb5l74UdyiTt8ptTmcNAW0OGRYJqcF18jP49JFR4Zcw1uK + +iZjx/537Gyk0TR70Zvl0/odzcpHB4c= +Received: from mail-ej1-f71.google.com (mail-ej1-f71.google.com + [209.85.218.71]) by relay.mimecast.com with ESMTP with STARTTLS + (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id + us-mta-256-PGYr2KPYOiO_h0SY5dI7dA-1; Sat, 30 Mar 2024 17:05:32 -0400 +X-MC-Unique: PGYr2KPYOiO_h0SY5dI7dA-1 +Received: by mail-ej1-f71.google.com with SMTP id a640c23a62f3a-a4e4a0dcee5so55232866b.1 + for <linux-kernel@vger.kernel.org>; Sat, 30 Mar 2024 14:05:32 -0700 (PDT) +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1711832731; x=1712437531; + h=content-transfer-encoding:in-reply-to:autocrypt:content-language + :from:references:cc:to:subject:user-agent:mime-version:date + :message-id:x-gm-message-state:from:to:cc:subject:date:message-id + :reply-to; + bh=zvlmNpxIDJrnhPj/YKT8a7uMmKqBTvBD1u10rPEnCzE=; + b=QxMFlo5ug4ZHZZGO5wWoALQQRlOPeUYjaulSwfIzWR7oJlOJZUfEcJb4tKgifu9IV/ + CWrr9zfXXJ+DF3eXPyeblWXVdK0S2qBJE7wDsixX4eH0+G7Gz2Z1SlPSiXMYd0Qwjoln + tKeyZ74tNMi8tW8LcpBSMKrLsBlpZyl67z98q+iG5LAWWQv5tm1GC/nATwdb2KcT0xUH + tUmQunTYQJ3WpIJ23zjsru60aJBbQ+YXbM+xtNCOL5IhkRIKT2UTKK42tEv/sG+PUYur + e1FD3kzb5/i1RNzn/olY8riuKcgvK20Ad3rqi6RPG24rU0HZi7Jhjq0zTwHOgJtznwXd + q7WA== +X-Forwarded-Encrypted: i=1; AJvYcCV2MbwO/cLEokR4NZioslecqzrHxS9Vf9nnhhRErbbfBZv3hRg9v4WmYxhiwj4OjRJPt6S8x6Cu5+FARLAGKnfAY4t+DSNSzNAzVkZK +X-Gm-Message-State: AOJu0YzKWQ4KhkKs0FzBu8Nr7LqQ+U2x7HqthkZw8l5f+HdZCRoD+Xdm + koNmfBvn5I5GTrYHYjd3uuWdYqQ3QGcX9b5gyl1MmAtCfHswZOthI42mOl3wSebasWF2MeQDNWn + 9CsiOuZHW0eGHn1B+kjh+kHhkuFfDc6IWa+lyaLzuqC9LF36lVCo1UFYnFvl2sA== +X-Received: by 2002:a17:906:a40d:b0:a4e:253d:9641 with SMTP id l13-20020a170906a40d00b00a4e253d9641mr4204826ejz.8.1711832731470; + Sat, 30 Mar 2024 14:05:31 -0700 (PDT) +X-Google-Smtp-Source: AGHT+IFTeU1CiYPB2ByqnXfgbHYLBnkSUxAq1ZyFzRHCPzV8G1WZItagAlUo3C1OjOvbzmRD+zOCDA== +X-Received: by 2002:a17:906:a40d:b0:a4e:253d:9641 with SMTP id l13-20020a170906a40d00b00a4e253d9641mr4204815ejz.8.1711832731102; + Sat, 30 Mar 2024 14:05:31 -0700 (PDT) +Received: from [192.168.10.4] ([151.95.49.219]) + by smtp.googlemail.com with ESMTPSA id lb14-20020a170906adce00b00a4e57805d79sm513857ejb.181.2024.03.30.14.05.28 + (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); + Sat, 30 Mar 2024 14:05:30 -0700 (PDT) +Message-ID: <a0799504-385b-40d8-a84c-eddb1bae930d@redhat.com> +Date: Sat, 30 Mar 2024 22:05:28 +0100 +Precedence: bulk +X-Mailing-List: linux-kernel@vger.kernel.org +List-Id: <linux-kernel.vger.kernel.org> +List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> +List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> +MIME-Version: 1.0 +User-Agent: Mozilla Thunderbird +Subject: Re: [PATCH v12 21/29] KVM: SEV: Implement gmem hook for initializing + private pages +To: Michael Roth <michael.roth@amd.com>, kvm@vger.kernel.org +Cc: linux-coco@lists.linux.dev, linux-mm@kvack.org, + linux-crypto@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org, + tglx@linutronix.de, mingo@redhat.com, jroedel@suse.de, + thomas.lendacky@amd.com, hpa@zytor.com, ardb@kernel.org, seanjc@google.com, + vkuznets@redhat.com, jmattson@google.com, luto@kernel.org, + dave.hansen@linux.intel.com, slp@redhat.com, pgonda@google.com, + peterz@infradead.org, srinivas.pandruvada@linux.intel.com, + rientjes@google.com, dovmurik@linux.ibm.com, tobin@ibm.com, bp@alien8.de, + vbabka@suse.cz, kirill@shutemov.name, ak@linux.intel.com, + tony.luck@intel.com, sathyanarayanan.kuppuswamy@linux.intel.com, + alpergun@google.com, jarkko@kernel.org, ashish.kalra@amd.com, + nikunj.dadhania@amd.com, pankaj.gupta@amd.com, liam.merwick@oracle.com +References: <20240329225835.400662-1-michael.roth@amd.com> + <20240329225835.400662-22-michael.roth@amd.com> +From: Paolo Bonzini <pbonzini@redhat.com> +Content-Language: en-US +Autocrypt: addr=pbonzini@redhat.com; keydata= + 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 +In-Reply-To: <20240329225835.400662-22-michael.roth@amd.com> +Content-Type: text/plain; charset=UTF-8; format=flowed +Content-Transfer-Encoding: 7bit +Return-Path: linux-kernel+bounces-125884-steffen.klassert=secunet.com@vger.kernel.org +X-MS-Exchange-Organization-OriginalArrivalTime: 30 Mar 2024 21:05:59.0559 + (UTC) +X-MS-Exchange-Organization-Network-Message-Id: f33a2ab5-8d5d-4b0d-edfc-08dc50fd32e4 +X-MS-Exchange-Organization-OriginalClientIPAddress: 62.96.220.36 +X-MS-Exchange-Organization-OriginalServerIPAddress: 10.53.40.202 +X-MS-Exchange-Organization-Cross-Premises-Headers-Processed: cas-essen-02.secunet.de +X-MS-Exchange-Organization-OrderedPrecisionLatencyInProgress: LSRV=mbx-dresden-01.secunet.de:TOTAL-HUB=0.438|SMR=0.338(SMRDE=0.036|SMRC=0.302(SMRCL=0.102|X-SMRCR=0.302))|CAT=0.098(CATOS=0.012 + (CATSM=0.012(CATSM-Malware + Agent=0.011))|CATRESL=0.043(CATRESLP2R=0.019)|CATORES=0.041 + (CATRS=0.041(CATRS-Index Routing Agent=0.040)));2024-03-30T21:05:59.494Z +X-MS-Exchange-Forest-ArrivalHubServer: mbx-dresden-01.secunet.de +X-MS-Exchange-Organization-AuthSource: cas-essen-02.secunet.de +X-MS-Exchange-Organization-AuthAs: Anonymous +X-MS-Exchange-Organization-FromEntityHeader: Internet +X-MS-Exchange-Organization-OriginalSize: 19470 +X-MS-Exchange-Organization-HygienePolicy: Standard +X-MS-Exchange-Organization-MessageLatency: SRV=cas-essen-02.secunet.de:TOTAL-FE=0.010|SMR=0.010(SMRPI=0.007(SMRPI-FrontendProxyAgent=0.007)) +X-MS-Exchange-Organization-AVStamp-Enterprise: 1.0 +X-MS-Exchange-Organization-Recipient-Limit-Verified: True +X-MS-Exchange-Organization-TotalRecipientCount: 1 +X-MS-Exchange-Organization-Rules-Execution-History: 0b0cf904-14ac-4724-8bdf-482ee6223cf2%%%fd34672d-751c-45ae-a963-ed177fcabe23%%%d8080257-b0c3-47b4-b0db-23bc0c8ddb3c%%%95e591a2-5d7d-4afa-b1d0-7573d6c0a5d9%%%f7d0f6bc-4dcc-4876-8c5d-b3d6ddbb3d55%%%16355082-c50b-4214-9c7d-d39575f9f79b +X-MS-Exchange-Forest-RulesExecuted: mbx-dresden-01 +X-MS-Exchange-Organization-RulesExecuted: mbx-dresden-01 +X-MS-Exchange-Forest-IndexAgent-0: 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 + GOZLwl+AgE9OHvsBJgKWG7yRxisAV4J5+1J46rvBV7kZnR5AmpHwnD + oRCUjxzJDF1BRSRdgmildYvy5MYR5erCTYpc65yEsy+ZjORA6P+ok0 + xz9sB7fUhHJLUIgzLcO/CFSW1wuSvJkikqfRQRk6pefITWCYfwKRoQ + v2m0OQ86A5h0eUPAn8mergD/IRPU1LJ6XDHpU5XrNAd40e755jSmqm + gPrTxbnlLs16mEOI8kk//+dzqJmfe3OZ/wCG+iXTvC8AAAEK2wE8P3 + htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtMTYiPz4NCjxF + bWFpbFNldD4NCiAgPFZlcnNpb24+MTUuMC4wLjA8L1ZlcnNpb24+DQ + ogIDxFbWFpbHM+DQogICAgPEVtYWlsIFN0YXJ0SW5kZXg9IjIwMSI+ + DQogICAgICA8RW1haWxTdHJpbmc+bWljaGFlbC5yb3RoQGFtZC5jb2 + 08L0VtYWlsU3RyaW5nPg0KICAgIDwvRW1haWw+DQogIDwvRW1haWxz + Pg0KPC9FbWFpbFNldD4BDPEDPD94bWwgdmVyc2lvbj0iMS4wIiBlbm + NvZGluZz0idXRmLTE2Ij8+DQo8Q29udGFjdFNldD4NCiAgPFZlcnNp + b24+MTUuMC4wLjA8L1ZlcnNpb24+DQogIDxDb250YWN0cz4NCiAgIC + A8Q29udGFjdCBTdGFydEluZGV4PSIxODciPg0KICAgICAgPFBlcnNv + biBTdGFydEluZGV4PSIxODciPg0KICAgICAgICA8UGVyc29uU3RyaW + 5nPk1pY2hhZWwgUm90aDwvUGVyc29uU3RyaW5nPg0KICAgICAgPC9Q + ZXJzb24+DQogICAgICA8RW1haWxzPg0KICAgICAgICA8RW1haWwgU3 + RhcnRJbmRleD0iMjAxIj4NCiAgICAgICAgICA8RW1haWxTdHJpbmc+ + bWljaGFlbC5yb3RoQGFtZC5jb208L0VtYWlsU3RyaW5nPg0KICAgIC + AgICA8L0VtYWlsPg0KICAgICAgPC9FbWFpbHM+DQogICAgICA8Q29u + dGFjdFN0cmluZz5NaWNoYWVsIFJvdGggJmx0O21pY2hhZWwucm90aE + BhbWQuY29tPC9Db250YWN0U3RyaW5nPg0KICAgIDwvQ29udGFjdD4N + CiAgPC9Db250YWN0cz4NCjwvQ29udGFjdFNldD4BDs8BUmV0cmlldm + VyT3BlcmF0b3IsMTAsMDtSZXRyaWV2ZXJPcGVyYXRvciwxMSwxO1Bv + c3REb2NQYXJzZXJPcGVyYXRvciwxMCwwO1Bvc3REb2NQYXJzZXJPcG + VyYXRvciwxMSwwO1Bvc3RXb3JkQnJlYWtlckRpYWdub3N0aWNPcGVy + YXRvciwxMCwzO1Bvc3RXb3JkQnJlYWtlckRpYWdub3N0aWNPcGVyYX + RvciwxMSwwO1RyYW5zcG9ydFdyaXRlclByb2R1Y2VyLDIwLDI3 +X-MS-Exchange-Forest-IndexAgent: 1 4695 +X-MS-Exchange-Forest-EmailMessageHash: 57C8C240 +X-MS-Exchange-Forest-Language: en +X-MS-Exchange-Organization-Processed-By-Journaling: Journal Agent + +On 3/29/24 23:58, Michael Roth wrote: +> This will handle the RMP table updates needed to put a page into a +> private state before mapping it into an SEV-SNP guest. +> +> Signed-off-by: Michael Roth <michael.roth@amd.com> +> --- +> arch/x86/kvm/Kconfig | 1 + +> arch/x86/kvm/svm/sev.c | 98 ++++++++++++++++++++++++++++++++++++++++++ +> arch/x86/kvm/svm/svm.c | 2 + +> arch/x86/kvm/svm/svm.h | 5 +++ +> arch/x86/kvm/x86.c | 5 +++ +> virt/kvm/guest_memfd.c | 4 +- +> 6 files changed, 113 insertions(+), 2 deletions(-) +> +> diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig +> index d0bb0e7a4e80..286b40d0b07c 100644 +> --- a/arch/x86/kvm/Kconfig +> +++ b/arch/x86/kvm/Kconfig +> @@ -124,6 +124,7 @@ config KVM_AMD_SEV +> depends on CRYPTO_DEV_SP_PSP && !(KVM_AMD=y && CRYPTO_DEV_CCP_DD=m) +> select ARCH_HAS_CC_PLATFORM +> select KVM_GENERIC_PRIVATE_MEM +> + select HAVE_KVM_GMEM_PREPARE +> help +> Provides support for launching Encrypted VMs (SEV) and Encrypted VMs +> with Encrypted State (SEV-ES) on AMD processors. +> diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c +> index 9ea13c2de668..e1f8be1df219 100644 +> --- a/arch/x86/kvm/svm/sev.c +> +++ b/arch/x86/kvm/svm/sev.c +> @@ -4282,3 +4282,101 @@ void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code) +> out: +> put_page(pfn_to_page(pfn)); +> } +> + +> +static bool is_pfn_range_shared(kvm_pfn_t start, kvm_pfn_t end) +> +{ +> + kvm_pfn_t pfn = start; +> + +> + while (pfn < end) { +> + int ret, rmp_level; +> + bool assigned; +> + +> + ret = snp_lookup_rmpentry(pfn, &assigned, &rmp_level); +> + if (ret) { +> + pr_warn_ratelimited("SEV: Failed to retrieve RMP entry: PFN 0x%llx GFN start 0x%llx GFN end 0x%llx RMP level %d error %d\n", +> + pfn, start, end, rmp_level, ret); +> + return false; +> + } +> + +> + if (assigned) { +> + pr_debug("%s: overlap detected, PFN 0x%llx start 0x%llx end 0x%llx RMP level %d\n", +> + __func__, pfn, start, end, rmp_level); +> + return false; +> + } +> + +> + pfn++; +> + } +> + +> + return true; +> +} +> + +> +static u8 max_level_for_order(int order) +> +{ +> + if (order >= KVM_HPAGE_GFN_SHIFT(PG_LEVEL_2M)) +> + return PG_LEVEL_2M; +> + +> + return PG_LEVEL_4K; +> +} +> + +> +static bool is_large_rmp_possible(struct kvm *kvm, kvm_pfn_t pfn, int order) +> +{ +> + kvm_pfn_t pfn_aligned = ALIGN_DOWN(pfn, PTRS_PER_PMD); +> + +> + /* +> + * If this is a large folio, and the entire 2M range containing the +> + * PFN is currently shared, then the entire 2M-aligned range can be +> + * set to private via a single 2M RMP entry. +> + */ +> + if (max_level_for_order(order) > PG_LEVEL_4K && +> + is_pfn_range_shared(pfn_aligned, pfn_aligned + PTRS_PER_PMD)) +> + return true; +> + +> + return false; +> +} +> + +> +int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order) +> +{ +> + struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info; +> + kvm_pfn_t pfn_aligned; +> + gfn_t gfn_aligned; +> + int level, rc; +> + bool assigned; +> + +> + if (!sev_snp_guest(kvm)) +> + return 0; +> + +> + rc = snp_lookup_rmpentry(pfn, &assigned, &level); +> + if (rc) { +> + pr_err_ratelimited("SEV: Failed to look up RMP entry: GFN %llx PFN %llx error %d\n", +> + gfn, pfn, rc); +> + return -ENOENT; +> + } +> + +> + if (assigned) { +> + pr_debug("%s: already assigned: gfn %llx pfn %llx max_order %d level %d\n", +> + __func__, gfn, pfn, max_order, level); +> + return 0; +> + } +> + +> + if (is_large_rmp_possible(kvm, pfn, max_order)) { +> + level = PG_LEVEL_2M; +> + pfn_aligned = ALIGN_DOWN(pfn, PTRS_PER_PMD); +> + gfn_aligned = ALIGN_DOWN(gfn, PTRS_PER_PMD); +> + } else { +> + level = PG_LEVEL_4K; +> + pfn_aligned = pfn; +> + gfn_aligned = gfn; +> + } +> + +> + rc = rmp_make_private(pfn_aligned, gfn_to_gpa(gfn_aligned), level, sev->asid, false); +> + if (rc) { +> + pr_err_ratelimited("SEV: Failed to update RMP entry: GFN %llx PFN %llx level %d error %d\n", +> + gfn, pfn, level, rc); +> + return -EINVAL; +> + } +> + +> + pr_debug("%s: updated: gfn %llx pfn %llx pfn_aligned %llx max_order %d level %d\n", +> + __func__, gfn, pfn, pfn_aligned, max_order, level); +> + +> + return 0; +> +} +> diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c +> index a895d3f07cb8..c099154e326a 100644 +> --- a/arch/x86/kvm/svm/svm.c +> +++ b/arch/x86/kvm/svm/svm.c +> @@ -5078,6 +5078,8 @@ static struct kvm_x86_ops svm_x86_ops __initdata = { +> .vcpu_deliver_sipi_vector = svm_vcpu_deliver_sipi_vector, +> .vcpu_get_apicv_inhibit_reasons = avic_vcpu_get_apicv_inhibit_reasons, +> .alloc_apic_backing_page = svm_alloc_apic_backing_page, +> + +> + .gmem_prepare = sev_gmem_prepare, +> }; +> +> /* +> diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h +> index 0cdcd0759fe0..53618cfc2b89 100644 +> --- a/arch/x86/kvm/svm/svm.h +> +++ b/arch/x86/kvm/svm/svm.h +> @@ -730,6 +730,7 @@ extern unsigned int max_sev_asid; +> void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code); +> void sev_vcpu_unblocking(struct kvm_vcpu *vcpu); +> void sev_snp_init_protected_guest_state(struct kvm_vcpu *vcpu); +> +int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order); +> #else +> static inline struct page *snp_safe_alloc_page(struct kvm_vcpu *vcpu) { +> return alloc_page(GFP_KERNEL_ACCOUNT | __GFP_ZERO); +> @@ -746,6 +747,10 @@ static inline int sev_dev_get_attr(u64 attr, u64 *val) { return -ENXIO; } +> static inline void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code) {} +> static inline void sev_vcpu_unblocking(struct kvm_vcpu *vcpu) {} +> static inline void sev_snp_init_protected_guest_state(struct kvm_vcpu *vcpu) {} +> +static inline int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order) +> +{ +> + return 0; +> +} +> +> #endif +> +> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c +> index 617c38656757..d05922684005 100644 +> --- a/arch/x86/kvm/x86.c +> +++ b/arch/x86/kvm/x86.c +> @@ -13615,6 +13615,11 @@ bool kvm_arch_no_poll(struct kvm_vcpu *vcpu) +> EXPORT_SYMBOL_GPL(kvm_arch_no_poll); +> +> #ifdef CONFIG_HAVE_KVM_GMEM_PREPARE +> +bool kvm_arch_gmem_prepare_needed(struct kvm *kvm) +> +{ +> + return kvm->arch.vm_type == KVM_X86_SNP_VM; +> +} +> + +> int kvm_arch_gmem_prepare(struct kvm *kvm, gfn_t gfn, kvm_pfn_t pfn, int max_order) +> { +> return static_call(kvm_x86_gmem_prepare)(kvm, pfn, gfn, max_order); +> diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c +> index 3e3c4b7fff3b..11952254ae48 100644 +> --- a/virt/kvm/guest_memfd.c +> +++ b/virt/kvm/guest_memfd.c +> @@ -46,8 +46,8 @@ static int kvm_gmem_prepare_folio(struct inode *inode, pgoff_t index, struct fol +> gfn = slot->base_gfn + index - slot->gmem.pgoff; +> rc = kvm_arch_gmem_prepare(kvm, gfn, pfn, compound_order(compound_head(page))); +> if (rc) { +> - pr_warn_ratelimited("gmem: Failed to prepare folio for index %lx, error %d.\n", +> - index, rc); +> + pr_warn_ratelimited("gmem: Failed to prepare folio for index %lx GFN %llx PFN %llx error %d.\n", +> + index, gfn, pfn, rc); +> return rc; +> } +> } + +Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> + +Paolo diff --git a/a/content_digest b/N1/content_digest index b430ffe..72773fc 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -244,6 +244,1063 @@ "\n" "Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>\n" "\n" + "Paolo\n" + "\n" + "\n" + "X-sender: <kvm+bounces-13157-martin.weber=secunet.com@vger.kernel.org>\n" + "X-Receiver: <martin.weber@secunet.com> ORCPT=rfc822;martin.weber@secunet.com NOTIFY=NEVER; X-ExtendedProps=BQAVABYAAgAAAAUAFAARAJuYHy0vkvxLoOu7fW2WcxcPADUAAABNaWNyb3NvZnQuRXhjaGFuZ2UuVHJhbnNwb3J0LkRpcmVjdG9yeURhdGEuSXNSZXNvdXJjZQIAAAUAagAJAAEAAAAAAAAABQAWAAIAAAUAQwACAAAFAEYABwADAAAABQBHAAIAAAUAEgAPAF4AAAAvbz1zZWN1bmV0L291PUV4Y2hhbmdlIEFkbWluaXN0cmF0aXZlIEdyb3VwIChGWURJQk9IRjIzU1BETFQpL2NuPVJlY2lwaWVudHMvY249V2ViZXIgTWFydGluOTU1BQALABcAvgAAALMpUnVJ4+pPsL47FHo+lvtDTj1EQjIsQ049RGF0YWJhc2VzLENOPUV4Y2hhbmdlIEFkbWluaXN0cmF0aXZlIEdyb3VwIChGWURJQk9IRjIzU1BETFQpLENOPUFkbWluaXN0cmF0aXZlIEdyb3VwcyxDTj1zZWN1bmV0LENOPU1pY3Jvc29mdCBFeGNoYW5nZSxDTj1TZXJ2aWNlcyxDTj1Db25maWd1cmF0aW9uLERDPXNlY3VuZXQsREM9ZGUFAA4AEQBACf3SYEkDT461FZzDv+B7BQAdAA8ADAAAAG1ieC1lc3Nlbi0wMQUAPAACAAAPADYAAABNaWNyb3NvZnQuRXhjaGFuZ2UuVHJhbnNwb3J0Lk1haWxSZWNpcGllbnQuRGlzcGxheU5hbWUPAA0AAABXZWJlciwgTWFydGluBQAMAAIAAAUAbAACAAAFAFgAFwBGAAAAm5gfLS+S/Eug67t9bZZzF0NOPVdlYmVyIE1hcnRpbixPVT1Vc2VycyxPVT1NaWdyYXRpb24sREM9c2VjdW5ldCxEQz1kZQUAJgACAAEFACIADwAxAAAAQXV0b1Jlc3BvbnNlU3VwcHJlc3M6IDANClRyYW5zbWl0SGlzdG9yeTogRmFsc2UNCg8ALwAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuRXhwYW5zaW9uR3JvdXBUeXBlDwAVAAAATWVtYmVyc0dyb3VwRXhwYW5zaW9uBQAjAAIAAQ==\n" + "X-CreatedBy: MSExchange15\n" + "X-HeloDomain: b.mx.secunet.com\n" + "X-ExtendedProps: BQBjAAoAQKNAQuxQ3AgFAGEACAABAAAABQA3AAIAAA8APAAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuTWFpbFJlY2lwaWVudC5Pcmdhbml6YXRpb25TY29wZREAAAAAAAAAAAAAAAAAAAAAAAUASQACAAEFAGIACgAUAAAAo4oAAAUABAAUIAEAAAAYAAAAbWFydGluLndlYmVyQHNlY3VuZXQuY29tBQAGAAIAAQUAKQACAAEPAAkAAABDSUF1ZGl0ZWQCAAEFAAIABwABAAAABQADAAcAAAAAAAUABQACAAEFAGQADwADAAAASHVi\n" + "X-Source: SMTP:Default MBX-DRESDEN-01\n" + "X-SourceIPAddress: 62.96.220.37\n" + "X-EndOfInjectedXHeaders: 27703\n" + "Received: from cas-essen-02.secunet.de (10.53.40.202) by\n" + " mbx-dresden-01.secunet.de (10.53.40.199) with Microsoft SMTP Server\n" + " (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id\n" + " 15.1.2507.37; Sat, 30 Mar 2024 22:05:53 +0100\n" + "Received: from b.mx.secunet.com (62.96.220.37) by cas-essen-02.secunet.de\n" + " (10.53.40.202) with Microsoft SMTP Server (version=TLS1_2,\n" + " cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.37 via Frontend\n" + " Transport; Sat, 30 Mar 2024 22:05:53 +0100\n" + "Received: from localhost (localhost [127.0.0.1])\n" + "\tby b.mx.secunet.com (Postfix) with ESMTP id 5F057202D2\n" + "\tfor <martin.weber@secunet.com>; Sat, 30 Mar 2024 22:05:53 +0100 (CET)\n" + "X-Virus-Scanned: by secunet\n" + "X-Spam-Flag: NO\n" + "X-Spam-Score: -2.851\n" + "X-Spam-Level:\n" + "X-Spam-Status: No, score=-2.851 tagged_above=-999 required=2.1\n" + "\ttests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.1, DKIM_SIGNED=0.1,\n" + "\tDKIM_VALID=-0.1, DKIM_VALID_AU=-0.1,\n" + "\tHEADER_FROM_DIFFERENT_DOMAINS=0.249, MAILING_LIST_MULTI=-1,\n" + "\tRCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001]\n" + "\tautolearn=unavailable autolearn_force=no\n" + "Authentication-Results: a.mx.secunet.com (amavisd-new);\n" + "\tdkim=pass (1024-bit key) header.d=redhat.com\n" + "Received: from b.mx.secunet.com ([127.0.0.1])\n" + "\tby localhost (a.mx.secunet.com [127.0.0.1]) (amavisd-new, port 10024)\n" + "\twith ESMTP id PRycOYGK0JkN for <martin.weber@secunet.com>;\n" + "\tSat, 30 Mar 2024 22:05:52 +0100 (CET)\n" + "Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=147.75.48.161; helo=sy.mirrors.kernel.org; envelope-from=kvm+bounces-13157-martin.weber=secunet.com@vger.kernel.org; receiver=martin.weber@secunet.com \n" + "DKIM-Filter: OpenDKIM Filter v2.11.0 b.mx.secunet.com 197B92025D\n" + "Authentication-Results: b.mx.secunet.com;\n" + "\tdkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=\"Z/bwkp9z\"\n" + "Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])\n" + "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n" + "\t(No client certificate requested)\n" + "\tby b.mx.secunet.com (Postfix) with ESMTPS id 197B92025D\n" + "\tfor <martin.weber@secunet.com>; Sat, 30 Mar 2024 22:05:52 +0100 (CET)\n" + "Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140])\n" + "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n" + "\t(No client certificate requested)\n" + "\tby sy.mirrors.kernel.org (Postfix) with ESMTPS id 3CF3FB213F1\n" + "\tfor <martin.weber@secunet.com>; Sat, 30 Mar 2024 21:05:48 +0000 (UTC)\n" + "Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])\n" + "\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 66B8C4AEDA;\n" + "\tSat, 30 Mar 2024 21:05:38 +0000 (UTC)\n" + "Authentication-Results: smtp.subspace.kernel.org;\n" + "\tdkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=\"Z/bwkp9z\"\n" + "X-Original-To: kvm@vger.kernel.org\n" + "Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124])\n" + "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n" + "\t(No client certificate requested)\n" + "\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 447D31119F\n" + "\tfor <kvm@vger.kernel.org>; Sat, 30 Mar 2024 21:05:35 +0000 (UTC)\n" + "Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124\n" + "ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n" + "\tt=1711832738; cv=none; b=RgcMHBL5TppxCypWP+MeFLHyN6Y50n0RFy8ilRxIwVyyTmkmLr2SdafFzS0/QYhS/Fa1N57WpDpUSl7eNGZvYv1vB6pIfwZzF5Mt0PTZE07unVC7oEUF3tHVMODS8y9p8xDv2qzcKUTZkNDh1d6XmBUXLTmozEndaq+EV3J20zc=\n" + "ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org;\n" + "\ts=arc-20240116; t=1711832738; c=relaxed/simple;\n" + "\tbh=3Zs96oVvSrL1EcRD7qOwXkqb76tHEKhezfgjNzTnj6U=;\n" + "\th=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:\n" + "\t In-Reply-To:Content-Type; b=PNiXqlxdVW1AtHUYT9Lox0RqQ0gOqAH/C12a0WaJ8YJuT3b0WIe95P80NQpBMhIOJjfns+VZLYyFX2C6VDWeA8sxfBd+d0mCSzv9oWwE/aBPYyF9T3LwDu420y65l1CuvyN6jvX1SPtSIwerOVlpelaA7xn5Wl3AcKAsdyXFoig=\n" + "ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=Z/bwkp9z; arc=none smtp.client-ip=170.10.129.124\n" + "Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com\n" + "Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com\n" + "DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n" + "\ts=mimecast20190719; t=1711832735;\n" + "\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n" + "\t to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n" + "\t content-transfer-encoding:content-transfer-encoding:\n" + "\t in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;\n" + "\tbh=zvlmNpxIDJrnhPj/YKT8a7uMmKqBTvBD1u10rPEnCzE=;\n" + "\tb=Z/bwkp9zeM6aOZHHVlrzAtv4msVYgJudKoGo3HvWI//S6NfoTmg/NiA8TY1vM4ge5cfxPd\n" + "\tZY9JuTDXhqV0UWWfzd8gDVJ4kRYtrhtlVmkcfOojWzgkvXJR9f+TO/GsSye690KMIMW9eo\n" + "\tL1eXzKqiYeKFwr97odtklpwEa0Z3iPw=\n" + "Received: from mail-ej1-f72.google.com (mail-ej1-f72.google.com\n" + " [209.85.218.72]) by relay.mimecast.com with ESMTP with STARTTLS\n" + " (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n" + " us-mta-627-GrF2kdagN9aVR0Ep795vZQ-1; Sat, 30 Mar 2024 17:05:33 -0400\n" + "X-MC-Unique: GrF2kdagN9aVR0Ep795vZQ-1\n" + "Received: by mail-ej1-f72.google.com with SMTP id a640c23a62f3a-a4e4a0dcee5so55234366b.1\n" + " for <kvm@vger.kernel.org>; Sat, 30 Mar 2024 14:05:33 -0700 (PDT)\n" + "X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;\n" + " d=1e100.net; s=20230601; t=1711832731; x=1712437531;\n" + " h=content-transfer-encoding:in-reply-to:autocrypt:content-language\n" + " :from:references:cc:to:subject:user-agent:mime-version:date\n" + " :message-id:x-gm-message-state:from:to:cc:subject:date:message-id\n" + " :reply-to;\n" + " bh=zvlmNpxIDJrnhPj/YKT8a7uMmKqBTvBD1u10rPEnCzE=;\n" + " b=RnpHZC+ZE0uG/fB2COMZLRVQFqwYQujWF2OgEcNc/7KMMPiUvZWkpzPfBVgXqzG7XP\n" + " RJuZnGQRFbGG0FlvCRfHH+czWIMZHWk/NulrkY61K6Shq4LQLaWMK5kJXfqmR0uVwAE2\n" + " pRiiief7uLtmCf2y+1dOuosjUu6snSU7uhAAJaDnuVsxcRdvD7+rXqCOpK1SrWS/5hS/\n" + " +wv4HohG6dZHWeqMjGfZd4w9tEiZjIL67aVpFDQpUJcAtnXMy7N+dxl4ANpXKRIf+dAj\n" + " y6PO/ZkD+rMvAN3qJ4q6bAZTRP40gh1uej7/dJVdNsJzaZoeTnJWptDEMYfq3wISBLUk\n" + " FpYQ==\n" + "X-Forwarded-Encrypted: i=1; AJvYcCWmapTY4WRjne7TrJpioNGm157K7l92NI0vkXpwGw/dRQCiL7HXThx1rhAAySIgTjMYQWh9F16OODdGdNeoFj8eSHke\n" + "X-Gm-Message-State: AOJu0Yy5mGnc+fyEkQUXvsbrU2f3Ns4/6CU6ZDVUTvlejifN/XtIn7kc\n" + "\t3RD5xS7PNLQPqUWKUehWBB2yJWzaGxxosWLB4A6QFu6GLftPSZ+A9os0f2SpG/s2NlRj2Ixnyv8\n" + "\tTnl02rGW/lX+e+jnWSaVdhLgi0J0eaggLB8bKXvK+64vsMdcQsHQpwE9gHQ==\n" + "X-Received: by 2002:a17:906:a40d:b0:a4e:253d:9641 with SMTP id l13-20020a170906a40d00b00a4e253d9641mr4204855ejz.8.1711832731490;\n" + " Sat, 30 Mar 2024 14:05:31 -0700 (PDT)\n" + "X-Google-Smtp-Source: AGHT+IFTeU1CiYPB2ByqnXfgbHYLBnkSUxAq1ZyFzRHCPzV8G1WZItagAlUo3C1OjOvbzmRD+zOCDA==\n" + "X-Received: by 2002:a17:906:a40d:b0:a4e:253d:9641 with SMTP id l13-20020a170906a40d00b00a4e253d9641mr4204815ejz.8.1711832731102;\n" + " Sat, 30 Mar 2024 14:05:31 -0700 (PDT)\n" + "Received: from [192.168.10.4] ([151.95.49.219])\n" + " by smtp.googlemail.com with ESMTPSA id lb14-20020a170906adce00b00a4e57805d79sm513857ejb.181.2024.03.30.14.05.28\n" + " (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n" + " Sat, 30 Mar 2024 14:05:30 -0700 (PDT)\n" + "Message-ID: <a0799504-385b-40d8-a84c-eddb1bae930d@redhat.com>\n" + "Date: Sat, 30 Mar 2024 22:05:28 +0100\n" + "Precedence: bulk\n" + "X-Mailing-List: kvm@vger.kernel.org\n" + "List-Id: <kvm.vger.kernel.org>\n" + "List-Subscribe: <mailto:kvm+subscribe@vger.kernel.org>\n" + "List-Unsubscribe: <mailto:kvm+unsubscribe@vger.kernel.org>\n" + "MIME-Version: 1.0\n" + "User-Agent: Mozilla Thunderbird\n" + "Subject: Re: [PATCH v12 21/29] KVM: SEV: Implement gmem hook for initializing\n" + " private pages\n" + "To: Michael Roth <michael.roth@amd.com>, kvm@vger.kernel.org\n" + "Cc: linux-coco@lists.linux.dev, linux-mm@kvack.org,\n" + " linux-crypto@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org,\n" + " tglx@linutronix.de, mingo@redhat.com, jroedel@suse.de,\n" + " thomas.lendacky@amd.com, hpa@zytor.com, ardb@kernel.org, seanjc@google.com,\n" + " vkuznets@redhat.com, jmattson@google.com, luto@kernel.org,\n" + " dave.hansen@linux.intel.com, slp@redhat.com, pgonda@google.com,\n" + " peterz@infradead.org, srinivas.pandruvada@linux.intel.com,\n" + " rientjes@google.com, dovmurik@linux.ibm.com, tobin@ibm.com, bp@alien8.de,\n" + " vbabka@suse.cz, kirill@shutemov.name, ak@linux.intel.com,\n" + " tony.luck@intel.com, sathyanarayanan.kuppuswamy@linux.intel.com,\n" + " alpergun@google.com, jarkko@kernel.org, ashish.kalra@amd.com,\n" + " nikunj.dadhania@amd.com, pankaj.gupta@amd.com, liam.merwick@oracle.com\n" + "References: <20240329225835.400662-1-michael.roth@amd.com>\n" + " <20240329225835.400662-22-michael.roth@amd.com>\n" + "From: Paolo Bonzini <pbonzini@redhat.com>\n" + "Content-Language: en-US\n" + "Autocrypt: addr=pbonzini@redhat.com; keydata=\n" + " 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\n" + "In-Reply-To: <20240329225835.400662-22-michael.roth@amd.com>\n" + "Content-Type: text/plain; charset=UTF-8; format=flowed\n" + "Content-Transfer-Encoding: 7bit\n" + "Return-Path: kvm+bounces-13157-martin.weber=secunet.com@vger.kernel.org\n" + "X-MS-Exchange-Organization-OriginalArrivalTime: 30 Mar 2024 21:05:53.4483\n" + " (UTC)\n" + "X-MS-Exchange-Organization-Network-Message-Id: d57deb7e-197f-4f11-4852-08dc50fd2f8d\n" + "X-MS-Exchange-Organization-OriginalClientIPAddress: 62.96.220.37\n" + "X-MS-Exchange-Organization-OriginalServerIPAddress: 10.53.40.202\n" + "X-MS-Exchange-Organization-Cross-Premises-Headers-Processed: cas-essen-02.secunet.de\n" + "X-MS-Exchange-Organization-OrderedPrecisionLatencyInProgress: LSRV=mbx-dresden-01.secunet.de:TOTAL-HUB=0.439|SMR=0.345(SMRDE=0.036|SMRC=0.309(SMRCL=0.102|X-SMRCR=0.309))|CAT=0.092(CATOS=0.012\n" + " (CATSM=0.011(CATSM-Malware\n" + " Agent=0.011))|CATRESL=0.042(CATRESLP2R=0.018)|CATORES=0.037\n" + " (CATRS=0.037(CATRS-Index Routing Agent=0.036)));2024-03-30T21:05:54.027Z\n" + "X-MS-Exchange-Forest-ArrivalHubServer: mbx-dresden-01.secunet.de\n" + "X-MS-Exchange-Organization-AuthSource: cas-essen-02.secunet.de\n" + "X-MS-Exchange-Organization-AuthAs: Anonymous\n" + "X-MS-Exchange-Organization-FromEntityHeader: Internet\n" + "X-MS-Exchange-Organization-OriginalSize: 19529\n" + "X-MS-Exchange-Organization-HygienePolicy: Standard\n" + "X-MS-Exchange-Organization-MessageLatency: SRV=cas-essen-02.secunet.de:TOTAL-FE=0.140|SMR=0.009(SMRPI=0.006(SMRPI-FrontendProxyAgent=0.006))|SMS=0.131\n" + "X-MS-Exchange-Organization-AVStamp-Enterprise: 1.0\n" + "X-MS-Exchange-Organization-Recipient-Limit-Verified: True\n" + "X-MS-Exchange-Organization-TotalRecipientCount: 1\n" + "X-MS-Exchange-Organization-Rules-Execution-History: 0b0cf904-14ac-4724-8bdf-482ee6223cf2%%%fd34672d-751c-45ae-a963-ed177fcabe23%%%d8080257-b0c3-47b4-b0db-23bc0c8ddb3c%%%95e591a2-5d7d-4afa-b1d0-7573d6c0a5d9%%%f7d0f6bc-4dcc-4876-8c5d-b3d6ddbb3d55%%%16355082-c50b-4214-9c7d-d39575f9f79b\n" + "X-MS-Exchange-Forest-RulesExecuted: mbx-dresden-01\n" + "X-MS-Exchange-Organization-RulesExecuted: mbx-dresden-01\n" + "X-MS-Exchange-Forest-IndexAgent-0: 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\n" + " CqC4R+T/Sxz5w7lByEgBxTjt5YCC4BWWf48WRjkZFf4O1pKce/MsHt\n" + " 4+SwAy+Z15OlPEedG+y1EN+CATaTkI8GA5gjGNbFwEu8jAMZhPIU+u\n" + " F+BHYM9PYe5bFY//HRn/wH7hiFvCERf/j0UqqOzR4p6W2sDn26DxDj\n" + " mCjl64i++Fa6jnGgjc9fHMUinHSH9AJzGp83oGa31WTMQVv6NR0XOT\n" + " swU5EHr/h/8ZPgtOPjnhZZFkLnxtZb+YFhkDGpCZo7P80fv+Kvxgk5\n" + " 1RfuG/S5hwxlvmTqcknA3s4b6IrnUVU3QQ0RhZuOWlxPIyqk2nEyuz\n" + " uNGpOOvzSpiaEpsSWRoaIAC0vCQs+TpII9PnABuROQvelSnLv7Iq+Q\n" + " F+LTMnxmcJfCZ7Z6kLvEVJvlYiydsc/7SURXndmWIRP6JP7ZQkryAm\n" + " GOZLwl+AgE9OHvsBJgKWG7yRxisAV4J5+1J46rvBV7kZnR5AmpHwnD\n" + " oRCUjxzJDF1BRSRdgmildYvy5MYR5erCTYpc65yEsy+ZjORA6P+ok0\n" + " xz9sB7fUhHJLUIgzLcO/CFSW1wuSvJkikqfRQRk6pefITWCYfwKRoQ\n" + " v2m0OQ86A5h0eUPAn8mergD/IRPU1LJ6XDHpU5XrNAd40e755jSmqm\n" + " gPrTxbnlLs16mEOI8kk//+dzqJmfe3OZ/wCG+iXTvC8AAAEK2wE8P3\n" + " htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtMTYiPz4NCjxF\n" + " bWFpbFNldD4NCiAgPFZlcnNpb24+MTUuMC4wLjA8L1ZlcnNpb24+DQ\n" + " ogIDxFbWFpbHM+DQogICAgPEVtYWlsIFN0YXJ0SW5kZXg9IjIwMSI+\n" + " DQogICAgICA8RW1haWxTdHJpbmc+bWljaGFlbC5yb3RoQGFtZC5jb2\n" + " 08L0VtYWlsU3RyaW5nPg0KICAgIDwvRW1haWw+DQogIDwvRW1haWxz\n" + " Pg0KPC9FbWFpbFNldD4BDPEDPD94bWwgdmVyc2lvbj0iMS4wIiBlbm\n" + " NvZGluZz0idXRmLTE2Ij8+DQo8Q29udGFjdFNldD4NCiAgPFZlcnNp\n" + " b24+MTUuMC4wLjA8L1ZlcnNpb24+DQogIDxDb250YWN0cz4NCiAgIC\n" + " A8Q29udGFjdCBTdGFydEluZGV4PSIxODciPg0KICAgICAgPFBlcnNv\n" + " biBTdGFydEluZGV4PSIxODciPg0KICAgICAgICA8UGVyc29uU3RyaW\n" + " 5nPk1pY2hhZWwgUm90aDwvUGVyc29uU3RyaW5nPg0KICAgICAgPC9Q\n" + " ZXJzb24+DQogICAgICA8RW1haWxzPg0KICAgICAgICA8RW1haWwgU3\n" + " RhcnRJbmRleD0iMjAxIj4NCiAgICAgICAgICA8RW1haWxTdHJpbmc+\n" + " bWljaGFlbC5yb3RoQGFtZC5jb208L0VtYWlsU3RyaW5nPg0KICAgIC\n" + " AgICA8L0VtYWlsPg0KICAgICAgPC9FbWFpbHM+DQogICAgICA8Q29u\n" + " dGFjdFN0cmluZz5NaWNoYWVsIFJvdGggJmx0O21pY2hhZWwucm90aE\n" + " BhbWQuY29tPC9Db250YWN0U3RyaW5nPg0KICAgIDwvQ29udGFjdD4N\n" + " CiAgPC9Db250YWN0cz4NCjwvQ29udGFjdFNldD4BDs8BUmV0cmlldm\n" + " VyT3BlcmF0b3IsMTAsMDtSZXRyaWV2ZXJPcGVyYXRvciwxMSwxO1Bv\n" + " c3REb2NQYXJzZXJPcGVyYXRvciwxMCwwO1Bvc3REb2NQYXJzZXJPcG\n" + " VyYXRvciwxMSwwO1Bvc3RXb3JkQnJlYWtlckRpYWdub3N0aWNPcGVy\n" + " YXRvciwxMCwzO1Bvc3RXb3JkQnJlYWtlckRpYWdub3N0aWNPcGVyYX\n" + " RvciwxMSwwO1RyYW5zcG9ydFdyaXRlclByb2R1Y2VyLDIwLDI0\n" + "X-MS-Exchange-Forest-IndexAgent: 1 4695\n" + "X-MS-Exchange-Forest-EmailMessageHash: 57C8C240\n" + "X-MS-Exchange-Forest-Language: en\n" + "X-MS-Exchange-Organization-Processed-By-Journaling: Journal Agent\n" + "\n" + "On 3/29/24 23:58, Michael Roth wrote:\n" + "> This will handle the RMP table updates needed to put a page into a\n" + "> private state before mapping it into an SEV-SNP guest.\n" + "> \n" + "> Signed-off-by: Michael Roth <michael.roth@amd.com>\n" + "> ---\n" + "> arch/x86/kvm/Kconfig | 1 +\n" + "> arch/x86/kvm/svm/sev.c | 98 ++++++++++++++++++++++++++++++++++++++++++\n" + "> arch/x86/kvm/svm/svm.c | 2 +\n" + "> arch/x86/kvm/svm/svm.h | 5 +++\n" + "> arch/x86/kvm/x86.c | 5 +++\n" + "> virt/kvm/guest_memfd.c | 4 +-\n" + "> 6 files changed, 113 insertions(+), 2 deletions(-)\n" + "> \n" + "> diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig\n" + "> index d0bb0e7a4e80..286b40d0b07c 100644\n" + "> --- a/arch/x86/kvm/Kconfig\n" + "> +++ b/arch/x86/kvm/Kconfig\n" + "> @@ -124,6 +124,7 @@ config KVM_AMD_SEV\n" + "> \tdepends on CRYPTO_DEV_SP_PSP && !(KVM_AMD=y && CRYPTO_DEV_CCP_DD=m)\n" + "> \tselect ARCH_HAS_CC_PLATFORM\n" + "> \tselect KVM_GENERIC_PRIVATE_MEM\n" + "> +\tselect HAVE_KVM_GMEM_PREPARE\n" + "> \thelp\n" + "> \t Provides support for launching Encrypted VMs (SEV) and Encrypted VMs\n" + "> \t with Encrypted State (SEV-ES) on AMD processors.\n" + "> diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c\n" + "> index 9ea13c2de668..e1f8be1df219 100644\n" + "> --- a/arch/x86/kvm/svm/sev.c\n" + "> +++ b/arch/x86/kvm/svm/sev.c\n" + "> @@ -4282,3 +4282,101 @@ void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code)\n" + "> out:\n" + "> \tput_page(pfn_to_page(pfn));\n" + "> }\n" + "> +\n" + "> +static bool is_pfn_range_shared(kvm_pfn_t start, kvm_pfn_t end)\n" + "> +{\n" + "> +\tkvm_pfn_t pfn = start;\n" + "> +\n" + "> +\twhile (pfn < end) {\n" + "> +\t\tint ret, rmp_level;\n" + "> +\t\tbool assigned;\n" + "> +\n" + "> +\t\tret = snp_lookup_rmpentry(pfn, &assigned, &rmp_level);\n" + "> +\t\tif (ret) {\n" + "> +\t\t\tpr_warn_ratelimited(\"SEV: Failed to retrieve RMP entry: PFN 0x%llx GFN start 0x%llx GFN end 0x%llx RMP level %d error %d\\n\",\n" + "> +\t\t\t\t\t pfn, start, end, rmp_level, ret);\n" + "> +\t\t\treturn false;\n" + "> +\t\t}\n" + "> +\n" + "> +\t\tif (assigned) {\n" + "> +\t\t\tpr_debug(\"%s: overlap detected, PFN 0x%llx start 0x%llx end 0x%llx RMP level %d\\n\",\n" + "> +\t\t\t\t __func__, pfn, start, end, rmp_level);\n" + "> +\t\t\treturn false;\n" + "> +\t\t}\n" + "> +\n" + "> +\t\tpfn++;\n" + "> +\t}\n" + "> +\n" + "> +\treturn true;\n" + "> +}\n" + "> +\n" + "> +static u8 max_level_for_order(int order)\n" + "> +{\n" + "> +\tif (order >= KVM_HPAGE_GFN_SHIFT(PG_LEVEL_2M))\n" + "> +\t\treturn PG_LEVEL_2M;\n" + "> +\n" + "> +\treturn PG_LEVEL_4K;\n" + "> +}\n" + "> +\n" + "> +static bool is_large_rmp_possible(struct kvm *kvm, kvm_pfn_t pfn, int order)\n" + "> +{\n" + "> +\tkvm_pfn_t pfn_aligned = ALIGN_DOWN(pfn, PTRS_PER_PMD);\n" + "> +\n" + "> +\t/*\n" + "> +\t * If this is a large folio, and the entire 2M range containing the\n" + "> +\t * PFN is currently shared, then the entire 2M-aligned range can be\n" + "> +\t * set to private via a single 2M RMP entry.\n" + "> +\t */\n" + "> +\tif (max_level_for_order(order) > PG_LEVEL_4K &&\n" + "> +\t is_pfn_range_shared(pfn_aligned, pfn_aligned + PTRS_PER_PMD))\n" + "> +\t\treturn true;\n" + "> +\n" + "> +\treturn false;\n" + "> +}\n" + "> +\n" + "> +int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order)\n" + "> +{\n" + "> +\tstruct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;\n" + "> +\tkvm_pfn_t pfn_aligned;\n" + "> +\tgfn_t gfn_aligned;\n" + "> +\tint level, rc;\n" + "> +\tbool assigned;\n" + "> +\n" + "> +\tif (!sev_snp_guest(kvm))\n" + "> +\t\treturn 0;\n" + "> +\n" + "> +\trc = snp_lookup_rmpentry(pfn, &assigned, &level);\n" + "> +\tif (rc) {\n" + "> +\t\tpr_err_ratelimited(\"SEV: Failed to look up RMP entry: GFN %llx PFN %llx error %d\\n\",\n" + "> +\t\t\t\t gfn, pfn, rc);\n" + "> +\t\treturn -ENOENT;\n" + "> +\t}\n" + "> +\n" + "> +\tif (assigned) {\n" + "> +\t\tpr_debug(\"%s: already assigned: gfn %llx pfn %llx max_order %d level %d\\n\",\n" + "> +\t\t\t __func__, gfn, pfn, max_order, level);\n" + "> +\t\treturn 0;\n" + "> +\t}\n" + "> +\n" + "> +\tif (is_large_rmp_possible(kvm, pfn, max_order)) {\n" + "> +\t\tlevel = PG_LEVEL_2M;\n" + "> +\t\tpfn_aligned = ALIGN_DOWN(pfn, PTRS_PER_PMD);\n" + "> +\t\tgfn_aligned = ALIGN_DOWN(gfn, PTRS_PER_PMD);\n" + "> +\t} else {\n" + "> +\t\tlevel = PG_LEVEL_4K;\n" + "> +\t\tpfn_aligned = pfn;\n" + "> +\t\tgfn_aligned = gfn;\n" + "> +\t}\n" + "> +\n" + "> +\trc = rmp_make_private(pfn_aligned, gfn_to_gpa(gfn_aligned), level, sev->asid, false);\n" + "> +\tif (rc) {\n" + "> +\t\tpr_err_ratelimited(\"SEV: Failed to update RMP entry: GFN %llx PFN %llx level %d error %d\\n\",\n" + "> +\t\t\t\t gfn, pfn, level, rc);\n" + "> +\t\treturn -EINVAL;\n" + "> +\t}\n" + "> +\n" + "> +\tpr_debug(\"%s: updated: gfn %llx pfn %llx pfn_aligned %llx max_order %d level %d\\n\",\n" + "> +\t\t __func__, gfn, pfn, pfn_aligned, max_order, level);\n" + "> +\n" + "> +\treturn 0;\n" + "> +}\n" + "> diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c\n" + "> index a895d3f07cb8..c099154e326a 100644\n" + "> --- a/arch/x86/kvm/svm/svm.c\n" + "> +++ b/arch/x86/kvm/svm/svm.c\n" + "> @@ -5078,6 +5078,8 @@ static struct kvm_x86_ops svm_x86_ops __initdata = {\n" + "> \t.vcpu_deliver_sipi_vector = svm_vcpu_deliver_sipi_vector,\n" + "> \t.vcpu_get_apicv_inhibit_reasons = avic_vcpu_get_apicv_inhibit_reasons,\n" + "> \t.alloc_apic_backing_page = svm_alloc_apic_backing_page,\n" + "> +\n" + "> +\t.gmem_prepare = sev_gmem_prepare,\n" + "> };\n" + "> \n" + "> /*\n" + "> diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h\n" + "> index 0cdcd0759fe0..53618cfc2b89 100644\n" + "> --- a/arch/x86/kvm/svm/svm.h\n" + "> +++ b/arch/x86/kvm/svm/svm.h\n" + "> @@ -730,6 +730,7 @@ extern unsigned int max_sev_asid;\n" + "> void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code);\n" + "> void sev_vcpu_unblocking(struct kvm_vcpu *vcpu);\n" + "> void sev_snp_init_protected_guest_state(struct kvm_vcpu *vcpu);\n" + "> +int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order);\n" + "> #else\n" + "> static inline struct page *snp_safe_alloc_page(struct kvm_vcpu *vcpu) {\n" + "> \treturn alloc_page(GFP_KERNEL_ACCOUNT | __GFP_ZERO);\n" + "> @@ -746,6 +747,10 @@ static inline int sev_dev_get_attr(u64 attr, u64 *val) { return -ENXIO; }\n" + "> static inline void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code) {}\n" + "> static inline void sev_vcpu_unblocking(struct kvm_vcpu *vcpu) {}\n" + "> static inline void sev_snp_init_protected_guest_state(struct kvm_vcpu *vcpu) {}\n" + "> +static inline int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order)\n" + "> +{\n" + "> +\treturn 0;\n" + "> +}\n" + "> \n" + "> #endif\n" + "> \n" + "> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c\n" + "> index 617c38656757..d05922684005 100644\n" + "> --- a/arch/x86/kvm/x86.c\n" + "> +++ b/arch/x86/kvm/x86.c\n" + "> @@ -13615,6 +13615,11 @@ bool kvm_arch_no_poll(struct kvm_vcpu *vcpu)\n" + "> EXPORT_SYMBOL_GPL(kvm_arch_no_poll);\n" + "> \n" + "> #ifdef CONFIG_HAVE_KVM_GMEM_PREPARE\n" + "> +bool kvm_arch_gmem_prepare_needed(struct kvm *kvm)\n" + "> +{\n" + "> +\treturn kvm->arch.vm_type == KVM_X86_SNP_VM;\n" + "> +}\n" + "> +\n" + "> int kvm_arch_gmem_prepare(struct kvm *kvm, gfn_t gfn, kvm_pfn_t pfn, int max_order)\n" + "> {\n" + "> \treturn static_call(kvm_x86_gmem_prepare)(kvm, pfn, gfn, max_order);\n" + "> diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c\n" + "> index 3e3c4b7fff3b..11952254ae48 100644\n" + "> --- a/virt/kvm/guest_memfd.c\n" + "> +++ b/virt/kvm/guest_memfd.c\n" + "> @@ -46,8 +46,8 @@ static int kvm_gmem_prepare_folio(struct inode *inode, pgoff_t index, struct fol\n" + "> \t\tgfn = slot->base_gfn + index - slot->gmem.pgoff;\n" + "> \t\trc = kvm_arch_gmem_prepare(kvm, gfn, pfn, compound_order(compound_head(page)));\n" + "> \t\tif (rc) {\n" + "> -\t\t\tpr_warn_ratelimited(\"gmem: Failed to prepare folio for index %lx, error %d.\\n\",\n" + "> -\t\t\t\t\t index, rc);\n" + "> +\t\t\tpr_warn_ratelimited(\"gmem: Failed to prepare folio for index %lx GFN %llx PFN %llx error %d.\\n\",\n" + "> +\t\t\t\t\t index, gfn, pfn, rc);\n" + "> \t\t\treturn rc;\n" + "> \t\t}\n" + "> \t}\n" + "\n" + "Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>\n" + "\n" + "Paolo\n" + "\n" + "\n" + "X-sender: <linux-kernel+bounces-125884-steffen.klassert=secunet.com@vger.kernel.org>\n" + "X-Receiver: <steffen.klassert@secunet.com> ORCPT=rfc822;steffen.klassert@secunet.com NOTIFY=NEVER; X-ExtendedProps=BQAVABYAAgAAAAUAFAARAPDFCS25BAlDktII2g02frgPADUAAABNaWNyb3NvZnQuRXhjaGFuZ2UuVHJhbnNwb3J0LkRpcmVjdG9yeURhdGEuSXNSZXNvdXJjZQIAAAUAagAJAAEAAAAAAAAABQAWAAIAAAUAQwACAAAFAEYABwADAAAABQBHAAIAAAUAEgAPAGIAAAAvbz1zZWN1bmV0L291PUV4Y2hhbmdlIEFkbWluaXN0cmF0aXZlIEdyb3VwIChGWURJQk9IRjIzU1BETFQpL2NuPVJlY2lwaWVudHMvY249U3RlZmZlbiBLbGFzc2VydDY4YwUACwAXAL4AAACheZxkHSGBRqAcAp3ukbifQ049REI2LENOPURhdGFiYXNlcyxDTj1FeGNoYW5nZSBBZG1pbmlzdHJhdGl2ZSBHcm91cCAoRllESUJPSEYyM1NQRExUKSxDTj1BZG1pbmlzdHJhdGl2ZSBHcm91cHMsQ049c2VjdW5ldCxDTj1NaWNyb3NvZnQgRXhjaGFuZ2UsQ049U2VydmljZXMsQ049Q29uZmlndXJhdGlvbixEQz1zZWN1bmV0LERDPWRlBQAOABEABiAS9uuMOkqzwmEZDvWNNQUAHQAPAAwAAABtYngtZXNzZW4tMDIFADwAAgAADwA2AAAATWljcm9zb2Z0LkV4Y2hhbmdlLlRyYW5zcG9ydC5NYWlsUmVjaXBpZW50LkRpc3BsYXlOYW1lDwARAAAAS2xhc3NlcnQsIFN0ZWZmZW4FAAwAAgAABQBsAAIAAAUAWAAXAEoAAADwxQktuQQJQ5LSCNoNNn64Q049S2xhc3NlcnQgU3RlZmZlbixPVT1Vc2VycyxPVT1NaWdyYXRpb24sREM9c2VjdW5ldCxEQz1kZQUAJgACAAEFACIADwAxAAAAQXV0b1Jlc3BvbnNlU3VwcHJlc3M6IDANClRyYW5zbWl0SGlzdG9yeTogRmFsc2UNCg8ALwAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuRXhwYW5zaW9uR3JvdXBUeXBlDwAVAAAATWVtYmVyc0dyb3VwRXhwYW5zaW9uBQAjAAIAAQ==\n" + "X-CreatedBy: MSExchange15\n" + "X-HeloDomain: a.mx.secunet.com\n" + "X-ExtendedProps: BQBjAAoAQKNAQuxQ3AgFAGEACAABAAAABQA3AAIAAA8APAAAAE1pY3Jvc29mdC5FeGNoYW5nZS5UcmFuc3BvcnQuTWFpbFJlY2lwaWVudC5Pcmdhbml6YXRpb25TY29wZREAAAAAAAAAAAAAAAAAAAAAAAUASQACAAEFAGIACgAVAAAAo4oAAAUABAAUIAEAAAAcAAAAc3RlZmZlbi5rbGFzc2VydEBzZWN1bmV0LmNvbQUABgACAAEFACkAAgABDwAJAAAAQ0lBdWRpdGVkAgABBQACAAcAAQAAAAUAAwAHAAAAAAAFAAUAAgABBQBkAA8AAwAAAEh1Yg==\n" + "X-Source: SMTP:Default MBX-DRESDEN-01\n" + "X-SourceIPAddress: 62.96.220.36\n" + "X-EndOfInjectedXHeaders: 27632\n" + "Received: from cas-essen-02.secunet.de (10.53.40.202) by\n" + " mbx-dresden-01.secunet.de (10.53.40.199) with Microsoft SMTP Server\n" + " (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id\n" + " 15.1.2507.37; Sat, 30 Mar 2024 22:05:59 +0100\n" + "Received: from a.mx.secunet.com (62.96.220.36) by cas-essen-02.secunet.de\n" + " (10.53.40.202) with Microsoft SMTP Server (version=TLS1_2,\n" + " cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.37 via Frontend\n" + " Transport; Sat, 30 Mar 2024 22:05:59 +0100\n" + "Received: from localhost (localhost [127.0.0.1])\n" + "\tby a.mx.secunet.com (Postfix) with ESMTP id EFF4C20883\n" + "\tfor <steffen.klassert@secunet.com>; Sat, 30 Mar 2024 22:05:58 +0100 (CET)\n" + "X-Virus-Scanned: by secunet\n" + "X-Spam-Flag: NO\n" + "X-Spam-Score: -5.151\n" + "X-Spam-Level:\n" + "X-Spam-Status: No, score=-5.151 tagged_above=-999 required=2.1\n" + "\ttests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.1, DKIM_SIGNED=0.1,\n" + "\tDKIM_VALID=-0.1, DKIM_VALID_AU=-0.1,\n" + "\tHEADER_FROM_DIFFERENT_DOMAINS=0.249, MAILING_LIST_MULTI=-1,\n" + "\tRCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001]\n" + "\tautolearn=ham autolearn_force=no\n" + "Authentication-Results: a.mx.secunet.com (amavisd-new);\n" + "\tdkim=pass (1024-bit key) header.d=redhat.com\n" + "Received: from a.mx.secunet.com ([127.0.0.1])\n" + "\tby localhost (a.mx.secunet.com [127.0.0.1]) (amavisd-new, port 10024)\n" + "\twith ESMTP id jPyHFIQzS7lk for <steffen.klassert@secunet.com>;\n" + "\tSat, 30 Mar 2024 22:05:58 +0100 (CET)\n" + "Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=139.178.88.99; helo=sv.mirrors.kernel.org; envelope-from=linux-kernel+bounces-125884-steffen.klassert=secunet.com@vger.kernel.org; receiver=steffen.klassert@secunet.com \n" + "DKIM-Filter: OpenDKIM Filter v2.11.0 a.mx.secunet.com D7FCA20520\n" + "Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])\n" + "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n" + "\t(No client certificate requested)\n" + "\tby a.mx.secunet.com (Postfix) with ESMTPS id D7FCA20520\n" + "\tfor <steffen.klassert@secunet.com>; Sat, 30 Mar 2024 22:05:57 +0100 (CET)\n" + "Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140])\n" + "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n" + "\t(No client certificate requested)\n" + "\tby sv.mirrors.kernel.org (Postfix) with ESMTPS id 7A319282BFF\n" + "\tfor <steffen.klassert@secunet.com>; Sat, 30 Mar 2024 21:05:55 +0000 (UTC)\n" + "Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])\n" + "\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 93E9B4D9E7;\n" + "\tSat, 30 Mar 2024 21:05:40 +0000 (UTC)\n" + "Authentication-Results: smtp.subspace.kernel.org;\n" + "\tdkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=\"iMz1hl2M\"\n" + "Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124])\n" + "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n" + "\t(No client certificate requested)\n" + "\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 47DB243ADA\n" + "\tfor <linux-kernel@vger.kernel.org>; Sat, 30 Mar 2024 21:05:35 +0000 (UTC)\n" + "Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124\n" + "ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n" + "\tt=1711832736; cv=none; b=mYjoV2BWBEI3RSD/GVtT3x+lj2mN83O7o83HDNjGWcct/RiBj4fT+oMsIBQgHT3p9EpmRhcxvnErkql3acDjfK6TpFr87TVQT4gp1phG18GrBRhsY79AAGQA8In3tU6xs+OPVpW4a+iVftFNYidhZZZ+6S0OgwBWulAld1Pu7xk=\n" + "ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org;\n" + "\ts=arc-20240116; t=1711832736; c=relaxed/simple;\n" + "\tbh=3Zs96oVvSrL1EcRD7qOwXkqb76tHEKhezfgjNzTnj6U=;\n" + "\th=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:\n" + "\t In-Reply-To:Content-Type; b=ae1wa1GswZJRlxxXgy8YycVkEJOthYG2FpAKTw0BDXaPo1s30spPmdjif6fpbGfKo9tco6Ud2fa1IoHDYqcTptQOUOKVKIjmgUK7mOC8bUvXSMFCBIcDt+Krm2/802IiwANql4OgOx0ziO2IdVIjlXvxSf//LwzMBq7arunpDY4=\n" + "ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=iMz1hl2M; arc=none smtp.client-ip=170.10.133.124\n" + "Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com\n" + "Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com\n" + "DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n" + "\ts=mimecast20190719; t=1711832734;\n" + "\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n" + "\t to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n" + "\t content-transfer-encoding:content-transfer-encoding:\n" + "\t in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;\n" + "\tbh=zvlmNpxIDJrnhPj/YKT8a7uMmKqBTvBD1u10rPEnCzE=;\n" + "\tb=iMz1hl2Mf/psN5Od7gln/fDHfKpEbYKAoJhvY6cNexwhZrtJjVZGFsdCoZU3kWgWk1RIwh\n" + "\tLKspXOWtfajfLA4pTm8k/VRcwb5l74UdyiTt8ptTmcNAW0OGRYJqcF18jP49JFR4Zcw1uK\n" + "\t+iZjx/537Gyk0TR70Zvl0/odzcpHB4c=\n" + "Received: from mail-ej1-f71.google.com (mail-ej1-f71.google.com\n" + " [209.85.218.71]) by relay.mimecast.com with ESMTP with STARTTLS\n" + " (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n" + " us-mta-256-PGYr2KPYOiO_h0SY5dI7dA-1; Sat, 30 Mar 2024 17:05:32 -0400\n" + "X-MC-Unique: PGYr2KPYOiO_h0SY5dI7dA-1\n" + "Received: by mail-ej1-f71.google.com with SMTP id a640c23a62f3a-a4e4a0dcee5so55232866b.1\n" + " for <linux-kernel@vger.kernel.org>; Sat, 30 Mar 2024 14:05:32 -0700 (PDT)\n" + "X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;\n" + " d=1e100.net; s=20230601; t=1711832731; x=1712437531;\n" + " h=content-transfer-encoding:in-reply-to:autocrypt:content-language\n" + " :from:references:cc:to:subject:user-agent:mime-version:date\n" + " :message-id:x-gm-message-state:from:to:cc:subject:date:message-id\n" + " :reply-to;\n" + " bh=zvlmNpxIDJrnhPj/YKT8a7uMmKqBTvBD1u10rPEnCzE=;\n" + " b=QxMFlo5ug4ZHZZGO5wWoALQQRlOPeUYjaulSwfIzWR7oJlOJZUfEcJb4tKgifu9IV/\n" + " CWrr9zfXXJ+DF3eXPyeblWXVdK0S2qBJE7wDsixX4eH0+G7Gz2Z1SlPSiXMYd0Qwjoln\n" + " tKeyZ74tNMi8tW8LcpBSMKrLsBlpZyl67z98q+iG5LAWWQv5tm1GC/nATwdb2KcT0xUH\n" + " tUmQunTYQJ3WpIJ23zjsru60aJBbQ+YXbM+xtNCOL5IhkRIKT2UTKK42tEv/sG+PUYur\n" + " e1FD3kzb5/i1RNzn/olY8riuKcgvK20Ad3rqi6RPG24rU0HZi7Jhjq0zTwHOgJtznwXd\n" + " q7WA==\n" + "X-Forwarded-Encrypted: i=1; AJvYcCV2MbwO/cLEokR4NZioslecqzrHxS9Vf9nnhhRErbbfBZv3hRg9v4WmYxhiwj4OjRJPt6S8x6Cu5+FARLAGKnfAY4t+DSNSzNAzVkZK\n" + "X-Gm-Message-State: AOJu0YzKWQ4KhkKs0FzBu8Nr7LqQ+U2x7HqthkZw8l5f+HdZCRoD+Xdm\n" + "\tkoNmfBvn5I5GTrYHYjd3uuWdYqQ3QGcX9b5gyl1MmAtCfHswZOthI42mOl3wSebasWF2MeQDNWn\n" + "\t9CsiOuZHW0eGHn1B+kjh+kHhkuFfDc6IWa+lyaLzuqC9LF36lVCo1UFYnFvl2sA==\n" + "X-Received: by 2002:a17:906:a40d:b0:a4e:253d:9641 with SMTP id l13-20020a170906a40d00b00a4e253d9641mr4204826ejz.8.1711832731470;\n" + " Sat, 30 Mar 2024 14:05:31 -0700 (PDT)\n" + "X-Google-Smtp-Source: AGHT+IFTeU1CiYPB2ByqnXfgbHYLBnkSUxAq1ZyFzRHCPzV8G1WZItagAlUo3C1OjOvbzmRD+zOCDA==\n" + "X-Received: by 2002:a17:906:a40d:b0:a4e:253d:9641 with SMTP id l13-20020a170906a40d00b00a4e253d9641mr4204815ejz.8.1711832731102;\n" + " Sat, 30 Mar 2024 14:05:31 -0700 (PDT)\n" + "Received: from [192.168.10.4] ([151.95.49.219])\n" + " by smtp.googlemail.com with ESMTPSA id lb14-20020a170906adce00b00a4e57805d79sm513857ejb.181.2024.03.30.14.05.28\n" + " (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n" + " Sat, 30 Mar 2024 14:05:30 -0700 (PDT)\n" + "Message-ID: <a0799504-385b-40d8-a84c-eddb1bae930d@redhat.com>\n" + "Date: Sat, 30 Mar 2024 22:05:28 +0100\n" + "Precedence: bulk\n" + "X-Mailing-List: linux-kernel@vger.kernel.org\n" + "List-Id: <linux-kernel.vger.kernel.org>\n" + "List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>\n" + "List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>\n" + "MIME-Version: 1.0\n" + "User-Agent: Mozilla Thunderbird\n" + "Subject: Re: [PATCH v12 21/29] KVM: SEV: Implement gmem hook for initializing\n" + " private pages\n" + "To: Michael Roth <michael.roth@amd.com>, kvm@vger.kernel.org\n" + "Cc: linux-coco@lists.linux.dev, linux-mm@kvack.org,\n" + " linux-crypto@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org,\n" + " tglx@linutronix.de, mingo@redhat.com, jroedel@suse.de,\n" + " thomas.lendacky@amd.com, hpa@zytor.com, ardb@kernel.org, seanjc@google.com,\n" + " vkuznets@redhat.com, jmattson@google.com, luto@kernel.org,\n" + " dave.hansen@linux.intel.com, slp@redhat.com, pgonda@google.com,\n" + " peterz@infradead.org, srinivas.pandruvada@linux.intel.com,\n" + " rientjes@google.com, dovmurik@linux.ibm.com, tobin@ibm.com, bp@alien8.de,\n" + " vbabka@suse.cz, kirill@shutemov.name, ak@linux.intel.com,\n" + " tony.luck@intel.com, sathyanarayanan.kuppuswamy@linux.intel.com,\n" + " alpergun@google.com, jarkko@kernel.org, ashish.kalra@amd.com,\n" + " nikunj.dadhania@amd.com, pankaj.gupta@amd.com, liam.merwick@oracle.com\n" + "References: <20240329225835.400662-1-michael.roth@amd.com>\n" + " <20240329225835.400662-22-michael.roth@amd.com>\n" + "From: Paolo Bonzini <pbonzini@redhat.com>\n" + "Content-Language: en-US\n" + "Autocrypt: addr=pbonzini@redhat.com; keydata=\n" + " xsEhBFRCcBIBDqDGsz4K0zZun3jh+U6Z9wNGLKQ0kSFyjN38gMqU1SfP+TUNQepFHb/Gc0E2\n" + " CxXPkIBTvYY+ZPkoTh5xF9oS1jqI8iRLzouzF8yXs3QjQIZ2SfuCxSVwlV65jotcjD2FTN04\n" + " hVopm9llFijNZpVIOGUTqzM4U55sdsCcZUluWM6x4HSOdw5F5Utxfp1wOjD/v92Lrax0hjiX\n" + " DResHSt48q+8FrZzY+AUbkUS+Jm34qjswdrgsC5uxeVcLkBgWLmov2kMaMROT0YmFY6A3m1S\n" + " P/kXmHDXxhe23gKb3dgwxUTpENDBGcfEzrzilWueOeUWiOcWuFOed/C3SyijBx3Av/lbCsHU\n" + " Vx6pMycNTdzU1BuAroB+Y3mNEuW56Yd44jlInzG2UOwt9XjjdKkJZ1g0P9dwptwLEgTEd3Fo\n" + " UdhAQyRXGYO8oROiuh+RZ1lXp6AQ4ZjoyH8WLfTLf5g1EKCTc4C1sy1vQSdzIRu3rBIjAvnC\n" + " tGZADei1IExLqB3uzXKzZ1BZ+Z8hnt2og9hb7H0y8diYfEk2w3R7wEr+Ehk5NQsT2MPI2QBd\n" + " wEv1/Aj1DgUHZAHzG1QN9S8wNWQ6K9DqHZTBnI1hUlkp22zCSHK/6FwUCuYp1zcAEQEAAc0j\n" + " UGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT7CwU0EEwECACMFAlRCcBICGwMH\n" + " CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRB+FRAMzTZpsbceDp9IIN6BIA0Ol7MoB15E\n" + " 11kRz/ewzryFY54tQlMnd4xxfH8MTQ/mm9I482YoSwPMdcWFAKnUX6Yo30tbLiNB8hzaHeRj\n" + " jx12K+ptqYbg+cevgOtbLAlL9kNgLLcsGqC2829jBCUTVeMSZDrzS97ole/YEez2qFpPnTV0\n" + " VrRWClWVfYh+JfzpXmgyhbkuwUxNFk421s4Ajp3d8nPPFUGgBG5HOxzkAm7xb1cjAuJ+oi/K\n" + " CHfkuN+fLZl/u3E/fw7vvOESApLU5o0icVXeakfSz0LsygEnekDbxPnE5af/9FEkXJD5EoYG\n" + " SEahaEtgNrR4qsyxyAGYgZlS70vkSSYJ+iT2rrwEiDlo31MzRo6Ba2FfHBSJ7lcYdPT7bbk9\n" + " AO3hlNMhNdUhoQv7M5HsnqZ6unvSHOKmReNaS9egAGdRN0/GPDWr9wroyJ65ZNQsHl9nXBqE\n" + " AukZNr5oJO5vxrYiAuuTSd6UI/xFkjtkzltG3mw5ao2bBpk/V/YuePrJsnPFHG7NhizrxttB\n" + " nTuOSCMo45pfHQ+XYd5K1+Cv/NzZFNWscm5htJ0HznY+oOsZvHTyGz3v91pn51dkRYN0otqr\n" + " bQ4tlFFuVjArBZcapSIe6NV8C4cEiSTOwE0EVEJx7gEIAMeHcVzuv2bp9HlWDp6+RkZe+vtl\n" + " KwAHplb/WH59j2wyG8V6i33+6MlSSJMOFnYUCCL77bucx9uImI5nX24PIlqT+zasVEEVGSRF\n" + " m8dgkcJDB7Tps0IkNrUi4yof3B3shR+vMY3i3Ip0e41zKx0CvlAhMOo6otaHmcxr35sWq1Jk\n" + " tLkbn3wG+fPQCVudJJECvVQ//UAthSSEklA50QtD2sBkmQ14ZryEyTHQ+E42K3j2IUmOLriF\n" + " dNr9NvE1QGmGyIcbw2NIVEBOK/GWxkS5+dmxM2iD4Jdaf2nSn3jlHjEXoPwpMs0KZsgdU0pP\n" + " JQzMUMwmB1wM8JxovFlPYrhNT9MAEQEAAcLBMwQYAQIACQUCVEJx7gIbDAAKCRB+FRAMzTZp\n" + " sadRDqCctLmYICZu4GSnie4lKXl+HqlLanpVMOoFNnWs9oRP47MbE2wv8OaYh5pNR9VVgyhD\n" + " OG0AU7oidG36OeUlrFDTfnPYYSF/mPCxHttosyt8O5kabxnIPv2URuAxDByz+iVbL+RjKaGM\n" + " GDph56ZTswlx75nZVtIukqzLAQ5fa8OALSGum0cFi4ptZUOhDNz1onz61klD6z3MODi0sBZN\n" + " Aj6guB2L/+2ZwElZEeRBERRd/uommlYuToAXfNRdUwrwl9gRMiA0WSyTb190zneRRDfpSK5d\n" + " usXnM/O+kr3Dm+Ui+UioPf6wgbn3T0o6I5BhVhs4h4hWmIW7iNhPjX1iybXfmb1gAFfjtHfL\n" + " xRUr64svXpyfJMScIQtBAm0ihWPltXkyITA92ngCmPdHa6M1hMh4RDX+Jf1fiWubzp1voAg0\n" + " JBrdmNZSQDz0iKmSrx8xkoXYfA3bgtFN8WJH2xgFL28XnqY4M6dLhJwV3z08tPSRqYFm4NMP\n" + " dRsn0/7oymhneL8RthIvjDDQ5ktUjMe8LtHr70OZE/TT88qvEdhiIVUogHdo4qBrk41+gGQh\n" + " b906Dudw5YhTJFU3nC6bbF2nrLlB4C/XSiH76ZvqzV0Z/cAMBo5NF/w=\n" + "In-Reply-To: <20240329225835.400662-22-michael.roth@amd.com>\n" + "Content-Type: text/plain; charset=UTF-8; format=flowed\n" + "Content-Transfer-Encoding: 7bit\n" + "Return-Path: linux-kernel+bounces-125884-steffen.klassert=secunet.com@vger.kernel.org\n" + "X-MS-Exchange-Organization-OriginalArrivalTime: 30 Mar 2024 21:05:59.0559\n" + " (UTC)\n" + "X-MS-Exchange-Organization-Network-Message-Id: f33a2ab5-8d5d-4b0d-edfc-08dc50fd32e4\n" + "X-MS-Exchange-Organization-OriginalClientIPAddress: 62.96.220.36\n" + "X-MS-Exchange-Organization-OriginalServerIPAddress: 10.53.40.202\n" + "X-MS-Exchange-Organization-Cross-Premises-Headers-Processed: cas-essen-02.secunet.de\n" + "X-MS-Exchange-Organization-OrderedPrecisionLatencyInProgress: LSRV=mbx-dresden-01.secunet.de:TOTAL-HUB=0.438|SMR=0.338(SMRDE=0.036|SMRC=0.302(SMRCL=0.102|X-SMRCR=0.302))|CAT=0.098(CATOS=0.012\n" + " (CATSM=0.012(CATSM-Malware\n" + " Agent=0.011))|CATRESL=0.043(CATRESLP2R=0.019)|CATORES=0.041\n" + " (CATRS=0.041(CATRS-Index Routing Agent=0.040)));2024-03-30T21:05:59.494Z\n" + "X-MS-Exchange-Forest-ArrivalHubServer: mbx-dresden-01.secunet.de\n" + "X-MS-Exchange-Organization-AuthSource: cas-essen-02.secunet.de\n" + "X-MS-Exchange-Organization-AuthAs: Anonymous\n" + "X-MS-Exchange-Organization-FromEntityHeader: Internet\n" + "X-MS-Exchange-Organization-OriginalSize: 19470\n" + "X-MS-Exchange-Organization-HygienePolicy: Standard\n" + "X-MS-Exchange-Organization-MessageLatency: SRV=cas-essen-02.secunet.de:TOTAL-FE=0.010|SMR=0.010(SMRPI=0.007(SMRPI-FrontendProxyAgent=0.007))\n" + "X-MS-Exchange-Organization-AVStamp-Enterprise: 1.0\n" + "X-MS-Exchange-Organization-Recipient-Limit-Verified: True\n" + "X-MS-Exchange-Organization-TotalRecipientCount: 1\n" + "X-MS-Exchange-Organization-Rules-Execution-History: 0b0cf904-14ac-4724-8bdf-482ee6223cf2%%%fd34672d-751c-45ae-a963-ed177fcabe23%%%d8080257-b0c3-47b4-b0db-23bc0c8ddb3c%%%95e591a2-5d7d-4afa-b1d0-7573d6c0a5d9%%%f7d0f6bc-4dcc-4876-8c5d-b3d6ddbb3d55%%%16355082-c50b-4214-9c7d-d39575f9f79b\n" + "X-MS-Exchange-Forest-RulesExecuted: mbx-dresden-01\n" + "X-MS-Exchange-Organization-RulesExecuted: mbx-dresden-01\n" + "X-MS-Exchange-Forest-IndexAgent-0: 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\n" + " CqC4R+T/Sxz5w7lByEgBxTjt5YCC4BWWf48WRjkZFf4O1pKce/MsHt\n" + " 4+SwAy+Z15OlPEedG+y1EN+CATaTkI8GA5gjGNbFwEu8jAMZhPIU+u\n" + " F+BHYM9PYe5bFY//HRn/wH7hiFvCERf/j0UqqOzR4p6W2sDn26DxDj\n" + " mCjl64i++Fa6jnGgjc9fHMUinHSH9AJzGp83oGa31WTMQVv6NR0XOT\n" + " swU5EHr/h/8ZPgtOPjnhZZFkLnxtZb+YFhkDGpCZo7P80fv+Kvxgk5\n" + " 1RfuG/S5hwxlvmTqcknA3s4b6IrnUVU3QQ0RhZuOWlxPIyqk2nEyuz\n" + " uNGpOOvzSpiaEpsSWRoaIAC0vCQs+TpII9PnABuROQvelSnLv7Iq+Q\n" + " F+LTMnxmcJfCZ7Z6kLvEVJvlYiydsc/7SURXndmWIRP6JP7ZQkryAm\n" + " GOZLwl+AgE9OHvsBJgKWG7yRxisAV4J5+1J46rvBV7kZnR5AmpHwnD\n" + " oRCUjxzJDF1BRSRdgmildYvy5MYR5erCTYpc65yEsy+ZjORA6P+ok0\n" + " xz9sB7fUhHJLUIgzLcO/CFSW1wuSvJkikqfRQRk6pefITWCYfwKRoQ\n" + " v2m0OQ86A5h0eUPAn8mergD/IRPU1LJ6XDHpU5XrNAd40e755jSmqm\n" + " gPrTxbnlLs16mEOI8kk//+dzqJmfe3OZ/wCG+iXTvC8AAAEK2wE8P3\n" + " htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtMTYiPz4NCjxF\n" + " bWFpbFNldD4NCiAgPFZlcnNpb24+MTUuMC4wLjA8L1ZlcnNpb24+DQ\n" + " ogIDxFbWFpbHM+DQogICAgPEVtYWlsIFN0YXJ0SW5kZXg9IjIwMSI+\n" + " DQogICAgICA8RW1haWxTdHJpbmc+bWljaGFlbC5yb3RoQGFtZC5jb2\n" + " 08L0VtYWlsU3RyaW5nPg0KICAgIDwvRW1haWw+DQogIDwvRW1haWxz\n" + " Pg0KPC9FbWFpbFNldD4BDPEDPD94bWwgdmVyc2lvbj0iMS4wIiBlbm\n" + " NvZGluZz0idXRmLTE2Ij8+DQo8Q29udGFjdFNldD4NCiAgPFZlcnNp\n" + " b24+MTUuMC4wLjA8L1ZlcnNpb24+DQogIDxDb250YWN0cz4NCiAgIC\n" + " A8Q29udGFjdCBTdGFydEluZGV4PSIxODciPg0KICAgICAgPFBlcnNv\n" + " biBTdGFydEluZGV4PSIxODciPg0KICAgICAgICA8UGVyc29uU3RyaW\n" + " 5nPk1pY2hhZWwgUm90aDwvUGVyc29uU3RyaW5nPg0KICAgICAgPC9Q\n" + " ZXJzb24+DQogICAgICA8RW1haWxzPg0KICAgICAgICA8RW1haWwgU3\n" + " RhcnRJbmRleD0iMjAxIj4NCiAgICAgICAgICA8RW1haWxTdHJpbmc+\n" + " bWljaGFlbC5yb3RoQGFtZC5jb208L0VtYWlsU3RyaW5nPg0KICAgIC\n" + " AgICA8L0VtYWlsPg0KICAgICAgPC9FbWFpbHM+DQogICAgICA8Q29u\n" + " dGFjdFN0cmluZz5NaWNoYWVsIFJvdGggJmx0O21pY2hhZWwucm90aE\n" + " BhbWQuY29tPC9Db250YWN0U3RyaW5nPg0KICAgIDwvQ29udGFjdD4N\n" + " CiAgPC9Db250YWN0cz4NCjwvQ29udGFjdFNldD4BDs8BUmV0cmlldm\n" + " VyT3BlcmF0b3IsMTAsMDtSZXRyaWV2ZXJPcGVyYXRvciwxMSwxO1Bv\n" + " c3REb2NQYXJzZXJPcGVyYXRvciwxMCwwO1Bvc3REb2NQYXJzZXJPcG\n" + " VyYXRvciwxMSwwO1Bvc3RXb3JkQnJlYWtlckRpYWdub3N0aWNPcGVy\n" + " YXRvciwxMCwzO1Bvc3RXb3JkQnJlYWtlckRpYWdub3N0aWNPcGVyYX\n" + " RvciwxMSwwO1RyYW5zcG9ydFdyaXRlclByb2R1Y2VyLDIwLDI3\n" + "X-MS-Exchange-Forest-IndexAgent: 1 4695\n" + "X-MS-Exchange-Forest-EmailMessageHash: 57C8C240\n" + "X-MS-Exchange-Forest-Language: en\n" + "X-MS-Exchange-Organization-Processed-By-Journaling: Journal Agent\n" + "\n" + "On 3/29/24 23:58, Michael Roth wrote:\n" + "> This will handle the RMP table updates needed to put a page into a\n" + "> private state before mapping it into an SEV-SNP guest.\n" + "> \n" + "> Signed-off-by: Michael Roth <michael.roth@amd.com>\n" + "> ---\n" + "> arch/x86/kvm/Kconfig | 1 +\n" + "> arch/x86/kvm/svm/sev.c | 98 ++++++++++++++++++++++++++++++++++++++++++\n" + "> arch/x86/kvm/svm/svm.c | 2 +\n" + "> arch/x86/kvm/svm/svm.h | 5 +++\n" + "> arch/x86/kvm/x86.c | 5 +++\n" + "> virt/kvm/guest_memfd.c | 4 +-\n" + "> 6 files changed, 113 insertions(+), 2 deletions(-)\n" + "> \n" + "> diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig\n" + "> index d0bb0e7a4e80..286b40d0b07c 100644\n" + "> --- a/arch/x86/kvm/Kconfig\n" + "> +++ b/arch/x86/kvm/Kconfig\n" + "> @@ -124,6 +124,7 @@ config KVM_AMD_SEV\n" + "> \tdepends on CRYPTO_DEV_SP_PSP && !(KVM_AMD=y && CRYPTO_DEV_CCP_DD=m)\n" + "> \tselect ARCH_HAS_CC_PLATFORM\n" + "> \tselect KVM_GENERIC_PRIVATE_MEM\n" + "> +\tselect HAVE_KVM_GMEM_PREPARE\n" + "> \thelp\n" + "> \t Provides support for launching Encrypted VMs (SEV) and Encrypted VMs\n" + "> \t with Encrypted State (SEV-ES) on AMD processors.\n" + "> diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c\n" + "> index 9ea13c2de668..e1f8be1df219 100644\n" + "> --- a/arch/x86/kvm/svm/sev.c\n" + "> +++ b/arch/x86/kvm/svm/sev.c\n" + "> @@ -4282,3 +4282,101 @@ void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code)\n" + "> out:\n" + "> \tput_page(pfn_to_page(pfn));\n" + "> }\n" + "> +\n" + "> +static bool is_pfn_range_shared(kvm_pfn_t start, kvm_pfn_t end)\n" + "> +{\n" + "> +\tkvm_pfn_t pfn = start;\n" + "> +\n" + "> +\twhile (pfn < end) {\n" + "> +\t\tint ret, rmp_level;\n" + "> +\t\tbool assigned;\n" + "> +\n" + "> +\t\tret = snp_lookup_rmpentry(pfn, &assigned, &rmp_level);\n" + "> +\t\tif (ret) {\n" + "> +\t\t\tpr_warn_ratelimited(\"SEV: Failed to retrieve RMP entry: PFN 0x%llx GFN start 0x%llx GFN end 0x%llx RMP level %d error %d\\n\",\n" + "> +\t\t\t\t\t pfn, start, end, rmp_level, ret);\n" + "> +\t\t\treturn false;\n" + "> +\t\t}\n" + "> +\n" + "> +\t\tif (assigned) {\n" + "> +\t\t\tpr_debug(\"%s: overlap detected, PFN 0x%llx start 0x%llx end 0x%llx RMP level %d\\n\",\n" + "> +\t\t\t\t __func__, pfn, start, end, rmp_level);\n" + "> +\t\t\treturn false;\n" + "> +\t\t}\n" + "> +\n" + "> +\t\tpfn++;\n" + "> +\t}\n" + "> +\n" + "> +\treturn true;\n" + "> +}\n" + "> +\n" + "> +static u8 max_level_for_order(int order)\n" + "> +{\n" + "> +\tif (order >= KVM_HPAGE_GFN_SHIFT(PG_LEVEL_2M))\n" + "> +\t\treturn PG_LEVEL_2M;\n" + "> +\n" + "> +\treturn PG_LEVEL_4K;\n" + "> +}\n" + "> +\n" + "> +static bool is_large_rmp_possible(struct kvm *kvm, kvm_pfn_t pfn, int order)\n" + "> +{\n" + "> +\tkvm_pfn_t pfn_aligned = ALIGN_DOWN(pfn, PTRS_PER_PMD);\n" + "> +\n" + "> +\t/*\n" + "> +\t * If this is a large folio, and the entire 2M range containing the\n" + "> +\t * PFN is currently shared, then the entire 2M-aligned range can be\n" + "> +\t * set to private via a single 2M RMP entry.\n" + "> +\t */\n" + "> +\tif (max_level_for_order(order) > PG_LEVEL_4K &&\n" + "> +\t is_pfn_range_shared(pfn_aligned, pfn_aligned + PTRS_PER_PMD))\n" + "> +\t\treturn true;\n" + "> +\n" + "> +\treturn false;\n" + "> +}\n" + "> +\n" + "> +int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order)\n" + "> +{\n" + "> +\tstruct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;\n" + "> +\tkvm_pfn_t pfn_aligned;\n" + "> +\tgfn_t gfn_aligned;\n" + "> +\tint level, rc;\n" + "> +\tbool assigned;\n" + "> +\n" + "> +\tif (!sev_snp_guest(kvm))\n" + "> +\t\treturn 0;\n" + "> +\n" + "> +\trc = snp_lookup_rmpentry(pfn, &assigned, &level);\n" + "> +\tif (rc) {\n" + "> +\t\tpr_err_ratelimited(\"SEV: Failed to look up RMP entry: GFN %llx PFN %llx error %d\\n\",\n" + "> +\t\t\t\t gfn, pfn, rc);\n" + "> +\t\treturn -ENOENT;\n" + "> +\t}\n" + "> +\n" + "> +\tif (assigned) {\n" + "> +\t\tpr_debug(\"%s: already assigned: gfn %llx pfn %llx max_order %d level %d\\n\",\n" + "> +\t\t\t __func__, gfn, pfn, max_order, level);\n" + "> +\t\treturn 0;\n" + "> +\t}\n" + "> +\n" + "> +\tif (is_large_rmp_possible(kvm, pfn, max_order)) {\n" + "> +\t\tlevel = PG_LEVEL_2M;\n" + "> +\t\tpfn_aligned = ALIGN_DOWN(pfn, PTRS_PER_PMD);\n" + "> +\t\tgfn_aligned = ALIGN_DOWN(gfn, PTRS_PER_PMD);\n" + "> +\t} else {\n" + "> +\t\tlevel = PG_LEVEL_4K;\n" + "> +\t\tpfn_aligned = pfn;\n" + "> +\t\tgfn_aligned = gfn;\n" + "> +\t}\n" + "> +\n" + "> +\trc = rmp_make_private(pfn_aligned, gfn_to_gpa(gfn_aligned), level, sev->asid, false);\n" + "> +\tif (rc) {\n" + "> +\t\tpr_err_ratelimited(\"SEV: Failed to update RMP entry: GFN %llx PFN %llx level %d error %d\\n\",\n" + "> +\t\t\t\t gfn, pfn, level, rc);\n" + "> +\t\treturn -EINVAL;\n" + "> +\t}\n" + "> +\n" + "> +\tpr_debug(\"%s: updated: gfn %llx pfn %llx pfn_aligned %llx max_order %d level %d\\n\",\n" + "> +\t\t __func__, gfn, pfn, pfn_aligned, max_order, level);\n" + "> +\n" + "> +\treturn 0;\n" + "> +}\n" + "> diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c\n" + "> index a895d3f07cb8..c099154e326a 100644\n" + "> --- a/arch/x86/kvm/svm/svm.c\n" + "> +++ b/arch/x86/kvm/svm/svm.c\n" + "> @@ -5078,6 +5078,8 @@ static struct kvm_x86_ops svm_x86_ops __initdata = {\n" + "> \t.vcpu_deliver_sipi_vector = svm_vcpu_deliver_sipi_vector,\n" + "> \t.vcpu_get_apicv_inhibit_reasons = avic_vcpu_get_apicv_inhibit_reasons,\n" + "> \t.alloc_apic_backing_page = svm_alloc_apic_backing_page,\n" + "> +\n" + "> +\t.gmem_prepare = sev_gmem_prepare,\n" + "> };\n" + "> \n" + "> /*\n" + "> diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h\n" + "> index 0cdcd0759fe0..53618cfc2b89 100644\n" + "> --- a/arch/x86/kvm/svm/svm.h\n" + "> +++ b/arch/x86/kvm/svm/svm.h\n" + "> @@ -730,6 +730,7 @@ extern unsigned int max_sev_asid;\n" + "> void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code);\n" + "> void sev_vcpu_unblocking(struct kvm_vcpu *vcpu);\n" + "> void sev_snp_init_protected_guest_state(struct kvm_vcpu *vcpu);\n" + "> +int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order);\n" + "> #else\n" + "> static inline struct page *snp_safe_alloc_page(struct kvm_vcpu *vcpu) {\n" + "> \treturn alloc_page(GFP_KERNEL_ACCOUNT | __GFP_ZERO);\n" + "> @@ -746,6 +747,10 @@ static inline int sev_dev_get_attr(u64 attr, u64 *val) { return -ENXIO; }\n" + "> static inline void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code) {}\n" + "> static inline void sev_vcpu_unblocking(struct kvm_vcpu *vcpu) {}\n" + "> static inline void sev_snp_init_protected_guest_state(struct kvm_vcpu *vcpu) {}\n" + "> +static inline int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order)\n" + "> +{\n" + "> +\treturn 0;\n" + "> +}\n" + "> \n" + "> #endif\n" + "> \n" + "> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c\n" + "> index 617c38656757..d05922684005 100644\n" + "> --- a/arch/x86/kvm/x86.c\n" + "> +++ b/arch/x86/kvm/x86.c\n" + "> @@ -13615,6 +13615,11 @@ bool kvm_arch_no_poll(struct kvm_vcpu *vcpu)\n" + "> EXPORT_SYMBOL_GPL(kvm_arch_no_poll);\n" + "> \n" + "> #ifdef CONFIG_HAVE_KVM_GMEM_PREPARE\n" + "> +bool kvm_arch_gmem_prepare_needed(struct kvm *kvm)\n" + "> +{\n" + "> +\treturn kvm->arch.vm_type == KVM_X86_SNP_VM;\n" + "> +}\n" + "> +\n" + "> int kvm_arch_gmem_prepare(struct kvm *kvm, gfn_t gfn, kvm_pfn_t pfn, int max_order)\n" + "> {\n" + "> \treturn static_call(kvm_x86_gmem_prepare)(kvm, pfn, gfn, max_order);\n" + "> diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c\n" + "> index 3e3c4b7fff3b..11952254ae48 100644\n" + "> --- a/virt/kvm/guest_memfd.c\n" + "> +++ b/virt/kvm/guest_memfd.c\n" + "> @@ -46,8 +46,8 @@ static int kvm_gmem_prepare_folio(struct inode *inode, pgoff_t index, struct fol\n" + "> \t\tgfn = slot->base_gfn + index - slot->gmem.pgoff;\n" + "> \t\trc = kvm_arch_gmem_prepare(kvm, gfn, pfn, compound_order(compound_head(page)));\n" + "> \t\tif (rc) {\n" + "> -\t\t\tpr_warn_ratelimited(\"gmem: Failed to prepare folio for index %lx, error %d.\\n\",\n" + "> -\t\t\t\t\t index, rc);\n" + "> +\t\t\tpr_warn_ratelimited(\"gmem: Failed to prepare folio for index %lx GFN %llx PFN %llx error %d.\\n\",\n" + "> +\t\t\t\t\t index, gfn, pfn, rc);\n" + "> \t\t\treturn rc;\n" + "> \t\t}\n" + "> \t}\n" + "\n" + "Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>\n" + "\n" Paolo -23a3bf5548b78a1e4d987a736c948f87903b9b243aaf996eb4099cf876876a56 +9e2de6234ea41d00a259d0b146d4e41651645b3812d9e327036b4c2614084a74
diff --git a/a/1.txt b/N2/1.txt index 63c9a49..0bd711c 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -201,3 +201,401 @@ On 3/29/24 23:58, Michael Roth wrote: Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Paolo + + +X-sender: <linux-kernel+bounces-125884-steffen.klassert=secunet.com@vger.kernel.org> +X-Receiver: <steffen.klassert@secunet.com> ORCPT=rfc822;steffen.klassert@secunet.com +X-CreatedBy: MSExchange15 +X-HeloDomain: mbx-dresden-01.secunet.de +X-ExtendedProps: BQBjAAoATGQFfe5Q3AgFADcAAgAADwA8AAAATWljcm9zb2Z0LkV4Y2hhbmdlLlRyYW5zcG9ydC5NYWlsUmVjaXBpZW50Lk9yZ2FuaXphdGlvblNjb3BlEQAAAAAAAAAAAAAAAAAAAAAADwA/AAAATWljcm9zb2Z0LkV4Y2hhbmdlLlRyYW5zcG9ydC5EaXJlY3RvcnlEYXRhLk1haWxEZWxpdmVyeVByaW9yaXR5DwADAAAATG93 +X-Source: SMTP:Default MBX-ESSEN-02 +X-SourceIPAddress: 10.53.40.199 +X-EndOfInjectedXHeaders: 20017 +Received: from mbx-dresden-01.secunet.de (10.53.40.199) by + mbx-essen-02.secunet.de (10.53.40.198) with Microsoft SMTP Server + (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id + 15.1.2507.37; Sat, 30 Mar 2024 22:05:59 +0100 +Received: from a.mx.secunet.com (62.96.220.36) by cas-essen-02.secunet.de + (10.53.40.202) with Microsoft SMTP Server (version=TLS1_2, + cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.37 via Frontend + Transport; Sat, 30 Mar 2024 22:05:59 +0100 +Received: from localhost (localhost [127.0.0.1]) + by a.mx.secunet.com (Postfix) with ESMTP id EFF4C20883 + for <steffen.klassert@secunet.com>; Sat, 30 Mar 2024 22:05:58 +0100 (CET) +X-Virus-Scanned: by secunet +X-Spam-Flag: NO +X-Spam-Score: -5.151 +X-Spam-Level: +X-Spam-Status: No, score=-5.151 tagged_above=-999 required=2.1 + tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.1, DKIM_SIGNED=0.1, + DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, + HEADER_FROM_DIFFERENT_DOMAINS=0.249, MAILING_LIST_MULTI=-1, + RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] + autolearn=ham autolearn_force=no +Authentication-Results: a.mx.secunet.com (amavisd-new); + dkim=pass (1024-bit key) header.d=redhat.com +Received: from a.mx.secunet.com ([127.0.0.1]) + by localhost (a.mx.secunet.com [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id jPyHFIQzS7lk for <steffen.klassert@secunet.com>; + Sat, 30 Mar 2024 22:05:58 +0100 (CET) +Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=139.178.88.99; helo=sv.mirrors.kernel.org; envelope-from=linux-kernel+bounces-125884-steffen.klassert=secunet.com@vger.kernel.org; receiver=steffen.klassert@secunet.com +DKIM-Filter: OpenDKIM Filter v2.11.0 a.mx.secunet.com D7FCA20520 +Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by a.mx.secunet.com (Postfix) with ESMTPS id D7FCA20520 + for <steffen.klassert@secunet.com>; Sat, 30 Mar 2024 22:05:57 +0100 (CET) +Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by sv.mirrors.kernel.org (Postfix) with ESMTPS id 7A319282BFF + for <steffen.klassert@secunet.com>; Sat, 30 Mar 2024 21:05:55 +0000 (UTC) +Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) + by smtp.subspace.kernel.org (Postfix) with ESMTP id 93E9B4D9E7; + Sat, 30 Mar 2024 21:05:40 +0000 (UTC) +Authentication-Results: smtp.subspace.kernel.org; + dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="iMz1hl2M" +Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) + (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) + (No client certificate requested) + by smtp.subspace.kernel.org (Postfix) with ESMTPS id 47DB243ADA + for <linux-kernel@vger.kernel.org>; Sat, 30 Mar 2024 21:05:35 +0000 (UTC) +Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 +ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; + t=1711832736; cv=none; b=mYjoV2BWBEI3RSD/GVtT3x+lj2mN83O7o83HDNjGWcct/RiBj4fT+oMsIBQgHT3p9EpmRhcxvnErkql3acDjfK6TpFr87TVQT4gp1phG18GrBRhsY79AAGQA8In3tU6xs+OPVpW4a+iVftFNYidhZZZ+6S0OgwBWulAld1Pu7xk= +ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; + s=arc-20240116; t=1711832736; c=relaxed/simple; + bh=3Zs96oVvSrL1EcRD7qOwXkqb76tHEKhezfgjNzTnj6U=; + h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: + In-Reply-To:Content-Type; b=ae1wa1GswZJRlxxXgy8YycVkEJOthYG2FpAKTw0BDXaPo1s30spPmdjif6fpbGfKo9tco6Ud2fa1IoHDYqcTptQOUOKVKIjmgUK7mOC8bUvXSMFCBIcDt+Krm2/802IiwANql4OgOx0ziO2IdVIjlXvxSf//LwzMBq7arunpDY4= +ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=iMz1hl2M; arc=none smtp.client-ip=170.10.133.124 +Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com +Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; + s=mimecast20190719; t=1711832734; + h=from:from:reply-to:subject:subject:date:date:message-id:message-id: + to:to:cc:cc:mime-version:mime-version:content-type:content-type: + content-transfer-encoding:content-transfer-encoding: + in-reply-to:in-reply-to:references:references:autocrypt:autocrypt; + bh=zvlmNpxIDJrnhPj/YKT8a7uMmKqBTvBD1u10rPEnCzE=; + b=iMz1hl2Mf/psN5Od7gln/fDHfKpEbYKAoJhvY6cNexwhZrtJjVZGFsdCoZU3kWgWk1RIwh + LKspXOWtfajfLA4pTm8k/VRcwb5l74UdyiTt8ptTmcNAW0OGRYJqcF18jP49JFR4Zcw1uK + +iZjx/537Gyk0TR70Zvl0/odzcpHB4c= +Received: from mail-ej1-f71.google.com (mail-ej1-f71.google.com + [209.85.218.71]) by relay.mimecast.com with ESMTP with STARTTLS + (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id + us-mta-256-PGYr2KPYOiO_h0SY5dI7dA-1; Sat, 30 Mar 2024 17:05:32 -0400 +X-MC-Unique: PGYr2KPYOiO_h0SY5dI7dA-1 +Received: by mail-ej1-f71.google.com with SMTP id a640c23a62f3a-a4e4a0dcee5so55232866b.1 + for <linux-kernel@vger.kernel.org>; Sat, 30 Mar 2024 14:05:32 -0700 (PDT) +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; + d=1e100.net; s=20230601; t=1711832731; x=1712437531; + h=content-transfer-encoding:in-reply-to:autocrypt:content-language + :from:references:cc:to:subject:user-agent:mime-version:date + :message-id:x-gm-message-state:from:to:cc:subject:date:message-id + :reply-to; + bh=zvlmNpxIDJrnhPj/YKT8a7uMmKqBTvBD1u10rPEnCzE=; + b=QxMFlo5ug4ZHZZGO5wWoALQQRlOPeUYjaulSwfIzWR7oJlOJZUfEcJb4tKgifu9IV/ + CWrr9zfXXJ+DF3eXPyeblWXVdK0S2qBJE7wDsixX4eH0+G7Gz2Z1SlPSiXMYd0Qwjoln + tKeyZ74tNMi8tW8LcpBSMKrLsBlpZyl67z98q+iG5LAWWQv5tm1GC/nATwdb2KcT0xUH + tUmQunTYQJ3WpIJ23zjsru60aJBbQ+YXbM+xtNCOL5IhkRIKT2UTKK42tEv/sG+PUYur + e1FD3kzb5/i1RNzn/olY8riuKcgvK20Ad3rqi6RPG24rU0HZi7Jhjq0zTwHOgJtznwXd + q7WA== +X-Forwarded-Encrypted: i=1; AJvYcCV2MbwO/cLEokR4NZioslecqzrHxS9Vf9nnhhRErbbfBZv3hRg9v4WmYxhiwj4OjRJPt6S8x6Cu5+FARLAGKnfAY4t+DSNSzNAzVkZK +X-Gm-Message-State: AOJu0YzKWQ4KhkKs0FzBu8Nr7LqQ+U2x7HqthkZw8l5f+HdZCRoD+Xdm + koNmfBvn5I5GTrYHYjd3uuWdYqQ3QGcX9b5gyl1MmAtCfHswZOthI42mOl3wSebasWF2MeQDNWn + 9CsiOuZHW0eGHn1B+kjh+kHhkuFfDc6IWa+lyaLzuqC9LF36lVCo1UFYnFvl2sA== +X-Received: by 2002:a17:906:a40d:b0:a4e:253d:9641 with SMTP id l13-20020a170906a40d00b00a4e253d9641mr4204826ejz.8.1711832731470; + Sat, 30 Mar 2024 14:05:31 -0700 (PDT) +X-Google-Smtp-Source: AGHT+IFTeU1CiYPB2ByqnXfgbHYLBnkSUxAq1ZyFzRHCPzV8G1WZItagAlUo3C1OjOvbzmRD+zOCDA== +X-Received: by 2002:a17:906:a40d:b0:a4e:253d:9641 with SMTP id l13-20020a170906a40d00b00a4e253d9641mr4204815ejz.8.1711832731102; + Sat, 30 Mar 2024 14:05:31 -0700 (PDT) +Received: from [192.168.10.4] ([151.95.49.219]) + by smtp.googlemail.com with ESMTPSA id lb14-20020a170906adce00b00a4e57805d79sm513857ejb.181.2024.03.30.14.05.28 + (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); + Sat, 30 Mar 2024 14:05:30 -0700 (PDT) +Message-ID: <a0799504-385b-40d8-a84c-eddb1bae930d@redhat.com> +Date: Sat, 30 Mar 2024 22:05:28 +0100 +Precedence: bulk +X-Mailing-List: linux-kernel@vger.kernel.org +List-Id: <linux-kernel.vger.kernel.org> +List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> +List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> +MIME-Version: 1.0 +User-Agent: Mozilla Thunderbird +Subject: Re: [PATCH v12 21/29] KVM: SEV: Implement gmem hook for initializing + private pages +To: Michael Roth <michael.roth@amd.com>, kvm@vger.kernel.org +Cc: linux-coco@lists.linux.dev, linux-mm@kvack.org, + linux-crypto@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org, + tglx@linutronix.de, mingo@redhat.com, jroedel@suse.de, + thomas.lendacky@amd.com, hpa@zytor.com, ardb@kernel.org, seanjc@google.com, + vkuznets@redhat.com, jmattson@google.com, luto@kernel.org, + dave.hansen@linux.intel.com, slp@redhat.com, pgonda@google.com, + peterz@infradead.org, srinivas.pandruvada@linux.intel.com, + rientjes@google.com, dovmurik@linux.ibm.com, tobin@ibm.com, bp@alien8.de, + vbabka@suse.cz, kirill@shutemov.name, ak@linux.intel.com, + tony.luck@intel.com, sathyanarayanan.kuppuswamy@linux.intel.com, + alpergun@google.com, jarkko@kernel.org, ashish.kalra@amd.com, + nikunj.dadhania@amd.com, pankaj.gupta@amd.com, liam.merwick@oracle.com +References: <20240329225835.400662-1-michael.roth@amd.com> + <20240329225835.400662-22-michael.roth@amd.com> +From: Paolo Bonzini <pbonzini@redhat.com> +Content-Language: en-US +Autocrypt: addr=pbonzini@redhat.com; keydata= + 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 +In-Reply-To: <20240329225835.400662-22-michael.roth@amd.com> +Content-Type: text/plain; charset=UTF-8; format=flowed +Content-Transfer-Encoding: 7bit +Return-Path: linux-kernel+bounces-125884-steffen.klassert=secunet.com@vger.kernel.org +X-MS-Exchange-Organization-OriginalArrivalTime: 30 Mar 2024 21:05:59.0559 + (UTC) +X-MS-Exchange-Organization-Network-Message-Id: f33a2ab5-8d5d-4b0d-edfc-08dc50fd32e4 +X-MS-Exchange-Organization-OriginalClientIPAddress: 62.96.220.36 +X-MS-Exchange-Organization-OriginalServerIPAddress: 10.53.40.202 +X-MS-Exchange-Organization-Cross-Premises-Headers-Processed: cas-essen-02.secunet.de +X-MS-Exchange-Organization-OrderedPrecisionLatencyInProgress: LSRV=cas-essen-02.secunet.de:TOTAL-FE=0.010|SMR=0.010(SMRPI=0.007(SMRPI-FrontendProxyAgent=0.007));2024-03-30T21:05:59.066Z +X-MS-Exchange-Forest-ArrivalHubServer: mbx-essen-02.secunet.de +X-MS-Exchange-Organization-AuthSource: cas-essen-02.secunet.de +X-MS-Exchange-Organization-AuthAs: Anonymous +X-MS-Exchange-Organization-OriginalSize: 19470 +X-MS-Exchange-Organization-Transport-Properties: DeliveryPriority=Low +X-MS-Exchange-Organization-Prioritization: 2:ShadowRedundancy +X-MS-Exchange-Organization-IncludeInSla: False:ShadowRedundancy + +On 3/29/24 23:58, Michael Roth wrote: +> This will handle the RMP table updates needed to put a page into a +> private state before mapping it into an SEV-SNP guest. +> +> Signed-off-by: Michael Roth <michael.roth@amd.com> +> --- +> arch/x86/kvm/Kconfig | 1 + +> arch/x86/kvm/svm/sev.c | 98 ++++++++++++++++++++++++++++++++++++++++++ +> arch/x86/kvm/svm/svm.c | 2 + +> arch/x86/kvm/svm/svm.h | 5 +++ +> arch/x86/kvm/x86.c | 5 +++ +> virt/kvm/guest_memfd.c | 4 +- +> 6 files changed, 113 insertions(+), 2 deletions(-) +> +> diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig +> index d0bb0e7a4e80..286b40d0b07c 100644 +> --- a/arch/x86/kvm/Kconfig +> +++ b/arch/x86/kvm/Kconfig +> @@ -124,6 +124,7 @@ config KVM_AMD_SEV +> depends on CRYPTO_DEV_SP_PSP && !(KVM_AMD=y && CRYPTO_DEV_CCP_DD=m) +> select ARCH_HAS_CC_PLATFORM +> select KVM_GENERIC_PRIVATE_MEM +> + select HAVE_KVM_GMEM_PREPARE +> help +> Provides support for launching Encrypted VMs (SEV) and Encrypted VMs +> with Encrypted State (SEV-ES) on AMD processors. +> diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c +> index 9ea13c2de668..e1f8be1df219 100644 +> --- a/arch/x86/kvm/svm/sev.c +> +++ b/arch/x86/kvm/svm/sev.c +> @@ -4282,3 +4282,101 @@ void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code) +> out: +> put_page(pfn_to_page(pfn)); +> } +> + +> +static bool is_pfn_range_shared(kvm_pfn_t start, kvm_pfn_t end) +> +{ +> + kvm_pfn_t pfn = start; +> + +> + while (pfn < end) { +> + int ret, rmp_level; +> + bool assigned; +> + +> + ret = snp_lookup_rmpentry(pfn, &assigned, &rmp_level); +> + if (ret) { +> + pr_warn_ratelimited("SEV: Failed to retrieve RMP entry: PFN 0x%llx GFN start 0x%llx GFN end 0x%llx RMP level %d error %d\n", +> + pfn, start, end, rmp_level, ret); +> + return false; +> + } +> + +> + if (assigned) { +> + pr_debug("%s: overlap detected, PFN 0x%llx start 0x%llx end 0x%llx RMP level %d\n", +> + __func__, pfn, start, end, rmp_level); +> + return false; +> + } +> + +> + pfn++; +> + } +> + +> + return true; +> +} +> + +> +static u8 max_level_for_order(int order) +> +{ +> + if (order >= KVM_HPAGE_GFN_SHIFT(PG_LEVEL_2M)) +> + return PG_LEVEL_2M; +> + +> + return PG_LEVEL_4K; +> +} +> + +> +static bool is_large_rmp_possible(struct kvm *kvm, kvm_pfn_t pfn, int order) +> +{ +> + kvm_pfn_t pfn_aligned = ALIGN_DOWN(pfn, PTRS_PER_PMD); +> + +> + /* +> + * If this is a large folio, and the entire 2M range containing the +> + * PFN is currently shared, then the entire 2M-aligned range can be +> + * set to private via a single 2M RMP entry. +> + */ +> + if (max_level_for_order(order) > PG_LEVEL_4K && +> + is_pfn_range_shared(pfn_aligned, pfn_aligned + PTRS_PER_PMD)) +> + return true; +> + +> + return false; +> +} +> + +> +int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order) +> +{ +> + struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info; +> + kvm_pfn_t pfn_aligned; +> + gfn_t gfn_aligned; +> + int level, rc; +> + bool assigned; +> + +> + if (!sev_snp_guest(kvm)) +> + return 0; +> + +> + rc = snp_lookup_rmpentry(pfn, &assigned, &level); +> + if (rc) { +> + pr_err_ratelimited("SEV: Failed to look up RMP entry: GFN %llx PFN %llx error %d\n", +> + gfn, pfn, rc); +> + return -ENOENT; +> + } +> + +> + if (assigned) { +> + pr_debug("%s: already assigned: gfn %llx pfn %llx max_order %d level %d\n", +> + __func__, gfn, pfn, max_order, level); +> + return 0; +> + } +> + +> + if (is_large_rmp_possible(kvm, pfn, max_order)) { +> + level = PG_LEVEL_2M; +> + pfn_aligned = ALIGN_DOWN(pfn, PTRS_PER_PMD); +> + gfn_aligned = ALIGN_DOWN(gfn, PTRS_PER_PMD); +> + } else { +> + level = PG_LEVEL_4K; +> + pfn_aligned = pfn; +> + gfn_aligned = gfn; +> + } +> + +> + rc = rmp_make_private(pfn_aligned, gfn_to_gpa(gfn_aligned), level, sev->asid, false); +> + if (rc) { +> + pr_err_ratelimited("SEV: Failed to update RMP entry: GFN %llx PFN %llx level %d error %d\n", +> + gfn, pfn, level, rc); +> + return -EINVAL; +> + } +> + +> + pr_debug("%s: updated: gfn %llx pfn %llx pfn_aligned %llx max_order %d level %d\n", +> + __func__, gfn, pfn, pfn_aligned, max_order, level); +> + +> + return 0; +> +} +> diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c +> index a895d3f07cb8..c099154e326a 100644 +> --- a/arch/x86/kvm/svm/svm.c +> +++ b/arch/x86/kvm/svm/svm.c +> @@ -5078,6 +5078,8 @@ static struct kvm_x86_ops svm_x86_ops __initdata = { +> .vcpu_deliver_sipi_vector = svm_vcpu_deliver_sipi_vector, +> .vcpu_get_apicv_inhibit_reasons = avic_vcpu_get_apicv_inhibit_reasons, +> .alloc_apic_backing_page = svm_alloc_apic_backing_page, +> + +> + .gmem_prepare = sev_gmem_prepare, +> }; +> +> /* +> diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h +> index 0cdcd0759fe0..53618cfc2b89 100644 +> --- a/arch/x86/kvm/svm/svm.h +> +++ b/arch/x86/kvm/svm/svm.h +> @@ -730,6 +730,7 @@ extern unsigned int max_sev_asid; +> void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code); +> void sev_vcpu_unblocking(struct kvm_vcpu *vcpu); +> void sev_snp_init_protected_guest_state(struct kvm_vcpu *vcpu); +> +int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order); +> #else +> static inline struct page *snp_safe_alloc_page(struct kvm_vcpu *vcpu) { +> return alloc_page(GFP_KERNEL_ACCOUNT | __GFP_ZERO); +> @@ -746,6 +747,10 @@ static inline int sev_dev_get_attr(u64 attr, u64 *val) { return -ENXIO; } +> static inline void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code) {} +> static inline void sev_vcpu_unblocking(struct kvm_vcpu *vcpu) {} +> static inline void sev_snp_init_protected_guest_state(struct kvm_vcpu *vcpu) {} +> +static inline int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order) +> +{ +> + return 0; +> +} +> +> #endif +> +> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c +> index 617c38656757..d05922684005 100644 +> --- a/arch/x86/kvm/x86.c +> +++ b/arch/x86/kvm/x86.c +> @@ -13615,6 +13615,11 @@ bool kvm_arch_no_poll(struct kvm_vcpu *vcpu) +> EXPORT_SYMBOL_GPL(kvm_arch_no_poll); +> +> #ifdef CONFIG_HAVE_KVM_GMEM_PREPARE +> +bool kvm_arch_gmem_prepare_needed(struct kvm *kvm) +> +{ +> + return kvm->arch.vm_type == KVM_X86_SNP_VM; +> +} +> + +> int kvm_arch_gmem_prepare(struct kvm *kvm, gfn_t gfn, kvm_pfn_t pfn, int max_order) +> { +> return static_call(kvm_x86_gmem_prepare)(kvm, pfn, gfn, max_order); +> diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c +> index 3e3c4b7fff3b..11952254ae48 100644 +> --- a/virt/kvm/guest_memfd.c +> +++ b/virt/kvm/guest_memfd.c +> @@ -46,8 +46,8 @@ static int kvm_gmem_prepare_folio(struct inode *inode, pgoff_t index, struct fol +> gfn = slot->base_gfn + index - slot->gmem.pgoff; +> rc = kvm_arch_gmem_prepare(kvm, gfn, pfn, compound_order(compound_head(page))); +> if (rc) { +> - pr_warn_ratelimited("gmem: Failed to prepare folio for index %lx, error %d.\n", +> - index, rc); +> + pr_warn_ratelimited("gmem: Failed to prepare folio for index %lx GFN %llx PFN %llx error %d.\n", +> + index, gfn, pfn, rc); +> return rc; +> } +> } + +Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> + +Paolo diff --git a/a/content_digest b/N2/content_digest index b430ffe..3fa8f12 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -244,6 +244,404 @@ "\n" "Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>\n" "\n" + "Paolo\n" + "\n" + "\n" + "X-sender: <linux-kernel+bounces-125884-steffen.klassert=secunet.com@vger.kernel.org>\n" + "X-Receiver: <steffen.klassert@secunet.com> ORCPT=rfc822;steffen.klassert@secunet.com\n" + "X-CreatedBy: MSExchange15\n" + "X-HeloDomain: mbx-dresden-01.secunet.de\n" + "X-ExtendedProps: BQBjAAoATGQFfe5Q3AgFADcAAgAADwA8AAAATWljcm9zb2Z0LkV4Y2hhbmdlLlRyYW5zcG9ydC5NYWlsUmVjaXBpZW50Lk9yZ2FuaXphdGlvblNjb3BlEQAAAAAAAAAAAAAAAAAAAAAADwA/AAAATWljcm9zb2Z0LkV4Y2hhbmdlLlRyYW5zcG9ydC5EaXJlY3RvcnlEYXRhLk1haWxEZWxpdmVyeVByaW9yaXR5DwADAAAATG93\n" + "X-Source: SMTP:Default MBX-ESSEN-02\n" + "X-SourceIPAddress: 10.53.40.199\n" + "X-EndOfInjectedXHeaders: 20017\n" + "Received: from mbx-dresden-01.secunet.de (10.53.40.199) by\n" + " mbx-essen-02.secunet.de (10.53.40.198) with Microsoft SMTP Server\n" + " (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id\n" + " 15.1.2507.37; Sat, 30 Mar 2024 22:05:59 +0100\n" + "Received: from a.mx.secunet.com (62.96.220.36) by cas-essen-02.secunet.de\n" + " (10.53.40.202) with Microsoft SMTP Server (version=TLS1_2,\n" + " cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.37 via Frontend\n" + " Transport; Sat, 30 Mar 2024 22:05:59 +0100\n" + "Received: from localhost (localhost [127.0.0.1])\n" + "\tby a.mx.secunet.com (Postfix) with ESMTP id EFF4C20883\n" + "\tfor <steffen.klassert@secunet.com>; Sat, 30 Mar 2024 22:05:58 +0100 (CET)\n" + "X-Virus-Scanned: by secunet\n" + "X-Spam-Flag: NO\n" + "X-Spam-Score: -5.151\n" + "X-Spam-Level:\n" + "X-Spam-Status: No, score=-5.151 tagged_above=-999 required=2.1\n" + "\ttests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.1, DKIM_SIGNED=0.1,\n" + "\tDKIM_VALID=-0.1, DKIM_VALID_AU=-0.1,\n" + "\tHEADER_FROM_DIFFERENT_DOMAINS=0.249, MAILING_LIST_MULTI=-1,\n" + "\tRCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001]\n" + "\tautolearn=ham autolearn_force=no\n" + "Authentication-Results: a.mx.secunet.com (amavisd-new);\n" + "\tdkim=pass (1024-bit key) header.d=redhat.com\n" + "Received: from a.mx.secunet.com ([127.0.0.1])\n" + "\tby localhost (a.mx.secunet.com [127.0.0.1]) (amavisd-new, port 10024)\n" + "\twith ESMTP id jPyHFIQzS7lk for <steffen.klassert@secunet.com>;\n" + "\tSat, 30 Mar 2024 22:05:58 +0100 (CET)\n" + "Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=139.178.88.99; helo=sv.mirrors.kernel.org; envelope-from=linux-kernel+bounces-125884-steffen.klassert=secunet.com@vger.kernel.org; receiver=steffen.klassert@secunet.com \n" + "DKIM-Filter: OpenDKIM Filter v2.11.0 a.mx.secunet.com D7FCA20520\n" + "Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])\n" + "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n" + "\t(No client certificate requested)\n" + "\tby a.mx.secunet.com (Postfix) with ESMTPS id D7FCA20520\n" + "\tfor <steffen.klassert@secunet.com>; Sat, 30 Mar 2024 22:05:57 +0100 (CET)\n" + "Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140])\n" + "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n" + "\t(No client certificate requested)\n" + "\tby sv.mirrors.kernel.org (Postfix) with ESMTPS id 7A319282BFF\n" + "\tfor <steffen.klassert@secunet.com>; Sat, 30 Mar 2024 21:05:55 +0000 (UTC)\n" + "Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])\n" + "\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 93E9B4D9E7;\n" + "\tSat, 30 Mar 2024 21:05:40 +0000 (UTC)\n" + "Authentication-Results: smtp.subspace.kernel.org;\n" + "\tdkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=\"iMz1hl2M\"\n" + "Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124])\n" + "\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n" + "\t(No client certificate requested)\n" + "\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 47DB243ADA\n" + "\tfor <linux-kernel@vger.kernel.org>; Sat, 30 Mar 2024 21:05:35 +0000 (UTC)\n" + "Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124\n" + "ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n" + "\tt=1711832736; cv=none; b=mYjoV2BWBEI3RSD/GVtT3x+lj2mN83O7o83HDNjGWcct/RiBj4fT+oMsIBQgHT3p9EpmRhcxvnErkql3acDjfK6TpFr87TVQT4gp1phG18GrBRhsY79AAGQA8In3tU6xs+OPVpW4a+iVftFNYidhZZZ+6S0OgwBWulAld1Pu7xk=\n" + "ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org;\n" + "\ts=arc-20240116; t=1711832736; c=relaxed/simple;\n" + "\tbh=3Zs96oVvSrL1EcRD7qOwXkqb76tHEKhezfgjNzTnj6U=;\n" + "\th=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:\n" + "\t In-Reply-To:Content-Type; b=ae1wa1GswZJRlxxXgy8YycVkEJOthYG2FpAKTw0BDXaPo1s30spPmdjif6fpbGfKo9tco6Ud2fa1IoHDYqcTptQOUOKVKIjmgUK7mOC8bUvXSMFCBIcDt+Krm2/802IiwANql4OgOx0ziO2IdVIjlXvxSf//LwzMBq7arunpDY4=\n" + "ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=iMz1hl2M; arc=none smtp.client-ip=170.10.133.124\n" + "Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com\n" + "Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com\n" + "DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n" + "\ts=mimecast20190719; t=1711832734;\n" + "\th=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n" + "\t to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n" + "\t content-transfer-encoding:content-transfer-encoding:\n" + "\t in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;\n" + "\tbh=zvlmNpxIDJrnhPj/YKT8a7uMmKqBTvBD1u10rPEnCzE=;\n" + "\tb=iMz1hl2Mf/psN5Od7gln/fDHfKpEbYKAoJhvY6cNexwhZrtJjVZGFsdCoZU3kWgWk1RIwh\n" + "\tLKspXOWtfajfLA4pTm8k/VRcwb5l74UdyiTt8ptTmcNAW0OGRYJqcF18jP49JFR4Zcw1uK\n" + "\t+iZjx/537Gyk0TR70Zvl0/odzcpHB4c=\n" + "Received: from mail-ej1-f71.google.com (mail-ej1-f71.google.com\n" + " [209.85.218.71]) by relay.mimecast.com with ESMTP with STARTTLS\n" + " (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n" + " us-mta-256-PGYr2KPYOiO_h0SY5dI7dA-1; Sat, 30 Mar 2024 17:05:32 -0400\n" + "X-MC-Unique: PGYr2KPYOiO_h0SY5dI7dA-1\n" + "Received: by mail-ej1-f71.google.com with SMTP id a640c23a62f3a-a4e4a0dcee5so55232866b.1\n" + " for <linux-kernel@vger.kernel.org>; Sat, 30 Mar 2024 14:05:32 -0700 (PDT)\n" + "X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;\n" + " d=1e100.net; s=20230601; t=1711832731; x=1712437531;\n" + " h=content-transfer-encoding:in-reply-to:autocrypt:content-language\n" + " :from:references:cc:to:subject:user-agent:mime-version:date\n" + " :message-id:x-gm-message-state:from:to:cc:subject:date:message-id\n" + " :reply-to;\n" + " bh=zvlmNpxIDJrnhPj/YKT8a7uMmKqBTvBD1u10rPEnCzE=;\n" + " b=QxMFlo5ug4ZHZZGO5wWoALQQRlOPeUYjaulSwfIzWR7oJlOJZUfEcJb4tKgifu9IV/\n" + " CWrr9zfXXJ+DF3eXPyeblWXVdK0S2qBJE7wDsixX4eH0+G7Gz2Z1SlPSiXMYd0Qwjoln\n" + " tKeyZ74tNMi8tW8LcpBSMKrLsBlpZyl67z98q+iG5LAWWQv5tm1GC/nATwdb2KcT0xUH\n" + " tUmQunTYQJ3WpIJ23zjsru60aJBbQ+YXbM+xtNCOL5IhkRIKT2UTKK42tEv/sG+PUYur\n" + " e1FD3kzb5/i1RNzn/olY8riuKcgvK20Ad3rqi6RPG24rU0HZi7Jhjq0zTwHOgJtznwXd\n" + " q7WA==\n" + "X-Forwarded-Encrypted: i=1; AJvYcCV2MbwO/cLEokR4NZioslecqzrHxS9Vf9nnhhRErbbfBZv3hRg9v4WmYxhiwj4OjRJPt6S8x6Cu5+FARLAGKnfAY4t+DSNSzNAzVkZK\n" + "X-Gm-Message-State: AOJu0YzKWQ4KhkKs0FzBu8Nr7LqQ+U2x7HqthkZw8l5f+HdZCRoD+Xdm\n" + "\tkoNmfBvn5I5GTrYHYjd3uuWdYqQ3QGcX9b5gyl1MmAtCfHswZOthI42mOl3wSebasWF2MeQDNWn\n" + "\t9CsiOuZHW0eGHn1B+kjh+kHhkuFfDc6IWa+lyaLzuqC9LF36lVCo1UFYnFvl2sA==\n" + "X-Received: by 2002:a17:906:a40d:b0:a4e:253d:9641 with SMTP id l13-20020a170906a40d00b00a4e253d9641mr4204826ejz.8.1711832731470;\n" + " Sat, 30 Mar 2024 14:05:31 -0700 (PDT)\n" + "X-Google-Smtp-Source: AGHT+IFTeU1CiYPB2ByqnXfgbHYLBnkSUxAq1ZyFzRHCPzV8G1WZItagAlUo3C1OjOvbzmRD+zOCDA==\n" + "X-Received: by 2002:a17:906:a40d:b0:a4e:253d:9641 with SMTP id l13-20020a170906a40d00b00a4e253d9641mr4204815ejz.8.1711832731102;\n" + " Sat, 30 Mar 2024 14:05:31 -0700 (PDT)\n" + "Received: from [192.168.10.4] ([151.95.49.219])\n" + " by smtp.googlemail.com with ESMTPSA id lb14-20020a170906adce00b00a4e57805d79sm513857ejb.181.2024.03.30.14.05.28\n" + " (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n" + " Sat, 30 Mar 2024 14:05:30 -0700 (PDT)\n" + "Message-ID: <a0799504-385b-40d8-a84c-eddb1bae930d@redhat.com>\n" + "Date: Sat, 30 Mar 2024 22:05:28 +0100\n" + "Precedence: bulk\n" + "X-Mailing-List: linux-kernel@vger.kernel.org\n" + "List-Id: <linux-kernel.vger.kernel.org>\n" + "List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>\n" + "List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>\n" + "MIME-Version: 1.0\n" + "User-Agent: Mozilla Thunderbird\n" + "Subject: Re: [PATCH v12 21/29] KVM: SEV: Implement gmem hook for initializing\n" + " private pages\n" + "To: Michael Roth <michael.roth@amd.com>, kvm@vger.kernel.org\n" + "Cc: linux-coco@lists.linux.dev, linux-mm@kvack.org,\n" + " linux-crypto@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org,\n" + " tglx@linutronix.de, mingo@redhat.com, jroedel@suse.de,\n" + " thomas.lendacky@amd.com, hpa@zytor.com, ardb@kernel.org, seanjc@google.com,\n" + " vkuznets@redhat.com, jmattson@google.com, luto@kernel.org,\n" + " dave.hansen@linux.intel.com, slp@redhat.com, pgonda@google.com,\n" + " peterz@infradead.org, srinivas.pandruvada@linux.intel.com,\n" + " rientjes@google.com, dovmurik@linux.ibm.com, tobin@ibm.com, bp@alien8.de,\n" + " vbabka@suse.cz, kirill@shutemov.name, ak@linux.intel.com,\n" + " tony.luck@intel.com, sathyanarayanan.kuppuswamy@linux.intel.com,\n" + " alpergun@google.com, jarkko@kernel.org, ashish.kalra@amd.com,\n" + " nikunj.dadhania@amd.com, pankaj.gupta@amd.com, liam.merwick@oracle.com\n" + "References: <20240329225835.400662-1-michael.roth@amd.com>\n" + " <20240329225835.400662-22-michael.roth@amd.com>\n" + "From: Paolo Bonzini <pbonzini@redhat.com>\n" + "Content-Language: en-US\n" + "Autocrypt: addr=pbonzini@redhat.com; keydata=\n" + " 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\n" + "In-Reply-To: <20240329225835.400662-22-michael.roth@amd.com>\n" + "Content-Type: text/plain; charset=UTF-8; format=flowed\n" + "Content-Transfer-Encoding: 7bit\n" + "Return-Path: linux-kernel+bounces-125884-steffen.klassert=secunet.com@vger.kernel.org\n" + "X-MS-Exchange-Organization-OriginalArrivalTime: 30 Mar 2024 21:05:59.0559\n" + " (UTC)\n" + "X-MS-Exchange-Organization-Network-Message-Id: f33a2ab5-8d5d-4b0d-edfc-08dc50fd32e4\n" + "X-MS-Exchange-Organization-OriginalClientIPAddress: 62.96.220.36\n" + "X-MS-Exchange-Organization-OriginalServerIPAddress: 10.53.40.202\n" + "X-MS-Exchange-Organization-Cross-Premises-Headers-Processed: cas-essen-02.secunet.de\n" + "X-MS-Exchange-Organization-OrderedPrecisionLatencyInProgress: LSRV=cas-essen-02.secunet.de:TOTAL-FE=0.010|SMR=0.010(SMRPI=0.007(SMRPI-FrontendProxyAgent=0.007));2024-03-30T21:05:59.066Z\n" + "X-MS-Exchange-Forest-ArrivalHubServer: mbx-essen-02.secunet.de\n" + "X-MS-Exchange-Organization-AuthSource: cas-essen-02.secunet.de\n" + "X-MS-Exchange-Organization-AuthAs: Anonymous\n" + "X-MS-Exchange-Organization-OriginalSize: 19470\n" + "X-MS-Exchange-Organization-Transport-Properties: DeliveryPriority=Low\n" + "X-MS-Exchange-Organization-Prioritization: 2:ShadowRedundancy\n" + "X-MS-Exchange-Organization-IncludeInSla: False:ShadowRedundancy\n" + "\n" + "On 3/29/24 23:58, Michael Roth wrote:\n" + "> This will handle the RMP table updates needed to put a page into a\n" + "> private state before mapping it into an SEV-SNP guest.\n" + "> \n" + "> Signed-off-by: Michael Roth <michael.roth@amd.com>\n" + "> ---\n" + "> arch/x86/kvm/Kconfig | 1 +\n" + "> arch/x86/kvm/svm/sev.c | 98 ++++++++++++++++++++++++++++++++++++++++++\n" + "> arch/x86/kvm/svm/svm.c | 2 +\n" + "> arch/x86/kvm/svm/svm.h | 5 +++\n" + "> arch/x86/kvm/x86.c | 5 +++\n" + "> virt/kvm/guest_memfd.c | 4 +-\n" + "> 6 files changed, 113 insertions(+), 2 deletions(-)\n" + "> \n" + "> diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig\n" + "> index d0bb0e7a4e80..286b40d0b07c 100644\n" + "> --- a/arch/x86/kvm/Kconfig\n" + "> +++ b/arch/x86/kvm/Kconfig\n" + "> @@ -124,6 +124,7 @@ config KVM_AMD_SEV\n" + "> \tdepends on CRYPTO_DEV_SP_PSP && !(KVM_AMD=y && CRYPTO_DEV_CCP_DD=m)\n" + "> \tselect ARCH_HAS_CC_PLATFORM\n" + "> \tselect KVM_GENERIC_PRIVATE_MEM\n" + "> +\tselect HAVE_KVM_GMEM_PREPARE\n" + "> \thelp\n" + "> \t Provides support for launching Encrypted VMs (SEV) and Encrypted VMs\n" + "> \t with Encrypted State (SEV-ES) on AMD processors.\n" + "> diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c\n" + "> index 9ea13c2de668..e1f8be1df219 100644\n" + "> --- a/arch/x86/kvm/svm/sev.c\n" + "> +++ b/arch/x86/kvm/svm/sev.c\n" + "> @@ -4282,3 +4282,101 @@ void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code)\n" + "> out:\n" + "> \tput_page(pfn_to_page(pfn));\n" + "> }\n" + "> +\n" + "> +static bool is_pfn_range_shared(kvm_pfn_t start, kvm_pfn_t end)\n" + "> +{\n" + "> +\tkvm_pfn_t pfn = start;\n" + "> +\n" + "> +\twhile (pfn < end) {\n" + "> +\t\tint ret, rmp_level;\n" + "> +\t\tbool assigned;\n" + "> +\n" + "> +\t\tret = snp_lookup_rmpentry(pfn, &assigned, &rmp_level);\n" + "> +\t\tif (ret) {\n" + "> +\t\t\tpr_warn_ratelimited(\"SEV: Failed to retrieve RMP entry: PFN 0x%llx GFN start 0x%llx GFN end 0x%llx RMP level %d error %d\\n\",\n" + "> +\t\t\t\t\t pfn, start, end, rmp_level, ret);\n" + "> +\t\t\treturn false;\n" + "> +\t\t}\n" + "> +\n" + "> +\t\tif (assigned) {\n" + "> +\t\t\tpr_debug(\"%s: overlap detected, PFN 0x%llx start 0x%llx end 0x%llx RMP level %d\\n\",\n" + "> +\t\t\t\t __func__, pfn, start, end, rmp_level);\n" + "> +\t\t\treturn false;\n" + "> +\t\t}\n" + "> +\n" + "> +\t\tpfn++;\n" + "> +\t}\n" + "> +\n" + "> +\treturn true;\n" + "> +}\n" + "> +\n" + "> +static u8 max_level_for_order(int order)\n" + "> +{\n" + "> +\tif (order >= KVM_HPAGE_GFN_SHIFT(PG_LEVEL_2M))\n" + "> +\t\treturn PG_LEVEL_2M;\n" + "> +\n" + "> +\treturn PG_LEVEL_4K;\n" + "> +}\n" + "> +\n" + "> +static bool is_large_rmp_possible(struct kvm *kvm, kvm_pfn_t pfn, int order)\n" + "> +{\n" + "> +\tkvm_pfn_t pfn_aligned = ALIGN_DOWN(pfn, PTRS_PER_PMD);\n" + "> +\n" + "> +\t/*\n" + "> +\t * If this is a large folio, and the entire 2M range containing the\n" + "> +\t * PFN is currently shared, then the entire 2M-aligned range can be\n" + "> +\t * set to private via a single 2M RMP entry.\n" + "> +\t */\n" + "> +\tif (max_level_for_order(order) > PG_LEVEL_4K &&\n" + "> +\t is_pfn_range_shared(pfn_aligned, pfn_aligned + PTRS_PER_PMD))\n" + "> +\t\treturn true;\n" + "> +\n" + "> +\treturn false;\n" + "> +}\n" + "> +\n" + "> +int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order)\n" + "> +{\n" + "> +\tstruct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;\n" + "> +\tkvm_pfn_t pfn_aligned;\n" + "> +\tgfn_t gfn_aligned;\n" + "> +\tint level, rc;\n" + "> +\tbool assigned;\n" + "> +\n" + "> +\tif (!sev_snp_guest(kvm))\n" + "> +\t\treturn 0;\n" + "> +\n" + "> +\trc = snp_lookup_rmpentry(pfn, &assigned, &level);\n" + "> +\tif (rc) {\n" + "> +\t\tpr_err_ratelimited(\"SEV: Failed to look up RMP entry: GFN %llx PFN %llx error %d\\n\",\n" + "> +\t\t\t\t gfn, pfn, rc);\n" + "> +\t\treturn -ENOENT;\n" + "> +\t}\n" + "> +\n" + "> +\tif (assigned) {\n" + "> +\t\tpr_debug(\"%s: already assigned: gfn %llx pfn %llx max_order %d level %d\\n\",\n" + "> +\t\t\t __func__, gfn, pfn, max_order, level);\n" + "> +\t\treturn 0;\n" + "> +\t}\n" + "> +\n" + "> +\tif (is_large_rmp_possible(kvm, pfn, max_order)) {\n" + "> +\t\tlevel = PG_LEVEL_2M;\n" + "> +\t\tpfn_aligned = ALIGN_DOWN(pfn, PTRS_PER_PMD);\n" + "> +\t\tgfn_aligned = ALIGN_DOWN(gfn, PTRS_PER_PMD);\n" + "> +\t} else {\n" + "> +\t\tlevel = PG_LEVEL_4K;\n" + "> +\t\tpfn_aligned = pfn;\n" + "> +\t\tgfn_aligned = gfn;\n" + "> +\t}\n" + "> +\n" + "> +\trc = rmp_make_private(pfn_aligned, gfn_to_gpa(gfn_aligned), level, sev->asid, false);\n" + "> +\tif (rc) {\n" + "> +\t\tpr_err_ratelimited(\"SEV: Failed to update RMP entry: GFN %llx PFN %llx level %d error %d\\n\",\n" + "> +\t\t\t\t gfn, pfn, level, rc);\n" + "> +\t\treturn -EINVAL;\n" + "> +\t}\n" + "> +\n" + "> +\tpr_debug(\"%s: updated: gfn %llx pfn %llx pfn_aligned %llx max_order %d level %d\\n\",\n" + "> +\t\t __func__, gfn, pfn, pfn_aligned, max_order, level);\n" + "> +\n" + "> +\treturn 0;\n" + "> +}\n" + "> diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c\n" + "> index a895d3f07cb8..c099154e326a 100644\n" + "> --- a/arch/x86/kvm/svm/svm.c\n" + "> +++ b/arch/x86/kvm/svm/svm.c\n" + "> @@ -5078,6 +5078,8 @@ static struct kvm_x86_ops svm_x86_ops __initdata = {\n" + "> \t.vcpu_deliver_sipi_vector = svm_vcpu_deliver_sipi_vector,\n" + "> \t.vcpu_get_apicv_inhibit_reasons = avic_vcpu_get_apicv_inhibit_reasons,\n" + "> \t.alloc_apic_backing_page = svm_alloc_apic_backing_page,\n" + "> +\n" + "> +\t.gmem_prepare = sev_gmem_prepare,\n" + "> };\n" + "> \n" + "> /*\n" + "> diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h\n" + "> index 0cdcd0759fe0..53618cfc2b89 100644\n" + "> --- a/arch/x86/kvm/svm/svm.h\n" + "> +++ b/arch/x86/kvm/svm/svm.h\n" + "> @@ -730,6 +730,7 @@ extern unsigned int max_sev_asid;\n" + "> void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code);\n" + "> void sev_vcpu_unblocking(struct kvm_vcpu *vcpu);\n" + "> void sev_snp_init_protected_guest_state(struct kvm_vcpu *vcpu);\n" + "> +int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order);\n" + "> #else\n" + "> static inline struct page *snp_safe_alloc_page(struct kvm_vcpu *vcpu) {\n" + "> \treturn alloc_page(GFP_KERNEL_ACCOUNT | __GFP_ZERO);\n" + "> @@ -746,6 +747,10 @@ static inline int sev_dev_get_attr(u64 attr, u64 *val) { return -ENXIO; }\n" + "> static inline void sev_handle_rmp_fault(struct kvm_vcpu *vcpu, gpa_t gpa, u64 error_code) {}\n" + "> static inline void sev_vcpu_unblocking(struct kvm_vcpu *vcpu) {}\n" + "> static inline void sev_snp_init_protected_guest_state(struct kvm_vcpu *vcpu) {}\n" + "> +static inline int sev_gmem_prepare(struct kvm *kvm, kvm_pfn_t pfn, gfn_t gfn, int max_order)\n" + "> +{\n" + "> +\treturn 0;\n" + "> +}\n" + "> \n" + "> #endif\n" + "> \n" + "> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c\n" + "> index 617c38656757..d05922684005 100644\n" + "> --- a/arch/x86/kvm/x86.c\n" + "> +++ b/arch/x86/kvm/x86.c\n" + "> @@ -13615,6 +13615,11 @@ bool kvm_arch_no_poll(struct kvm_vcpu *vcpu)\n" + "> EXPORT_SYMBOL_GPL(kvm_arch_no_poll);\n" + "> \n" + "> #ifdef CONFIG_HAVE_KVM_GMEM_PREPARE\n" + "> +bool kvm_arch_gmem_prepare_needed(struct kvm *kvm)\n" + "> +{\n" + "> +\treturn kvm->arch.vm_type == KVM_X86_SNP_VM;\n" + "> +}\n" + "> +\n" + "> int kvm_arch_gmem_prepare(struct kvm *kvm, gfn_t gfn, kvm_pfn_t pfn, int max_order)\n" + "> {\n" + "> \treturn static_call(kvm_x86_gmem_prepare)(kvm, pfn, gfn, max_order);\n" + "> diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c\n" + "> index 3e3c4b7fff3b..11952254ae48 100644\n" + "> --- a/virt/kvm/guest_memfd.c\n" + "> +++ b/virt/kvm/guest_memfd.c\n" + "> @@ -46,8 +46,8 @@ static int kvm_gmem_prepare_folio(struct inode *inode, pgoff_t index, struct fol\n" + "> \t\tgfn = slot->base_gfn + index - slot->gmem.pgoff;\n" + "> \t\trc = kvm_arch_gmem_prepare(kvm, gfn, pfn, compound_order(compound_head(page)));\n" + "> \t\tif (rc) {\n" + "> -\t\t\tpr_warn_ratelimited(\"gmem: Failed to prepare folio for index %lx, error %d.\\n\",\n" + "> -\t\t\t\t\t index, rc);\n" + "> +\t\t\tpr_warn_ratelimited(\"gmem: Failed to prepare folio for index %lx GFN %llx PFN %llx error %d.\\n\",\n" + "> +\t\t\t\t\t index, gfn, pfn, rc);\n" + "> \t\t\treturn rc;\n" + "> \t\t}\n" + "> \t}\n" + "\n" + "Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>\n" + "\n" Paolo -23a3bf5548b78a1e4d987a736c948f87903b9b243aaf996eb4099cf876876a56 +9ef47d303826d7200dd16fe2fa30f970427752bf0835d9f035b241e1d127abaf
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox