From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753135AbdJLVLd (ORCPT ); Thu, 12 Oct 2017 17:11:33 -0400 Received: from mail-dm3nam03on0060.outbound.protection.outlook.com ([104.47.41.60]:50944 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750990AbdJLVLa (ORCPT ); Thu, 12 Oct 2017 17:11:30 -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.2 12.2/31] crypto: ccp: Add Secure Encrypted Virtualization (SEV) command support To: Borislav Petkov References: <20171007010607.78088-1-brijesh.singh@amd.com> <20171011165030.115696-1-brijesh.singh@amd.com> <20171012140816.6siefvahj6ww7uzf@pd.tnic> From: Brijesh Singh Message-ID: <622585ce-c575-29ff-0484-404b7cf684fc@amd.com> Date: Thu, 12 Oct 2017 16:11:18 -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: <20171012140816.6siefvahj6ww7uzf@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: MWHPR10CA0066.namprd10.prod.outlook.com (10.169.238.28) To SN1PR12MB0159.namprd12.prod.outlook.com (10.162.3.146) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9ac580b4-8ab8-49ea-96f3-08d511b5cdc5 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(48565401081)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:SN1PR12MB0159; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0159;3:cK4qOK5hciUE0aa3LjrIrtlOPe7sP4Ecv08y9CjGZNhQ3WpjadepXOfZKpHdZ1nAiOhAXIpnDTlqN2FaCH5vJpb+ZsJ/LeSAadm3yd9XSmumPWgZXF5Uf/FsPDp4o908rZq+/doQ0TcGLqYv5nVNrxcDrMRTo3l4sdyP48E4aACR64fk/Nw/O2/zKhLM96bXRqTl+M7Ry5l4VUVuhd+Cpqy3RMHoqfZscHHmuofLW84UxVya9AfoG5O3hbz1O2gi;25:D/phh7v/Q7BGmfdLlT2FGXq4lp2BKlUd91TCuFmSrR6/tKCIYKv21ExaohT6pH+weEIT47vp2U70noszOICFP2YqK2pbb8yGhnvKPwH2OdfOL+1cRCRRYM6+Vx5Evfz81aI8d2kq8z284Q624FGKZcdKtwjlthI1cof4I1w13PrVbnyDS44cHfXo/P4vsvXGTsp5f/Cjsf/eI0/FtSO4H897GsE04hMguwno9JXcxrmsYBfyherNe16shbUoL55xb8D+B7APm5nX6zLKAxXVni5I8fsoOBxK5XXlpNKMhiINMRE+6BGL6+JCr1RJi1Fnp6x1on0VBWE0F+x/c3482A==;31:ngB59//gRxVL2FkIaN7T3yVMq0dwDNcdp5zaauRZaaaRNanxdfU64eU0qpEFAanvFrFoAt2PImIz30d34OBcbzh6QdbbvZd/EP6PwlVxmrX8N5OKEP8FqHiJ6Nxz4m9uklKsuG6z/X4xP0msiEhlaZmVgu7xQe9bKA/HCAqpEGubxbaB63XGvo8B+tcRGiuwJXBaY5+SLnM16J1M5C4lLIJ2FcbWnQqe9m5RSdFQABo= X-MS-TrafficTypeDiagnostic: SN1PR12MB0159: X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0159;20:TB4hehxPzHdgxqdFyT1WWNsFuPpqsJJ9oOtnvcyC36YJPO9YB+KeHjWV+AVeS0sZi4Gu7VfWmCdCtQ8GO6I43wsk+MPTIM+EOWWoDETjCJrgVUS24CsjrW21RikEWRdHpBzQotNgdYH8B0vydbN5is/dDxMoMEX+0JPycbLWelqqNSuOlgACC3Uu0NPjtkcI4Uu0RiCQPT5g7utx481TYRcg8NUnMqF16hIBiE8ZdaxLZ961thYvFQGSJQoGZwkiGDc1YoZZNsv/lA3VulP2/NLSsfGBMwT8Jr198l3R6GF574J33StL7aul8ckv3HIrcFYevEIdS6Z7MaeBMpjoDz1U7/F9QxZ4vQfyLxldTppYmycvBBYqPGDMELS4zMps7RW7QmmshGgfpktThsYFewxJzvcgyR3jrViueQVxm8Kbb95f5f9iCWmd9ar9zeBuhDGUJ3YXGJ24eVPT02UliW2zTMBWmfxdT0r9ceyKQUwhvEbBx94GzeSytZUQB/iv;4:RPFeLYdsaFTrJ0C75z20YPAENNCb/eRbrs7VX3OUCLU8ekVzchgfqPhAB2ZxSdiNNSNReJ0y/bUlkoerw9jSZnPQkyl/3zmOAF8XjVt7wcMOwyJCGvRV3u8qSwGeB7w9X9UxsxuyEvJ24+RIwQ62BSRoLdg+vsshsvfAGc91TmF59x1qhqdzkeXeGHEuKIHgeJ3mgGobX5s+uW+RZuk1r/2hNZkILA8LcjE7VW2f3ve0QYraanmz8KEgMhn1iVyE X-Exchange-Antispam-Report-Test: UriScan:; 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)(10201501046)(100000703101)(100105400095)(3002001)(6055026)(6041248)(20161123558100)(20161123564025)(20161123562025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:SN1PR12MB0159;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:SN1PR12MB0159; X-Forefront-PRVS: 04583CED1A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(39860400002)(376002)(346002)(189002)(377454003)(24454002)(199003)(5423002)(6116002)(8936002)(16526018)(189998001)(5660300001)(8676002)(3846002)(83506001)(4326008)(65806001)(64126003)(68736007)(2906002)(53546010)(23676002)(2870700001)(6246003)(50466002)(65956001)(66066001)(81166006)(2950100002)(6666003)(54906003)(81156014)(33646002)(6916009)(6486002)(31696002)(31686004)(86362001)(58126008)(478600001)(50986999)(76176999)(316002)(54356999)(97736004)(229853002)(25786009)(36756003)(305945005)(47776003)(53416004)(53936002)(105586002)(7736002)(65826007)(101416001)(106356001);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0159;H:wsp094352wss.amd.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjEyTUIwMTU5OzIzOm55RnR2Tk5NWU8wVUJUUjZreWFQV2s4bDRi?= =?utf-8?B?Z1dVVitFc3ZMb0FJcmlpQVM4WmNnY0hjMVcyTURGVytOVE1kVGlCQTBVQ1Na?= =?utf-8?B?TkFwYmxDRFd2OXVodUI4RHVWWisvL0pZSS9ReE91SW4reWs1YksyUU1OV0Fu?= =?utf-8?B?M3dIZ2lUUDRSRWtJRHVWRUdvVEl6SVgzQzI4WlcycDJYV2h0MFdMc01xcnNV?= =?utf-8?B?M0lkOGUvMTBzbVNicmpYdDdzb1hoWTZYY3ZqdUN0dURqRlhtWGFXY2p1NzNX?= =?utf-8?B?OHRMc0dWYTRiUmZTMSsycnd4Q2ZPakNYSUxhL2xUbk81ZnFQQkkrbVZYUWk3?= =?utf-8?B?ZEVaU3FUME9hcUFGeHl4bEk4SkhIZm53QVFjRmV0NmFpNnNmU1BvZG5uUGhL?= =?utf-8?B?QXJreWJkUFN0eVFnWVRjSUc3V2ZQOGRhWHd0UVBWUE1acTRlU1U1R1FQNUFM?= =?utf-8?B?R29OKzYwY2Q5OUYyUkVwNTZxcXZacGkvS29yK2JIWGoyRi9zQ3dlUC9BbHM1?= =?utf-8?B?LzdGcmRvTFZLZWg3aW0vZkhYNHdvc0dFVFpXSTA4N1BUaWpRWjJyMnBObHU0?= =?utf-8?B?RjJaYWtOZzY0SkhWajFRMjJ3czNmUE5kMFFJejhZZ0JWMGc5akV4VThacjRF?= =?utf-8?B?UGs3dk9iMjdRbjQyYVFoNDEwOWNOWjY1KzBWaGRGNEhBMVo5amRyMnJ6YUpp?= =?utf-8?B?SlJncDloTzkxM1FZMllXYWhCNlkwWmN0L0J2WDN3WW80SGZvMElaZk4rMmh5?= =?utf-8?B?clBHQ2RNY0xidDBObHNvV2JlUHdlM2VYSmVpd3Q5MytCZXp4S20zNXFackkx?= =?utf-8?B?TU14U2tMaCtTK0VlQXQ2L3EzUVc3NS9MeVN1cWZQT0xmcmJkYVlBUTdqWEc1?= =?utf-8?B?YkRXQWRqQ2haK1BKdENhc1FIbEpZQkpEemhyS1ptVkxxcFJzYTl0UHovZ2dO?= =?utf-8?B?K2wyVm45dUtZNGxTUGEwL2s5bXdtdm56aW5lV1NpdmhVMitnWXQxbXVTQ1Jl?= =?utf-8?B?ZGhGUHFBamFHUFROamVzTFh2YjJVTzkzQXV5bXduemJWOUdvd25tVml3ZXJO?= =?utf-8?B?RXF4NTNFZDRMdzNJa2N0VnF5VEdMclhnL0VTa1JadU5saVZKcHBtTiszaU1V?= =?utf-8?B?RHArcWlyQXFWOUUybVR0Q3dLNlVWSDRZU1lRVG1PS0E5WXJ5NTFOV0VnMmJk?= =?utf-8?B?REphUXBmU0thL3JsRTFRTTVHV2lMZk93a1pCN2RTcWc5Vm5PajRhOUJSbGpa?= =?utf-8?B?ZDR3QjhNYlNFdU8rRVJuMityMDM4MnVpNUdKcU12a2RZZlcwWHRSMVdCY2VR?= =?utf-8?B?ZENvcklPYjBXaU1BWmI5V3hDbHNheXh0eHozeUtvQVlUelZFaEViY1JpWmkw?= =?utf-8?B?bEM3YnNhRk5KS1dYTDJZblFVQksvRHpNUE9vTDhGYzN1L1JFWXpNQTNaZGhT?= =?utf-8?B?cjVHU25SUVNlVjE0TmlSK1BGT3hoc24yaktJOEJXbkplY3EwOEwxOFhPT21Y?= =?utf-8?B?Z25lRVM2ejBxYm9oNm1EZy9vOExxb09USVpwOVhONzZBUWZjUjE5ZVpyNjdh?= =?utf-8?B?dzZKTnR5YWc2blN3M3NxWlJwRFZiSC9SeDM0VDBBTTNvbEJTTkN5NG9jNncr?= =?utf-8?B?ckFxc2hNajl1ODQ5T2NXTzdtL3lKWTh3YWhucnlsNkRPRWp6Yi8zR2ZrakNv?= =?utf-8?B?eGsvc05KTGZHZFhiZzkxelNiazlTaTBFN0wxR3d5NDh2WWVweWhIaS9udkZR?= =?utf-8?B?Umx5L0N4Unhlc1Q5emJ0OXpaYTZDMU4rQ0ZUS2RzaDdDaG9sbnJlY0lOUjcx?= =?utf-8?B?Mi9KT0w0emVtT05GUkc4d1VvY3JBZlVXaWVqQU5LcXlUSEM3a3F0Q2IxcE8x?= =?utf-8?Q?rnCQBHtgycg=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0159;6:BsSCyysoZnf99bLbtPJh8Uwm+lwUAcAYa0HFWHwaFyK7C1K+AILTG3IsjWfViX3pOpSoIIr7LcDB1aA/T3Eb/jl8ViIpKktrTXPfuCdajKs3XgKG/JVa3ijEmXVneyTFKxLOlJQh4onSzvZA7ecz59bPpHxIYRJIcFsRb6iI3fIubccTdl135DYUqiTdfkeN8QCRV47nfawZXyTCoAWxVlSElhp56rE/9UaiXdx9SFtL0BmvDjSIgfrqLqK5VFUS/LgU2SDyd1wlSHryxqhR8v555XFLrV6jlxQOUVbpindT1Codt2L+8bBsnN1HduUAZsN575wpJnsAcfLzGNdCQg==;5:QH+2gGbiIt4DOJkuXwAysnrBib56JSB4o0nxIBmlDzJFxFfw1sttk+J8TSrvJcM3oC7mNfNBtGBvjSuJ5EV0puFf2d0s6B9Aa4HQQk+vdHfTQ2mbYpP8BitXvFBBx7bKIq4itq1OMa2hMhPhjQk8Tdzt1jsmJXLLrA33swqaAOc=;24:IeCTPuFoaI/dRl5SBMUW0K/J8PFPUOgFWBPn1eT8Md8J3xUJhan+CDcwn3sonYDhJ7golzHUBUmVyH3UM2dLjIZCryYHi9jB/FwyBamlEfc=;7:h3AW0enyYnwL8tpCkG1er04ttSAk9xGbkQuhlSXCyNr4I8eHiEqbAb9PRi2GWJQBbrMnU2HouPj62cpZ8PCXo4O4hiypNiHACvZaFPINKe8/rdGMpqPEJZ+X0i1GnPb+YPLoCboiPpMyw1uRSv20tBIZuF1jt9A+ygc9KwU2jc8tECZeCRW3Mhph+UHcU+YBc1qLoYe2gLqCABVanJgGqTMzcHvhU5pZHscxtyQ3/qk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0159;20:2x4NOfsgSW8j9c56FT0/FCayl48+JoeDOyRnfJsKyUsekFP3CBLLPpFz170xSfKzFFl4zxuk6cEA2cthPazNRJLur+bimxFUQ5i0Nlq9rRNPAjw7utVK9sBuRl9/1TNu2sroVuKPehI/cB9FsQb1/8cmEJMR2KtiI39BsIIXUQOmWCsppomyXk1vNwlNYc/d5IYEeCyGGnQ0PaIWYBLOR+zSf3/B1qyEBu2BwXwyorx5/F1ZCbBJ52pl3YFDVhBl X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2017 21:11:26.3078 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0159 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/12/17 9:08 AM, Borislav Petkov wrote: ... > Well, if you're going to have a global var, why not pull up the misc > device instead? > > And mind you, I've moved out this assignments: > > + psp->sev_misc = psp_misc_dev; > + init_waitqueue_head(&psp->sev_int_queue); > + dev_info(dev, "registered SEV device\n"); > > outside of the if-conditional as I'm assuming you want to do this for > each psp device for which sev_ops_init() is called. > > Or am I wrong here? I am OK with your patch except  one minor issue highlighted below. > --- > diff --git a/drivers/crypto/ccp/psp-dev.c b/drivers/crypto/ccp/psp-dev.c > index 175cb3c3b8ef..d50aaa1ca75b 100644 > --- a/drivers/crypto/ccp/psp-dev.c > +++ b/drivers/crypto/ccp/psp-dev.c > @@ -31,7 +31,7 @@ > #define DEVICE_NAME "sev" > > static DEFINE_MUTEX(sev_cmd_mutex); > -static bool sev_fops_registered; > +static struct miscdevice *psp_misc_dev; > > static struct psp_device *psp_alloc_struct(struct sp_device *sp) > { > @@ -242,7 +242,6 @@ EXPORT_SYMBOL_GPL(sev_guest_df_flush); > static int sev_ops_init(struct psp_device *psp) > { > struct device *dev = psp->dev; > - struct miscdevice *misc; > int ret; > > /* > @@ -252,26 +251,24 @@ static int sev_ops_init(struct psp_device *psp) > * sev_do_cmd() finds the right master device to which to issue the > * command to the firmware. > */ > - if (!sev_fops_registered) { > - > - misc = devm_kzalloc(dev, sizeof(*misc), GFP_KERNEL); > - if (!misc) > + if (!psp_misc_dev) { > + psp_misc_dev = devm_kzalloc(dev, sizeof(struct miscdevice), GFP_KERNEL); > + if (!psp_misc_dev) > return -ENOMEM; > > - misc->minor = MISC_DYNAMIC_MINOR; > - misc->name = DEVICE_NAME; > - misc->fops = &sev_fops; > + psp_misc_dev->minor = MISC_DYNAMIC_MINOR; > + psp_misc_dev->name = DEVICE_NAME; > + psp_misc_dev->fops = &sev_fops; > > - ret = misc_register(misc); > + ret = misc_register(psp_misc_dev); > if (ret) > return ret; > - > - sev_fops_registered = true; > - psp->sev_misc = misc; > - init_waitqueue_head(&psp->sev_int_queue); > - dev_info(dev, "registered SEV device\n"); > } > > + psp->sev_misc = psp_misc_dev; > + init_waitqueue_head(&psp->sev_int_queue); > + dev_info(dev, "registered SEV device\n"); > + > return 0; > } > > @@ -288,8 +285,8 @@ static int sev_init(struct psp_device *psp) > > static void sev_exit(struct psp_device *psp) > { > - if (psp->sev_misc) > - misc_deregister(psp->sev_misc); > + if (psp_misc_dev) > + misc_deregister(psp_misc_dev); The sev_exit() will be called for all the psp_device instance. we need to set psp_misc_dev = NULL after deregistering the device. if (psp_misc_dev) {   misc_deregister(psp_misc_dev);    psp_misc_dev = NULL; } > } > > int psp_dev_init(struct sp_device *sp) >