From patchwork Mon Feb 4 14:41:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 10795793 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id DA7AF922 for ; Mon, 4 Feb 2019 14:42:07 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C92C12B8D2 for ; Mon, 4 Feb 2019 14:42:07 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C6A692B8AB; Mon, 4 Feb 2019 14:42:07 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 543A12B872 for ; Mon, 4 Feb 2019 14:42:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730139AbfBDOmB (ORCPT ); Mon, 4 Feb 2019 09:42:01 -0500 Received: from mail-eopbgr770048.outbound.protection.outlook.com ([40.107.77.48]:38604 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728788AbfBDOmB (ORCPT ); Mon, 4 Feb 2019 09:42:01 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AAwiw0B9X2/HXSuWRSqkC8AZAyUC/8wLEsYLldE8hi4=; b=A8px2EP3IGHxQJIIt9PnVaUsliduhv7IKsqhyll37iQn4RtflhSjoabAz/0l+QUC/nG6ReJFjHiWybah+wHlco8h4+7xSF/wTk18DPvEfoD3EtpthzRCGA83bZYUmUmoMZhtOwL0jdPzf9gcl1ocVMjPjwmZ0IEYQOtHm7CnIuI= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3274.namprd12.prod.outlook.com (20.179.106.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1580.16; Mon, 4 Feb 2019 14:41:58 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::c40:929a:abab:308d]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::c40:929a:abab:308d%3]) with mapi id 15.20.1558.026; Mon, 4 Feb 2019 14:41:58 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "x86@kernel.org" CC: "joro@8bytes.org" , "rkrcmar@redhat.com" , "pbonzini@redhat.com" , "tglx@linutronix.de" , "mingo@redhat.com" , "bp@alien8.de" , "hpa@zytor.com" , "jsteckli@amazon.de" , "sironi@amazon.de" , "wawei@amazon.de" , "Suthikulpanit, Suravee" Subject: [RFC PATCH 1/8] svm: Fix improper check when deactivate AVIC Thread-Topic: [RFC PATCH 1/8] svm: Fix improper check when deactivate AVIC Thread-Index: AQHUvJfI6Shdn7859Eac1gOwTJqJGQ== Date: Mon, 4 Feb 2019 14:41:58 +0000 Message-ID: <20190204144128.9489-2-suravee.suthikulpanit@amd.com> References: <20190204144128.9489-1-suravee.suthikulpanit@amd.com> In-Reply-To: <20190204144128.9489-1-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [61.90.26.242] x-clientproxiedby: SG2PR04CA0190.apcprd04.prod.outlook.com (2603:1096:4:14::28) To DM6PR12MB2844.namprd12.prod.outlook.com (2603:10b6:5:45::32) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;DM6PR12MB3274;20:g7ZJfwQIhk5xhy/RDWVAevjMjM+hEnmBxTCR06X21aY2TAVj2Dq3A++gCzZBKaQPS5aTDGB+rNTs7qjDVo3cBKzSaWXvbxV0zKyLqLcFOWz2YNZiqIkpfCPlI/32wxetpPlUzHiORiFPy10eBDJhlNlUrjAKqHLCw4WNi53q8yGBl3DGvfMjBKxEtNZy86/IxIycmrEkejqX1/FuHpofaSOykkCULCB3Pb0R4pXALw1gnqeGFHCNPvojmCkjvp83 x-ms-office365-filtering-correlation-id: bde4024f-1bdf-4d44-e158-08d68aaeea89 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4618075)(2017052603328)(7153060)(7193020);SRVR:DM6PR12MB3274; x-ms-traffictypediagnostic: DM6PR12MB3274: x-microsoft-antispam-prvs: x-forefront-prvs: 0938781D02 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(346002)(376002)(366004)(39860400002)(396003)(136003)(189003)(199004)(6116002)(3846002)(105586002)(81166006)(81156014)(6436002)(52116002)(186003)(256004)(217873002)(106356001)(2501003)(8936002)(8676002)(316002)(110136005)(4326008)(99286004)(2201001)(86362001)(72206003)(14454004)(386003)(25786009)(7736002)(305945005)(478600001)(6486002)(54906003)(53936002)(6512007)(50226002)(71190400001)(486006)(66574012)(1076003)(6506007)(97736004)(102836004)(476003)(68736007)(2616005)(11346002)(2906002)(446003)(7416002)(26005)(76176011)(71200400001)(66066001)(36756003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3274;H:DM6PR12MB2844.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: zVlFvCBAEx/hNjJ73/21U3mkf/Bo10qGHv5HlrtyQqBcfFII7fAdVkq8cRnSE4ymui3s6bxLjmiPFk8Zsr/6S7goBZgksQFEeD/GpNyFvWmsBBGKLtQHxQE7Uo3vhLpiLXitU1a2dYHZ2HT9GqXsrJpenfBDgGoQOVXTOHZN9eEUZAChxyIge6QZ9Uizs/Pr58QcTuSwAvwC3XdszqKNZ9saDpd+dSgYG4REEPJjjECXTQJOxTbuxuAGxWUuuUZVv5tQGbpmA0h5VeFtdcejwb1SB0RY+nUcOt3AtlSN6u8JVR2BR15QW/p3Iy6IIWkiywScsvtIO6ckMsJTIhJF+AM/tqTXv09bCbZby6sV0erNGNzn00GhtuksSL8tglJMant7dm4IYwOrgWql/WaBTZEzSgBwYT0s4WkoTuYEqSs= Content-ID: <307706FF00CE83449B9E99F131238ACA@namprd12.prod.outlook.com> MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: bde4024f-1bdf-4d44-e158-08d68aaeea89 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Feb 2019 14:41:53.9199 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3274 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The function svm_refresh_apicv_exec_ctrl() always returning prematurely as kvm_vcpu_apicv_active() always return false when calling from the function arch/x86/kvm/x86.c:kvm_vcpu_deactivate_apicv(). This is because the apicv_active is set to false just before calling refresh_apicv_exec_ctrl(). Also, we need to mark VMCB_AVIC bit as dirty instead of VMCB_INTR. So, fix svm_refresh_apicv_exec_ctrl() to properly deactivate AVIC. Fixes: 67034bb9dd5e ('KVM: SVM: Add irqchip_split() checks before enabling AVIC') Cc: Radim Krčmář Suggested-by: Paolo Bonzini Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index d35c9002f282..75508f665aef 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -5114,11 +5114,11 @@ static void svm_refresh_apicv_exec_ctrl(struct kvm_vcpu *vcpu) struct vcpu_svm *svm = to_svm(vcpu); struct vmcb *vmcb = svm->vmcb; - if (!kvm_vcpu_apicv_active(&svm->vcpu)) - return; - - vmcb->control.int_ctl &= ~AVIC_ENABLE_MASK; - mark_dirty(vmcb, VMCB_INTR); + if (kvm_vcpu_apicv_active(vcpu)) + vmcb->control.int_ctl |= AVIC_ENABLE_MASK; + else + vmcb->control.int_ctl &= ~AVIC_ENABLE_MASK; + mark_dirty(vmcb, VMCB_AVIC); } static void svm_load_eoi_exitmap(struct kvm_vcpu *vcpu, u64 *eoi_exit_bitmap) From patchwork Mon Feb 4 14:42:03 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 10795801 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6A6F1922 for ; Mon, 4 Feb 2019 14:42:53 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 56DC62B8E3 for ; Mon, 4 Feb 2019 14:42:53 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 548532B8E1; Mon, 4 Feb 2019 14:42:53 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C23A32B8E3 for ; Mon, 4 Feb 2019 14:42:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730763AbfBDOmr (ORCPT ); Mon, 4 Feb 2019 09:42:47 -0500 Received: from mail-eopbgr680076.outbound.protection.outlook.com ([40.107.68.76]:48598 "EHLO NAM04-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730275AbfBDOmr (ORCPT ); Mon, 4 Feb 2019 09:42:47 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dcrMB9xH5DG+iIUkeUJ2q36srNbVNfOY6r34mygwN7I=; b=aY8DD05H4/roxabqtTFwMC7zNjkJd75fwlff3Hdt8oGbuS/IA4ECfyq7D86ggXDGvavZa3G0Ka1FFtFCP6tbWhumPRwEdnXDizCdj3CUd3x7typmrOZlfCZmIrzRPd63JzjR2C4eEGF2e4P/wbd0pFG9s2aH86RvL5arQFZ1zdI= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3257.namprd12.prod.outlook.com (20.179.105.213) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1580.16; Mon, 4 Feb 2019 14:42:03 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::c40:929a:abab:308d]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::c40:929a:abab:308d%3]) with mapi id 15.20.1558.026; Mon, 4 Feb 2019 14:42:03 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "x86@kernel.org" CC: "joro@8bytes.org" , "rkrcmar@redhat.com" , "pbonzini@redhat.com" , "tglx@linutronix.de" , "mingo@redhat.com" , "bp@alien8.de" , "hpa@zytor.com" , "jsteckli@amazon.de" , "sironi@amazon.de" , "wawei@amazon.de" , "Suthikulpanit, Suravee" Subject: [RFC PATCH 2/8] KVM: x86: Add interface for run-time activate/de-activate APIC virtualization Thread-Topic: [RFC PATCH 2/8] KVM: x86: Add interface for run-time activate/de-activate APIC virtualization Thread-Index: AQHUvJfLH3USQ1ddaEOiVnANXxnv8A== Date: Mon, 4 Feb 2019 14:42:03 +0000 Message-ID: <20190204144128.9489-3-suravee.suthikulpanit@amd.com> References: <20190204144128.9489-1-suravee.suthikulpanit@amd.com> In-Reply-To: <20190204144128.9489-1-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [61.90.26.242] x-clientproxiedby: SG2PR04CA0190.apcprd04.prod.outlook.com (2603:1096:4:14::28) To DM6PR12MB2844.namprd12.prod.outlook.com (2603:10b6:5:45::32) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;DM6PR12MB3257;20:Ssymbn4/WKfwRbu5VLMWrY07bZAMc47igB20PapgB103b6Zr95caAJ98lW7QM6NHoOTTOiMxFUe0CukFANVN73KFkwJ/4MJIgW3uA3Piq057ASMHsCD3F60O6QKxpycgapfg6oYqyXikgYE/qWn/+4R7izNEyDunrwJzYm/fzOuDuP8xhdARMLjYr4RzKgc9uSMy+Ul8h+nVCf0/J62O95wcz9aKVz1pD9yVMjdx8isEiKt0/KUocgINXwsgJLgh x-ms-office365-filtering-correlation-id: 657e3109-b99f-4c33-1a18-08d68aaeed6b x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4618075)(2017052603328)(7153060)(7193020);SRVR:DM6PR12MB3257; x-ms-traffictypediagnostic: DM6PR12MB3257: x-microsoft-antispam-prvs: x-forefront-prvs: 0938781D02 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(376002)(39860400002)(366004)(346002)(396003)(136003)(189003)(199004)(305945005)(2616005)(1076003)(316002)(71190400001)(446003)(486006)(2501003)(26005)(7416002)(68736007)(476003)(14454004)(110136005)(11346002)(54906003)(7736002)(386003)(97736004)(71200400001)(2201001)(86362001)(36756003)(4326008)(256004)(99286004)(50226002)(53936002)(8936002)(76176011)(6486002)(14444005)(478600001)(6506007)(2906002)(102836004)(25786009)(72206003)(81166006)(81156014)(8676002)(6116002)(3846002)(106356001)(52116002)(6512007)(217873002)(66066001)(105586002)(6436002)(186003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3257;H:DM6PR12MB2844.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: ybh3VI1ROb0OSjYeQbwmBbLDEyTyYZOP7Vh25ezzK+5VB2WDoowgp6tFXolGGqkHcJ6sUzYHaxee2pYf173aSjbQAFrf8pPG02qdXJveovpyzmmexmf15Z+M3p9XXPkoMD/Xr2FiIx9uCnspSUoicPsxgaj3coCQnffRAs9ps0DmwmjZoO7etVspvEMz6WQ1ZVhv8ApHexbtxjsiOJ7oquxGemQFV6CgVVBjFb9yazatAb9W9WLrLYdZ1kkHG/hoD0+is2feefoedsHW1n8tCL73mfhZihDme7r58PssnXF6F4KVYbkD/iBtyYjsHmHPINR4OhGiWHkfP8hwYGlERv/Z0lDmt1TL3Qm3uPcJsFPKsQi0lW7VZX0ttD+De0wBZY7pTzYDWqVqRZfLs/W8Q6dumZjp5bTE2LnY6vzSSk0= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 657e3109-b99f-4c33-1a18-08d68aaeed6b X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Feb 2019 14:41:59.0536 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3257 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Certain types of interrupt cannot be supported by AMD AVIC hardware. Therefore, there is a need to temporary deactivate AVIC and fallback to legacy interrupt injection mechanism. Since AMD AVIC requires all vcpus to be operating in the same mode. So, introduce new interface to request all vCPUs to activate/deactivate APICV during run-time. Signed-off-by: Suravee Suthikulpanit --- arch/x86/include/asm/kvm_host.h | 8 ++++++++ arch/x86/kvm/x86.c | 36 +++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 4660ce90de7f..05b5778c769e 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -78,6 +78,10 @@ #define KVM_REQ_HV_STIMER KVM_ARCH_REQ(22) #define KVM_REQ_LOAD_EOI_EXITMAP KVM_ARCH_REQ(23) #define KVM_REQ_GET_VMCS12_PAGES KVM_ARCH_REQ(24) +#define KVM_REQ_APICV_ACTIVATE \ + KVM_ARCH_REQ_FLAGS(25, KVM_REQUEST_WAIT | KVM_REQUEST_NO_WAKEUP) +#define KVM_REQ_APICV_DEACTIVATE \ + KVM_ARCH_REQ_FLAGS(26, KVM_REQUEST_WAIT | KVM_REQUEST_NO_WAKEUP) #define CR0_RESERVED_BITS \ (~(unsigned long)(X86_CR0_PE | X86_CR0_MP | X86_CR0_EM | X86_CR0_TS \ @@ -1536,6 +1540,10 @@ bool kvm_is_linear_rip(struct kvm_vcpu *vcpu, unsigned long linear_rip); void kvm_make_mclock_inprogress_request(struct kvm *kvm); void kvm_make_scan_ioapic_request(struct kvm *kvm); +void kvm_vcpu_deactivate_apicv(struct kvm_vcpu *vcpu); +void kvm_vcpu_activate_apicv(struct kvm_vcpu *vcpu); +void kvm_make_apicv_activate_request(struct kvm *kvm); +void kvm_make_apicv_deactivate_request(struct kvm *kvm); void kvm_arch_async_page_not_present(struct kvm_vcpu *vcpu, struct kvm_async_pf *work); diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 02c8e095a239..e93e2ef923b4 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -7045,11 +7045,19 @@ static void kvm_pv_kick_cpu_op(struct kvm *kvm, unsigned long flags, int apicid) kvm_irq_delivery_to_apic(kvm, NULL, &lapic_irq, NULL); } +void kvm_vcpu_activate_apicv(struct kvm_vcpu *vcpu) +{ + vcpu->arch.apicv_active = true; + kvm_x86_ops->refresh_apicv_exec_ctrl(vcpu); +} +EXPORT_SYMBOL_GPL(kvm_vcpu_activate_apicv); + void kvm_vcpu_deactivate_apicv(struct kvm_vcpu *vcpu) { vcpu->arch.apicv_active = false; kvm_x86_ops->refresh_apicv_exec_ctrl(vcpu); } +EXPORT_SYMBOL_GPL(kvm_vcpu_deactivate_apicv); int kvm_emulate_hypercall(struct kvm_vcpu *vcpu) { @@ -7541,6 +7549,30 @@ void kvm_make_scan_ioapic_request(struct kvm *kvm) kvm_make_all_cpus_request(kvm, KVM_REQ_SCAN_IOAPIC); } +void kvm_make_apicv_activate_request(struct kvm *kvm) +{ + int i; + struct kvm_vcpu *v; + + kvm_for_each_vcpu(i, v, kvm) + kvm_clear_request(KVM_REQ_APICV_DEACTIVATE, v); + + kvm_make_all_cpus_request(kvm, KVM_REQ_APICV_ACTIVATE); +} +EXPORT_SYMBOL_GPL(kvm_make_apicv_activate_request); + +void kvm_make_apicv_deactivate_request(struct kvm *kvm) +{ + int i; + struct kvm_vcpu *v; + + kvm_for_each_vcpu(i, v, kvm) + kvm_clear_request(KVM_REQ_APICV_ACTIVATE, v); + + kvm_make_all_cpus_request(kvm, KVM_REQ_APICV_DEACTIVATE); +} +EXPORT_SYMBOL_GPL(kvm_make_apicv_deactivate_request); + static void vcpu_scan_ioapic(struct kvm_vcpu *vcpu) { if (!kvm_apic_present(vcpu)) @@ -7727,6 +7759,10 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu) */ if (kvm_check_request(KVM_REQ_HV_STIMER, vcpu)) kvm_hv_process_stimers(vcpu); + if (kvm_check_request(KVM_REQ_APICV_ACTIVATE, vcpu)) + kvm_vcpu_activate_apicv(vcpu); + if (kvm_check_request(KVM_REQ_APICV_DEACTIVATE, vcpu)) + kvm_vcpu_deactivate_apicv(vcpu); } if (kvm_check_request(KVM_REQ_EVENT, vcpu) || req_int_win) { From patchwork Mon Feb 4 14:42:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 10795807 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id AFFAC17FB for ; Mon, 4 Feb 2019 14:43:06 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9C1562B8BE for ; Mon, 4 Feb 2019 14:43:06 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9A6332B902; Mon, 4 Feb 2019 14:43:06 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0EDA72B8E6 for ; Mon, 4 Feb 2019 14:43:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730280AbfBDOmL (ORCPT ); Mon, 4 Feb 2019 09:42:11 -0500 Received: from mail-eopbgr770072.outbound.protection.outlook.com ([40.107.77.72]:31456 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730271AbfBDOmL (ORCPT ); Mon, 4 Feb 2019 09:42:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mu9mkI+DpjWiy2xh+Kczf18gkhGE6QaRAeywIeTE1ig=; b=bqDo8M+WSTmT54QxFZy4BjSeuAdtYb3HU364g+tDtnBbhJoQMmIUwBsA3aQUj6+a7uZujVM1h0FggHUESFGsXxLqdKx0v8Q71F+mkm4e+WQ5OO6zZzOOEHXRdCbPq7qYs19QlmMo5FxJUiFiEWD6TVHQA8u+V+VNsKtWTfSW9tY= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3274.namprd12.prod.outlook.com (20.179.106.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1580.16; Mon, 4 Feb 2019 14:42:08 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::c40:929a:abab:308d]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::c40:929a:abab:308d%3]) with mapi id 15.20.1558.026; Mon, 4 Feb 2019 14:42:08 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "x86@kernel.org" CC: "joro@8bytes.org" , "rkrcmar@redhat.com" , "pbonzini@redhat.com" , "tglx@linutronix.de" , "mingo@redhat.com" , "bp@alien8.de" , "hpa@zytor.com" , "jsteckli@amazon.de" , "sironi@amazon.de" , "wawei@amazon.de" , "Suthikulpanit, Suravee" Subject: [RFC PATCH 3/8] KVM: x86: Add callback functions for handling APIC ID, DFR and LDR update Thread-Topic: [RFC PATCH 3/8] KVM: x86: Add callback functions for handling APIC ID, DFR and LDR update Thread-Index: AQHUvJfOFjZbj+MTl0eQlZQ3XzE5rw== Date: Mon, 4 Feb 2019 14:42:08 +0000 Message-ID: <20190204144128.9489-4-suravee.suthikulpanit@amd.com> References: <20190204144128.9489-1-suravee.suthikulpanit@amd.com> In-Reply-To: <20190204144128.9489-1-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [61.90.26.242] x-clientproxiedby: SG2PR04CA0190.apcprd04.prod.outlook.com (2603:1096:4:14::28) To DM6PR12MB2844.namprd12.prod.outlook.com (2603:10b6:5:45::32) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;DM6PR12MB3274;20:DglDKdhLFpSs+YpFOO7IPCHMm92A2c55BWGGcy+RWL6NjR8mKx7zAL7hoL5MDA9prqAOLyc7XS++1oxTTdnxAZB+kSeKDCuNkBa+3XMbPeWd63UV2WinO3ValhBjM/L9hIml4wuyf2qlp1aGIdXCMtY9/p4rjrbwt/jW5fd9Go31fQzWyVFOOPdczWNq+pGqI5U+sevfYAqGfHgM1IJwBS/HHpfLgQpjqooGT+WgfQPqX4RsNadG1ZvFYY80Szo5 x-ms-office365-filtering-correlation-id: 0556c55e-2972-419e-9ec9-08d68aaef043 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4618075)(2017052603328)(7153060)(7193020);SRVR:DM6PR12MB3274; x-ms-traffictypediagnostic: DM6PR12MB3274: x-microsoft-antispam-prvs: x-forefront-prvs: 0938781D02 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(346002)(376002)(366004)(39860400002)(396003)(136003)(189003)(199004)(6116002)(3846002)(105586002)(81166006)(81156014)(6436002)(52116002)(186003)(256004)(14444005)(217873002)(106356001)(2501003)(8936002)(8676002)(316002)(110136005)(4326008)(99286004)(2201001)(86362001)(72206003)(14454004)(386003)(25786009)(7736002)(305945005)(478600001)(6486002)(54906003)(53936002)(6512007)(15650500001)(50226002)(71190400001)(486006)(1076003)(6506007)(97736004)(102836004)(476003)(68736007)(2616005)(11346002)(2906002)(446003)(7416002)(26005)(76176011)(71200400001)(66066001)(36756003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3274;H:DM6PR12MB2844.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: mlmpo3H4GrCdZCYgIztJR3MjME5+XgjbIgApcRvx8Ysp6wm/tVdOcYM5eneSC5wejIowWV3w0FxK6oSzq01uqQRl59qQKsIU9oJA8MjrfYBiiqCXEedd+JPhqPE6afykGhpjomqccaNFEsZddIMlKG0IL292HVjX7R0PxpxD6aYWRQ4zxyNZz3VLtdwqVIaPqboU63OAKLmr/mf9vTAzkV0upaVlXQiCiVqv7PRU0EyXf2ZsiKx0pR0O79DIeKKj+BeN/Oca+h8TTxj7rA9elDW8yzPTav0QZUfTPoC9okwEXAYzMscHm18qyqEuiyakTxjkrfcIul1gHMz+duT1ITfdLYVvXUrShXh1I4tsRrXWg+T/1SQHJi8+O4zJ/4QYHZpoXwFMf6/+/eo35i2kV8uiH8dYTeEewP8jEKMrHu0= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0556c55e-2972-419e-9ec9-08d68aaef043 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Feb 2019 14:42:03.8330 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3274 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add hooks for handling the case when guest VM update APIC ID, DFR and LDR. This is needed during when AMD AVIC is temporary deactivated. Signed-off-by: Suravee Suthikulpanit --- arch/x86/include/asm/kvm_host.h | 3 +++ arch/x86/kvm/lapic.c | 11 +++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 05b5778c769e..cad47b4955e2 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -1083,6 +1083,9 @@ struct kvm_x86_ops { void (*refresh_apicv_exec_ctrl)(struct kvm_vcpu *vcpu); void (*hwapic_irr_update)(struct kvm_vcpu *vcpu, int max_irr); void (*hwapic_isr_update)(struct kvm_vcpu *vcpu, int isr); + void (*hwapic_apic_id_update)(struct kvm_vcpu *vcpu); + void (*hwapic_dfr_update)(struct kvm_vcpu *vcpu); + void (*hwapic_ldr_update)(struct kvm_vcpu *vcpu); bool (*guest_apic_has_interrupt)(struct kvm_vcpu *vcpu); void (*load_eoi_exitmap)(struct kvm_vcpu *vcpu, u64 *eoi_exit_bitmap); void (*set_virtual_apic_mode)(struct kvm_vcpu *vcpu); diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index 9f089e2e09d0..a067a7292a5f 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -267,6 +267,8 @@ static inline void kvm_apic_set_xapic_id(struct kvm_lapic *apic, u8 id) static inline void kvm_apic_set_ldr(struct kvm_lapic *apic, u32 id) { kvm_lapic_set_reg(apic, APIC_LDR, id); + if (kvm_x86_ops->hwapic_ldr_update) + kvm_x86_ops->hwapic_ldr_update(apic->vcpu); recalculate_apic_map(apic->vcpu->kvm); } @@ -1809,10 +1811,13 @@ int kvm_lapic_reg_write(struct kvm_lapic *apic, u32 reg, u32 val) switch (reg) { case APIC_ID: /* Local APIC ID */ - if (!apic_x2apic_mode(apic)) + if (!apic_x2apic_mode(apic)) { kvm_apic_set_xapic_id(apic, val >> 24); - else + if (kvm_x86_ops->hwapic_apic_id_update) + kvm_x86_ops->hwapic_apic_id_update(apic->vcpu); + } else { ret = 1; + } break; case APIC_TASKPRI: @@ -1834,6 +1839,8 @@ int kvm_lapic_reg_write(struct kvm_lapic *apic, u32 reg, u32 val) case APIC_DFR: if (!apic_x2apic_mode(apic)) { kvm_lapic_set_reg(apic, APIC_DFR, val | 0x0FFFFFFF); + if (kvm_x86_ops->hwapic_dfr_update) + kvm_x86_ops->hwapic_dfr_update(apic->vcpu); recalculate_apic_map(apic->vcpu->kvm); } else ret = 1; From patchwork Mon Feb 4 14:42:13 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 10795805 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 496D8922 for ; Mon, 4 Feb 2019 14:43:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 393572B8D5 for ; Mon, 4 Feb 2019 14:43:04 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 372E62B8F0; Mon, 4 Feb 2019 14:43:04 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CDA232B905 for ; Mon, 4 Feb 2019 14:43:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730342AbfBDOmQ (ORCPT ); Mon, 4 Feb 2019 09:42:16 -0500 Received: from mail-eopbgr770080.outbound.protection.outlook.com ([40.107.77.80]:61011 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730351AbfBDOmP (ORCPT ); Mon, 4 Feb 2019 09:42:15 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lRCSdhUym5lFazr32x16xa7ZFTbmH42kWrDactZ+P24=; b=DtsTU5mEO5/vcoOxbmsmKVSdNct9aiqQVrodPv7sRwB5grPySsZlymG2ipDlTxmxMQ98XhwSMoM6Yuf8tLagE1I6eKe0T6cXHVRtITbDpZGba/FPkrQ1bIL+acvqjFHhPN3bF8R0ARDCFC9RDKvsNjoRhEPoz01/Z1rgymlS364= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3274.namprd12.prod.outlook.com (20.179.106.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1580.16; Mon, 4 Feb 2019 14:42:13 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::c40:929a:abab:308d]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::c40:929a:abab:308d%3]) with mapi id 15.20.1558.026; Mon, 4 Feb 2019 14:42:13 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "x86@kernel.org" CC: "joro@8bytes.org" , "rkrcmar@redhat.com" , "pbonzini@redhat.com" , "tglx@linutronix.de" , "mingo@redhat.com" , "bp@alien8.de" , "hpa@zytor.com" , "jsteckli@amazon.de" , "sironi@amazon.de" , "wawei@amazon.de" , "Suthikulpanit, Suravee" Subject: [RFC PATCH 4/8] svm: Add AMD AVIC handlers for APIC ID, DFR and LDR update Thread-Topic: [RFC PATCH 4/8] svm: Add AMD AVIC handlers for APIC ID, DFR and LDR update Thread-Index: AQHUvJfQ5Gi9B+s2WUa4GhBQMpxrpQ== Date: Mon, 4 Feb 2019 14:42:13 +0000 Message-ID: <20190204144128.9489-5-suravee.suthikulpanit@amd.com> References: <20190204144128.9489-1-suravee.suthikulpanit@amd.com> In-Reply-To: <20190204144128.9489-1-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [61.90.26.242] x-clientproxiedby: SG2PR04CA0190.apcprd04.prod.outlook.com (2603:1096:4:14::28) To DM6PR12MB2844.namprd12.prod.outlook.com (2603:10b6:5:45::32) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;DM6PR12MB3274;20:9ctRULsFIHrER0lBJ0jptAfSG0lcyp0EjqhUMiKsA2rfGdrmHb/osqobmbVW/qS+IyBJx4idLE5uC0Vf0DZmq3GM7+wF8cJ7FduYFwZvaUuEBCKCcnRjrSybfz3OET9FfisNPHCgHPU6f+dc2SyIAPsQL/PFRGKB/LTH8sACBQLfMHIQpv8ngZ5tUTbrk5n/bGotoeDwCfYg1OddRk4aQEQMVgAi18cqGJVQbynOw3bNvO+ecSnae8CUuiClliXZ x-ms-office365-filtering-correlation-id: 3f642437-e0c3-4d0f-d257-08d68aaef331 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4618075)(2017052603328)(7153060)(7193020);SRVR:DM6PR12MB3274; x-ms-traffictypediagnostic: DM6PR12MB3274: x-microsoft-antispam-prvs: x-forefront-prvs: 0938781D02 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(346002)(376002)(366004)(39860400002)(396003)(136003)(189003)(199004)(6116002)(3846002)(105586002)(81166006)(81156014)(6436002)(52116002)(186003)(256004)(14444005)(217873002)(106356001)(2501003)(8936002)(8676002)(316002)(110136005)(4326008)(99286004)(2201001)(86362001)(72206003)(14454004)(386003)(25786009)(7736002)(305945005)(478600001)(6486002)(54906003)(53936002)(6512007)(15650500001)(50226002)(71190400001)(486006)(1076003)(6506007)(97736004)(102836004)(476003)(68736007)(2616005)(11346002)(2906002)(446003)(7416002)(26005)(76176011)(71200400001)(66066001)(36756003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3274;H:DM6PR12MB2844.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: upDX6KtCRhe9Scv0Kb9+qW04jx6XjQWx4m638up9Z1PpoNKFdPVvzNJRzJa+zSDl97gVp3X9nUqUXL0cOTHuOvJhPGnQfxrbOuHURMEUK/zhrz52uHC3QcwOlKWwyeEwAeEBXMiU7xjENhgohxzRk9YdLtmukIw96XDPH5+MGFl5WIoF6WNjJwJ2Kv64FjQcSbjtdg6C6EJpiDLHq5hx+vBHzAlGpGz3m1Bbx/oDzTuhSFelFPjtSRp8Bw7j3e5o5lUCWnfkr1l2dxt41LazJM6xYzaG2qUGNKmCuhk3mk08O1mFcKbA/mKkN2D9LeZ/ijgG35viUmP4w7MGOi2+nuOioZ5YK4mUQfIdjvWGQAPLey+V230a/eaQXwVFPkLbp6HxjsfPQTQJ+5Qidju2R0YkGurCV+SHWRt3RXpqG44= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3f642437-e0c3-4d0f-d257-08d68aaef331 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Feb 2019 14:42:08.7335 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3274 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP During AVIC temporary deactivation, guest could update APIC ID, DFR and LDR registers, which would not be trapped by avic_unaccelerated_ccess_interception(). In this case, we need to update the AVIC logical APIC ID table accordingly. Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 75508f665aef..c33f02b4a19e 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -4649,6 +4649,24 @@ static void avic_handle_dfr_update(struct kvm_vcpu *vcpu) svm->dfr_reg = dfr; } +static void svm_hwapic_ldr_update(struct kvm_vcpu *vcpu) +{ + if (svm_get_enable_apicv(vcpu) && !kvm_vcpu_apicv_active(vcpu)) + avic_handle_ldr_update(vcpu); +} + +static void svm_hwapic_apic_id_update(struct kvm_vcpu *vcpu) +{ + if (svm_get_enable_apicv(vcpu) && !kvm_vcpu_apicv_active(vcpu)) + avic_handle_apic_id_update(vcpu); +} + +static void svm_hwapic_dfr_update(struct kvm_vcpu *vcpu) +{ + if (svm_get_enable_apicv(vcpu) && !kvm_vcpu_apicv_active(vcpu)) + avic_handle_dfr_update(vcpu); +} + static int avic_unaccel_trap_write(struct vcpu_svm *svm) { struct kvm_lapic *apic = svm->vcpu.arch.apic; @@ -7166,6 +7184,9 @@ static struct kvm_x86_ops svm_x86_ops __ro_after_init = { .load_eoi_exitmap = svm_load_eoi_exitmap, .hwapic_irr_update = svm_hwapic_irr_update, .hwapic_isr_update = svm_hwapic_isr_update, + .hwapic_apic_id_update = svm_hwapic_apic_id_update, + .hwapic_dfr_update = svm_hwapic_dfr_update, + .hwapic_ldr_update = svm_hwapic_ldr_update, .sync_pir_to_irr = kvm_lapic_find_highest_irr, .apicv_post_state_restore = avic_post_state_restore, From patchwork Mon Feb 4 14:42:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 10795795 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A297E17FB for ; Mon, 4 Feb 2019 14:42:27 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8A0C02B8DB for ; Mon, 4 Feb 2019 14:42:27 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 87C262B8EB; Mon, 4 Feb 2019 14:42:27 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 05D072B8F5 for ; Mon, 4 Feb 2019 14:42:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728645AbfBDOmV (ORCPT ); Mon, 4 Feb 2019 09:42:21 -0500 Received: from mail-eopbgr730048.outbound.protection.outlook.com ([40.107.73.48]:44640 "EHLO NAM05-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730351AbfBDOmU (ORCPT ); Mon, 4 Feb 2019 09:42:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=l/mEMkIMUzSuAncXeOsajO6PHRRXHlsGy9/0QH0Rpzc=; b=CJN5DXbrB8LzSGKXHqrDqJNfnLxAPbXkaM3y89TPcwzo41Gfl2mIRWXEiymGU3dane2smRTCh6a7zTpbbrFFrSxofLslk5h5HrF07L7eqJ0qyvP8T3UFqc5wJA6cwg9uZL7SWWX35vRtowH4YPMnuKkSOpmKm/qgiZCE3/6SFso= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3274.namprd12.prod.outlook.com (20.179.106.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1580.16; Mon, 4 Feb 2019 14:42:18 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::c40:929a:abab:308d]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::c40:929a:abab:308d%3]) with mapi id 15.20.1558.026; Mon, 4 Feb 2019 14:42:18 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "x86@kernel.org" CC: "joro@8bytes.org" , "rkrcmar@redhat.com" , "pbonzini@redhat.com" , "tglx@linutronix.de" , "mingo@redhat.com" , "bp@alien8.de" , "hpa@zytor.com" , "jsteckli@amazon.de" , "sironi@amazon.de" , "wawei@amazon.de" , "Suthikulpanit, Suravee" Subject: [RFC PATCH 5/8] svm: Add support for APIC_ACCESS_PAGE_PRIVATE_MEMSLOT setup/destroy Thread-Topic: [RFC PATCH 5/8] svm: Add support for APIC_ACCESS_PAGE_PRIVATE_MEMSLOT setup/destroy Thread-Index: AQHUvJfTbslfMQjezUease4SwgfLDQ== Date: Mon, 4 Feb 2019 14:42:17 +0000 Message-ID: <20190204144128.9489-6-suravee.suthikulpanit@amd.com> References: <20190204144128.9489-1-suravee.suthikulpanit@amd.com> In-Reply-To: <20190204144128.9489-1-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [61.90.26.242] x-clientproxiedby: SG2PR04CA0190.apcprd04.prod.outlook.com (2603:1096:4:14::28) To DM6PR12MB2844.namprd12.prod.outlook.com (2603:10b6:5:45::32) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;DM6PR12MB3274;20:YOzzGf7seV8LYEqUr3NQ+3MGk670VV1cBs/tBhAzK1MW0r3EegGBYMhkEKL94PgwmROM4lpdr5i5hv1vBBXaGOnpIeW+CNRaDHZW75FG0fnlF7H6ZbWtKPCO7b/L+9jOIxaMkzxI1JZVpMspHHkU66krpB0Ui/pxvMcFwm64lQrKgmqSJ++hG/7XU2ImsFV6Dexl1CpCkx+lagJnux5xMFb69tEWSeNFVBw3NxhG4svTaptpb9JA9KnK92vt8TFy x-ms-office365-filtering-correlation-id: 3777f836-3b33-4280-d25e-08d68aaef611 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4618075)(2017052603328)(7153060)(7193020);SRVR:DM6PR12MB3274; x-ms-traffictypediagnostic: DM6PR12MB3274: x-microsoft-antispam-prvs: x-forefront-prvs: 0938781D02 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(346002)(376002)(366004)(39860400002)(396003)(136003)(189003)(199004)(6116002)(3846002)(105586002)(81166006)(81156014)(6436002)(52116002)(186003)(256004)(14444005)(217873002)(106356001)(2501003)(8936002)(8676002)(316002)(110136005)(4326008)(99286004)(2201001)(86362001)(72206003)(14454004)(386003)(25786009)(7736002)(305945005)(478600001)(6486002)(54906003)(53936002)(6512007)(50226002)(71190400001)(486006)(66574012)(1076003)(6506007)(97736004)(102836004)(476003)(68736007)(2616005)(11346002)(2906002)(446003)(7416002)(26005)(76176011)(71200400001)(66066001)(36756003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3274;H:DM6PR12MB2844.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: VDhNuyANdAMZdwEASnXswLuF8/u9DQ/sPhumsaK9dC7y0kCGPZYgGiuFdx9G12s9YUEHN+imcnznxb7wpdcvVpHnmffgkWQC9t2Vs2e/FLDVuxz2W7853Bfq4rvqIJKPWrdM+5DOtBwYdFGo7VigKUECQhXquxgAJGqiC/OkBIh6rOCmmWZQdmkLl3GyQudF2orssyXyrn4/jtLypsA5N0PX1E0J6Tt0P0m5ui2cVZyGa4EL6LTdME7v3H8Jib9iF579yEh3TdJALMShlg3qCYnAuquEjrxxi+4rPx+l7BJuoo0+k9Rp7v8OJFZ5l/bEGn4nIhu2I9/ckc+eHne1enh2fLAMFcAueGMyh8ShYamsYO2NPe6l4Qd3cf4znPZ05ptm/d2ozGgtEq556MIC5k43aCN8+3ag+TZMQH8kEtA= Content-ID: MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3777f836-3b33-4280-d25e-08d68aaef611 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Feb 2019 14:42:13.5690 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3274 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Activate/deactivate AVIC requires setting/unsetting the memory region used for APIC_ACCESS_PAGE_PRIVATE_MEMSLOT. So, re-factor avic_init_access_page() to avic_setup_access_page() and add srcu_read_lock/unlock, which are needed to allow this function to be called during run-time. Also, introduce avic_destroy_access_page() to unset the page when deactivate AVIC. Cc: Paolo Bonzini Cc: Radim Krčmář Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index c33f02b4a19e..a23b1e77acb6 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -1658,7 +1658,7 @@ static u64 *avic_get_physical_id_entry(struct kvm_vcpu *vcpu, * field of the VMCB. Therefore, we set up the * APIC_ACCESS_PAGE_PRIVATE_MEMSLOT (4KB) here. */ -static int avic_init_access_page(struct kvm_vcpu *vcpu) +static int avic_setup_access_page(struct kvm_vcpu *vcpu, bool init) { struct kvm *kvm = vcpu->kvm; int ret = 0; @@ -1667,10 +1667,14 @@ static int avic_init_access_page(struct kvm_vcpu *vcpu) if (kvm->arch.apic_access_page_done) goto out; + if (!init) + srcu_read_unlock(&kvm->srcu, vcpu->srcu_idx); ret = __x86_set_memory_region(kvm, APIC_ACCESS_PAGE_PRIVATE_MEMSLOT, APIC_DEFAULT_PHYS_BASE, PAGE_SIZE); + if (!init) + vcpu->srcu_idx = srcu_read_lock(&kvm->srcu); if (ret) goto out; @@ -1680,6 +1684,26 @@ static int avic_init_access_page(struct kvm_vcpu *vcpu) return ret; } +static void avic_destroy_access_page(struct kvm_vcpu *vcpu) +{ + struct kvm *kvm = vcpu->kvm; + + mutex_lock(&kvm->slots_lock); + + if (!kvm->arch.apic_access_page_done) + goto out; + + srcu_read_unlock(&kvm->srcu, vcpu->srcu_idx); + __x86_set_memory_region(kvm, + APIC_ACCESS_PAGE_PRIVATE_MEMSLOT, + APIC_DEFAULT_PHYS_BASE, + 0); + vcpu->srcu_idx = srcu_read_lock(&kvm->srcu); + kvm->arch.apic_access_page_done = false; +out: + mutex_unlock(&kvm->slots_lock); +} + static int avic_init_backing_page(struct kvm_vcpu *vcpu) { int ret; @@ -1687,7 +1711,7 @@ static int avic_init_backing_page(struct kvm_vcpu *vcpu) int id = vcpu->vcpu_id; struct vcpu_svm *svm = to_svm(vcpu); - ret = avic_init_access_page(vcpu); + ret = avic_setup_access_page(vcpu, true); if (ret) return ret; From patchwork Mon Feb 4 14:42:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 10795803 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9A13D17FB for ; Mon, 4 Feb 2019 14:42:55 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 86E6F2B880 for ; Mon, 4 Feb 2019 14:42:55 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 802262B907; Mon, 4 Feb 2019 14:42:55 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EC2D22B901 for ; Mon, 4 Feb 2019 14:42:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730616AbfBDOm1 (ORCPT ); Mon, 4 Feb 2019 09:42:27 -0500 Received: from mail-eopbgr730048.outbound.protection.outlook.com ([40.107.73.48]:14502 "EHLO NAM05-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730351AbfBDOm0 (ORCPT ); Mon, 4 Feb 2019 09:42:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lv2yytBdCDR1ZtRINL41cNiNPMgODA6tmig9ciJPIzs=; b=bmxDWrUsAeLDa0GhO+DWMwAXFhfsErE87mriUfmwOpH/uYnTTmcDP/YyVCCOr3Har9HE0rvmb88v/itBkF5pno30kMNv6N0yH0DG87LFYejHGiMAGhOeldsZVPzwM2JQeXJObr8r5lePlXWWqN0wGrZ5UCHPa8wCt14/k0+x+xg= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3274.namprd12.prod.outlook.com (20.179.106.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1580.16; Mon, 4 Feb 2019 14:42:23 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::c40:929a:abab:308d]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::c40:929a:abab:308d%3]) with mapi id 15.20.1558.026; Mon, 4 Feb 2019 14:42:22 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "x86@kernel.org" CC: "joro@8bytes.org" , "rkrcmar@redhat.com" , "pbonzini@redhat.com" , "tglx@linutronix.de" , "mingo@redhat.com" , "bp@alien8.de" , "hpa@zytor.com" , "jsteckli@amazon.de" , "sironi@amazon.de" , "wawei@amazon.de" , "Suthikulpanit, Suravee" Subject: [RFC PATCH 6/8] svm: Temporary deactivate AVIC during ExtINT handling Thread-Topic: [RFC PATCH 6/8] svm: Temporary deactivate AVIC during ExtINT handling Thread-Index: AQHUvJfWnMOuJrywUk2hpLtg20EkxQ== Date: Mon, 4 Feb 2019 14:42:22 +0000 Message-ID: <20190204144128.9489-7-suravee.suthikulpanit@amd.com> References: <20190204144128.9489-1-suravee.suthikulpanit@amd.com> In-Reply-To: <20190204144128.9489-1-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [61.90.26.242] x-clientproxiedby: SG2PR04CA0190.apcprd04.prod.outlook.com (2603:1096:4:14::28) To DM6PR12MB2844.namprd12.prod.outlook.com (2603:10b6:5:45::32) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;DM6PR12MB3274;20:we22niNVflpRbOcVf5/C1fJLE5FCv10hapZ49oKcYBw3RM7jOqW1d61mam2PqhLhgmEaYLVmoPfOVXv/ihTJZu4j78v8Rs8hj/9MaGr1mnjW3RAuud20DrUnpGr7WFvTwB85BLddWqH6/if1G5aMUYFiBPkp4Ab2RGMUjnvwasF6Yk8uSRlWmdZbLbc2CvXPO6MHkFCYy4/fIfuUObrIaPRKKaifPmG0JP0FRLqv/aFJWbPVbgrb4NA4WuINs6JA x-ms-office365-filtering-correlation-id: e5853ef5-1543-40fe-da45-08d68aaef8ed x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4618075)(2017052603328)(7153060)(7193020);SRVR:DM6PR12MB3274; x-ms-traffictypediagnostic: DM6PR12MB3274: x-microsoft-antispam-prvs: x-forefront-prvs: 0938781D02 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(346002)(376002)(366004)(39860400002)(396003)(136003)(189003)(199004)(6116002)(3846002)(105586002)(81166006)(81156014)(6436002)(52116002)(186003)(256004)(14444005)(217873002)(106356001)(2501003)(8936002)(8676002)(316002)(110136005)(4326008)(99286004)(2201001)(86362001)(72206003)(14454004)(386003)(25786009)(7736002)(305945005)(478600001)(6486002)(54906003)(53936002)(6512007)(50226002)(71190400001)(486006)(1076003)(6506007)(97736004)(102836004)(476003)(68736007)(2616005)(11346002)(2906002)(446003)(7416002)(26005)(76176011)(71200400001)(66066001)(36756003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3274;H:DM6PR12MB2844.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: NiqZHkatq8vb3Tn6RGyzLMwjX1D9e2SglfoEtdaoxJfQVW9HeVtmT1Gu1OVtmqOnbe9ihQ7zbGxTmJsgP91WODVVGQ+/PMhaPa5Ng12BDe4+X8wflpo9+Cwcpml4peaaQkjg0Eo/ZhSZsPAM2oU6MZiTNIcpoY8MnyjrtV2qSfXjk22q1dGtQ3LCOh47/iWadX2tnkpxMqCHmL5wLZakqnipC6Xm0uLeVTz59Q0Rn+15DNnJJamiAbp4XIpiKwAc3JKkH+RNjSh1UYlJkuR8GOsndhMgbSV+1fhMF0NuueLZtmdaQAwygASQHoySfd0YlC0OsTSJL29v8I2I5hsqm/HWD76gQKIsO9ItKmZTMRuzo8WHCQlo8b1bpOxeIez2TvG6JdiDNfkNI2Dpm4J8KFIMOiDEZlZriLyEy4HayE8= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: e5853ef5-1543-40fe-da45-08d68aaef8ed X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Feb 2019 14:42:18.3624 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3274 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP AMD AVIC does not support ExtINT. Therefore, AVIC must be temporary deactivated and fall back to using legacy interrupt injection via vINTR and interrupt window. Introduce svm_request_activate/deactivate_avic() helper functions, which handle steps required to activate/deactivate AVIC. Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm.c | 57 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index a23b1e77acb6..580ab40ba207 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -383,6 +383,8 @@ static u8 rsm_ins_bytes[] = "\x0f\xaa"; static void svm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0); static void svm_flush_tlb(struct kvm_vcpu *vcpu, bool invalidate_gpa); static void svm_complete_interrupts(struct vcpu_svm *svm); +static void svm_request_activate_avic(struct kvm_vcpu *vcpu); +static bool svm_get_enable_apicv(struct kvm_vcpu *vcpu); static int nested_svm_exit_handled(struct vcpu_svm *svm); static int nested_svm_intercept(struct vcpu_svm *svm); @@ -2085,6 +2087,9 @@ static void avic_set_running(struct kvm_vcpu *vcpu, bool is_run) { struct vcpu_svm *svm = to_svm(vcpu); + if (!kvm_vcpu_apicv_active(vcpu)) + return; + svm->avic_is_running = is_run; if (is_run) avic_vcpu_load(vcpu, vcpu->cpu); @@ -2319,6 +2324,10 @@ static void svm_vcpu_blocking(struct kvm_vcpu *vcpu) static void svm_vcpu_unblocking(struct kvm_vcpu *vcpu) { + if (kvm_check_request(KVM_REQ_APICV_ACTIVATE, vcpu)) + kvm_vcpu_activate_apicv(vcpu); + if (kvm_check_request(KVM_REQ_APICV_DEACTIVATE, vcpu)) + kvm_vcpu_deactivate_apicv(vcpu); avic_set_running(vcpu, true); } @@ -4460,6 +4469,15 @@ static int interrupt_window_interception(struct vcpu_svm *svm) { kvm_make_request(KVM_REQ_EVENT, &svm->vcpu); svm_clear_vintr(svm); + + /* + * For AVIC, the only reason to end up here is ExtINTs. + * In this case AVIC was temporarily disabled for + * requesting the IRQ window and we have to re-enable it. + */ + if (svm_get_enable_apicv(&svm->vcpu)) + svm_request_activate_avic(&svm->vcpu); + svm->vmcb->control.int_ctl &= ~V_IRQ_MASK; mark_dirty(svm->vmcb, VMCB_INTR); ++svm->vcpu.stat.irq_window_exits; @@ -5150,6 +5168,34 @@ static void svm_hwapic_isr_update(struct kvm_vcpu *vcpu, int max_isr) { } +static bool is_avic_active(struct vcpu_svm *svm) +{ + return (svm_get_enable_apicv(&svm->vcpu) && + svm->vmcb->control.int_ctl & AVIC_ENABLE_MASK); +} + +static void svm_request_activate_avic(struct kvm_vcpu *vcpu) +{ + struct vcpu_svm *svm = to_svm(vcpu); + + if (!lapic_in_kernel(vcpu) || is_avic_active(svm)) + return; + + avic_setup_access_page(vcpu, false); + kvm_make_apicv_activate_request(vcpu->kvm); +} + +static void svm_request_deactivate_avic(struct kvm_vcpu *vcpu) +{ + struct vcpu_svm *svm = to_svm(vcpu); + + if (!lapic_in_kernel(vcpu) || !is_avic_active(svm)) + return; + + avic_destroy_access_page(vcpu); + kvm_make_apicv_deactivate_request(vcpu->kvm); +} + /* Note: Currently only used by Hyper-V. */ static void svm_refresh_apicv_exec_ctrl(struct kvm_vcpu *vcpu) { @@ -5437,9 +5483,6 @@ static void enable_irq_window(struct kvm_vcpu *vcpu) { struct vcpu_svm *svm = to_svm(vcpu); - if (kvm_vcpu_apicv_active(vcpu)) - return; - /* * In case GIF=0 we can't rely on the CPU to tell us when GIF becomes * 1, because that's a separate STGI/VMRUN intercept. The next time we @@ -5449,6 +5492,14 @@ static void enable_irq_window(struct kvm_vcpu *vcpu) * window under the assumption that the hardware will set the GIF. */ if ((vgif_enabled(svm) || gif_set(svm)) && nested_svm_intr(svm)) { + /* + * IRQ window is not needed when AVIC is enabled, + * unless we have pending ExtINT since it cannot be injected + * via AVIC. In such case, we need to temporarily disable AVIC, + * and fallback to injecting IRQ via V_IRQ. + */ + if (kvm_vcpu_apicv_active(vcpu)) + svm_request_deactivate_avic(&svm->vcpu); svm_set_vintr(svm); svm_inject_irq(svm, 0x0); } From patchwork Mon Feb 4 14:42:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 10795797 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 71B9C17FB for ; Mon, 4 Feb 2019 14:42:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 60BB32B8E6 for ; Mon, 4 Feb 2019 14:42:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 546A82B8C4; Mon, 4 Feb 2019 14:42:39 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8E9B52B86C for ; Mon, 4 Feb 2019 14:42:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730689AbfBDOmb (ORCPT ); Mon, 4 Feb 2019 09:42:31 -0500 Received: from mail-eopbgr770087.outbound.protection.outlook.com ([40.107.77.87]:26208 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730510AbfBDOm3 (ORCPT ); Mon, 4 Feb 2019 09:42:29 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wMrI5bFIy2lgNLrxKbEOg1im2PlRNpcBdbXyhi/a520=; b=PI6oLodKss01lVRkFG4bsyTTiOsrrrOUjyuaffvf2FtQ+YEw/ZMhwDvTxNE28mNejEepmWgq/V/F4X1yQFY3kc5yKiH3l4Ng9Q0FO7AsMfpCY+eOUbQaGO8mV6G5g0KS94YsCsI4gp3igiWR/WU0DDicnJDEe880hvMMhxzQIQk= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3274.namprd12.prod.outlook.com (20.179.106.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1580.16; Mon, 4 Feb 2019 14:42:27 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::c40:929a:abab:308d]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::c40:929a:abab:308d%3]) with mapi id 15.20.1558.026; Mon, 4 Feb 2019 14:42:27 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "x86@kernel.org" CC: "joro@8bytes.org" , "rkrcmar@redhat.com" , "pbonzini@redhat.com" , "tglx@linutronix.de" , "mingo@redhat.com" , "bp@alien8.de" , "hpa@zytor.com" , "jsteckli@amazon.de" , "sironi@amazon.de" , "wawei@amazon.de" , "Suthikulpanit, Suravee" Subject: [RFC PATCH 7/8] KVM: i8254: Remove need for irq ack notifier Thread-Topic: [RFC PATCH 7/8] KVM: i8254: Remove need for irq ack notifier Thread-Index: AQHUvJfZKTHK5rEqvE2EoQvolN4BQA== Date: Mon, 4 Feb 2019 14:42:27 +0000 Message-ID: <20190204144128.9489-8-suravee.suthikulpanit@amd.com> References: <20190204144128.9489-1-suravee.suthikulpanit@amd.com> In-Reply-To: <20190204144128.9489-1-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [61.90.26.242] x-clientproxiedby: SG2PR04CA0190.apcprd04.prod.outlook.com (2603:1096:4:14::28) To DM6PR12MB2844.namprd12.prod.outlook.com (2603:10b6:5:45::32) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;DM6PR12MB3274;20:HyfQzbTh3+bRyKH7l/FQfM+3liK7MmtnGpCCCYGcu+nvqzJTMGpwDKEzDssg8R+dskHF2y9A8WNWSdcsFi2BBWm7b6y693JZKk0tSUHpUWo5+EV1OZNc273isdS63J69ZgaciVtxfrsk2vP5O4sljF24eRsQvrN0/hxuVLS6OY8scTozbi9T2PZL0mIS3VT63WiRc7bNf4WrSGuS7rGVsGRJfxrJ3UqDraGyEWEuVyrJyzJssyMqJekA/hbJL0xh x-ms-office365-filtering-correlation-id: 9d2d8274-1e42-4342-f9bb-08d68aaefbd1 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4618075)(2017052603328)(7153060)(7193020);SRVR:DM6PR12MB3274; x-ms-traffictypediagnostic: DM6PR12MB3274: x-microsoft-antispam-prvs: x-forefront-prvs: 0938781D02 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(346002)(376002)(366004)(39860400002)(396003)(136003)(189003)(199004)(6116002)(3846002)(105586002)(81166006)(81156014)(6436002)(52116002)(186003)(256004)(14444005)(217873002)(106356001)(2501003)(8936002)(8676002)(316002)(110136005)(4326008)(99286004)(2201001)(86362001)(72206003)(14454004)(386003)(25786009)(7736002)(305945005)(478600001)(6486002)(54906003)(53936002)(6512007)(50226002)(71190400001)(486006)(1076003)(6506007)(97736004)(102836004)(476003)(68736007)(2616005)(11346002)(2906002)(446003)(7416002)(26005)(76176011)(71200400001)(66066001)(36756003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3274;H:DM6PR12MB2844.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: bT/qHhmnSJYIs82UpvPOOFbWWRcXE4DaSxQPVbkJPJanJhR8p9rIqJZaqCOLzIyMRe7jHESCOpPH7/uKso09ep/2iwEWyHnRC37CBlhn2qBMnIftS+OCxnE5f+KCymWTREKLUkxfpy7Xv92swxsEWa0+H8CuxNXDE6rlqqsMT1CpHtV0+LtAu/o7jsbApb0emRu7iF140IfT8WWtNhKlUpSkZhFAS2xjkiojBhT1YQ/dSWMXwcfZPjG1kT2EKg4ttoBTFOofauXYePcBfW8NhaU1MXNRQNfVssXOPY10aOmm0NSqom2eOfkZPLy5fu0vqErJwUEgVMKetoNB3hPbwjNaIOdW/+6b+5oS4Ztzh3OFKR/bUBWRy1jZGfv4Xj8Bq6MVVu8VKJ2oNV1fFmjt2Stj6Y59NdFqSHADcVnDz6s= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9d2d8274-1e42-4342-f9bb-08d68aaefbd1 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Feb 2019 14:42:23.2049 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3274 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Julian Stecklina ACK notifiers don't work with AMD AVIC when the PIT interrupt is delivered as edge-triggered fixed interrupt via the IOAPIC. AMD processors cannot exit on EOI for these interrupts. The ACK notifiers do work when the interrupt is delivered via PIC as ExtINT, because the ACK comes as PIO write that KVM sees. Change the PIT code to not rely on the ACK notifiers. The IRQ ACK notifier in the PIT emulation re-schedules pit->expired to reinject any pending PIT interrupt. This seems useless, because we can pulse the PIT interrupt even when the interrupt is not ACKed yet. This means any timer expiry when the interrupt was being handled by the guest, will cause an interrupt to be injected automatically when the interrupt is ACKed. Reviewed-by: Filippo Sironi Signed-off-by: Julian Stecklina Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/i8254.c | 22 +--------------------- arch/x86/kvm/i8254.h | 2 -- 2 files changed, 1 insertion(+), 23 deletions(-) diff --git a/arch/x86/kvm/i8254.c b/arch/x86/kvm/i8254.c index af192895b1fc..a8f6eb0ac1a0 100644 --- a/arch/x86/kvm/i8254.c +++ b/arch/x86/kvm/i8254.c @@ -200,21 +200,6 @@ static inline struct kvm_pit *pit_state_to_pit(struct kvm_kpit_state *ps) return container_of(ps, struct kvm_pit, pit_state); } -static void kvm_pit_ack_irq(struct kvm_irq_ack_notifier *kian) -{ - struct kvm_kpit_state *ps = container_of(kian, struct kvm_kpit_state, - irq_ack_notifier); - struct kvm_pit *pit = pit_state_to_pit(ps); - - atomic_set(&ps->irq_ack, 1); - /* irq_ack should be set before pending is read. Order accesses with - * inc(pending) in pit_timer_fn and xchg(irq_ack, 0) in pit_do_work. - */ - smp_mb(); - if (atomic_dec_if_positive(&ps->pending) > 0) - kthread_queue_work(pit->worker, &pit->expired); -} - void __kvm_migrate_pit_timer(struct kvm_vcpu *vcpu) { struct kvm_pit *pit = vcpu->kvm->arch.vpit; @@ -244,7 +229,7 @@ static void pit_do_work(struct kthread_work *work) int i; struct kvm_kpit_state *ps = &pit->pit_state; - if (atomic_read(&ps->reinject) && !atomic_xchg(&ps->irq_ack, 0)) + if (atomic_read(&ps->reinject) && !atomic_xchg(&ps->pending, 0)) return; kvm_set_irq(kvm, pit->irq_source_id, 0, 1, false); @@ -284,7 +269,6 @@ static enum hrtimer_restart pit_timer_fn(struct hrtimer *data) static inline void kvm_pit_reset_reinject(struct kvm_pit *pit) { atomic_set(&pit->pit_state.pending, 0); - atomic_set(&pit->pit_state.irq_ack, 1); } void kvm_pit_set_reinject(struct kvm_pit *pit, bool reinject) @@ -298,10 +282,8 @@ void kvm_pit_set_reinject(struct kvm_pit *pit, bool reinject) if (reinject) { /* The initial state is preserved while ps->reinject == 0. */ kvm_pit_reset_reinject(pit); - kvm_register_irq_ack_notifier(kvm, &ps->irq_ack_notifier); kvm_register_irq_mask_notifier(kvm, 0, &pit->mask_notifier); } else { - kvm_unregister_irq_ack_notifier(kvm, &ps->irq_ack_notifier); kvm_unregister_irq_mask_notifier(kvm, 0, &pit->mask_notifier); } @@ -679,8 +661,6 @@ struct kvm_pit *kvm_create_pit(struct kvm *kvm, u32 flags) hrtimer_init(&pit_state->timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS); pit_state->timer.function = pit_timer_fn; - pit_state->irq_ack_notifier.gsi = 0; - pit_state->irq_ack_notifier.irq_acked = kvm_pit_ack_irq; pit->mask_notifier.func = pit_mask_notifer; kvm_pit_reset(pit); diff --git a/arch/x86/kvm/i8254.h b/arch/x86/kvm/i8254.h index 394d9527da7e..4a9cfe00306f 100644 --- a/arch/x86/kvm/i8254.h +++ b/arch/x86/kvm/i8254.h @@ -34,8 +34,6 @@ struct kvm_kpit_state { struct mutex lock; atomic_t reinject; atomic_t pending; /* accumulated triggered timers */ - atomic_t irq_ack; - struct kvm_irq_ack_notifier irq_ack_notifier; }; struct kvm_pit { From patchwork Mon Feb 4 14:42:32 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 10795799 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2CD91922 for ; Mon, 4 Feb 2019 14:42:44 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1BB3B2B900 for ; Mon, 4 Feb 2019 14:42:44 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 197B92B8FD; Mon, 4 Feb 2019 14:42:44 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9317F2B900 for ; Mon, 4 Feb 2019 14:42:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730752AbfBDOmi (ORCPT ); Mon, 4 Feb 2019 09:42:38 -0500 Received: from mail-eopbgr740087.outbound.protection.outlook.com ([40.107.74.87]:7040 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730510AbfBDOmg (ORCPT ); Mon, 4 Feb 2019 09:42:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AwoRiThCF2Hw1jsq9VZe258OpqUDOkWr2WKJoKILsRs=; b=xr5GgK1cVdkr2VeRszz3RH40kbkBwiRDj71LquguUud1x37yuayAOVIGR/WP/WU3B3Y9HZA/ONgnLPZvMiZt1bPR1wuNC6kbWh4/LS4SEBtLlsNCOSi09gMkCswRik4l92cd4XIBR0imzGW3pbFGhi2lbRtfSjgOXqw3wD+fg48= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3082.namprd12.prod.outlook.com (20.178.30.204) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1580.17; Mon, 4 Feb 2019 14:42:32 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::c40:929a:abab:308d]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::c40:929a:abab:308d%3]) with mapi id 15.20.1558.026; Mon, 4 Feb 2019 14:42:32 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "x86@kernel.org" CC: "joro@8bytes.org" , "rkrcmar@redhat.com" , "pbonzini@redhat.com" , "tglx@linutronix.de" , "mingo@redhat.com" , "bp@alien8.de" , "hpa@zytor.com" , "jsteckli@amazon.de" , "sironi@amazon.de" , "wawei@amazon.de" , "Suthikulpanit, Suravee" Subject: [RFC PATCH 8/8] svm: Allow AVIC with in-kernel irqchip mode Thread-Topic: [RFC PATCH 8/8] svm: Allow AVIC with in-kernel irqchip mode Thread-Index: AQHUvJfczoXgq9UCxES9CxFgBN3rJw== Date: Mon, 4 Feb 2019 14:42:32 +0000 Message-ID: <20190204144128.9489-9-suravee.suthikulpanit@amd.com> References: <20190204144128.9489-1-suravee.suthikulpanit@amd.com> In-Reply-To: <20190204144128.9489-1-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [61.90.26.242] x-clientproxiedby: SG2PR04CA0190.apcprd04.prod.outlook.com (2603:1096:4:14::28) To DM6PR12MB2844.namprd12.prod.outlook.com (2603:10b6:5:45::32) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;DM6PR12MB3082;20:qS47NHx6dGqMeCi1xEVzjXQIE8J9+pVKB0+IP708uknFigMm8Gdt4QFOMEGnGABkFZIQy8UrWHBwsQUPFhsyU1WpoFCuI9n5XNsXH1KO3ZN3xbnkI+oBWSXbDQKGaEb0lsyYMkDOWzcBMZGSP7MFxQD/ZDybiuGfMP5Ia9NrQyMrFN2kNyoKNt2/OeaKe17vNuA42By9LOfG0r/HOs7417dyz2Xc5kw8R68VP500MSnEUzz5jrVP9IxKCBmcIxtY x-ms-office365-filtering-correlation-id: 0a26d67e-f0e4-4339-c104-08d68aaefeb0 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4618075)(2017052603328)(7153060)(7193020);SRVR:DM6PR12MB3082; x-ms-traffictypediagnostic: DM6PR12MB3082: x-microsoft-antispam-prvs: x-forefront-prvs: 0938781D02 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39860400002)(366004)(396003)(136003)(346002)(376002)(189003)(199004)(105586002)(186003)(6486002)(6512007)(110136005)(97736004)(54906003)(26005)(446003)(52116002)(11346002)(2906002)(4744005)(305945005)(76176011)(106356001)(316002)(36756003)(478600001)(72206003)(8936002)(25786009)(217873002)(66066001)(7416002)(99286004)(4326008)(8676002)(81166006)(3846002)(86362001)(386003)(14454004)(102836004)(6506007)(81156014)(6116002)(14444005)(2501003)(256004)(53936002)(1076003)(68736007)(7736002)(6436002)(2201001)(71190400001)(71200400001)(476003)(486006)(50226002)(66574012)(2616005);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3082;H:DM6PR12MB2844.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: IVE4Gj8d6tXWvg4QKoDyV+qye5wZh/lkVNmERRK6GqGKKxEyiSvik5obmO55j1pjuq2w3Ya4EtU+aC1SPeIRu3ek3vUmyrHIYmBJe+MVXjo2zURFXTHEPPrwC8VzVKVcs3fTDXBbv7iCP9FCOvoroyLtfCwy3TLe4bt95v2fRFP3wXpkkxgVwBqJ9qUGj7w3jSbmSJcYat8JjIzCa5UfYwtoZEXg3bf9z9duxGUu4qSFugndPUH5Jp2NSzCYhgl+Hlsai3CGpFSc6w44oVxElKL3H7BETxnrIlb+bjPQu5fiY+QaeHElW/F5PGdLKTX7PRo3vOofow5mCsiu00qB0G1rJXeCp9aqY8LptJ11vj//3Cyxs6n9SM0oqgrzf7EcDYnXbG3nF+Q8sWV2Vb7W88k1QcEvK4I5jtG3jnRLoIg= Content-ID: <5D5095B0C6F03142B6D5F12E22A36795@namprd12.prod.outlook.com> MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0a26d67e-f0e4-4339-c104-08d68aaefeb0 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Feb 2019 14:42:28.0313 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3082 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Once the IRQ ack notifier for in-kernel PIT is no longer required and run-time AVIC activate/deactivate is supported, we can remove the kernel irqchip split mode requirement for AVIC. Hence, remove the check for irqchip split mode when enabling AVIC. Cc: Radim Krčmář Cc: Paolo Bonzini Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 580ab40ba207..24dfa6a93711 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -5157,7 +5157,7 @@ static void svm_set_virtual_apic_mode(struct kvm_vcpu *vcpu) static bool svm_get_enable_apicv(struct kvm_vcpu *vcpu) { - return avic && irqchip_split(vcpu->kvm); + return avic; } static void svm_hwapic_irr_update(struct kvm_vcpu *vcpu, int max_irr)