All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Kalra, Ashish" <ashish.kalra@amd.com>
To: Alexey Kardashevskiy <aik@amd.com>, kvm@vger.kernel.org
Cc: x86@kernel.org, linux-kernel@vger.kernel.org,
	linux-crypto@vger.kernel.org,
	Tom Lendacky <thomas.lendacky@amd.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Sean Christopherson <seanjc@google.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Michael Roth <michael.roth@amd.com>,
	John Allen <john.allen@amd.com>, Ingo Molnar <mingo@redhat.com>,
	Herbert Xu <herbert@gondor.apana.org.au>,
	Dionna Glaze <dionnaglaze@google.com>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Brijesh Singh <brijesh.singh@amd.com>,
	Borislav Petkov <bp@alien8.de>, "H. Peter Anvin" <hpa@zytor.com>,
	"David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH kernel] KVM: SVM: Fix SVM_VMGEXIT_EXT_GUEST_REQUEST to follow the rest of API
Date: Wed, 8 Feb 2023 15:50:53 -0600	[thread overview]
Message-ID: <8ad433cf-36bc-63e8-4f8c-13e2a283c61c@amd.com> (raw)
In-Reply-To: <ff0ffddf-9a4b-e1cd-7c34-73412c89ded6@amd.com>

Hello Alexey,

On 2/6/2023 7:24 PM, Alexey Kardashevskiy wrote:
> 
> 
> On 07/02/2023 08:57, Kalra, Ashish wrote:
>> On 2/5/2023 9:13 PM, Alexey Kardashevskiy wrote:
>>> When SVM VM is up, KVM uses sev_issue_cmd_external_user() with an open
>>> /dev/sev fd which ensures that the SVM initialization was done 
>>> correctly.
>>> The only helper not following the scheme is 
>>> snp_guest_ext_guest_request()
>>> which bypasses the fd check.
>>>
>>> Change the SEV API to require passing a file.
>>>
>>> Handle errors with care in the SNP Extended Guest Request handler
>>> (snp_handle_ext_guest_request()) as there are actually 3 types of 
>>> errors:
>>> - @rc: return code SEV device's sev_issue_cmd() which is int==int32;
>>> - @err: a psp return code in sev_issue_cmd(), also int==int32 (probably
>>> a mistake but kvm_sev_cmd::error uses __u32 for some time now);
>>> - (added by this) @exitcode: GHCB's exit code sw_exit_info_2, uint64.
>>>
>>> Use the right types, remove cast to int* and return ENOSPC from SEV
>>> device for converting it to the GHCB's exit code
>>> SNP_GUEST_REQ_INVALID_LEN==BIT(32).
>>>
>>> Fixes: 17f1d0c995ac ("KVM: SVM: Provide support for SNP_GUEST_REQUEST 
>>> NAE event")
>>> While at this, preserve the original error in snp_cleanup_guest_buf().
>>>
>>> Signed-off-by: Alexey Kardashevskiy <aik@amd.com>
>>> ---
>>>
>>> This can easily be squashed into what it fixes.
>>>
>>> The patch is made for
>>> https://github.com/AMDESE/linux/commits/upmv10-host-snp-v7-rfc
>>> ---
>>>   include/linux/psp-sev.h      | 62 +++++++++++---------
>>>   arch/x86/kvm/svm/sev.c       | 50 +++++++++++-----
>>>   drivers/crypto/ccp/sev-dev.c | 11 ++--
>>>   3 files changed, 73 insertions(+), 50 deletions(-)
>>>
>>> diff --git a/include/linux/psp-sev.h b/include/linux/psp-sev.h
>>> index 970a9de0ed20..466b1a6e7d7b 100644
>>> --- a/include/linux/psp-sev.h
>>> +++ b/include/linux/psp-sev.h
>>> @@ -848,6 +848,36 @@ int sev_platform_status(struct 
>>> sev_user_data_status *status, int *error);
>>>   int sev_issue_cmd_external_user(struct file *filep, unsigned int id,
>>>                   void *data, int *error);
>>> +/**
>>> + * sev_issue_cmd_external_user_cert - issue SEV command by other 
>>> driver with a file
>>> + * handle and return certificates set onto SEV device via 
>>> SNP_SET_EXT_CONFIG;
>>> + * intended for use by the SNP extended guest request command defined
>>> + * in the GHCB specification.
>>> + *
>>> + * @filep - SEV device file pointer
>>> + * @cmd - command to issue
>>> + * @data - command buffer
>>> + * @vaddr: address where the certificate blob need to be copied.
>>> + * @npages: number of pages for the certificate blob.
>>> + *    If the specified page count is less than the certificate blob 
>>> size, then the
>>> + *    required page count is returned with ENOSPC error code.
>>> + *    If the specified page count is more than the certificate blob 
>>> size, then
>>> + *    page count is updated to reflect the amount of valid data 
>>> copied in the
>>> + *    vaddr.
>>> + *
>>> + * @error: SEV command return code
>>> + *
>>> + * Returns:
>>> + * 0 if the sev successfully processed the command
>>> + * -%ENODEV    if the sev device is not available
>>> + * -%ENOTSUPP  if the sev does not support SEV
>>> + * -%ETIMEDOUT if the sev command timed out
>>> + * -%EIO       if the sev returned a non-zero return code
>>> + * -%ENOSPC    if the specified page count is too small
>>> + */
>>> +int sev_issue_cmd_external_user_cert(struct file *filep, unsigned 
>>> int cmd, void *data,
>>> +                     unsigned long vaddr, unsigned long *npages, int 
>>> *error);
>>> +
>>>   /**
>>>    * sev_guest_deactivate - perform SEV DEACTIVATE command
>>>    *
>>> @@ -945,32 +975,6 @@ void snp_free_firmware_page(void *addr);
>>>    */
>>>   void snp_mark_pages_offline(unsigned long pfn, unsigned int npages);
>>> -/**
>>> - * snp_guest_ext_guest_request - perform the SNP extended guest 
>>> request command
>>> - *  defined in the GHCB specification.
>>> - *
>>> - * @data: the input guest request structure
>>> - * @vaddr: address where the certificate blob need to be copied.
>>> - * @npages: number of pages for the certificate blob.
>>> - *    If the specified page count is less than the certificate blob 
>>> size, then the
>>> - *    required page count is returned with error code defined in the 
>>> GHCB spec.
>>> - *    If the specified page count is more than the certificate blob 
>>> size, then
>>> - *    page count is updated to reflect the amount of valid data 
>>> copied in the
>>> - *    vaddr.
>>> - *
>>> - * @sev_ret: sev command return code
>>> - *
>>> - * Returns:
>>> - * 0 if the sev successfully processed the command
>>> - * -%ENODEV    if the sev device is not available
>>> - * -%ENOTSUPP  if the sev does not support SEV
>>> - * -%ETIMEDOUT if the sev command timed out
>>> - * -%EIO       if the sev returned a non-zero return code
>>> - */
>>> -int snp_guest_ext_guest_request(struct sev_data_snp_guest_request 
>>> *data,
>>> -                unsigned long vaddr, unsigned long *npages,
>>> -                unsigned long *error);
>>> -
>>>   #else    /* !CONFIG_CRYPTO_DEV_SP_PSP */
>>>   static inline int
>>> @@ -1013,9 +1017,9 @@ static inline void 
>>> *snp_alloc_firmware_page(gfp_t mask)
>>>   static inline void snp_free_firmware_page(void *addr) { }
>>> -static inline int snp_guest_ext_guest_request(struct 
>>> sev_data_snp_guest_request *data,
>>> -                          unsigned long vaddr, unsigned long *n,
>>> -                          unsigned long *error)
>>> +static inline int sev_issue_cmd_external_user_cert(struct file 
>>> *filep, unsigned int cmd,
>>> +                           void *data, unsigned long vaddr,
>>> +                           unsigned long *npages, int *error)
>>>   {
>>>       return -ENODEV;
>>>   }
>>> diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c
>>> index d0e58cffd1ed..b268c35efab4 100644
>>> --- a/arch/x86/kvm/svm/sev.c
>>> +++ b/arch/x86/kvm/svm/sev.c
>>> @@ -394,6 +394,23 @@ static int sev_issue_cmd(struct kvm *kvm, int 
>>> id, void *data, int *error)
>>>       return __sev_issue_cmd(sev->fd, id, data, error);
>>>   }
>>> +static int sev_issue_cmd_cert(struct kvm *kvm, int id, void *data,
>>> +                  unsigned long vaddr, unsigned long *npages, int 
>>> *error)
>>> +{
>>> +    struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;
>>> +    struct fd f;
>>> +    int ret;
>>> +
>>> +    f = fdget(sev->fd);
>>> +    if (!f.file)
>>> +        return -EBADF;
>>> +
>>> +    ret = sev_issue_cmd_external_user_cert(f.file, id, data, vaddr, 
>>> npages, error);
>>> +
>>> +    fdput(f);
>>> +    return ret;
>>> +}
>>> +
>>>   static int sev_launch_start(struct kvm *kvm, struct kvm_sev_cmd *argp)
>>>   {
>>>       struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;
>>> @@ -3587,11 +3604,11 @@ static void snp_cleanup_guest_buf(struct 
>>> sev_data_snp_guest_request *data, unsig
>>>       int ret;
>>>       ret = snp_page_reclaim(pfn);
>>> -    if (ret)
>>> +    if (ret && (*rc == SEV_RET_SUCCESS))
>>>           *rc = SEV_RET_INVALID_ADDRESS;
>>>       ret = rmp_make_shared(pfn, PG_LEVEL_4K);
>>> -    if (ret)
>>> +    if (ret && (*rc == SEV_RET_SUCCESS))
>>>           *rc = SEV_RET_INVALID_ADDRESS;
>>>   }
>>
>> I believe we need to fix this as per the GHCB specifications.
>>
>> As per GHCB 2.0 specifications:
>>
>> SW_EXITINFO2
>> ...
>> State from Hypervisor: Upper
>> 32-bits (63:32) will contain the
>> return code from the hypervisor.
>> Lower 32-bits (31:0) will contain
>> the return code from the firmware
>> call (0 = success)
>>
>> So i believe the FW error code (which is the FW error code from 
>> SNP_GUEST_REQUEST or *rc here) should be contained in the lower 
>> 32-bits and the error code being returned back due to response buffer 
>> pages reclaim failure and/or failure to transisition these pages back 
>> to shared state is basically hypervisor (error) return code and that 
>> should be returned in the upper 32-bit of the exitinfo.
>>
>> There is work in progress to check conformance of SNP v7 patches to 
>> GHCB 2.0 specifications, so probably this fix can be included as part 
>> of those patches.
> 
> Yes, please :)
> 

Yes, will address this in the GHCB specs conformance patch-set for SNP 
as per the following revisions of the GHCB specs:

The SNP Guest Request and SNP Extended Guest Request have been updated 
to expand on the use of the SW_EXITINFO2 return value to better allow 
for the hypervisor to return error codes.

> 
>>
>>> @@ -3638,8 +3655,9 @@ static void snp_handle_ext_guest_request(struct 
>>> vcpu_svm *svm, gpa_t req_gpa, gp
>>>       struct kvm *kvm = vcpu->kvm;
>>>       unsigned long data_npages;
>>>       struct kvm_sev_info *sev;
>>> -    unsigned long rc, err;
>>
>> This needs to be looked at more carefully. The SEV firmware status 
>> code is defined as 32-bit, but is being handled as unsigned long in 
>> the KVM/SNP code and as int in the CCP driver. So this needs to be 
>> fixed consistently across,
> 
> Ultimately it should be explicit u32 in SEV and u64 in GHCB because PSP 
> and GHCB are binary interfaces and the sizes should be explicit. Error 
> codes between KVM and CCP can be anything (unsigned long, u64) as it is 
> the same binary.
> 

Again, as lower 32-bits (31:0) of SW_EXITINFO2 is supposed to be set
to the return code from the firmware, so this should also be u32 in GHCB 
and same in KVM/SNP code.

>  > snp_setup_guest_buf() return value will need to be
>> fixed accordingly.
>>
>>> +    unsigned long exitcode;
>>>       u64 data_gpa;
>>> +    int err, rc;
>>>       if (!sev_snp_guest(vcpu->kvm)) {
>>>           rc = SEV_RET_INVALID_GUEST;
>>> @@ -3669,17 +3687,16 @@ static void 
>>> snp_handle_ext_guest_request(struct vcpu_svm *svm, gpa_t req_gpa, gp
>>>        */
>>>       if (sev->snp_certs_len) {
>>>           if ((data_npages << PAGE_SHIFT) < sev->snp_certs_len) {
>>> -            rc = -EINVAL;
>>> -            err = SNP_GUEST_REQ_INVALID_LEN;
>>> +            rc = -ENOSPC;
>>
>> Why do we need to introduce ENOSPC error code?
> 
> To distinguish it from other errors and return SNP_GUEST_REQ_INVALID_LEN 
> when needed (the commit log mentions this).
> 
> 
>> If we continue to use SNP_GUEST_REQ_INVALID_LEN we don't need to map 
>> ENOSPC to SNP_GUEST_REQ_INVALID_LEN below.
>> And the CCP driver can return SNP_GUEST_REQ_INVALID_LEN as earlier via 
>> the fw_err parameter.
> 
> imho this is a bad idea.
> 
> SNP_GUEST_REQ_INVALID_LEN is defined in the GHCB spec and GHCB is 
> between KVM and VM, /dev/sev is neither GHCB nor KVM. err here is for 
> the firmware errors but SNP_GUEST_REQ_INVALID_LEN is not from the 
> firmware and for not-from-the-firmware-errors we already have "return 
> rc" so lets just use that. Also err is 32bit across the place, in things 
> like sev_issue_cmd() and then there is this ugly cast to int*. Thanks,
> 

Ok, that does make sense.

Thanks,
Ashish

  reply	other threads:[~2023-02-08 21:51 UTC|newest]

Thread overview: 205+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-14 19:39 [PATCH RFC v7 00/64] Add AMD Secure Nested Paging (SEV-SNP) Hypervisor Support Michael Roth
2022-12-14 19:39 ` [PATCH RFC v7 01/64] KVM: Fix memslot boundary condition for large page Michael Roth
2022-12-22 12:16   ` Borislav Petkov
2023-01-05  3:37     ` Chao Peng
2023-01-04 12:01   ` Jarkko Sakkinen
2023-01-05  3:34     ` Chao Peng
2023-01-05  4:08       ` Nikunj A. Dadhania
2023-01-05  8:14         ` Chao Peng
2022-12-14 19:39 ` [PATCH RFC v7 02/64] KVM: x86: Add KVM_CAP_UNMAPPED_PRIVATE_MEMORY Michael Roth
2022-12-22 12:26   ` Borislav Petkov
2023-01-04 17:47     ` Michael Roth
2023-01-05 11:57       ` Borislav Petkov
2023-01-19 13:03       ` Jarkko Sakkinen
2023-01-04 12:03   ` Jarkko Sakkinen
2023-01-04 17:56     ` Michael Roth
2022-12-14 19:39 ` [PATCH RFC v7 03/64] KVM: SVM: Advertise private memory support to KVM Michael Roth
2022-12-23 16:56   ` Borislav Petkov
2023-01-05  2:14     ` Michael Roth
2023-01-05 15:04       ` Borislav Petkov
2023-01-05 18:17         ` Michael Roth
2023-01-13 14:16           ` Borislav Petkov
2023-01-20 21:20       ` Jarkko Sakkinen
2023-02-20 16:18         ` Michael Roth
2023-01-18  0:20   ` Huang, Kai
2023-01-18 21:33     ` Sean Christopherson
2022-12-14 19:39 ` [PATCH RFC v7 04/64] KVM: x86: Add 'fault_is_private' x86 op Michael Roth
2022-12-29 16:14   ` Borislav Petkov
2023-01-05  2:42     ` Michael Roth
2023-01-13 14:34       ` Borislav Petkov
2023-01-13 15:48         ` Sean Christopherson
2023-01-13 18:45           ` Borislav Petkov
2023-02-20 16:22           ` Michael Roth
2022-12-14 19:39 ` [PATCH RFC v7 05/64] KVM: x86: Add 'update_mem_attr' " Michael Roth
2022-12-30 11:27   ` Borislav Petkov
2022-12-14 19:39 ` [PATCH RFC v7 06/64] KVM: x86: Add platform hooks for private memory invalidations Michael Roth
2022-12-30 11:53   ` Borislav Petkov
2023-01-05  2:27     ` Michael Roth
2023-01-22 12:43   ` Tom Dohrmann
2023-01-26 15:52     ` Jarkko Sakkinen
2022-12-14 19:39 ` [PATCH RFC v7 07/64] KVM: SEV: Handle KVM_HC_MAP_GPA_RANGE hypercall Michael Roth
2023-01-13 16:00   ` Borislav Petkov
2023-01-13 16:17     ` Sean Christopherson
2023-01-16  7:56       ` Nikunj A. Dadhania
2023-01-17 17:19         ` Sean Christopherson
2023-01-27 16:35   ` Jeremi Piotrowski
2023-01-31 14:15     ` Jeremi Piotrowski
2022-12-14 19:40 ` [PATCH RFC v7 08/64] KVM: Move kvm_for_each_memslot_in_hva_range() to be used in SVM Michael Roth
2023-01-13 18:46   ` Borislav Petkov
2022-12-14 19:40 ` [PATCH RFC v7 09/64] KVM: Add HVA range operator Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 10/64] KVM: SEV: Populate private memory fd during LAUNCH_UPDATE_DATA Michael Roth
2023-01-13 19:11   ` Borislav Petkov
2023-02-20 17:49     ` Michael Roth
2023-01-17 23:42   ` Jarkko Sakkinen
2023-02-20 17:54     ` Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 11/64] KVM: SEV: Support private pages in LAUNCH_UPDATE_DATA Michael Roth
2022-12-22 18:24   ` erbse.13
2022-12-23 11:57     ` Nikunj A. Dadhania
2023-01-17 23:30   ` Jarkko Sakkinen
2023-01-18  8:04     ` Nikunj A. Dadhania
2023-02-01 18:22   ` Borislav Petkov
2023-02-02  8:09     ` Nikunj A. Dadhania
2022-12-14 19:40 ` [PATCH RFC v7 12/64] KVM: SEV: Implement .fault_is_private callback Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 13/64] x86/cpufeatures: Add SEV-SNP CPU feature Michael Roth
2023-02-01 18:39   ` Borislav Petkov
2023-02-20 16:26     ` Michael Roth
2023-02-20 17:50       ` Borislav Petkov
2023-02-20 18:00         ` Michael Roth
2023-02-20 18:36           ` Borislav Petkov
2022-12-14 19:40 ` [PATCH RFC v7 14/64] x86/sev: Add the host SEV-SNP initialization support Michael Roth
2023-01-11 14:50   ` Sabin Rapan
2023-01-19 16:26     ` Kalra, Ashish
2023-01-18 15:55   ` Jeremi Piotrowski
2023-01-19 23:59     ` Kalra, Ashish
2023-01-20 16:51       ` Kalra, Ashish
2023-02-02 11:16   ` Borislav Petkov
2022-12-14 19:40 ` [PATCH RFC v7 15/64] x86/sev: Add RMP entry lookup helpers Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 16/64] x86/sev: Add helper functions for RMPUPDATE and PSMASH instruction Michael Roth
2023-01-31 21:26   ` Alexander Graf
2023-02-01 17:14     ` Kalra, Ashish
2023-02-01 17:20       ` Alexander Graf
2023-02-02 19:04         ` Kalra, Ashish
2023-02-08 16:30   ` Liam Merwick
2022-12-14 19:40 ` [PATCH RFC v7 17/64] x86/mm/pat: Introduce set_memory_p Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 18/64] x86/sev: Invalidate pages from the direct map when adding them to the RMP table Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 19/64] x86/traps: Define RMP violation #PF error code Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 20/64] x86/fault: Add support to handle the RMP fault for user address Michael Roth
2023-01-17 10:42   ` Zhi Wang
2022-12-14 19:40 ` [PATCH RFC v7 21/64] x86/fault: fix handle_split_page_fault() to work with memfd backed pages Michael Roth
2022-12-15  1:01   ` Hugh Dickins
2022-12-14 19:40 ` [PATCH RFC v7 22/64] x86/fault: Return pfn from dump_pagetable() for SEV-specific fault handling Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 23/64] x86/fault: Add support to dump RMP entry on fault Michael Roth
2023-01-13 22:56   ` Alper Gun
2023-01-13 23:49     ` Kalra, Ashish
2022-12-14 19:40 ` [PATCH RFC v7 24/64] crypto:ccp: Define the SEV-SNP commands Michael Roth
2023-01-22 16:09   ` Sabin Rapan
2022-12-14 19:40 ` [PATCH RFC v7 25/64] crypto: ccp: Add support to initialize the AMD-SP for SEV-SNP Michael Roth
2022-12-31 15:32   ` Jarkko Sakkinen
2023-01-05 22:40     ` Kalra, Ashish
2023-01-20 22:19       ` Jarkko Sakkinen
2023-01-04 12:12   ` Jarkko Sakkinen
2023-01-05 22:54     ` Kalra, Ashish
2023-01-20 22:56       ` Jarkko Sakkinen
2022-12-14 19:40 ` [PATCH RFC v7 26/64] crypto:ccp: Provide API to issue SEV and SNP commands Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 27/64] crypto: ccp: Introduce snp leaked pages list Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 28/64] crypto: ccp: Handle the legacy TMR allocation when SNP is enabled Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 29/64] crypto: ccp: Handle the legacy SEV command " Michael Roth
2023-01-12 20:47   ` Alper Gun
2023-01-13 22:03     ` Kalra, Ashish
2023-01-13 22:42       ` Alper Gun
2023-01-13 22:48         ` Kalra, Ashish
2023-01-12 23:45   ` Alper Gun
2023-01-13 22:34     ` Kalra, Ashish
2022-12-14 19:40 ` [PATCH RFC v7 30/64] crypto: ccp: Add the SNP_PLATFORM_STATUS command Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 31/64] crypto: ccp: Add the SNP_{SET,GET}_EXT_CONFIG command Michael Roth
2023-01-19  7:23   ` Dov Murik
2022-12-14 19:40 ` [PATCH RFC v7 32/64] crypto: ccp: Provide APIs to query extended attestation report Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 33/64] KVM: SVM: Add support to handle AP reset MSR protocol Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 34/64] KVM: SVM: Provide the Hypervisor Feature support VMGEXIT Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 35/64] KVM: SVM: Make AVIC backing, VMSA and VMCB memory allocation SNP safe Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 36/64] KVM: SVM: Add initial SEV-SNP support Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 37/64] KVM: SVM: Add KVM_SNP_INIT command Michael Roth
2022-12-31 14:27   ` Jarkko Sakkinen
2022-12-31 14:47     ` Jarkko Sakkinen
2022-12-31 15:16       ` Jarkko Sakkinen
2023-01-05 23:37     ` Kalra, Ashish
2023-01-20 23:17       ` Jarkko Sakkinen
2023-01-23 22:49       ` Kalra, Ashish
2023-01-26 21:25         ` Jarkko Sakkinen
2022-12-14 19:40 ` [PATCH RFC v7 38/64] KVM: SVM: Add KVM_SEV_SNP_LAUNCH_START command Michael Roth
2023-03-15 13:50   ` Peter Gonda
2022-12-14 19:40 ` [PATCH RFC v7 39/64] KVM: SVM: Add KVM_SEV_SNP_LAUNCH_UPDATE command Michael Roth
2023-01-11 13:56   ` Tom Dohrmann
2023-01-11 14:04     ` Harald Hoyer
2022-12-14 19:40 ` [PATCH RFC v7 40/64] KVM: SVM: Add KVM_SEV_SNP_LAUNCH_FINISH command Michael Roth
2022-12-19 18:04   ` Tom Lendacky
2022-12-19 23:24     ` Kalra, Ashish
2022-12-20 14:25       ` Tom Lendacky
2023-01-11 13:27   ` Sabin Rapan
2023-01-11 23:18     ` Kalra, Ashish
2022-12-14 19:40 ` [PATCH RFC v7 41/64] KVM: X86: Keep the NPT and RMP page level in sync Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 42/64] KVM: x86: Define RMP page fault error bits for #NPF Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 43/64] KVM: SVM: Do not use long-lived GHCB map while setting scratch area Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 44/64] KVM: SVM: Remove the long-lived GHCB host map Michael Roth
2023-01-18 15:27   ` Jeremi Piotrowski
2023-01-18 18:15     ` Alper Gun
2023-01-20 20:10       ` Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 45/64] KVM: SVM: Add support to handle GHCB GPA register VMGEXIT Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 46/64] KVM: SVM: Add KVM_EXIT_VMGEXIT Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 47/64] KVM: SVM: Add support to handle MSR based Page State Change VMGEXIT Michael Roth
2023-01-11 14:38   ` Tom Dohrmann
2022-12-14 19:40 ` [PATCH RFC v7 48/64] KVM: SVM: Add support to handle " Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 49/64] KVM: SVM: Introduce ops for the post gfn map and unmap Michael Roth
2023-01-11 13:49   ` Sabin Rapan
2022-12-14 19:40 ` [PATCH RFC v7 50/64] KVM: x86: Export the kvm_zap_gfn_range() for the SNP use Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 51/64] KVM: SVM: Add support to handle the RMP nested page fault Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 52/64] KVM: SVM: Provide support for SNP_GUEST_REQUEST NAE event Michael Roth
2023-01-09  3:33   ` Alexey Kardashevskiy
2023-01-09 23:41     ` Kalra, Ashish
2023-01-10  2:28       ` Alexey Kardashevskiy
2023-01-10  8:33         ` Kalra, Ashish
2023-01-11  0:48           ` Alexey Kardashevskiy
2023-01-11  2:01             ` Kalra, Ashish
2023-01-31  1:54               ` Alexey Kardashevskiy
2023-01-31 16:23                 ` Tom Lendacky
2023-01-31 20:21                   ` Alexey Kardashevskiy
2023-01-31 21:21                     ` Tom Lendacky
2023-01-31 22:00                       ` Alexey Kardashevskiy
2023-01-31 22:42                         ` Tom Lendacky
2023-05-11 23:02                           ` Dionna Amalie Glaze
2023-05-11 23:32                             ` Sean Christopherson
2023-05-15 16:45                               ` Dionna Amalie Glaze
2023-01-31 17:52                 ` Kalra, Ashish
2023-02-06  3:13               ` [PATCH kernel] KVM: SVM: Fix SVM_VMGEXIT_EXT_GUEST_REQUEST to follow the rest of API Alexey Kardashevskiy
2023-02-06 21:57                 ` Kalra, Ashish
2023-02-07  1:24                   ` Alexey Kardashevskiy
2023-02-08 21:50                     ` Kalra, Ashish [this message]
2023-01-19 20:35   ` [PATCH RFC v7 52/64] KVM: SVM: Provide support for SNP_GUEST_REQUEST NAE event Dionna Amalie Glaze
2023-01-19 20:54     ` Kalra, Ashish
2023-01-19 21:06       ` Dov Murik
2022-12-14 19:40 ` [PATCH RFC v7 53/64] KVM: SVM: Use a VMSA physical address variable for populating VMCB Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 54/64] KVM: SVM: Support SEV-SNP AP Creation NAE event Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 55/64] KVM: SVM: Add SNP-specific handling for memory attribute updates Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 56/64] KVM: x86/mmu: Generate KVM_EXIT_MEMORY_FAULT for implicit conversions for SNP Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 57/64] KVM: SEV: Handle restricted memory invalidations " Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 58/64] KVM: SVM: Add module parameter to enable the SEV-SNP Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 59/64] ccp: Add support to decrypt the page Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 60/64] KVM: SVM: Sync the GHCB scratch buffer using already mapped ghcb Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 61/64] KVM: SVM: Make VMSAVE target area memory allocation SNP safe Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 62/64] x86/sev: Add KVM commands for instance certs Michael Roth
2022-12-22 14:57   ` Dov Murik
2023-01-09 16:55     ` Dionna Amalie Glaze
2023-01-09 22:27       ` Tom Lendacky
2023-01-10  7:10         ` Dov Murik
2023-01-10 15:10           ` Tom Lendacky
2023-01-10 15:23             ` Peter Gonda
2023-01-11  7:26               ` Dov Murik
2023-01-11  6:00             ` Dov Murik
2023-01-11 14:32               ` Tom Lendacky
2023-01-19 18:49   ` Dionna Amalie Glaze
2023-01-19 22:18     ` Kalra, Ashish
2023-01-20  1:40       ` Dionna Amalie Glaze
2022-12-14 19:40 ` [PATCH RFC v7 63/64] x86/sev: Document KVM_SEV_SNP_{G,S}ET_CERTS Michael Roth
2022-12-14 19:40 ` [PATCH RFC v7 64/64] iommu/amd: Add IOMMU_SNP_SHUTDOWN support Michael Roth
2022-12-23 20:33 ` [PATCH RFC v7 00/64] Add AMD Secure Nested Paging (SEV-SNP) Hypervisor Support Borislav Petkov
2023-01-04 17:21   ` Michael Roth

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=8ad433cf-36bc-63e8-4f8c-13e2a283c61c@amd.com \
    --to=ashish.kalra@amd.com \
    --cc=aik@amd.com \
    --cc=bp@alien8.de \
    --cc=brijesh.singh@amd.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=davem@davemloft.net \
    --cc=dionnaglaze@google.com \
    --cc=herbert@gondor.apana.org.au \
    --cc=hpa@zytor.com \
    --cc=john.allen@amd.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michael.roth@amd.com \
    --cc=mingo@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=seanjc@google.com \
    --cc=tglx@linutronix.de \
    --cc=thomas.lendacky@amd.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.