From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755440AbcEDTLP (ORCPT ); Wed, 4 May 2016 15:11:15 -0400 Received: from mail-bn1bon0071.outbound.protection.outlook.com ([157.56.111.71]:32253 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752610AbcEDTLM (ORCPT ); Wed, 4 May 2016 15:11:12 -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 10/13] KVM: x86: Introducing kvm_x86_ops.apicv_post_state_restore Date: Wed, 4 May 2016 14:09:49 -0500 Message-ID: <1462388992-25242-11-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: 8196974d-d4a8-45ca-a99f-08d3744fd96c X-Microsoft-Exchange-Diagnostics: 1;BLUPR12MB0433;2:LvHpwbXQbVVyGw4hkI8Zl/FEMYzwSVm8+80M8Wpy/1tlWop8n5EwQ9XmxFfL17rBaN74QRiGX+fLFVOdB55CEvSYRgJx/zsYsTbeZLNYfCop2yQ77M48I+rdqSbY4VKKd11ciKipO/WDu1az6qrR/lNfubE+Nw9vZ5BzBuO81KulUF8aAbVCnR7vMhmtiBZe;3:hzZCYeUE736RoHPdfr07EYv75I0mGIxX66gON/bdZvqrCr24l/VE6dIrmq9gudtbtwQJuxOqzSlFLioATs7dIruKRnmeGZM8Fe4UhAyuJmWPsE3Xau7TEQAFarWNGZqJ X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR12MB0433; X-Microsoft-Exchange-Diagnostics: 1;BLUPR12MB0433;25:X9Ur+yGBnL0UCLddO2W1fGJot7wvTB/6zS/g+XL/BtH4LOrTSBUFEBmLcljPJMSa2FUwVct3m4nCr3OKhK5BTP3HWlT5py0xB8F1qjD8KfWRvOs05nQVRamzRKnGH2G+0seEf8aT+IWxTlOL1lRqc5hLIoK8gNf3mcs3v9VJxXCHZpNLzyG83nu1jV2tGo/SKGdMGz8McqasD9dSWkkNlJbsv0809e7/0Ihe31tTY3uHw5nhP2O0LB2+AR7g5VrBs5jrPjwBCg4U5zLJuu2D57GowrUMUjmVbQgSkw+sVLgOe7uM1BrNHmod4BBO5/KUJGqfglPOILbxXrIIlUNZfVeQveq2DKhfBb60y92STFQ4r91pPhACeAHjvT8saqb7Jf1qaf+8qNsQX9FqksZlSSojLWN898isqL2N4CWSxRwAtlmMhYesYLyjtosS5MaY14ryf1WeYHS6BF5YONyAqPcyzBuo0bIquWbLiextgtNMVXHpZ7Y/6fOlZT1SxLvJZIBUh+0BxpdN/5Kcz6ssicZaw2WvGn+xRqjzuvPJCDacxtpL/1ZBf4dekGKIwlBANDqtgSnfFq8kjZsiIbJrbt8mSalhRXm11MN9XOqXd5SvyxjC6W24nbIlAiFCEK3BL/noqb+88YeTgJZgLRzkGVlMUc4y8HLd/RSoyKsQyJg= X-Microsoft-Exchange-Diagnostics: 1;BLUPR12MB0433;20:sf6JYxbwYqjwtFuVqNuhZ22k1gXyeqx3YbkZvUE2h08w3v9L8GeRrD0C6YJui2yeVL85QvWX1uWMkX/NQzoudXy8Y3azgRofsZbCYi9f+owF+d8+nsP53S+UPQ4BGyfrhaBR5ao7QV4/JBGa1vd51yd9g79lt0wyRXtv4zzbioPihVqNwvPEpUdqBNvO6+j8LHumCjNmCrJ+4LfPxiraRkJY3qzncaYT1mZfyGYFFk+LU93WIFH/Ohrk7hceN/lq82qJHnI3MM8yTnaAj+M8LiBiwmLpUIHC7brCWVAkITtBzeMxydLL/xJcm35SdnXImnpLq3NXwR0h9zirTnd4QwmWze3BBYQ/eL1JhxPzZW+pq2yeTB6Nm1Ncd6MA10oeFQdqNaCwqFeSzNSfkHraFOlk1Y7iV35SkXGUff6/zwqkzqg+DQofkyFQDDe2oFrzLLrPdpjeTBO+OwA1NAYxm4+dDYwARnGSVc66tx12w181DRlW2eBL6hoUVYAc307W;4:oVEY4mPA9tdEOOeKDfaBbf8iasTA9TBrIUNXdvhvNnx0850XbbuqsdHpOInRbUbv3idOakLSIdPlCVG6uohinwXvyMahIQ7PJ6wrKr5ollp5WhtlzKepCOEvZs7sarri6qXaFzAB5EmOUvdsTfwhLQBpYCzhShfJ6TPbGJlCfoew2bZ17gTDIl3CTlqulegow+S5fdqJAslXFw0g6Zeoo+6qQdOU+Lvhaebc56HTQ8x/QhHcQX04BrInR4eAjTsjBLJcGPUd3sKSwUT78v6ERINyiVvjRP54J+SC0YW/cKP2hZvfsc9WufgvuERJQsF6JLr7zVJwTGZaXXrKMmH7dGxWy1ZEWvBohyLEeuiRS1qMdnzRNOQxrSvjhzcYj6Y1+ZtGquhsAZs6Dmzk675aWhaO+zzERN3seF1W7i8vMmeoaP9dRUgNtmcLc2GzR1FV 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:JE7JVBcXGTIRXmFhGQM9Klu+yZbiNyRDgbae+qiN9mfGHbk6zMPh1qmgxtn323xMZDBrP0Ptg496WM11nReSMR6XtM6k3RaCxbHgkGsqCSsmhPxzsjMUnA1hL0gzbIhYGTMbmSZEgOwo9ZONgCTEhf+p7JX8Ci2VhOTFbHDevkXzcKF1FwOspQG+ZDW+zOvwCgnV1mTbvRFWAhY7+ODXQMQlSapgfC+61ADuQtfTutCaSCetQ+Y7uBtCqZvnYylmXPFFEZh86fz4QkBRY6dpxIFvlgJ/rSirrgM7GiMvcpUUPB3ESn2TB/fh6nmdyXUm004mTBeosxgzXu9v8pb3qAvnUxn9U5kX/4HwPeRwmVFi7zzqCADjUBno4tof/mSDmRZqnXi8Ed1nL4K4QD7sCMfflOwymQe29lyix5YuFeHDOZt9+9TNGniIWYVh6JN1SD15i7qNO2WGWMIHC/ejQIVDcUvCbukW0LJw6QaUkZ42cqOPl1Kxvem1d3Xch/cTjxn5EqtI97pZKyjg8vJAEjCJ+w00g1PuqKMcC3Vqe7yrudGP8v7YxyvvVoBdhat98DtZQTf9qC5YOwuff9K+WO9sALapIVa46s2i9ifV46WHWRHBmD1Y/BV7iyMg/pCFAMN2e2KWVdknT/WfEfEkBn61IwH/s0HN7s2cYKq7ZzEJ5kDi1QI7ss90yzXam0aqRwxwXgw2fbizt4Y+AOy9MxYTj2gdX3fd/cLRNJ3qpPEmNWmYJbJWg96hb1JzGFu/HkmOw/U72Zw1FI+E0i3qxhQTuLhq7eEWAj2v/aBDSLevnF8dk3Ocbf4RpOsaYsZG54HywUV3trZ30t6oerugj6ZrXAsUCKzEo5HOdwV7ixdY/uB4r5M+bh+1asAOvVBm X-Microsoft-Exchange-Diagnostics: 1;BLUPR12MB0433;5:E7phtQvJls5tWlzHGelSmW3jELHNowX49kPP9dU2Nc3TISapuiz95qsJLIUW8lk6tjypi15ucx7tyESRxd3/mEQkhVxRAQIRoaj/xk57B4u2dcWEDWQcGqZZSQdoFLg7Vr0QUvO17+FiE30Qx0FRZA==;24:EnEjO0BFreHXTila901l2YD5ny2urNCx/JTOAtMkI83VQM4aB5vY0RxbFS9ca2dE1rAmL+Si9r3Wz8iKPiLkbWiixsfxpd+Y0A7WuD6wsaw=;7:XxCdBYLzWlnu7JNHwSDcVuzzCGgwgdzARSgIDb1RqiJdGRLpI8ZlvKuAE2zkPjZRMTIlodtkH9WgKVYrzb8c38S8lfk7K1Sh3d0EKmEGYFrblWUOQgCbT6hABptZBEgglOK9z8nImlux3NxTF+K3lv1cNG3FyqFo4mcaS2dUR94=;20:EAPaaABdQDtLx4DCxjfBS2QHfdpafhPBSx4FrNwvl/K0oDZ/0b1v/8N/sbZ5x4PXZxJWY5k3YDUBY/sbNOATXMz2uhwzJr5WBQnNi6iq9SpDXYUC8Ai52pBsb7QRA0SPZ7ZdaMxizcd2djOK2yPnA3bWaDIT9BetVQktssKG5CGsTGNqOUjP5rIrMbfI0nhVzEPmT3liVwSoPJc/DJ7hcYNW6jOKHs3vCVA2vIariJb9Z1fgyt+e3evXXCI4FViV X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2016 19:11:02.0572 (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 Adding kvm_x86_ops hooks to allow APICv to do post state restore. This is required to support VM save and restore feature. Signed-off-by: Suravee Suthikulpanit --- arch/x86/include/asm/kvm_host.h | 1 + arch/x86/kvm/lapic.c | 2 ++ arch/x86/kvm/svm.c | 10 ++++++++++ 3 files changed, 13 insertions(+) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index a87e825..753359e 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -1004,6 +1004,7 @@ struct kvm_x86_ops { int (*update_pi_irte)(struct kvm *kvm, unsigned int host_irq, uint32_t guest_irq, bool set); + void (*apicv_post_state_restore)(struct kvm_vcpu *vcpu); }; struct kvm_arch_async_pf { diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index 34c28c0..539675c 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -1961,6 +1961,8 @@ void kvm_apic_post_state_restore(struct kvm_vcpu *vcpu, 1 : count_vectors(apic->regs + APIC_ISR); apic->highest_isr_cache = -1; if (vcpu->arch.apicv_active) { + if (kvm_x86_ops->apicv_post_state_restore) + kvm_x86_ops->apicv_post_state_restore(vcpu); kvm_x86_ops->hwapic_irr_update(vcpu, apic_find_highest_irr(apic)); kvm_x86_ops->hwapic_isr_update(vcpu->kvm, diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 90b34fa..6c1d558 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -4833,6 +4833,15 @@ static void svm_sched_in(struct kvm_vcpu *vcpu, int cpu) { } +static inline void avic_post_state_restore(struct kvm_vcpu *vcpu) +{ + if (avic_handle_apic_id_update(vcpu) != 0) + return; + if (avic_handle_dfr_update(vcpu) != 0) + return; + avic_handle_ldr_update(vcpu); +} + static struct kvm_x86_ops svm_x86_ops = { .cpu_has_kvm_support = has_svm, .disabled_by_bios = is_disabled, @@ -4913,6 +4922,7 @@ static struct kvm_x86_ops svm_x86_ops = { .sync_pir_to_irr = svm_sync_pir_to_irr, .hwapic_irr_update = svm_hwapic_irr_update, .hwapic_isr_update = svm_hwapic_isr_update, + .apicv_post_state_restore = avic_post_state_restore, .set_tss_addr = svm_set_tss_addr, .get_tdp_level = get_npt_level, -- 1.9.1