From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760273AbcCDUtb (ORCPT ); Fri, 4 Mar 2016 15:49:31 -0500 Received: from mail-bn1on0098.outbound.protection.outlook.com ([157.56.110.98]:23184 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1759649AbcCDUt1 (ORCPT ); Fri, 4 Mar 2016 15:49:27 -0500 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 RFC v2 09/10] svm: Do not intercept CR8 when enable AVIC Date: Fri, 4 Mar 2016 14:46:07 -0600 Message-ID: <1457124368-2025-10-git-send-email-Suravee.Suthikulpanit@amd.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1457124368-2025-1-git-send-email-Suravee.Suthikulpanit@amd.com> References: <1457124368-2025-1-git-send-email-Suravee.Suthikulpanit@amd.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [124.121.8.20] X-ClientProxiedBy: SINPR01CA0045.apcprd01.prod.exchangelabs.com (10.141.109.45) To SN1PR12MB0445.namprd12.prod.outlook.com (25.162.105.139) X-MS-Office365-Filtering-Correlation-Id: cb7ef443-3f5e-4b09-c66f-08d3446e777b X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0445;2:2fs/EAmf3D4TxvkJ9vx/OpeISEi+i3PYP16sxe0Uaec13UxmfhKakoD1Yv4a+WRCMTgNg+t7nCGkIY9T6gb8+5LVU6j5E6oOn3awoeVxzdPbqUDLGn+kLssW1vauriPK78T1VcywyY7DN3YqWCByNMbAnRt+WL0O49YCLfwii8TTUKWDV5uvcDNRxCRnAW/B;3:LIkzdFfzKzVyKjCvM4kLQ+67WODB1ecb8ckU02g5+UC8GhkLnB0zkwIdtuOUFC2bvB3+JZknKxm62p8N9chCw58TR7zHwbLyeOOH9DIUcnCF2nJ+xzGQepjkI72hZhi3;25:MzjD4GdSyJNLsxSH4ICaGTHwY5Z2T0RaRUHXQtOgUHyFr+w3CXubxX3unejc1N2DPploNeLLSp9NBebj4xCmhgRcjVsi4ubVfDaKfw9k8vXzU+SRINqu8gmdSeUTuiG0W1LbLsbW+49xfsByryfr47s9r2bPlYN++WNrsHKcP537QbsOtwgjj0iGdqsGJFJUxz0iWLoatT8dEloION8TCxYWT8fIRlgCs2xR/HIWiLh6L+JQwuuwAyXQZ/Z+BAfTy/TrJ3p8ZGgGA//A4rStuGXxm2UDJTiZH/U+8d16zutkLn1xM6Yx9377Hngq8q9rJD3n4Xa7HzYY4m0NexPZJA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR12MB0445; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0445;20:udrPzRqssGnjbigG4aQzihIcrt07ACyFyDS9XM2Bpmh1tuY3ayUW1BASSKdaW7yNTUJKxG3iTrPAXW1IvW2Xjt6xiqxkh8uituIAz+6N35zyMOcmNy383jH5HybgPg945F0ASkmV9WkgVuypuj2h/m1ZoX6UJACiuVikcBdEqSRyPXE0z4rIJgLKPGn35oWlYA1V31Soeur2/RqjVLfa3TzOOMNQc43s0WPnBMBX7+BT0y24oOSbUfaCDvJja38hlIw3G52/uZdv4um71nOdY3Rtn+326nTVDxJ1fUhu+kQYs+q/uxKwZ+KIOEfkQZ+JBG3V82bsbeXL1aso6qzzv/qX0C9OeDYP7PnrM/DYV66myaUW+4mrNTA+XhL653BywP4MapGSnbZU8u7pMlMl09aasgbrJ5RjcHRp7TATHmjXipbduVhTLuArXe8PdTkq/gogUdebg9jS8ir16jt32nrKQbrBACtRgCgr1h2RtKBhIwVQowrCxeO9UGfTiUx8;4:q0z6hDHGLRDFoUMHvc31NxRy6AqRCNmxaG4rOqrOI6kw3pSXL0nDenJFy6/cTbwiTyC/OEIcg1T1e/Jt+ipe6UObGjPCe5y+uTC+Y5V1w4QafeBbmGNDAud1JLBUdctBKBeqJwrx5ug6229hmgXRR9/0Rdph5RRclp5tjIDN5IEkeLprecG+XCaJaabQ9QS8VVIeEPKhPXJHmSuQLpjVTIBCA4MeQ1TpgruVvrerF03CJerh2DISsoGPf08rUgTvlfKDNWtCXBVAlj8BCI4d7zD6WJvRk/PIfz4nlxN38Xcv6Q8d1EnYvlhwMydEKBsvWe8YWv87/5cVWQMIOsBiVBQU2hNIN1ZT0GpRLZACCWUSkPDCzZyTl4nACsLhj1X7 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046);SRVR:SN1PR12MB0445;BCL:0;PCL:0;RULEID:;SRVR:SN1PR12MB0445; X-Forefront-PRVS: 0871917CDA X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6069001)(6009001)(77096005)(5001770100001)(87976001)(48376002)(47776003)(229853001)(36756003)(2201001)(66066001)(81166005)(50466002)(2950100001)(5004730100002)(189998001)(40100003)(50226001)(5003940100001)(122386002)(5008740100001)(19580405001)(2906002)(19580395003)(86362001)(4326007)(42186005)(50986999)(6116002)(3846002)(1096002)(92566002)(586003)(76176999);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0445;H:localhost.localdomain;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN1PR12MB0445;23:j55Cqc7Eg1NZmX6xLqhyN7hByZNP76uu1C6NWXRxo?= =?us-ascii?Q?1+BAmipWOQR37uv2af4VEE9FHHputVSZB1U5udRmwVYyvWV9QOuQA1cYLCVA?= =?us-ascii?Q?hVZOmtIx7L0Md3wtflH3OQkq60iLppTk8nOxaw642Fy3W/HY/oCxlthhSvPr?= =?us-ascii?Q?eF8TbZcrpkM3TkWHHPZtYHa4M5eSsooTbDeK6cLOrK2FHAbPc8zOM1xz5KwL?= =?us-ascii?Q?FbG6uW4vz13jyS8mS7x0Xp2QNlY9uVb0vjM049ajcikD2/WOB7wDHGXADEgN?= =?us-ascii?Q?5+/yxewzpOYU8j6BedCeFinb9Ls49trPDtVIb9I99NxM0g/SR7u8DCDH7fkn?= =?us-ascii?Q?2+d3pcTBUDUJfmgTm9eSrYwDfCSBadKaZxWhJIVQTdLLWuQOMBtSpQ+YtjnK?= =?us-ascii?Q?neSytPN3tiX/zP7C6BH2Dyq2EBRR9yWtO6OdbQaiDNiE1t5aQnISWrKCI5mn?= =?us-ascii?Q?2iVUbGaKPsbUh6Kn+5fOf6wqd+QI3Rzq+3T6iw39GS9Sen55HF3RJU51G0bU?= =?us-ascii?Q?LJNHaKSq4NHqOhDwNMDDgjKlWfVDYyVkmSmoCWMsFMj1q1LxNq50EB9DriLR?= =?us-ascii?Q?Vnpb2lsGcVCUxljs/ju4wM0DkPc6qFE3VqecSl9hmKrquW9VJ2CZFns3XP91?= =?us-ascii?Q?sCx0PiFdGxWpMkrDVFU4anZyBKlX9vaSNtEcBJLlCTP5PoJFjJKqxLgKiKcQ?= =?us-ascii?Q?23wX/UhxrqiHwm3v+/iAUoze1tp3jrqCRy+dcG9S1dkflkN6y/mBegY7Q2Nq?= =?us-ascii?Q?vxciIHRKmUeOKMLaxdXeeGkT1/2A1EiI8r3SC3QFQHRFMa0cypC1PTukWHK6?= =?us-ascii?Q?IVbHkuYDG9wW+oxfZgo0NXOQftkRRQEmcblHNmYvqykthR5ZTuVbM70ADnNS?= =?us-ascii?Q?YgeV1JBp0TFG463igPpw/biN52XuRiXSJDDFDjYvpgUwwWdVkpbFk1bwR14c?= =?us-ascii?Q?zbC62P047bzGF8NBOhdcJOqnBE/OFZaoI1ko36vOQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0445;5:3jKwMG1DKPaeX+y4+pGkprmZT2GaLFWwMAFL6kmsmHNltBrsXREv9QMBrCNrkl4B6mP76zLM6sylBk23HtFO+okvGFpJPmBSC/DxbAif14E7PoEqeJmtRxTRav/d0Qf5GgjlGHXREMlP5gX4E6gv7Q==;24:muRKgSm60JmYtmSbuAJIqihhFDGn8XDObgx7AP/J95vM2n1Pji33/RrcFanJlropZnafvfyPz50ezRSzZK3pgPVzf2gXQ6KOZh87+Zwhw1s=;20:PH3fXAgbsxuq/0BjARnvxb5ua0cRyYpUE2Jm2X2pnLinXsg3YmRo07wd8DthIkjKe7zunqJ9hlclW6m2LY+l8xEIao2uIMLihj93X9kQX7zoB1uD66RACKdUDWcoMNyBbqz3/lUxAY+SLOmDNoAFo1evPRbDetJQLixdGo3Rlcchas/bodo4ODpgpTwpyYrA8a5TkvCZHxYG23uX1Qx5v7dseut1PFQa8kL4g5l9bzZxfVdjnlVr3pL6s1QMAvt1 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Mar 2016 20:49:14.4028 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0445 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 update TPR in APIC backing page when syncing CR8 before VMRUN Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 02cd8d0..5142861 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -986,6 +986,9 @@ static __init int svm_hardware_setup(void) if (avic) { printk(KERN_INFO "kvm: AVIC enabled\n"); + + /* Do not do cr8 intercept if AVIC is enabled. */ + svm_x86_ops.update_cr8_intercept = NULL; } else { svm_x86_ops.deliver_posted_interrupt = NULL; } @@ -1116,7 +1119,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 (!avic) + set_cr_intercept(svm, INTERCEPT_CR8_WRITE); set_dr_intercepts(svm); @@ -4277,7 +4281,8 @@ 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 ((is_guest_mode(vcpu) && (vcpu->arch.hflags & HF_VINTR_MASK)) || + avic) return; clr_cr_intercept(svm, INTERCEPT_CR8_WRITE); @@ -4472,8 +4477,10 @@ static inline void sync_lapic_to_cr8(struct kvm_vcpu *vcpu) if (is_guest_mode(vcpu) && (vcpu->arch.hflags & HF_VINTR_MASK)) return; - cr8 = kvm_get_cr8(vcpu); - svm->vmcb->control.v_tpr = cr8 & V_TPR_MASK; + svm->vmcb->control.v_tpr = cr8 = kvm_get_cr8(vcpu) & V_TPR_MASK; + + if (avic) + *(avic_get_bk_page_entry(svm, APIC_TASKPRI)) = (u32)cr8 << 4; } static void svm_complete_interrupts(struct vcpu_svm *svm) -- 1.9.1