From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932694AbdJ3Ltj (ORCPT ); Mon, 30 Oct 2017 07:49:39 -0400 Received: from mail-cys01nam02on0089.outbound.protection.outlook.com ([104.47.37.89]:43901 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752521AbdJ3Ltf (ORCPT ); Mon, 30 Oct 2017 07:49:35 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Cc: brijesh.singh@amd.com, kvm@vger.kernel.org, Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Paolo Bonzini , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , Joerg Roedel , Tom Lendacky , x86@kernel.org, linux-kernel@vger.kernel.org Subject: Re: [Part2 PATCH v6 25/38] KVM: SVM: Add KVM_SEV_INIT command To: Borislav Petkov References: <20171020023413.122280-1-brijesh.singh@amd.com> <20171020023413.122280-26-brijesh.singh@amd.com> <20171027202421.GM12039@nazgul.tnic> From: Brijesh Singh Message-ID: <0a02006d-bb76-b2dd-bc90-afc79003abee@amd.com> Date: Mon, 30 Oct 2017 06:49:29 -0500 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <20171027202421.GM12039@nazgul.tnic> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-Language: en-US X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: CY4PR04CA0042.namprd04.prod.outlook.com (10.172.133.28) To SN1PR12MB0158.namprd12.prod.outlook.com (10.162.3.145) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c100d214-52d6-42a5-793f-08d51f8c4930 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(4534020)(4602075)(48565401081)(2017052603199);SRVR:SN1PR12MB0158; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;3:OzpH8EbwduZ24RfoHh9lFdI/a+KRBDEzqDBDRrxHz5NwofKilreCdrlLIDEQe2QPOmk5OTpuiR29azU1oEvwmnj6vXsniXsi3ysiN7kbHs5Q7NDUrjR2zB61lBQBLRy9aM2XG73XwTd1PMT/t8RT3ON8OjxdU++T6/JoTP+g3KyCqt6UsGQ5mxSs2cEvZkCK+FqvsfIzEBM42oJsYWcsoQfJ/Dt2svTaExxoZ4O9ieZI344Wml6zEeHne394en0p;25:KbTiY+xKdntdPk4QfnbGYhvPNoVILgQ803C6vSwIWG3hSy3E2YUZz0jHIpamF1Xwo1Q02BwETD2TjNFDYCA4ZSVIAUSpg0FEqMKZOacan3hsJ75O/v686ra/uc3uHXPz6pX73yRjenB3WEKJr6cnIbov6m8qw0xhImd5PM0WmEmBcvlo+Z5eTTUX+UPq4G67YQjA3eBYaJSFsROllALcBDyuixB8ziWPndrg76XKfp888PNnHqJrlG8kJ+/Ngci9CwuFLzpycXQL2MoIK+b6KXIiQ6zUGDmpjl3HBbX0ZJNdYBFluIkQgDFIfCSrIqed17YH5RXN/S3LgAGg7VPiH2LxDQ3YeH6MO+BXjkmebnc=;31:piKn0ZeNhbnVFVIAw7nYTQR1sTXwBpAM2m8jkEpFzXkMS5JVJHlYQb1qF74ncVwvLOnCxv6+zwuKOgfgDD1diJXEfTFfQddGHnVTVV+f/Q+rO9gld1twoxi0mpTpyW5NgwpxhfvrJaDJNdDohTwF/D52g7QHyADKOgyQ/WrJcJrqxviVf6RHwaNBzxHajzQUHHiGVMrzsgdbJd1a+fbP90eVDj2emP4b3Tk+vM4aAqU= X-MS-TrafficTypeDiagnostic: SN1PR12MB0158: X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;20:z8r1DYscpsPekNcvYWR9HhSQo3GIWWS8Y7zkud5SSpFpXE01nTZMhR+WKSnURqD5JEZW88hldV8cBDCWlYZyS8gDbJeay7SY2SBAuwT7aYAWAYQKcpebx5lMtb8pYhxTbbVI/x1Ta7p1A4+v6w6OtkO077IfT9KiyjoEFIPO3GYSx8fNreB7OJMeUKYB2UKo+awgHU0Gj3ctBSU0m7C/ggfFa4kImWiqAB3HPB2+AdBXt5wMPi68QE8LCIL8Rzxcynep3KtDb7LAAo/4E5xeR0VtOIqOwUM0TrmcjjQSB+7fO/JDLwyD9MyzdtRGeSG4tn3X15amyT8ghuYCXHkS3qQxXIfXPHx73V+WRbQu9zA5AAKyFBXeOkPTXce9U+QA61SOweLXA3BWFI07qJBe84wUoNdw2A6poow2i75m3vEthaYF857CJmKpQr1Cz9fJFPsbtbrCIwdKvJgl5OUblvtjQ0+LQZIXZ174lev3lr2/egDOcMXiFEfod4O6Y7Uf;4:KEzch5JoGXiHjI2SInDWyTMjUOT9kOoiJ4Vt4SH1e582QhneM0Nx0QfW97MMZrI36/rGgA0EFVKyvRLlCGq6KlI5Ff1s/kJo20hibMEmuHjBRAoMNpGoGgpX29LQEIUSjF783ovPrUN8uSDnK3B1LUgyLGMwMGuq3LAhSbeswos6MzQiBvLE+s0z4C4SdLbaikOG0q9A/XwIhiPXcaxesyaTqpiq+0Rs2qrAFmvWh5ClDnmXwCycWnTs0KdUpsQCWcV0V/MRqnAjspBxFubnrA== 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)(100000703101)(100105400095)(10201501046)(3002001)(93006095)(93001095)(3231020)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123564025)(20161123558100)(20161123562025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:SN1PR12MB0158;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:SN1PR12MB0158; X-Forefront-PRVS: 0476D4AB88 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(376002)(39860400002)(346002)(24454002)(189002)(199003)(478600001)(54906003)(2906002)(25786009)(47776003)(33646002)(50466002)(53546010)(6486002)(81156014)(8676002)(81166006)(229853002)(97736004)(86362001)(68736007)(189998001)(31696002)(8936002)(7736002)(36756003)(305945005)(76176999)(50986999)(54356999)(83506002)(101416001)(3846002)(6116002)(58126008)(230700001)(53936002)(16526018)(4326008)(6246003)(316002)(65806001)(7416002)(31686004)(53416004)(105586002)(23676002)(106356001)(65826007)(66066001)(64126003)(5660300001)(65956001)(2950100002)(6916009);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0158;H:wsp100886wss.amd.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjEyTUIwMTU4OzIzOlI2S1h2Y1RMcjB5ay9HOXhiMEZCUTczUWJs?= =?utf-8?B?RTEyak90anc1ZGxFQlRDMDErL29lRHFtY2FZYi92a1RSeVpPTi82Y1NhRC82?= =?utf-8?B?QmZRU3ZySEZydlNHMnhLYy9zSUpOWUpGWXBFclVacFE5OVM4TVlKQk8rUXRo?= =?utf-8?B?N1BwclhtTktKOVh4TkpCVU9aZnFSak02MThKQWVZTDFrNWN2anJwT0owTTB2?= =?utf-8?B?cjJhUTlaZUVGVlVndXJoWCtManRHRnllem9rZlZWTnIvckt0RG9iUms0TDUx?= =?utf-8?B?R1FvWHVEdWRybVcxaWU0dTZzaEZ1YUQvWjVXVEdwTzMrMDVETXdMNHBrYzda?= =?utf-8?B?NTFtdktuTUY0ZytoZ21SSTBFQm5aMDlZSlRrbWdxbXB3QjFGTjhzZnNhK1lk?= =?utf-8?B?UG1hNDlvV0lONjZuSlZRbEQveXlCWFo2d2FXSXBhbzRZOVZmRUI4bWZPNFRq?= =?utf-8?B?MGJnR1ZVMjRkdEEyYXJqVUpXcnhhWXdrbGg0MEVGbjMyZ3M4T1F6K3I0ZU5V?= =?utf-8?B?OGY3ZHRXMG1seDRQdGk3b0d3UjdvN1laREx2dHdmb3JmRVA4VG5oTHNUQUV4?= =?utf-8?B?ZzF1Vlgxcm0rZmd1eTlGaFNZQW1qNjNURGJsRzNpWTFFQ0ZDc1RpQ2V3R056?= =?utf-8?B?SmlJenFKeEVKWVc4RGpsYUxyUnA1ellqZEJQMFphV1NZbjFHNkU5T1pXTnF1?= =?utf-8?B?WXJLZ1kzS2lPQnRsbk9lSzgxWEIrRXRtbjQ5QzZsN1NUc1c1V3FtTGc5OFNZ?= =?utf-8?B?R09QdmszNjFzZk1nWW9yN1hQeVdyd0h2UXY5QXZRUzJRcjJadE5Hb3kwSEo4?= =?utf-8?B?Q1c5K0lyaWhtWW1pcis5T3J0NzNQQUc3MzN0UHpCS3NrdGxiay9LbXYycnhz?= =?utf-8?B?MUdINnZxYlhHWkFtWmxPcTYwWkRVeTRQZS9kblU1OERIaWwyNm41Q3UzS21W?= =?utf-8?B?WFg3SGRGVXAzdnZtc3o1MEhvZ2tHSXRjTFZNT3lINEVlTklrUUJXa1gxazdZ?= =?utf-8?B?NXFpUmhyNVA0TE5BY1hTblVWZlRXc1Ryb2N3MFIyR0R3Y0s2eU1EdXNFTkZs?= =?utf-8?B?UlZOWGR4U0ZBcjk3cmlRRTR1dnk4dStUcXJhblFwcmVEVDV5dUtTQ2lQSm5Y?= =?utf-8?B?WnBOd2RMN1ZsNXZqNVNjdTZ6b1BySzFXdVZRam5tTEt5NEFqSHQwOC9YYVA0?= =?utf-8?B?QWNRYUV3UWZSRzdYVm13UEV1aHYvNTNpcFRGQTEwckFRZUIwamJkZG9hdHJs?= =?utf-8?B?SzA2aXVlWkMvS0VQWFp2V0dYVWVLekVIUjh6b2RWYjNsd3BLNkNJNFRFQkNZ?= =?utf-8?B?Tkh1Y1VNWk1CQkk1MjFUdVlqWXpNaGJyOVMzbzV3NWdDMTdWc1Z0WTk2QXFv?= =?utf-8?B?WlVVbEhyU0NDdEZtUEYwb1FJOXQ2NzlEb3FCdG1ZdXh4UVBwUG1qWEJNTXUr?= =?utf-8?B?WVdpVEpreGNtYmVObWlkeDE1ekIwdmNkVFdXYmJqaG03OEorczhvNVd4QmRK?= =?utf-8?B?RVMrMDU0ZHBnNW9yZjBHMHZ2My9ERjVtMzQ4bzFIM0c5V3QxN05RZzU4Ujh5?= =?utf-8?B?KzlxcFdVeGdWSUZ6eWFBM0lWbTdTMk1sVzc1OHcyUnYvb0s5M0xCUm9CaEZi?= =?utf-8?B?THRqTFoxbFo3UHZmOGRtbm5CZ1JuU0JZd1VETnJvMmxWK3U3V0ZhSGgxNGta?= =?utf-8?B?amlGajJpb1B1QVRKa3BDa3FJSUxOQ2o1RXpYUzhvL0RwOUw4VWFXWVAvOXdW?= =?utf-8?Q?eRbhcWXfzULOnlbaQcQNSJC9+FC1m8/GkcDFE=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;6:b7GyLvT1zOpQWkMCpZwUMqYsnxirmF083RTfqb4NvDJPYUGw99bUGBgrrYjqex+VvQ6YtWpAl4xlL0dKYIjZyW1w2UzyuS4WGLK+aF2GrIZb22qS8ojVGFKXyFUk5ldFKLugyqeIqNW1UlKMCT1BZf70bhXsZLrJuce+Rmuv6GuCSmj8jf3F0NQ8NBTpOjq6VN4lc0hd3jDsT0Dw5O2Cetn74K1BT6cB5QPSBlWRpQvIdTDbM7QCPrkNPQW14DLJu0JAf1Qh71Dn9xome4nIdaqMtUw015hIEYM81YAYq86ukFhoMrmEgtOk7MUoxWigOdgjw+gjHyqQI3sVWLMpnZ4g5HuoJ2/dvupkulNb5pg=;5:XDnTjqVqwNvMJMkLonPyv2fJOTG7Lh3ONEPDkr7XlFfEgmODZcAorKEb4g2KI0UuXnuatZ+UUYvd9HXpnYWCC8CsyfCd11YBn0zwEvWMwVtAkjwavLySzioXWnTx6/pokP9oW0o/3adBydBNZMHpa6gONEyf3nXEXwONjZeFW+o=;24:6Gsb+BCGrJyPWzC3qz+g283jbq7/1GVNnpY7sBt/Ynhzaf2DLZI/EyvaiYu1q2uVt1ewBBAjSM0KqFgjNESSZRcHoPPGYmOtwdm3Ag+MFQw=;7:/xoB6AvXqmn/GDYl0I2AVYVX3Z1ARhbG3y9l77qR7MtlCNsjsDOHyYxiWPglHXCDYb+szaLZmOv2vvjWDO71lsYONeddlM6bALkMn0574DZ69UQ+trJgL4p6GYeLQiPg6u4lyqyZOZ9uMjr2hPCJsaE//fP61WsTDGDy5T8TwAZb8OT9WUA0837ktJ5vLrCMdCmEJ7Jip7+fOxHPHklUkafLwnVjnFSKHEwz10/+iX/lm+oSZS51FNVQbuHsAxIU SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;20:yfYmJgXbrCYT1w8VRitDeenM5AyPtua7kZyOeB/QQ/kzkga+Myebgt2HCQZ8hVTcC1r71hG89wVZgKTJOhISa4EV4Ac9PQFItrU54u37ngxnuDhWLz+KwzoOPyj76vRPvSk1iOE3SwBLKh4M31MfGFR+99mfT4GY0VDDkPdngVEXrZWlKsX0vLoTMXnQ9NZ8Kyt616nZzGAJU+rOue8ui2n6pWvxXRVdRRyIp4vWbD2ljdlcJYj8pNgphFxISipW X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Oct 2017 11:49:31.2995 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c100d214-52d6-42a5-793f-08d51f8c4930 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0158 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/27/17 3:24 PM, Borislav Petkov wrote: ... >> + >> static __exit void svm_hardware_unsetup(void) >> { >> int cpu; >> >> + if (svm_sev_enabled()) >> + sev_hardware_unsetup(); > Move that svm_sev_enabled() check into the function. Sure, I will remove the check. > >> + >> for_each_possible_cpu(cpu) >> svm_cpu_uninit(cpu); >> >> @@ -1361,6 +1389,9 @@ static void init_vmcb(struct vcpu_svm *svm) >> svm->vmcb->control.int_ctl |= V_GIF_ENABLE_MASK; >> } >> >> + if (sev_guest(svm->vcpu.kvm)) >> + svm->vmcb->control.nested_ctl |= SVM_NESTED_CTL_SEV_ENABLE; >> + >> mark_all_dirty(svm->vmcb); >> >> enable_gif(svm); >> @@ -1443,6 +1474,28 @@ static int avic_init_backing_page(struct kvm_vcpu *vcpu) >> return 0; >> } >> >> +static void sev_asid_free(struct kvm *kvm) >> +{ >> + struct kvm_sev_info *sev = &kvm->arch.sev_info; >> + int pos, asid; >> + >> + if (!svm_sev_enabled()) >> + return; > You're already checking !sev_guest() below - no need to do the > svm_sev_enabled() check again. Agreed, I will remove it. >> +{ >> + int pos; >> + >> + if (!svm_sev_enabled()) >> + return -EINVAL; > You already checked that in svm_mem_enc_op() - no need to do it again. Agreed, I will remove it > >> + pos = find_first_zero_bit(sev_asid_bitmap, max_sev_asid); >> + if (pos >= max_sev_asid) >> + return -EBUSY; >> + >> + set_bit(pos, sev_asid_bitmap); >> + return pos + 1; >> +} >> + >> +static int sev_guest_init(struct kvm *kvm, struct kvm_sev_cmd *argp) >> +{ >> + struct kvm_sev_info *sev = &kvm->arch.sev_info; >> + int asid, ret; >> + >> + ret = sev_platform_init(NULL, &argp->error); >> + if (ret) >> + return ret; >> + >> + ret = -EBUSY; >> + asid = sev_asid_new(); > This operation is cheaper so do it first and then sev_platform_init() > so that in case sev_asid_new() fails, you don't "toggle" the PSP > unnecessarily. Sure, I will change the order.