From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752366AbdLEBFV (ORCPT ); Mon, 4 Dec 2017 20:05:21 -0500 Received: from mail-bn3nam01on0088.outbound.protection.outlook.com ([104.47.33.88]:33708 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752035AbdLEBFD (ORCPT ); Mon, 4 Dec 2017 20:05:03 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, x86@kernel.org Cc: bp@alien8.de, Tom Lendacky , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Joerg Roedel , Borislav Petkov , Brijesh Singh Subject: [Part2 PATCH v9 03/38] kvm: svm: prepare for new bit definition in nested_ctl Date: Mon, 4 Dec 2017 19:04:03 -0600 Message-Id: <20171205010438.5773-4-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20171205010438.5773-1-brijesh.singh@amd.com> References: <20171205010438.5773-1-brijesh.singh@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: CY4PR0601CA0087.namprd06.prod.outlook.com (52.132.96.156) To CY1PR12MB0149.namprd12.prod.outlook.com (10.161.173.19) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e2bc163c-ed03-4b2b-67c3-08d53b7c33a0 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(5600026)(4604075)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(2017052603286);SRVR:CY1PR12MB0149; X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0149;3:tISKuJJhxAot2lwRX4qJiJyTJfM9cr8OwSOJHZGCrV2vt6ZiK4dZzY7yam5KFKpdezfWvtv4fGE6CwpxuLAoodeNwzB4RcidixbHYQVHNx0wTG9lwo2IFuGYOf6mrUbA48edR6D08+bhThN1zOADlJv2Ukz9KmVplOoII9wrFFL3rhDMuXyKoiJHiOTZnrUOvBe8skPwW2KqFn7dG9357jgxsQbRlXTUbWCXjek2qteXdjVg6wExANYGYdws7nII;25:Sqy1Jt6PnDIb25usHeYYzPKF7xLVQ/wllljqmJZn1oonP29tLmRSK+KZIPfSk6F2wl2TooRMdQB20/RwT6jOnxNdkyemKCBDmGMPSxKeLn53b2vDzEZpKr7o8kMH9hlngTlgFZw/Zcc6tqenh2/WoKOfOEatOaRBea9BDhk1rkNcwpiaoeQRBSfOy+ielj49ThcHSlRux1Sqd1rI7P9KBTOTLMpQ3ovLtRasd0oW3bJO5Oj7EYhBEMKgGvL28iFYwJKeGu31ECMsVLu9muvPZFBVZ3DGZALkQQLGiQGTxXaBSLI2uWDplfXdtb9kMMaHgcphx+FnmfGeYxlo4GGNhQ==;31:+889Uu9a7NgbBWunIZAloEM9PWflpyoa0M3ufwFhPW5UPmAsqAxUNlEllHShZ6W2CeLbl4aqX0o5Tj8uIyC8hUqR6lj1ljvnnXyF0M3E7xRNCKXMOboqnsAvl3Gnjz18KZ9LgE6AdfazGc335SkfIZLL93pmLPbCIbkn04b7rBdB78zPvlMmSC3DCJG/V+4+JRJuGf/OklGvGnSZSE3tOV7vgNkTWbZ6vIlyf6zwYKQ= X-MS-TrafficTypeDiagnostic: CY1PR12MB0149: X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0149;20:0v7EXwqSYSzyDRPSv3yrXU/MHGDXAcgyq74hR1hOeO69pwyk31vkIj7OHmvT1bI/ujDif5Q2XIqk3qAQU9esjLjvta+Dy8Q3MOS/b0YFN47FYrr97c8Vl1FVJAXwdiPztaxOucfBR6cx83cAKcIbJJv62QhErvpu+aMiOUY8824yjf/GonUVhacGXVGUEqrNNC2KYu+9hfxATAg0+KnTuwi2bwX3VEqN9lIUIhq5uPmzH7eOGNeOGRj2gcA5B7Rzzo2UE+a6DfLdPiPOM6lZTn9H7/MpTFK/eqwaphBdQgHY90zqbVFsQBGbJJaxLJ6vdefBCvDh0umO0WVPfIYvRDnPXnzfvYH0/cqdutd7pCct9xNwGHrA3T5Gslfwqw1K2NQAz6CKfBdH15pI1BCWEZJljPwr9kPV0NYavlkQLkQ2TVpWoV/KN6tZ/HCd07fsrI9oQf+jbZvM8cFIbfDk5sKo+OWPFVdF6+CeG35aF4ZteNcqIr8/eLl76gRbdxnY;4:6xptjvJBK8wUYjifJ/tmO7TjQBqgVZuw5DKUSxMqLKBZ4BW7HAVXHMLRh0565qCBb8GFHl2aTNcqVqKjWRN1yumG/aQUupLqqYf35I9CinRnbx4avU06ATnQ00+Xx42jMdqdyglx3Vtuo1zbWJ7zRL3bZaBdroyGekXbVis8YCXi4jt9Bb9YMNAIcST92zIpjvUPHRv/QrrHIieEflKERJup+mHGIA8jtn8W6R+oBCnNAxOe8xFTTrPPRf8NoFUHPtoDMZadDUueQaUG8Vb0oPao7gsf0Au+HC2gKiBpsSXxp8aSgdbx95OMkaAZY4r0h8scBs1sHhxUeLvaQI7acA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231022)(6055026)(6041248)(20161123558100)(20161123555025)(20161123562025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(6072148)(201708071742011);SRVR:CY1PR12MB0149;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:CY1PR12MB0149; X-Forefront-PRVS: 0512CC5201 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(366004)(39860400002)(346002)(376002)(189002)(199003)(16526018)(189998001)(106356001)(478600001)(7416002)(2870700001)(101416001)(23676004)(52116002)(97736004)(86362001)(7696005)(33646002)(54906003)(25786009)(105586002)(76176011)(316002)(2950100002)(6666003)(7736002)(2906002)(6486002)(50226002)(81166006)(81156014)(8936002)(53936002)(8676002)(4326008)(1076002)(305945005)(66066001)(6116002)(53416004)(5660300001)(47776003)(68736007)(3846002)(50466002)(36756003);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR12MB0149;H:wsp141597wss.amd.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTFQUjEyTUIwMTQ5OzIzOlR3WDNsdzN2WU5jcHcveitZeHVwNjZ5bHFs?= =?utf-8?B?OHlQSFAvTFVqUnFRRTN4YTMwVUhBbVBoNU85Uk9xdXUrdE9VMkxVVDJtWFRW?= =?utf-8?B?eTJ2QU9oSVlvMlBDazNRcVQ0b2krRXNOREJvdFVsRDJmTXRJeml6MERkaXJL?= =?utf-8?B?Z3BkQWh0Q3Y3SWEvSWxseDNBbFN4bm5GR0FGQTc5QkFqQTZDMlFNVm9PZ1JB?= =?utf-8?B?bk1UeHZvT0RpZndiQXZpa3hOTDdpK01LUWRBSTFUN0NsMDFSa2xzdDNRKzdK?= =?utf-8?B?VjBtSVpHSlFkcTN4N2x4dTllUXdwVWtYdGRPTHBjd3NRN0RjUS82U215eTlX?= =?utf-8?B?c3VFTWRzaHROcWNSN2RpbGFyNFF1ZEd0eFVRWUZ0N0x0OFZkZ1d2dS9OQkhX?= =?utf-8?B?QjVwS1BuNDYybkM3QTI4NzEzRDg3MlV5aHAvQXVLRER2M0tlc3ZsNEQ5anI5?= =?utf-8?B?QTZ6NW9oZy9NNkpsMUo3UTNqdlMyNmZvb2l3YnQrR3ZzRk90TG9RdFhraC9L?= =?utf-8?B?OVdtNGpVRGlzMnRXc3prem85WUNYK3lySlpGNExUdmFScHVpS1R3TGdjVXpp?= =?utf-8?B?OUxRZmNpUEJaVXVaWGJzOW9HTzVUMnhia3RuVjFuMkhKUW0xOTlqQUlXSU5x?= =?utf-8?B?Qmxqam4rVktCd3lGSVp2dGppV09aTXE3TTBLQjZQQkJHSzQwZkpwVzBKNGJL?= =?utf-8?B?czRlYVFMakp1SDlrR2M0MUUwQmNLN0tGNVo4NGJJZm5zbGs4VEQ2VVFPLzh0?= =?utf-8?B?cUxlQzhVTUpXSVpIRnoyNWVwTTQwa2J4Qm00ZTk4TWJpSTVSMkxvR1pYZUZn?= =?utf-8?B?OUdsRW5UL2xHeDZuU3QyTytvRnNiN1pwWXNqMU5kZWNjckJqNGk4TXJLL3VZ?= =?utf-8?B?aDRnVGdUNjhpWndFWmRmdjFzWkJma2NTZURqMzZoNGx2dWtpaXlDNzBWdTBF?= =?utf-8?B?UVFVenljT04vUStRU2hqWlcxWlBsRFpzblYwQ2RiTWg4OU1ZTmVreTd6eTlx?= =?utf-8?B?djJzM0o1Vjh4Y3MrNUk2SzNMNU1PSlM2b3RVNFdOR2lGNWt4NDc5SGFuakhk?= =?utf-8?B?TU1FZnozRUF4b1JkdU5aOXNNY3M3a3VsV2FiUDFrcEdFdnUvKzhYVDBrRXlR?= =?utf-8?B?ZEFyT1RRSzVDbHNSWStZNWdaR2s3YlFBWmVQeVdRSGJrWkFqZEdFT3p1cytO?= =?utf-8?B?c0FwUEZpUWNrTDkrNDRUeTRmSHdvWWdPWnJOS0xKdVFreDBCekwybFpZUGtr?= =?utf-8?B?Y0Z0eXR3Z01ldnBNcy9qMUk5TjJLTkR5RVhLOS9tYTNpUEVmYW1hZDkwSnFF?= =?utf-8?B?QUlna2VXZ0UzK3dWU2tCaVhncnJJcnk5RzVFUHJGamlqdGp0S3hUN3k3TnFL?= =?utf-8?B?Wit4TkFiNFl6M0ZJWWZ2RzNPSWZ5R0VXa2htaUFLaDFMSm5KVWdhS0M5U1c1?= =?utf-8?B?MlpFYWsrYWk1Vmh1Yy9IQlBqb25iUnN2WTUzcDM3dHI2OWIvUUV4djhDQkk0?= =?utf-8?Q?tsdXydGHzKqNHDbFbTtuMzJFg=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0149;6:QwhQz1qTTFogQhn88aT1eY+juS77ge8NYwNQjmAYphWIQt8j0C7ieU8o83fyPe3ZRjkK6y5W7Id+RxCIYxz+VaLXNCUJ0ZrYA8yAprDielGqSQVEK8fQ75lj93vnEBkKWQUlHVyEsqe8C4OVQp6nS6muq8lXpsfVSBhL8qsN2HNC1vA5pYZMYCHBKQZNxQL0zm6PMrUvdvW+qG2b6+H9jADJYJ0xp6VkzlgcLbY6hZrYmSvEy4x8jPL6u7L64f4USX3R7p6Zvh8TE0iDughOSQC24sAPuF24+LEuHY27/VkWGW+ndVGkujbOyaKKgcJDLDPfOjMZ8VMAFWZ0K0dlKXywNDXRkquMOiUouF/r6aI=;5:8EdV6GN2pcjAARRmoiNZcgf6GP3GtAGQHhtpQuE2owsGUFEnGQ1RM8rDgHCzf+bp50K3v+HvHX0x7cfeqhjTW+WyAAjAMsd/+RoP3OAFp2VSdZwe+S59vAU07n/tmws3edXxEFxweTEPrZLYW2aFG3VkG1aAiQnWC1+q1VIZ/Ho=;24:mD5Mc56Ulodm88SaMqBS4wFTq/IXFhVp4WlfdDwj7Ywb3rE1wvQxGZV8ctovdbXE5FJK4HfgSd7aEfQzgyacYSRiTx6qY7niNL/cjv2lPWY=;7:6Wf7mNQ4d00lfY8CPpzdmVZJ8gnC/0NBPWJT2ePmEJE+OsUaJkOUeUnyz4r2nz9W6Q+2iQRS53QFn27Al8vrZM5EAqq/4fzrXTGhL/upsqgZGCBTZKnLkvHmYI4fwumVll6m59o4+8IUdCYFYxT62C3p2EqS+vYxCDVeo6u3QdUqEUCi4KGX05BdYiheNaGz75LP7AB5Fr0uoVfqX8ZL3CBo7wrWeEjGsgG1elHzCT6GZl0KlZ463lQGysAz1o0b SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0149;20:pELLlpNEKN2YolfIainXENSlza3ZZo2LCgwO8pqDZLzz97WEhdrp/y/r9VYfV1FfHGFazf8+XGK1cIjBt/YmX4oLZElESyFVGZQx+gewHm82vcXogNRD1BSqrFRf1OfOWm2u8zKSgkc54ubZoSlUKAhPpbP2Ar49V2BK895yfE10jNtwMgBXD95JLi8oXkax51k5BOx8Fkr+YyvOk61AudLonz+JEr/HEU2Q9ih5rbZWrsbkIh/3Pyo3Nd/9qzgb X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2017 01:04:56.4833 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e2bc163c-ed03-4b2b-67c3-08d53b7c33a0 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR12MB0149 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Tom Lendacky Currently the nested_ctl variable in the vmcb_control_area structure is used to indicate nested paging support. The nested paging support field is actually defined as bit 0 of the field. In order to support a new feature flag the usage of the nested_ctl and nested paging support must be converted to operate on a single bit. Cc: Thomas Gleixner Cc: Ingo Molnar Cc: "H. Peter Anvin" Cc: Paolo Bonzini Cc: "Radim Krčmář" Cc: Joerg Roedel Cc: Borislav Petkov Cc: x86@kernel.org Cc: kvm@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Tom Lendacky Signed-off-by: Brijesh Singh Reviewed-by: Borislav Petkov --- arch/x86/include/asm/svm.h | 2 ++ arch/x86/kvm/svm.c | 7 ++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/arch/x86/include/asm/svm.h b/arch/x86/include/asm/svm.h index 78dd9df88157..c936c9824405 100644 --- a/arch/x86/include/asm/svm.h +++ b/arch/x86/include/asm/svm.h @@ -146,6 +146,8 @@ struct __attribute__ ((__packed__)) vmcb_control_area { #define SVM_VM_CR_SVM_LOCK_MASK 0x0008ULL #define SVM_VM_CR_SVM_DIS_MASK 0x0010ULL +#define SVM_NESTED_CTL_NP_ENABLE BIT(0) + struct __attribute__ ((__packed__)) vmcb_seg { u16 selector; u16 attrib; diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 59e13a79c2e3..1c8158a6ee06 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -1293,7 +1293,7 @@ static void init_vmcb(struct vcpu_svm *svm) if (npt_enabled) { /* Setup VMCB for Nested Paging */ - control->nested_ctl = 1; + control->nested_ctl |= SVM_NESTED_CTL_NP_ENABLE; clr_intercept(svm, INTERCEPT_INVLPG); clr_exception_intercept(svm, PF_VECTOR); clr_cr_intercept(svm, INTERCEPT_CR3_READ); @@ -2918,7 +2918,8 @@ static bool nested_vmcb_checks(struct vmcb *vmcb) if (vmcb->control.asid == 0) return false; - if (vmcb->control.nested_ctl && !npt_enabled) + if ((vmcb->control.nested_ctl & SVM_NESTED_CTL_NP_ENABLE) && + !npt_enabled) return false; return true; @@ -2932,7 +2933,7 @@ static void enter_svm_guest_mode(struct vcpu_svm *svm, u64 vmcb_gpa, else svm->vcpu.arch.hflags &= ~HF_HIF_MASK; - if (nested_vmcb->control.nested_ctl) { + if (nested_vmcb->control.nested_ctl & SVM_NESTED_CTL_NP_ENABLE) { kvm_mmu_unload(&svm->vcpu); svm->nested.nested_cr3 = nested_vmcb->control.nested_cr3; nested_svm_init_mmu_context(&svm->vcpu); -- 2.9.5