lkml.org 
[lkml]   [2017]   [Oct]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[Part2 PATCH v6.1 15/38] crypto: ccp: Implement SEV_PEK_GEN ioctl command
    Date
    The SEV_PEK_GEN command is used to generate a new Platform Endorsement
    Key (PEK). The command is defined in SEV spec section 5.6.

    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
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Improvements-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
    Acked-by: Gary R Hook <gary.hook@amd.com>
    ---

    Boris,

    I had your R-b in v6 and have kept it. The changes in this patch are
    very minor. Let me know if you are okay with it - thanks

    Changes since v6:
    * use psp->sev_state to check if FW is in correct state before
    doing the INIT transition

    drivers/crypto/ccp/psp-dev.c | 16 ++++++++++++++++
    1 file changed, 16 insertions(+)

    diff --git a/drivers/crypto/ccp/psp-dev.c b/drivers/crypto/ccp/psp-dev.c
    index 24a970809ded..53fbbc41b521 100644
    --- a/drivers/crypto/ccp/psp-dev.c
    +++ b/drivers/crypto/ccp/psp-dev.c
    @@ -240,6 +240,19 @@ static int sev_ioctl_do_platform_status(struct sev_issue_cmd *argp)
    return ret;
    }

    +static int sev_ioctl_do_pek_pdh_gen(int cmd, struct sev_issue_cmd *argp)
    +{
    + int rc;
    +
    + if (psp_master->sev_state == SEV_STATE_UNINIT) {
    + rc = sev_platform_init_locked(NULL, &argp->error);
    + if (rc)
    + return rc;
    + }
    +
    + return sev_do_cmd_locked(cmd, 0, &argp->error);
    +}
    +
    static long sev_ioctl(struct file *file, unsigned int ioctl, unsigned long arg)
    {
    void __user *argp = (void __user *)arg;
    @@ -268,6 +281,9 @@ static long sev_ioctl(struct file *file, unsigned int ioctl, unsigned long arg)
    case SEV_PLATFORM_STATUS:
    ret = sev_ioctl_do_platform_status(&input);
    break;
    + case SEV_PEK_GEN:
    + ret = sev_ioctl_do_pek_pdh_gen(SEV_CMD_PEK_GEN, &input);
    + break;
    default:
    ret = -EINVAL;
    goto out;
    --
    2.9.5
    \
     
     \ /
      Last update: 2017-10-30 04:15    [W:6.136 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site