All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gary R Hook <gary.hook@amd.com>
To: Brijesh Singh <brijesh.singh@amd.com>, Borislav Petkov <bp@alien8.de>
Cc: "Paolo Bonzini" <pbonzini@redhat.com>,
	"Radim Krčmář" <rkrcmar@redhat.com>,
	"Borislav Petkov" <bp@suse.de>,
	"Herbert Xu" <herbert@gondor.apana.org.au>,
	"Tom Lendacky" <thomas.lendacky@amd.com>,
	linux-crypto@vger.kernel.org, kvm@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [Part2 PATCH v6.1 18/38] crypto: ccp: Implement SEV_PEK_CSR ioctl command
Date: Tue, 24 Oct 2017 13:42:38 -0500	[thread overview]
Message-ID: <dccdf4a2-3f34-8744-2ed3-367c3d9bc1e4@amd.com> (raw)
In-Reply-To: <20171023221009.46924-1-brijesh.singh@amd.com>

On 10/23/2017 05:10 PM, Brijesh Singh wrote:
> The SEV_PEK_CSR command can be used to generate a PEK certificate
> signing request. The command is defined in SEV spec section 5.7.
> 
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: "Radim Krčmář" <rkrcmar@redhat.com>
> Cc: Borislav Petkov <bp@suse.de>
> Cc: Herbert Xu <herbert@gondor.apana.org.au>
> Cc: Gary Hook <gary.hook@amd.com>
> Cc: Tom Lendacky <thomas.lendacky@amd.com>
> Cc: linux-crypto@vger.kernel.org
> Cc: kvm@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
> ---


Acked-by: Gary R Hook <gary.hook@amd.com>



> 
> Changes since v6:
>   * when sev_do_cmd() and sev_platform_shutdown() fails then propogate
>     the error status code from sev_do_cmd() because it can give us
>     much better reason for the failure.
> 
>   drivers/crypto/ccp/psp-dev.c | 81 ++++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 81 insertions(+)
> 
> diff --git a/drivers/crypto/ccp/psp-dev.c b/drivers/crypto/ccp/psp-dev.c
> index 3672435150cf..aaf1c5cf821d 100644
> --- a/drivers/crypto/ccp/psp-dev.c
> +++ b/drivers/crypto/ccp/psp-dev.c
> @@ -223,6 +223,84 @@ static int sev_ioctl_do_pek_pdh_gen(int cmd, struct sev_issue_cmd *argp)
>   	return ret;
>   }
>   
> +static int sev_ioctl_do_pek_csr(struct sev_issue_cmd *argp)
> +{
> +	struct sev_user_data_pek_csr input;
> +	struct sev_data_pek_csr *data;
> +	void *blob = NULL;
> +	int ret, err;
> +
> +	if (copy_from_user(&input, (void __user *)argp->data, sizeof(input)))
> +		return -EFAULT;
> +
> +	data = kzalloc(sizeof(*data), GFP_KERNEL);
> +	if (!data)
> +		return -ENOMEM;
> +
> +	/* userspace wants to query CSR length */
> +	if (!input.address || !input.length)
> +		goto cmd;
> +
> +	/* allocate a physically contiguous buffer to store the CSR blob */
> +	if (!access_ok(VERIFY_WRITE, input.address, input.length) ||
> +	    input.length > SEV_FW_BLOB_MAX_SIZE) {
> +		ret = -EFAULT;
> +		goto e_free;
> +	}
> +
> +	blob = kmalloc(input.length, GFP_KERNEL);
> +	if (!blob) {
> +		ret = -ENOMEM;
> +		goto e_free;
> +	}
> +
> +	data->address = __psp_pa(blob);
> +	data->len = input.length;
> +
> +cmd:
> +	ret = sev_platform_init(NULL, &argp->error);
> +	if (ret)
> +		goto e_free_blob;
> +
> +	ret = sev_do_cmd(SEV_CMD_PEK_CSR, data, &argp->error);
> +
> +	/*
> +	 * If we query the CSR length, FW responded with expected data
> +	 */
> +	input.length = data->len;
> +
> +	if (sev_platform_shutdown(&err)) {
> +		/*
> +		 * If both sev_do_cmd() and sev_platform_shutdown() commands
> +		 * failed then propogate the error code from the sev_do_cmd()
> +		 * because it contains a useful status code for the command
> +		 * failure.
> +		 */
> +		if (ret)
> +			goto e_free_blob;
> +
> +		ret = -EIO;
> +		argp->error = err;
> +		goto e_free_blob;
> +	}
> +
> +	if (copy_to_user((void __user *)argp->data, &input, sizeof(input))) {
> +		ret = -EFAULT;
> +		goto e_free_blob;
> +	}
> +
> +	if (blob) {
> +		if (copy_to_user((void __user *)input.address, blob, input.length))
> +			ret = -EFAULT;
> +	}
> +
> +e_free_blob:
> +	kfree(blob);
> +e_free:
> +	kfree(data);
> +	return ret;
> +}
> +
>   static long sev_ioctl(struct file *file, unsigned int ioctl, unsigned long arg)
>   {
>   	void __user *argp = (void __user *)arg;
> @@ -252,6 +330,9 @@ static long sev_ioctl(struct file *file, unsigned int ioctl, unsigned long arg)
>   	case SEV_PDH_GEN:
>   		ret = sev_ioctl_do_pek_pdh_gen(SEV_CMD_PDH_GEN, &input);
>   		break;
> +	case SEV_PEK_CSR:
> +		ret = sev_ioctl_do_pek_csr(&input);
> +		break;
>   	default:
>   		ret = -EINVAL;
>   		goto out;
> 

  reply	other threads:[~2017-10-24 18:42 UTC|newest]

Thread overview: 120+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-20  2:33 [Part2 PATCH v6 00/38] x86: Secure Encrypted Virtualization (AMD) Brijesh Singh
2017-10-20  2:33 ` [Part2 PATCH v6 01/38] Documentation/virtual/kvm: Add AMD Secure Encrypted Virtualization (SEV) Brijesh Singh
2017-10-20 13:18   ` Jonathan Corbet
2017-10-23 22:40     ` Brijesh Singh
2017-10-20  2:33 ` [Part2 PATCH v6 02/38] x86/CPU/AMD: Add the Secure Encrypted Virtualization CPU feature Brijesh Singh
2017-10-20  2:33 ` [Part2 PATCH v6 03/38] kvm: svm: prepare for new bit definition in nested_ctl Brijesh Singh
2017-10-20  2:33 ` [Part2 PATCH v6 04/38] kvm: svm: Add SEV feature definitions to KVM Brijesh Singh
2017-10-20  2:33 ` [Part2 PATCH v6 05/38] KVM: SVM: Prepare to reserve asid for SEV guest Brijesh Singh
2017-10-20  2:33 ` [Part2 PATCH v6 06/38] KVM: X86: Extend CPUID range to include new leaf Brijesh Singh
2017-10-20  2:33 ` [Part2 PATCH v6 07/38] KVM: Introduce KVM_MEMORY_ENCRYPT_OP ioctl Brijesh Singh
2017-10-20  2:33 ` [Part2 PATCH v6 08/38] KVM: Introduce KVM_MEMORY_ENCRYPT_{UN,}REG_REGION ioctl Brijesh Singh
2017-10-20 15:00   ` Borislav Petkov
2017-10-20  2:33 ` [Part2 PATCH v6 09/38] crypto: ccp: Build the AMD secure processor driver only with AMD CPU support Brijesh Singh
2017-10-24 18:40   ` Gary R Hook
2017-10-20  2:33 ` [Part2 PATCH v6 10/38] crypto: ccp: Define SEV userspace ioctl and command id Brijesh Singh
2017-10-24 18:40   ` Gary R Hook
2017-10-20  2:33 ` [Part2 PATCH v6 11/38] crypto: ccp: Define SEV key management " Brijesh Singh
2017-10-24 18:40   ` Gary R Hook
2017-10-20  2:33 ` [Part2 PATCH v6 12/38] crypto: ccp: Add Platform Security Processor (PSP) device support Brijesh Singh
2017-10-24 18:40   ` Gary R Hook
2017-10-20  2:33 ` [Part2 PATCH v6 13/38] crypto: ccp: Add Secure Encrypted Virtualization (SEV) command support Brijesh Singh
2017-10-23  7:34   ` Borislav Petkov
2017-10-23  7:34     ` Borislav Petkov
2017-10-23 20:05     ` Brijesh Singh
2017-10-23  9:20   ` Borislav Petkov
2017-10-23  9:20     ` Borislav Petkov
2017-10-23 19:57     ` Brijesh Singh
2017-10-26 13:56       ` Borislav Petkov
2017-10-26 16:56         ` Brijesh Singh
2017-10-26 17:44           ` Borislav Petkov
2017-10-26 17:44             ` Borislav Petkov
2017-10-26 19:26             ` Brijesh Singh
2017-10-26 20:13               ` Borislav Petkov
2017-10-26 20:59                 ` Brijesh Singh
2017-10-27  7:56                   ` Borislav Petkov
2017-10-27  7:56                     ` Borislav Petkov
2017-10-27 11:28                     ` Brijesh Singh
2017-10-27 20:15                       ` Borislav Petkov
2017-10-27 20:15                         ` Borislav Petkov
2017-10-27 20:25                         ` Brijesh Singh
2017-10-27 20:27                           ` Borislav Petkov
2017-10-27 21:28                             ` Brijesh Singh
2017-10-27 21:49                               ` Borislav Petkov
2017-10-27 22:59                                 ` Brijesh Singh
2017-10-28  0:00                                   ` Borislav Petkov
2017-10-28 12:20                                     ` Brijesh Singh
2017-10-29 20:48   ` [Part2 PATCH v6.1 16/38] " Brijesh Singh
2017-10-29 21:14     ` Brijesh Singh
2017-10-30 17:21     ` Borislav Petkov
2017-10-30 17:49       ` Brijesh Singh
2017-10-30 17:57         ` Borislav Petkov
2017-10-31  1:29           ` Brijesh Singh
2017-10-31 10:39             ` Borislav Petkov
2017-10-20  2:33 ` [Part2 PATCH v6 14/38] crypto: ccp: Implement SEV_FACTORY_RESET ioctl command Brijesh Singh
2017-10-23  7:42   ` Borislav Petkov
2017-10-23  7:42     ` Borislav Petkov
2017-10-24 18:41   ` Gary R Hook
2017-10-29 21:16   ` [Part2 PATCH v6.1 " Brijesh Singh
2017-10-20  2:33 ` [Part2 PATCH v6 15/38] crypto: ccp: Implement SEV_PLATFORM_STATUS " Brijesh Singh
2017-10-23  8:48   ` Borislav Petkov
2017-10-24 18:41   ` Gary R Hook
2017-10-30  3:13   ` [Part2 PATCH v6.1 15/38] crypto: ccp: Implement SEV_PEK_GEN " Brijesh Singh
2017-10-20  2:33 ` [Part2 PATCH v6 16/38] " Brijesh Singh
2017-10-23  9:32   ` Borislav Petkov
2017-10-23 12:15     ` Brijesh Singh
2017-10-23 12:32       ` Borislav Petkov
2017-10-23 13:32         ` Brijesh Singh
2017-10-23 14:10           ` Borislav Petkov
2017-10-23 20:00             ` Brijesh Singh
2017-10-23 21:55   ` [Part2 PATCH v6.1 " Brijesh Singh
2017-10-24 18:42     ` Gary R Hook
2017-10-26 14:22     ` Borislav Petkov
2017-10-20  2:33 ` [Part2 PATCH v6 17/38] crypto: ccp: Implement SEV_PDH_GEN " Brijesh Singh
2017-10-23 12:35   ` Borislav Petkov
2017-10-24 18:41   ` Gary R Hook
2017-10-20  2:33 ` [Part2 PATCH v6 18/38] crypto: ccp: Implement SEV_PEK_CSR " Brijesh Singh
2017-10-23 12:49   ` Borislav Petkov
2017-10-23 12:49     ` Borislav Petkov
2017-10-23 22:10   ` [Part2 PATCH v6.1 " Brijesh Singh
2017-10-24 18:42     ` Gary R Hook [this message]
2017-10-30  3:23     ` [Part2 PATCH v6.2 " Brijesh Singh
2017-10-20  2:33 ` [Part2 PATCH v6 19/38] crypto: ccp: Implement SEV_PEK_CERT_IMPORT " Brijesh Singh
2017-10-23 22:14   ` [Part2 PATCH v6.1 " Brijesh Singh
2017-10-24 18:42     ` Gary R Hook
2017-10-20  2:33 ` [Part2 PATCH v6 20/38] crypto: ccp: Implement SEV_PDH_CERT_EXPORT " Brijesh Singh
2017-10-23 22:19   ` [Part2 PATCH v6.1 " Brijesh Singh
2017-10-24 18:43     ` Gary R Hook
2017-10-20  2:33 ` [Part2 PATCH v6 21/38] KVM: X86: Add CONFIG_KVM_AMD_SEV Brijesh Singh
2017-10-20  2:33 ` [Part2 PATCH v6 22/38] KVM: SVM: Add sev module_param Brijesh Singh
2017-10-20  2:33 ` [Part2 PATCH v6 23/38] KVM: SVM: Reserve ASID range for SEV guest Brijesh Singh
2017-10-27 20:23   ` Borislav Petkov
2017-10-20  2:33 ` [Part2 PATCH v6 24/38] KVM: Define SEV key management command id Brijesh Singh
2017-10-27 20:23   ` Borislav Petkov
2017-10-20  2:34 ` [Part2 PATCH v6 25/38] KVM: SVM: Add KVM_SEV_INIT command Brijesh Singh
2017-10-27 20:24   ` Borislav Petkov
2017-10-30 11:49     ` Brijesh Singh
2017-10-20  2:34 ` [Part2 PATCH v6 26/38] KVM: SVM: VMRUN should use assosiated ASID when SEV is enabled Brijesh Singh
2017-10-20  2:34 ` [Part2 PATCH v6 27/38] KVM: SVM: Add support for KVM_SEV_LAUNCH_START command Brijesh Singh
2017-10-20  2:34 ` [Part2 PATCH v6 28/38] KVM: SVM: Add support for KVM_SEV_LAUNCH_UPDATE_DATA command Brijesh Singh
2017-10-27 20:24   ` Borislav Petkov
2017-10-20  2:34 ` [Part2 PATCH v6 29/38] KVM: SVM: Add support for KVM_SEV_LAUNCH_MEASURE command Brijesh Singh
2017-10-27 20:24   ` Borislav Petkov
2017-10-20  2:34 ` [Part2 PATCH v6 30/38] KVM: SVM: Add support for SEV LAUNCH_FINISH command Brijesh Singh
2017-10-27 20:25   ` Borislav Petkov
2017-10-20  2:34 ` [Part2 PATCH v6 31/38] KVM: SVM: Add support for SEV GUEST_STATUS command Brijesh Singh
2017-10-27 20:25   ` Borislav Petkov
2017-10-20  2:34 ` [Part2 PATCH v6 32/38] KVM: SVM: Add support for SEV DEBUG_DECRYPT command Brijesh Singh
2017-10-27 20:25   ` Borislav Petkov
2017-10-30 13:56     ` Brijesh Singh
2017-10-30 15:12       ` Borislav Petkov
2017-10-30 16:33         ` Brijesh Singh
2017-10-20  2:34 ` [Part2 PATCH v6 33/38] KVM: SVM: Add support for SEV DEBUG_ENCRYPT command Brijesh Singh
2017-10-20  2:34 ` [Part2 PATCH v6 34/38] KVM: SVM: Add support for SEV LAUNCH_SECRET command Brijesh Singh
2017-10-20  2:34 ` [Part2 PATCH v6 35/38] KVM: SVM: Pin guest memory when SEV is active Brijesh Singh
2017-10-20  2:34 ` [Part2 PATCH v6 36/38] KVM: SVM: Clear C-bit from the page fault address Brijesh Singh
2017-10-20  2:34 ` [Part2 PATCH v6 37/38] KVM: SVM: Do not install #UD intercept when SEV is enabled Brijesh Singh
2017-10-20  2:34 ` [Part2 PATCH v6 38/38] KVM: X86: Restart the guest when insn_len is zero and " Brijesh Singh
2017-10-23 22:07 ` [Part2 PATCH v6.1 18/38] crypto: ccp: Implement SEV_PEK_CSR ioctl command Brijesh Singh
2017-10-24 12:14 ` [Part2 PATCH v6 00/38] x86: Secure Encrypted Virtualization (AMD) Brijesh Singh
2017-11-02 20:18   ` Brijesh Singh

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=dccdf4a2-3f34-8744-2ed3-367c3d9bc1e4@amd.com \
    --to=gary.hook@amd.com \
    --cc=bp@alien8.de \
    --cc=bp@suse.de \
    --cc=brijesh.singh@amd.com \
    --cc=herbert@gondor.apana.org.au \
    --cc=kvm@vger.kernel.org \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=rkrcmar@redhat.com \
    --cc=thomas.lendacky@amd.com \
    /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.