Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757157AbcCRGNP (ORCPT ); Fri, 18 Mar 2016 02:13:15 -0400 Received: from mail-by2on0058.outbound.protection.outlook.com ([207.46.100.58]:3904 "EHLO na01-by2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756883AbcCRGLv (ORCPT ); Fri, 18 Mar 2016 02:11:51 -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 RFC v3 11/12] svm: Do not intercept CR8 when enable AVIC Date: Fri, 18 Mar 2016 01:09:47 -0500 Message-ID: <1458281388-14452-12-git-send-email-Suravee.Suthikulpanit@amd.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1458281388-14452-1-git-send-email-Suravee.Suthikulpanit@amd.com> References: <1458281388-14452-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: SG2PR04CA0047.apcprd04.prod.outlook.com (25.169.49.143) To BY1PR12MB0437.namprd12.prod.outlook.com (25.162.147.139) X-MS-Office365-Filtering-Correlation-Id: 25f6607b-9aef-47ad-e40e-08d34ef42e66 X-Microsoft-Exchange-Diagnostics: 1;BY1PR12MB0437;2:bOUDpvB8Q3CZba9uedWsb5zM+AE3e1Z3PEwNR5p8xNel0qiSeE67cIKCXAezlJkQoo/f9mxk2HluiMjK1JYmODIZjzQTiR3GEVTE3VQCo8GmH1FwVUfGNKw4Kt2iVrPSYTOOTHa2hpbIIqEn+rTVhkW2PUNKwX3XDkJae7GRy9oYVGHSbvSPpJ2BOB4V/wKQ;3:xdXuznTS/DwTXifBhmberlxKQ7D+PvFrMaRK4xRoiBD0/opAsIbTRm4kDlC22WoJKGWVw2Sltp1ELFnSE/uJ5u7MG8tunR5M9C7BmlGGLt7k18i8QQUHLH+H0YHHvJhO;25:+rNg8xPXTs/n3MpAG33qAv9nuXQ5ZZsMeDYMUYy6FTEtaNHNDjxaz3lQwA3mmC7QxG6mYLoem5g4/IxDh1/TsS/WDYypSShZFBd2p5UjJa98Yr1s14k0kwov8AGazvnuVF4eCAWjx1eOhfsPeRwV/e1P9W/CEgq6imVI1M4LARO70s9e/SFbMnH+unglsCxpJdLJO05L/xDojaW0ASkYDJ8xNjC1b5daeaoguMClvQMk/EeoIVspxAQJn/JgsBxL5FEcWZzHkHl/NG6rbX8xCvfSlk43rifaJzdrVaN66wKdR+LT98I8/RpWt6fSUahb6NMBYsAhQKKxc06Nt4LN0ApxHkdphRSyGOpTX+MB78jDjKTFZbVtTQwHkGexZH9D1VNIzH/PV6ouEDFP8c+HGT7BiROmgMpRpW/B74G590NKCm/hMndoIUN8MgA0LYLejqjF4OC6JuJgbLysZhhYPuxst63MXRs7OmKFeOA17+Ynn53dAxIKECZNDUA29IDHs810E1UJVeYfe5dZSPcXK/lO8DKfPz5h32VI3uReNc0= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY1PR12MB0437; X-Microsoft-Exchange-Diagnostics: 1;BY1PR12MB0437;20:88578y2/wSILkgqOdrLpEFdTq6ScEf5SJBVEigqj+FWLtUUu4Qw9ylMv/kiP9ZxQfQauL2ABdRlefjyYnhFhxo+je1ntdqz8XLfvwy0AOjFHtYLIwOGet6OZTvMnDKBaWeuwmUEXafI3Pfr4RP6EwIe3DmW1qmkPpRtFyj+QiF09gsR8lsCuELDKTCfnl9Wx3t4VmXXRsuUQcRFf72IuuVPaywd0QOdCAQzznBJ9WAaEzuDROskXtekWEI1+BiMt5CKx2DO2KHzCIOwXujXTf4ZiWirbqIkcVcTCYhkaOUwfZae1+Lff62tWEaiNWxxxB7FaTQr6No1qRSxP0vg3Rsg6q2YVo26RHESN2Gsu5fDX3bGYJJQs03EC0dGlQk0zstlOnFB2JtGU+IAzMCpzWRCs99TYHfva1F0CLIu9RJju9sRYP4oRn9ZsquI4T8kjrzuPqqBZbW0mXa1+2R1JX+7trRsR7yxjBT5rm1NnZPydKanjZwsVXls8pCRoSTtb;4:Zmy1P1I2+eqWP0JopL+iNDNh6KoZh3MO8HILuDTBgiPr+7rfQEhp7Yq2U/NEx0qxYWUJAu1WBcyYx7ATqwxO1nbG3pBEeZ8KFMvGB1KajI9WQeMWfeEnA7+uYPIAGO+IrcWfGsK1SlSVOZltb29BxMFdZYzlkX4Gv5o9fylW8rFzKVK2SC+3FisGHG9YIk+GfZlszxQZXs9lymYSmF+vVLJBfrlrjTPzH0pfnsX6yoosla2jzbtBMmzAh/sRPpLjKUM0uByzeYRrDwrGt7/boxCueoQKUPHVitUWOtoKdOaBhwSxjz0jX7XPfUyxSiWue2FM0y/zUPv/uGDdXG2TQNLLiOKQ4XHZn2Gf2bpv1SpVZ+v0iQEZqMeppGuaufu1 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001);SRVR:BY1PR12MB0437;BCL:0;PCL:0;RULEID:;SRVR:BY1PR12MB0437; X-Forefront-PRVS: 088552DE73 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6069001)(189998001)(66066001)(19580395003)(19580405001)(47776003)(42186005)(3846002)(5001770100001)(50226001)(6116002)(2201001)(86362001)(586003)(229853001)(2950100001)(36756003)(5004730100002)(77096005)(81166005)(5003940100001)(4326007)(50466002)(92566002)(48376002)(5008740100001)(76176999)(50986999);DIR:OUT;SFP:1101;SCL:1;SRVR:BY1PR12MB0437;H:localhost.localdomain;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY1PR12MB0437;23:UAS+Jevkbf8rNsl0m9PJinFhiQvfJ//z4UDhE5ELAPTCWdl6YH/44t1eII5ueiXjbJsVX4t6taPIV2zEmGBZy6YgymawEd0BETtJ1eEZXndBX8dEXsEfMsKcpOGj02TzwqILmJxWbUA2XnznZFPDtyM1+YU1VKozK7z7DnOAC/xPlR9guXbS6ADeakDnzbmNwc8DBVPsr1KnO/uyt2unYS1o3BYy5bqdIQBCakSyIfSUjHJP6EvzHrVLmK2UpmRgICe9OZddJGtzxCfmJQ6VRZiOXOw83cZ7SmXnyZfVoQlBGOghIeFu983tj+LO+szedGbMgr+rEH4AWqi+rJ4TwTLS797YW5sywVYL5ivoS2un3FlfduGZWLCQd2Lkgw7vny8nhzBpXL08w/ead5QiZeNZvn5G5XIIxDK5NyoEy6k0JTvn1kE2o7Z4o1bafnDssOjUeO87LGNAh5V871lbJOyPVc23iEqi2Qkt59zIzPUHWTb6PnUPvkSpNjr5dCaLEBCo9Qiis/qJ2vejeE7AAZMisIrBJwLO+lF/+LqbF5EhTjc/6Z8k07g6A2gtTbzPPUoPRYV7AYf7xLeYwdoLLvmo9pTilZBDQj35GHFy2qzznhGJcBU/tCRahy3iv56VCVd+gueC4FMggxmos4gki0oG2uRHkcHHThGYo4GWvJN83UMx+XK1TwHQYw1rbjcnpG1bVoh0PFy0Qdl+V4Jg48n94BW+MRxTEOoKRONiD687X1sMQJbIxvJmvj5LoslnooBFQr3DeXhorcaIj6bLxr1THL9flsOZRlGrmR9/uibOwcdKGwo/4Yc/T5+mA8JbuVC/STPF0Bkv0J8JdGuAVNsZdZ/56t2FPmyw/O4PfSY= X-Microsoft-Exchange-Diagnostics: 1;BY1PR12MB0437;5:UQw24OOL/sAvXpkFQppq+/UFQw5/flTvQoV3jB/0lLWpWtBvkiaNdEOMd+O2zWtGWWBVhrvIy0HDYa4qGNf9CwJyRIyDql8W0KtUriiHIM0qU+hwg9H7BjgNRLm86RZnu2qR1OVoMzlt6Xst+4IS1A==;24:pb3Rq/vrQN7+QehtbNaUa6T64J07J6t+svDSxUVy/0eh+4pXzcK3EVM6QSprOJ/v3rTZ+qb8bERDeIx9qSEn8N/CaPSZH2jSjQjrquAtxGA=;20:0pL9z3Q8mAaCy0KytZ2SiOfPP218aeRUjVkKem7E8UMalCk+TL5099ZpdL75YFIsLlGjWS8nINm0z+YyNop4tmc6k1Zv0cg49C5vT/+1sNRw5QakncMrXRSiHODrglJCDVWVldWcJ3WUOJu9k8Sl4ZJlHQOyDXHO7faP2EpK5c0hqMzWSrkTLVLAa67NMXai7xJeT58Gjarow8jpPLlkw1UmS30XVE1e9KaobzYUMkIgExNzNfVfzcB3ZNMxfzLA X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2016 06:11:36.4976 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR12MB0437 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1965 Lines: 59 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 ba84d57..d5418c3 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -984,6 +984,8 @@ static __init int svm_hardware_setup(void) if (avic) { printk(KERN_INFO "kvm: AVIC enabled\n"); + + svm_x86_ops.update_cr8_intercept = NULL; } else { svm_x86_ops.deliver_posted_interrupt = NULL; } @@ -1097,7 +1099,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 (!svm_vcpu_avic_enabled(svm)) + set_cr_intercept(svm, INTERCEPT_CR8_WRITE); set_dr_intercepts(svm); @@ -4080,7 +4083,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)) || + svm_vcpu_avic_enabled(svm)) return; clr_cr_intercept(svm, INTERCEPT_CR8_WRITE); @@ -4271,9 +4275,12 @@ 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); + cr8 = kvm_get_cr8(vcpu) & V_TPR_MASK; svm->vmcb->control.int_ctl &= ~V_TPR_MASK; - svm->vmcb->control.int_ctl |= cr8 & V_TPR_MASK; + svm->vmcb->control.int_ctl |= cr8; + + if (svm_vcpu_avic_enabled(svm)) + kvm_lapic_set_reg(svm->vcpu.arch.apic, APIC_TASKPRI, (u32)cr8 << 4); } static void svm_complete_interrupts(struct vcpu_svm *svm) -- 1.9.1