linux-coco.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: "Kalra, Ashish" <Ashish.Kalra@amd.com>
To: Peter Gonda <pgonda@google.com>
Cc: the arch/x86 maintainers <x86@kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	kvm list <kvm@vger.kernel.org>,
	"linux-coco@lists.linux.dev" <linux-coco@lists.linux.dev>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	Linux Crypto Mailing List <linux-crypto@vger.kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>, Joerg Roedel <jroedel@suse.de>,
	"Lendacky, Thomas" <Thomas.Lendacky@amd.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Ard Biesheuvel <ardb@kernel.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Jim Mattson <jmattson@google.com>,
	Andy Lutomirski <luto@kernel.org>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Sergio Lopez <slp@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>,
	David Rientjes <rientjes@google.com>,
	Dov Murik <dovmurik@linux.ibm.com>,
	Tobin Feldman-Fitzthum <tobin@ibm.com>,
	Borislav Petkov <bp@alien8.de>,
	"Roth, Michael" <Michael.Roth@amd.com>,
	Vlastimil Babka <vbabka@suse.cz>,
	"Kirill A . Shutemov" <kirill@shutemov.name>,
	Andi Kleen <ak@linux.intel.com>, Tony Luck <tony.luck@intel.com>,
	Marc Orr <marcorr@google.com>,
	Sathyanarayanan Kuppuswamy
	<sathyanarayanan.kuppuswamy@linux.intel.com>,
	Alper Gun <alpergun@google.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	"jarkko@kernel.org" <jarkko@kernel.org>
Subject: RE: [PATCH Part2 v6 42/49] KVM: SVM: Provide support for SNP_GUEST_REQUEST NAE event
Date: Mon, 27 Jun 2022 19:03:31 +0000	[thread overview]
Message-ID: <SN6PR12MB2767B9F438A0F6413780F73E8EB99@SN6PR12MB2767.namprd12.prod.outlook.com> (raw)
In-Reply-To: <CAMkAt6rGzSewSyO1uZehWUD2J6aLtRwP5N-uj-HPG73Pp0=Sjw@mail.gmail.com>

[Public]

Hello Peter,

-----Original Message-----
From: Peter Gonda <pgonda@google.com> 
Sent: Friday, June 24, 2022 11:25 AM
To: Kalra, Ashish <Ashish.Kalra@amd.com>
Cc: the arch/x86 maintainers <x86@kernel.org>; LKML <linux-kernel@vger.kernel.org>; kvm list <kvm@vger.kernel.org>; linux-coco@lists.linux.dev; linux-mm@kvack.org; Linux Crypto Mailing List <linux-crypto@vger.kernel.org>; Thomas Gleixner <tglx@linutronix.de>; Ingo Molnar <mingo@redhat.com>; Joerg Roedel <jroedel@suse.de>; Lendacky, Thomas <Thomas.Lendacky@amd.com>; H. Peter Anvin <hpa@zytor.com>; Ard Biesheuvel <ardb@kernel.org>; Paolo Bonzini <pbonzini@redhat.com>; Sean Christopherson <seanjc@google.com>; Vitaly Kuznetsov <vkuznets@redhat.com>; Jim Mattson <jmattson@google.com>; Andy Lutomirski <luto@kernel.org>; Dave Hansen <dave.hansen@linux.intel.com>; Sergio Lopez <slp@redhat.com>; Peter Zijlstra <peterz@infradead.org>; Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>; David Rientjes <rientjes@google.com>; Dov Murik <dovmurik@linux.ibm.com>; Tobin Feldman-Fitzthum <tobin@ibm.com>; Borislav Petkov <bp@alien8.de>; Roth, Michael <Michael.Roth@amd.com>; Vlastimil Babka <vbabka@suse.cz>; Kirill A . Shutemov <kirill@shutemov.name>; Andi Kleen <ak@linux.intel.com>; Tony Luck <tony.luck@intel.com>; Marc Orr <marcorr@google.com>; Sathyanarayanan Kuppuswamy <sathyanarayanan.kuppuswamy@linux.intel.com>; Alper Gun <alpergun@google.com>; Dr. David Alan Gilbert <dgilbert@redhat.com>; jarkko@kernel.org
Subject: Re: [PATCH Part2 v6 42/49] KVM: SVM: Provide support for SNP_GUEST_REQUEST NAE event

On Mon, Jun 20, 2022 at 5:13 PM Ashish Kalra <Ashish.Kalra@amd.com> wrote:
>
> From: Brijesh Singh <brijesh.singh@amd.com>
>
> Version 2 of GHCB specification added the support for two SNP Guest 
> Request Message NAE events. The events allows for an SEV-SNP guest to 
> make request to the SEV-SNP firmware through hypervisor using the 
> SNP_GUEST_REQUEST API define in the SEV-SNP firmware specification.
>
> The SNP_EXT_GUEST_REQUEST is similar to SNP_GUEST_REQUEST with the 
> difference of an additional certificate blob that can be passed 
> through the SNP_SET_CONFIG ioctl defined in the CCP driver. The CCP 
> driver provides snp_guest_ext_guest_request() that is used by the KVM 
> to get both the report and certificate data at once.
>
> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> ---
>  arch/x86/kvm/svm/sev.c | 196 +++++++++++++++++++++++++++++++++++++++--
>  arch/x86/kvm/svm/svm.h |   2 +
>  2 files changed, 192 insertions(+), 6 deletions(-)
>
> diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index 
> 7fc0fad87054..089af21a4efe 100644
> --- a/arch/x86/kvm/svm/sev.c
> +++ b/arch/x86/kvm/svm/sev.c
> @@ -343,6 +343,7 @@ static int sev_guest_init(struct kvm *kvm, struct 
> kvm_sev_cmd *argp)
>
>                 spin_lock_init(&sev->psc_lock);
>                 ret = sev_snp_init(&argp->error);
> +               mutex_init(&sev->guest_req_lock);
>         } else {
>                 ret = sev_platform_init(&argp->error);
>         }
> @@ -1884,23 +1885,39 @@ int sev_vm_move_enc_context_from(struct kvm 
> *kvm, unsigned int source_fd)
>
>  static void *snp_context_create(struct kvm *kvm, struct kvm_sev_cmd 
> *argp)  {
> +       void *context = NULL, *certs_data = NULL, *resp_page = NULL;

>Is the NULL setting here unnecessary since all of these are set via functions snp_alloc_firmware_page(), kmalloc(), and
>snp_alloc_firmware_page() respectively?

Yes, they don't need to be set to NULL.

> +       struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;
>         struct sev_data_snp_gctx_create data = {};
> -       void *context;
>         int rc;
>
> +       /* Allocate memory used for the certs data in SNP guest request */
> +       certs_data = kmalloc(SEV_FW_BLOB_MAX_SIZE, GFP_KERNEL_ACCOUNT);
> +       if (!certs_data)
> +               return NULL;

>I think we want to use kzalloc() here to ensure we never give the guest uninitialized kernel memory.

Yes.

> +
>         /* Allocate memory for context page */
>         context = snp_alloc_firmware_page(GFP_KERNEL_ACCOUNT);
>         if (!context)
> -               return NULL;
> +               goto e_free;
> +
> +       /* Allocate a firmware buffer used during the guest command handling. */
> +       resp_page = snp_alloc_firmware_page(GFP_KERNEL_ACCOUNT);
> +       if (!resp_page)
> +               goto e_free;

>|resp_page| doesn't appear to be used anywhere?

>
>         data.gctx_paddr = __psp_pa(context);
>         rc = __sev_issue_cmd(argp->sev_fd, SEV_CMD_SNP_GCTX_CREATE, &data, &argp->error);
> -       if (rc) {
> -               snp_free_firmware_page(context);
> -               return NULL;
> -       }
> +       if (rc)
> +               goto e_free;
> +
> +       sev->snp_certs_data = certs_data;
>
>         return context;
> +
> +e_free:
> +       snp_free_firmware_page(context);
> +       kfree(certs_data);
> +       return NULL;
>  }
>
>  static int snp_bind_asid(struct kvm *kvm, int *error) @@ -2565,6 
> +2582,8 @@ static int snp_decommission_context(struct kvm *kvm)
>         snp_free_firmware_page(sev->snp_context);
>         sev->snp_context = NULL;
>
> +       kfree(sev->snp_certs_data);
> +
>         return 0;
>  }
>
> @@ -3077,6 +3096,8 @@ static int sev_es_validate_vmgexit(struct vcpu_svm *svm, u64 *exit_code)
>         case SVM_VMGEXIT_UNSUPPORTED_EVENT:
>         case SVM_VMGEXIT_HV_FEATURES:
>         case SVM_VMGEXIT_PSC:
> +       case SVM_VMGEXIT_GUEST_REQUEST:
> +       case SVM_VMGEXIT_EXT_GUEST_REQUEST:
>                 break;
>         default:
>                 reason = GHCB_ERR_INVALID_EVENT; @@ -3502,6 +3523,155 
> @@ static unsigned long snp_handle_page_state_change(struct vcpu_svm *svm)
>         return rc ? map_to_psc_vmgexit_code(rc) : 0;  }
>
> +static unsigned long snp_setup_guest_buf(struct vcpu_svm *svm,
> +                                        struct sev_data_snp_guest_request *data,
> +                                        gpa_t req_gpa, gpa_t 
> +resp_gpa) {
> +       struct kvm_vcpu *vcpu = &svm->vcpu;
> +       struct kvm *kvm = vcpu->kvm;
> +       kvm_pfn_t req_pfn, resp_pfn;
> +       struct kvm_sev_info *sev;
> +
> +       sev = &to_kvm_svm(kvm)->sev_info;

>This is normally done at declaration in this file. Why not here?

>      struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;
Ok.

> +
> +       if (!IS_ALIGNED(req_gpa, PAGE_SIZE) || !IS_ALIGNED(resp_gpa, PAGE_SIZE))
> +               return SEV_RET_INVALID_PARAM;
> +
> +       req_pfn = gfn_to_pfn(kvm, gpa_to_gfn(req_gpa));
> +       if (is_error_noslot_pfn(req_pfn))
> +               return SEV_RET_INVALID_ADDRESS;
> +
> +       resp_pfn = gfn_to_pfn(kvm, gpa_to_gfn(resp_gpa));
> +       if (is_error_noslot_pfn(resp_pfn))
> +               return SEV_RET_INVALID_ADDRESS;
> +
> +       if (rmp_make_private(resp_pfn, 0, PG_LEVEL_4K, 0, true))
> +               return SEV_RET_INVALID_ADDRESS;
> +
> +       data->gctx_paddr = __psp_pa(sev->snp_context);
> +       data->req_paddr = __sme_set(req_pfn << PAGE_SHIFT);
> +       data->res_paddr = __sme_set(resp_pfn << PAGE_SHIFT);
> +
> +       return 0;
> +}
> +
> +static void snp_cleanup_guest_buf(struct sev_data_snp_guest_request 
> +*data, unsigned long *rc) {
> +       u64 pfn = __sme_clr(data->res_paddr) >> PAGE_SHIFT;
> +       int ret;
> +
> +       ret = snp_page_reclaim(pfn);
> +       if (ret)
> +               *rc = SEV_RET_INVALID_ADDRESS;

>Do we need a diff error code here? This means the page the guest gives us is now "stuck" in the FW owned state. How would the guest know this is the case? We return the exact same error in snp_setup_guest_buf() if the resp_gpa isn't page aligned >so now if the guest ever sees a SEV_RET_INVALID_ADDRESS I think its only safe option is to either try and page_state_change it to a know state or mark it as unusable memory.

If snp_page_reclaim() fails, it will invoke snp_leak_pages() which will indicate memory failure and trigger memory recovery mechanisms and that should drop the pages or mark them unusable.

> +
> +       ret = rmp_make_shared(pfn, PG_LEVEL_4K);
> +       if (ret)
> +               *rc = SEV_RET_INVALID_ADDRESS;

>Ditto here I think we need some way to signal to the guest what state this page is on return to guest execution.

>Also these errors shadow over FW successes, this means the guest's guest-request-sequence-numbers are now out of sync meaning this VMPCK is unusable less the guest risk reusing the AES IV (which would break the confidentiality/integrity). >Should we have a way to signal to the guest the FW has successfully run your command but we could not change the page states back correctly, so the guest should increment their sequence numbers.

Yes, that is an important observation, and the sequence numbers are now out of sync.
But as this is an error path, so what's the guarantee that the next guest message request will succeed completely,  isn’t it better to let the 
FW reject any subsequent guest messages once it has detected that the sequence numbers are out of sync ? 

> +}
> +
> +static void snp_handle_guest_request(struct vcpu_svm *svm, gpa_t 
> +req_gpa, gpa_t resp_gpa) {
> +       struct sev_data_snp_guest_request data = {0};
> +       struct kvm_vcpu *vcpu = &svm->vcpu;
> +       struct kvm *kvm = vcpu->kvm;
> +       struct kvm_sev_info *sev;
> +       unsigned long rc;
> +       int err;
> +
> +       if (!sev_snp_guest(vcpu->kvm)) {
> +               rc = SEV_RET_INVALID_GUEST;
> +               goto e_fail;
> +       }
> +
> +       sev = &to_kvm_svm(kvm)->sev_info;

>Ditto why not due this above?
Ok.

> +
> +       mutex_lock(&sev->guest_req_lock);
> +
> +       rc = snp_setup_guest_buf(svm, &data, req_gpa, resp_gpa);
> +       if (rc)
> +               goto unlock;
> +
> +       rc = sev_issue_cmd(kvm, SEV_CMD_SNP_GUEST_REQUEST, &data, &err);
> +       if (rc)
> +               /* use the firmware error code */
> +               rc = err;
> +
> +       snp_cleanup_guest_buf(&data, &rc);
> +
> +unlock:
> +       mutex_unlock(&sev->guest_req_lock);
> +
> +e_fail:
> +       svm_set_ghcb_sw_exit_info_2(vcpu, rc); }
> +
> +static void snp_handle_ext_guest_request(struct vcpu_svm *svm, gpa_t 
> +req_gpa, gpa_t resp_gpa) {
> +       struct sev_data_snp_guest_request req = {0};
> +       struct kvm_vcpu *vcpu = &svm->vcpu;
> +       struct kvm *kvm = vcpu->kvm;
> +       unsigned long data_npages;
> +       struct kvm_sev_info *sev;
> +       unsigned long rc, err;
> +       u64 data_gpa;
> +
> +       if (!sev_snp_guest(vcpu->kvm)) {
> +               rc = SEV_RET_INVALID_GUEST;
> +               goto e_fail;
> +       }
> +
> +       sev = &to_kvm_svm(kvm)->sev_info;
> +
> +       data_gpa = vcpu->arch.regs[VCPU_REGS_RAX];
> +       data_npages = vcpu->arch.regs[VCPU_REGS_RBX];
> +
> +       if (!IS_ALIGNED(data_gpa, PAGE_SIZE)) {
> +               rc = SEV_RET_INVALID_ADDRESS;
> +               goto e_fail;
> +       }
> +
> +       /* Verify that requested blob will fit in certificate buffer */
> +       if ((data_npages << PAGE_SHIFT) > SEV_FW_BLOB_MAX_SIZE) {
> +               rc = SEV_RET_INVALID_PARAM;
> +               goto e_fail;
> +       }
> +
> +       mutex_lock(&sev->guest_req_lock);
> +
> +       rc = snp_setup_guest_buf(svm, &req, req_gpa, resp_gpa);
> +       if (rc)
> +               goto unlock;
> +
> +       rc = snp_guest_ext_guest_request(&req, (unsigned long)sev->snp_certs_data,
> +                                        &data_npages, &err);
> +       if (rc) {
> +               /*
> +                * If buffer length is small then return the expected
> +                * length in rbx.
> +                */
> +               if (err == SNP_GUEST_REQ_INVALID_LEN)
> +                       vcpu->arch.regs[VCPU_REGS_RBX] = data_npages;
> +
> +               /* pass the firmware error code */
> +               rc = err;
> +               goto cleanup;
> +       }
> +
> +       /* Copy the certificate blob in the guest memory */
> +       if (data_npages &&
> +           kvm_write_guest(kvm, data_gpa, sev->snp_certs_data, data_npages << PAGE_SHIFT))
> +               rc = SEV_RET_INVALID_ADDRESS;

>Since at this point the PSP FW has correctly executed the command and incremented the VMPCK sequence number I think we need another error signal here since this will tell the guest the PSP had an error so it will not know if the VMPCK sequence >number should be incremented.

Similarly as above, as this is an error path, so what's the guarantee that the next guest message request will succeed completely,  isn’t it better to let the 
FW reject any subsequent guest messages once it has detected that the sequence numbers are out of sync ?

> +
> +cleanup:
> +       snp_cleanup_guest_buf(&req, &rc);
> +
> +unlock:
> +       mutex_unlock(&sev->guest_req_lock);
> +
> +e_fail:
> +       svm_set_ghcb_sw_exit_info_2(vcpu, rc); }
> +
>  static int sev_handle_vmgexit_msr_protocol(struct vcpu_svm *svm)  {
>         struct vmcb_control_area *control = &svm->vmcb->control; @@ 
> -3753,6 +3923,20 @@ int sev_handle_vmgexit(struct kvm_vcpu *vcpu)
>                 svm_set_ghcb_sw_exit_info_2(vcpu, rc);
>                 break;
>         }
> +       case SVM_VMGEXIT_GUEST_REQUEST: {
> +               snp_handle_guest_request(svm, control->exit_info_1, 
> + control->exit_info_2);
> +
> +               ret = 1;
> +               break;
> +       }
> +       case SVM_VMGEXIT_EXT_GUEST_REQUEST: {
> +               snp_handle_ext_guest_request(svm,
> +                                            control->exit_info_1,
> +                                            control->exit_info_2);
> +
> +               ret = 1;
> +               break;
> +       }
>         case SVM_VMGEXIT_UNSUPPORTED_EVENT:
>                 vcpu_unimpl(vcpu,
>                             "vmgexit: unsupported event - 
> exit_info_1=%#llx, exit_info_2=%#llx\n", diff --git 
> a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h index 
> 3fd95193ed8d..3be24da1a743 100644
> --- a/arch/x86/kvm/svm/svm.h
> +++ b/arch/x86/kvm/svm/svm.h
> @@ -98,6 +98,8 @@ struct kvm_sev_info {
>         u64 snp_init_flags;
>         void *snp_context;      /* SNP guest context page */
>         spinlock_t psc_lock;
> +       void *snp_certs_data;
> +       struct mutex guest_req_lock;
>  };
>
>  struct kvm_svm {
> --
> 2.25.1
>

  reply	other threads:[~2022-06-27 19:03 UTC|newest]

Thread overview: 305+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-20 22:56 [PATCH Part2 v6 00/49] Add AMD Secure Nested Paging (SEV-SNP) Ashish Kalra
2022-06-20 22:59 ` [PATCH Part2 v6 01/49] x86/cpufeatures: Add SEV-SNP CPU feature Ashish Kalra
2022-06-21  8:58   ` Borislav Petkov
2022-06-20 22:59 ` [PATCH Part2 v6 02/49] iommu/amd: Introduce function to check SEV-SNP support Ashish Kalra
2022-06-21 15:28   ` Peter Gonda
2022-06-21 17:45     ` Kalra, Ashish
2022-06-21 17:50       ` Peter Gonda
2022-06-22  7:33         ` Suthikulpanit, Suravee
2022-08-25  1:28         ` jarkko
2022-08-25  1:30           ` Jarkko Sakkinen
2022-08-26 18:54             ` Kalra, Ashish
2022-08-28  4:18               ` Jarkko Sakkinen
2022-07-01 10:42   ` Borislav Petkov
2022-07-05 13:56     ` Kalra, Ashish
2022-07-05 14:33       ` Borislav Petkov
2022-07-05 14:53         ` Kalra, Ashish
2022-06-20 23:02 ` [PATCH Part2 v6 03/49] x86/sev: Add the host SEV-SNP initialization support Ashish Kalra
2022-06-21 15:47   ` Peter Gonda
2022-06-21 17:59     ` Kalra, Ashish
2022-06-23 20:48   ` Marc Orr
2022-06-23 22:22     ` Kalra, Ashish
2022-07-17 10:01   ` Borislav Petkov
2022-07-19  3:56     ` Kalra, Ashish
2022-07-19  8:38       ` Borislav Petkov
2022-07-19 11:34         ` Kalra, Ashish
2022-06-20 23:02 ` [PATCH Part2 v6 04/49] x86/sev: set SYSCFG.MFMD Ashish Kalra
2022-06-23 21:00   ` Marc Orr
2022-07-21 11:29   ` Borislav Petkov
2022-08-01 21:16     ` Kalra, Ashish
2022-06-20 23:02 ` [PATCH Part2 v6 05/49] x86/sev: Add RMP entry lookup helpers Ashish Kalra
2022-06-22 14:13   ` Dave Hansen
2022-06-22 14:22     ` Kalra, Ashish
2022-06-22 14:29       ` Dave Hansen
2022-06-22 18:15         ` Kalra, Ashish
2022-06-22 18:17           ` Dave Hansen
2022-06-22 18:34             ` Kalra, Ashish
2022-06-22 18:42               ` Dave Hansen
2022-06-22 19:43                 ` Kalra, Ashish
2022-06-22 19:49                   ` Dave Hansen
2022-06-22 20:15                     ` Kalra, Ashish
2022-06-22 20:58                       ` Kalra, Ashish
2022-06-23 22:36                       ` Sean Christopherson
2022-06-23 22:43                         ` Kalra, Ashish
2022-07-22 11:35                           ` Borislav Petkov
2022-07-22 19:04                             ` Sean Christopherson
2022-07-22 19:25                               ` Borislav Petkov
2022-07-22 19:38                                 ` Borislav Petkov
2022-08-01 21:53                                   ` Kalra, Ashish
2022-07-22 22:16                                 ` Sean Christopherson
2022-07-22 22:25                                   ` Borislav Petkov
2022-08-01 21:50                                 ` Kalra, Ashish
2022-06-23 21:30   ` Marc Orr
2022-07-22 11:43   ` Borislav Petkov
2022-08-01 21:45     ` Kalra, Ashish
2022-07-25 14:32   ` Borislav Petkov
2022-08-01 22:04     ` Kalra, Ashish
2022-06-20 23:02 ` [PATCH Part2 v6 06/49] x86/sev: Add helper functions for RMPUPDATE and PSMASH instruction Ashish Kalra
2022-06-21 16:40   ` Dr. David Alan Gilbert
2022-06-21 17:38     ` Kalra, Ashish
2022-06-22 18:17       ` Kalra, Ashish
2022-06-28 10:50         ` Dr. David Alan Gilbert
2022-06-28 17:57           ` Kalra, Ashish
2022-06-28 18:58             ` Dr. David Alan Gilbert
2022-06-28 19:03             ` Dave Hansen
2022-07-25 13:24             ` Borislav Petkov
2022-08-01 23:32               ` Kalra, Ashish
2022-08-02 14:14                 ` Borislav Petkov
2022-06-22 14:26   ` Dave Hansen
2022-06-22 18:04     ` Kalra, Ashish
2022-07-24 17:31   ` Dov Murik
2022-08-02  4:49     ` Kalra, Ashish
2022-07-25 14:36   ` Borislav Petkov
2022-08-01 22:31     ` Kalra, Ashish
2022-08-03 20:26       ` Borislav Petkov
2022-06-20 23:03 ` [PATCH Part2 v6 07/49] x86/sev: Invalid pages from direct map when adding it to RMP table Ashish Kalra
2022-06-24  0:06   ` Marc Orr
2022-07-27 17:01   ` Borislav Petkov
2022-08-01 23:57     ` Kalra, Ashish
2022-08-04 12:11       ` Borislav Petkov
2022-11-02  3:12         ` Kalra, Ashish
2022-11-02 11:27           ` Borislav Petkov
2022-12-19 15:00     ` Michael Roth
2022-12-19 20:08       ` Borislav Petkov
2022-12-27 21:49         ` Kalra, Ashish
2022-12-29 17:09           ` Borislav Petkov
2023-01-05 21:46             ` Kalra, Ashish
2023-01-05 22:08           ` Marc Orr
2023-01-05 22:27             ` Kalra, Ashish
2023-01-05 22:31               ` Marc Orr
2022-12-30 15:19         ` Mike Rapoport
2022-06-20 23:03 ` [PATCH Part2 v6 08/49] x86/traps: Define RMP violation #PF error code Ashish Kalra
2022-08-08 13:13   ` Borislav Petkov
2022-06-20 23:03 ` [PATCH Part2 v6 09/49] x86/fault: Add support to handle the RMP fault for user address Ashish Kalra
2022-06-22 14:29   ` Jeremi Piotrowski
2022-07-12 11:57   ` Jarkko Sakkinen
2022-07-12 14:29     ` Kalra, Ashish
2022-07-12 14:54       ` Jarkko Sakkinen
2022-08-09 16:55   ` Borislav Petkov
2022-08-10  3:59     ` Kalra, Ashish
2022-08-10  9:42       ` Borislav Petkov
2022-08-10 22:00         ` Kalra, Ashish
2022-08-11 14:27           ` Borislav Petkov
2022-09-01 20:32           ` Kalra, Ashish
2022-09-02  6:52             ` Borislav Petkov
2022-09-02 15:33               ` Kalra, Ashish
2022-09-03  4:25                 ` Borislav Petkov
2022-09-03  5:51                   ` Kalra, Ashish
2022-09-03  6:57                     ` Kalra, Ashish
2022-09-03  8:31                       ` Boris Petkov
2022-09-03 17:30                         ` Kalra, Ashish
2022-09-04  6:37                           ` Borislav Petkov
2022-09-06 14:06                             ` Kalra, Ashish
2022-09-06 10:25     ` Jarkko Sakkinen
2022-09-06 10:33       ` Jarkko Sakkinen
2022-09-06 13:54       ` Marc Orr
2022-09-06 14:17         ` Kalra, Ashish
2022-09-06 15:06           ` Michael Roth
2022-09-06 16:39             ` Kalra, Ashish
2022-09-07  5:14               ` Marc Orr
2022-09-06 15:44           ` Jarkko Sakkinen
2022-09-08  7:46             ` Jarkko Sakkinen
2022-09-08  7:57               ` Jarkko Sakkinen
2022-08-11 15:15   ` vbabka
2022-09-06  2:30   ` Dave Hansen
2022-06-20 23:03 ` [PATCH Part2 v6 10/49] x86/fault: Add support to dump RMP entry on fault Ashish Kalra
2022-06-22 14:33   ` Jeremi Piotrowski
2022-06-22 14:42     ` Jeremi Piotrowski
2022-06-22 18:08       ` Kalra, Ashish
2022-08-23 13:21   ` Borislav Petkov
2022-06-20 23:04 ` [PATCH Part2 v6 11/49] crypto:ccp: Define the SEV-SNP commands Ashish Kalra
2022-09-20 13:03   ` Borislav Petkov
2022-09-20 13:46     ` Kalra, Ashish
2022-09-20 14:04       ` Borislav Petkov
2022-06-20 23:04 ` [PATCH Part2 v6 12/49] crypto: ccp: Add support to initialize the AMD-SP for SEV-SNP Ashish Kalra
2022-10-01 17:33   ` Borislav Petkov
2022-10-14 21:09     ` Kalra, Ashish
2022-10-14 21:31       ` Kalra, Ashish
2022-10-25  8:56         ` Borislav Petkov
2022-10-19 18:48       ` Kalra, Ashish
2022-10-23 21:17         ` Jarkko Sakkinen
2022-10-25  9:07         ` Borislav Petkov
2022-10-25  8:30       ` Borislav Petkov
2022-06-20 23:04 ` [PATCH Part2 v6 13/49] crypto:ccp: Provide APIs to issue SEV-SNP commands Ashish Kalra
2022-06-21 21:43   ` Peter Gonda
2022-06-22  1:44     ` Kalra, Ashish
2022-08-02 10:52     ` Jarkko Sakkinen
2022-10-01 20:17   ` Borislav Petkov
2022-10-03 14:38     ` Kalra, Ashish
2022-10-03 16:16       ` Borislav Petkov
2022-10-03 17:11         ` Kalra, Ashish
2022-10-03 17:45           ` Borislav Petkov
2022-10-03 18:01             ` Peter Gonda
2022-10-03 18:16               ` Borislav Petkov
2022-10-03 18:43                 ` Kalra, Ashish
2022-10-03 18:53                   ` Borislav Petkov
2022-06-20 23:05 ` [PATCH Part2 v6 14/49] crypto: ccp: Handle the legacy TMR allocation when SNP is enabled Ashish Kalra
2022-06-21 18:11   ` Peter Gonda
2022-06-21 20:17     ` Kalra, Ashish
2022-06-24 14:19       ` Peter Gonda
2022-08-02 12:17       ` jarkko
2022-08-02 11:17   ` Jarkko Sakkinen
2022-10-13 15:15   ` Borislav Petkov
2022-10-14 20:00     ` Kalra, Ashish
2022-10-25 10:25       ` Borislav Petkov
2022-10-31 20:10         ` Kalra, Ashish
2022-10-31 21:15           ` Borislav Petkov
2022-10-31 21:58             ` Kalra, Ashish
2022-11-02 11:22               ` Borislav Petkov
2022-11-14 23:36                 ` Kalra, Ashish
2022-11-15 14:26                   ` Borislav Petkov
2022-11-15 15:14                   ` Vlastimil Babka
2022-11-15 15:22                     ` Borislav Petkov
2022-11-15 16:27                       ` Borislav Petkov
2022-11-15 22:44                         ` Kalra, Ashish
2022-11-15 17:24                     ` Kalra, Ashish
2022-11-15 18:15                       ` Kalra, Ashish
2022-11-16  9:08                         ` Vlastimil Babka
2022-11-16 10:19                           ` Kalra, Ashish
2022-11-16 10:25                             ` Vlastimil Babka
2022-11-16 18:01                               ` Kalra, Ashish
2022-11-16 18:33                                 ` Borislav Petkov
2022-11-16 18:53                                   ` Kalra, Ashish
2022-11-16 19:09                                     ` Borislav Petkov
2022-11-16 19:23                                       ` Kalra, Ashish
2022-11-16 18:32                               ` Dave Hansen
2022-11-16  5:19                     ` HORIGUCHI NAOYA(堀口 直也)
2022-11-16 10:28                       ` Kalra, Ashish
2022-11-16 23:41                         ` HORIGUCHI NAOYA(堀口 直也)
2022-11-17 20:56       ` Kalra, Ashish
2022-11-20 21:34         ` Borislav Petkov
2022-11-22  0:37           ` Kalra, Ashish
2022-11-22 10:17             ` Borislav Petkov
2022-11-22 10:32               ` Kalra, Ashish
2022-11-22 10:44                 ` Borislav Petkov
2022-11-22 11:44                   ` Kalra, Ashish
2022-11-23 11:40                     ` Borislav Petkov
2022-11-23 18:32                       ` Kalra, Ashish
2022-06-20 23:05 ` [PATCH Part2 v6 15/49] crypto: ccp: Handle the legacy SEV command " Ashish Kalra
2022-06-20 23:05 ` [PATCH Part2 v6 16/49] crypto: ccp: Add the SNP_PLATFORM_STATUS command Ashish Kalra
2022-06-20 23:05 ` [PATCH Part2 v6 17/49] crypto: ccp: Add the SNP_{SET,GET}_EXT_CONFIG command Ashish Kalra
2022-06-21 22:13   ` Peter Gonda
2022-06-22  1:58     ` Kalra, Ashish
2022-08-02 12:31   ` Jarkko Sakkinen
2022-08-08 19:27     ` Dionna Amalie Glaze
2022-08-08 21:32       ` Tom Lendacky
2022-08-08 23:25         ` Dionna Amalie Glaze
2022-06-20 23:06 ` [PATCH Part2 v6 18/49] crypto: ccp: Provide APIs to query extended attestation report Ashish Kalra
2022-06-21 22:30   ` Peter Gonda
2022-08-02 12:39   ` Jarkko Sakkinen
2022-06-20 23:06 ` [PATCH Part2 v6 19/49] KVM: SVM: Add support to handle AP reset MSR protocol Ashish Kalra
2022-06-20 23:06 ` [PATCH Part2 v6 20/49] KVM: SVM: Provide the Hypervisor Feature support VMGEXIT Ashish Kalra
2022-06-20 23:06 ` [PATCH Part2 v6 21/49] KVM: SVM: Make AVIC backing, VMSA and VMCB memory allocation SNP safe Ashish Kalra
2022-08-04 11:32   ` Vlastimil Babka
2022-06-20 23:07 ` [PATCH Part2 v6 22/49] KVM: SVM: Add initial SEV-SNP support Ashish Kalra
2022-06-20 23:07 ` [PATCH Part2 v6 23/49] KVM: SVM: Add KVM_SNP_INIT command Ashish Kalra
2022-06-20 23:07 ` [PATCH Part2 v6 24/49] KVM: SVM: Add KVM_SEV_SNP_LAUNCH_START command Ashish Kalra
2022-06-24 14:42   ` Peter Gonda
2022-06-24 18:17     ` Kalra, Ashish
2022-08-02 13:19   ` Jarkko Sakkinen
2022-06-20 23:07 ` [PATCH Part2 v6 25/49] KVM: SVM: Disallow registering memory range from HugeTLB for SNP guest Ashish Kalra
2022-08-04 13:37   ` Vlastimil Babka
2022-06-20 23:08 ` [PATCH Part2 v6 26/49] KVM: SVM: Add KVM_SEV_SNP_LAUNCH_UPDATE command Ashish Kalra
2022-06-24 14:33   ` Peter Gonda
2022-06-29 18:14     ` Kalra, Ashish
2022-08-02 12:50   ` Jarkko Sakkinen
2022-08-09 13:55   ` Sabin Rapan
2022-08-15 23:04     ` Kalra, Ashish
2022-06-20 23:08 ` [PATCH Part2 v6 27/49] KVM: SVM: Mark the private vma unmerable for SEV-SNP guests Ashish Kalra
2022-06-22 10:29   ` Dr. David Alan Gilbert
2022-08-04 10:56   ` Vlastimil Babka
2022-06-20 23:08 ` [PATCH Part2 v6 28/49] KVM: SVM: Add KVM_SEV_SNP_LAUNCH_FINISH command Ashish Kalra
2022-07-11 14:05   ` Peter Gonda
2022-07-11 22:41     ` Kalra, Ashish
2022-07-12 14:45       ` Peter Gonda
2022-07-12 15:22         ` Kalra, Ashish
2022-07-12 16:04           ` Peter Gonda
2022-07-12 17:40         ` Tom Lendacky
2022-07-13 14:59           ` Peter Gonda
2022-08-02 13:28   ` Jarkko Sakkinen
2022-09-08 14:55   ` [[PATCH for v6]] KVM: SEV: fix snp_launch_finish Harald Hoyer
2022-09-08 15:11     ` Sean Christopherson
2022-09-08 20:34       ` Jarkko Sakkinen
2022-09-09  8:04   ` [PATCH Part2 v6 28/49] KVM: SVM: Add KVM_SEV_SNP_LAUNCH_FINISH command Harald Hoyer
2022-06-20 23:08 ` [PATCH Part2 v6 29/49] KVM: X86: Keep the NPT and RMP page level in sync Ashish Kalra
2022-07-12 16:44   ` Jarkko Sakkinen
2022-06-20 23:09 ` [PATCH Part2 v6 30/49] KVM: x86/mmu: Introduce kvm_mmu_map_tdp_page() for use by TDX and SNP Ashish Kalra
2022-06-20 23:09 ` [PATCH Part2 v6 31/49] KVM: x86: Introduce kvm_mmu_get_tdp_walk() for SEV-SNP use Ashish Kalra
2022-09-07 17:45   ` Alper Gun
2022-06-20 23:09 ` [PATCH Part2 v6 32/49] KVM: x86: Define RMP page fault error bits for #NPF Ashish Kalra
2022-06-20 23:10 ` [PATCH Part2 v6 33/49] KVM: x86: Update page-fault trace to log full 64-bit error code Ashish Kalra
2022-07-25 11:19   ` Vlastimil Babka
2022-06-20 23:10 ` [PATCH Part2 v6 34/49] KVM: SVM: Do not use long-lived GHCB map while setting scratch area Ashish Kalra
2022-06-20 23:10 ` [PATCH Part2 v6 35/49] KVM: SVM: Remove the long-lived GHCB host map Ashish Kalra
2022-06-24 15:12   ` Peter Gonda
2022-06-24 20:14     ` Kalra, Ashish
2022-07-07 20:06       ` Peter Gonda
2022-07-07 20:31         ` Kalra, Ashish
2022-07-08 15:54           ` Peter Gonda
2022-07-08 15:59             ` Kalra, Ashish
2022-06-20 23:11 ` [PATCH Part2 v6 36/49] KVM: SVM: Add support to handle GHCB GPA register VMGEXIT Ashish Kalra
2022-06-28 13:28   ` Dr. David Alan Gilbert
2022-06-20 23:11 ` [PATCH Part2 v6 37/49] KVM: SVM: Add support to handle MSR based Page State Change VMGEXIT Ashish Kalra
2022-08-19 16:54   ` Peter Gonda
2022-09-19 17:53     ` Alper Gun
2022-09-19 21:38       ` Tom Lendacky
2022-09-19 22:02         ` Alper Gun
2022-09-19 22:18           ` Tom Lendacky
2022-09-19 23:46             ` Ashish Kalra
2022-09-26 15:19               ` Peter Gonda
2022-10-12 20:15                 ` Kalra, Ashish
2022-10-12 22:57                   ` Michael Roth
2022-06-20 23:11 ` [PATCH Part2 v6 38/49] KVM: SVM: Add support to handle " Ashish Kalra
2022-06-20 23:12 ` [PATCH Part2 v6 39/49] KVM: SVM: Introduce ops for the post gfn map and unmap Ashish Kalra
2022-08-18  3:47   ` Alper Gun
2022-11-17 20:18     ` Peter Gonda
2022-11-17 20:28       ` Kalra, Ashish
2022-11-17 21:36       ` Kalra, Ashish
2022-06-20 23:12 ` [PATCH Part2 v6 40/49] KVM: x86: Export the kvm_zap_gfn_range() for the SNP use Ashish Kalra
2022-06-20 23:13 ` [PATCH Part2 v6 41/49] KVM: SVM: Add support to handle the RMP nested page fault Ashish Kalra
2022-07-12 12:33   ` Jarkko Sakkinen
2022-07-12 12:45     ` Jarkko Sakkinen
2022-07-12 12:48       ` Jarkko Sakkinen
2022-07-12 15:32         ` Kalra, Ashish
2022-10-10 22:03   ` Alper Gun
2022-10-11  2:32     ` Kalra, Ashish
2022-10-12 22:53       ` Alper Gun
2022-10-13 15:00         ` Kalra, Ashish
2022-06-20 23:13 ` [PATCH Part2 v6 42/49] KVM: SVM: Provide support for SNP_GUEST_REQUEST NAE event Ashish Kalra
2022-06-24 16:25   ` Peter Gonda
2022-06-27 19:03     ` Kalra, Ashish [this message]
2022-06-29 19:15       ` Kalra, Ashish
2022-07-08 15:28         ` Peter Gonda
2022-10-21 19:06   ` Tom Lendacky
2022-10-21 21:12     ` Kalra, Ashish
2022-10-21 21:30       ` Tom Lendacky
2022-10-21 21:56         ` Kalra, Ashish
2022-06-20 23:13 ` [PATCH Part2 v6 43/49] KVM: SVM: Use a VMSA physical address variable for populating VMCB Ashish Kalra
2022-06-20 23:14 ` [PATCH Part2 v6 44/49] KVM: SVM: Support SEV-SNP AP Creation NAE event Ashish Kalra
2022-06-20 23:14 ` [PATCH Part2 v6 45/49] KVM: SVM: Add module parameter to enable the SEV-SNP Ashish Kalra
2022-06-20 23:14 ` [PATCH Part2 v6 46/49] ccp: add support to decrypt the page Ashish Kalra
2022-06-20 23:14 ` [PATCH Part2 v6 47/49] *fix for stale per-cpu pointer due to cond_resched during ghcb mapping Ashish Kalra
2022-06-24 16:35   ` Peter Gonda
2022-06-24 16:44     ` Kalra, Ashish
2022-06-20 23:15 ` [PATCH Part2 v6 48/49] *debug: warn and retry failed rmpupdates Ashish Kalra
2022-06-20 23:15 ` [PATCH Part2 v6 49/49] KVM: SVM: Sync the GHCB scratch buffer using already mapped ghcb Ashish Kalra

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=SN6PR12MB2767B9F438A0F6413780F73E8EB99@SN6PR12MB2767.namprd12.prod.outlook.com \
    --to=ashish.kalra@amd.com \
    --cc=Michael.Roth@amd.com \
    --cc=Thomas.Lendacky@amd.com \
    --cc=ak@linux.intel.com \
    --cc=alpergun@google.com \
    --cc=ardb@kernel.org \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=dgilbert@redhat.com \
    --cc=dovmurik@linux.ibm.com \
    --cc=hpa@zytor.com \
    --cc=jarkko@kernel.org \
    --cc=jmattson@google.com \
    --cc=jroedel@suse.de \
    --cc=kirill@shutemov.name \
    --cc=kvm@vger.kernel.org \
    --cc=linux-coco@lists.linux.dev \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=luto@kernel.org \
    --cc=marcorr@google.com \
    --cc=mingo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --cc=pgonda@google.com \
    --cc=rientjes@google.com \
    --cc=sathyanarayanan.kuppuswamy@linux.intel.com \
    --cc=seanjc@google.com \
    --cc=slp@redhat.com \
    --cc=srinivas.pandruvada@linux.intel.com \
    --cc=tglx@linutronix.de \
    --cc=tobin@ibm.com \
    --cc=tony.luck@intel.com \
    --cc=vbabka@suse.cz \
    --cc=vkuznets@redhat.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).