From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id B72B6C54E58 for ; Wed, 20 Mar 2024 17:28:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 242C06B008C; Wed, 20 Mar 2024 13:28:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1F38F6B0093; Wed, 20 Mar 2024 13:28:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 070706B0095; Wed, 20 Mar 2024 13:28:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id E50126B008C for ; Wed, 20 Mar 2024 13:28:54 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 78CCBC115D for ; Wed, 20 Mar 2024 17:28:54 +0000 (UTC) X-FDA: 81918102588.09.274CDDE Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf13.hostedemail.com (Postfix) with ESMTP id 6A71A20025 for ; Wed, 20 Mar 2024 17:28:51 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=hZieuwMM; spf=pass (imf13.hostedemail.com: domain of pbonzini@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=pbonzini@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710955731; a=rsa-sha256; cv=none; b=rPlGkXYEaZfzuGMZ+lG2YcwdY84PKboXWcsZZC+vLyMqkpAjZaNad6q/dxjyhKJ40AC3jY kZdMJt7cgnE/rh0BFd8gL8akPXJZ4/+niyv1r7i5MNb1Os+yzMFXUlRWauOEP3Qut+tpPT 1gPAT0ZHHq1z2tiCu/qsjyTXYGIVMBQ= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=hZieuwMM; spf=pass (imf13.hostedemail.com: domain of pbonzini@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=pbonzini@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710955731; h=from:from:sender: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:dkim-signature; bh=jTNbtMbxpop+bQq0JJOZBsIfXIIEPcHQLvpxIITRNNI=; b=SJ/XFQWypytmCS3LasqgNTDiI+kcdwzkjaTp9esMLTeu+9DXRZpINYmr2SkNTnEnhFzyfx sgtpCwfVi++k21EtJWt/GKggLofzUtHmiwAYkzdN1ymKPN12pzojc2VIWM4TQQkUBbe+IK MFBucChRhWXn27cDi91pB2GtgKdmujg= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1710955730; 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; bh=jTNbtMbxpop+bQq0JJOZBsIfXIIEPcHQLvpxIITRNNI=; b=hZieuwMMCKkvfQxTnk3Oo5BJJJVViFOX3E95W0yxMGZihMJCpkDSKnoRKapFWovJZATho0 m/Xs5XJziq0datS914fOphnEQoWOZxtC4o0fkvwaViFrNXLzjkJLGDM6sGIqDf9ACabO/Z NTeI5XPYKU/SP3/PaJ/svfNXHa8eGwU= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-163-CycjTwfHPoG6LAv7iG_eVw-1; Wed, 20 Mar 2024 13:28:49 -0400 X-MC-Unique: CycjTwfHPoG6LAv7iG_eVw-1 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-33ed71800f2so22988f8f.2 for ; Wed, 20 Mar 2024 10:28:49 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710955724; x=1711560524; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jTNbtMbxpop+bQq0JJOZBsIfXIIEPcHQLvpxIITRNNI=; b=q5EzDPNuIzlmuZP2WkSYaX5SrxNsxMcIfhUcFOK0JWPolTt0cKEdHCVyUzMxts3CFn LCBFPmEZDKqEHLd2AQo/4Lplr+GHWOIpRF0jxSx96riTBQLQODP54jLXe3GzR6DYJ+VH 5jxxLPFF4aStVK+qxiSFYWD7XlDDdCp8RTL0UH6rRMsSzGZ9mhEAIq1cZ1BI1v40qgJm R8oFWyo8nlp0YAIpN4yWkrUWvcA3R1TihDOEq9fiQkfie6mErMrtlVgEPWqVupyQ/Qrs n79CumOQ5u2J47TpM8Djxb7n+VuoWGuDJ4Havg8Ju86/RsWG9t99oN7VaHt9ZlcBRG8+ deqA== X-Forwarded-Encrypted: i=1; AJvYcCXobo3sEGJFbhyBoP9NJ3sm8w9gjjnS44m8PefAyjRnDnsErTSBfwcewLRIeizCgMo6rPww8TP7b6xVrjBXcxT864o= X-Gm-Message-State: AOJu0YyDD9X5+kkVQMM8a42dOsjRKyEwyfkXcUq5GD+OedWxp2HHnTmc LePi4dDuUzVVO7cofaF6NEmic0kp/GeqMnBd0x+J0fA+J2Wx794HX9OvQ3ATxzqZLvcZJpfQxhL x46emU9QQd1e68yqgA9DL1l/Ught9yau/yDjLQbENjNfXd7k4akotrKSXTRAJ79y1ttSaReosOt gjijuyMOIowWj68b2lUbdVxOc= X-Received: by 2002:adf:fd04:0:b0:33e:781d:88c3 with SMTP id e4-20020adffd04000000b0033e781d88c3mr1975571wrr.48.1710955724607; Wed, 20 Mar 2024 10:28:44 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHUSonEpkqIs6UvTEipW/i/Sb8XB2/SyAe+307wQ/mxm28QibJaC/seZsljP+J8ad6yvrWbyDhh8OGlVlaKSgE= X-Received: by 2002:adf:fd04:0:b0:33e:781d:88c3 with SMTP id e4-20020adffd04000000b0033e781d88c3mr1975551wrr.48.1710955724132; Wed, 20 Mar 2024 10:28:44 -0700 (PDT) MIME-Version: 1.0 References: <20231230172351.574091-1-michael.roth@amd.com> <20231230172351.574091-16-michael.roth@amd.com> In-Reply-To: <20231230172351.574091-16-michael.roth@amd.com> From: Paolo Bonzini Date: Wed, 20 Mar 2024 18:28:32 +0100 Message-ID: Subject: Re: [PATCH v11 15/35] KVM: SEV: Add KVM_SNP_INIT command To: Michael Roth Cc: kvm@vger.kernel.org, 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, zhi.a.wang@intel.com, Brijesh Singh , Pavan Kumar Paluri X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 6A71A20025 X-Stat-Signature: 9jqhko3kyzty5i4mjgwfsrfatztgchqq X-Rspam-User: X-HE-Tag: 1710955731-725601 X-HE-Meta: U2FsdGVkX1+xUa96OkqRoAGyLiEVxxHHvOKCdfypiyD22xQmQHCPTaWSCpbkmTqimggyat/RCHpD8uNhq2A45wYAyPRwLD+jos4dVJTbd+MXHjDq5vn94Brk/o5937BnxyY6jc79zkBZ9nriMZgRFjzxVVzCC9c204WqG1rhBZgCT9m4V4xOSl1M4V4Zjw8xHcHf9F57jF2iSGPW3E+daa6MIN7Ljjzl4RFwEh2jMc08a/D/mVeWrdaeiKPQRGKKfv9GGN29gU3Dz7AUVFlcoJeWiqHI3a+ToSCBiNFFnrr6hAINzkFd+hMXztIn4WIJypkujl+7+PkywYhUn8FcbTeyFq2YfJmRIrDx+wqeSRvU2q5zk8aBtTQOOP4RgrxvRRtBLXDAPOkFehcLnFRHoZ6LJa9OdBdvW28M7tAJQEXgXPdhboTFbVgJxYdoKjRpq0T/CgW9gFptBwyEFpa0ZOX4sjtSPMzTj04e2QE/CqB429c0Z1JH6YSW3oRDkQHm6NFpcDEp6mr2kjlnpgLimalGBeJ1Tt1uvyQ/9ekGiD7z4wxllqcZuqx2+xf99EYj8Oel9jJhExWu/xuUKrqKrLXKJiUjNdnxMhuxvL3b9ey9r0KAX74kFNsIOdHWzy3RnJN142LvWuDDnk/Wfwl9xdqW6WzeX9BJMMeA0WfoEm8MMrklnwhvqm77dsiNJ5wsk+wBZM6e/VT1Vfbi9x67mphZJZfjYp7fw0BWcLzSlPcAaA9GUW7Ay4Xi/2xnX2yrIzArtBpAuzbWxQsNAck5sle6OPWi2TY0RO5Qr0/q+kWruBq2I4vU2Vsg7Zmbdqio8xH0KFtHCUeFHnTO6kfIgzO7Q/XdsxVNOQYocnfLTWPpvAvoO0TU1oxFrb+/ILsvuR/PAYI7pppSrhUKRawfp2pB9ibohF2inUO/62EDf315MCcfelOhn3X5QcCDSlrPqGqDfx1H9+IVio4Gq1l Ce0K6DjF 8WA4HFx/RtWFlwhrbsifPyyWDj8qULmplQtoV3EA6RC8IL5EYYicBqxvEF5z6ZZ9vfnOvv1kNlp6nVhF96olI7DfF9fKddziFTQA0I5F/mtOglC6p4GJ4KQFKguzVsuSU6Z59cOw6tzPYUjnoyDbCM5IN7P3oHH37yGoOctZcNKryE1JjUeePE4+WDUFUQjUsghz51Am8wNj6NpHG2g9Kb5wy0bl6XseiLfLy2c8t341mxHWf8dnFMaciYMiGplfjbXLyHjWatj3K1J1ZNLGf3bjHenWiK6jqwDPzgo6IgFmsmeOvCUKWrpOeBC+m3HG6PyejcTtIDl9AZ2uzBzv4JpqARlkXYvniD2xakTANI1dvC3LXgxXVz3Db/2bajs6w+j7qD0I1vBMbKb9otlfFiqJ4jsboyxUjTiBZ7VD+icbHlaw= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Sat, Dec 30, 2023 at 6:26=E2=80=AFPM Michael Roth = wrote: > + struct kvm_snp_init { > + __u64 flags; > + }; > + > +The flags bitmap is defined as:: > + > + /* enable the restricted injection */ > + #define KVM_SEV_SNP_RESTRICTED_INJET (1<<0) > + > + /* enable the restricted injection timer */ > + #define KVM_SEV_SNP_RESTRICTED_TIMER_INJET (1<<1) The flags are the same as the vmsa_features introduced by KVM_SEV_INIT2, which is great - SNP does not need any change in this department and this patch almost entirely goes away. > if (sev_es_debug_swap_enabled) > save->sev_features |=3D SVM_SEV_FEAT_DEBUG_SWAP; > > + /* Enable the SEV-SNP feature */ > + if (sev_snp_guest(svm->vcpu.kvm)) > + save->sev_features |=3D SVM_SEV_FEAT_SNP_ACTIVE; ... on the other hand this begs the question whether SVM_SEV_FEAT_SNP_ACTIVE should be exposed in the KVM_X86_SEV_VMSA_FEATURES attribute. I think it shouldn't. This means that this patch becomes a two-liner change to sev_guest_init() that you can squash in patch 14 ("KVM: SEV: Add initial SEV-SNP support"): sev->es_active =3D es_active; sev->vmsa_features =3D data->vmsa_features; + if (vm_type =3D=3D KVM_X86_SNP_VM) + sev->vmsa_features |=3D SVM_SEV_FEAT_SNP_ACTIVE Also, since there is now sev->vmsa_features (that wasn't there at the time of your posting), I'd even drop sev->snp_active in favor of "sev->vmsa_features & SVM_SEV_FEAT_SNP_ACTIVE". It's only ever used in sev_snp_guest() so it's a useless duplication. Looking forward to see v12. :) If you have any problems rebasing on top of https://lore.kernel.org/kvm/20240227232100.478238-1-pbonzini@redhat.= com/, please shout. Paolo > pr_debug("Virtual Machine Save Area (VMSA):\n"); > print_hex_dump_debug("", DUMP_PREFIX_NONE, 16, 1, save, sizeof(*s= ave), false); > > @@ -1883,6 +1914,12 @@ int sev_mem_enc_ioctl(struct kvm *kvm, void __user= *argp) > } > > switch (sev_cmd.id) { > + case KVM_SEV_SNP_INIT: > + if (!sev_snp_enabled) { > + r =3D -ENOTTY; > + goto out; > + } > + fallthrough; > case KVM_SEV_ES_INIT: > if (!sev_es_enabled) { > r =3D -ENOTTY; > diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h > index a3e27c82866b..07a9eb5b6ce5 100644 > --- a/arch/x86/kvm/svm/svm.h > +++ b/arch/x86/kvm/svm/svm.h > @@ -76,6 +76,9 @@ enum { > /* TPR and CR2 are always written before VMRUN */ > #define VMCB_ALWAYS_DIRTY_MASK ((1U << VMCB_INTR) | (1U << VMCB_CR2)) > > +/* Supported init feature flags */ > +#define SEV_SNP_SUPPORTED_FLAGS 0x0 > + > struct kvm_sev_info { > bool active; /* SEV enabled guest */ > bool es_active; /* SEV-ES enabled guest */ > @@ -91,6 +94,7 @@ struct kvm_sev_info { > struct list_head mirror_entry; /* Use as a list entry of mirrors = */ > struct misc_cg *misc_cg; /* For misc cgroup accounting */ > atomic_t migration_in_progress; > + u64 snp_init_flags; > }; > > struct kvm_svm { > diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h > index c3308536482b..73702e9b9d76 100644 > --- a/include/uapi/linux/kvm.h > +++ b/include/uapi/linux/kvm.h > @@ -1869,6 +1869,9 @@ enum sev_cmd_id { > /* Guest Migration Extension */ > KVM_SEV_SEND_CANCEL, > > + /* SNP specific commands */ > + KVM_SEV_SNP_INIT, > + > KVM_SEV_NR_MAX, > }; > > @@ -1965,6 +1968,16 @@ struct kvm_sev_receive_update_data { > __u32 trans_len; > }; > > +/* enable the restricted injection */ > +#define KVM_SEV_SNP_RESTRICTED_INJET (1 << 0) > + > +/* enable the restricted injection timer */ > +#define KVM_SEV_SNP_RESTRICTED_TIMER_INJET (1 << 1) > + > +struct kvm_snp_init { > + __u64 flags; > +}; > + > #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) > #define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1) > #define KVM_DEV_ASSIGN_MASK_INTX (1 << 2) > -- > 2.25.1 >