From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751531AbdJBNoh (ORCPT ); Mon, 2 Oct 2017 09:44:37 -0400 Received: from mail-bl2nam02on0063.outbound.protection.outlook.com ([104.47.38.63]:13096 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751036AbdJBNoe (ORCPT ); Mon, 2 Oct 2017 09:44:34 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Subject: Re: [PATCH] x86/CPU/AMD, mm: Extend with mem_encrypt=sme option To: Borislav Petkov , Brijesh Singh Cc: Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Paolo Bonzini , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , kvm@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org References: <20170928090242.ber7gynwaldinafa@pd.tnic> <20170929230652.37821-1-brijesh.singh@amd.com> <20170930115604.w4g3oplmyo5oyjeq@pd.tnic> <26bdd83f-f4a0-dbfc-e6f9-fc3780ce0080@amd.com> <20170930214124.74w44yel3gijwlxj@pd.tnic> <6f50eb4c-f2bb-f125-196f-c1456dd6c601@amd.com> <20171001171617.uzwfzps7sxowfram@pd.tnic> From: Tom Lendacky Message-ID: Date: Mon, 2 Oct 2017 08:44:21 -0500 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: <20171001171617.uzwfzps7sxowfram@pd.tnic> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM5PR12CA0054.namprd12.prod.outlook.com (10.175.83.144) To BN6PR12MB1139.namprd12.prod.outlook.com (10.168.226.141) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d95a83c4-46e7-4958-f1b7-08d5099bb568 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(48565401081)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:BN6PR12MB1139; X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1139;3:3pbR2hQ7fK+vGlBYv6gfNMZSE5FbcL373NlcXEdACRnSlBNxTuY/KDfOhGbrnpPgwfynn0CHizoCGkvc5Aww4cdvQGh9bbSd63bUqfYkVi6tVGrGQqRbLRKgD5Hl6NMXPaHeDnue97PwLBR9P24geX0kSL2HV1XGtxsvOoAgpSpIhhvqQv7C6MtXwDBGNyv9iDyiYRCARDzbDb7Vg1ee3JpHPuBi6wDwydHqMsV+wRv1bPKs35CA1cO792djKfjd;25:KjTpvE6QoFx+DDyrooLJuokKUXJmv1c12YgQzbKDA7UdPs8R/685YaUOu+r90KxapZ/SnrGYI6HUYjb6ymvGmCw/TAwtbUAm/PeyvENDcLvJVRxNwJyowVbob4/LOnmNnSSa9EcPCyUYG99FkcGhVMf8L40ryvMJGOWF2uqI5DJu/9ClsbIXFwa0B6m7qbBme/HEx4umWzFfG+oyBCYlFBZdOGhIwKIKjc93Ll9153RX5oGcHUgJWyPlNiQVUsM17ZbbJ1s2pJvYeO7pOdF/HcnvP/LWQggwdCiJaDmowcLGl4qzM+GCZ2deTxUPogdleTwsV2Gu+n7N8jmMUM+75Q==;31:AxyEZaW/GbpC8GX9a1RrPhK67uMmHUK159xAtRQrq8aO/MnDfVjQ5k8F7Hn0GTnz7Gn9ueFK0x17kkNRVb31YEA0C4uAAA+QUDDMAAj3L6iSgraE2nK8TPZqeXTu5QjPt2UmEHJI7STm8D4jt3aLykGPuzMcdTysnMjzRbXMCXVCjcY17s10lMD3SVPqUQJ8GvzBstKHTYuTI10NKAWYKetJhcBov95EUMvxob/p0xM= X-MS-TrafficTypeDiagnostic: BN6PR12MB1139: X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1139;20:zfHc61LE2llubpCdednl7kL6jCBfe2AxeFQa6EMfQX0ycP7j/LsOUoTs/avxR1bsTsYmwbiWpPxug8Q6JOVD+DbjZdBtioGGO9VGt8T7xI5ZYFk4sS+e9Kq69mOZA+rUuZ+v+/BV9Fp5Xc3nQ/pZGNJx6S1SyhjkkvBEKArWuv8YnErpdgwUfPQQl57R25pW5gYcgqPa2Rh4MIo6moPgBD2W9nhVb5HJfJ6RbABrAUz9rXjodcHXn9a0leYxHu7H6heoha234GzqtJhej/0PjHor71MyHEbT4OI6p4JmemQqW7QGV0+V9D3eFLAFR/fQSXcZy+8glCyRLgX6IpQvIkekGXWpV6R1O3GdpSDhMvLTuteRz6DepbfKhuV8yEemoUIzu5aEwkJcazDmmuRG0qOajb24+h8LsmpVu70tTKMdoODNbegSxTPsfOatuUyMmVvKdVO3SxU0OusJHGBh9zoZiaFLjhEpyqG05KTUJVfvH12U3Ak02C4gpThvD4O+;4:rYGP+cU1kSCZPODVCTu/iOryMBwJ7h0fgvNbJzZr0rQp3/x5yJJNAmPo0aO3AUBIsxLMDNQrMYL9hr/pX7RPMDIf6BWMkQ0egPyJyiZCchWZN2MXVxJ0bHsAaOtP3+ZoKBrjMPkQRdYjwIT3mUdvHuA6iI+to22kcDK4Lif1Tw0OpSuWfj8Qc+47BlQts5D0uQE2nvouBXqsII3Worrbt8ldcakVFfi4QLaxoX4xlFiHbk4Ck5w109ltddrO+QE7 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)(3002001)(100000703101)(100105400095)(6055026)(6041248)(20161123564025)(20161123555025)(20161123560025)(20161123558100)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:BN6PR12MB1139;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:BN6PR12MB1139; X-Forefront-PRVS: 0448A97BF2 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(6049001)(39860400002)(376002)(346002)(377454003)(24454002)(189002)(199003)(68736007)(64126003)(50466002)(101416001)(305945005)(7736002)(53546010)(105586002)(25786009)(3260700006)(4326008)(36756003)(65826007)(106356001)(5660300001)(93886005)(229853002)(33646002)(2870700001)(65956001)(65806001)(53936002)(66066001)(47776003)(2906002)(31686004)(90366009)(77096006)(478600001)(72206003)(2950100002)(6486002)(6666003)(6636002)(6246003)(8936002)(54356999)(81166006)(50986999)(76176999)(81156014)(3846002)(316002)(54906003)(16576012)(31696002)(16526017)(58126008)(8676002)(189998001)(83506001)(23676002)(110136005)(6116002)(86362001)(97736004)(21314002);DIR:OUT;SFP:1101;SCL:1;SRVR:BN6PR12MB1139;H:[10.236.64.148];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjZQUjEyTUIxMTM5OzIzOkpLa1JlR1VteDdhT0V5N1kyM3MvTVA2YUNj?= =?utf-8?B?eFFIck1BNE1wZCs3YTJTaXZRMHptY3RudFhOVXo0SWpiWW5HeC9YWUhIZEhM?= =?utf-8?B?ZmxoSmZpbjk0TkVBSTg3SjhzU3Z3dHJ1NGNOVUFPdmpSdGtHOFVlY1haZlNU?= =?utf-8?B?VjhsUjZSZG9nUDlsSmJHdDBMUitqRHJBN1dVQWlwTUhwL2xCVXJ4QUZ1amFh?= =?utf-8?B?bWppb2dTdmdvaTUrd2pNNnIvZXRBVGpQVnlsM3RhSXNzd2Yxa2xDUGNXbzRG?= =?utf-8?B?OUJDK0V3SzFUaC9UdHFNRUIrOWs1NFZaaFBFWWxINmlGcnhlY1BxYk5OMWV3?= =?utf-8?B?Vnl0N09kT2NNa290cDFOWXhTYTdHSXFqSlRjUlpxUjI1SzQxM1BBVFlQcERK?= =?utf-8?B?NHpOWVpUakxkb1JvL0dVMC9tU3k4K21KY0xXSWRoSlg5NXp6WnVwUjUyRGRp?= =?utf-8?B?aU5VNFgvSUJBYlJuTW1ORjNpcXB1WTF5MHEwNDE5WWFsZzc1ZUxoOE02NnUr?= =?utf-8?B?cUpnQ0VIREVGQTg0MzNoNFlKcmtza1dkaWp1b1piL1hLVTloNUVCbFRJTEpv?= =?utf-8?B?NENTbGFoUXpscGJxbmk3VnFIYWFnWGFRSWJmYWZMR2VIK092ak55c2M4ejlI?= =?utf-8?B?a2JPYzBRL2R6Slo0NkVpN0tsV3d3QXBpN3hubkFZaHkzcEZPZVRuUHFrbU1N?= =?utf-8?B?aHNEeUl2SlVhYi8ycmJoWGI1V3JBL1BNMnR4dXRaRjl2T1BNSG02dEJURmhp?= =?utf-8?B?Mk1sbENqZTJSN242VVhqcXJjSlAzK1JJTUU0eEVrcmZNYXNSZU4rWGhHQ2xj?= =?utf-8?B?ME9SSHB1UVhyMWlpL0hhbFJwSlNIMmw5bVNGRU1JU21UWGpUblVPd0hmYldi?= =?utf-8?B?ZXlMbXRVbmRJK0hPay9aSkc0emhuWkdWR2JVWHE3NHp4QnpWQUtBeDR5QnIw?= =?utf-8?B?a2pSZ0dnbUxTZFhCamtHbXJQTHJxbjRCRGRNdXBlTkVqaXFUbjN4UDNaTk00?= =?utf-8?B?VWlXYU04VStwOXNyYnljL2tKWWVDM3VCcXJYZkNyNXpDNm50dEhMeWpacVF5?= =?utf-8?B?Qy8vc08xb2RDWnVCZk5WeGxFb3R3b1JCNDJJSCtpWldLM1dhR0t5Zms0UGtH?= =?utf-8?B?Qm1abGNSaWN4RXdpYTJBY29UNmwreXZMZmFhazByYUYwR0FRaDM0T3R1UHdV?= =?utf-8?B?N2NUQ2Rkck92UFA2K01HOFJaaFk1WnZCK1Bva1FzVXpoU3kwaXFkOGdEVE1n?= =?utf-8?B?dWNqV25VL2xtdjZUTDc5Z1BaeVRZYnhpN3lMY0RmUTk0T0VDd09pU3NMZnV6?= =?utf-8?B?azFBUnRFZkZjNWo1YTlMK0FoVFh0R3BaNDAraXVCOFRhdVRURHR0THg5VnBt?= =?utf-8?B?TURaRnMxckhCK3YwN1FMREFFQWIxYW94c0p2SlZCNXNockQ0ZVpscVJFaEFk?= =?utf-8?B?UUZqSGp0UURTb1NpaHpxSzZiVnlEOTdjM3lPcGxkT2J4cFB1cmZCZCttOXdn?= =?utf-8?B?UG43TUZxQ0kwT1JkR2tUeEkyWTZMU1cwOXJ6MytGTmRNVUFMeDQrMHBmM1Nj?= =?utf-8?B?eFBoenJra29nNWQ4cGtweUpoM3BDRjhoZzFYL283Szk3anFtUW9OeEpBQnRs?= =?utf-8?B?eU1ta1gvaEpET2RiMHE3Zy94QmU2aVhVd1F5RWdiR3dSV3FVcDRMOVZtMjRQ?= =?utf-8?B?RVZ4Z2dQUVJZak1ndWxtRWZGOTVab1JGWmpHMGF4WCtETDQ4QTdyaE0waS9E?= =?utf-8?B?VytCdkkzTGNmWTIxeXpSd0h6bG9tdlNuR3M3VEFud21TWnIwaDU2eXAvcEZh?= =?utf-8?B?dDdVWU5ZTnhtWlFrNkZQbmdnVU5RZFB5b0RFYlV1S2wzRkVkT25rZXpQSGJq?= =?utf-8?B?RzM2Rzh1cmU3ckVoMlk4bWFZeE4yclgrL0VhOTg3YUQ2aWxWUUt2VVJ5YTZi?= =?utf-8?B?Nk9Bd1FWbFM3eGYyMW9WSGNYWkgyZU5xQnA2ektBRXdFczRjUXlHK25ib1Y1?= =?utf-8?B?VytkY29KNHlQZ09DeXM0dlpLMXhELzJVUU9JdzdGazgyWE5DTDdPQ0swSzhU?= =?utf-8?Q?3MFM=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1139;6:jcmlrHKHPlIJdu01IbBiHiDPBOJKQ+HMlBLR2WczXwqCOZUOksb2Zex38qBlSJVzA10Q6EojiDgsAuga0ONVnsvzLXKHEEf8MNYaV0A5Ww1pPt8VHhiRhLDkCijQpAvF8QrdutYmB+gGxaLwod4IrbadhsdJjxEAu8oWRH8f2joZS1KKpsIaA/rq9kpHLU4iwvKTD7Mr4TV0b86rBx0AhGX8pF3btOzdhNz9RH5tvIHifc2KKPZr1QRdUk5jCZsq9ls5K7u83sT+paMHMHkhrCN9HxGlm3AfI0ceKMpYwLYdfuFBUf76nlQ9/WUdsMCJyYhQnbt/Fbdr3ILjLc8maA==;5:DdxfRj7DxeW9zJ7Y5ejx1EAHHnR2WBN+bKWk3wL6PTGp09iRUYLowqaLVCboKMnEnsFOTePmAsk+GME2Byy732hWeGVrxVnlCkBBw9RZ0hZA+6WVCJTIEJXjl/ww30aofpMPoi1fGrrqPr5aJU7lNg==;24:e6tRWGzbKwj+dzF/e1u08ask3a3w5C375eCSxVvDkB/WAwhixh0yvSNV1pA7CR1BhR+264iPncX94rieGa+gArEToOhqKU9trWw3pZ4efho=;7:jyWTMXzQgoq14Bul4W64wDhYVsyGCLCmC++G/5g44mBehz9mhdo3DDMmJkjWd/g1jI/T5IYWqZvVLFiLs2lzX4HMSnQhPzR3PsYZsiwq8xQ5FT6HYCQJ0zMATPhXaG+OM/O8sJhSXKJ3B8qpoR5+1ZE4h/zvWgr6uADODdo9uWSz+VuTS9lBQ5ZL+MFXdKkDhEWPSF90ODajZ5rbyoBs+jn04uuhlug+3A7ky+7ILBI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN6PR12MB1139;20:rqOFAC3MVaR4bJU7Aa/Lh0I1agvz2jwZhtl+ihurnkkVAS+r5oVFcQ12I57znP3s3DXfagujlajUp7UStW7xoyEaIz6Erg7tDY1UpyjJ7A0o74mWjo7Ph4lVIg1Tqfz2vSm70aS0THt6yLJ7ySE7/yTwq92+xgY0Lv8gONRyEksWr9wkPvZlZB+eq55IoRNzF+T4jN+Qar1lGy/InCL72RzBc1ATM7OC64Vw0qA1h5p05vkyzPKd3fRZ3ykV1+VA X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2017 13:44:29.6708 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1139 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/1/2017 12:16 PM, Borislav Petkov wrote: > On Sun, Oct 01, 2017 at 12:00:31PM -0500, Brijesh Singh wrote: >> When SEV feature is disabled, KVM will not be able to launch any SEV >> guests.  When SEV support is available, KVM can enable it in a specific >> VM by setting SEV bit before executing the VMRUN instruction. > > So I want to be able to disable SEV and the whole code that comes with > it in the *host*. The ability to launch an SEV guest from the host is controlled by the SEV feature bit. When that is cleared (which happens in cpu/amd.c), then the host will not be able to launch any SEV guests. The confusion may come from the variable name. The name sev_enabled should probably be changed to sev_active since this variable is used as follows: sme_me_mask == 0 => Neither SME nor SEV is active sme_me_mask != 0 && !sev_enabled => SME is active (host mode) sme_me_mask != 0 && sev_enabled => SEV is active (guest mode) > >> Guest OS: >> -------- >> Checks the MSR_AMD64_SEV to determine if SEV feature is enabled. Please >> note that the MSR is a read-only. IOW, MSR is not intercepted by the >> hypervisor. >> >> Currently, mem_encrypt=xxx and CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT >> is don't care. We can not depend on the command line because when SEV is >> enabled in a VM then instruction fetch will be decrypted by the >> hardware. If we want then we can perform the comparison between the SEV >> state obtained through MSR with user supplied command line and trigger >> BUG() if they don't match. > > And when we have supplied mem_encrypt=sme to the *host* cmdline, it > should be impossible to start SEV guests. IOW, that feature mask test > should not happen and I should do instead: I think we're talking about the same thing. You want sev_enabled to indicate whether you can launch an SEV guest. We would still need an sev_active variable to distinguish between SME and SEV during kernel execution when the sme_me_mask is non-zero. Currently, the SEV feature bit acts as "sev_enabled" and the sev_enabled variable acts as "sev_active" in this scenario. Thanks, Tom > > } else if (!strncmp(buffer, cmd_sme, sizeof(buffer))) { > sme_only = true; > sev_enabled = false; > } > > Or, respectively, not set it here as it is false already but set it at > the end of the function like this: > > if (sme_only) > return; > > sev_enabled = true; > } > > Hmmm? >