From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757192AbdKGPqr (ORCPT ); Tue, 7 Nov 2017 10:46:47 -0500 Received: from mail-by2nam03on0087.outbound.protection.outlook.com ([104.47.42.87]:33152 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1757146AbdKGPqn (ORCPT ); Tue, 7 Nov 2017 10:46:43 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Gary.Hook@amd.com; Subject: Re: [Part2 PATCH v8 14/38] crypto: ccp: Implement SEV_FACTORY_RESET ioctl command To: Brijesh Singh , kvm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: bp@alien8.de, Paolo Bonzini , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , Borislav Petkov , Herbert Xu , Tom Lendacky , linux-crypto@vger.kernel.org References: <20171106181130.68491-1-brijesh.singh@amd.com> <20171106181130.68491-15-brijesh.singh@amd.com> From: Gary R Hook Message-ID: <233a2f09-9d00-48a0-7a45-956e020bf8cd@amd.com> Date: Tue, 7 Nov 2017 09:47:42 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <20171106181130.68491-15-brijesh.singh@amd.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: BN6PR14CA0028.namprd14.prod.outlook.com (10.171.172.142) To CY4PR12MB1207.namprd12.prod.outlook.com (10.168.166.22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d44c3ad5-6ac8-49f4-1582-08d525f6bdc2 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(2017052603249);SRVR:CY4PR12MB1207; X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1207;3:gdV2g/d6OPNte5z1kWaERgTWV0dEaPDnEHQ5SQkEADY4knGZG1H96fVc3PCe+vGdWjcx6ppy2ZM+sOXt1hSCwI880MrXEQhRJH56SQH6R/2gg74Kcf/xXuJwo5Va6GSbPLZj38vGEizZ/E20j+ShFd6Gj++Qa8D5yGipIIKjXFh6Tn8vYHjMjlSQ+/CwZiBI0Uf6FQEZObAYMFKQv4Kg875+petPAsHkio9linWu2bKxP19CoBwTu+FzRKwqEo+3;25:lI7goN4HSK/Ot7y6Cr2m38TKVNLb4aAm7wQjIggYL+dXjnfkrl/kjYdPrp3xG0+NTQKr51bV48Qy7tMj1e6dAZWVsW1vEVDWpUQbyqixExKmBMYa/3Kb2G03KUNAOsyZKcpKi2kF9EXZKn4GbMiOvED/TxBb8V+t0vfdfdmPiZ01sKCjvUVuw81+E5kOMdawk4buUubNoVUnvz1ftyZPd8cqhhudQcCSmQmIGckSHLo1Dp8ELULHlncK4QLOTLrJEqD2mdY6aK0VOyi9xAwH+8mizlu9Q3rbYSbW+cfJ7ODAq/Z5KKVlqwjtw3JcL2D2viFfqPRhujbhtiZmD65R/g==;31:k420jwnbL8HDB0TuSDyk+C4Ht58yPCAPOoycr4Lj6dgVbr4QGyiiChe+bCBQEbghOwk+SnVI5MLycZUxgrX2044Rksk5puDl0RO+jXvxPKl2dycR47AMCuAg33qLfB5Rp57uxvKQIP3o427ZXeyAH3E0CPmmMf/Ikb5eRzWu95piGVRcC14aByHWf3B9HQ0xRrEd3o0bEObhsH5RO+AM+JbAdoQgRb7yWOrvr+RiNhQ= X-MS-TrafficTypeDiagnostic: CY4PR12MB1207: X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1207;20:4TFUGGBeda1p6R0fDpcm9EycUJoLYChpoSxXO+UcziomxVD36e0265T9vOaB6xqJBe4Ph60mLL44jSmwN1MkL5aNmphw3SWVXWmBjxAyh4ao49+Jow1YOaDfVTZ0QdU0eP+xJldHqum2jFe/g0A+gIpjbkfipRxHgDXgoW7eBbeIHvbgDlh74a8fTGGlgl6oRG2BR9qin9AOBH90pTqPO5emNrghh9THfHJEerwEuNS4WV0KZWbPTMe72RQZrCYo+KHA/WWFB5UMIDqOPFfObKGHk68tu7DXtsJxndqD1TS5hbmgYvZggDdpKID2ee92gNE0gb0IzQorvivwKOvmB1bExvd80Bkcw666ruSIx2MKVQ6AUs12uczBh316tOzc0yvh70M7gPNR3fEpiZdt32ko04Ftr4dOr9Fa09LTKaBfy5q+G18bj5AxdCR7JyFqvpmJebNhPag2IZiG9Uqxk0rVBFeSfAbO4XJUqsqt4IxSS0YmRFP03I15dPq6KCYf;4:DlBObE5QlDIu55WBQL+ZAlaeNXUs/8nsDKm0pGjh7Fz/z/BUC1dGBA5Hx1sKE0eizTX7ui1Pe5L67YslMWJraHBQ6M2kiHHvXZ+PehyMA4gbkcuRM7bzKdPQjpsvqfQJ/m2AaeKhC1OIxxtZSqe9BE6jFP6Ns1sn/dwHonwgr0pNhm/XiO6Sng4gIhjNqwWINq7z9dKnxrC3fs9zeqW+hJERUyfQcGvx/cHseVhkbVCjnPXYnsyY9HpHrQnr0xkivub4M2QVlQk9vLYxhbSGKwacBNd9kQbT6qt7PHRxhbbDJabiT3ZoFfxj/rc0V2uNg5bCkmd8lKljlZEtYAaipQ== X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(767451399110); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(3231021)(3002001)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(6055026)(6041248)(20161123564025)(20161123558100)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:CY4PR12MB1207;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:CY4PR12MB1207; X-Forefront-PRVS: 0484063412 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(6049001)(376002)(39860400002)(346002)(189002)(199003)(24454002)(229853002)(90366009)(25786009)(2870700001)(101416001)(2906002)(72206003)(478600001)(33646002)(106356001)(105586002)(3846002)(5660300001)(36756003)(65826007)(6116002)(8936002)(31686004)(83506002)(305945005)(68736007)(16526018)(7736002)(65956001)(66066001)(65806001)(2950100002)(50466002)(47776003)(8676002)(81166006)(81156014)(189998001)(67846002)(16576012)(6486002)(31696002)(77096006)(58126008)(54356999)(86362001)(4326008)(23676003)(6246003)(53546010)(50986999)(76176999)(97736004)(316002)(54906003)(53936002)(64126003);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR12MB1207;H:[10.236.19.127];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyTUIxMjA3OzIzOklldjVPeHY2MTE5UWxNM1lyak5lcjJONTZM?= =?utf-8?B?STRUbzQycDN0VE81a0Z4N2phdlEzK3B5L0taMmNIK29iSkdncWgxSlZ4THVq?= =?utf-8?B?NHV0Vlh4eXIwb0hZVVBQalo1UUhrUkF0aktBTWVVVmg3anBrTEJhQ3dCMzhi?= =?utf-8?B?NlZlYUZoc2RVNXpmYmFIZ1ZPZHZCaEZkUi9kTHk5TkprZU1XbzduZEJYZWRl?= =?utf-8?B?REVsNHk3SmpyYlNmWjE3cGNkVFl6WUcxb05RcC80eVU3Vko5R3R6QVJ3MWIv?= =?utf-8?B?WEhXdkdqYTZNeDVaYk1JUCt6ZWY1R1M5cURIMkd4NWpWRXZ0YVU3Wi90WkFC?= =?utf-8?B?dFVqcHFiUjNRMThNZUhlVlhuNEw5Q2x2Tlg5N05CbDhaNnJIbG8wV004YVo1?= =?utf-8?B?V2NDRkpGU2s1U09ueEh5c0NPWkNhS1hhMTdpdjhBTi8wbHVwSEhXVTlEL0lw?= =?utf-8?B?bzh4a2l3cnNwTEl3bS9hOWZ0dG9sT2V0TFFYQ2lsRXh2K21NbzVTQWRub0dV?= =?utf-8?B?Rk9Cc1pZcFhubi8ybVJOWWU0U3Y2MUpheVRKVVRLdWlOZ3dUNjU1K0NTeStn?= =?utf-8?B?Wk1lbVRlSnBaSk5JU3lMSWc4aE9TdUZCZ1BKU3k1cGsrYUhoZ1J2VDlxazI5?= =?utf-8?B?aDduUXhPTjAyenVqblFtUGM3V1F5Uk56RE9RRWV5N0NIcEE1TkFRWHh0ZDVa?= =?utf-8?B?SjJhTjByVG8vNHY4bW5rU1AxT0RlMkRpMEVpQWd3MWJqb01NK3BxaDREOUlO?= =?utf-8?B?cWJsbUJqZDN6U09SZ3lSSSs5b0ErYTc1eW9oTVI2NmU5MWlDbEFaUzFiOFNP?= =?utf-8?B?RVQ1TVpCMW9rOXdVZUJTM0gzUlV6THpnWTlmWkxwbi8vVDYreUVKOHdiYnlV?= =?utf-8?B?S0FVSEVUYWdJZ2M0SmU1Skg3Qy9rQS9rcFFTeXhJT0ZDa0NET0E2UUZDYkxC?= =?utf-8?B?UGJOMWZSSXRlZWVQaW9SY3Q2UENvRjZmMkZsVkpLVWJncWVLcUpSWUN1YkRh?= =?utf-8?B?cHI2SkFyaWxsT2RoR1Z5L3g4bk9zVFFobnhpTzlvenlta1oyQjMyUlFTOG92?= =?utf-8?B?empjYmJ2dGRLVCtNeGliNW51MWhKeUpyU2pZdzRXR2xZTlAxSU5La2Rab1lL?= =?utf-8?B?WUJzME5QRVM0YVRsTjBrYW1tRk1kMmhFQ1Rwd25iNmswbFZkb1laZTNBK2RB?= =?utf-8?B?R2Yzd3lZMmxjMWFiUHJNOXkvTG0yNFE2QVNYa1dteEljZXl6c0lMdmp6Wkxq?= =?utf-8?B?SXI2Y1YwMGE2eUREVlNXOGpCZUpueWFsTHVuUTYvSW84aERzZklQR2RTVWlR?= =?utf-8?B?bjNBSmxPTC9pcERQd3Zib3FBRVRmSjU2R1IxZXNNZS9ORTM4c1FTUGdrYjVn?= =?utf-8?B?bWwyRzE4a2o1R2NFQ2NRVU15bEJLcHBVOHNheWU3bFhCU1k0NUN6ZWp4djRr?= =?utf-8?B?TVc5T3JnLzZoOHdGVmhtdmpqdEl2d3RMT2NPMGJQNlBiZjBkM2lVbVgwSU9Y?= =?utf-8?B?OVBRa1kvY1RNUE5xa3dtby9rYUlqbmpleXFwTDRId3dTMlFMSWlreEE4NUhN?= =?utf-8?B?N3gxRE01TEFpNlZsekRmMXNuNmZPb0IrRlMxbWNjeE9Qd282bkh0RXZ4MlBh?= =?utf-8?B?OW9Pb2dPNmZtZnFHQnJCK09SK0w0YkNSaGhERG5aODJzejZvU3NFZWhlckpw?= =?utf-8?B?TmxHb0dXNml2eFVJTmUzWmhiQXpmL1oxSTBRWHp5MjU5RFFJV3VSOVZxVjk3?= =?utf-8?B?WXJoZ3hNdWZsNzIxdkZTZTY2ZWdWYmxVMmZrSTZtQnFkRGI3djRyOFdpOUlO?= =?utf-8?B?VUVlWHlQbzRXZXBCdDB1MW9sM0d2a0lFOWxzOFgyWFg1YUthOWF1RVF6bGtt?= =?utf-8?Q?5b/7IkWT7kzG+Ue1bqAvG55AvDInyaEC?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1207;6:1ogKRkD8WtsswVB4i4+iklA7wSAlGRfYFauh8psCNc7YBRpdu8PCdFqtAhT3DaqpBpFxdtugLKGBe4FqmL9lSfErwXdIDx4vUCcYiviy46DUtDHrhdjjVwebI1nJpmpHdFUf+GnU41tQEyVNkS7bTRcWHhWeRLpt3kb332n9oVqhmPCQNSfUeijub+tPJWPceS2vRWGyp2TMXQdrJIgh4ZwYL9Roa03ED92j/vyY3JDVKBDtDig1oLjYtBeaYzdnandHy9Knr5309F1+IB7WM4p0ldCDAsfcUZgMussBaKgKRPWzs3roekrSl12H7Y+avuaNOPXgc13yLTypaQ61Uu3xS91rAhtXfsQp95htS/U=;5:CGxPaqiMTcTbueV9DEpmcPKkotUHPz6rcA7JWoOG0TRY/2vm/MIFVji9hVeMcfsZ3Vp1L7xLGo97A/PSWsRhPkoFOZJsI3rK20lzj3QzOOfg4ZiKDuGpREPdZ0rC1WIBARSp0UbKyaFPf5EVdV/tVF0jWI16h3/T9vZ0phhnKJg=;24:JyRNgggYiqki37Y4RdnuGHkzLQdX9yzu5QunhriLkQWCkdjfOxkSHT/3rT7WhMvoP90QFcj/V8/oZ+mvHyCYXJofXt+4eFlLEz6WqIKVACw=;7:DdHP1V7akcwK+qlgMF5m8Vep2m9qwYlxwCFjeEOla4R9lj1ClPxYv3zNXM3U7B7lTt2mJrYh0BYGc1wds961MFHp31Gr2XCfFG2FgIcTfV8yC2GPWIZhLmduUzpzqtZrCiPAksof6xn5TIrQoRfEbKA7f2FboxRRknRxcpKDMPYr5tI6UO5Wt05R7rjU0LZq/pnzl3yEupVvqq+b9QuoBQyNXSPvPnQxDgR1a8hZdA0S1YlWcxMdV4nnS97sz90L SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1207;20:k6YcsPEmyu8J4niUdjGF/7caRwNagu+AgcmwWYHiB6fZPUjTnhdIQcgdftBImBeGSizdu3sUGMsCKgqkuDuMLVy8XV2uwd2hFEoJECPy2+ZGG2La10EZ7uaanNXSFWI6sflRea9B96W9GW0jNkOkqGUBxwDZFcFcsOvGudnxB/C8r8JnBxMl9v0Hgfb+pYXgmQpCNs2tP8NUapXnuWEGgIS6agYqO8gCmPo95oNOa/kcFuWY5i4PhNn0HK6sMEXB X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2017 15:46:40.6879 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d44c3ad5-6ac8-49f4-1582-08d525f6bdc2 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1207 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/06/2017 12:11 PM, Brijesh Singh wrote: > The SEV_FACTORY_RESET command can be used by the platform owner to > reset the non-volatile SEV related data. The command is defined in > SEV spec section 5.4 > > Cc: Paolo Bonzini > Cc: "Radim Krčmář" > Cc: Borislav Petkov > Cc: Herbert Xu > Cc: Gary Hook > Cc: Tom Lendacky > Cc: linux-crypto@vger.kernel.org > Cc: kvm@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > Improvements-by: Borislav Petkov > Signed-off-by: Brijesh Singh Acked-by: Gary R Hook > --- > drivers/crypto/ccp/psp-dev.c | 77 +++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 76 insertions(+), 1 deletion(-) > > diff --git a/drivers/crypto/ccp/psp-dev.c b/drivers/crypto/ccp/psp-dev.c > index 9915a6c604a3..b49583a45a55 100644 > --- a/drivers/crypto/ccp/psp-dev.c > +++ b/drivers/crypto/ccp/psp-dev.c > @@ -232,9 +232,84 @@ static int sev_platform_shutdown(int *error) > return rc; > } > > +static int sev_get_platform_state(int *state, int *error) > +{ > + int rc; > + > + rc = __sev_do_cmd_locked(SEV_CMD_PLATFORM_STATUS, > + &psp_master->status_cmd_buf, error); > + if (rc) > + return rc; > + > + *state = psp_master->status_cmd_buf.state; > + return rc; > +} > + > +static int sev_ioctl_do_reset(struct sev_issue_cmd *argp) > +{ > + int state, rc; > + > + /* > + * The SEV spec requires that FACTORY_RESET must be issued in > + * UNINIT state. Before we go further lets check if any guest is > + * active. > + * > + * If FW is in WORKING state then deny the request otherwise issue > + * SHUTDOWN command do INIT -> UNINIT before issuing the FACTORY_RESET. > + * > + */ > + rc = sev_get_platform_state(&state, &argp->error); > + if (rc) > + return rc; > + > + if (state == SEV_STATE_WORKING) > + return -EBUSY; > + > + if (state == SEV_STATE_INIT) { > + rc = __sev_platform_shutdown_locked(&argp->error); > + if (rc) > + return rc; > + } > + > + return __sev_do_cmd_locked(SEV_CMD_FACTORY_RESET, 0, &argp->error); > +} > + > static long sev_ioctl(struct file *file, unsigned int ioctl, unsigned long arg) > { > - return -ENOTTY; > + void __user *argp = (void __user *)arg; > + struct sev_issue_cmd input; > + int ret = -EFAULT; > + > + if (!psp_master) > + return -ENODEV; > + > + if (ioctl != SEV_ISSUE_CMD) > + return -EINVAL; > + > + if (copy_from_user(&input, argp, sizeof(struct sev_issue_cmd))) > + return -EFAULT; > + > + if (input.cmd > SEV_MAX) > + return -EINVAL; > + > + mutex_lock(&sev_cmd_mutex); > + > + switch (input.cmd) { > + > + case SEV_FACTORY_RESET: > + ret = sev_ioctl_do_reset(&input); > + break; > + default: > + ret = -EINVAL; > + goto out; > + } > + > + if (copy_to_user(argp, &input, sizeof(struct sev_issue_cmd))) > + ret = -EFAULT; > +out: > + mutex_unlock(&sev_cmd_mutex); > + > + return ret; > } > > static const struct file_operations sev_fops = { >