From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755547AbcEDTL2 (ORCPT ); Wed, 4 May 2016 15:11:28 -0400 Received: from mail-by2on0099.outbound.protection.outlook.com ([207.46.100.99]:58496 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750825AbcEDTLW (ORCPT ); Wed, 4 May 2016 15:11:22 -0400 Authentication-Results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=amd.com; From: Suravee Suthikulpanit To: , , , , , CC: , , , , Suravee Suthikulpanit , Suravee Suthikulpanit Subject: [PART1 V5 12/13] svm: Do not intercept CR8 when enable AVIC Date: Wed, 4 May 2016 14:09:51 -0500 Message-ID: <1462388992-25242-13-git-send-email-Suravee.Suthikulpanit@amd.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1462388992-25242-1-git-send-email-Suravee.Suthikulpanit@amd.com> References: <1462388992-25242-1-git-send-email-Suravee.Suthikulpanit@amd.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: BY2PR21CA0014.namprd21.prod.outlook.com (10.162.74.152) To BLUPR12MB0433.namprd12.prod.outlook.com (10.162.92.139) X-MS-Office365-Filtering-Correlation-Id: 6198de07-5507-431f-d9f2-08d3744fdf00 X-Microsoft-Exchange-Diagnostics: 1;BLUPR12MB0433;2:8lE5/ctduvSn+qJJsyv3EniDKY4xqdAg3k2F0QSjGkMLQAgntSrb4QHWdvhp6ORTu6wkCFtb+uz3izkWSSAQhRYdT2uk2egFYL4weD+Dgwc+TFd4JCSG9Bo+E1ICOYtc4cHgsRNOqZQbSsu15KQgH6HZ43Zf5Jk1XEPz6CbX7jvYRmhqiXTsgxaeK9yCmKPV;3:2muAVFPVCKhrM9gCB1aUL9E/LKGAFKUe6dZvgY7maw6PeCMO6Fwe3/ECTzyYGRiynG9Ocf0x6cH45oNOfCLklYK41u8b0X1p0mTUn3VnXLlTioUSPQtNi2jyoRP+onTV X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR12MB0433; X-Microsoft-Exchange-Diagnostics: 1;BLUPR12MB0433;25:J8xscfJ10e1gz7gtGr4Duv+zbw6UHf1wyOnHJm57Qsgz2Gp9Shcxhcak972v47ZrmQxwQ6gDkXIfpl3pQrpeSjns15fFfuVLQ6GszC0Tu217GhUlMHZPtaR1dftoMAS3/wTQhP5i5DivwKV8i7oeUrMQWYtGbH2UvEuIQmfZC3tGLWpbi+bJjlBK17BwglGMKFRoJPmaLYUOHqYTAnCxTbq+N0E1TcYm3hOcyf8TAWa8+r7SNWwvNk+D1N7OaqKY2Kw2f6FPcQyk6Cv93WUOdAK4jQwbT7itWSPJK9SflJczrKL313yXrb6Vq9N4huoD+/wcVr3kajqu3HpsRTIjwWmyO9Pn6S6L1PKGRm1NJgXr2T9JGn9OE7McJqvHKCwUvEvBler7cvPU4bbrYp+IERuiKAo9A7O78rGCF7zzGtr+9Hu5Z0Vb47GHgc157nUxYFUs+8ePWRRrH8l6Isd05YOLc14tSp0ZvJVJCdonSQd6c/iIPd78qobcyDQX9si5j5rTeS3sTuRVgQkd6iO11C8FxdoAk/8X3SCUdXVjYFX3RaWDDsIUWktUhyDgizTG1XsRy88KYqd3ej05CqaL01+NN6yvkk4e6FOacy8fxM6Ak9647u9aPgvFZuVzVvtFfuh7sTmfIh1YOVebx+KVqeBxS2pDRJQFrLVoPkgAE4Y= X-Microsoft-Exchange-Diagnostics: 1;BLUPR12MB0433;20:viRJl8gpfyOHwloVivuzCN7DgX4JScK0FSikMcvBTItYGMEGs49uWrJXi/SdsAU71R8WVnvUa8i66El4+CbxpMgyfmHlSL9O6PKp92izGbDH/2SHrRQzv7TEJXYNLIH9huXTGUXu+i2xq3zGE//fm1RY8trUoBcCh6AUUgEUYYcSAYjN1ga4Hy+mGOVW0vXx39sGAgn0jveQWloTGG/o5ED6l3JKeUjxyC7Y+3KU5pMhKXiGDhrM1MqzaSDah0gxxLAUgj2ivQJRhNN3Pig+3VyW5YPqMl6UGMKLT56WsFKz1nhM/p7W1QSphRq3sDQztaCcStJXKbFguTri7P7gkyva4tt0JNFQ/u9SnaoCae2D7ONSI5NOvN7Bcdts+AnG1vjE9QJQBMKQODO7UVKMW3QO3UM4Cpj5YI80PA+9sEwPO3MwywAxxc635snTgnobQxRv5MZG7cEVcdq2EMBwKU/TD0DuiTLQ4LYtvgYnR3l54KFtemH4HlIcWO6k3kPi;4:yIbX0fScoH6z6jKrha1JQMIkYWvUHS929LS5RrRhjGwjLGuNvwbCppmCEQLECETZ6+vKZ86KhHBAEORFR55xN8Ropll+pBNtzqfrwJUE0Iga+IdZ9VHSSfhPEPd5LBxTNCNSWmUygmApdtDDMaOs09vR4Es12yHu0J+wTPmjNg0/LTmEDAe5TAKsuHdFFobe7LjMiz+TpeAw+csuJM6B37ift08mpkrQZJAIIV1QW0QPfthxnoxIM51pSrfNZ1mh9udrWtZcoL10eenbeYrcWRyyBW37U7dBuz+K+zqOzmphI2i5iELlBWGtsuMHKCMkipYJ134BU2W7eY5DkAUzMj47MVX1AYVvqPFB6wcVA8/SHSsLsP4mXcN8T4xKmDPUl252LXwSPj/A7/3TYtAPYBf8FFojNfTnZotDkoKJ+deocA55B45vIBC9hAnKD1zg X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(9101528026)(9101521098)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026);SRVR:BLUPR12MB0433;BCL:0;PCL:0;RULEID:;SRVR:BLUPR12MB0433; X-Forefront-PRVS: 093290AD39 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(50986999)(76176999)(50226002)(47776003)(66066001)(229853001)(36756003)(189998001)(19580395003)(19580405001)(2906002)(2950100001)(5003940100001)(53416004)(2201001)(5004730100002)(92566002)(4326007)(5001770100001)(77096005)(586003)(42186005)(5008740100001)(81166005)(48376002)(3846002)(6116002)(86362001)(50466002);DIR:OUT;SFP:1101;SCL:1;SRVR:BLUPR12MB0433;H:ssuthiku-cz-dev.amd.com;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BLUPR12MB0433;23:jOcb6waQmzmvfTASJVX51ctTvIskD+QnMSapXljWuACRw9FDQ7jImwY9zE9cM//aQM1I1/EWZRhcSm7IVB7mjZT5FXXyd1q3G37nnVscUEB2C/lgNLb5nE1wX7xa7UzUfufva2S1uAhGmmo/7jEWY/f62WB6anAMeyjebVf4bjULoYVFJIWiOCbxUdxFXs/vol3F968elsLYoIWKcjI6cqjJ9a180ZLvexqQsBLh17qDOOeOw45EGJo2wCQAbaUIaakbbKR2nZh7USkn4X+Ts2NCxtp4cmPKTA9sC/aXDl3PEKnKwSrH0xMJ3GfCmMkmN2RF0/ocVxXzMt6SKopyLXvLzH4hDKbxc7iv261BknpxnlkMghPBDDBjFmo40dKD7hOcjqttwS2bb/KNVJhmubZb3yzJ2TqEIehqfWhXGM/PoJWB+UD160TRFkbDpo6yx4HTYx/WJfw1l1FLmSU8yJiIPI5x+AGLfCMsISOtzleVosJNiEuTEgnNlqj5JtT5jXO+47mNSsK415Nbpb5ZmpPJsim4cn27te3Bx8SaTi7jCb1DBIbi/sYAdl2UAOrRfY7JvO5cWvigJXwqECzBzAk+Soew9FNcHuNVnScNvuiBt8Ar6PuztPEK5R4yVM0WCyVTvzUgRss0q57m1dJKWMUTP6kzTVNvROPUjUzHb+ghUjA/z3eOSTMtiEoiexo50r47eF9Tm2cVTXeuLxYv03ZPZFpH9cyKr/diCOS+pyhkWVxzfnoez6kyOS3Ni5JNQ/P6EA9SXSH7orG5PosjASLqF72hNcsIygtwhcLN9myikmxmqH+tJP2RwawFu6p5RyEXsSVZZ893c5KNEvqQHMZd2pTPHMEjmZs/gpJ2k0MEnIAiZDDlnc/rX6ntr/ee X-Microsoft-Exchange-Diagnostics: 1;BLUPR12MB0433;5:JS4fMsreRewPdbJHYVh3kP2HiB1GWkQGUkdWJlUCN9S09lKuZKYSToFcMH2DU6X9tBrKoVZ+4yJR1rPPVrTr8m4mCW9Cs5w/2gdt9X/7djWNrhSGM6Op1a6y9rrwRLjfnO3IO17y1hcR4P0M0hJTug==;24:HDH9HYmJFS8TTLc5wHO2LEdT4gpxNyRXek+FzAtLKhvRc815/rd/JapnF2HySzRx5HcnN1bEPIiuxebDAdFGctQIr0MY/dLRrvK0pFMGNG0=;7:kdi8gH8lfp3uCGamQVsxaqYsZHkdrn+wFAZLRQUJBHAs4nDtjZu7rrNzxl+c8zqoBPr9S0QldN9VevOedlhHmUz3fmT3tv+8wwO0rbzejQDxVrVWIg4vMCSvILYtMljbzljwclUb0p2qTEAZv2Hzj+USGM+ehAO5DJOxlZy97Os=;20:RpcP9NLxnBl2b8t233v8829+ZwAd2IukdrX0IcG8xJ+60VLZEEkmLTxz+P5vJrv+pLiRjJLm1zSfUoiMJ8fj1+Or+125wUJzzCQMDg52HEC8Tw3A8DLbT5LMGKqLngK1cgU5FtoSd+6aF0ZqGX8kEnGDpL0oIBn1nOfhviXbRPwTWTSZrNwo/C1HykYxOwByBEqMv43M/shsc6/lbwguOZUrUXM6DPxN4uKG8m8hC9LdsCa7uI0jfoirbhb4PdTF X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2016 19:11:11.4326 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR12MB0433 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When enable AVIC: * Do not intercept CR8 since this should be handled by AVIC HW. * Also, we don't need to sync cr8/V_TPR and APIC backing page. Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index d35fd61e..721e514 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -1092,7 +1092,8 @@ static void init_vmcb(struct vcpu_svm *svm) set_cr_intercept(svm, INTERCEPT_CR0_WRITE); set_cr_intercept(svm, INTERCEPT_CR3_WRITE); set_cr_intercept(svm, INTERCEPT_CR4_WRITE); - set_cr_intercept(svm, INTERCEPT_CR8_WRITE); + if (!kvm_vcpu_apicv_active(&svm->vcpu)) + set_cr_intercept(svm, INTERCEPT_CR8_WRITE); set_dr_intercepts(svm); @@ -4077,11 +4078,17 @@ static void svm_set_irq(struct kvm_vcpu *vcpu) SVM_EVTINJ_VALID | SVM_EVTINJ_TYPE_INTR; } +static inline bool svm_in_nested_interrupt_shadow(struct kvm_vcpu *vcpu) +{ + return is_guest_mode(vcpu) && (vcpu->arch.hflags & HF_VINTR_MASK); +} + static void update_cr8_intercept(struct kvm_vcpu *vcpu, int tpr, int irr) { struct vcpu_svm *svm = to_svm(vcpu); - if (is_guest_mode(vcpu) && (vcpu->arch.hflags & HF_VINTR_MASK)) + if (svm_in_nested_interrupt_shadow(vcpu) || + kvm_vcpu_apicv_active(vcpu)) return; clr_cr_intercept(svm, INTERCEPT_CR8_WRITE); @@ -4254,7 +4261,7 @@ static inline void sync_cr8_to_lapic(struct kvm_vcpu *vcpu) { struct vcpu_svm *svm = to_svm(vcpu); - if (is_guest_mode(vcpu) && (vcpu->arch.hflags & HF_VINTR_MASK)) + if (svm_in_nested_interrupt_shadow(vcpu)) return; if (!is_cr_intercept(svm, INTERCEPT_CR8_WRITE)) { @@ -4268,7 +4275,8 @@ static inline void sync_lapic_to_cr8(struct kvm_vcpu *vcpu) struct vcpu_svm *svm = to_svm(vcpu); u64 cr8; - if (is_guest_mode(vcpu) && (vcpu->arch.hflags & HF_VINTR_MASK)) + if (svm_in_nested_interrupt_shadow(vcpu) || + kvm_vcpu_apicv_active(vcpu)) return; cr8 = kvm_get_cr8(vcpu); -- 1.9.1