From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756596AbdJLUVS (ORCPT ); Thu, 12 Oct 2017 16:21:18 -0400 Received: from mail-dm3nam03on0068.outbound.protection.outlook.com ([104.47.41.68]:61123 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753153AbdJLUVM (ORCPT ); Thu, 12 Oct 2017 16:21:12 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Cc: brijesh.singh@amd.com, Paolo Bonzini , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , Herbert Xu , Gary Hook , Tom Lendacky , linux-crypto@vger.kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [Part2 PATCH v5.1 12.6/31] crypto: ccp: Implement SEV_PDH_GEN ioctl command To: Borislav Petkov References: <20171004131412.13038-13-brijesh.singh@amd.com> <20171007010607.78088-1-brijesh.singh@amd.com> <20171007010607.78088-6-brijesh.singh@amd.com> <20171012184810.klt6tctvlgbnuc4m@pd.tnic> From: Brijesh Singh Message-ID: Date: Thu, 12 Oct 2017 15:21:04 -0500 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: <20171012184810.klt6tctvlgbnuc4m@pd.tnic> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-Language: en-US X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: DM3PR12CA0058.namprd12.prod.outlook.com (10.161.151.26) To SN1PR12MB0157.namprd12.prod.outlook.com (10.162.3.144) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 400b8e0c-5db0-496e-3f2e-08d511aec655 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(48565401081)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:SN1PR12MB0157; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0157;3:guAc1udB/apolykRe1d4LAQSguK5svyDcWggGZL7QykZDXfNIer/surr0uX7OknCQnJul8SbXvcviMLnZ2rVdUIAk4jURBiBya/3G73lw7M908+hB2A/R9hjnPytw5JnMlSnZIK92Ip0w9soEJ0OD2wSAVUE35AfqTzBIUVt2GNr5QAdH0Wis9Wz5Vvi4vTfrQVoOlavmXmGLgx750m04FYln4357c2J2zDbyylqmu+nPEYYmIWe9OAUww+eTSxt;25:U/GhWD+EGMTZAlN0VN5NAu+bDi/Ty6U0ddrHr1raKjEOO2rPS7PKAx3n9lJXA6QrJQbLYhou6MNs7dCUePOrHfvzJr9DF5f0FtopUTXZ1eT0c40Ka42JINAgZTvRb2kUT14VATq1MjQUA+4EAUNj/j6YQ76vLuPPShIxcfqoNHgZ+w1VBeSf8f4P5XJVuY3pgreFU2JHQO7eFdM/wrLbxXalXPIoipWct3h/hvIm/M8fKh6abMUV/jzuLdCbPSU/+JjqEQ+kl7SymLwr6KQdvUfet2+ZvmFFsPgYeGa3X/l/kK0uAbaChOhP9a8Wf+ey4E5BWdCz1KcLfxXGPk7ewQ==;31:dOGP6MnVZiocnwG4LYpftqfTzk36hr9ITXWw39cInwpsvCn0L1M6od/z7M1F+pVem3uBbYVbbiHKm1FOFZON2IQT49FQEAvDcB+AZ57XtwZCbkL5nNfWbs5RXEV+nbbKWzw5lMYhIlF7xAIJfcY+jyCAhzWJp1YsJH/dUah5u+LAINkFBNaYbkKp4LmdX3YP6HqVMEj7zxOz5pfaSwqbvpag5IAl2ivBNBfUo/4G20g= X-MS-TrafficTypeDiagnostic: SN1PR12MB0157: X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0157;20:AIdmENvP/VZSRSdHepQX34uXZ/en9+Do0xwQvJNPIKkaG2EOM4oIFrSU9pTEIWAiwT3JIzPS+hDuvE4ZXcagOB8CCHtKLgLzVcVU40cIBLZDcHRGWo8L8TwlheZ3qPUFs8HBMqiqgNgvjSvF9varADweJ93+xvuPZjq4fi2Z1zbQ6LbiiTQ6GX7RGaw95IE+GNFTVw3KUbBiQ/TefOqeZQ4nNNxpd7O7o1a8OzZaNovsHToBXy/t3XDO6uBDfMdpR9lgtW5pcqUgbBFF8Rg+aU5JjtH4T3kN1vYSUqaJT62qCC/07IUwQtku/y7G9+SCPdgrvGe05o9ZQqhFzc20nCEIIWTv4I8OQ+vsV8tp0qyx1QX6b1F1GLBC9EiWQqKRSjY+j4b1Cv2sO/PFVsLinJlPnUvM66CsAtl/nsocGvhlRwVVjzd6+isiUTup2XbWm5klZfgpGytZERtAdSck0MlAjnFa2AScLyysUpSQuGpcJ1LFQS3jv1l12l/jL9Z3;4:+M4gV7Ykb2KzSKGWi8x/caIstUsKuzorC4mKJFdtvmRt1vvMPxDj305l97H8P4Mzt+UDnG2OHOs7crBRFQN6GNFdWNjzZuL4pAAX7O/P+bYOUsS1g1ADLKqO6FrpGCeDjCsJ8uJYMswk6kj/SXYro485rDe4KQwfyzXZXCvCAl3MNfIQCf7IRAaIaqVr4ChCqgOk1FpA+COxr2No4/f9Eu0DvaCoonqyrVepigJANuuPsJAc68K+0lxLTXwZ/ppuDHGgb99z2qxN/Tn0cL5m7sXUVFigzBqeGUvWVv4yD11+wOwPq1B8m3dFnnUsEUeF 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)(8121501046)(5005006)(93006095)(93001095)(100000703101)(100105400095)(3002001)(10201501046)(6055026)(6041248)(20161123558100)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123562025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:SN1PR12MB0157;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:SN1PR12MB0157; X-Forefront-PRVS: 04583CED1A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(39860400002)(376002)(346002)(199003)(5423002)(377454003)(24454002)(189002)(6116002)(93886005)(3846002)(53546010)(189998001)(8676002)(81166006)(53416004)(81156014)(25786009)(86362001)(54906003)(83506001)(2906002)(33646002)(31696002)(2870700001)(106356001)(229853002)(58126008)(316002)(2950100002)(6916009)(8936002)(105586002)(6666003)(6486002)(16526018)(31686004)(36756003)(68736007)(66066001)(65806001)(65956001)(23676002)(47776003)(6246003)(53936002)(97736004)(76176999)(65826007)(50466002)(4326008)(50986999)(64126003)(5660300001)(54356999)(478600001)(305945005)(101416001)(7736002);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0157;H:wsp094352wss.amd.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjEyTUIwMTU3OzIzOlRsOXN1OVF1YTNtRUZ3eG9CZm1BWUdmYmJO?= =?utf-8?B?dFpjOXlhUEZiUmxuSmRSVE1oRW1aSytaTXVrMTRyUm1oNlRGQkF0MUF6MHBD?= =?utf-8?B?SHR4SGtPR0QyQ2xCWHRhNmdvWDhVcFhxa0dQbGxsaE5vQTI0V1J1K2haeVJr?= =?utf-8?B?WGhiUi95NE82QUN0RFkwdjN4Z2NJRnRGNzk3cldjbklBT3JJUStMZkFPL0wy?= =?utf-8?B?WVg4ZkYyTmJZeHY5R21GM2VMQXVsNzBkRG1rY3UwenJuU2tVK2lmRi9PMHRB?= =?utf-8?B?M3ZjL2NEem9YUDBYY2p6K1pzVVVFWlhHb294dkUvem9EWHAzV2liUkNLV0Vw?= =?utf-8?B?akpwOWhQdlU3OTRqSkZ6UzRFbll5MkU1MXlNUFdnMnRXY0RKSGZLRmlIOTFX?= =?utf-8?B?czljU0pFcUwyOEQ0am1zUXpTRlBFOUh6SnM2MGdrdmZHdERZTjhrbGdWUUJO?= =?utf-8?B?K0JOMUZJOXh4dUZHeENFWGVEdjlSQzZHSU5kM21rSVM5bk1YNlMycmhkaGlP?= =?utf-8?B?UkgyUWd4SEFkZDZUNWZLQnJndGRhWXY3SGU5d2NscnYvVnMxaDQ5dFJ6Rk9Q?= =?utf-8?B?NlhnemxCYXVwVGIwQThuYjZnb01CckRocm1IbmdrYUc5S1F1K1hrdmowUUkv?= =?utf-8?B?MEgzNzhmL2ZJN2NITUhreEs2RUNZNHZOeUNKdXJ6Y2RNSjNjaFBMQm84Q05h?= =?utf-8?B?Ujk5dlI0M3UwbU5wVzNYY2dUdlcwWWNrUDM2eG9tRUc3Wm5NbU53WlIrY05l?= =?utf-8?B?bmpic0tnRkpDaDkwVTZaNzlpdjFpMkFiNGYyZXBIMWFrWnBrSTIyNW9IVGU3?= =?utf-8?B?K0NUMllnSFpka2xJV3RVM2krdTY0MWVyQ3FPVkZ1VXdOSmpmTTR4TXhWVzBv?= =?utf-8?B?dmEzNTM0ZFpxVWpORnlaaDg0NHc5aU9HeGhxalJjdDFUNGx6Wll6ekdBL1Nz?= =?utf-8?B?SlRuclJLdVRPV3Q0b1pDQ01GbWVTSFJBb0pJT3E3U3pQTFBQZDZXRHZQVEE0?= =?utf-8?B?NDBVWDRpZXhsUGxDcDBIbFZDdGdxcWlNZkl6U2EycHRFSDJLOHNKWHQ4OW9l?= =?utf-8?B?bVppaGRuVzFNNmVYUGJqYzRwdnl3c2dFTEl3TUxRSm0zRGt1REk2ZmpmWVFm?= =?utf-8?B?ZnAxMWZkRnFYaVFmMW4raHBqd2tPVjkybWpjVnFhZjM2L3VMVVlSYWtMRlpo?= =?utf-8?B?R1RtZzZwUW9TUXhKZVlRaHVleEZmb1VEcTQvSHl0RFdQZTdqenNYWkdpVWl1?= =?utf-8?B?SC9kY0dvZVVRbHpva0xNVzlQTDFBSlZBb0FBNGM5U3VoRHJpdUUyK1luNDM1?= =?utf-8?B?eGkxL2xGeG5QalY4T2NScXVlOURSTDJYVWV1cWNyWG9KOGNwZllQMWpURnNJ?= =?utf-8?B?M3kxZ3RZM1VpZGJNUUFvQnJuYWRvNFRqRHdQU0pKVGZLdXUrTzdkSjVmZmkr?= =?utf-8?B?SWtKcmNrZTNBajlSYzE3T0c4dHEydHpaWkJiSXhpVGsxVDdMMDFOZ2ZXZlR2?= =?utf-8?B?dEdXd3lXZmk4TTBOM3ZOR2U5UjdOejAzWXhoNnpGRmhCZERXanA4cTd0WjdK?= =?utf-8?B?ZnBpTnBOUDRpM3RKbldIdVBQTmMvTGNtVXZLVFYxNTNXb3NwZ0taWWFPSTE5?= =?utf-8?B?RkVaS1Z5S3NIOVh2OUUzNkJVc2hoUHBQQUgwRmN0Q3FhTSt2WTRSRGV5WFBZ?= =?utf-8?B?Y3ZzWGJkZmZlYnVGYTY0MmdOQ0psZHVyTmFYQjNJR1RiajJyOFBtNDhoYWlV?= =?utf-8?B?bXdFNjFSU2o5TmdjM1NyY1ExdTZscW95K3llejFmM2tpRng0SmhOYTVIa0px?= =?utf-8?B?bGpmRHN2YStucE9UbWxmS0YyaGw3YzdhR2g1c2RYekdYSnUzZUw4SFhnc2tU?= =?utf-8?Q?D2EiMz2k9O7qsSt/yWIbPdmNMr8DyDP5?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0157;6:nBgqA+GnfxnI6rpvB+y2/GO5T/Zpmj6YUzw0N6/Qj2siAbt0vQxOnvguNnWQPR6228VDZ9UyLR5i7ICxDXomI6isy8WAXBclLXzUDSnqtDgHJ6saHvFuu4PIAzPfRVPD8ZmUy8UAtq4CIqGr3b97LGpfoSVAiZG3UxwMR2J7X6d3QUa4bhA/yiG5jkpzecfJq6L+3J7GzWI4VdMUoSAVFLTj0adyyavNfajlCoweuhZ08a4NrTnzAdj/c/xbez99V/P8zYUDh4KzD8OwMR1OGk4scBCwixoIckB98JQfIzs1g6GZsKK3vo19M3WfpfZCRlOZaEeE5hwFnBebW1BwfA==;5:/6ehlQEJkOYnT+GcXnk+Mbw0MGDLsXZheG1RY15nARmVRqC0k6q4Gj27YtfakgxiCEbSYJFfL6rlVCjD36nh59MmHn0KrCWu2nalKh36gqsJCQRURqjGj5VUfL/I9Rn1qystg/mPAxBAsMXgERshLg==;24:qv89mNt7R0B6FmoxehcY0mScuMP8nxSOFBJD3njD2naY93BeevwuQ7cYcObRig8CuQIgLd2sWXNg4UNDAL8NDJEh2HNuMhmzLIqzr8PjFoU=;7:sWryQTcKDs+TGsuSkxBQBK0G5X5hCBb8WeffeHJG/Edjcx78+8ThYWRbQ9aco1dO8cVE4ps79aOTMudN6n+XNF/kafsVaxh2km787humVl3DrSp6AImV7YcYuPj7Bj/yb9B+ISCQXoyCOUzq+SOPqI2+ckSGj6PSrgiHccIh2Lg5zYyBGOgXcWxcNReyt5LEPVQTo50DqlsL+920pp7lnGfXxAGnS1i2stlefOrlNBc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0157;20:e4sSKUz8XZP0SgITFPNRikPPEQa+o3fkBAG5sllyVRpW+4JYGbb1xd0bJU14V0ZwUBh8tzMY0dbL1rt7GfuQ0Aw74jpV/YmlB8l9qe+24UAJE0yBVhb2b7pUV7lQML66ODjdrKV8uyuEmmuVk+M8i/tDfumDn7kZrD5K4/Ws/Q9Y2l08AN3xFXc7ZWneWgydJ01c1a78n1jVXGBC9EU5Tdgq3J5oxUeXKo5awGbhkHbbWAf+kBbPWGpBoKrE1f1W X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2017 20:21:08.2875 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0157 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/12/17 1:48 PM, Borislav Petkov wrote: ... > On Fri, Oct 06, 2017 at 08:06:04PM -0500, Brijesh Singh wrote: >> The SEV_PDH_GEN command is used to re-generate the Platform >> Diffie-Hellman (PDH) key. The command is defined in SEV spec section >> 5.9. >> >> 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 >> Signed-off-by: Brijesh Singh >> --- >> drivers/crypto/ccp/psp-dev.c | 32 ++++++++++++++++++++++++++++++++ >> 1 file changed, 32 insertions(+) >> >> diff --git a/drivers/crypto/ccp/psp-dev.c b/drivers/crypto/ccp/psp-dev.c >> index 03d7bd03ad58..28efb7a9245a 100644 >> --- a/drivers/crypto/ccp/psp-dev.c >> +++ b/drivers/crypto/ccp/psp-dev.c >> @@ -271,6 +271,34 @@ static int sev_ioctl_pek_gen(struct sev_issue_cmd *argp) >> return ret; >> } >> >> +static int sev_ioctl_pdh_gen(struct sev_issue_cmd *argp) >> +{ >> + int ret, state, do_shutdown = 0; >> + >> + /* >> + * PDH_GEN command can be issued when platform is in INIT or WORKING >> + * state. If we are in UNINIT state then transition in INIT state >> + * before issuing the command. >> + */ >> + ret = sev_platform_get_state(&state, &argp->error); >> + if (ret) >> + return ret; >> + > Why isn't this function doing: > > if (state == SEV_STATE_WORKING) { > return -EBUSY; > > like the PEK_GEN one? We need to follow the platform state machine logic defined in SEV spec section 5.1.2. The PEK_GEN can not be issued when platform is in WORKING state because the command actually re-generate the identity of the platform itself (in other words re-generate the Platform Endorsement Key). Whereas, the PDH_GEN command is used for re-generating Platform Diffie-Hellman Key which can be changed while the guest is running. > Because if so, you can convert it and the PEK_GEN one into a single > function doing the work and wrappers handing in the command to avoid the > code duplication. > >> + if (state == SEV_STATE_UNINIT) { >> + ret = sev_firmware_init(&argp->error); >> + if (ret) >> + return ret; >> + do_shutdown = 1; >> + } >> + >> + ret = sev_handle_cmd(SEV_CMD_PDH_GEN, 0, &argp->error); >> + >> + if (do_shutdown) >> + sev_handle_cmd(SEV_CMD_SHUTDOWN, 0, NULL); >> + >> + return ret; >> +} >> + >> static long sev_ioctl(struct file *file, unsigned int ioctl, unsigned long arg) >> { >> void __user *argp = (void __user *)arg; >> @@ -300,6 +328,10 @@ static long sev_ioctl(struct file *file, unsigned int ioctl, unsigned long arg) >> ret = sev_ioctl_pek_gen(&input); >> break; >> } >> + case SEV_PDH_GEN: { >> + ret = sev_ioctl_pdh_gen(&input); >> + break; >> + } > And those curly braces can go, as before. >