From patchwork Fri Sep 13 19:00:49 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11145141 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C308017E6 for ; Fri, 13 Sep 2019 19:01:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 9752E214AF for ; Fri, 13 Sep 2019 19:01:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="qI2CN9TN" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730176AbfIMTAy (ORCPT ); Fri, 13 Sep 2019 15:00:54 -0400 Received: from mail-eopbgr820057.outbound.protection.outlook.com ([40.107.82.57]:58712 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726822AbfIMTAx (ORCPT ); Fri, 13 Sep 2019 15:00:53 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FRgf+FwqXJutSahBmus5EB5PCZK/cJa0kevWUSliT9oPu1uguaLvV5FoBlW+iEN//ubescb/BDqGsRsY9tFQ1eeQ/OvgacJWmbDpVUnTom+WD8DC46gnQu5iodtHlF3V7xfqjRHB14wOpiR/HyRo8iedIDMoeiYJyfeeB36U90sghAX5G2Bb1WjCf+iNYssZw0/cuMhRA/GYWzZn0xSR1eVCC+dXOgmsPChVLrq6dXRD/jSKqKtV4uSs8qe6VJFM+gfbmp6hYuqkNqCCGjlpwYngcxb9gQUVS8KZVMGVyOwQZ/cpM6Ww6ylXLrc+RX/kxCJd5nNuU9wnwndrsf9vUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uBKR6fjUDwmwqUmuqzblcx4wmgdgaNGRnVZE7ekQnMw=; b=gSWQRon9cIj6i0dX9JcCDp5UEWy2ONZ6ccTZVsEMDvsOfujLDcY0vsSj/fdwAGiB/egcxCUNr4q6UQQ84ZCn0xDI7cAxnlMlGh6XzZW/2qEU9CBUHaJAm2CRVSbTnReD6rpcfRfFLhZvXvJIFnnEJQWEHUiwb5JOxlLqBdyIhu/X/XpEgsywFT9joM7tQf5sMrLndcv3l5B0FD0ywF5XrRZbfgMAsXuDZTt+Pi8t8F791UTPkU3dvtf9v5mLkR/+Eov0Ghe4Gl2+u+1RWuuStD1mqmuUL7z+eGPULutKYqPWaNgRbNjEQ+dVgbbQiZUIf6Ei3RiyfZdnzV5LKFuypw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uBKR6fjUDwmwqUmuqzblcx4wmgdgaNGRnVZE7ekQnMw=; b=qI2CN9TN8n87u1BWzt9LeXbscosKQyU5rkPucFpsyjKs8EXOH3F4kDc/gS5DhapuuO3uNJhtVkxfK4RVZXDcu3n7bazERN5M/OQDnZu9N0YtZAu+0XRIfwyWK1gByroUeeaovopZWT4+n2sJDEXHQzb8LwNse8oB3N1YmrHj28U= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3804.namprd12.prod.outlook.com (10.255.173.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.20; Fri, 13 Sep 2019 19:00:50 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997%3]) with mapi id 15.20.2241.022; Fri, 13 Sep 2019 19:00:49 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" CC: "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "joro@8bytes.org" , "vkuznets@redhat.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v3 01/16] kvm: x86: Modify kvm_x86_ops.get_enable_apicv() to use struct kvm parameter Thread-Topic: [PATCH v3 01/16] kvm: x86: Modify kvm_x86_ops.get_enable_apicv() to use struct kvm parameter Thread-Index: AQHVamWOE6Ykw4M51kipY51rilxC+w== Date: Fri, 13 Sep 2019 19:00:49 +0000 Message-ID: <1568401242-260374-2-git-send-email-suravee.suthikulpanit@amd.com> References: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [165.204.78.1] x-clientproxiedby: SN6PR08CA0021.namprd08.prod.outlook.com (2603:10b6:805:66::34) 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 1.8.3.1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2e470d3f-3a5a-4311-84b4-08d7387cb117 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600166)(711020)(4605104)(1401327)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:DM6PR12MB3804; x-ms-traffictypediagnostic: DM6PR12MB3804: x-ld-processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2582; x-forefront-prvs: 0159AC2B97 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(376002)(346002)(136003)(396003)(39860400002)(366004)(189003)(199004)(6436002)(6512007)(478600001)(6486002)(7416002)(53936002)(2906002)(4326008)(6116002)(3846002)(25786009)(86362001)(99286004)(66946007)(446003)(64756008)(66446008)(36756003)(486006)(71190400001)(71200400001)(52116002)(66556008)(256004)(4720700003)(2616005)(476003)(11346002)(14444005)(102836004)(305945005)(14454004)(7736002)(316002)(50226002)(386003)(6506007)(26005)(2501003)(8936002)(66066001)(8676002)(186003)(81156014)(81166006)(110136005)(5660300002)(76176011)(54906003)(66476007);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3804;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: yjdseO/Eh4VW/ZtXjgP2U5/islmU8T7BMac77Bi2rybaUNE251SSgS012JOwYWckVlx6GTEYZq+l2I7/cznIRpsXaRm2Lx/GTCbqTu+ZFgMdjU3nErnLV4K2t5BNc0nqFQU2ptLbGYzlAAgbQXw9z99Qb5DYKh3RJw2x72CMnTaRDwolTt1f6LQGuUX09QZdZ3tWw5hCzuoiltf3XS/2H54ArrQ0i4UCM1ALrygnvxERswYktPTOIlexezLJenvgDVwC0XijfYfUMAH3jeiTqRjoTZO7qojblAz8ffiTWgyd/YfsGncD1M1j1uWpzTpFgeceRFMOUijG3LKyMHXB92O9DMk16+SN/Ea41ot8hjQju7jc6DPS4PvpO4PR78xq3ag0aFgWXCVQeBmuiSrTOHDIS5wvPZlUVZADA3hlk64= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2e470d3f-3a5a-4311-84b4-08d7387cb117 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Sep 2019 19:00:49.7091 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: FX6o7f4Aw4jilNaUYL3XUNqL7gIuVobNfkSWSuuT8d8pXbFuIvM4kY0aDG5A6IJ9xar5OvDGpiv+8h6PKqJfcg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3804 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Generally, APICv for all vcpus in the VM are enable/disable in the same manner. So, get_enable_apicv() should represent APICv status of the VM instead of each VCPU. Modify kvm_x86_ops.get_enable_apicv() to take struct kvm as parameter instead of struct kvm_vcpu. Reviewed-by: Vitaly Kuznetsov Signed-off-by: Suravee Suthikulpanit --- arch/x86/include/asm/kvm_host.h | 2 +- arch/x86/kvm/svm.c | 4 ++-- arch/x86/kvm/vmx/vmx.c | 2 +- arch/x86/kvm/x86.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 74e88e5..277f06f 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -1086,7 +1086,7 @@ struct kvm_x86_ops { void (*enable_nmi_window)(struct kvm_vcpu *vcpu); void (*enable_irq_window)(struct kvm_vcpu *vcpu); void (*update_cr8_intercept)(struct kvm_vcpu *vcpu, int tpr, int irr); - bool (*get_enable_apicv)(struct kvm_vcpu *vcpu); + bool (*get_enable_apicv)(struct kvm *kvm); 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); diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index d685491..245bde0 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -5144,9 +5144,9 @@ static void svm_set_virtual_apic_mode(struct kvm_vcpu *vcpu) return; } -static bool svm_get_enable_apicv(struct kvm_vcpu *vcpu) +static bool svm_get_enable_apicv(struct kvm *kvm) { - return avic && irqchip_split(vcpu->kvm); + return avic && irqchip_split(kvm); } static void svm_hwapic_irr_update(struct kvm_vcpu *vcpu, int max_irr) diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index 42ed3fa..a0702d2 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -3644,7 +3644,7 @@ void pt_update_intercept_for_msr(struct vcpu_vmx *vmx) } } -static bool vmx_get_enable_apicv(struct kvm_vcpu *vcpu) +static bool vmx_get_enable_apicv(struct kvm *kvm) { return enable_apicv; } diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 93b0bd4..01f5a56 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -9209,7 +9209,7 @@ int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) goto fail_free_pio_data; if (irqchip_in_kernel(vcpu->kvm)) { - vcpu->arch.apicv_active = kvm_x86_ops->get_enable_apicv(vcpu); + vcpu->arch.apicv_active = kvm_x86_ops->get_enable_apicv(vcpu->kvm); r = kvm_create_lapic(vcpu, lapic_timer_advance_ns); if (r < 0) goto fail_mmu_destroy; From patchwork Fri Sep 13 19:00:50 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11145111 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 22CCE17E6 for ; Fri, 13 Sep 2019 19:01:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id EB0D8208C2 for ; Fri, 13 Sep 2019 19:00:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="vRKELnnR" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388418AbfIMTA5 (ORCPT ); Fri, 13 Sep 2019 15:00:57 -0400 Received: from mail-eopbgr820057.outbound.protection.outlook.com ([40.107.82.57]:58712 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388289AbfIMTA4 (ORCPT ); Fri, 13 Sep 2019 15:00:56 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gPUVcIwstpeV71MaCWwFW3D01xly5RGERB0uZvCULirIaU7awc2/Sgp3eIGo72tEWZmkwoOVmuup7i9EHmd50O8FM4PVNkmUt9OdCmdP8Jid4yZPOTR+/tJyaOc18zEafJ54o4Wan6v/5b5DO02OQ44Oo1i4Zh1GdxPTMDSsrwBV+lIVb+HKhWa0barncyTKSt2WELuDtQgqOOihyBq0FN/eUeQIFn4JSatnDEyZtpX1WETi0lYEmOACiws9/8bz59CwgIl+/kgrY6vcgBZbWJPfrD08QaXWm75PYSqGHlo9Kp/fzIHz1qmOYmdwXTFl4wB30YmZP1HFKsoW+X5ilQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=z4HI10uYli0ODSEV19j94XZ3zMM9EbiWkUm/W6xjNSU=; b=dn4EKDZPiI2TCaz2fs/3Wy+Qk89LFnmCqbcMZ58OZZRyk7rbqf2lyqETB+cFMdaKmJEHR+NzylhWy5IHnCdjZXdu/ZR6eD17cf9t+smSMlgV0BXCHShU74AZi89S0/a/WBE6Bw5GMhw4Vv5pAs5ni1Z+ckDzR+hRp2h0glX97TlY6xswi6d8ghY9bbEgQLVE81mg7DRIwCMKVbg3wvmmH2uAAc7kFjFUnXRefXwT9BCow8VqfJmuNTuHA2KHkKgDbea9lHxmtZBPwMkvOdaCv22M2Emtv2vXKZanpMJExQTMEccR4rD7lbTzi8elQhxV/G096rSZIi0ci725a145Zg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=z4HI10uYli0ODSEV19j94XZ3zMM9EbiWkUm/W6xjNSU=; b=vRKELnnRkw1gnJKtFXMokyuuapbRtaDb6zawSDaqpCzXFEqEifGBdSSicLK5PKJU6pI2Tqrt5nbWbAioBtU/XK5I+5I6QCU9XRvqp/1nUpuBPgT1SSO8XthAH4E7FgQUyu+Bw9f2hoEEiDBDknrJAEyZAnuXGb1pv6KoXcIYMug= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3804.namprd12.prod.outlook.com (10.255.173.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.20; Fri, 13 Sep 2019 19:00:51 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997%3]) with mapi id 15.20.2241.022; Fri, 13 Sep 2019 19:00:51 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" CC: "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "joro@8bytes.org" , "vkuznets@redhat.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v3 02/16] kvm: x86: Introduce KVM APICv state Thread-Topic: [PATCH v3 02/16] kvm: x86: Introduce KVM APICv state Thread-Index: AQHVamWP0oJFhAvw6kCPb+ErEOc/Vg== Date: Fri, 13 Sep 2019 19:00:50 +0000 Message-ID: <1568401242-260374-3-git-send-email-suravee.suthikulpanit@amd.com> References: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [165.204.78.1] x-clientproxiedby: SN6PR08CA0021.namprd08.prod.outlook.com (2603:10b6:805:66::34) 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 1.8.3.1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ca35b002-667e-4f34-e7ab-08d7387cb1df x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600166)(711020)(4605104)(1401327)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:DM6PR12MB3804; x-ms-traffictypediagnostic: DM6PR12MB3804: x-ld-processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4941; x-forefront-prvs: 0159AC2B97 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(376002)(346002)(136003)(396003)(39860400002)(366004)(189003)(199004)(6436002)(6512007)(478600001)(6486002)(7416002)(53936002)(2906002)(4326008)(6116002)(3846002)(25786009)(86362001)(99286004)(66946007)(446003)(64756008)(66446008)(36756003)(486006)(71190400001)(71200400001)(52116002)(66556008)(256004)(4720700003)(2616005)(476003)(11346002)(14444005)(102836004)(305945005)(14454004)(7736002)(316002)(50226002)(386003)(6506007)(26005)(2501003)(8936002)(66066001)(8676002)(186003)(81156014)(81166006)(110136005)(5660300002)(76176011)(54906003)(66476007);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3804;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: qpdhMQNsPKEho/E6tA9PmWjCl0oj1ip/trGdNbXonvUjHQCbpxp6pEzc/h+nxGAz+z+G6N9Sld9x0lPKcJ6LCc2vgab3Hd44OUiVBv2XWPQBgt2eprEp2ORopFjyq6A0xin+lCs3dcsKSt2F7YSYdatYmCviLgVVcKTmsSa5zfwYX6Bul2TCvKbTkXOuQwQ8qy6KTRYczG7bKXFRND8VNOpk3iCvh8w+DRCrIAJc6ogkJgTx6HxcPjxsPI3ZDoWoo7RCHE/1JaaVGnxHGrvc/aWdkvTKbzxwqd6sX/UcCgRE6u3DVDK2oO5daQpW+Wb552vuu3j+lLTdkydCq7L4zEF0P3qCKnX4xUJmWNt5X/URVKGgnowGFMOq6wyVR97sfwc5juahvH9AQuat6PlSteWsqrB1BBUQEJ+Rv0P1ewE= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: ca35b002-667e-4f34-e7ab-08d7387cb1df X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Sep 2019 19:00:51.0194 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 92yOKw1U1bda4M2RNCfMcZrpIMUF1wSJ1k/XLxwjah0tU8nZIRDmXNGKh0/YLZTtMPu/27wk6nzXV4fW4vlE2A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3804 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Currently, after a VM boots with APICv enabled, it could go into the following states: * activated = VM is running w/ APICv * suspended = VM deactivate APICv temporarily * disabled = VM deactivate APICv permanently Introduce KVM APICv state enum to help keep track of the APICv states along with a new variable struct kvm_arch.apicv_state to store the current state of each VM, and kvm_arch.apicv_lock to synchronize access of apicv_state since it can be accessed by each vcpu. Signed-off-by: Suravee Suthikulpanit --- arch/x86/include/asm/kvm_host.h | 11 +++++++++++ arch/x86/kvm/x86.c | 14 +++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 277f06f..562bfbd 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -851,6 +851,15 @@ enum kvm_irqchip_mode { KVM_IRQCHIP_SPLIT, /* created with KVM_CAP_SPLIT_IRQCHIP */ }; +/* + * KVM assumes all vcpus in a VM operate in the same mode. + */ +enum kvm_apicv_state { + APICV_DISABLED, /* Disabled (such as for Hyper-V case) */ + APICV_SUSPENDED, /* Deactivated temporary */ + APICV_ACTIVATED, /* Default status when APICV is enabled */ +}; + struct kvm_arch { unsigned long n_used_mmu_pages; unsigned long n_requested_mmu_pages; @@ -879,6 +888,8 @@ struct kvm_arch { struct kvm_apic_map *apic_map; bool apic_access_page_done; + struct mutex apicv_lock; + enum kvm_apicv_state apicv_state; gpa_t wall_clock; diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 01f5a56..64d275e 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -4630,6 +4630,8 @@ int kvm_vm_ioctl_enable_cap(struct kvm *kvm, kvm->arch.irqchip_mode = KVM_IRQCHIP_SPLIT; kvm->arch.nr_reserved_ioapic_pins = cap->args[0]; r = 0; + if (kvm_x86_ops->get_enable_apicv(kvm)) + kvm->arch.apicv_state = APICV_ACTIVATED; split_irqchip_unlock: mutex_unlock(&kvm->lock); break; @@ -4749,6 +4751,8 @@ long kvm_arch_vm_ioctl(struct file *filp, /* Write kvm->irq_routing before enabling irqchip_in_kernel. */ smp_wmb(); kvm->arch.irqchip_mode = KVM_IRQCHIP_KERNEL; + if (kvm_x86_ops->get_enable_apicv(kvm)) + kvm->arch.apicv_state = APICV_ACTIVATED; create_irqchip_unlock: mutex_unlock(&kvm->lock); break; @@ -9209,13 +9213,18 @@ int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) goto fail_free_pio_data; if (irqchip_in_kernel(vcpu->kvm)) { - vcpu->arch.apicv_active = kvm_x86_ops->get_enable_apicv(vcpu->kvm); r = kvm_create_lapic(vcpu, lapic_timer_advance_ns); if (r < 0) goto fail_mmu_destroy; } else static_key_slow_inc(&kvm_no_apic_vcpu); + mutex_lock(&vcpu->kvm->arch.apicv_lock); + if (irqchip_in_kernel(vcpu->kvm) && + vcpu->kvm->arch.apicv_state == APICV_ACTIVATED) + vcpu->arch.apicv_active = kvm_x86_ops->get_enable_apicv(vcpu->kvm); + mutex_unlock(&vcpu->kvm->arch.apicv_lock); + vcpu->arch.mce_banks = kzalloc(KVM_MAX_MCE_BANKS * sizeof(u64) * 4, GFP_KERNEL_ACCOUNT); if (!vcpu->arch.mce_banks) { @@ -9314,6 +9323,9 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) kvm_page_track_init(kvm); kvm_mmu_init_vm(kvm); + /* APICV initialization */ + mutex_init(&kvm->arch.apicv_lock); + if (kvm_x86_ops->vm_init) return kvm_x86_ops->vm_init(kvm); From patchwork Fri Sep 13 19:00:52 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11145127 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 89EDC14DB for ; Fri, 13 Sep 2019 19:01:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5E2A22084F for ; Fri, 13 Sep 2019 19:01:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="YMVxxWSq" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388608AbfIMTBA (ORCPT ); Fri, 13 Sep 2019 15:01:00 -0400 Received: from mail-eopbgr820057.outbound.protection.outlook.com ([40.107.82.57]:58712 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726822AbfIMTA5 (ORCPT ); Fri, 13 Sep 2019 15:00:57 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Qe3rM0DmL1mix0OSq+h1Lcy5BvlpXwW8HCiqogTPOiYNNHRKnM/TvZlRERCojuERGjSkc4fxUQWM+0DI2uU673voMvxbvhDH0yjV1sfbd2N6n++9pD8WVkBX8UgTU+WGfEDHCf7klHCHCeV3S9F+uuWH9rv73ErBM8mcOM4FXTZiRy+waJycxgLUtnFZhmzbeCUpsUTzfnez02B36mq1Nr1JR2wIe+uuvAxIFh98jV7fFeD3by+RUkiQk772xhbMO09fCZNb8+7Gl1ohFOH+roA7Nr5ZeKXAjV6zOn4il/nzmQu594vW52Mzs/0RPjpAp/Xko09v9cM9y1cxMeb7vg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7MKzfw4mbQatxHy2uHnAQuqRUqtdXbQnMnUtgr7hKPA=; b=Cpe5IjB/gajiDhaSk9prO/VXJHZ2M10huejGWIRzQNbIumkKHeFgRy0z1xruDfpUrsQ9xwqATItAHRqgFcki4JgJBEzgRRz8VpEkVk/x5gAlu3ZxyakLUwjP4URfBfBcBQMtMFlM7/buQMyle4PmFeXiuOwZLFjaP5uCZbkhBsM7A8YLfj09bWcMu+gBLiV7BdraQf5VHpgdKrVBLNIl/c8iyQLXSm8z3cCZpkhyuqQExENyguxbbh1KMfd84Qa4QxuRCYxCACmSAdmtO+WCY3L87IJa4J9HhZotAkwfAo71RBwMv+UoLNbllhxYr0eT/FPpRumL4kEvjdwlDXTAwg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7MKzfw4mbQatxHy2uHnAQuqRUqtdXbQnMnUtgr7hKPA=; b=YMVxxWSq2pqzfrfrE14B30hkzyjwtvtIYDxBjbSnAjtOi//QEFjF6uAZ6RpdiehgKUj3QJy1jTKYdCODeef/y8b0ELSlKReD0rHbEiYabw9Ubkgr84kwN0fDi7kIHBykXwspISbXWGc2a1afHcnwHUct9jRbAG3vlIcX5jIeq58= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3804.namprd12.prod.outlook.com (10.255.173.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.20; Fri, 13 Sep 2019 19:00:52 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997%3]) with mapi id 15.20.2241.022; Fri, 13 Sep 2019 19:00:52 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" CC: "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "joro@8bytes.org" , "vkuznets@redhat.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v3 03/16] kvm: lapic: Introduce APICv update helper function Thread-Topic: [PATCH v3 03/16] kvm: lapic: Introduce APICv update helper function Thread-Index: AQHVamWQBG4ksxOUwkiSLKWNXc7Fgg== Date: Fri, 13 Sep 2019 19:00:52 +0000 Message-ID: <1568401242-260374-4-git-send-email-suravee.suthikulpanit@amd.com> References: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [165.204.78.1] x-clientproxiedby: SN6PR08CA0021.namprd08.prod.outlook.com (2603:10b6:805:66::34) 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 1.8.3.1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 67dc6fc6-8343-4274-f396-08d7387cb2ab x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600166)(711020)(4605104)(1401327)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:DM6PR12MB3804; x-ms-traffictypediagnostic: DM6PR12MB3804: x-ld-processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2582; x-forefront-prvs: 0159AC2B97 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(376002)(346002)(136003)(396003)(39860400002)(366004)(189003)(199004)(6436002)(6512007)(478600001)(6486002)(7416002)(53936002)(2906002)(4326008)(6116002)(3846002)(25786009)(86362001)(15650500001)(99286004)(66946007)(446003)(64756008)(66446008)(36756003)(486006)(71190400001)(71200400001)(52116002)(66556008)(256004)(4720700003)(2616005)(476003)(11346002)(14444005)(102836004)(305945005)(14454004)(7736002)(316002)(50226002)(386003)(6506007)(26005)(2501003)(8936002)(66066001)(8676002)(186003)(81156014)(81166006)(110136005)(5660300002)(76176011)(54906003)(66476007);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3804;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: pmebVoNGYiNr1Rf06z777X4FJwKJ8fTVw9KpIaxI1cl2kRthhIOEI0EkuZjQ71i9LaPUptlePIS7EY2xoSldVnEHp3DI4eKdy0naOVkOGasQl8J7HRXrYRLRkuw/6pojyR00aMgvEs52tcr2SBtJpbvkaW5BdmK8f8izyY4VOfKP9H4D4KyPXt4H0gVZNEu0LkgYZujdBRxfOV5I/POk9dW+6WFbxhR77WDPa97r+RWx4KY64mO4tHxdk2rZsJ4SIljbyS3vX9oH//anF+s6LIATIje4ipW5NPHC3yWdl8pu0gpC4S921v490A0+JDExv6ErmL+aYK/6i7OJLaFtqLAHv+hqmpWFafmGWT3mKqxIdo0PXlAZ7Yy1+sMrTEL4JI+eqBGwtuGi4PiL9WoBC+Pqn5BSsbJvI1/TRRqk7G0= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 67dc6fc6-8343-4274-f396-08d7387cb2ab X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Sep 2019 19:00:52.4825 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: wAFT+gzm8f1GIKhYc7dydCaceL/omBT+GNUCf6DH537Gxd62SKzFxeN5FpKCVHY5loaV7yErOnHBnQyhFmfFbA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3804 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Re-factor code into a helper function for setting lapic parameters when activate/deactivate APICv, and export the function for subsequent usage. Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/lapic.c | 22 +++++++++++++++++----- arch/x86/kvm/lapic.h | 1 + 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index 685d17c..6453273 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -2147,6 +2147,21 @@ void kvm_lapic_set_base(struct kvm_vcpu *vcpu, u64 value) pr_warn_once("APIC base relocation is unsupported by KVM"); } +void kvm_apic_update_apicv(struct kvm_vcpu *vcpu) +{ + struct kvm_lapic *apic = vcpu->arch.apic; + + if (vcpu->arch.apicv_active) { + /* irr_pending is always true when apicv is activated. */ + apic->irr_pending = true; + apic->isr_count = 1; + } else { + apic->irr_pending = (apic_search_irr(apic) != -1); + apic->isr_count = count_vectors(apic->regs + APIC_ISR); + } +} +EXPORT_SYMBOL_GPL(kvm_apic_update_apicv); + void kvm_lapic_reset(struct kvm_vcpu *vcpu, bool init_event) { struct kvm_lapic *apic = vcpu->arch.apic; @@ -2189,8 +2204,7 @@ void kvm_lapic_reset(struct kvm_vcpu *vcpu, bool init_event) kvm_lapic_set_reg(apic, APIC_ISR + 0x10 * i, 0); kvm_lapic_set_reg(apic, APIC_TMR + 0x10 * i, 0); } - apic->irr_pending = vcpu->arch.apicv_active; - apic->isr_count = vcpu->arch.apicv_active ? 1 : 0; + kvm_apic_update_apicv(vcpu); apic->highest_isr_cache = -1; update_divide_count(apic); atomic_set(&apic->lapic_timer.pending, 0); @@ -2449,9 +2463,7 @@ int kvm_apic_set_state(struct kvm_vcpu *vcpu, struct kvm_lapic_state *s) apic_manage_nmi_watchdog(apic, kvm_lapic_get_reg(apic, APIC_LVT0)); update_divide_count(apic); start_apic_timer(apic); - apic->irr_pending = true; - apic->isr_count = vcpu->arch.apicv_active ? - 1 : count_vectors(apic->regs + APIC_ISR); + kvm_apic_update_apicv(vcpu); apic->highest_isr_cache = -1; if (vcpu->arch.apicv_active) { kvm_x86_ops->apicv_post_state_restore(vcpu); diff --git a/arch/x86/kvm/lapic.h b/arch/x86/kvm/lapic.h index 50053d2..36a5271 100644 --- a/arch/x86/kvm/lapic.h +++ b/arch/x86/kvm/lapic.h @@ -91,6 +91,7 @@ bool kvm_apic_match_dest(struct kvm_vcpu *vcpu, struct kvm_lapic *source, int kvm_apic_set_irq(struct kvm_vcpu *vcpu, struct kvm_lapic_irq *irq, struct dest_map *dest_map); int kvm_apic_local_deliver(struct kvm_lapic *apic, int lvt_type); +void kvm_apic_update_apicv(struct kvm_vcpu *vcpu); bool kvm_irq_delivery_to_apic_fast(struct kvm *kvm, struct kvm_lapic *src, struct kvm_lapic_irq *irq, int *r, struct dest_map *dest_map); From patchwork Fri Sep 13 19:00:53 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11145129 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8802914DB for ; Fri, 13 Sep 2019 19:01:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 513B320CC7 for ; Fri, 13 Sep 2019 19:01:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="sfeb9Y+6" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388536AbfIMTBA (ORCPT ); Fri, 13 Sep 2019 15:01:00 -0400 Received: from mail-eopbgr820057.outbound.protection.outlook.com ([40.107.82.57]:58712 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388433AbfIMTA7 (ORCPT ); Fri, 13 Sep 2019 15:00:59 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LdoPaFML8Z9QHnguIKC40GThHFq7rmb778InnYnZ7k6pcmsTTiHjxLJbtBFyiwI2+9Mvo5X7WVL90Jmrqtpqo+Vm6T/vJo9nu4tsImsA8ZXxSUKbeTbxvuHRmJG01NK3nJYoshssQifH5AZe40UiShP/pvkaJsapeWHl/PiFKV8SQ89VC1cfrbZKrOh3iMkktZoZo606D9MpIG0Oq9lv2iwQCUPJFDD/2jDeEs/xlDPcAM7VLYPrzpUueSfBDW8CAMwaSKskHJGwetsbV7HKr4XGGfDM6Hf6lFXo0eOBkp4zJZWZI+p+pD2z0WhHBosIdE2ra/JgxMS+U504O8f/LA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EhFoR3JR4LkRjSXZz2BK0fOCXzBUH/ZNUBXd1fiv67g=; b=KQcMq5AwyBbEY4ByiaiCdsNFhycy75jOqliMlxlk0Flp6ckOtyWsbtuu/Wxhp3Tb1D7LBck0gRkOjzovXz78sui5gHifPBAC4bmn38l1rH6E776wnYP6QU01pM2SsSORqDsSr2rg2dNx5IfuN2OedBeCYfwQNMkw8KeLab+fPksMdS7djaBI58p7qsjsKlQNGIu8gsW6A4iwM6S6pw/8ag8qwKnmkIkHdP1PnZqAkO8xp5BjPCnSY0MISAMyIwz/qpFMdIYkZBTyeJVZkYa/3Ch4++OszQPw2jIXKTW7QhpUmS1EEq5c8F2aSuURPmPWRF0CjQoqQfWIZPxgZGwmgA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EhFoR3JR4LkRjSXZz2BK0fOCXzBUH/ZNUBXd1fiv67g=; b=sfeb9Y+6NwWQD1bH8QdLNm8cXeVYxki3zMM7PfYK3xEsJO7QqC36IuxZ2QVlvvO8yxgEnVayzVVoxGNDrMvlBgQ4nwyU6F4FAMLKb0S/RFm8OVYAP8hl4TH1ePbwESV2uyOV86mkNRVgrFbEk2IDXF0WAsoAUcH5hf/YFc9CcxU= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3804.namprd12.prod.outlook.com (10.255.173.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.20; Fri, 13 Sep 2019 19:00:53 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997%3]) with mapi id 15.20.2241.022; Fri, 13 Sep 2019 19:00:53 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" CC: "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "joro@8bytes.org" , "vkuznets@redhat.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v3 04/16] kvm: x86: Add support for activate/de-activate APICv at runtime Thread-Topic: [PATCH v3 04/16] kvm: x86: Add support for activate/de-activate APICv at runtime Thread-Index: AQHVamWRksfayE4Ir06mG5Gxp2AffQ== Date: Fri, 13 Sep 2019 19:00:53 +0000 Message-ID: <1568401242-260374-5-git-send-email-suravee.suthikulpanit@amd.com> References: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [165.204.78.1] x-clientproxiedby: SN6PR08CA0021.namprd08.prod.outlook.com (2603:10b6:805:66::34) 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 1.8.3.1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6118ca2f-cb1c-4ee2-8e3e-08d7387cb37e x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600166)(711020)(4605104)(1401327)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:DM6PR12MB3804; x-ms-traffictypediagnostic: DM6PR12MB3804: x-ld-processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6790; x-forefront-prvs: 0159AC2B97 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(376002)(346002)(136003)(396003)(39860400002)(366004)(189003)(199004)(6436002)(6512007)(478600001)(6486002)(7416002)(53936002)(2906002)(4326008)(6116002)(3846002)(25786009)(86362001)(99286004)(66946007)(446003)(64756008)(66446008)(36756003)(486006)(71190400001)(71200400001)(52116002)(66556008)(256004)(4720700003)(2616005)(476003)(11346002)(14444005)(102836004)(305945005)(14454004)(7736002)(316002)(50226002)(386003)(6506007)(26005)(2501003)(8936002)(66066001)(8676002)(186003)(81156014)(81166006)(110136005)(5660300002)(76176011)(54906003)(66476007);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3804;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: lUTu/pbSg7sjaU66ID87iCDvc+nOxtq01g3/0JU9GiA1Hu6q2n7De9TJB4hEuBnbVblAhVGz3z9gx4bqRN8jRpiW+B7C/JLwGbPDi7yHvZTosk5jZo48GgJndTGlj/lANh+uyqoHZi/mBND2VySfDQQLsWTiyr5AKzHKYB9TidI3OaQOtpm4VPh12GEZi3XGI31NFZWQP89NLnB2qWz8C8Kw/0/25zBsWTNDuYCy+shoNNEpT+WZzV/Xs1ahNFrlgp45O06lK1eyh4SwqEf/C2ad+ZNFhRq6KCa5N2ZQ1TK1Bb2cAiBjiWRjfZlLntHGLxZw7iJ+daDJu9oHR7weh+b1SeJKkKvo1WPSdbcM9a142WJAFfHOvuBVrsC6Bf0WnCgAr56gF8yoSpYtqlbgZOaTwIDhBW445iWdMQVfyT0= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6118ca2f-cb1c-4ee2-8e3e-08d7387cb37e X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Sep 2019 19:00:53.6679 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: nmqXPJ8Vht5PGrEPRvweOwwuMBqbuencD6fs9Dr1XFYIYfs4zz4V0/zvplF4Tk1CsRWWMF7al0feh1Z+irVjxA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3804 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Certain runtime conditions require APICv to be temporary deactivated. However, current implementation only support permanently deactivate APICv at runtime (mainly used when running Hyper-V guest). In addition, for AMD, when activate / deactivate APICv during runtime, all vcpus in the VM has to be operating in the same APICv mode, which requires the requesting (main) vcpu to notify others. So, introduce interfaces to request all vcpus to activate/deactivate APICv. Signed-off-by: Suravee Suthikulpanit --- arch/x86/include/asm/kvm_host.h | 9 ++++ arch/x86/kvm/x86.c | 95 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 562bfbd..a50fca1b 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 \ @@ -1098,6 +1102,8 @@ struct kvm_x86_ops { void (*enable_irq_window)(struct kvm_vcpu *vcpu); void (*update_cr8_intercept)(struct kvm_vcpu *vcpu, int tpr, int irr); bool (*get_enable_apicv)(struct kvm *kvm); + void (*pre_update_apicv_exec_ctrl)(struct kvm_vcpu *vcpu, + bool activate); 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); @@ -1425,6 +1431,9 @@ gpa_t kvm_mmu_gva_to_gpa_system(struct kvm_vcpu *vcpu, gva_t gva, struct x86_exception *exception); 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_vcpu *vcpu); +void kvm_make_apicv_deactivate_request(struct kvm_vcpu *vcpu, bool disable); int kvm_emulate_hypercall(struct kvm_vcpu *vcpu); diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 64d275e..446df2b 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -26,6 +26,7 @@ #include "cpuid.h" #include "pmu.h" #include "hyperv.h" +#include "lapic.h" #include #include @@ -7184,6 +7185,22 @@ 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) +{ + if (!lapic_in_kernel(vcpu)) { + WARN_ON_ONCE(!vcpu->arch.apicv_active); + return; + } + if (vcpu->arch.apicv_active) + return; + + vcpu->arch.apicv_active = true; + kvm_apic_update_apicv(vcpu); + + kvm_x86_ops->refresh_apicv_exec_ctrl(vcpu); +} +EXPORT_SYMBOL_GPL(kvm_vcpu_activate_apicv); + void kvm_vcpu_deactivate_apicv(struct kvm_vcpu *vcpu) { if (!lapic_in_kernel(vcpu)) { @@ -7194,8 +7211,10 @@ void kvm_vcpu_deactivate_apicv(struct kvm_vcpu *vcpu) return; vcpu->arch.apicv_active = false; + kvm_apic_update_apicv(vcpu); kvm_x86_ops->refresh_apicv_exec_ctrl(vcpu); } +EXPORT_SYMBOL_GPL(kvm_vcpu_deactivate_apicv); static void kvm_sched_yield(struct kvm *kvm, unsigned long dest_id) { @@ -7711,6 +7730,78 @@ void kvm_make_scan_ioapic_request(struct kvm *kvm) kvm_make_all_cpus_request(kvm, KVM_REQ_SCAN_IOAPIC); } +/* + * NOTE: + * With kvm_make_apicv_[activate|deactivate]_request(), we could run into + * a situation where a vcpu tries to send a new request to a target vcpu before + * it can handle the prior request. + * + * For example: + * + * vcpu0 vcpu1 + * + * kvm_make_apicv_activate_request() ... + * Handle KVM_REQ_APICV_ACTIVATE KVM_REQ_APICV_ACTIVATE==1 + * vcpu_run() ... + * ... + * ... + * kvm_make_apicv_deactivate_request() ... + * + * Here, vcpu0 would have to clear stale apicv activate/deactivate + * request before handling new one. + */ +void kvm_make_apicv_activate_request(struct kvm_vcpu *vcpu) +{ + int i; + struct kvm_vcpu *v; + struct kvm *kvm = vcpu->kvm; + + mutex_lock(&kvm->arch.apicv_lock); + if (kvm->arch.apicv_state != APICV_SUSPENDED) { + mutex_unlock(&kvm->arch.apicv_lock); + return; + } + + kvm_for_each_vcpu(i, v, kvm) + kvm_clear_request(KVM_REQ_APICV_DEACTIVATE, v); + + if (kvm_x86_ops->pre_update_apicv_exec_ctrl) + kvm_x86_ops->pre_update_apicv_exec_ctrl(vcpu, true); + + kvm->arch.apicv_state = APICV_ACTIVATED; + + kvm_make_all_cpus_request(kvm, KVM_REQ_APICV_ACTIVATE); + + mutex_unlock(&kvm->arch.apicv_lock); +} +EXPORT_SYMBOL_GPL(kvm_make_apicv_activate_request); + +void kvm_make_apicv_deactivate_request(struct kvm_vcpu *vcpu, bool disable) +{ + int i; + struct kvm_vcpu *v; + struct kvm *kvm = vcpu->kvm; + + mutex_lock(&kvm->arch.apicv_lock); + if (kvm->arch.apicv_state != APICV_ACTIVATED) { + mutex_unlock(&kvm->arch.apicv_lock); + return; + } + + kvm_for_each_vcpu(i, v, kvm) + kvm_clear_request(KVM_REQ_APICV_ACTIVATE, v); + + if (kvm_x86_ops->pre_update_apicv_exec_ctrl) + kvm_x86_ops->pre_update_apicv_exec_ctrl(vcpu, false); + + kvm->arch.apicv_state = disable ? APICV_DISABLED : APICV_SUSPENDED; + + kvm_make_all_cpus_request(kvm, KVM_REQ_APICV_DEACTIVATE); + + mutex_unlock(&kvm->arch.apicv_lock); +} +EXPORT_SYMBOL_GPL(kvm_make_apicv_deactivate_request); + static void vcpu_scan_ioapic(struct kvm_vcpu *vcpu) { if (!kvm_apic_present(vcpu)) @@ -7897,6 +7988,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 Fri Sep 13 19:00:55 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11145115 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 79C7814DB for ; Fri, 13 Sep 2019 19:01:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4D0CA2084F for ; Fri, 13 Sep 2019 19:01:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="uU1OzKyS" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388740AbfIMTBC (ORCPT ); Fri, 13 Sep 2019 15:01:02 -0400 Received: from mail-eopbgr820057.outbound.protection.outlook.com ([40.107.82.57]:58712 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388525AbfIMTBB (ORCPT ); Fri, 13 Sep 2019 15:01:01 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L0VbGm3ZaAGIY+0KO5xAOsiMqX/+v+sGn0WoN5JXrSTkkFjvzMqDzAbt62rUi3Aojnv41iv6YAHzGkN0L0par/XKbJZAIk8TLw/5TVY+vMhkmsz8z8dDMXUfNukawHX0RoXSs0urzDeEah8lQtMVjzeeuGs0mxmH4nF4RR8YwzNCW0q5hDmADx9zL2e3vkh2jOr/qj8CoLZwn1nzHrWY9NH4VezViriFdDafBVipXA0k+VBR6OGmem9lmhG1+XIuFy63leNTPUGFXE0mIiFfSoXuntpOP5jqVhuAptY74gMGqgUklT1Qch1N7X00TCRzFqlBNF7KqgidugNw7nEQ4Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vtDJmbTUlI7oVu3X2YLk1Ku9+rzWOUFbFJWpGYw/f6M=; b=fihZxi75uKCdYQAvpNzkbjEZstugWlM2pjFg2yJJF6lnD1Jua6IolcfSeqNND09ayaKBZT0IyKE5InP6fwafIQSNONnTXboUHXFZPMD6/6Ak32OObY1BYZvMC2ocWDm6FRK5dPnq3Kt7cNYik0gsfhL1AWw7BLuHraRFZU8GLXrLDmLTrTuAG7DApqBB9UoImjYNwQWhJN1s3vYOfrYUIgMqZPsyI9zURyg66lErpe73w2b9gDUakI0INwCB/5X6o50LW1OmqR775213R02uTDv1M3RZJCYv85GKk/x8+u3sNh08CksDxYDY2WnGXt1YWSvLt409y7jfUrK+WgjzkQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vtDJmbTUlI7oVu3X2YLk1Ku9+rzWOUFbFJWpGYw/f6M=; b=uU1OzKySoOh1iKRRWSIZeKgT8WCxzsj2oXdH2QaAJNAiyKycih9G1zDEP+M4g31WFI60MPXzfsQ+xX1lZeZzx7UPa2hDm39slwwt5dbYlAFYTgPe3n95nANYnmX9dJBjMi+58MPpHsh6e7T4Q3bHw8+54H/UP8vgYfXZ83a6OVw= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3804.namprd12.prod.outlook.com (10.255.173.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.20; Fri, 13 Sep 2019 19:00:55 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997%3]) with mapi id 15.20.2241.022; Fri, 13 Sep 2019 19:00:55 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" CC: "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "joro@8bytes.org" , "vkuznets@redhat.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v3 05/16] kvm: x86: Add APICv activate/deactivate request trace points Thread-Topic: [PATCH v3 05/16] kvm: x86: Add APICv activate/deactivate request trace points Thread-Index: AQHVamWRADc9HmenaE+NkczNcOboAA== Date: Fri, 13 Sep 2019 19:00:55 +0000 Message-ID: <1568401242-260374-6-git-send-email-suravee.suthikulpanit@amd.com> References: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [165.204.78.1] x-clientproxiedby: SN6PR08CA0021.namprd08.prod.outlook.com (2603:10b6:805:66::34) 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 1.8.3.1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3f08bc23-1fb7-4c90-ca2c-08d7387cb446 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600166)(711020)(4605104)(1401327)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:DM6PR12MB3804; x-ms-traffictypediagnostic: DM6PR12MB3804: x-ld-processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:288; x-forefront-prvs: 0159AC2B97 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(376002)(346002)(136003)(396003)(39860400002)(366004)(189003)(199004)(6436002)(6512007)(478600001)(6486002)(7416002)(53936002)(2906002)(4326008)(6116002)(3846002)(25786009)(86362001)(99286004)(66946007)(446003)(64756008)(66446008)(36756003)(486006)(71190400001)(71200400001)(52116002)(66556008)(256004)(4720700003)(2616005)(476003)(11346002)(14444005)(102836004)(305945005)(14454004)(7736002)(316002)(50226002)(386003)(6506007)(26005)(2501003)(8936002)(66066001)(8676002)(186003)(81156014)(81166006)(110136005)(5660300002)(76176011)(54906003)(66476007);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3804;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: iqscLasI2tIrXoy32HEZcpWdCbensXm3DuBcy58EZK5iedEqgwa7hcO4RjnbaF4p3M9qW/DxBe08H0lGJZEFVw7SkrqAG31TTEPbiP3juUyV5tHO+n+Ew/YtsSNVUMvCVCXz4wwCrOtkp8gJ+TX0MV3BVBrAKZshnTHOTMx/LFPeRIZKp0+3O2Qaqq+vpi1OohDTrp8TkeZMRdbLGodjRO80ACv0HzdciyHvqN9ur4rnDQj8GcQX9BHQdMwVFXBiWQm9+qfw+3FyvH/clveYnboIy6ObnELmHue2Ap3QAMn4tOY1X97XKQgycCTEiYxL1MNo3qpiXr+LLD/dp+7Zt6enT36Km0Z/Dr69sS2crI8OVTQn9gKTBYIWRoTpgmuWjsqkMCqmf6QRNI8A+mhQccbrhfFuotLTDYpYDKF058c= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3f08bc23-1fb7-4c90-ca2c-08d7387cb446 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Sep 2019 19:00:55.0581 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: vO2z6SYMpYXSK9KBOQCg5TLQqupA9V9692fe+WIz6DFjQgqDaGAPvjytOZnYyD3T7pYn/rqbWsIo3rfEbSalDw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3804 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Add trace points when sending request to activate/deactivate APICv. Suggested-by: Alexander Graf Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/trace.h | 30 ++++++++++++++++++++++++++++++ arch/x86/kvm/x86.c | 7 +++++++ 2 files changed, 37 insertions(+) diff --git a/arch/x86/kvm/trace.h b/arch/x86/kvm/trace.h index b5c831e..e3f745a 100644 --- a/arch/x86/kvm/trace.h +++ b/arch/x86/kvm/trace.h @@ -1297,6 +1297,36 @@ __entry->vcpu_id, __entry->timer_index) ); +TRACE_EVENT(kvm_apicv_activate_request, + TP_PROTO(u32 vcpu), + TP_ARGS(vcpu), + + TP_STRUCT__entry(__field(u32, vcpu)), + + TP_fast_assign(__entry->vcpu = vcpu;), + + TP_printk("vcpu=%u", __entry->vcpu) +); + +TRACE_EVENT(kvm_apicv_deactivate_request, + TP_PROTO(u32 vcpu, bool disable), + TP_ARGS(vcpu, disable), + + TP_STRUCT__entry( + __field(u32, vcpu) + __field(bool, disable) + ), + + TP_fast_assign( + __entry->vcpu = vcpu; + __entry->disable = disable; + ), + + TP_printk("vcpu=%u, disable=%s", + __entry->vcpu, + __entry->disable ? "disabled" : "suspended") +); + /* * Tracepoint for AMD AVIC */ diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 446df2b..bc74876 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -7756,6 +7756,8 @@ void kvm_make_apicv_activate_request(struct kvm_vcpu *vcpu) struct kvm_vcpu *v; struct kvm *kvm = vcpu->kvm; + trace_kvm_apicv_activate_request(vcpu->vcpu_id); + mutex_lock(&kvm->arch.apicv_lock); if (kvm->arch.apicv_state != APICV_SUSPENDED) { mutex_unlock(&kvm->arch.apicv_lock); @@ -7782,6 +7784,8 @@ void kvm_make_apicv_deactivate_request(struct kvm_vcpu *vcpu, bool disable) struct kvm_vcpu *v; struct kvm *kvm = vcpu->kvm; + trace_kvm_apicv_deactivate_request(vcpu->vcpu_id, disable); + mutex_lock(&kvm->arch.apicv_lock); if (kvm->arch.apicv_state != APICV_ACTIVATED) { mutex_unlock(&kvm->arch.apicv_lock); @@ -10194,3 +10198,6 @@ bool kvm_arch_no_poll(struct kvm_vcpu *vcpu) EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_pi_irte_update); EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_avic_unaccelerated_access); EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_avic_incomplete_ipi); +EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_apicv_activate_request); +EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_apicv_deactivate_request); + From patchwork Fri Sep 13 19:00:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11145143 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 358EE14DB for ; Fri, 13 Sep 2019 19:02:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id F24B42081B for ; Fri, 13 Sep 2019 19:02:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="u7Ba4grh" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389089AbfIMTCy (ORCPT ); Fri, 13 Sep 2019 15:02:54 -0400 Received: from mail-eopbgr820057.outbound.protection.outlook.com ([40.107.82.57]:58712 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388708AbfIMTCy (ORCPT ); Fri, 13 Sep 2019 15:02:54 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UJpZBtb5PPfNM5VxHroP5HinsLsvqzlQRnbOXqYs7mvd1l++CdlZoimaMogCyj5o68BJQNcKTzNvIHvRRFbMeWjPilTCVB29W58S6rjWnUvNYgaM0MeQseEDgQn8CXbEjmp5XbyQIu36asItFGIM8iQOOOKQ+WA8ygCu5Acy1F8e0yvmRkeu6xymldb0MDeTCYzm8aNPQ6F/SIFPz/jbR6tMx4IfbCQL66IIH1omTfyKUV6FAzzLfo4LLDZ6GdWrgQimgL5xY8WRsJCZrb4q/p4Djcwa0LXNZsCsUjibdFzu/rTYZBKU8GRUBaq92YHQVKdwskPf5Lrf0k+aKVLCbQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HosefMQyYoGJi+WqpDVBLlIApQ/5zryyf31rOTp7TvY=; b=Ikbhjt4g6o5+zkNF+jPTW8Mdj5k7WDtSiqPJcT86ujzQ8p2M5LFMNMsm2/tb9obJbsoMaJUg7ZsYhlnQ3lcj4gRYNjEZV+uV7Cqbq4XYF/QWB8DZ13gkAGEmtPgPZj17hJx60aiXlzlxgMI8FzLhDvu4IoczB51Z0/gsYiz3DN9SHPu5vLdx9e6vOPH8T3SEta7csVgN/Ho9IeztpeYUZKeXbSWAadvsi6QJ+jo8DJ+CGQYoqiXBLlwYUWqbz1AXQRr/JACihj0d+J8DTMa+Mmxebxw7vEA3ik2oQV4HfejvHuN9G5oZGRaT46WI6wiYlnOsLwLo4CJLaObRBDju7g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HosefMQyYoGJi+WqpDVBLlIApQ/5zryyf31rOTp7TvY=; b=u7Ba4grh5NyD3BYe/ghqB1nN8kAgixIGnYg62CvpUoS6k5q2dl16mpzl7+s/UQZtdGLPVYzAxDzKACYEA27NS9Fkh25tsvxOqxOHqZYCi9XYE0ozbMMBWNM6kI9+0Rk8W+2h/e7vnMqAipPKPBqeomqqYnjTJY8+cRaAkE+yH6o= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3804.namprd12.prod.outlook.com (10.255.173.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.20; Fri, 13 Sep 2019 19:00:56 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997%3]) with mapi id 15.20.2241.022; Fri, 13 Sep 2019 19:00:56 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" CC: "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "joro@8bytes.org" , "vkuznets@redhat.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v3 06/16] kvm: x86: svm: Add support to activate/deactivate posted interrupts Thread-Topic: [PATCH v3 06/16] kvm: x86: svm: Add support to activate/deactivate posted interrupts Thread-Index: AQHVamWS7aEJ/uHZSEquRMsBUfXUeg== Date: Fri, 13 Sep 2019 19:00:56 +0000 Message-ID: <1568401242-260374-7-git-send-email-suravee.suthikulpanit@amd.com> References: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [165.204.78.1] x-clientproxiedby: SN6PR08CA0021.namprd08.prod.outlook.com (2603:10b6:805:66::34) 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 1.8.3.1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9883ea0b-6bf4-47a8-56c5-08d7387cb528 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600166)(711020)(4605104)(1401327)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:DM6PR12MB3804; x-ms-traffictypediagnostic: DM6PR12MB3804: x-ld-processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5797; x-forefront-prvs: 0159AC2B97 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(376002)(346002)(136003)(396003)(39860400002)(366004)(189003)(199004)(6436002)(6512007)(478600001)(6486002)(7416002)(53936002)(2906002)(4326008)(6116002)(3846002)(25786009)(86362001)(99286004)(66946007)(446003)(64756008)(66446008)(36756003)(486006)(71190400001)(71200400001)(52116002)(66556008)(256004)(4720700003)(2616005)(476003)(11346002)(14444005)(102836004)(305945005)(14454004)(7736002)(316002)(50226002)(386003)(6506007)(26005)(2501003)(8936002)(66066001)(8676002)(186003)(81156014)(81166006)(110136005)(5660300002)(76176011)(54906003)(66476007);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3804;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: Je/+73RHpfNQnSQiFsviJkLpsEkNFx9dwFBiufkDBA7HOy3bGMfWbQXjbwouHlzI813LlFMIm1GZjKbviRg4LpqaeAQtlc+YnueIZa6/pPcAuDfxphBnTshhgYqeTFUXUtrijUupVDNLzJPiMQOpPUl2SysyiruXrM54yNs0JzT6ddQU2FavI7ZrK7OwWAKSxJ+DoGfI1ioBESUmqjLsZk2HeFCtWFoQOGZqDNYTlXc7qGj86xg9HJmXsyyEDWB9UmK4vVoFfzeiv/0RMvRs3/+2TunlE0LmROOGWIdEKVrqca0waubhForSpbraop+AKc9I7ZUEaowPiurZclUAKf1NajqyHxqHvVSykISsECibLeePXAqKr/WkadBotR63ECXfFais52cxkecnvOyiMhqbUtPPTTEKP7ncaLwrenE= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9883ea0b-6bf4-47a8-56c5-08d7387cb528 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Sep 2019 19:00:56.6402 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 0Gg5O7rkNMKkOexJZoqKBhZyOjQLRqZFU7rBPcC1b00O59fIOUWh7CcZFcuhpIHZ0l+57nEQTgzh5FkuoBD/CA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3804 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Introduce interface for activate/deactivate posted interrupts, and implement SVM hooks to toggle AMD IOMMU guest virtual APIC mode. Signed-off-by: Suravee Suthikulpanit --- arch/x86/include/asm/kvm_host.h | 4 ++++ arch/x86/kvm/svm.c | 44 +++++++++++++++++++++++++++++++++++++++++ arch/x86/kvm/x86.c | 5 +++++ 3 files changed, 53 insertions(+) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index a50fca1b..624e883 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -1193,6 +1193,10 @@ struct kvm_x86_ops { int (*update_pi_irte)(struct kvm *kvm, unsigned int host_irq, uint32_t guest_irq, bool set); + + int (*activate_pi_irte)(struct kvm_vcpu *vcpu); + int (*deactivate_pi_irte)(struct kvm_vcpu *vcpu); + void (*apicv_post_state_restore)(struct kvm_vcpu *vcpu); bool (*dy_apicv_has_pending_interrupt)(struct kvm_vcpu *vcpu); diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 245bde0..8673617 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -5398,6 +5398,48 @@ static int svm_update_pi_irte(struct kvm *kvm, unsigned int host_irq, return ret; } +static int svm_set_pi_irte_mode(struct kvm_vcpu *vcpu, bool activate) +{ + int ret = 0; + unsigned long flags; + struct amd_svm_iommu_ir *ir; + struct vcpu_svm *svm = to_svm(vcpu); + + if (!kvm_arch_has_assigned_device(vcpu->kvm)) + return 0; + + /* + * Here, we go through the per-vcpu ir_list to update all existing + * interrupt remapping table entry targeting this vcpu. + */ + spin_lock_irqsave(&svm->ir_list_lock, flags); + + if (list_empty(&svm->ir_list)) + goto out; + + list_for_each_entry(ir, &svm->ir_list, node) { + if (activate) + ret = amd_iommu_activate_guest_mode(ir->data); + else + ret = amd_iommu_deactivate_guest_mode(ir->data); + if (ret) + break; + } +out: + spin_unlock_irqrestore(&svm->ir_list_lock, flags); + return ret; +} + +static int svm_activate_pi_irte(struct kvm_vcpu *vcpu) +{ + return svm_set_pi_irte_mode(vcpu, true); +} + +static int svm_deactivate_pi_irte(struct kvm_vcpu *vcpu) +{ + return svm_set_pi_irte_mode(vcpu, false); +} + static int svm_nmi_allowed(struct kvm_vcpu *vcpu) { struct vcpu_svm *svm = to_svm(vcpu); @@ -7321,6 +7363,8 @@ static bool svm_need_emulation_on_page_fault(struct kvm_vcpu *vcpu) .deliver_posted_interrupt = svm_deliver_avic_intr, .dy_apicv_has_pending_interrupt = svm_dy_apicv_has_pending_interrupt, .update_pi_irte = svm_update_pi_irte, + .activate_pi_irte = svm_activate_pi_irte, + .deactivate_pi_irte = svm_deactivate_pi_irte, .setup_mce = svm_setup_mce, .smi_allowed = svm_smi_allowed, diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index bc74876..1540629 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -7198,6 +7198,9 @@ void kvm_vcpu_activate_apicv(struct kvm_vcpu *vcpu) kvm_apic_update_apicv(vcpu); kvm_x86_ops->refresh_apicv_exec_ctrl(vcpu); + + if (kvm_x86_ops->activate_pi_irte) + kvm_x86_ops->activate_pi_irte(vcpu); } EXPORT_SYMBOL_GPL(kvm_vcpu_activate_apicv); @@ -7212,6 +7215,8 @@ void kvm_vcpu_deactivate_apicv(struct kvm_vcpu *vcpu) vcpu->arch.apicv_active = false; kvm_apic_update_apicv(vcpu); + if (kvm_x86_ops->deactivate_pi_irte) + kvm_x86_ops->deactivate_pi_irte(vcpu); kvm_x86_ops->refresh_apicv_exec_ctrl(vcpu); } EXPORT_SYMBOL_GPL(kvm_vcpu_deactivate_apicv); From patchwork Fri Sep 13 19:00:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11145133 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id CB84017E6 for ; Fri, 13 Sep 2019 19:01:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A01B221479 for ; Fri, 13 Sep 2019 19:01:39 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="m0XJBlsa" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389402AbfIMTBj (ORCPT ); Fri, 13 Sep 2019 15:01:39 -0400 Received: from mail-eopbgr760058.outbound.protection.outlook.com ([40.107.76.58]:54616 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729758AbfIMTBi (ORCPT ); Fri, 13 Sep 2019 15:01:38 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h9f2nqxDnPPBnBDGBOXEZ2WTLVtZSBC2LqIclH/CZe6Bn+X6hoIM/3q71P758L9rT3aFquMUUroCNQGPGtdi68lVOexknixx2DVOec+N4S1+Yxlv+QkbHoaQU8TkAX3iOTxJrKogRsWOlO55mJNv28yzXVXP3SDMSLyTtTePWRALbpsBq10pRPPVFeUW/k/xSTLnzlL+P/vwd5aG+29RdiBe8fFQwiwMdmhKmqKcKaZNqem2ug1ND11D7og4/UE/1CxAAsWc7NsReNRzZe/KxhQwr6c7iWZ667y3H9TPP7rovKHHlUsDPmuQ1VhldVN4+mtIqcT4ycWPXQjnF6zy2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UWlYKLNygsfU3qv31NL8wFRSzi1NW9Jqf/HR7JUefwI=; b=WjjhzrrkTHgTwjGzkKxxO9E0mgyexpJ/F+1WEmy7EN3SkpePlcj9pEnE/x78kkk7Zf5H6Ehqr5jcqEv/WvA5xIX1cWkSpVI4IUEAEB5P09i7Pce9vvsXh/29an7lbMMTEKklG72FISwMIVKd1Sc7acGuJV66GeZL/LEDDmc4/TA3+zkS43qfZP0l2P85gHGJsUD04z7D8tA/FSpVOS/51QxCZTnS94ufaXU9I9urPCEnZ5sI/sVYU8xjyUUa9ql9qY0hKtKD41flJKsJjKDMKShquC09FKd28Pm0BubdvI5JSWr+Qg+z0DYcp6+bJqPzdSNnwpjRNUiKBGbV/qLKmw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UWlYKLNygsfU3qv31NL8wFRSzi1NW9Jqf/HR7JUefwI=; b=m0XJBlsaolVjbk7WWbA25nZKT7fkYAHAxu2ovx4Zuo63c20cSiPAO47DNKx/4zia1kfSY04Bbaeyk5YRtQgKDkCedl5kxCpgI/st4bT2Uq75gvtg0FLuKkfyO+39USQJmLgfM1DDxxKWePUsPlbJk8sWEy+VcSn6uBDNyE1FWwk= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3804.namprd12.prod.outlook.com (10.255.173.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.20; Fri, 13 Sep 2019 19:00:58 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997%3]) with mapi id 15.20.2241.022; Fri, 13 Sep 2019 19:00:58 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" CC: "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "joro@8bytes.org" , "vkuznets@redhat.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v3 07/16] svm: Add support for setup/destroy virutal APIC backing page for AVIC Thread-Topic: [PATCH v3 07/16] svm: Add support for setup/destroy virutal APIC backing page for AVIC Thread-Index: AQHVamWTTWKSr9AuCkyCwqbevC70zA== Date: Fri, 13 Sep 2019 19:00:57 +0000 Message-ID: <1568401242-260374-8-git-send-email-suravee.suthikulpanit@amd.com> References: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [165.204.78.1] x-clientproxiedby: SN6PR08CA0021.namprd08.prod.outlook.com (2603:10b6:805:66::34) 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 1.8.3.1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 8dfdd22f-7063-4546-c0cf-08d7387cb607 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600166)(711020)(4605104)(1401327)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:DM6PR12MB3804; x-ms-traffictypediagnostic: DM6PR12MB3804: x-ld-processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4502; x-forefront-prvs: 0159AC2B97 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(1496009)(4636009)(376002)(346002)(136003)(396003)(39860400002)(366004)(189003)(199004)(6436002)(6512007)(478600001)(6486002)(7416002)(53936002)(2906002)(4326008)(6116002)(3846002)(25786009)(86362001)(99286004)(66946007)(446003)(64756008)(66446008)(36756003)(486006)(71190400001)(71200400001)(52116002)(66556008)(256004)(4720700003)(2616005)(476003)(11346002)(14444005)(102836004)(305945005)(14454004)(7736002)(316002)(50226002)(386003)(6506007)(26005)(2501003)(8936002)(66066001)(8676002)(186003)(81156014)(81166006)(110136005)(5660300002)(76176011)(54906003)(66476007);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3804;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: BZHRrDfW5YYzXNw68OXxNUyRhicyjxGNQblO285EsVlM2KBSurrXjl67aXb9Pz9JEY+AMEgFEtsnm1NntWsz2TxtdlZx6cO/y5TENF1LmJVOefOG8UcbvASNt8Ql127Exy3Pav16eotLNrvL/zF5cQs1IUqZkaxJtEOryA3qWVuNp82L/WuJOj8Qmpp+X5oO7jvCPP9bSilYZ98gEPGHvE6Tcjlh9slLHFYPAovc9uD9vLLdxi3QY9cOtagspp5pmkcxxRF34BVNpzOhI52+vzGJeCOxJNotDwdLMiqxxXajDqEejs+ZF+UVbgHqSGPfx1AAf8Z5wZ2dBkniwM+nxJFrEyZnNNQYXOLToMId0vvXqDoAO0euYL2lIKE9ntuaIpqYwB0UA1X0CLNdtez0LlRYN2uunIXUEonwidCUF0g= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8dfdd22f-7063-4546-c0cf-08d7387cb607 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Sep 2019 19:00:57.9954 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: kCzuU2xKfI2aXENMD6QaqJr6K907Srsy0TuA31gOn98ZpLvXKBMP6DTwcwqPaljxEbqIkNyepZcmT4XNCFIx/A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3804 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Activate/deactivate AVIC requires setting/unsetting the memory region used for virtual APIC backing page (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. Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 6 deletions(-) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 8673617..2e06ee2 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -1476,7 +1476,9 @@ static u64 svm_write_l1_tsc_offset(struct kvm_vcpu *vcpu, u64 offset) static void avic_init_vmcb(struct vcpu_svm *svm) { struct vmcb *vmcb = svm->vmcb; - struct kvm_svm *kvm_svm = to_kvm_svm(svm->vcpu.kvm); + struct kvm *kvm = svm->vcpu.kvm; + struct kvm_svm *kvm_svm = to_kvm_svm(kvm); + phys_addr_t bpa = __sme_set(page_to_phys(svm->avic_backing_page)); phys_addr_t lpa = __sme_set(page_to_phys(kvm_svm->avic_logical_id_table_page)); phys_addr_t ppa = __sme_set(page_to_phys(kvm_svm->avic_physical_id_table_page)); @@ -1485,7 +1487,13 @@ static void avic_init_vmcb(struct vcpu_svm *svm) vmcb->control.avic_logical_id = lpa & AVIC_HPA_MASK; vmcb->control.avic_physical_id = ppa & AVIC_HPA_MASK; vmcb->control.avic_physical_id |= AVIC_MAX_PHYSICAL_ID_COUNT; - vmcb->control.int_ctl |= AVIC_ENABLE_MASK; + + mutex_lock(&kvm->arch.apicv_lock); + if (kvm->arch.apicv_state == APICV_ACTIVATED) + vmcb->control.int_ctl |= AVIC_ENABLE_MASK; + else + vmcb->control.int_ctl &= ~AVIC_ENABLE_MASK; + mutex_unlock(&kvm->arch.apicv_lock); } static void init_vmcb(struct vcpu_svm *svm) @@ -1668,19 +1676,24 @@ 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; mutex_lock(&kvm->slots_lock); + 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; @@ -1690,14 +1703,39 @@ 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; + int ret = 0; u64 *entry, new_entry; int id = vcpu->vcpu_id; + struct kvm *kvm = vcpu->kvm; struct vcpu_svm *svm = to_svm(vcpu); - ret = avic_init_access_page(vcpu); + mutex_lock(&kvm->arch.apicv_lock); + if (kvm->arch.apicv_state == APICV_ACTIVATED) + ret = avic_setup_access_page(vcpu, true); + mutex_unlock(&kvm->arch.apicv_lock); + if (ret) return ret; @@ -2187,7 +2225,10 @@ static struct kvm_vcpu *svm_create_vcpu(struct kvm *kvm, unsigned int id) /* We initialize this flag to true to make sure that the is_running * bit would be set the first time the vcpu is loaded. */ - svm->avic_is_running = true; + mutex_lock(&kvm->arch.apicv_lock); + if (irqchip_in_kernel(kvm) && kvm->arch.apicv_state == APICV_ACTIVATED) + svm->avic_is_running = true; + mutex_unlock(&kvm->arch.apicv_lock); svm->nested.hsave = page_address(hsave_page); From patchwork Fri Sep 13 19:00:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11145113 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8C05414DB for ; Fri, 13 Sep 2019 19:01:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 60C8920CC7 for ; Fri, 13 Sep 2019 19:01:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="jgOz/Y5M" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388800AbfIMTBD (ORCPT ); Fri, 13 Sep 2019 15:01:03 -0400 Received: from mail-eopbgr820045.outbound.protection.outlook.com ([40.107.82.45]:25312 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388636AbfIMTBC (ORCPT ); Fri, 13 Sep 2019 15:01:02 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ev9BqenTYztXSHRjdB5N+hTYiAEFCXXN9ENe8tfarBEEp/TIJH0i8HrZY3srAWOx3EjLEwsUkHdPngvGlhs6xxbdduoPOV8Y7YJc+2VxsS9vqPm7URJm6ifT/mc7cZjyBEUtlqVMes/3hNj6NJiBvIiLkxRC+BUa5ciIDg9OF7j8meo+kIT3LIF7arPLGhbflKJ4EhEwJHbp3aQxN0bA4K/WT6WYc6xLUgfhSUil3QtptLwB7VIPJvU0Py4hIQsjiyOoMwqOdxCaMNseEbkWHWqd7SjNnizqvSS906QmLlPaRy5TpkrXtQPBlo5gh49Ib6tYU3isFeSyYLsGkOXtLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zoQXcQXpfgbLmYOLvCTmJFS9j5Wuq0dWRvD3x5Baq4k=; b=CQ4Z+jv3cI+v5QQbCeGpzlc7uR1ovoaWyvSM38iCUL876bPbxukoKKJHajWM1vVLahEMoIwJvCcDq6EBW2cvqaOPOZO1BmqIQW/LDav6z3mabv+HGJz5EM3w6tRCWvyBFsvsgsB1AlPpFgbRUEsGeQJyHZpukllUVkPt23HLRcbZLxUPESH4icO5+Ydh8/InxZkmSJACQsNt0+SaUIRZHWhDZFZ3bNGTC4jCeDUPThg6n1Dr+U0xeJaSpTuuPNnZ01OLkR1qnJAqaB9UrYUCQgnGJBwzy/KPh0MVXtf+IzZ9G16npKW2T//De9vJRAscwJNUXmOI3OPaxkxJVmDeOQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zoQXcQXpfgbLmYOLvCTmJFS9j5Wuq0dWRvD3x5Baq4k=; b=jgOz/Y5MWorZpFUr8NRz2HM7Wf/R377dKeLvSHY6YDuLoEen95diMJU2qzNgB/oPLZVtaM9JXcf7MUtQ5S3kWAsMS4ZhjsGy9za0HUHKGr3/NfmrEdeDe+jOSV3K1XjcANvFDHUrKeSt1s2Ze5gny7UEOQgU0gJy0jCcExH1l9c= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3596.namprd12.prod.outlook.com (20.178.199.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.18; Fri, 13 Sep 2019 19:00:59 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997%3]) with mapi id 15.20.2241.022; Fri, 13 Sep 2019 19:00:59 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" CC: "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "joro@8bytes.org" , "vkuznets@redhat.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v3 08/16] svm: Add support for activate/deactivate AVIC at runtime Thread-Topic: [PATCH v3 08/16] svm: Add support for activate/deactivate AVIC at runtime Thread-Index: AQHVamWUl/QPE3RtYk6dp3s3XPyzAQ== Date: Fri, 13 Sep 2019 19:00:59 +0000 Message-ID: <1568401242-260374-9-git-send-email-suravee.suthikulpanit@amd.com> References: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [165.204.78.1] x-clientproxiedby: SN6PR08CA0021.namprd08.prod.outlook.com (2603:10b6:805:66::34) 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 1.8.3.1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: eb4ab6ee-f40b-49f9-c3cd-08d7387cb6d7 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:DM6PR12MB3596; x-ms-traffictypediagnostic: DM6PR12MB3596: x-ld-processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:390; x-forefront-prvs: 0159AC2B97 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(39860400002)(136003)(346002)(396003)(366004)(376002)(189003)(199004)(66066001)(7416002)(3846002)(6116002)(81156014)(186003)(8676002)(81166006)(54906003)(6436002)(52116002)(110136005)(316002)(76176011)(53936002)(5660300002)(71200400001)(71190400001)(6506007)(386003)(102836004)(6512007)(486006)(26005)(66946007)(8936002)(66476007)(66556008)(64756008)(66446008)(4720700003)(2906002)(99286004)(50226002)(6486002)(446003)(256004)(14444005)(25786009)(305945005)(478600001)(11346002)(36756003)(476003)(7736002)(14454004)(4326008)(2616005)(2501003)(86362001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3596;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: oEebhmfpgwy600YWFHI3oI+SWEIXQZOSkz5ZAsIJSjHQ4m0DWvPwI8l70vza9b5nxPlYnaVfXpeclFj1mTuDcoD6Z+o3az95jjqsykte/p14N3pBGaN0k1rOEa+Jw0YySQMDdWtG3Wn9ywLt+gDUZ/nl6TygYDRE3fxZdu1oQfaoDLf8iR5iPoXDaVMeo9tXDLzLk7S9B1vFO/kapv3nw3ZaGpNGuaWeSf/Ge2V/bdqgidUO1i4oI54Lq7QWqYkdiB4lzqSOMDgHE9a4IZnFDpyXG+iiS+e0r5Zq3B5KlbS+sopbH5Tg8waCglCUhwMN12PGDNmofOaTIKcuBe6DkmNkvRvtiKU08G8Vn9LJFbymeto8USP2uQu9PsC3DVA8eNULEIGl1FBoCw2rK5BZeedUDmzozz9c32R1HdVlV6s= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: eb4ab6ee-f40b-49f9-c3cd-08d7387cb6d7 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Sep 2019 19:00:59.2867 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: BawgXZYdCR+6fCcQko6SoqrZotSby7N4YSegq13S/ofpnJmGrhR3OPEkkKSyM4txJn7hITvKj8bkG08QEWINKQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3596 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Add necessary logics for supporting activate/deactivate AVIC at runtime. Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm.c | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 2e06ee2..a01bc6a 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -388,6 +388,7 @@ struct amd_svm_iommu_ir { 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 inline void avic_post_state_restore(struct kvm_vcpu *vcpu); static int nested_svm_exit_handled(struct vcpu_svm *svm); static int nested_svm_intercept(struct vcpu_svm *svm); @@ -2365,6 +2366,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); } @@ -5204,10 +5209,19 @@ 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(vcpu)) + if (kvm_vcpu_apicv_active(vcpu)) { + /** + * During AVIC temporary deactivation, guest could update + * APIC ID, DFR and LDR registers, which would not be trapped + * by avic_unaccelerated_access_interception(). In this case, + * we need to check and update the AVIC logical APIC ID table + * accordingly before re-activating. + */ + avic_post_state_restore(vcpu); vmcb->control.int_ctl |= AVIC_ENABLE_MASK; - else + } else { vmcb->control.int_ctl &= ~AVIC_ENABLE_MASK; + } mark_dirty(vmcb, VMCB_AVIC); } @@ -7283,6 +7297,14 @@ static bool svm_need_emulation_on_page_fault(struct kvm_vcpu *vcpu) return false; } +static void svm_pre_update_apicv_exec_ctrl(struct kvm_vcpu *vcpu, bool activate) +{ + if (activate) + avic_setup_access_page(vcpu, false); + else + avic_destroy_access_page(vcpu); +} + static struct kvm_x86_ops svm_x86_ops __ro_after_init = { .cpu_has_kvm_support = has_svm, .disabled_by_bios = is_disabled, @@ -7360,6 +7382,7 @@ static bool svm_need_emulation_on_page_fault(struct kvm_vcpu *vcpu) .set_virtual_apic_mode = svm_set_virtual_apic_mode, .get_enable_apicv = svm_get_enable_apicv, .refresh_apicv_exec_ctrl = svm_refresh_apicv_exec_ctrl, + .pre_update_apicv_exec_ctrl = svm_pre_update_apicv_exec_ctrl, .load_eoi_exitmap = svm_load_eoi_exitmap, .hwapic_irr_update = svm_hwapic_irr_update, .hwapic_isr_update = svm_hwapic_isr_update, From patchwork Fri Sep 13 19:01:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11145139 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C3D2317E6 for ; Fri, 13 Sep 2019 19:01:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 968D12084F for ; Fri, 13 Sep 2019 19:01:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="cRQThq1H" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389504AbfIMTBk (ORCPT ); Fri, 13 Sep 2019 15:01:40 -0400 Received: from mail-eopbgr760058.outbound.protection.outlook.com ([40.107.76.58]:54616 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2389363AbfIMTBj (ORCPT ); Fri, 13 Sep 2019 15:01:39 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WCF4HIg3ZkEeOW77IlWGYZjvqMXRJ5kdGZK/7PW5PeOaZxTdd4HTAyXP6nnqd9dgLx8OCghdZXJXWxfxvXJVueSeCKYBXue8zcBFpMYkR79vSDxMAdQTP0cLo1uu6o4zg+Krm/MK4D6bvkMrKub+GocBhLIuqCgbo17WvIgGJk5Sn+tW8Vyc7KlSb+gCaAW1xrx6q0Pc1UbIYjFm6CYFJ1j6AxuBqRYWA+JYPpwSr0m8ARYrDeJlC3Z0OrW60VhUJwiaqBpj0L/V9o5yUGnVILdL/8sCQkikfEClmAqOfwgK8TWssSThCiLnRoK0N2U7dO+1lw0jVnMl+PRdp+EZvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Xb3KMPr6qWz+I9Ez/Ru2kbDDhxsu52HQ1ZRSbN8ca3k=; b=gWorEh4PagJfPbGE9ozya9gkkngB5h0J4DA9ENX9GiapyDVj6kEexQEZAm7jCEq5njkPugMLuWsBk7knoGpbh/RLKj70PSz83s+Zr2+jNsDRSARul/7jlJQAhl6OYk3V+VMXfibiltCFnCArDsDxOn4pjdVrWAW4uFXTAtrMGxvKm1019DgF+MY0zeZVbGrOIjZoQBKecvE/20dw+I8ZnYVel94t2fhaGgs16eT75NXV4IH+ujIaej3DI8PChoM06CYM9g93rgZqQ4jyIOeKFmC1ZQSgzYJQXLGLXZETdWgSgJjvhgJe0i/JOZxBYD9HUYUxG09sQwBKTy7hsLuVPw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Xb3KMPr6qWz+I9Ez/Ru2kbDDhxsu52HQ1ZRSbN8ca3k=; b=cRQThq1HJB5DM4320Z65C02gk+1XDks6BNau1lnkvDKxIpa6eEa8lErSvDVcUZgsMIQ2cip4DSZRHxgbD2hw4zcagEZal/4PRyK28Q2FAxdlfcyY06VTKyaof8i9FucZRqT2TimoBS6ixR4OI3M+SmcCKdsnwOP8DNAaomECpZY= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3804.namprd12.prod.outlook.com (10.255.173.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.20; Fri, 13 Sep 2019 19:01:00 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997%3]) with mapi id 15.20.2241.022; Fri, 13 Sep 2019 19:01:00 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" CC: "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "joro@8bytes.org" , "vkuznets@redhat.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v3 09/16] kvm: x86: hyperv: Use APICv deactivate request interface Thread-Topic: [PATCH v3 09/16] kvm: x86: hyperv: Use APICv deactivate request interface Thread-Index: AQHVamWV0w32d528XUiZH8DFeQLFEw== Date: Fri, 13 Sep 2019 19:01:00 +0000 Message-ID: <1568401242-260374-10-git-send-email-suravee.suthikulpanit@amd.com> References: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [165.204.78.1] x-clientproxiedby: SN6PR08CA0021.namprd08.prod.outlook.com (2603:10b6:805:66::34) 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 1.8.3.1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0a1352b0-97ba-4633-fd19-08d7387cb786 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600166)(711020)(4605104)(1401327)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:DM6PR12MB3804; x-ms-traffictypediagnostic: DM6PR12MB3804: x-ld-processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3383; x-forefront-prvs: 0159AC2B97 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(1496009)(4636009)(376002)(346002)(136003)(396003)(39860400002)(366004)(189003)(199004)(6436002)(6512007)(478600001)(6486002)(7416002)(53936002)(2906002)(4326008)(6116002)(3846002)(25786009)(86362001)(99286004)(66946007)(446003)(64756008)(66446008)(36756003)(486006)(71190400001)(71200400001)(52116002)(66556008)(256004)(4720700003)(2616005)(476003)(11346002)(14444005)(102836004)(305945005)(14454004)(7736002)(316002)(50226002)(386003)(6506007)(26005)(2501003)(8936002)(66066001)(8676002)(186003)(81156014)(81166006)(110136005)(5660300002)(76176011)(54906003)(66476007);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3804;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: qiLzBCM0kkL5qNj3DovJOA1Vtb7yNNT6L9TxLncKorhkNysFOBmSTht5TCrcHDSR1Mj0ae4hX3wBBVtKOp7OJdyIr0msC3kZX1D9/zr4y+35ehcGP4ItghsV820hHJlnOvLFx2HdDkKxQ03yBHbu6lb58lSHA2RV6La+Ae/voqIkIUOEtE51B1rgh+YrtOkBVrdPHAqYMOOxoYV8giN1fAVdWFEkF1U/5PpRsOelM0Pgxju/XILZc38pz98v1pmtjI284zbcutenOyurfXWf3WGE1TTGHIk8+NMCWLxBW4OTfZZqQ75jjylCcfvLXofrpBIQ1aWtcw//kJldgwHH6ZPLXNazf7n6R8oEqFWmi2m80mrgKWspYZE5DHB4gaALmSdgCbMfr4jdHCfxmq4YNHNM4waOxDLisvaBSezyhug= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0a1352b0-97ba-4633-fd19-08d7387cb786 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Sep 2019 19:01:00.5210 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ayKe11hJ+/SsD6ytpbsPbipBbR9iijWcwNuzO5TjGzIj7ut2uxy50GS7KrAF6LximRrPOsm+aYvUs8wptJr2KQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3804 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Since disabling APICv has to be done for all vcpus on AMD-based system, adopt the newly introduced kvm_make_apicv_deactivate_request() interface. Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/hyperv.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/arch/x86/kvm/hyperv.c b/arch/x86/kvm/hyperv.c index c10a8b1..1d011b4 100644 --- a/arch/x86/kvm/hyperv.c +++ b/arch/x86/kvm/hyperv.c @@ -772,9 +772,17 @@ int kvm_hv_activate_synic(struct kvm_vcpu *vcpu, bool dont_zero_synic_pages) /* * Hyper-V SynIC auto EOI SINT's are - * not compatible with APICV, so deactivate APICV + * not compatible with APICV, so request + * to deactivate APICV permanently. + * + * Since this requires updating + * APIC_ACCESS_PAGE_PRIVATE_MEMSLOT, + * also take srcu lock. */ - kvm_vcpu_deactivate_apicv(vcpu); + vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu); + kvm_make_apicv_deactivate_request(vcpu, true); + srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx); + synic->active = true; synic->dont_zero_synic_pages = dont_zero_synic_pages; return 0; From patchwork Fri Sep 13 19:01:02 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11145135 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 592E914DB for ; Fri, 13 Sep 2019 19:01:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2E5A82168B for ; Fri, 13 Sep 2019 19:01:47 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="nqFuPujM" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389610AbfIMTBn (ORCPT ); Fri, 13 Sep 2019 15:01:43 -0400 Received: from mail-eopbgr760058.outbound.protection.outlook.com ([40.107.76.58]:54616 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2389455AbfIMTBk (ORCPT ); Fri, 13 Sep 2019 15:01:40 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FI4aGtHGDdM+1vGUgSYMJqrroOct6sR/9+tePRUX+KDVmiM8Laxpl2mdrv4WzhOGkQE0dvjbGqtpMM0Kqjjdh7BNPDZ/z7udpGEVz1xu9YIMI+wXI1gh4xIEgIQ8XQaYIa+qE26TyEt99EOYeIAm9JlLBzFdy0UX0X8fcdL0BmpQsDCMqOFRf5119CrLbtk74GwjSc7ZRFSd4Nr1UlFBkkYDu6dNWUamZX2zHe7pFMCwur66lnzP8Un3tYUvlyFh6A9l5rfkt+JHwZdxEcLlLpAFba/Luq24haihROUspuwCM7YWchHDZBiUILhbY6Sr4aRQF7PGpsxkRIcooZPD5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=R7IAhgJtkJRrLvCzuL10dk3wiC5fMAXIaBTMs47Gc5A=; b=HRD62DHqKR3Pq5L0HzHNbvPfg+oxIyG0VHu3WnYyOBzniuY7nFPn6KYOC0OKkxB/B9C26/9m9mFJYfGXpNc2QlECIn0vNNJRoTaFWFnYfsnFHkRcqk+1zwOyS9PPR+Ydst/VQ9zFW/orllEdle7JDBTD1vyGUptuBQgvbye9XRvsrtNZQapDxxSLq82ZzzYGQ8HetrmRU5YqCDOcXw+sYkEyde74HZBCD3tY4rPwM5uw+4uem0HMggpBotkcNon/+jxSjVNabwvZjLfbMzX/eOz2hdpt/xfHI2OW3fAYpTFWE+mi6K1t0ToIgGV1hzcRLhzG70/SNaZkAoyek+KoVQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=R7IAhgJtkJRrLvCzuL10dk3wiC5fMAXIaBTMs47Gc5A=; b=nqFuPujMLvvnx/lqWWI4eReLJA7eIzQXANE99omwjDybiwET+FwULeieQEbyxAHfuhss72/ag4Tixsli4lTKfly2lGEK8I47BPB8GJp8g6sZMmxTOTdscF2RFIgA55FHak506Jn9yKL5LyYJtbOxQSvzRq9WiGS4+fFMfT/FHr4= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3804.namprd12.prod.outlook.com (10.255.173.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.20; Fri, 13 Sep 2019 19:01:02 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997%3]) with mapi id 15.20.2241.022; Fri, 13 Sep 2019 19:01:02 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" CC: "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "joro@8bytes.org" , "vkuznets@redhat.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v3 10/16] svm: Disable AVIC when launching guest with SVM support Thread-Topic: [PATCH v3 10/16] svm: Disable AVIC when launching guest with SVM support Thread-Index: AQHVamWWoPH9o5PhQE6xSKQxumGTSw== Date: Fri, 13 Sep 2019 19:01:02 +0000 Message-ID: <1568401242-260374-11-git-send-email-suravee.suthikulpanit@amd.com> References: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [165.204.78.1] x-clientproxiedby: SN6PR08CA0021.namprd08.prod.outlook.com (2603:10b6:805:66::34) 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 1.8.3.1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3cb3a673-37b6-40f3-89b8-08d7387cb868 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600166)(711020)(4605104)(1401327)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:DM6PR12MB3804; x-ms-traffictypediagnostic: DM6PR12MB3804: x-ld-processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4714; x-forefront-prvs: 0159AC2B97 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(1496009)(4636009)(376002)(346002)(136003)(396003)(39860400002)(366004)(189003)(199004)(6436002)(6512007)(478600001)(6486002)(7416002)(53936002)(2906002)(4326008)(6116002)(3846002)(25786009)(86362001)(99286004)(66946007)(446003)(64756008)(66446008)(36756003)(486006)(71190400001)(71200400001)(52116002)(66556008)(256004)(4720700003)(2616005)(476003)(11346002)(14444005)(102836004)(305945005)(14454004)(7736002)(316002)(50226002)(386003)(6506007)(26005)(2501003)(8936002)(66066001)(8676002)(186003)(81156014)(81166006)(110136005)(5660300002)(76176011)(54906003)(66476007);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3804;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: Z+9ZctDeIg1Pxm+IJfy82UxGFsvqmxVserxFb03mlJbTntoK91jqkfu9gkyDzWuiITVIPnsF0RljQIRTCPQJCLvuLHxozTsEy7xAO3chkOMvwlhZP9F9dt7tyPK9n30k4tSFCOOL9L9rubDKy8RojwaYgFqOzXCJ3x0kX9O6CNgKofMeNAyKlFQgSYEICwfRLQ86PZfPRu6Fl/+odNYCD5tqX3OpuPffg2fcA0wF2fXVIme/DyOpSTzYTQRWLp1ZypdG3v7Apg23Ee6Ez+Soz6oM+nmvKx4pHt/GI7S0oX+IxleOmbP+GF+Re/yovlEo4YV7AFwqJdQ947qAJM7Uzt4LteIgWLkyITY4mw6GLR2wWKr1lOm+lLHO2pQdM3vua0kOlWWoLAqB3KTCW8Oncqj9HSQ1QT5Z3Qr7JgReTDU= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3cb3a673-37b6-40f3-89b8-08d7387cb868 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Sep 2019 19:01:02.1450 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 4rzfDQxp9pq6H04KR00IkTFXIjtG48n0O8R2ANn3w1xIiSp4w53LDw8//yvJovZEWoi8f3XMKWFGSOQpMmJBmg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3804 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Since AVIC does not currently work w/ nested virtualization, disable AVIC for the guest if setting CPUID Fn80000001_ECX[SVM] (i.e. indicate support for SVM, which is needed for nested virtualization). Suggested-by: Alexander Graf Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index a01bc6a..e02ee1a 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -6029,6 +6029,16 @@ static void svm_cpuid_update(struct kvm_vcpu *vcpu) return; guest_cpuid_clear(vcpu, X86_FEATURE_X2APIC); + + /* + * Currently, AVIC does not work with nested virtualization. + * So, we disable AVIC when cpuid for SVM is set in the L1 guest. + */ + if (nested && guest_cpuid_has(vcpu, X86_FEATURE_SVM)) { + vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu); + kvm_make_apicv_deactivate_request(vcpu, true); + srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx); + } } static void svm_set_supported_cpuid(u32 func, struct kvm_cpuid_entry2 *entry) From patchwork Fri Sep 13 19:01: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: 11145137 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3A67C14DB for ; Fri, 13 Sep 2019 19:01:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0DF5A2084F for ; Fri, 13 Sep 2019 19:01:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="vBoyHDmd" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389652AbfIMTBr (ORCPT ); Fri, 13 Sep 2019 15:01:47 -0400 Received: from mail-eopbgr760058.outbound.protection.outlook.com ([40.107.76.58]:54616 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2389568AbfIMTBm (ORCPT ); Fri, 13 Sep 2019 15:01:42 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=W/yKZeA6kM+gU0EyxLPmjzbENxbEn2kXZPgtNtD+gfKYNIchq0PEujuI4uc2tdrcb3D07gDD8wda5o/1JyYXIuprBizHgP2HyQaNmo/T6Q87U0m7XiwjP5DwOX49fN6JOQGlfqESsFEJlHkGSMaHokV8zh6MFki8dJ9j5Vi1ywIob+v3RYJcZ5QTg+cNTOrb+ax1zDakaEgJ6Rcaq7GfjVXhdEFxQ6plcggYzSES8ag44LKrepVGhSEhjcRNQmmVmdEDWBFSNnqYrsfRKBaoSDmndZrDvhzACNHNvAOvBvp6lDFSPIzRnxWIpPjoqPmismMLsliO6dd7uz4JSzXoYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=K2mbJ8x2zpGjkWmTiXtQHE+COIaLNR5JeVCrdcZmiT8=; b=GPJpSZ5U64bBQO2HFmPudCsG/GQ7t/xq95O3DBEFAwYKeXeuN64CFwejXpzy4H49YPtlR9KckHVGtCkWsP0AXH30irftE5/HJx5cXwOFjMsKRtOZ9d99WNKpDk3qWLTCgfHJlEpws7Wc5UA0UoFjM4BdzkOf4CJj4hLeUAfIsUoQo/S58wuCAq+Sm7z760cARW6HRjjw6coQpSn8FTv8VKUWndOuTLkWMPISOEQFa7iWqjFKQTeUIqr4JZuf+p2WoS2SYCn+ozFn5U/X4iDYxh/WNqr4GXv90/oXsyVPlSBjiMLO06JwjJ+nOFPPQh+uAiAArgPjRcCBq1ptqFwzTw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=K2mbJ8x2zpGjkWmTiXtQHE+COIaLNR5JeVCrdcZmiT8=; b=vBoyHDmdcbYNWqGZQ+YFvk5SyFCUpMHa/M74enoovMj+7qtTWWSEz7a/FIMlLYH4jB2i1H1gX/SatnoX0+VhwRZD+2altMStVyiT2AiT3SM3R9cDoHR2MV6qt5ooft8Ymaqhtu7Mc9v/fG04p3gts5sCre/BV/R1ef04ULsKf6I= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3804.namprd12.prod.outlook.com (10.255.173.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.20; Fri, 13 Sep 2019 19:01:04 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997%3]) with mapi id 15.20.2241.022; Fri, 13 Sep 2019 19:01:04 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" CC: "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "joro@8bytes.org" , "vkuznets@redhat.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v3 11/16] svm: Temporary deactivate AVIC during ExtINT handling Thread-Topic: [PATCH v3 11/16] svm: Temporary deactivate AVIC during ExtINT handling Thread-Index: AQHVamWXlhnpjmvtL0StlhGcs+dG7A== Date: Fri, 13 Sep 2019 19:01:03 +0000 Message-ID: <1568401242-260374-12-git-send-email-suravee.suthikulpanit@amd.com> References: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [165.204.78.1] x-clientproxiedby: SN6PR08CA0021.namprd08.prod.outlook.com (2603:10b6:805:66::34) 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 1.8.3.1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 430e7e77-ec1a-4e55-43cd-08d7387cb96a x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600166)(711020)(4605104)(1401327)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:DM6PR12MB3804; x-ms-traffictypediagnostic: DM6PR12MB3804: x-ld-processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-forefront-prvs: 0159AC2B97 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(1496009)(4636009)(376002)(346002)(136003)(396003)(39860400002)(366004)(189003)(199004)(6436002)(6512007)(478600001)(6486002)(7416002)(53936002)(2906002)(4326008)(6116002)(3846002)(25786009)(86362001)(99286004)(66946007)(446003)(64756008)(66446008)(36756003)(486006)(71190400001)(71200400001)(52116002)(66556008)(256004)(4720700003)(2616005)(476003)(11346002)(14444005)(102836004)(305945005)(14454004)(7736002)(316002)(50226002)(386003)(6506007)(26005)(2501003)(8936002)(66066001)(8676002)(186003)(81156014)(81166006)(110136005)(5660300002)(76176011)(54906003)(66476007);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3804;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: qpQCSLpW92F+T2cm1MS4fkg46UYbwdNKC2Oe21ls86Ud3O6gl/lyrxEWTmW9/+Q3GjwSUOdzDHwZwvl7gcsuKkUr/UsWFJYXxCmKnBfWvN036Hbwu22EZtfD+zD63gdF+LojC/CMicukG0T+s7vOEgWqmIU9VXWvdlyZcEPVyfrIl0RNwIzG+ieF+f2wO2GIFDSmof5ouTFrSvTYvzkTXsRZvMLVOXiXSy5KIJ3st+IhbjHNFaCujNk3GvuNnryKJGAdoBREUnbJPfLsQ09AjUYtMeISlNKZADIt36P5ZUmYlDyLzFDCw59E5zw2umPw8kd/TMhcBLPUei0qHiWL8Pn4kHPG36My76joJaDPIvxG88t2g/dkNG9cmsRC6xu4QubrcXAZNjdJw3zIVvXFVuu9xic49oJ5RkhwrWSDkGQ= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 430e7e77-ec1a-4e55-43cd-08d7387cb96a X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Sep 2019 19:01:03.9290 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: hG40IN01hUIXoWbRoHKx75S1Rb9Jsmf8CHzAxBuxosEJe/fODftV+whG+lUGCc5vlACb9qOR4S2N0uTCt02OHQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3804 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org 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. Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index e02ee1a..f04a17e 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -388,6 +388,8 @@ struct amd_svm_iommu_ir { 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 *kvm); static inline void avic_post_state_restore(struct kvm_vcpu *vcpu); static int nested_svm_exit_handled(struct vcpu_svm *svm); @@ -4516,6 +4518,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.kvm)) + 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; @@ -5203,7 +5214,33 @@ static void svm_hwapic_isr_update(struct kvm_vcpu *vcpu, int max_isr) { } -/* Note: Currently only used by Hyper-V. */ +static bool is_avic_active(struct vcpu_svm *svm) +{ + return (svm_get_enable_apicv(svm->vcpu.kvm) && + 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; + + kvm_make_apicv_activate_request(vcpu); +} + +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; + + /* Request temporary deactivate apicv */ + kvm_make_apicv_deactivate_request(vcpu, false); +} + static void svm_refresh_apicv_exec_ctrl(struct kvm_vcpu *vcpu) { struct vcpu_svm *svm = to_svm(vcpu); @@ -5549,9 +5586,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 @@ -5561,6 +5595,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 Fri Sep 13 19:01:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11145117 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8A08D17E6 for ; Fri, 13 Sep 2019 19:01:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5C10B20CC7 for ; Fri, 13 Sep 2019 19:01:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="DzoECLSt" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388926AbfIMTBJ (ORCPT ); Fri, 13 Sep 2019 15:01:09 -0400 Received: from mail-eopbgr710062.outbound.protection.outlook.com ([40.107.71.62]:6592 "EHLO NAM05-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388220AbfIMTBI (ORCPT ); Fri, 13 Sep 2019 15:01:08 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E073ClBml9HQO6LwfxuPMLb6V/fKloi/TqV5plqG0z3ma8j+RraSaG2eE964fB93rX6bAsnyxe6lX0tDg/S7tozpx24fJBvFlkBGpV5yKR+eClb1EPWAbvMKUfGXrUpg77UH76BceKUte2EFxFS/6nZgmVtffk14FZrQ9/65XUpJvg0LidrDqHnAoP60d4lUCXTx3R4FcSx0wCjAo5FLld32V1jLKK2c/MC78plSPeoqhaJoyQf6YY+qD0+KSUguDRHvjnrbGBBlK6q1nODFaatpXYIROLR1eYgdrOhGQ14oasHE6pBWkdZIZfHh1Poag3b41xOfshcWWQvJgYWvXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=g6sgdBiQS3BiFWN4XzUCEAEBdRYxks6q2Hol8ow0ckY=; b=CAnlxHvXH4/dQe+979YVahGm0b14JJZ8ctjjTfEi8J3koZfB9iJ+mIDzK+s+byqezx3iRv+lQHbYoVmtSmD8gf7Hvc9RFBS8BVUpHyYcw1xAYpzcPXvweUoYWzSJ+D2jPr8jLxaJBdDI//X0SBbz/VoT8BiCO3xBHkVWiKZxsjA+tXX2udl/Za1OJuXn8obqAK6Svqk7/v8vi0ci1sv2VL4tnInob703d7ydX3tUcUvoCVLF3T68iexnS3wh24qdEd5+xLYlpX09wQIdOyKlR+IPC6icwSQ9nyAxFUELt0o3GSJCwYgNIOEBIUP622v/k6DeYxRNFltvPqh2iRkzQg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=g6sgdBiQS3BiFWN4XzUCEAEBdRYxks6q2Hol8ow0ckY=; b=DzoECLStByPNhAI2qB91mvw37eW/AmowyfkYmJSspQkMMcOZsUQWA7SNkOHOWibvUsrmW8Y3gzyHj/5JZLk5iUnmK+f+mzUrkEr5SQPFTLiflSDoCKFKVgNAb1aug7M87mH5IwNqHxdWQpUnI4W1W5cciWcU2ktmco4ixbvASss= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3596.namprd12.prod.outlook.com (20.178.199.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.18; Fri, 13 Sep 2019 19:01:06 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997%3]) with mapi id 15.20.2241.022; Fri, 13 Sep 2019 19:01:05 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" CC: "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "joro@8bytes.org" , "vkuznets@redhat.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v3 12/16] kvm: x86: Introduce struct kvm_x86_ops.apicv_eoi_accelerate Thread-Topic: [PATCH v3 12/16] kvm: x86: Introduce struct kvm_x86_ops.apicv_eoi_accelerate Thread-Index: AQHVamWYM5VvTyQPHE27kuPQ+2CvWg== Date: Fri, 13 Sep 2019 19:01:05 +0000 Message-ID: <1568401242-260374-13-git-send-email-suravee.suthikulpanit@amd.com> References: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [165.204.78.1] x-clientproxiedby: SN6PR08CA0021.namprd08.prod.outlook.com (2603:10b6:805:66::34) 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 1.8.3.1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 51ece17c-5193-4cb3-7de5-08d7387cba4d x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:DM6PR12MB3596; x-ms-traffictypediagnostic: DM6PR12MB3596: x-ld-processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1775; x-forefront-prvs: 0159AC2B97 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(39860400002)(136003)(346002)(396003)(366004)(376002)(189003)(199004)(66066001)(7416002)(3846002)(6116002)(81156014)(186003)(8676002)(81166006)(54906003)(6436002)(52116002)(110136005)(316002)(76176011)(53936002)(5660300002)(71200400001)(71190400001)(6506007)(386003)(102836004)(6512007)(486006)(26005)(66946007)(8936002)(66476007)(66556008)(64756008)(66446008)(4720700003)(2906002)(99286004)(50226002)(6486002)(446003)(256004)(14444005)(25786009)(305945005)(478600001)(11346002)(36756003)(476003)(7736002)(14454004)(4326008)(2616005)(2501003)(86362001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3596;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: rN5SS90dNaVu/hMVsT8YerUM+6XVtTvXLQA8zxALptXV6HEW3ejmtMzcn/jTOLn+zzL+KtRvGMEn5bB/4NHMSgVdKMqVKmAblPw7IFLHIxb/QofKVKMW6Rg13scmUKCrrNzO0dfRcV76decgdlmVkZgUdYxjgf79RRgikUE8hnQpSBmiC43knrU1jvG+BFfhiDTPur5igaYq4tPPQlx3bG38VCFlcbJNXIp+CAypmJgxYpA/LqpA4iz7dyww4DbzwxFLjPAFN82mEArJgNxjU5j30u+pHxw/9TlnN5GvfOCvTHItxkdcL0YCa1z2fyAxOD+EtWQ2/qQZfoYDjn+SKB81k7/vy4uNDbMycSHLsga7lCMGnoSl3G/WQacvUNWz7vHAID4GS5ish/2oFkf+uxcsdj/lry5yYVmCFpVaHvE= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 51ece17c-5193-4cb3-7de5-08d7387cba4d X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Sep 2019 19:01:05.3342 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 05HOVf1BX7XP5U8lnYCBtr56MBTzNABNC1xA5K4tUiFeFvnSZX1GL37Zi+Ips9LZYRYy5GbqYGFiCubJ8UAOeA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3596 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org AMD SVM AVIC accelerates write access to APIC EOI register for edge-trigger interrupts, and does not trap. This breaks in-kernel irqchip, which expects the EOI trap to send notifier for acked irq. Introduce struct kvm_x86_ops.apicv_eoi_accelerate to allow check for such behavior. Signed-off-by: Suravee Suthikulpanit --- arch/x86/include/asm/kvm_host.h | 2 ++ arch/x86/kvm/svm.c | 10 ++++++++++ arch/x86/kvm/x86.c | 15 +++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 624e883..0bc8b29 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -1105,6 +1105,7 @@ struct kvm_x86_ops { void (*pre_update_apicv_exec_ctrl)(struct kvm_vcpu *vcpu, bool activate); void (*refresh_apicv_exec_ctrl)(struct kvm_vcpu *vcpu); + bool (*apicv_eoi_accelerate)(bool edge_trig); void (*hwapic_irr_update)(struct kvm_vcpu *vcpu, int max_irr); void (*hwapic_isr_update)(struct kvm_vcpu *vcpu, int isr); bool (*guest_apic_has_interrupt)(struct kvm_vcpu *vcpu); @@ -1438,6 +1439,7 @@ gpa_t kvm_mmu_gva_to_gpa_system(struct kvm_vcpu *vcpu, gva_t gva, void kvm_vcpu_activate_apicv(struct kvm_vcpu *vcpu); void kvm_make_apicv_activate_request(struct kvm_vcpu *vcpu); void kvm_make_apicv_deactivate_request(struct kvm_vcpu *vcpu, bool disable); +bool kvm_apicv_eoi_accelerate(struct kvm *kvm, bool edge_trig); int kvm_emulate_hypercall(struct kvm_vcpu *vcpu); diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index f04a17e..457ffe1 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -7357,6 +7357,15 @@ static void svm_pre_update_apicv_exec_ctrl(struct kvm_vcpu *vcpu, bool activate) avic_destroy_access_page(vcpu); } +static bool svm_apicv_eoi_accelerate(bool edge_trig) +{ + /* + * AVIC accelerates write access to APIC EOI register for + * edge-trigger interrupts. + */ + return edge_trig; +} + static struct kvm_x86_ops svm_x86_ops __ro_after_init = { .cpu_has_kvm_support = has_svm, .disabled_by_bios = is_disabled, @@ -7435,6 +7444,7 @@ static void svm_pre_update_apicv_exec_ctrl(struct kvm_vcpu *vcpu, bool activate) .get_enable_apicv = svm_get_enable_apicv, .refresh_apicv_exec_ctrl = svm_refresh_apicv_exec_ctrl, .pre_update_apicv_exec_ctrl = svm_pre_update_apicv_exec_ctrl, + .apicv_eoi_accelerate = svm_apicv_eoi_accelerate, .load_eoi_exitmap = svm_load_eoi_exitmap, .hwapic_irr_update = svm_hwapic_irr_update, .hwapic_isr_update = svm_hwapic_isr_update, diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 1540629..fa55960 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -7221,6 +7221,21 @@ void kvm_vcpu_deactivate_apicv(struct kvm_vcpu *vcpu) } EXPORT_SYMBOL_GPL(kvm_vcpu_deactivate_apicv); +bool kvm_apicv_eoi_accelerate(struct kvm *kvm, bool edge_trig) +{ + bool ret = false; + + if (!kvm_x86_ops->apicv_eoi_accelerate) + return ret; + + mutex_lock(&kvm->arch.apicv_lock); + if (kvm->arch.apicv_state == APICV_ACTIVATED) + ret = kvm_x86_ops->apicv_eoi_accelerate(edge_trig); + mutex_unlock(&kvm->arch.apicv_lock); + return ret; +} +EXPORT_SYMBOL_GPL(kvm_apicv_eoi_accelerate); + static void kvm_sched_yield(struct kvm *kvm, unsigned long dest_id) { struct kvm_vcpu *target = NULL; From patchwork Fri Sep 13 19:01:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11145119 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1CB8817E6 for ; Fri, 13 Sep 2019 19:01:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E32D12084F for ; Fri, 13 Sep 2019 19:01:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="TitwHuLO" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389023AbfIMTBO (ORCPT ); Fri, 13 Sep 2019 15:01:14 -0400 Received: from mail-eopbgr710060.outbound.protection.outlook.com ([40.107.71.60]:62364 "EHLO NAM05-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388899AbfIMTBN (ORCPT ); Fri, 13 Sep 2019 15:01:13 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kvH2tTrfhIozFnmuMCUsQ34RGfoPJDS4j+eYO4Upv9riQU7jlRPUpWbcLyR8lYHXKKigXcn7uFzRivnT+jMynxe2DnAcm4HfzuhHJzugJ+41Wm/FKZRyzTxsrqw8Zud8GWbFyMTmCaFCrYY8tsmlf/qHnyVzCk/ZSW8BfIWjqxBdKsyU6hyrR4aOuOF6Lb+g4kZOK2BU2Fx4rywV2uWKTDUQiszmms1DL8EXMeorZk6Of8DCQeFyPEPD18j/pUMH5oZZkVvsSywMm8rDQrwikfgNr/31X7Gh6/zjrYJqlVTu/K3GWydsr99IKUf0RpaLT0aAgHLwgbPJkBByQiw0DQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KVqRx2eJKZYY0qvkOo3QsPxcTwvW9OZrBfv1/q23aig=; b=Z5fxWbmGWA9NN+ReTjaRz3Hy+zkr74jy7+tM6QcO3+sic0pztbG/LLRVk2hchJjU/5zXh+HiBS704vvMKAjvCE4kQ9VBYn4F0FFxwqY28ZsbJlgua8NngT8xKSl/ZQK5dTf7y8a++uGaiIXyRclmTCWy088rP9zzPvRIUH2ITVIy7Zvew7Kq5xZN/az4CzN/DCEtZgo5pI8Ucey4cu47k0cV9pMrL+VZbTkvYsWtnpbWJTCxwM/4MWGm0N9+jT8isWwN7hrg3YaP9t+yTu0PBiZQWG3ve/7ucluHjXr+6JvQ2rk2sR8cAqYtmoIiDnuEeKskLlnwb3H+z95bjla9Kg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KVqRx2eJKZYY0qvkOo3QsPxcTwvW9OZrBfv1/q23aig=; b=TitwHuLO5OjjU57uol36T73WZzRw8+O8jMw1RzRA1FRryUlNsYwscqoDMAcI9YXkVYDJskNpA487g0146K/El/tvh3T+L+tjdlXQAGE18EBB6CVWkSc/Z33MWZ2E8uoewwUlMJnzoUp49pvxieWkmoRkHWsZIrOamf0PDlVcifI= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3596.namprd12.prod.outlook.com (20.178.199.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.18; Fri, 13 Sep 2019 19:01:07 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997%3]) with mapi id 15.20.2241.022; Fri, 13 Sep 2019 19:01:07 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" CC: "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "joro@8bytes.org" , "vkuznets@redhat.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v3 13/16] kvm: lapic: Clean up APIC predefined macros Thread-Topic: [PATCH v3 13/16] kvm: lapic: Clean up APIC predefined macros Thread-Index: AQHVamWZ+Ds3rNAWoU2hmN8A3MjObw== Date: Fri, 13 Sep 2019 19:01:07 +0000 Message-ID: <1568401242-260374-14-git-send-email-suravee.suthikulpanit@amd.com> References: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [165.204.78.1] x-clientproxiedby: SN6PR08CA0021.namprd08.prod.outlook.com (2603:10b6:805:66::34) 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 1.8.3.1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 1a35eba4-cec2-4c5c-b6c9-08d7387cbb7f x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:DM6PR12MB3596; x-ms-traffictypediagnostic: DM6PR12MB3596: x-ld-processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6108; x-forefront-prvs: 0159AC2B97 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(39860400002)(136003)(346002)(396003)(366004)(376002)(189003)(199004)(66066001)(7416002)(3846002)(6116002)(81156014)(186003)(8676002)(81166006)(54906003)(6436002)(52116002)(110136005)(316002)(76176011)(53936002)(5660300002)(71200400001)(71190400001)(6506007)(386003)(102836004)(6512007)(486006)(26005)(66946007)(8936002)(66476007)(66556008)(64756008)(66446008)(4720700003)(2906002)(99286004)(50226002)(6486002)(446003)(256004)(14444005)(25786009)(305945005)(478600001)(11346002)(36756003)(476003)(7736002)(14454004)(4326008)(2616005)(2501003)(86362001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3596;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: +flAJ3MtQSRLrQqE7FVqT0Z2J2XtEDlhkzgdb60asItyuOTA+a2ApInVyeezF70ptDKMQ9OjKcGqMnEMr8H2akV+Zp/FxvrJ5WluArqNLXw/uu1lyrVuBFvy/JFgi+MV7MCrSUQ/AIYobMEWWE4M1OGKtz5JnUirEiaeFVHap3hRsXyYitAfBpRGMhaO3WOKPcMJr0+c0b8ku/Xe3FNCHriCnnvfZzOc+oQNa0jdqwVVaWe23btM9rEC7uF5mg/VrGU2tq2uF2lGBGkw8U6DRRKFUMTtVYPwVTUfmu7XnU5NZ1eb4mpi4vW2LnMfVcah4vc0F0AcrJfctzitLEVOaavzNr62eaFLsbSOZLMdu5JwW5v2Qbaj0CFszVgpdR916iZ5gNxpb5CyHUf1APc5eSJZ/apyifKiOjpt7aiaudY= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1a35eba4-cec2-4c5c-b6c9-08d7387cbb7f X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Sep 2019 19:01:07.2362 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: hs5C8wA6OIbIKvHNMMSzM7A4+ryW8rZYI81maFs6ti9H8KryqpiLC7lC+zB7u8w7tuz7BxFyTYYuQTKSPU5f1w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3596 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Move these duplicated predefined macros to the header file so that it can be re-used in other places. Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/lapic.c | 13 +++++-------- arch/x86/kvm/lapic.h | 1 + 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index 6453273..32967dc7 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -56,9 +56,6 @@ #define APIC_VERSION (0x14UL | ((KVM_APIC_LVT_NUM - 1) << 16)) #define LAPIC_MMIO_LENGTH (1 << 12) /* followed define is not in apicdef.h */ -#define APIC_SHORT_MASK 0xc0000 -#define APIC_DEST_NOSHORT 0x0 -#define APIC_DEST_MASK 0x800 #define MAX_APIC_VECTOR 256 #define APIC_VECTORS_PER_REG 32 @@ -570,9 +567,9 @@ int kvm_pv_send_ipi(struct kvm *kvm, unsigned long ipi_bitmap_low, irq.level = (icr & APIC_INT_ASSERT) != 0; irq.trig_mode = icr & APIC_INT_LEVELTRIG; - if (icr & APIC_DEST_MASK) + if (icr & KVM_APIC_DEST_MASK) return -KVM_EINVAL; - if (icr & APIC_SHORT_MASK) + if (icr & KVM_APIC_SHORT_MASK) return -KVM_EINVAL; rcu_read_lock(); @@ -803,7 +800,7 @@ bool kvm_apic_match_dest(struct kvm_vcpu *vcpu, struct kvm_lapic *source, ASSERT(target); switch (short_hand) { - case APIC_DEST_NOSHORT: + case KVM_APIC_DEST_NOSHORT: if (dest_mode == APIC_DEST_PHYSICAL) return kvm_apic_match_physical_addr(target, mda); else @@ -1201,10 +1198,10 @@ static void apic_send_ipi(struct kvm_lapic *apic) irq.vector = icr_low & APIC_VECTOR_MASK; irq.delivery_mode = icr_low & APIC_MODE_MASK; - irq.dest_mode = icr_low & APIC_DEST_MASK; + irq.dest_mode = icr_low & KVM_APIC_DEST_MASK; irq.level = (icr_low & APIC_INT_ASSERT) != 0; irq.trig_mode = icr_low & APIC_INT_LEVELTRIG; - irq.shorthand = icr_low & APIC_SHORT_MASK; + irq.shorthand = icr_low & KVM_APIC_SHORT_MASK; irq.msi_redir_hint = false; if (apic_x2apic_mode(apic)) irq.dest_id = icr_high; diff --git a/arch/x86/kvm/lapic.h b/arch/x86/kvm/lapic.h index 36a5271..ba13c98e 100644 --- a/arch/x86/kvm/lapic.h +++ b/arch/x86/kvm/lapic.h @@ -10,6 +10,7 @@ #define KVM_APIC_SIPI 1 #define KVM_APIC_LVT_NUM 6 +#define KVM_APIC_DEST_NOSHORT 0x0 #define KVM_APIC_SHORT_MASK 0xc0000 #define KVM_APIC_DEST_MASK 0x800 From patchwork Fri Sep 13 19:01:09 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11145125 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 44FAF17E6 for ; Fri, 13 Sep 2019 19:01:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0FCB020CC7 for ; Fri, 13 Sep 2019 19:01:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="E8dAmhiT" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389124AbfIMTBR (ORCPT ); Fri, 13 Sep 2019 15:01:17 -0400 Received: from mail-eopbgr710060.outbound.protection.outlook.com ([40.107.71.60]:62364 "EHLO NAM05-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388220AbfIMTBP (ORCPT ); Fri, 13 Sep 2019 15:01:15 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d3JHlKiCDIbOSb/EwuY4+LjbN5NIMDs+PU5NsOH8XkIv5MWfW4c7rvKP4j0eB094+XETUh3o2bUpRTQg6PgwNYK7ENW722hS88Rf1/Y382Ro/fk+IYhvzMy3kgClUfUH7b18Rh+0HazovMx2fFqzJqDo8fiEwB3MR3ymO2ZAYRNX1eYA+Np3Wvzh9hxv5VDRZ7ujSZuI4KvnCsHbSqfaNNE3vVV7xs5RrE3LkUmm1tXac2JeD2U8WlhtsCmE/88lAi/9Uqtt9JJm19HSjPRYG7Ho0tba9R61pkd5kJZmco/F+FoR7X4Hn5I3TW7FQYOB+2Zdyy1SGe7abwQTZfstLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=arfgzgyqC0J1QQ6ohwfz7F3JdvsDqPD8+8QUqeUf128=; b=WrJYGR7EGODtb7DfafF6cr9r9oPI6fD7J9S2+2j7wvWanx2aFAhmJCVjEUwxlYLbxBqoZbdnNdP2YocZsqBDJpJCHiQnat0m9OBwnQGudh/LEMlu9vGhHDLMuaJ4SrqSYp8ZIekSNzvOBS+5L4w5CKEQgTGp03PyRLBpy6mcwJsIS/WpCE8jh0A5GbXzeXvghUQmID2MUpHv1mAR7s2hkR4sSlmdlLOyR0e5FZumzJhbYgNWvW42xzWP5V144mRbFtjzCZZLHsLxsEo6Obtw8kPDiUEa0uL6yZvLhMWXJV6VV61WRHqwBkEhwjBLiTggxmcrRo1UaAH/NrSP/VV49A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=arfgzgyqC0J1QQ6ohwfz7F3JdvsDqPD8+8QUqeUf128=; b=E8dAmhiTB3/CW+hyh5XzEAWrdFGR4q+L4LdVRKWLeTZ0pD/C+84ju6jAeA/EojNnIzOuiIeKifUKOiM1eGf0GNxadPAy147P/AOqsKNMMg+SF2RHwWTTqpk0q0HMfz03KCyL2Fmw0kdGt9/3svqqw6dr57jAK3rmOOdS7sB7/mA= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3596.namprd12.prod.outlook.com (20.178.199.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.18; Fri, 13 Sep 2019 19:01:09 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997%3]) with mapi id 15.20.2241.022; Fri, 13 Sep 2019 19:01:09 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" CC: "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "joro@8bytes.org" , "vkuznets@redhat.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v3 14/16] kvm: ioapic: Refactor kvm_ioapic_update_eoi() Thread-Topic: [PATCH v3 14/16] kvm: ioapic: Refactor kvm_ioapic_update_eoi() Thread-Index: AQHVamWa/amPLZfiXUew6Og+woQR3A== Date: Fri, 13 Sep 2019 19:01:09 +0000 Message-ID: <1568401242-260374-15-git-send-email-suravee.suthikulpanit@amd.com> References: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [165.204.78.1] x-clientproxiedby: SN6PR08CA0021.namprd08.prod.outlook.com (2603:10b6:805:66::34) 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 1.8.3.1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f8226993-3505-480a-b9e9-08d7387cbc8c x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:DM6PR12MB3596; x-ms-traffictypediagnostic: DM6PR12MB3596: x-ld-processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4303; x-forefront-prvs: 0159AC2B97 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(39860400002)(136003)(346002)(396003)(366004)(376002)(189003)(199004)(66066001)(7416002)(3846002)(6116002)(81156014)(186003)(8676002)(81166006)(54906003)(6436002)(52116002)(110136005)(316002)(76176011)(53936002)(5660300002)(71200400001)(71190400001)(6506007)(386003)(102836004)(6512007)(486006)(26005)(66946007)(8936002)(66476007)(66556008)(64756008)(66446008)(4720700003)(2906002)(99286004)(50226002)(6486002)(446003)(256004)(14444005)(25786009)(305945005)(478600001)(11346002)(36756003)(476003)(7736002)(14454004)(4326008)(2616005)(2501003)(86362001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3596;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: SNcfRJ8bjbMasTHcY67CdU1ZIEMIqHC5e5cDLJ8EYHNKGYC1WPMQeD5gg2+C+fEtqOiBfjOMlZNef8+57KemMFoWoGWzsVt2uAzDitZG9gMODkIuU/5mnJfqv1P8ZEaDv7ItNIlphQkK2bz/mSz0/3qx1vCFBFB++nncWyUpTMuMFLkonl837ZKU8sokihcdSgcE46Bc9Av94tWx2islX0b5izh4hEv8DYMLqym/iYeoimge9J7vCPiCGfG0vvblJ9iyejSVgAjTme5Odo6LsTnmNNlxIA1dWluZZmjlAylmrIsOL7cDFHTUWglchR+80iRfAPjhEuPl3P+w/aCzxxPzTKoFJ9OJbvA/O5eHBoPQlrNlvzqSg2wZ+BTQyfKqUMiTa/wI6JMDl26fAgshbJNlLu2tVgEwo9sq0KI85kM= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: f8226993-3505-480a-b9e9-08d7387cbc8c X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Sep 2019 19:01:09.0701 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Y2FTtIzVCr64gSKpMXVddSxIToF7t2PIVh1FyhdgtqEGNHm3PFCWrTA3pDUgfdqL0ljlMr/MwgS28V1+11lwOQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3596 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Refactor code for handling IOAPIC EOI for subsequent patch. There is no functional change. Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/ioapic.c | 110 +++++++++++++++++++++++++------------------------- 1 file changed, 56 insertions(+), 54 deletions(-) diff --git a/arch/x86/kvm/ioapic.c b/arch/x86/kvm/ioapic.c index d859ae8..c57b7bb 100644 --- a/arch/x86/kvm/ioapic.c +++ b/arch/x86/kvm/ioapic.c @@ -151,10 +151,16 @@ static void kvm_rtc_eoi_tracking_restore_all(struct kvm_ioapic *ioapic) __rtc_irq_eoi_tracking_restore_one(vcpu); } -static void rtc_irq_eoi(struct kvm_ioapic *ioapic, struct kvm_vcpu *vcpu) +static void rtc_irq_eoi(struct kvm_ioapic *ioapic, struct kvm_vcpu *vcpu, + int vector) { - if (test_and_clear_bit(vcpu->vcpu_id, - ioapic->rtc_status.dest_map.map)) { + struct dest_map *dest_map = &ioapic->rtc_status.dest_map; + + /* RTC special handling */ + if (test_bit(vcpu->vcpu_id, dest_map->map) && + (vector == dest_map->vectors[vcpu->vcpu_id]) && + (test_and_clear_bit(vcpu->vcpu_id, + ioapic->rtc_status.dest_map.map))) { --ioapic->rtc_status.pending_eoi; rtc_status_pending_eoi_check_valid(ioapic); } @@ -415,72 +421,68 @@ static void kvm_ioapic_eoi_inject_work(struct work_struct *work) } #define IOAPIC_SUCCESSIVE_IRQ_MAX_COUNT 10000 - -static void __kvm_ioapic_update_eoi(struct kvm_vcpu *vcpu, - struct kvm_ioapic *ioapic, int vector, int trigger_mode) +static void kvm_ioapic_update_eoi_one(struct kvm_vcpu *vcpu, + struct kvm_ioapic *ioapic, + int trigger_mode, + int pin) { - struct dest_map *dest_map = &ioapic->rtc_status.dest_map; struct kvm_lapic *apic = vcpu->arch.apic; - int i; - - /* RTC special handling */ - if (test_bit(vcpu->vcpu_id, dest_map->map) && - vector == dest_map->vectors[vcpu->vcpu_id]) - rtc_irq_eoi(ioapic, vcpu); - - for (i = 0; i < IOAPIC_NUM_PINS; i++) { - union kvm_ioapic_redirect_entry *ent = &ioapic->redirtbl[i]; - - if (ent->fields.vector != vector) - continue; + union kvm_ioapic_redirect_entry *ent = &ioapic->redirtbl[pin]; - /* - * We are dropping lock while calling ack notifiers because ack - * notifier callbacks for assigned devices call into IOAPIC - * recursively. Since remote_irr is cleared only after call - * to notifiers if the same vector will be delivered while lock - * is dropped it will be put into irr and will be delivered - * after ack notifier returns. - */ - spin_unlock(&ioapic->lock); - kvm_notify_acked_irq(ioapic->kvm, KVM_IRQCHIP_IOAPIC, i); - spin_lock(&ioapic->lock); + /* + * We are dropping lock while calling ack notifiers because ack + * notifier callbacks for assigned devices call into IOAPIC + * recursively. Since remote_irr is cleared only after call + * to notifiers if the same vector will be delivered while lock + * is dropped it will be put into irr and will be delivered + * after ack notifier returns. + */ + spin_unlock(&ioapic->lock); + kvm_notify_acked_irq(ioapic->kvm, KVM_IRQCHIP_IOAPIC, pin); + spin_lock(&ioapic->lock); - if (trigger_mode != IOAPIC_LEVEL_TRIG || - kvm_lapic_get_reg(apic, APIC_SPIV) & APIC_SPIV_DIRECTED_EOI) - continue; + if (trigger_mode != IOAPIC_LEVEL_TRIG || + kvm_lapic_get_reg(apic, APIC_SPIV) & APIC_SPIV_DIRECTED_EOI) + return; - ASSERT(ent->fields.trig_mode == IOAPIC_LEVEL_TRIG); - ent->fields.remote_irr = 0; - if (!ent->fields.mask && (ioapic->irr & (1 << i))) { - ++ioapic->irq_eoi[i]; - if (ioapic->irq_eoi[i] == IOAPIC_SUCCESSIVE_IRQ_MAX_COUNT) { - /* - * Real hardware does not deliver the interrupt - * immediately during eoi broadcast, and this - * lets a buggy guest make slow progress - * even if it does not correctly handle a - * level-triggered interrupt. Emulate this - * behavior if we detect an interrupt storm. - */ - schedule_delayed_work(&ioapic->eoi_inject, HZ / 100); - ioapic->irq_eoi[i] = 0; - trace_kvm_ioapic_delayed_eoi_inj(ent->bits); - } else { - ioapic_service(ioapic, i, false); - } + ASSERT(ent->fields.trig_mode == IOAPIC_LEVEL_TRIG); + ent->fields.remote_irr = 0; + if (!ent->fields.mask && (ioapic->irr & (1 << pin))) { + ++ioapic->irq_eoi[pin]; + if (ioapic->irq_eoi[pin] == IOAPIC_SUCCESSIVE_IRQ_MAX_COUNT) { + /* + * Real hardware does not deliver the interrupt + * immediately during eoi broadcast, and this + * lets a buggy guest make slow progress + * even if it does not correctly handle a + * level-triggered interrupt. Emulate this + * behavior if we detect an interrupt storm. + */ + schedule_delayed_work(&ioapic->eoi_inject, HZ / 100); + ioapic->irq_eoi[pin] = 0; + trace_kvm_ioapic_delayed_eoi_inj(ent->bits); } else { - ioapic->irq_eoi[i] = 0; + ioapic_service(ioapic, pin, false); } + } else { + ioapic->irq_eoi[pin] = 0; } } void kvm_ioapic_update_eoi(struct kvm_vcpu *vcpu, int vector, int trigger_mode) { + int i; struct kvm_ioapic *ioapic = vcpu->kvm->arch.vioapic; spin_lock(&ioapic->lock); - __kvm_ioapic_update_eoi(vcpu, ioapic, vector, trigger_mode); + rtc_irq_eoi(ioapic, vcpu, vector); + for (i = 0; i < IOAPIC_NUM_PINS; i++) { + union kvm_ioapic_redirect_entry *ent = &ioapic->redirtbl[i]; + + if (ent->fields.vector != vector) + continue; + kvm_ioapic_update_eoi_one(vcpu, ioapic, trigger_mode, i); + } spin_unlock(&ioapic->lock); } From patchwork Fri Sep 13 19:01:10 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11145121 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 06A0614DB for ; Fri, 13 Sep 2019 19:01:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D01BC2084F for ; Fri, 13 Sep 2019 19:01:20 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="1RNQtAT7" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389257AbfIMTBU (ORCPT ); Fri, 13 Sep 2019 15:01:20 -0400 Received: from mail-eopbgr710060.outbound.protection.outlook.com ([40.107.71.60]:62364 "EHLO NAM05-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2389089AbfIMTBR (ORCPT ); Fri, 13 Sep 2019 15:01:17 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QgdSyabQwm2zxztn166zmarh/85Qeg4QppYSXl709y3rOhxrGX6ImVfESdYE3IQzrfY2YN/dTG2etpzP8mcf6rJhHUH+8YnOKbssSIdDP3TsKH7Ym942WUwLi+2RlYcZd+BHld/c2BpXD+a9f2lrtp1+OIdoc6CfR6iF6xB64lsy4wyK3rL9tSjUdgFpyasDmP1ybKV51tA5dS1zj/SjEWrMQ8V6XLtW6KuX7j2XolclVXuNQAg/26LPF2WaPhOUbcEUAUJg15nsTe+6bx1hC/K2mYpku2lt9/4ZiQer9XuA59PkeqbfCj/yWVAdnOZX8ADwAFWIuEvUM4zxHWnIGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tuKNZbehYcgZ+2EFkEll7gSdo1jNkrY7AGWJsaJdx3I=; b=dVkePde4Jx8qxT0PIo4nqfG6d/+unNKpJs69fQXTXTNnPAvNTVJdWkoYZIjSfHAx6r6JrdyWvdFvurjrFdljW7rwCk5DmwgxDBrERGkCfr3dP2aVh1AFHSdOX3lGJAwa5kwaCW5goQ8FHFwrAj9sB2Q9heIY/JZepvWgfAGvKn2QUvEMBGvTMDFvFQAmThXicIyuhYKmTVlfs4u0zU/Yk3ox5wc8Rd8JKjJDwZflWemK2tHxo0x5fho9LCUQQ9JHQHI/BDdV0BfRgWZlwPRA5rboIAronzk4MlsbFIApEDn48PnXzxXARYj/ormvWfZNdDHoma1Sg7IgqHS+Lp4rgg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tuKNZbehYcgZ+2EFkEll7gSdo1jNkrY7AGWJsaJdx3I=; b=1RNQtAT7WaiKErxLPOC0siKvzTNPzHuV9hJk/h6d+gSW+IeDK+ZL7r1MTHpieJi4AtIEdHcDITbrVJZMFi4OO4KPDI87eicZWS5nETXq8OWHmeYzk1w6XlKfga18IaOCUSKoOfAZS5+j9EIBxmXEFErXaW0RdHXApV/9lli+5Cs= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3596.namprd12.prod.outlook.com (20.178.199.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.18; Fri, 13 Sep 2019 19:01:10 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997%3]) with mapi id 15.20.2241.022; Fri, 13 Sep 2019 19:01:10 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" CC: "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "joro@8bytes.org" , "vkuznets@redhat.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v3 15/16] kvm: x86: ioapic: Lazy update IOAPIC EOI Thread-Topic: [PATCH v3 15/16] kvm: x86: ioapic: Lazy update IOAPIC EOI Thread-Index: AQHVamWbRD5vJtxZB0KDkUxSQlG/TA== Date: Fri, 13 Sep 2019 19:01:10 +0000 Message-ID: <1568401242-260374-16-git-send-email-suravee.suthikulpanit@amd.com> References: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [165.204.78.1] x-clientproxiedby: SN6PR08CA0021.namprd08.prod.outlook.com (2603:10b6:805:66::34) 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 1.8.3.1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0cc446e7-26ec-40b6-c3f9-08d7387cbd73 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:DM6PR12MB3596; x-ms-traffictypediagnostic: DM6PR12MB3596: x-ld-processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-forefront-prvs: 0159AC2B97 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(39860400002)(136003)(346002)(396003)(366004)(376002)(189003)(199004)(66066001)(7416002)(3846002)(6116002)(81156014)(186003)(8676002)(81166006)(54906003)(6436002)(52116002)(110136005)(316002)(76176011)(53936002)(5660300002)(71200400001)(71190400001)(6506007)(386003)(102836004)(6512007)(486006)(26005)(66946007)(8936002)(66476007)(15650500001)(66556008)(64756008)(66446008)(4720700003)(2906002)(99286004)(50226002)(6486002)(446003)(256004)(14444005)(25786009)(305945005)(478600001)(11346002)(36756003)(476003)(7736002)(14454004)(4326008)(2616005)(2501003)(86362001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3596;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: OL7pr9t/DcR54DW9ON+V6BCHSQev6PXIKiyd/ZGyXqtAIoXhTZV3a3rdApmeAZLjrZPjJVb2cIi+VrNsp2aOELURhsltVKgzLsbJpyV1QKdfiePWJ+W9KN065k66tszdlrP6ZACS2xIHEi7xl8eqso4iGooDKhpf4jpXB0FptvW/lyzh2F4eNn17FFzMf22eB51C2CNnyQRkxiiGY7pktZUfiF0uAP7bd1EYr/Ah/B0wGyTAGkcVfs0/aO3KHoc+Hr6A4IVtoQ0DzNpcXVIfGVI3Ucowk5dnON/u8WcRZJGDQXrIAOwqtFu/516A+KUTWFEPLqeZdosahTXClYvUz7FwkXKxMEjPtVpEG7NaoemGfKPLMX65aTDPSl/2VDnVdUDsHkerG1yR8r5LFmlh0xifFRlShh2aWViAdDjrAfE= MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0cc446e7-26ec-40b6-c3f9-08d7387cbd73 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Sep 2019 19:01:10.4933 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: iwyEXL7/9J7hGhUEod08FnbEzRm9KKI5CbDKTIVm/MvcZQ9yJnGFVfibnGAnyEOiP3jSDFaSI9tdDJXmaRIVWA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3596 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org In-kernel IOAPIC does not receive EOI with AMD SVM AVIC since the processor accelerate write to APIC EOI register and does not trap if the interrupt is edge-triggered. Workaround this by lazy check for pending APIC EOI at the time when setting new IOPIC irq, and update IOAPIC EOI if no pending APIC EOI. Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/ioapic.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/arch/x86/kvm/ioapic.c b/arch/x86/kvm/ioapic.c index c57b7bb..ddb41ee 100644 --- a/arch/x86/kvm/ioapic.c +++ b/arch/x86/kvm/ioapic.c @@ -48,6 +48,11 @@ static int ioapic_service(struct kvm_ioapic *vioapic, int irq, bool line_status); +static void kvm_ioapic_update_eoi_one(struct kvm_vcpu *vcpu, + struct kvm_ioapic *ioapic, + int trigger_mode, + int pin); + static unsigned long ioapic_read_indirect(struct kvm_ioapic *ioapic, unsigned long addr, unsigned long length) @@ -174,6 +179,31 @@ static bool rtc_irq_check_coalesced(struct kvm_ioapic *ioapic) return false; } +static void ioapic_lazy_update_eoi(struct kvm_ioapic *ioapic, int irq) +{ + int i; + struct kvm_vcpu *vcpu; + union kvm_ioapic_redirect_entry *entry = &ioapic->redirtbl[irq]; + + kvm_for_each_vcpu(i, vcpu, ioapic->kvm) { + if (!kvm_apic_match_dest(vcpu, NULL, KVM_APIC_DEST_NOSHORT, + entry->fields.dest_id, + entry->fields.dest_mode) || + kvm_apic_pending_eoi(vcpu, entry->fields.vector)) + continue; + + /* + * If no longer has pending EOI in LAPICs, update + * EOI for this vetor. + */ + rtc_irq_eoi(ioapic, vcpu, entry->fields.vector); + kvm_ioapic_update_eoi_one(vcpu, ioapic, + entry->fields.trig_mode, + irq); + break; + } +} + static int ioapic_set_irq(struct kvm_ioapic *ioapic, unsigned int irq, int irq_level, bool line_status) { @@ -192,6 +222,15 @@ static int ioapic_set_irq(struct kvm_ioapic *ioapic, unsigned int irq, } /* + * In case APICv accelerate EOI write and do not trap, + * in-kernel IOAPIC will not be able to receive the EOI. + * In this case, we do lazy update of the pending EOI when + * trying to set IOAPIC irq. + */ + if (kvm_apicv_eoi_accelerate(ioapic->kvm, edge)) + ioapic_lazy_update_eoi(ioapic, irq); + + /* * Return 0 for coalesced interrupts; for edge-triggered interrupts, * this only happens if a previous edge has not been delivered due * do masking. For level interrupts, the remote_irr field tells From patchwork Fri Sep 13 19:01:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11145123 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9C64717E6 for ; Fri, 13 Sep 2019 19:01:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 6DB4D2084F for ; Fri, 13 Sep 2019 19:01:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="bjTlNzUM" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389217AbfIMTBT (ORCPT ); Fri, 13 Sep 2019 15:01:19 -0400 Received: from mail-eopbgr710060.outbound.protection.outlook.com ([40.107.71.60]:62364 "EHLO NAM05-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2389163AbfIMTBS (ORCPT ); Fri, 13 Sep 2019 15:01:18 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OEUdDPsewtL9YI47FhOYWf9m2RKSP6oqYsKVCCzrd69LVmqimwFK41KCS7ZDx6D2d7VIfxKDs+Z5xv1E458jrbXUY1LH3k7RDE/TFMsksiYeZx0FnEL8jx2LiDwOMupIhAaLaO4Z746LPS16R54t49ZR/EUDuwOkYle6OEoIMdOliKuKoaDylkvAEH8wQvTtUFu0OcfU93eBuyJZbJElTWk8zE3Emtm2IneUrk1eq/MwYo9CUT5RgJaF4xE2SnrFwFAH4ZWOJPOCjjf8OHXCSjACo045OdTvjB91qO28JJ8ltHHj/XH+uVXY+JHu4x7VPauNvw4BL1ROofZL8udYlw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jJPIwFhdWsP3d/i29F4g9Mxq2BKGJCh2LO/dIM8UVT0=; b=mWFbZ4l5oK+3YvOdrJ8MkH3cjfbnHcfwiVbfBUgGNnXxGN7CgpGMZSOGonz3iGOtU85BlKLSouMvRXZua3FPxqxXNf8tX7frzA8g5Le5eMzabh5JDMz4LCuV2jYfV7e8GrpEX0YfYuYZua0yGRk2x8vPjLxvrz7Zt1tyCfluXqzc4Ub8mwSDZYBupsmzp92ntTdtsHCRhX8bG0EKBbdjW8Ebupp9j1+GUsQ65IlfhyK1i/JFnD7WaE8/XsINqE5o1tbztn0lf1F2CEcxcSvJT/WNAtAw+1Au8CeN+Yhn5MzfPQRmRhLyL8MDH+RKedtUiShMiF8f1cU4ketf8Wgypg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jJPIwFhdWsP3d/i29F4g9Mxq2BKGJCh2LO/dIM8UVT0=; b=bjTlNzUMGcdzxHKema6J0VV54NctgJx/UCET27/Ko2cUBlbq1TiF0cP7ZnTQF37yJkQt4xNVMRotHWDM53KinNyOCBdxj/z2yIBXsfx9GvPE76MQzrRR1RZhMBVNjvZoHkrRt982IodNlfXrbbgJf9sPJXVxt6eNC2b0Js7btQE= Received: from DM6PR12MB2844.namprd12.prod.outlook.com (20.176.117.96) by DM6PR12MB3596.namprd12.prod.outlook.com (20.178.199.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.18; Fri, 13 Sep 2019 19:01:11 +0000 Received: from DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997]) by DM6PR12MB2844.namprd12.prod.outlook.com ([fe80::201f:ac0f:4576:e997%3]) with mapi id 15.20.2241.022; Fri, 13 Sep 2019 19:01:11 +0000 From: "Suthikulpanit, Suravee" To: "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" CC: "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "joro@8bytes.org" , "vkuznets@redhat.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v3 16/16] svm: Allow AVIC with in-kernel irqchip mode Thread-Topic: [PATCH v3 16/16] svm: Allow AVIC with in-kernel irqchip mode Thread-Index: AQHVamWbPsANoSEXBkO4BBRG/d09aQ== Date: Fri, 13 Sep 2019 19:01:11 +0000 Message-ID: <1568401242-260374-17-git-send-email-suravee.suthikulpanit@amd.com> References: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1568401242-260374-1-git-send-email-suravee.suthikulpanit@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [165.204.78.1] x-clientproxiedby: SN6PR08CA0021.namprd08.prod.outlook.com (2603:10b6:805:66::34) 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 1.8.3.1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a68276d7-4167-4078-c277-08d7387cbe45 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:DM6PR12MB3596; x-ms-traffictypediagnostic: DM6PR12MB3596: x-ld-processed: 3dd8961f-e488-4e60-8e11-a82d994e183d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4125; x-forefront-prvs: 0159AC2B97 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(39860400002)(136003)(346002)(396003)(366004)(376002)(189003)(199004)(66066001)(7416002)(3846002)(6116002)(81156014)(186003)(8676002)(81166006)(54906003)(6436002)(52116002)(110136005)(316002)(4744005)(76176011)(53936002)(5660300002)(71200400001)(71190400001)(6506007)(386003)(102836004)(6512007)(486006)(26005)(66946007)(66574012)(8936002)(66476007)(66556008)(64756008)(66446008)(4720700003)(2906002)(99286004)(50226002)(6486002)(446003)(256004)(14444005)(25786009)(305945005)(478600001)(11346002)(36756003)(476003)(7736002)(14454004)(4326008)(2616005)(2501003)(86362001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3596;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: bvg4JvStfWszZEDVEY2XxQNku6xswA22F3bW+Y/C7ccKAICDSA3r9kJvGhPp0B1xd5JZ+9Emo3hK1lX9S5VKkqrzV1E2cA3KoXJy8SYwzEYzHIDNQKKSGmP0FGbLyRjaxtuFKbl+3BGnGd6nc3jqArcU0UdrSquDO2jZ/2wrBVaElJjda/18gK9av2d77vmlEVn5iTftHSrIO27f/6rb5p3U6Sg61roDAOCDTACNEJY7wU/g9i5E0782r9En7/1Qtufp6twDRu+ZA7QFYdzDMEpCNuWjuYNCNGqUne/hHV2HmidprcGqO2bWYiOlGbJuDAPH/zV1BQ9qvYuJgPPo0W7tZGae5MXfEzvv2xK1G7lbRW8J7St+PeaRe/x2qlry6yoBeR9OhMmFmyNfwiPPAkD8MVaAWmMwE+O61p/3lco= Content-ID: MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: a68276d7-4167-4078-c277-08d7387cbe45 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Sep 2019 19:01:11.7696 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: bO7gNvsJuA9Z5QL2gpClDA4KdcxFTCJq57+ExBua3A7n9j+Tlc0Lagp9au0Tk/Imk4VVv5cIyr8m7t/KmSaCiw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3596 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Once run-time AVIC activate/deactivate is supported, and EOI workaround for AVIC is implemented, 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 457ffe1..4c649c0 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -5203,7 +5203,7 @@ static void svm_set_virtual_apic_mode(struct kvm_vcpu *vcpu) static bool svm_get_enable_apicv(struct kvm *kvm) { - return avic && irqchip_split(kvm); + return avic; } static void svm_hwapic_irr_update(struct kvm_vcpu *vcpu, int max_irr)