|
@@ -289,6 +289,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(&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;
|
|
@@ -317,6 +330,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;
|