From patchwork Fri Nov 1 22:41:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11223867 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 8C5511599 for ; Fri, 1 Nov 2019 22:41:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5528B20679 for ; Fri, 1 Nov 2019 22:41:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="I74xxNIE" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727927AbfKAWl3 (ORCPT ); Fri, 1 Nov 2019 18:41:29 -0400 Received: from mail-eopbgr720065.outbound.protection.outlook.com ([40.107.72.65]:49770 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727029AbfKAWl2 (ORCPT ); Fri, 1 Nov 2019 18:41:28 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nbVvEhhjrezlI6sSz3db6FVyFEbBHT5My9nCJxZQzkNwS2fJ/I2AzxjhuR+6sWx/2ztISINlzumhZM7KP0V0oeqOkGD5gZDEutnY+hu2ZEv/E51+7+ZQHV0SlYlJOEVJbrDi92E3VsLcKTe043bGD43xfpqPTZM4ioAxFfEUH80B4junN66MpcrHyMZnOCWYef/lUXWB0HE6gWowOR2R6DYtwgr+KHxPT7wi1PdQiQ6N2aHJJp+fwEBLsFJlAmmMAZ+mpZZGe91jzoZcGm2xDjfqUGX+ifgQqPNywdLQyU87WvvJlUaI7sNpTayfpFyJ5HqKufv4AsaiBCKnU5O5JA== 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=F6N0JskZtNUJMa6TuW0hyyf3+VOA2N6fT5GUN4+kOBE=; b=K+oqbqQlYP+VjgcLN+U1FfxhT2v2hihij3jwvpvofYOrRzpN2jFRKqRNLdgBBDtZljdckHLA+6AAI+J5gIW/UBDWOCK49TlDmugZmioFnE63CHSJm32wSg06lVstkqDGtgqiH5Woh1GtOCeduMypEXQS1n12G0Nqxn27wboXMoImYvl+n/dUlAPLvnjJETfQ65cVnE/X1HFnRO1CqhuUxF6VJWVGFO7F9T0HKsI8k/dChEyvo0a/DfdkJb5QEPZ5gX/J60i1yntLCt8RGuPboy+yEcZo3cUF8ChUBgYyg/eW2Ow2/5BQGOS5LHwIN8i6xnLvKjdO6cpDTUcwkexRQQ== 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=F6N0JskZtNUJMa6TuW0hyyf3+VOA2N6fT5GUN4+kOBE=; b=I74xxNIEEOly4inkGdVEGTza0X7bsXc5Ejd1e0Za83434pS8npifkvGb9UVSqFj6mTYxbpe4EdxIDKEH0z+ooCNfg+1jOIcrxpjss2A5wdd7aYD/wQtN7J17AYHbe69QqgDaaJOd2agvvgcwUNlJIPAPbu1sa81pvV+2toLvhR8= Received: from DM6PR12MB3865.namprd12.prod.outlook.com (10.255.173.210) by DM6PR12MB3243.namprd12.prod.outlook.com (20.179.105.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 22:41:23 +0000 Received: from DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862]) by DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862%6]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 22:41:23 +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" , "rkagan@virtuozzo.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v4 01/17] kvm: x86: Modify kvm_x86_ops.get_enable_apicv() to use struct kvm parameter Thread-Topic: [PATCH v4 01/17] kvm: x86: Modify kvm_x86_ops.get_enable_apicv() to use struct kvm parameter Thread-Index: AQHVkQV8uR2S90+F3EeDF1s2iEmZGA== Date: Fri, 1 Nov 2019 22:41:23 +0000 Message-ID: <1572648072-84536-2-git-send-email-suravee.suthikulpanit@amd.com> References: <1572648072-84536-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1572648072-84536-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: SN1PR12CA0047.namprd12.prod.outlook.com (2603:10b6:802:20::18) To DM6PR12MB3865.namprd12.prod.outlook.com (2603:10b6:5:1c8::18) 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-ht: Tenant x-ms-office365-filtering-correlation-id: 44c4422f-ae47-49aa-62a9-08d75f1c9f4e x-ms-traffictypediagnostic: DM6PR12MB3243: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2582; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(396003)(346002)(366004)(376002)(39860400002)(136003)(199004)(189003)(66476007)(66446008)(26005)(6506007)(386003)(86362001)(5660300002)(102836004)(4720700003)(305945005)(7736002)(7416002)(76176011)(256004)(14444005)(8936002)(8676002)(186003)(52116002)(6486002)(478600001)(50226002)(71200400001)(71190400001)(81166006)(6436002)(476003)(2906002)(3846002)(6116002)(6512007)(99286004)(4326008)(2616005)(316002)(11346002)(446003)(486006)(81156014)(14454004)(66946007)(36756003)(110136005)(54906003)(66066001)(64756008)(66556008)(25786009)(2501003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3243;H:DM6PR12MB3865.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: zAip+o0CvfvK/NJiEU2qWbCh2QXoJHyC3ukEZdiNGBz+3DWxSrC7Bz6aOAcJFiXEtbJk3U+llt0HNvB97V6srKaoTrzSMSD8TnPJMh8jYznKWUyiDMVQ8YKb7AmGfodqh6gkok8gKWbLtoPrIwbBRDa6M84HAowJ2jKGQbSzTBH++QvAprsISacs6X3DL3V4+Po31s1M+PgBBeRHkIv6TJr9QVDO22iWlrScvfdSxRILw6CxObk424mWT+WD+b2lxpC3xBNVUFAGi/wUGngM/fyhhI8P7zn2bpIqTUAZk2pFEEPfDl+V+TJpU0nHAio15cUEsfEYZyijZCQHNN5JDqIi9ZwfanOSb8ox0KF1UMHgpLGVFL2cMt65EtNzjTuw44FlpWpGPPeVlzbTB62i0l5yhBAz0gM5y3xSC4pSp54cAZ/99Nn9DlLACMDWovTz MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 44c4422f-ae47-49aa-62a9-08d75f1c9f4e X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 22:41:23.4251 (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: 6VH6GvSJXHxtOGfYZkZbktVyl5x31W4Dg5ILqXht9AG6BsMWlz/VvBea52oUh/u6dZLTjOlXBVBi9UA98isG4w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3243 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 bdc16b0..843799b 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -1088,7 +1088,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 e036807..7090306 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -5143,9 +5143,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 c030c96..e4faa00 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 91602d3..2341f48 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -9217,7 +9217,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 Nov 1 22:41:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11223899 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 EFF231599 for ; Fri, 1 Nov 2019 22:42:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C33D820679 for ; Fri, 1 Nov 2019 22:42:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="OVhxX7Yh" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727984AbfKAWlb (ORCPT ); Fri, 1 Nov 2019 18:41:31 -0400 Received: from mail-eopbgr720065.outbound.protection.outlook.com ([40.107.72.65]:49770 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727880AbfKAWlb (ORCPT ); Fri, 1 Nov 2019 18:41:31 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c3DuYB+a7TzXU0JpHmcDHqM6x+PKsgKEjgLULDwpgfscCBfarq6ASh4/H7M+brBuiWLOyye71H+YDSttDW2GFikRfnrLSuOHbrASadnLjqiT8fAiBUPGoxQ6gWTD11sMJ47D7VuukGsDhGpcCCLeNOZ+oop9Ys6IvXib3LSVsQBYk9cdUhrKuixfyhM9XjMO82coDiR2ztxkH2stT030B4aMUDrg8td27PSYblzw5JxILnT5SY+vUTo+bCktRgirl8eRhMDwQWimRo/HKjvPEHUKt5ayoqxUouiC+KxflcHWkWLmBkkBD0/TfnWa8g5l8bGwpmLd7wvcFfwg70V9XA== 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=PaotGr/Gt9M6gz9hLrxFQV06cpBPN0IPCvF4Pqz/uvc=; b=F24uJaR5nJg8csWNppRJn9Ws9Gp8BTS02GVh2xqSrSiYtmr89VyZpjpMlsJvFJlb+Q38cYwRsXgtXimnKfU2tbNN7rxi08F+1CZUGBX7PTYoQpgADQ9lXHuBZcoLE56JleuNJ60o40XqZ+RkEGsOa+gOJLToBhnH5YHmfQudFyGFvNJh7X4/lJi/ojFpfLFwh0atNPANb42EC+0kqJAsTVr98cr8wSj/XQiPy5EErQ4XOvNjFoyjaCYyEZXOmc4fUCc6LLD/e6kQ14StvoRjhsUdIka4dcaT5a6pfO9Id+Nwh1o01FYBZeg6NZEj5vpwBBHBMhd5YO1McxSkcXtajA== 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=PaotGr/Gt9M6gz9hLrxFQV06cpBPN0IPCvF4Pqz/uvc=; b=OVhxX7YhJyYZ5WAOlvVzIznovq/bKm+wNj+VvOwBPawGC+IAkmIS/zWB2c4JatEG4dFCKJTxAoFZzvMbn/P85sZSdo5UQYE7UISpD0QbPBqDaWSMqaIfrv3W2kUaCe49jmMcl96O/DOUU+R4v4EZJ5wGdDBljlrZGhfL9ucCbvA= Received: from DM6PR12MB3865.namprd12.prod.outlook.com (10.255.173.210) by DM6PR12MB3243.namprd12.prod.outlook.com (20.179.105.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 22:41:24 +0000 Received: from DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862]) by DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862%6]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 22:41:24 +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" , "rkagan@virtuozzo.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v4 02/17] kvm: lapic: Introduce APICv update helper function Thread-Topic: [PATCH v4 02/17] kvm: lapic: Introduce APICv update helper function Thread-Index: AQHVkQV9eHmWnMeDW0y4oRmhZ8rGng== Date: Fri, 1 Nov 2019 22:41:24 +0000 Message-ID: <1572648072-84536-3-git-send-email-suravee.suthikulpanit@amd.com> References: <1572648072-84536-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1572648072-84536-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: SN1PR12CA0047.namprd12.prod.outlook.com (2603:10b6:802:20::18) To DM6PR12MB3865.namprd12.prod.outlook.com (2603:10b6:5:1c8::18) 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-ht: Tenant x-ms-office365-filtering-correlation-id: c771339f-8362-41e4-0c4b-08d75f1ca000 x-ms-traffictypediagnostic: DM6PR12MB3243: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2582; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(396003)(346002)(366004)(376002)(39860400002)(136003)(199004)(189003)(66476007)(66446008)(26005)(6506007)(15650500001)(386003)(86362001)(5660300002)(102836004)(4720700003)(305945005)(7736002)(7416002)(76176011)(256004)(14444005)(8936002)(8676002)(186003)(52116002)(6486002)(478600001)(50226002)(71200400001)(71190400001)(81166006)(6436002)(476003)(2906002)(3846002)(6116002)(6512007)(99286004)(4326008)(2616005)(316002)(11346002)(446003)(486006)(81156014)(14454004)(66946007)(36756003)(110136005)(54906003)(66066001)(64756008)(66556008)(25786009)(2501003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3243;H:DM6PR12MB3865.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: pCpj74CuzBuURmpneCMK9c0fU9Oz/3E/zpZZAPj/Eqksi/CLbIhj3ZKnJbaBd+ZWps2uUQtvXX+6+azAr+lcdeY5n/lVRj13YC8cR4WCZPZEDfz7eGgQsmbryYiHGyoi+GsMwA331P7AxQyZas++aurnHjC/SUv0HGMxxwIL2tmox8j1m73R7WCKrfvXdaF7fUEf6GmtCGwG2/dK9/Eb+319e7aY8ggwGlLreRlfwORcubX6Xe1xKydb3yCtL0UPYh4gTIxk90Wq9+BwOPbk37o2Mdv943x3CxzJ6V7FImWs8x0mjfiWxvwQq0v9jrFyC9TJNR7GqsQj7JpsjoN39/VSamLOh8PHYs2M6TcKfRjOWWAtPiMOxG5fsBXPYW02mTcmJpPi2YnSnZSh3z84GStGCXW/1kCHFMPlTUIFo2ccSgww6k7CuZactxwz+kGj MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: c771339f-8362-41e4-0c4b-08d75f1ca000 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 22:41:24.6533 (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: X6aLVYKFUcjLbgJtSRkw30MPD1FNgG+gTJCChDLiqCqXy9M0vmKTWHt8DP5HeMp65Fl72KTxmsP0kOCwwF1NZA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3243 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 e904ff0..4654230 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -2152,6 +2152,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; @@ -2194,8 +2209,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); @@ -2454,9 +2468,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 Nov 1 22:41:25 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11223869 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 892E9139A for ; Fri, 1 Nov 2019 22:41:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5367720679 for ; Fri, 1 Nov 2019 22:41:37 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="ZkIx2p+w" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728036AbfKAWld (ORCPT ); Fri, 1 Nov 2019 18:41:33 -0400 Received: from mail-eopbgr720065.outbound.protection.outlook.com ([40.107.72.65]:49770 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727966AbfKAWlc (ORCPT ); Fri, 1 Nov 2019 18:41:32 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XnOSGNUdhc44sKgLFl9ivZeqryMTlhAOxhVGjc2hbuKKlyRN49Hbv4UOVBdLz8BQJRlENU5mX3BNy6Z1YZ5AiC/YDd2Uz2KWF6D7kXBLCskbOZO3cgIGKp5rfKGn2p9eeaUY87Plz8LkKRbhW/dq94mkL0Nr/mInbam0e61ZwiXX6zJ28p66D7j6s/XDW1eBaDC3wAvNvxyDYpXkRVLdwluLwN46ai5naRaIHxJS0esE5UyPIUHwILZ4TmeuEqP8fVN0ap/JqxQcHUyUAIVTt4MbGYxM8q81YqNiTFQWm/5iCYUcRlYhjIzdacgpAFC09s3cruTTGL3VN8YymCHrIw== 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=+sIsXBkFTqni+J8VxBSuWB6ZnhevRPuPLWoCXS0gU/c=; b=g8MDjLyAvwUntyBmSEz91A0ESJjSWFsvkwtmsQi78r7xkNQjkJ82+CTTbWMeaZepd6GM2TGqnyv6glkrUp6ilFivS7BBXJEcZ4nHVOMo9Gx9PAx0ieMlFYNX7wis4B8HlfyQ44H/8y+ZaJZ5O5pimdnZ2ALQ7cFwfntjjWiFHxefqhcT+dDSisj3SFeH+DQsp08YS1HrEHqwsFi4wI+YF5s8Tui+HBtLmhWw+LAj/KLVL7xxPdeJQj9aFE8fi5FngztOdhKueU/AnhldhN9GY3maj3qe6Z036X44lALsmAOBsUq0vAWl83w7/waYE+StzU3aB5QHMPK08elWkcej/w== 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=+sIsXBkFTqni+J8VxBSuWB6ZnhevRPuPLWoCXS0gU/c=; b=ZkIx2p+wzzA2/6TCA1jiqx7ba05Xpdal+9i5VbaQcNsJBw+WJs3pFHBEkj2uMx20QHXzmYSszYeG7/cdf1w7f6bs4EoYz7RDcH6SdT1GPsszgu42HGLI+1S/wsno4QiwY+MDktUn9qw0V8aLkRyhCe824Yt26D5PRwBcsg4GSc4= Received: from DM6PR12MB3865.namprd12.prod.outlook.com (10.255.173.210) by DM6PR12MB3243.namprd12.prod.outlook.com (20.179.105.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 22:41:26 +0000 Received: from DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862]) by DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862%6]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 22:41:26 +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" , "rkagan@virtuozzo.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v4 03/17] kvm: x86: Introduce APICv deactivate bits Thread-Topic: [PATCH v4 03/17] kvm: x86: Introduce APICv deactivate bits Thread-Index: AQHVkQV+oJPFNeBvOUWAjjOq3TMHTQ== Date: Fri, 1 Nov 2019 22:41:25 +0000 Message-ID: <1572648072-84536-4-git-send-email-suravee.suthikulpanit@amd.com> References: <1572648072-84536-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1572648072-84536-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: SN1PR12CA0047.namprd12.prod.outlook.com (2603:10b6:802:20::18) To DM6PR12MB3865.namprd12.prod.outlook.com (2603:10b6:5:1c8::18) 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-ht: Tenant x-ms-office365-filtering-correlation-id: 147bdb80-94bb-4701-ce45-08d75f1ca0c9 x-ms-traffictypediagnostic: DM6PR12MB3243: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2582; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(396003)(346002)(366004)(376002)(39860400002)(136003)(199004)(189003)(66476007)(66446008)(26005)(6506007)(386003)(86362001)(5660300002)(102836004)(4720700003)(305945005)(7736002)(7416002)(76176011)(256004)(14444005)(8936002)(8676002)(186003)(52116002)(6486002)(478600001)(50226002)(71200400001)(71190400001)(81166006)(6436002)(476003)(2906002)(3846002)(6116002)(6512007)(99286004)(4326008)(2616005)(316002)(11346002)(446003)(486006)(81156014)(14454004)(66946007)(36756003)(110136005)(54906003)(66066001)(64756008)(66556008)(25786009)(2501003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3243;H:DM6PR12MB3865.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 2l4eydIh5RZaPNflziZNFv2UUUBWdYwX4PeCRHrN7W+dKZSE2bSJ0eX+NQgyO716rVnU8evyu1IPeySLCpGr3Vrq+rs+L3SsY90OW9DdnO8NQZ/uNi+gP3j0WFcE37itdJL4W2zpnqDHE73VimHRZoNwpbfcWEWR6q+GEQlh6MeuSQAywN2i2x5fTRDRE/y6J+BJakE96JSuYoMraX43J1YvtD3izi4bzQ+tjwlsltaaWfuOlrKAHpOAdE330za/g+UinSgjLh7JoJp2Hk2GNvVRUxg2laFmgDnGZ08YOUqSoyeFlX2Ukeg41l3W85tlQAH03N48bAziBjux39TdvzAA+CPKG47ExM+MBMY6+nOOuuUhGB+vPWcmtdPxGloBo35bLvJpQmTCu6JOchtdQ1SBqYy+Fvk7OhS1v9Tb00J4RwfjIBtoKSKvd8empZmk MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 147bdb80-94bb-4701-ce45-08d75f1ca0c9 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 22:41:25.9686 (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: 87/uepTm5XVscmhB5wfnIrIhG6dT/9RTj3H4ZkDly0DRgfG+xKYpWvXEQfh4n6ANoVoHeUvdiCYSOXwMUG5NcQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3243 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 be deactivated due to various reasons (e.g. Hyper-v synic). Introduce KVM APICv deactivate bits along with a new variable struct kvm_arch.apicv_deact_msk to help keep track of why APICv is deactivated for each VM. Signed-off-by: Suravee Suthikulpanit --- arch/x86/include/asm/kvm_host.h | 5 +++++ arch/x86/kvm/svm.c | 3 +++ arch/x86/kvm/vmx/vmx.c | 4 ++++ arch/x86/kvm/x86.c | 22 +++++++++++++++++++++- 4 files changed, 33 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 843799b..1c05363 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -852,6 +852,8 @@ enum kvm_irqchip_mode { KVM_IRQCHIP_SPLIT, /* created with KVM_CAP_SPLIT_IRQCHIP */ }; +#define APICV_DEACT_BIT_DISABLE 0 + struct kvm_arch { unsigned long n_used_mmu_pages; unsigned long n_requested_mmu_pages; @@ -881,6 +883,7 @@ struct kvm_arch { struct kvm_apic_map *apic_map; bool apic_access_page_done; + unsigned long apicv_deact_msk; gpa_t wall_clock; @@ -1416,6 +1419,8 @@ 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); +bool kvm_apicv_activated(struct kvm *kvm); +void kvm_apicv_init(struct kvm *kvm, bool enable); int kvm_emulate_hypercall(struct kvm_vcpu *vcpu); diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 7090306..a0caf66 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -1985,6 +1985,9 @@ static int avic_vm_init(struct kvm *kvm) hash_add(svm_vm_data_hash, &kvm_svm->hnode, kvm_svm->avic_vm_id); spin_unlock_irqrestore(&svm_vm_data_hash_lock, flags); + /* Enable KVM APICv support */ + kvm_apicv_init(kvm, true); + return 0; free_avic: diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index e4faa00..28b97fb 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -6775,6 +6775,10 @@ static int vmx_vm_init(struct kvm *kvm) break; } } + + /* Enable KVM APICv support */ + kvm_apicv_init(kvm, vmx_get_enable_apicv(kvm)); + return 0; } diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 2341f48..70a70a1 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -7201,6 +7201,21 @@ void kvm_vcpu_deactivate_apicv(struct kvm_vcpu *vcpu) kvm_x86_ops->refresh_apicv_exec_ctrl(vcpu); } +bool kvm_apicv_activated(struct kvm *kvm) +{ + return (READ_ONCE(kvm->arch.apicv_deact_msk) == 0); +} +EXPORT_SYMBOL_GPL(kvm_apicv_activated); + +void kvm_apicv_init(struct kvm *kvm, bool enable) +{ + if (enable) + clear_bit(APICV_DEACT_BIT_DISABLE, &kvm->arch.apicv_deact_msk); + else + set_bit(APICV_DEACT_BIT_DISABLE, &kvm->arch.apicv_deact_msk); +} +EXPORT_SYMBOL_GPL(kvm_apicv_init); + static void kvm_sched_yield(struct kvm *kvm, unsigned long dest_id) { struct kvm_vcpu *target = NULL; @@ -9217,13 +9232,15 @@ 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); + if (irqchip_in_kernel(vcpu->kvm) && kvm_apicv_activated(vcpu->kvm)) + vcpu->arch.apicv_active = kvm_x86_ops->get_enable_apicv(vcpu->kvm); + vcpu->arch.mce_banks = kzalloc(KVM_MAX_MCE_BANKS * sizeof(u64) * 4, GFP_KERNEL_ACCOUNT); if (!vcpu->arch.mce_banks) { @@ -9322,6 +9339,9 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) kvm_page_track_init(kvm); kvm_mmu_init_vm(kvm); + /* Default to APICv disable */ + kvm_apicv_init(kvm, false); + if (kvm_x86_ops->vm_init) return kvm_x86_ops->vm_init(kvm); From patchwork Fri Nov 1 22:41:27 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11223893 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 44BA81599 for ; Fri, 1 Nov 2019 22:42:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1A27121897 for ; Fri, 1 Nov 2019 22:42: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="hvqXVRvh" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728088AbfKAWlh (ORCPT ); Fri, 1 Nov 2019 18:41:37 -0400 Received: from mail-eopbgr720065.outbound.protection.outlook.com ([40.107.72.65]:49770 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728017AbfKAWlf (ORCPT ); Fri, 1 Nov 2019 18:41:35 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jWUg3nySTTlS/yYWBkpdnwEPLrN5ylsvd0KNO06n0iqABPUW/bmCS11x916j1qfMMGmtU4TP3768ceG/CB0+qIAuR6zmlfDJPuQMa000RFq9iw92ndkX0Ce0L6UYN6/d+hJQ/xE8kszR0VpVRyU7/QxPaDiIePEfVicTdDYkGIxhNwwE44Q6gAzBtOivF4ndBEMwqc4E6aVByz0opVdCBgWvYauC5idV3VoVWYIqnpNVaMZ2KSYKQvzE9jgppqgvHGRH0t4Pf7nawd3C7S+ECkIgQ5jp5qCPLO9c7IdhXk3j7MxMh13RKCvKWcaMp4TC496kUeNUNUZ9ZGDBbIXOYQ== 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=iQ1LTp64Oaxbe58aMYNPEpEjslGNwZBKlPI2QoMXaQI=; b=B5RSwVIEkZE6Lb/CR01iSopb97CZKvluZSU3axDzltL3z6+y/PHxGw4Rh78hgE0zo3gGWBeEnX23onsLB4+TFNsQOSk9cOmysn3CV52oS3XxXt2kaLpPejQHCF6Cf7tREFheTrI307+b9DHnfvhHq9fCsCJPeQiW068sJx0kv3dYoqd5UPd128V2eHQ+SMQo8scBjmGnabLPZfk+gnNlt5ouI6UlD3A2WD4QHGLQEZiHFyG65gcIu4a89TQqJp3m7eZkiZBSIBSLSeHiYhDo82q37ecUnmiGoxxvZo4T2nkixpR815vV+9d4cSWNFQhQpVXO+T6E2oViHsEQDO8BAw== 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=iQ1LTp64Oaxbe58aMYNPEpEjslGNwZBKlPI2QoMXaQI=; b=hvqXVRvhPf6T0DPDWjUHr1Js9bLxy/iafnvx8CDDRwaeBhChOf2Fau+RsDwDXcNjVOGwWa44z9yl6Yi2+CVMZ42RMMk+nfMImnBxn4RHWBeKAGI4EJRTCwCU/+EwUVFb6VaUgi2Cis1aQv/JD45l7P1rWBkej18aAS6cjn4Anp4= Received: from DM6PR12MB3865.namprd12.prod.outlook.com (10.255.173.210) by DM6PR12MB3243.namprd12.prod.outlook.com (20.179.105.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 22:41:28 +0000 Received: from DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862]) by DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862%6]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 22:41:27 +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" , "rkagan@virtuozzo.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v4 04/17] kvm: x86: Add support for activate/de-activate APICv at runtime Thread-Topic: [PATCH v4 04/17] kvm: x86: Add support for activate/de-activate APICv at runtime Thread-Index: AQHVkQV/8CsVLszkbEWXIyta1bn49A== Date: Fri, 1 Nov 2019 22:41:27 +0000 Message-ID: <1572648072-84536-5-git-send-email-suravee.suthikulpanit@amd.com> References: <1572648072-84536-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1572648072-84536-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: SN1PR12CA0047.namprd12.prod.outlook.com (2603:10b6:802:20::18) To DM6PR12MB3865.namprd12.prod.outlook.com (2603:10b6:5:1c8::18) 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-ht: Tenant x-ms-office365-filtering-correlation-id: 128825d7-37a7-461d-4bbd-08d75f1ca186 x-ms-traffictypediagnostic: DM6PR12MB3243: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5516; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(396003)(346002)(366004)(376002)(39860400002)(136003)(199004)(189003)(66476007)(66446008)(26005)(6506007)(386003)(86362001)(5660300002)(102836004)(4720700003)(305945005)(7736002)(7416002)(76176011)(256004)(14444005)(8936002)(8676002)(186003)(52116002)(6486002)(478600001)(50226002)(71200400001)(71190400001)(81166006)(6436002)(476003)(2906002)(3846002)(6116002)(6512007)(99286004)(4326008)(2616005)(316002)(11346002)(446003)(486006)(81156014)(14454004)(66946007)(36756003)(110136005)(54906003)(66066001)(64756008)(66556008)(25786009)(2501003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3243;H:DM6PR12MB3865.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: RM8ozn/O6UuWsB4NL38J98MZrfgVwaybSXwztKCYB3lgXpwb8hry6j6oYS46Gx0SqlkOWlVZbamHs8kR3Otk7wOSkQ1RO6UEOVfiY09dx/0bD14Ki+UxY5A7YHA3Wz5/NFjww4ou3eW+JySZGnZyZ9RsDINiBiOhvtq4Fi1kpvwMldNxMvErcJubIv5zlSQc3yxezizc8IHp/4+KYyngkoXXimROToR7WpeoZEG5ID+LLC4Z1U6qbdXcnPxuKUimnTSZZzOnXixu67iCMRdhJdlWAe69/xLJNXr54Yk4GfB0zhyma0wL9qraPnHjwo0DerzfYC9ROaWK32jPKhswfe2eSoMGxkSLL9FYBfWBqmBiOKyGnvjpXDJ/nVORMRTR5f3VSdO28bilJ+0j8oHQBXdUKAxLqwV6httk6nR0SdK4uu2unSJB7JHJPQxD2B+d MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 128825d7-37a7-461d-4bbd-08d75f1ca186 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 22:41:27.1749 (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: hUE3CYyz1qWiA3NuXBmnsA7tjceiNqxuwSpj+3uVC0i0ArmtiOk7e7Ig6wwllGERUphf1TdJSwEIBxpq8vmm9Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3243 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 synic). 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 the following: * A new KVM_REQ_APICV_UPDATE request bit * Interfaces to request all vcpus to update (activate/deactivate) APICv * Interface to update APICV-related parameters for each vcpu Signed-off-by: Suravee Suthikulpanit --- arch/x86/include/asm/kvm_host.h | 5 +++++ arch/x86/kvm/x86.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 1c05363..3b94f42 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -78,6 +78,8 @@ #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_UPDATE \ + KVM_ARCH_REQ_FLAGS(25, 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 \ @@ -1421,6 +1423,9 @@ gpa_t kvm_mmu_gva_to_gpa_system(struct kvm_vcpu *vcpu, gva_t gva, void kvm_vcpu_deactivate_apicv(struct kvm_vcpu *vcpu); bool kvm_apicv_activated(struct kvm *kvm); void kvm_apicv_init(struct kvm *kvm, bool enable); +void kvm_vcpu_update_apicv(struct kvm_vcpu *vcpu); +void kvm_request_apicv_update(struct kvm *kvm, bool activate, + unsigned long bit); int kvm_emulate_hypercall(struct kvm_vcpu *vcpu); diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 70a70a1..394695a 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 @@ -7730,6 +7731,33 @@ void kvm_make_scan_ioapic_request(struct kvm *kvm) kvm_make_all_cpus_request(kvm, KVM_REQ_SCAN_IOAPIC); } +void kvm_vcpu_update_apicv(struct kvm_vcpu *vcpu) +{ + if (!lapic_in_kernel(vcpu)) + return; + + vcpu->arch.apicv_active = kvm_apicv_activated(vcpu->kvm); + kvm_apic_update_apicv(vcpu); + kvm_x86_ops->refresh_apicv_exec_ctrl(vcpu); +} +EXPORT_SYMBOL_GPL(kvm_vcpu_update_apicv); + +void kvm_request_apicv_update(struct kvm *kvm, bool activate, ulong bit) +{ + if (activate) { + if (!test_and_clear_bit(bit, &kvm->arch.apicv_deact_msk) || + !kvm_apicv_activated(kvm)) + return; + } else { + if (test_and_set_bit(bit, &kvm->arch.apicv_deact_msk) || + kvm_apicv_activated(kvm)) + return; + } + + kvm_make_all_cpus_request(kvm, KVM_REQ_APICV_UPDATE); +} +EXPORT_SYMBOL_GPL(kvm_request_apicv_update); + static void vcpu_scan_ioapic(struct kvm_vcpu *vcpu) { if (!kvm_apic_present(vcpu)) @@ -7916,6 +7944,8 @@ 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_UPDATE, vcpu)) + kvm_vcpu_update_apicv(vcpu); } if (kvm_check_request(KVM_REQ_EVENT, vcpu) || req_int_win) { From patchwork Fri Nov 1 22:41:28 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11223897 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 666D9139A for ; Fri, 1 Nov 2019 22:42:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3C302218AC for ; Fri, 1 Nov 2019 22:42:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="FMpqgcyi" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728486AbfKAWmk (ORCPT ); Fri, 1 Nov 2019 18:42:40 -0400 Received: from mail-eopbgr720078.outbound.protection.outlook.com ([40.107.72.78]:60224 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728066AbfKAWlg (ORCPT ); Fri, 1 Nov 2019 18:41:36 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TxuKEkkIZTBIMPfi4Srtb/dewSBJsRKct2iqqWFXaSdVJ7js6F/sLtHd34eounjRh/dEYblMmaK1mB7NyZw4KCvKrY5SbPXhdS1jtq2FgmVYmNXWgSItOVnXxPdpz/R+Rs882M0N6L3DrAdlcrPOLxpU0OUPMY74wOi2A78VkOeAOyWEgQBnQe54E2m4+WWfx1YS6UUVJu5kIjpmlWFNQjy4LJCzEu34rzR7mm10b5zGYyjuOoE+umNH8Cx/kGr+msY502rLdw7rlHYj670/cmVEvWseclol95Gteun4rVVvTU5AA3eLbhFiOFxpQvKMSdHGlutlw/vEV1SNrtA7fQ== 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=bx443pIiyIQuSl/Tw5U3hbH0CWk0BdxUdQT0kntSF7k=; b=hYoL9c1fAakVJMRlfZerOxPKF0dumWkGFHEWd09LISezyKFQn8ErxK++AGnXAqaZ4g3JQwtp9BNuYSyGFKK7AzP67jl9MOpLWZEs4KzBKGu2FscvGLi7BYEcwv/wCRbs+wkcbxcW+K8OHmIMBChfVKkitkaZdnvnJS9YbXMj34MCZ+2vceBfPirwAHzBRxbJm9PlCSJx1vgixX9rFyTQ32HSkjeQTnywBFi03jGBNcdDjEpaI888uoqTZ9CGnTvI027IVLjH6FQHjm9xF76T6dqoBteIeWKfZNlR+pVWR1Ml+djV8eY8axNY7v+4mJIFMV3Fpd2RePn8KG75Qc0yrA== 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=bx443pIiyIQuSl/Tw5U3hbH0CWk0BdxUdQT0kntSF7k=; b=FMpqgcyigGtUGgVf+0noaPNUN0Iff3ZEkiMWU+fTfGJi7JneIaIyRtfbL0ck3COJJEIGpS4KVY7Qde0BJrWGsW88Gyyo35GQ6ijM7s0iCHcKJm9ET8C81xvt6c8xe+oc6n1sQnBrCWyPnrHsuMHYVmg85e1+GrYftXL2TIpz/Q0= Received: from DM6PR12MB3865.namprd12.prod.outlook.com (10.255.173.210) by DM6PR12MB3243.namprd12.prod.outlook.com (20.179.105.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 22:41:28 +0000 Received: from DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862]) by DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862%6]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 22:41:28 +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" , "rkagan@virtuozzo.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v4 05/17] kvm: x86: Add APICv activate/deactivate request trace points Thread-Topic: [PATCH v4 05/17] kvm: x86: Add APICv activate/deactivate request trace points Thread-Index: AQHVkQV/Hj4BGHIomk20AZUsrh4Yrg== Date: Fri, 1 Nov 2019 22:41:28 +0000 Message-ID: <1572648072-84536-6-git-send-email-suravee.suthikulpanit@amd.com> References: <1572648072-84536-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1572648072-84536-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: SN1PR12CA0047.namprd12.prod.outlook.com (2603:10b6:802:20::18) To DM6PR12MB3865.namprd12.prod.outlook.com (2603:10b6:5:1c8::18) 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-ht: Tenant x-ms-office365-filtering-correlation-id: 49396192-f2e5-4c6d-59da-08d75f1ca22e x-ms-traffictypediagnostic: DM6PR12MB3243: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1388; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(396003)(346002)(366004)(376002)(39860400002)(136003)(199004)(189003)(66476007)(66446008)(26005)(6506007)(386003)(86362001)(5660300002)(102836004)(4720700003)(305945005)(7736002)(7416002)(76176011)(256004)(14444005)(8936002)(8676002)(186003)(52116002)(6486002)(478600001)(50226002)(71200400001)(71190400001)(81166006)(6436002)(476003)(2906002)(3846002)(6116002)(6512007)(99286004)(4326008)(2616005)(316002)(11346002)(446003)(486006)(81156014)(14454004)(66946007)(36756003)(110136005)(54906003)(66066001)(64756008)(66556008)(25786009)(2501003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3243;H:DM6PR12MB3865.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Agc4wwmJEuKatz9wsGpSDGh6Dk+29eCEQooaYRa59SJcbQw7ghxHoypBUR/up+s0X7SEMYrO/jRhlTKKy5Y5sDX8dxTZ39Wi6Bcfh2y1NYGcGb3KfgnymbXxR49lSPEHwT/OICVzd3wpUkDQWYSbiiPeW09OmS0GmluRFjIROwLQA69NGRJZYcIThVAWbfLoeUUEo7VpZE8GM6kLpUcVQJu6LsdNv3t++tRyQVKI9ZZregcFRDIeXUynu6ZdSNirDDme5XlKpzsE9X2l+l2VxsnNx/sM0AQiLKxa0G8CkL8lLvkkfJZREsxUa71qB1EAHokymRG+IH7k1k67N5M0Qdx0kk8jP73IcsN9Q1j6Nq/t29oPashBJ1z4h803qNhCUJ29Cul1yXSf6spaXXwReMwH+ma2yPEp8iA7NrVvGyiejfZqBDJYf4D/3eYWXSla MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 49396192-f2e5-4c6d-59da-08d75f1ca22e X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 22:41:28.2683 (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: RAaK1KBQKpLPZo/Gv2hUGlPyFEjnGIh8iubUdOI7ERNXxMyqTVP05NKgeZMA2tGV5s9jRY7x35ZWmlAEBV9IvQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3243 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 | 19 +++++++++++++++++++ arch/x86/kvm/x86.c | 2 ++ 2 files changed, 21 insertions(+) diff --git a/arch/x86/kvm/trace.h b/arch/x86/kvm/trace.h index b5c831e..3bfc6b5 100644 --- a/arch/x86/kvm/trace.h +++ b/arch/x86/kvm/trace.h @@ -1297,6 +1297,25 @@ __entry->vcpu_id, __entry->timer_index) ); +TRACE_EVENT(kvm_apicv_update_request, + TP_PROTO(bool activate, unsigned long bit), + TP_ARGS(activate, bit), + + TP_STRUCT__entry( + __field(bool, activate) + __field(unsigned long, bit) + ), + + TP_fast_assign( + __entry->activate = activate; + __entry->bit = bit; + ), + + TP_printk("%s bit=%lu", + __entry->activate ? "activate" : "deactivate", + __entry->bit) +); + /* * Tracepoint for AMD AVIC */ diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 394695a..4fab93e 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -7754,6 +7754,7 @@ void kvm_request_apicv_update(struct kvm *kvm, bool activate, ulong bit) return; } + trace_kvm_apicv_update_request(activate, bit); kvm_make_all_cpus_request(kvm, KVM_REQ_APICV_UPDATE); } EXPORT_SYMBOL_GPL(kvm_request_apicv_update); @@ -10145,3 +10146,4 @@ 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_update_request); From patchwork Fri Nov 1 22:41:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11223895 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 0E5BE1599 for ; Fri, 1 Nov 2019 22:42:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D74F1217D9 for ; Fri, 1 Nov 2019 22:42:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="EkHEiSm0" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728470AbfKAWmk (ORCPT ); Fri, 1 Nov 2019 18:42:40 -0400 Received: from mail-eopbgr720065.outbound.protection.outlook.com ([40.107.72.65]:49770 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727966AbfKAWlh (ORCPT ); Fri, 1 Nov 2019 18:41:37 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=H5XfUqcpog+Vs1fXU9fZQebAvJZgAWuVbnt9xVD4YlcDuT2PJX7D3/s8mRoWsJj8ceFyRea5/NdZ+KL1qLm1z+XcqCBXwdQ+gHaWHYQH0b/7Z4W1IC5cN/YEsgFykhB0HYOPnN0hkPVUDS8M4/96fTQVSgaw2EhHMtizh7YEYOkFphElpALo2hWHyWtfglw7z+sbKgvS9qlXpzLVjF0jolFfj+fsG/HctO0jKF64fUdcYTS4d1Rxm/C1pZDMpr6z6sqRBZ0Hrg5Oq8+feVxrpWEvEpLdCHakgtApcIDW5ubRd7MkABDtcm9iyNzWhO3AEj5Sc8VTrqmq5HQTouE+Uw== 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=SwS/WZKtINYTbvX/9tiI5JXrLGHhgyNFLkS7G3nh3oU=; b=Z4pe4HqtQn8L42g/ti/nx0WBfEu6UEGJdLO+uT0QZNBvYBIuSyZRKdCPRy8LGQK7tK0+e5+tGa35i7u1Nt2WuhB9e6vahBJxbsL0HoH0X0/SMyWvLAtK5gGf4iQoLYVsVKWEpc91QyuU1yiSuaM9vRQwxwZ/vPumezyGzAlKOu9BAYHngZUhoV21T1iABiWZt3qImWqjVsuyf/ZrTCHVWpuNWoGq+7EJlREe3j4jR3XW7tP8wyQsEMcIerb/LDqHAU0hLV7d9gdrLiLg7sF8bAMPbhqCUjT6G4Y0bkBKPJwB+3m9Mk/6vLUtRW5fm5vuugMKc/dA6cYsTKiLj0LFrw== 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=SwS/WZKtINYTbvX/9tiI5JXrLGHhgyNFLkS7G3nh3oU=; b=EkHEiSm0f1RI31nAyKlZ7pf6VH4oi7c6rLUxKF4VfGPIaHWm66zEpcz0DhuWd196nCndjdD8/EWsAPjmQkb/9bMsTenqpBOb49WRyYx/nbA8Vv2yVJpL15isS4dPEUAKlp2OHCMYbKhZT00mQ8omQDehjQI3rYfTxoJwRiNGtFs= Received: from DM6PR12MB3865.namprd12.prod.outlook.com (10.255.173.210) by DM6PR12MB3243.namprd12.prod.outlook.com (20.179.105.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 22:41:29 +0000 Received: from DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862]) by DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862%6]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 22:41:29 +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" , "rkagan@virtuozzo.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v4 06/17] kvm: x86: svm: Add support to activate/deactivate posted interrupts Thread-Topic: [PATCH v4 06/17] kvm: x86: svm: Add support to activate/deactivate posted interrupts Thread-Index: AQHVkQWAEkVvwB6g90KyB7kCRl8C3g== Date: Fri, 1 Nov 2019 22:41:29 +0000 Message-ID: <1572648072-84536-7-git-send-email-suravee.suthikulpanit@amd.com> References: <1572648072-84536-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1572648072-84536-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: SN1PR12CA0047.namprd12.prod.outlook.com (2603:10b6:802:20::18) To DM6PR12MB3865.namprd12.prod.outlook.com (2603:10b6:5:1c8::18) 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-ht: Tenant x-ms-office365-filtering-correlation-id: e8d37cf2-184a-48c7-ffb0-08d75f1ca2d8 x-ms-traffictypediagnostic: DM6PR12MB3243: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:303; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(396003)(346002)(366004)(376002)(39860400002)(136003)(199004)(189003)(66476007)(66446008)(26005)(6506007)(386003)(86362001)(5660300002)(102836004)(4720700003)(305945005)(7736002)(7416002)(76176011)(256004)(14444005)(8936002)(8676002)(186003)(52116002)(6486002)(478600001)(50226002)(71200400001)(71190400001)(81166006)(6436002)(476003)(2906002)(3846002)(6116002)(6512007)(99286004)(4326008)(2616005)(316002)(11346002)(446003)(486006)(81156014)(14454004)(66946007)(36756003)(110136005)(54906003)(66066001)(64756008)(66556008)(25786009)(2501003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3243;H:DM6PR12MB3865.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Kthw6fg54+WW+gKmaDVZ0FzzVAQTZbVhIWFqL+K8+Xqpw4famLi2Q95mw7SNCZS4FLYwVfoVBoMd6jROPXzNXm1STsamjqU55LRwEQ9FO7IGFZ09QAQmwpR6kJ3YcR7xUn3BWBsqMW9E74JO6LgDS6LEBTj54HZQORofh3DGu/UicWZp4h/nQNbwsqGM+HySDh5RVi1VwdlaMHPW4uch2zKxlQ4Q41sdiYMvbvQEM7oZKWfc8IswNZF9FhjON7XY4UEcLTghP0+RhcPGfNcF1uHjyXY5PmLvjaYcPEthauTG7EN3dlluoND+WIpaU4JLClN94BrTIF1cYxCE6bBzERG3Xg1COa1B8ZLM9ZQJOiX2XeDOnq2fzx1phSOz4I7Ue00QO6OBkXaGwMoq6wtXJg20KJCw2xz+/kDn3p10p2rWFISSK+/dxqsZx+TZbUgp MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: e8d37cf2-184a-48c7-ffb0-08d75f1ca2d8 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 22:41:29.4196 (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: r6Y+UUv/CcpNWIvfDwUQ/LNJHUHlisMBiaZGUVHWJDM5vxbUkbjVhOLm2g7fxDA3NDV+EkZkt4d+7y8fHc3Y6A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3243 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/kvm/svm.c | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index a0caf66..b7d0adc 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -5159,17 +5159,52 @@ static void svm_hwapic_isr_update(struct kvm_vcpu *vcpu, int max_isr) { } +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; +} + /* Note: Currently only used by Hyper-V. */ static void svm_refresh_apicv_exec_ctrl(struct kvm_vcpu *vcpu) { struct vcpu_svm *svm = to_svm(vcpu); struct vmcb *vmcb = svm->vmcb; + bool activated = kvm_vcpu_apicv_active(vcpu); - if (kvm_vcpu_apicv_active(vcpu)) + if (activated) vmcb->control.int_ctl |= AVIC_ENABLE_MASK; else vmcb->control.int_ctl &= ~AVIC_ENABLE_MASK; mark_dirty(vmcb, VMCB_AVIC); + + svm_set_pi_irte_mode(vcpu, activated); } static void svm_load_eoi_exitmap(struct kvm_vcpu *vcpu, u64 *eoi_exit_bitmap) From patchwork Fri Nov 1 22:41:30 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11223891 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 8C5F9139A for ; Fri, 1 Nov 2019 22:42:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 61B58217D9 for ; Fri, 1 Nov 2019 22:42:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="4GrhOw3R" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728138AbfKAWlj (ORCPT ); Fri, 1 Nov 2019 18:41:39 -0400 Received: from mail-eopbgr720078.outbound.protection.outlook.com ([40.107.72.78]:60224 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727880AbfKAWli (ORCPT ); Fri, 1 Nov 2019 18:41:38 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RZDxtHAqER7vivzdtP3OrF8BtFotcRti8/XVlS5F9nzZiQeOhsB72e+oKi361LdqMN3HfAPhpjs6dhkhhpywFzTGLRRxROloTWt+tpuMN8tQ8ZiIPyO4djdxWQOGLlPpr1viyOYPXMNwC3W3sgLeN7DGBXmQ58rh/OG3JZ8fKI0teMHgurvfRMM7kvLH9TBnak+eUsUvBqegbXPnuuejvkPyD0uKSGGbaI9U9dkhnaWOYF5A07ZiuzzcYZy16iD+Orac9uShylCzm3grZ9LLphnIkvI8tYLDOb24anhMIi2nPv8JUReV/1GuSNJLq2ITtrjtnGWwpnov1XXBggcO5Q== 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=DrDf7tn9uPt/T0eXtzsB6nB9ZGVGL7O4e+bGOp7bsk8=; b=Oo6hi2r6jRQCEjIW3WKcXTMUQsO86l1BevYh2G5OpF7W39NqLT3n8RjCKQ0amahaYhaYpg9837X8Wdk3Fz04rAHC1/0NpFEaW2s7zFJvt3VbDqNyAgp9qZW4hyANNfWNICWLoTvMTbWIRrXcGXzai1K3sbuVok7DduFzSlZGKwMsaBjdFLDqZAVwCnHS2IvNa8K4ewdnSkQCz9Nlu+3OBvHARKwFx54oCIlY+09AyliNaqynl5zTYdSB0EGaEpSUO/GC7FS0GyRJMAlfp0numICX7QI14Z3PeVMFpBH6ZwX237fBjsMAtA5YLRfEAw5WjbSvzJRz83AEr57a+WBP3A== 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=DrDf7tn9uPt/T0eXtzsB6nB9ZGVGL7O4e+bGOp7bsk8=; b=4GrhOw3RXTRxl5Ed8MoGTuio74Lbuz1yBil6yeTt+Y26o+UKflzb6Op4hPHkyCS+/geZlj7L7W2EME0tqXYKj+cPB7M/+8tO1+0I69GT0Q+21sS9MW5BcSFoWujeHnRVIsOWBLeYdtEFHoDSUHMblrc+a5nkyV2SIP+/WtwYU9Q= Received: from DM6PR12MB3865.namprd12.prod.outlook.com (10.255.173.210) by DM6PR12MB3243.namprd12.prod.outlook.com (20.179.105.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 22:41:30 +0000 Received: from DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862]) by DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862%6]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 22:41:30 +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" , "rkagan@virtuozzo.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v4 07/17] svm: Add support for setup/destroy virutal APIC backing page for AVIC Thread-Topic: [PATCH v4 07/17] svm: Add support for setup/destroy virutal APIC backing page for AVIC Thread-Index: AQHVkQWBl/IUX6i/Q0Kz+Q9Ftrs4dA== Date: Fri, 1 Nov 2019 22:41:30 +0000 Message-ID: <1572648072-84536-8-git-send-email-suravee.suthikulpanit@amd.com> References: <1572648072-84536-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1572648072-84536-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: SN1PR12CA0047.namprd12.prod.outlook.com (2603:10b6:802:20::18) To DM6PR12MB3865.namprd12.prod.outlook.com (2603:10b6:5:1c8::18) 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-ht: Tenant x-ms-office365-filtering-correlation-id: cc02925e-da20-44d2-342f-08d75f1ca38a x-ms-traffictypediagnostic: DM6PR12MB3243: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6108; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(396003)(346002)(366004)(376002)(39860400002)(136003)(199004)(189003)(66476007)(66446008)(26005)(6506007)(386003)(86362001)(5660300002)(102836004)(4720700003)(305945005)(7736002)(7416002)(76176011)(256004)(14444005)(8936002)(8676002)(186003)(52116002)(6486002)(478600001)(50226002)(71200400001)(71190400001)(81166006)(6436002)(476003)(2906002)(3846002)(6116002)(6512007)(99286004)(4326008)(2616005)(316002)(11346002)(446003)(486006)(81156014)(14454004)(66946007)(36756003)(110136005)(54906003)(66066001)(64756008)(66556008)(25786009)(2501003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3243;H:DM6PR12MB3865.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: b4qTz2VIsyfNHwNAdTKklVvUhHNRt06/lZMWmoxrwd/aU/lRHKId1QneMz6yd5XVqIYqz84je4BiBd7yGj8EpbYciml+8S2mByy9oqlijFSIlKJH6SY/xjP3WMgpqInlpTtC8DIirEg/FdIsjD9OzE9fQOUUFTvFnYU5ZglquWmnXjMXcWe3pQ55kdk+ZLnaI/pnTettOm1du6X3Wk9wTpbxC0Iu5EuLq+gUZ9krqCWBb4liUn0ezGqszezNoOSOmoWUsnfRhA7mtWRwZEguC9AWCnAD26HiOisgsiyBam47WdQe3pw7MPBprYvwroGGvv2Y6IK67SvEPwDipWXl/Mrp5xHlg28E41QKNxf0a28CqInjG6hexLZ8BFr1U2YsaGHg5cenaRyslWJZ6AAhTPi6fp9y4MTNeAPtgzwpndtr7kEmu1maFK8QTxVB6IKM MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: cc02925e-da20-44d2-342f-08d75f1ca38a X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 22:41:30.5939 (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: 9Dx9sxsEm01BweWnImg9PlUzDy4v0ceHvPURvzUwxqH1YzbWos/tzI8ubwABRjFerXfGbSSb6QbTP55WbOg8wg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3243 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Re-factor avic_init_access_page() to avic_update_access_page() since activate/deactivate AVIC requires setting/unsetting the memory region used for virtual APIC backing page (APIC_ACCESS_PAGE_PRIVATE_MEMSLOT). Signed-off-by: Suravee Suthikulpanit --- arch/x86/kvm/svm.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index b7d0adc..46842a2 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -1668,23 +1668,22 @@ 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_update_access_page(struct kvm *kvm, bool activate) { - struct kvm *kvm = vcpu->kvm; int ret = 0; mutex_lock(&kvm->slots_lock); - if (kvm->arch.apic_access_page_done) + if (kvm->arch.apic_access_page_done == activate) goto out; ret = __x86_set_memory_region(kvm, APIC_ACCESS_PAGE_PRIVATE_MEMSLOT, APIC_DEFAULT_PHYS_BASE, - PAGE_SIZE); + activate ? PAGE_SIZE : 0); if (ret) goto out; - kvm->arch.apic_access_page_done = true; + kvm->arch.apic_access_page_done = activate; out: mutex_unlock(&kvm->slots_lock); return ret; @@ -1697,7 +1696,7 @@ static int avic_init_backing_page(struct kvm_vcpu *vcpu) int id = vcpu->vcpu_id; struct vcpu_svm *svm = to_svm(vcpu); - ret = avic_init_access_page(vcpu); + ret = avic_update_access_page(vcpu->kvm, true); if (ret) return ret; From patchwork Fri Nov 1 22:41:31 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11223889 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 C5B4E139A for ; Fri, 1 Nov 2019 22:42:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 9BB6F21897 for ; Fri, 1 Nov 2019 22:42:25 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="Mvn6U7fP" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728377AbfKAWmY (ORCPT ); Fri, 1 Nov 2019 18:42:24 -0400 Received: from mail-eopbgr720065.outbound.protection.outlook.com ([40.107.72.65]:49770 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728100AbfKAWlj (ORCPT ); Fri, 1 Nov 2019 18:41:39 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PvB8vrgTYTa29R6pmdq9vQvxI3ElwQ14FcSc6Xt30aHEyxsDqqq5cjKzV7d8XudpesHuP+XiMgeE+LzLEa2vEgYOlu9/ZrTMYptneLuE8zTDTJMwh5oA6Gc+N1kuvdJoqZSLrNta7ocCCLWaQ/fyMba3v9krL46QfOKUaYXciy0ZwFkpHkxeFyRaxvg3CL9KICh0scla0CjU/UPzhLBY8VPU+hTx5/E7pQoOw7XHCG4MgnkpZSz/0uImNiU9rHkAMXFeV2ATjPHVv7H5vbSpdXvooruUyXYAVXwxpAxXzbUk8Hp9XAu4Jthr/tVo6MTIgveCpZbCosdpSyxdEpLzpg== 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=C+vG/RAiZ/4dH4Z4X85IlEeD9hvxjxyvRq+MJcjufmQ=; b=e1TUFuRZk9VdRTcyn9CuLHE59YVlcZUGntYoKpGt2ob1hihwFAzSzCdrnm4BVdEDssAtbmo9ZufG7I/8aTYXfvKUKVZL0Ole8Ueycbl3+HlNNinZft7GdvloNa6XSFAVmKjAvVOs4gGNFSB6N4pMd59keuZyjXMZTMIEEDQa5+Bv1xm4FI9zKOvlgrUazp+APmrcQQikd4J2lPgnfsZo+jViHRSH+kwRyclPGYT0bIwsr58D+k+NkIlMbjOelyn7rhoHZfBYluLZzPbZzlFPf8+KHHHN9pAFnaEQ9IjM/pPVgnBZwrs/HItaR2Fi2pYVt9mT27bbnLwb4ZDxsHv+3g== 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=C+vG/RAiZ/4dH4Z4X85IlEeD9hvxjxyvRq+MJcjufmQ=; b=Mvn6U7fPH25SA5dsgy+LO6mQHCVTPR+d9PSAmxs+AZ4phqqtFQS+e288eRkOLwYiqAIwRffo0+NwbP9l6UebLCc15QEXOnNG9uLsXyQE3pSlLAPinop9Rwjf3bPw84BITcoadfCHp6xnDi8QjqxqI2F9+s0730wVlMI/pAbD560= Received: from DM6PR12MB3865.namprd12.prod.outlook.com (10.255.173.210) by DM6PR12MB3243.namprd12.prod.outlook.com (20.179.105.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 22:41:31 +0000 Received: from DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862]) by DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862%6]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 22:41:31 +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" , "rkagan@virtuozzo.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v4 08/17] kvm: x86: Introduce APICv pre-update hook Thread-Topic: [PATCH v4 08/17] kvm: x86: Introduce APICv pre-update hook Thread-Index: AQHVkQWB8zQYUeS//EGDH65fqyqbPw== Date: Fri, 1 Nov 2019 22:41:31 +0000 Message-ID: <1572648072-84536-9-git-send-email-suravee.suthikulpanit@amd.com> References: <1572648072-84536-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1572648072-84536-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: SN1PR12CA0047.namprd12.prod.outlook.com (2603:10b6:802:20::18) To DM6PR12MB3865.namprd12.prod.outlook.com (2603:10b6:5:1c8::18) 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-ht: Tenant x-ms-office365-filtering-correlation-id: e9448abf-f7e2-4dc2-c80c-08d75f1ca43c x-ms-traffictypediagnostic: DM6PR12MB3243: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:660; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(979002)(4636009)(396003)(346002)(366004)(376002)(39860400002)(136003)(199004)(189003)(66476007)(66446008)(26005)(6506007)(15650500001)(386003)(86362001)(5660300002)(102836004)(4720700003)(305945005)(7736002)(7416002)(76176011)(256004)(14444005)(8936002)(8676002)(186003)(52116002)(6486002)(478600001)(50226002)(71200400001)(71190400001)(81166006)(6436002)(476003)(2906002)(3846002)(6116002)(6512007)(99286004)(4326008)(2616005)(316002)(11346002)(446003)(486006)(81156014)(14454004)(66946007)(36756003)(110136005)(54906003)(66066001)(64756008)(66556008)(25786009)(2501003)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3243;H:DM6PR12MB3865.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: hvP/aqM7FX4P9hvgddhxnHR0M8BuKOJXUq38VtHlYu77887Ag1Gnqj3+WwWyaKv/+pqczeeNfEX5aHQZVnDMEAAa0SFxy9YH2PJgAEwyvF5ijWgcm4pmdkki6ZIPyKAsIAD6Tc9ErYfqRass6L4caKFOAjxFBF1aNatfA724g0FnSL8h0Dysl+h1NffNNnNDOh7oBrLE+n2dtVTTCEsaW6XpmI0vG7Z4I7a1k5kvNINElrIyfIwfqmJJUBUGwWHmWHbovVIHbJiPnlzz+7ajkwPw1d3NxJ+sv/1at5NHELXd++MBDr6v/nbZVpWwOBJjUUTqcd9tVKgKbYaDYOBQCr2BMKGDN1fqT5/3er/+Wbw/AG0Wo2QIv+oxrjWEL3mqnxLwPbEU5c1nFpiejvWiM0cAlLj6x/pNen5WbO8p4TniTaARXGLwXEIeUQLFEKSD MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: e9448abf-f7e2-4dc2-c80c-08d75f1ca43c X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 22:41:31.8452 (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: B4SxX2CCtD/WOGKZo2QPF7dx2ul5EiA2tc44ehi2b6bl3v+LhcWq90Kn+uDqjtqKDP3NV47HDBdXzcju7ukswA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3243 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org AMD SVM AVIC needs to update APIC backing page mapping before changing APICv mode. Introduce struct kvm_x86_ops.pre_update_apicv_exec_ctrl function hook to be called prior KVM APICv update request to each vcpu. Signed-off-by: Suravee Suthikulpanit --- arch/x86/include/asm/kvm_host.h | 1 + arch/x86/kvm/svm.c | 6 ++++++ arch/x86/kvm/x86.c | 2 ++ 3 files changed, 9 insertions(+) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 3b94f42..f93d347 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -1094,6 +1094,7 @@ 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 *kvm, 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); diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 46842a2..21203a6 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -7230,6 +7230,11 @@ static bool svm_need_emulation_on_page_fault(struct kvm_vcpu *vcpu) return false; } +static void svm_pre_update_apicv_exec_ctrl(struct kvm *kvm, bool activate) +{ + avic_update_access_page(kvm, activate); +} + static struct kvm_x86_ops svm_x86_ops __ro_after_init = { .cpu_has_kvm_support = has_svm, .disabled_by_bios = is_disabled, @@ -7307,6 +7312,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, diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 4fab93e..c09ff78 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -7755,6 +7755,8 @@ void kvm_request_apicv_update(struct kvm *kvm, bool activate, ulong bit) } trace_kvm_apicv_update_request(activate, bit); + if (kvm_x86_ops->pre_update_apicv_exec_ctrl) + kvm_x86_ops->pre_update_apicv_exec_ctrl(kvm, activate); kvm_make_all_cpus_request(kvm, KVM_REQ_APICV_UPDATE); } EXPORT_SYMBOL_GPL(kvm_request_apicv_update); From patchwork Fri Nov 1 22:41:32 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11223885 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 85ED81599 for ; Fri, 1 Nov 2019 22:42:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5A68321897 for ; Fri, 1 Nov 2019 22:42:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="TRQByVsU" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728200AbfKAWlm (ORCPT ); Fri, 1 Nov 2019 18:41:42 -0400 Received: from mail-eopbgr720078.outbound.protection.outlook.com ([40.107.72.78]:60224 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728154AbfKAWlk (ORCPT ); Fri, 1 Nov 2019 18:41:40 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UX28UAa/x6e3SQ5etNiuD4nAd/nV6iqcKvBTEVGiSTUh6KJC9Nb7CsL5Id7fl/zWz7zb/RkoCOKWSQngpoJvNzibZSLUX2sBY7u7iZZRSxvT0VtAd40j9oxqYkchIKDZGt1o9myw/UOKcaNkFCVTrQMnTnJ6d6If9CuD+Im2pdE/KYBrGhhUN0tt9KyUBcgO0wwpj291/SoZlrZ/U/+OiR9jh4huOWGeHWt3UrzuJE1cuU4kXhe65inqMal17qvK7O1Q2l/pe/8areskU9Fi4esmbKVJFEsDuZk8b36x2O9rtNiQy7xT709nTvyZ958uNKhAOZ4XrQ3PbmNhrI0TMg== 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=ALxIwlyiTfsO8l7Nb8N0EctsF5F3m8cZQ5pUy5LNTV4=; b=ZsrrVQy06tzF7/hnyVlGd1LeSxm0s2j/2HKyWNxCjiyrDfEpqIGWF5HNgDcckVQ0DtqA44IUqVuplygcLsoLAAHI61wSy1cOuDr7RyxHLwCnP2cwNcrDaWn+JvVJfttRkzaWcqbmRH4f3tuSRSWDa4j0QUp1If5mdR9jM0oQmeaDXvuQTcF45+yk/gxyIpCUEvvyl3/lsy+PdlQN0JmDmJ4qobBQ2JV/36CoqjAudRqiP7vFwvNte/Ywq33G0JI6loKdLMYSByuuVnHQa02pI37YlQC7zrV6ScBj5kGve0A0udcRKczaJFZLprxJTnq8Ep015eOF+U7WmB9U2nqd+A== 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=ALxIwlyiTfsO8l7Nb8N0EctsF5F3m8cZQ5pUy5LNTV4=; b=TRQByVsUBHlpnxZuyFpE0b7jI9/QX7kWq1/nm9owQ4ufJlLfVPcadpdwVF09xQ8nFmcw9lL5lT1v74Hi2UZsHDrUc/3AgFPhwe9z9rOzBQcY7S9J/y27zQT5EvOXbY6pfGZcMGqPPlUuEMIvnxQ3pdFnSKGxjy75fb2xa9+XXrk= Received: from DM6PR12MB3865.namprd12.prod.outlook.com (10.255.173.210) by DM6PR12MB3243.namprd12.prod.outlook.com (20.179.105.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 22:41:33 +0000 Received: from DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862]) by DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862%6]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 22:41:33 +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" , "rkagan@virtuozzo.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v4 09/17] svm: Add support for activate/deactivate AVIC at runtime Thread-Topic: [PATCH v4 09/17] svm: Add support for activate/deactivate AVIC at runtime Thread-Index: AQHVkQWC0JrNHs37ykiq/KcQAHfp2w== Date: Fri, 1 Nov 2019 22:41:32 +0000 Message-ID: <1572648072-84536-10-git-send-email-suravee.suthikulpanit@amd.com> References: <1572648072-84536-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1572648072-84536-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: SN1PR12CA0047.namprd12.prod.outlook.com (2603:10b6:802:20::18) To DM6PR12MB3865.namprd12.prod.outlook.com (2603:10b6:5:1c8::18) 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-ht: Tenant x-ms-office365-filtering-correlation-id: 0b12c9ee-6346-4c57-b1b4-08d75f1ca4fd x-ms-traffictypediagnostic: DM6PR12MB3243: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6430; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(396003)(346002)(366004)(376002)(39860400002)(136003)(199004)(189003)(66476007)(66446008)(26005)(6506007)(386003)(86362001)(5660300002)(102836004)(4720700003)(305945005)(7736002)(7416002)(76176011)(256004)(14444005)(8936002)(8676002)(186003)(52116002)(6486002)(478600001)(50226002)(71200400001)(71190400001)(81166006)(6436002)(476003)(2906002)(3846002)(6116002)(6512007)(99286004)(4326008)(2616005)(316002)(11346002)(446003)(486006)(81156014)(14454004)(66946007)(36756003)(110136005)(54906003)(66066001)(64756008)(66556008)(25786009)(2501003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3243;H:DM6PR12MB3865.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: wV4FHGCq7Gq1SFuR1KI0voOmyemdr80B1b0/4kq5KLhxgQla5FmsdCSUMurOuj3WOH8WOBUyohEArmT9FI+aQr+HQII+GpwWs2VyGuBy0nhwHG+HfkgBEhV4SFevQTg6ugZc1q32OOJ8cCt6aET7YRbO6gL1yGclkG+xuyqreKnMNJisvpROLWjgjSDivwxiercIN6rjQ1svRIzeSvXjXqjPy4oPkg8LDSHpKyFemTWOG4/wi/pQvA9beQwj0czxw0931lVhVdT57Lg7hgEa61DjUd3kbuo8QEiARVIpksSSHVLj3n64rIklLbVBpmgZJkj90dMSBJ5VH4tJlvQ/Ua5AixCZN9RCpPxlTcTy6euc7HF+8d6L8FJheYVwJAvC0XxfvQaOeHWqGRJsop0En7gMNR2b25Yw+/kMgD1UqUFNaAAaBfi9Rexr6ONlh1fT MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0b12c9ee-6346-4c57-b1b4-08d75f1ca4fd X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 22:41:32.9915 (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: Iv+axw7PE4ubyv9e/2rIABm2KsMz1srNOdsdAyPpmFW4u919ocb6Sg68/2xlO7igfCtdulvfbYa1ZgHLY+ijxw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3243 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 | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 21203a6..5b90458 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); @@ -1485,7 +1486,10 @@ 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; + if (kvm_apicv_activated(svm->vcpu.kvm)) + vmcb->control.int_ctl |= AVIC_ENABLE_MASK; + else + vmcb->control.int_ctl &= ~AVIC_ENABLE_MASK; } static void init_vmcb(struct vcpu_svm *svm) @@ -1696,7 +1700,8 @@ static int avic_init_backing_page(struct kvm_vcpu *vcpu) int id = vcpu->vcpu_id; struct vcpu_svm *svm = to_svm(vcpu); - ret = avic_update_access_page(vcpu->kvm, true); + if (kvm_apicv_activated(vcpu->kvm)) + ret = avic_update_access_page(vcpu->kvm, true); if (ret) return ret; @@ -2188,7 +2193,8 @@ 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; + if (irqchip_in_kernel(kvm) && kvm_apicv_activated(kvm)) + svm->avic_is_running = true; svm->nested.hsave = page_address(hsave_page); @@ -2325,6 +2331,8 @@ 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_UPDATE, vcpu)) + kvm_vcpu_update_apicv(vcpu); avic_set_running(vcpu, true); } @@ -5190,17 +5198,25 @@ static int svm_set_pi_irte_mode(struct kvm_vcpu *vcpu, bool activate) return ret; } -/* Note: Currently only used by Hyper-V. */ static void svm_refresh_apicv_exec_ctrl(struct kvm_vcpu *vcpu) { struct vcpu_svm *svm = to_svm(vcpu); struct vmcb *vmcb = svm->vmcb; bool activated = kvm_vcpu_apicv_active(vcpu); - if (activated) + if (activated) { + /** + * 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); svm_set_pi_irte_mode(vcpu, activated); From patchwork Fri Nov 1 22:41:34 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11223871 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 70FE51599 for ; Fri, 1 Nov 2019 22:41:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 451EC218AC for ; Fri, 1 Nov 2019 22:41:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="VAwWIThY" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728176AbfKAWlm (ORCPT ); Fri, 1 Nov 2019 18:41:42 -0400 Received: from mail-eopbgr720065.outbound.protection.outlook.com ([40.107.72.65]:49770 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728156AbfKAWlk (ORCPT ); Fri, 1 Nov 2019 18:41:40 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i654rVownEuxqIHvfUhrG3SqwWjcZiBWUzs4oLgdSbOMXHL1pjnY4JJIRAzLakQhPZvVWgvBP1mKkjE8wJ/AIfKFaHawS5dDhDdhIuHHG2A0SWTFzeu7cwmzrhopEel3HUOUqO363Jx9t4iKylRs6RV9KC3nFOGXakoIMzTGCq2k067fXCszMbMVT812zDiBuGQrKt5H+WZqny9baakGsiZrrsLSOx5//3CXA/VleywWfKusRFyqTCg2/C/SRUfuM5qBqaCaLcZeLI4M/IKi+FADYvis4HRzcl7y/JCQQuHO8lOAqjJZbPc51AQPEh7cMRCSkWT/fS3Wey7Lk0yRhQ== 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=v+N+HPmzEaRM223EXIBc0EtFV5YptWKRhCQ5m0nZrAQ=; b=lvAdtdcvY9bH8PTB81+qvOjI1a7m18InnztdNbh5K4JIb7QtZ2jwRuRFmASvef4KpbUw2b8Lrj/R56ZbhMvo9sXlIoZwlsAS8HZqoM9tvngfvso9IjTz9LIlcKJI3ifA9vZ7N6G3PZ2OCxWHEf/yNnP0qua371sDVOzPD8Z+Syxw/YYvkKw//Vl7qktbvTrrAeXk+IFMOq1+mfr0HVCQDcnyR7MSdDsP7ifvdVANpNbV/WuLO69pWuGEcV68s73lgnr0C9VUB2v4PcoxlmBHam/q00hpA/PS9HQYmg0r15CW7RJV45Nuh6WicOsrhdCdiTk5dTW0NnHfsBIExH1MpA== 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=v+N+HPmzEaRM223EXIBc0EtFV5YptWKRhCQ5m0nZrAQ=; b=VAwWIThYIDFRiTzFJKElQh6BKZ2J6gffYhrsV7l23dwHG5Prdw4e1/5CpFPCeWR7WJd99Gk8ATt4dOAvT6kR70NFhl3E1JmG2yYO00MkfjlsAWCeYgxz10cI8LQzFAsJIFwCKZVotPPnSLBVKMy8yKiZNMVE36DAEeQiq68EpTk= Received: from DM6PR12MB3865.namprd12.prod.outlook.com (10.255.173.210) by DM6PR12MB3243.namprd12.prod.outlook.com (20.179.105.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 22:41:34 +0000 Received: from DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862]) by DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862%6]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 22:41:34 +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" , "rkagan@virtuozzo.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v4 10/17] kvm: x86: hyperv: Use APICv update request interface Thread-Topic: [PATCH v4 10/17] kvm: x86: hyperv: Use APICv update request interface Thread-Index: AQHVkQWDZA/wZ47yIkGHcdV7ZXu7CA== Date: Fri, 1 Nov 2019 22:41:34 +0000 Message-ID: <1572648072-84536-11-git-send-email-suravee.suthikulpanit@amd.com> References: <1572648072-84536-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1572648072-84536-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: SN1PR12CA0047.namprd12.prod.outlook.com (2603:10b6:802:20::18) To DM6PR12MB3865.namprd12.prod.outlook.com (2603:10b6:5:1c8::18) 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-ht: Tenant x-ms-office365-filtering-correlation-id: f7d1b6dc-16f0-48b4-cfcf-08d75f1ca5b8 x-ms-traffictypediagnostic: DM6PR12MB3243: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5516; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(1496009)(396003)(346002)(366004)(376002)(39860400002)(136003)(199004)(189003)(66476007)(66446008)(26005)(6506007)(386003)(86362001)(5660300002)(102836004)(4720700003)(305945005)(7736002)(7416002)(76176011)(256004)(14444005)(8936002)(8676002)(186003)(52116002)(6486002)(478600001)(50226002)(71200400001)(71190400001)(81166006)(6436002)(476003)(2906002)(3846002)(6116002)(6512007)(99286004)(4326008)(2616005)(316002)(11346002)(446003)(486006)(81156014)(14454004)(66946007)(36756003)(110136005)(54906003)(66066001)(64756008)(66556008)(25786009)(2501003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3243;H:DM6PR12MB3865.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: MYwfqqCObG8C9ICRRkzGmQMahmdwizJIIU+KPmS3kYb8kIku741y5IC0bo73DTrHv76sdZbODucn0cmc925Uw1lfhZIhPz8Ml3GEfW2cqr767wEeF135feYjMkXEwTSPJatjOxv2V/LUWWsUbiSyZdPNlGLkJ66F6dmSJT+aM41n8x7n7xBwNO84O0KM4ok4WyYd091MTCxlXwgHB0r3oHXpv6/31iQVSZYn6l5+lLGwWl67RGbsLUfSQuYzVgEoTyqU5PC06UuW/IAyWKBwVtD+c4oLjQF1k9cZuNitvadFxcaS43lY5TodffZfKb+Roud0wefXslMfdrQcfWjSTZ/DSgyGPB9Dtu58835rsNVmevNpMajsdXdCEh8n+FKxcutP0QiILIaym64PiW2FNFiKdK71+jaxERa3QEbR3Q9M2qiWMc6D5T18ndkek6Mp MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: f7d1b6dc-16f0-48b4-cfcf-08d75f1ca5b8 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 22:41:34.2009 (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: BABPmcnQfNk87Hvs39Ia0tzjAsv30JE5/TT5UBCO2+5+88Zj2GTL05RkpALojHPGB7uN7xQbY2sXv5qSZp9yOA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3243 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_request_apicv_update() interface, and introduce a new APICv deactivate bit for Hyper-V. Also, remove the kvm_vcpu_deactivate_apicv() since no longer used. Cc: Roman Kagan Signed-off-by: Suravee Suthikulpanit --- arch/x86/include/asm/kvm_host.h | 2 +- arch/x86/kvm/hyperv.c | 5 +++-- arch/x86/kvm/x86.c | 13 ------------- 3 files changed, 4 insertions(+), 16 deletions(-) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index f93d347..a6475fd 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -855,6 +855,7 @@ enum kvm_irqchip_mode { }; #define APICV_DEACT_BIT_DISABLE 0 +#define APICV_DEACT_BIT_HYPERV 1 struct kvm_arch { unsigned long n_used_mmu_pages; @@ -1421,7 +1422,6 @@ gpa_t kvm_mmu_gva_to_gpa_write(struct kvm_vcpu *vcpu, gva_t gva, 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); bool kvm_apicv_activated(struct kvm *kvm); void kvm_apicv_init(struct kvm *kvm, bool enable); void kvm_vcpu_update_apicv(struct kvm_vcpu *vcpu); diff --git a/arch/x86/kvm/hyperv.c b/arch/x86/kvm/hyperv.c index fff790a..aa93b46 100644 --- a/arch/x86/kvm/hyperv.c +++ b/arch/x86/kvm/hyperv.c @@ -772,9 +772,10 @@ 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. */ - kvm_vcpu_deactivate_apicv(vcpu); + kvm_request_apicv_update(vcpu->kvm, false, APICV_DEACT_BIT_HYPERV); synic->active = true; synic->dont_zero_synic_pages = dont_zero_synic_pages; return 0; diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index c09ff78..0aa2833 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -7189,19 +7189,6 @@ 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_deactivate_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 = false; - kvm_x86_ops->refresh_apicv_exec_ctrl(vcpu); -} - bool kvm_apicv_activated(struct kvm *kvm) { return (READ_ONCE(kvm->arch.apicv_deact_msk) == 0); From patchwork Fri Nov 1 22:41:35 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11223887 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 1E5931599 for ; Fri, 1 Nov 2019 22:42:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E78EB21897 for ; Fri, 1 Nov 2019 22:42:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="MRD+5IsQ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728396AbfKAWmR (ORCPT ); Fri, 1 Nov 2019 18:42:17 -0400 Received: from mail-eopbgr720065.outbound.protection.outlook.com ([40.107.72.65]:49770 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727880AbfKAWlm (ORCPT ); Fri, 1 Nov 2019 18:41:42 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bSKALG7bzqEl1oyNtbyDa+ARfbd0LAcIHDred0K57EKUbHC/BjQGpL6BN2LHTi+jw+vxL8oz9bdQi45KbQnFBqNG2fofwzry+YwY+2VAKThWWoENRQKvabTK3lF1CIREHoDYh0gQcf9XB2TRyXtbrMe0Ncc6mCw6e6503y0NOQT0vKhN1EjKbD5ev3EuIXc0mwEgRckQxgMDQPDwqMxhw6VLSssKE+ZLn7dypdzmv1LmmnMw1hL/B8gylTVj2jPM2rGyi24160TodPz/f0M4cbd44aF+lvDkm6IC+wGfn0RoLWmEAi6/lU85WI2qBEvJ71m3TkU46GD9+JORB/k2Uw== 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=9qWbP1kTK2xxGh7lUWAsWt2JK2ILERTxcOIL3K937EA=; b=c9UFdYH2F6nAjzUYol5G4VMPN34S+Ga34MqXuta3ry60g2o6Mwsd0mPirEc5YiL6DBfkGVvEBhtLGjuH1IsI3DPboVKKtKqO5UU9EjI4k5YadT5ydhY1VeGID9V2HgxjZRHWfaPNFO62OHIIZl2WMuJ/7LloNVclitfd7mN7x543RL9lYW73NKhMNFu73UuKDr/rAXQpoVJNHvzWQo/zkrG4JQuwP3lRtGt+z6WZoRAPq3csyUiVVqzYKcIX1cuMf95dF84a/sNSKiTmZpEgb/QRzqruXDvfS50Zlj6pekXcz6OGiU0RtMrMznjOtKH6KA554hU5C/rDHFkiDH9QIw== 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=9qWbP1kTK2xxGh7lUWAsWt2JK2ILERTxcOIL3K937EA=; b=MRD+5IsQ7eSe5Bj/UqBxbT37QeivRNIHC+3Pod8gkV5Tl2wr2EK3EROExtzoqOBcJH6zEEEvbkSHxu1vfcPd1Q1XAVYVFEzXr/Zl0550Tohj3dtg7FiBYK+S/D4Rt1VVyjocDqxhchuAKfQK6c06H8S0VXtx70TYbPKD0YPT9gk= Received: from DM6PR12MB3865.namprd12.prod.outlook.com (10.255.173.210) by DM6PR12MB3243.namprd12.prod.outlook.com (20.179.105.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 22:41:35 +0000 Received: from DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862]) by DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862%6]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 22:41:35 +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" , "rkagan@virtuozzo.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v4 11/17] svm: Deactivate AVIC when launching guest with nested SVM support Thread-Topic: [PATCH v4 11/17] svm: Deactivate AVIC when launching guest with nested SVM support Thread-Index: AQHVkQWE5V+cC6Hpf0OQw3ASVtcOMQ== Date: Fri, 1 Nov 2019 22:41:35 +0000 Message-ID: <1572648072-84536-12-git-send-email-suravee.suthikulpanit@amd.com> References: <1572648072-84536-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1572648072-84536-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: SN1PR12CA0047.namprd12.prod.outlook.com (2603:10b6:802:20::18) To DM6PR12MB3865.namprd12.prod.outlook.com (2603:10b6:5:1c8::18) 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-ht: Tenant x-ms-office365-filtering-correlation-id: 838a0d0f-b918-4842-3ac0-08d75f1ca686 x-ms-traffictypediagnostic: DM6PR12MB3243: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4714; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(1496009)(396003)(346002)(366004)(376002)(39860400002)(136003)(199004)(189003)(66476007)(66446008)(26005)(6506007)(386003)(86362001)(5660300002)(102836004)(4720700003)(305945005)(7736002)(7416002)(76176011)(256004)(14444005)(8936002)(8676002)(186003)(52116002)(6486002)(478600001)(50226002)(71200400001)(71190400001)(81166006)(6436002)(476003)(2906002)(3846002)(6116002)(6512007)(99286004)(4326008)(2616005)(316002)(11346002)(446003)(486006)(81156014)(14454004)(66946007)(36756003)(110136005)(54906003)(66066001)(64756008)(66556008)(25786009)(2501003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3243;H:DM6PR12MB3865.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: nu61KVXnSZON0PGwsykZz/mg9bc3/c93gmUyKDUnGFZ8OCDcfKkw0DeGhI2HoKkvQCUGfV82wfEjJLuHeo0o2G+AylIgvuy2XoDrqT72Y+1UycLQv00xBzYkGTQ7UWdYc9z45FZJ5VsP9zerm8LTbQxRgB7ZOWenv047Zd5HruBOo3Lc2Vx8Zw4YBmVItT6nI9gUE7RbgV7E0bLQHBVLx23znewklrIMul1kD3o76Dtx8gnLYbZ02Kx3JTDipc9AHgbOlgwlFigFYR7Qx3D0jVGDsL8PuYPs0eo5vWoJIUP+X7W3c4PBNPs8wQ2y4c/JoP7oa8vxK/84174XeAkuuMuA3R4pZQJVq1dW9Xl73NYxlFn/3Es5mKUd/7cK/VKSYOeOAgv9FxUUQTe9bH7w2j1kBH9oDKvaCem/r9PeK9B390RL6xANP/cM0k8un6St MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 838a0d0f-b918-4842-3ac0-08d75f1ca686 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 22:41:35.6790 (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: 4Pt4Sb+x0zb9zaI8kC4+DEmd9Sm6PM/6kmAf4iyNLD/fT3AsS1dBu5F4P3REE92hi64x4cxbL4dSKim6g9xptw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3243 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, deactivate 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/include/asm/kvm_host.h | 1 + arch/x86/kvm/svm.c | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index a6475fd..55d6476 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -856,6 +856,7 @@ enum kvm_irqchip_mode { #define APICV_DEACT_BIT_DISABLE 0 #define APICV_DEACT_BIT_HYPERV 1 +#define APICV_DEACT_BIT_NESTED 2 struct kvm_arch { unsigned long n_used_mmu_pages; diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 5b90458..7f59b1a 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -5984,6 +5984,14 @@ 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)) + kvm_request_apicv_update(vcpu->kvm, false, + APICV_DEACT_BIT_NESTED); } static void svm_set_supported_cpuid(u32 func, struct kvm_cpuid_entry2 *entry) From patchwork Fri Nov 1 22:41:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11223873 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 7D4991599 for ; Fri, 1 Nov 2019 22:41:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4504A2190F for ; Fri, 1 Nov 2019 22:41:51 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="YQkmHX+6" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728276AbfKAWlu (ORCPT ); Fri, 1 Nov 2019 18:41:50 -0400 Received: from mail-eopbgr720078.outbound.protection.outlook.com ([40.107.72.78]:60224 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728111AbfKAWlp (ORCPT ); Fri, 1 Nov 2019 18:41:45 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=n2IFKz7enuPS1832uyyFyjImNHKa5QaS2iXBFwhKCzkE5mzc03uQy5EXRhduPcGu2Lt51ZfMO8jpr+NFUrn8U+og/jdkMA1h4pw1RI/IUA1DtInqNIJLZfA0R9Yo2QC89+kh4yyNRHuHitwdfx/3PnkuOeUGuyBykjOgUcp8es0PWS0rjRq3l+WnFSWPsHi5111zgE3tk6OK4sd+GZCaU7EIJEOR7qRjTkscsMYv9gj7fu+jybxWzgQMAje1QDCXiB3esomobSLs7aKtfCViaR133Bzi+My8Lh3EVvlTAJeol5V5/5K69LpUKQeA4gRy3zrCh8REyQb5wmtBoO0cBQ== 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=PnVBJ6mTvj+eS9z8oa/32ps1HMRlVkTCji/P04Ym34A=; b=b5NYHc6g0f361SpYPPfoO1Ep5o900KySuwOxlCs0fbyjtBGpkOi7F3lXPntWQMJ1NJAJl910E1dbhzYmfzVzCylFag7YctKtBhqgOofzO+BR4bNsVlqgqc5U18w+HdR+VI6lREhfrDe5LWC4fao50AvtTYZ7t7kPecqPQyIrDR2JWyNtM55c/qMoVEyGVUt2H9aYXPowAkGM5r2pnt7D8iLShH8cp/IGhPROfE4mn6kIB6eMGdh31/qPstk75W1dXSw1O0sUL0XAjgXIrT3rDcJcJb7FImHbJQxA54M4bwuehuKkiCPyBl4ZvGNX/gzYO4V4+7aZ5Y6JeKzibhoyWQ== 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=PnVBJ6mTvj+eS9z8oa/32ps1HMRlVkTCji/P04Ym34A=; b=YQkmHX+66hQHuL3ya/YLOLhCmGaMWyRQM/aqLoBqNTcdXgqkyeLsBwpy7rSRYhwtJ5TuBOxW0FGVXxqxbuUjt4yo7asMhwb0wf8M4BzLkwydPDjiHcJohi3rbOJygGT2vJUBMvwryhB8jJOmDY6PLZoFr8rd+tihZ0UqXQhKOnA= Received: from DM6PR12MB3865.namprd12.prod.outlook.com (10.255.173.210) by DM6PR12MB3243.namprd12.prod.outlook.com (20.179.105.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 22:41:36 +0000 Received: from DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862]) by DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862%6]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 22:41:36 +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" , "rkagan@virtuozzo.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v4 12/17] svm: Temporary deactivate AVIC during ExtINT handling Thread-Topic: [PATCH v4 12/17] svm: Temporary deactivate AVIC during ExtINT handling Thread-Index: AQHVkQWEgZt6FvN2HkO+qT7S8/jO9g== Date: Fri, 1 Nov 2019 22:41:36 +0000 Message-ID: <1572648072-84536-13-git-send-email-suravee.suthikulpanit@amd.com> References: <1572648072-84536-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1572648072-84536-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: SN1PR12CA0047.namprd12.prod.outlook.com (2603:10b6:802:20::18) To DM6PR12MB3865.namprd12.prod.outlook.com (2603:10b6:5:1c8::18) 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-ht: Tenant x-ms-office365-filtering-correlation-id: 1e51b9ab-1daa-4f18-ab6d-08d75f1ca73f x-ms-traffictypediagnostic: DM6PR12MB3243: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(1496009)(396003)(346002)(366004)(376002)(39860400002)(136003)(199004)(189003)(66476007)(66446008)(26005)(6506007)(386003)(86362001)(5660300002)(102836004)(4720700003)(305945005)(7736002)(7416002)(76176011)(256004)(14444005)(8936002)(8676002)(186003)(52116002)(6486002)(478600001)(50226002)(71200400001)(71190400001)(81166006)(6436002)(476003)(2906002)(3846002)(6116002)(6512007)(99286004)(4326008)(2616005)(316002)(11346002)(446003)(486006)(81156014)(14454004)(66946007)(36756003)(110136005)(54906003)(66066001)(64756008)(66556008)(25786009)(2501003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3243;H:DM6PR12MB3865.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: kcar/xFh0CvCtY6V+keASgrt633f/XVNiodfDiSrr7LUTLChSpYsKjtzxJH2nTmU+fqRsLm+zJhMseGYgO2uIEgfhYa1G4eJv4L4J7bID2AHttNxq3OB0wKi4U9nCXkgF/rQ598F2cecgjJHN7cImNB2WvCflDEFzMEgFQYvRq4U+o222bx4hfWL28MwFcKlUHaHaLAWo0yZFh7sDETVEqWq4FjFUt5+Lvg8j1rSM+6g4GFRsrWqcmzmpUVFFiOaQLjLtdCProOi9J6MsgdQKapQMoKyMRh6NPBNQk2dwos4/5Q0DHrsyFpAUKp/5s778nzHNR+adKgiSkBniQNbrf96GXAl2//pnbz9kGTiY2ssmDUy0Za/5GIHw8+J70+KFW/Z77EqRFTbm8byLLV8vHaJjaBWQ7AYbPZSASwsi4MkCxddrRPXldBJt9a3uV48 MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1e51b9ab-1daa-4f18-ab6d-08d75f1ca73f X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 22:41:36.7584 (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: wblYuEeNiXVE0jPBumSpyjHsWT4df6z2+7UqrAh4BtCUqqwv86itnatfzQM4w8I1ZX+iH6yY7ULTfE511TY7Yg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3243 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/include/asm/kvm_host.h | 1 + arch/x86/kvm/svm.c | 37 ++++++++++++++++++++++++++++++++++--- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 55d6476..fe61269 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -857,6 +857,7 @@ enum kvm_irqchip_mode { #define APICV_DEACT_BIT_DISABLE 0 #define APICV_DEACT_BIT_HYPERV 1 #define APICV_DEACT_BIT_NESTED 2 +#define APICV_DEACT_BIT_IRQWIN 3 struct kvm_arch { unsigned long n_used_mmu_pages; diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 7f59b1a..0e7ff04 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_update_avic(struct kvm_vcpu *vcpu, bool activate); +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); @@ -4479,6 +4481,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_update_avic(&svm->vcpu, true); + svm->vmcb->control.int_ctl &= ~V_IRQ_MASK; mark_dirty(svm->vmcb, VMCB_INTR); ++svm->vcpu.stat.irq_window_exits; @@ -5166,6 +5177,21 @@ static void svm_hwapic_isr_update(struct kvm_vcpu *vcpu, int max_isr) { } +static void svm_request_update_avic(struct kvm_vcpu *vcpu, bool activate) +{ + if (!lapic_in_kernel(vcpu)) + return; + /* + * kvm_request_apicv_update() expects a prior read unlock + * on the the kvm->srcu since it subsequently calls read lock + * and re-unlock in __x86_set_memory_region() + * when updating APIC_ACCESS_PAGE_PRIVATE_MEMSLOT. + */ + srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx); + kvm_request_apicv_update(vcpu->kvm, activate, APICV_DEACT_BIT_IRQWIN); + vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu); +} + static int svm_set_pi_irte_mode(struct kvm_vcpu *vcpu, bool activate) { int ret = 0; @@ -5504,9 +5530,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 @@ -5516,6 +5539,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_update_avic(vcpu, false); svm_set_vintr(svm); svm_inject_irq(svm, 0x0); } From patchwork Fri Nov 1 22:41:37 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11223883 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 55D4C139A for ; Fri, 1 Nov 2019 22:42:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 2AF02218DE for ; Fri, 1 Nov 2019 22:42: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="EG4sMyfK" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728208AbfKAWln (ORCPT ); Fri, 1 Nov 2019 18:41:43 -0400 Received: from mail-eopbgr720065.outbound.protection.outlook.com ([40.107.72.65]:49770 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728178AbfKAWlm (ORCPT ); Fri, 1 Nov 2019 18:41:42 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kX2TEDgtK+lvyHC9kbDu+N1tPU3vFSYObn5JM8hCKFJ3PS12EwkrS97mhQMmRYSQIwmDT7yG6Ofi+n/lROgR0xUylmxh1/xYDy8XwgKiyaXl1XAeR6mLs3yQvd386xrusM/sLxpdDv0jtUC7Taj1RB9dnengol0S2JAU0pn1I+yYBRPqlPizqQrAa8Oq6eKOacEgd+Cnc9nbPHxuwhjhVVxN2j33L+sU74gLctq7UdX71WUazj4ao419EPMK0IDf513yfAv7cuh7wopxNuMgaQKzkHDx2pxuNU3k/q3zM9DUkX5uEJkVCPtiY0XMOwMnyuS3XbBDE2eyjGlsGc+h2g== 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=Y2Tp4WKVbXYrtXYVqN/q/J4DyH0704uY06p08APXWkI=; b=QtrCLEjC5zoCRTC6HePc8xwtMpzPmanqafVeHehaZRw5vDu79OarDh8fEK/2yJRJNdHvsbeU0UaBMBo1wRnHJqkk0iHetmUm3URtysnMVr4LCSJsJZyxCb2K7ljo5Qtfaq7guVeOwhHdqeq6pBFeY/X8pTQUMeFGIEyMHz/Y3K2FoRSXQ/RRSVl0Aa33q8jJpaWtefs3RVUgiJ2+Tpozz4iaihBMzpeHvOdJeJkfoiswW4/UBnbjesFw5JlOAqj1xaBEYmjTIRvHcDfBdE3LOK3wjUb/uO2xAc+K+0OnVT2bi3Wp4mTeF/AUuNH2noJm8uLvIn1+f2GuFSY1FccJWQ== 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=Y2Tp4WKVbXYrtXYVqN/q/J4DyH0704uY06p08APXWkI=; b=EG4sMyfKTkGf5we/YiqJ1QlQwLi6AOS3uKqwRxosBG591fL6e24fRlFIn1biI2/uxP7nHN31vct9Gu1i+Hg409chihqY5U+SJnmwAguqR8U5KFQytON4HH6GGsXd6JGTZTk17blcGhkDXbDMOFXyHYbGhW4gKBLquXmlCU/nHyE= Received: from DM6PR12MB3865.namprd12.prod.outlook.com (10.255.173.210) by DM6PR12MB3243.namprd12.prod.outlook.com (20.179.105.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 22:41:38 +0000 Received: from DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862]) by DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862%6]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 22:41:38 +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" , "rkagan@virtuozzo.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v4 13/17] kvm: i8254: Deactivate APICv when using in-kernel PIT re-injection mode. Thread-Topic: [PATCH v4 13/17] kvm: i8254: Deactivate APICv when using in-kernel PIT re-injection mode. Thread-Index: AQHVkQWFwL1+c1CZPkWuTq14KdLXDQ== Date: Fri, 1 Nov 2019 22:41:37 +0000 Message-ID: <1572648072-84536-14-git-send-email-suravee.suthikulpanit@amd.com> References: <1572648072-84536-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1572648072-84536-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: SN1PR12CA0047.namprd12.prod.outlook.com (2603:10b6:802:20::18) To DM6PR12MB3865.namprd12.prod.outlook.com (2603:10b6:5:1c8::18) 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-ht: Tenant x-ms-office365-filtering-correlation-id: f184d363-865c-4abf-b3c7-08d75f1ca7fb x-ms-traffictypediagnostic: DM6PR12MB3243: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4714; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(1496009)(396003)(346002)(366004)(376002)(39860400002)(136003)(199004)(189003)(66476007)(66446008)(26005)(6506007)(386003)(86362001)(5660300002)(102836004)(4720700003)(305945005)(7736002)(7416002)(76176011)(256004)(14444005)(8936002)(8676002)(186003)(52116002)(6486002)(478600001)(50226002)(71200400001)(71190400001)(81166006)(6436002)(476003)(2906002)(3846002)(6116002)(6512007)(99286004)(4326008)(2616005)(316002)(11346002)(446003)(486006)(81156014)(14454004)(66946007)(36756003)(110136005)(54906003)(66066001)(64756008)(66556008)(25786009)(2501003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3243;H:DM6PR12MB3865.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 2AbdUbA4nuUOVGK9sK6kwU7GR7u5+Apfm/+Ml7D0q3vQn9E5sqsnfN63u1sX08Rkvac8D5vpun+3g+PB9c9f3Sp1VzF4zhmb63PPKxxFWp9v1V0WL/52IWo6Fyi3hfBqxu0EhVAPybJz7hvd9JFntCvWTxgOyDpfTtITvGhhUPC6JbIi+j9ArlNdG4blcMBE5CF4NIU5W0djP3k+qTg52m4uvKVo09nN61DAKcN0kIeHIwA+gj67rEhub6lDJPGQo3ntt2PPLZLs8ezU9F3W5z7EbX8BAvv/bKQPCawX4A9o8XVe/vkVYI+2a8t4EC7MnGgNkV49PISzf+wfuIZn7qbcbbftb5kM/cQQDvQq4Fw0squMfL7a4kb/5Fd+I34HT5v0+F/OEca0Nao7f0XPU1/5fuSH1WrQngLfAdI3tbe2xXMQxmfYHXw4nGT74gl6 MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: f184d363-865c-4abf-b3c7-08d75f1ca7fb X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 22:41:37.9837 (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: VzdzFnU1KkLDCgQ4xZ/i1ptFQN52kuuwrjVMgUDyC/S599yW8/w9lTJ7tuJ6xH7w8pr9Kh22buE4Lv/N/VVMqw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3243 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org AMD SVM AVIC accelerates EOI write and does not trap. This causes in-kernel PIT re-injection mode to fail since it relies on irq-ack notifier mechanism. So, APICv is activated only when in-kernel PIT is in discard mode e.g. w/ qemu option: -global kvm-pit.lost_tick_policy=discard Suggested-by: Paolo Bonzini Signed-off-by: Suravee Suthikulpanit --- arch/x86/include/asm/kvm_host.h | 1 + arch/x86/kvm/i8254.c | 10 ++++++++++ arch/x86/kvm/svm.c | 8 +++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index fe61269..460f7a4 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -858,6 +858,7 @@ enum kvm_irqchip_mode { #define APICV_DEACT_BIT_HYPERV 1 #define APICV_DEACT_BIT_NESTED 2 #define APICV_DEACT_BIT_IRQWIN 3 +#define APICV_DEACT_BIT_PIT_REINJ 4 struct kvm_arch { unsigned long n_used_mmu_pages; diff --git a/arch/x86/kvm/i8254.c b/arch/x86/kvm/i8254.c index 4a6dc54..3f77fda 100644 --- a/arch/x86/kvm/i8254.c +++ b/arch/x86/kvm/i8254.c @@ -295,12 +295,22 @@ void kvm_pit_set_reinject(struct kvm_pit *pit, bool reinject) if (atomic_read(&ps->reinject) == reinject) return; + /* + * AMD SVM AVIC accelerates EOI write and does not trap. + * This cause in-kernel PIT re-inject mode to fail + * since it checks ps->irq_ack before kvm_set_irq() + * and relies on the ack notifier to timely queue + * the pt->worker work iterm and reinject the missed tick. + * So, deactivate APICv when PIT is in reinject mode. + */ if (reinject) { + kvm_request_apicv_update(kvm, false, APICV_DEACT_BIT_PIT_REINJ); /* The initial state is preserved while ps->reinject == 0. */ kvm_pit_reset_reinject(pit); kvm_register_irq_ack_notifier(kvm, &ps->irq_ack_notifier); kvm_register_irq_mask_notifier(kvm, 0, &pit->mask_notifier); } else { + kvm_request_apicv_update(kvm, true, APICV_DEACT_BIT_PIT_REINJ); kvm_unregister_irq_ack_notifier(kvm, &ps->irq_ack_notifier); kvm_unregister_irq_mask_notifier(kvm, 0, &pit->mask_notifier); } diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 0e7ff04..9812feb 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -1679,7 +1679,13 @@ static int avic_update_access_page(struct kvm *kvm, bool activate) int ret = 0; mutex_lock(&kvm->slots_lock); - if (kvm->arch.apic_access_page_done == activate) + /* + * During kvm_destroy_vm(), kvm_pit_set_reinject() could trigger + * APICv mode change, which update APIC_ACCESS_PAGE_PRIVATE_MEMSLOT + * memory region. So, we need to ensure that kvm->mm == current->mm. + */ + if ((kvm->arch.apic_access_page_done == activate) || + (kvm->mm != current->mm)) goto out; ret = __x86_set_memory_region(kvm, From patchwork Fri Nov 1 22:41:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11223875 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 C75FE139A for ; Fri, 1 Nov 2019 22:41:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A602121A4A for ; Fri, 1 Nov 2019 22:41:51 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="g412diC8" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728297AbfKAWlv (ORCPT ); Fri, 1 Nov 2019 18:41:51 -0400 Received: from mail-eopbgr720065.outbound.protection.outlook.com ([40.107.72.65]:49770 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728206AbfKAWlp (ORCPT ); Fri, 1 Nov 2019 18:41:45 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=m7dURyvwTpk6A9yowlH5mizgs/oJ37shB25I0pD0iJx/K2gwJBbhKXwzEe8wJ04DBkGaPfbeiTWM0Ai0Arn1pr2dtu3dghD/HfwyKSseZQ57mKpQ6vSYDunITlNDESvcCm4QVUXGrHpCICBmyerjnfJJ6Z3GxT6FU3ujBtsLrOZW2AryILrj7LnUnmyaQsy8d20UH/91wMzdDh8DW0r2fTqiztsVeUwhpYblJckxC3oAs9/PEYpuyxkHiS+2Qmu7C5xOCRvRXeleCR+45kDP4ql879Jpg40apbnPdANTr6/0sFp01wh12vA2zxlUHbf1Kw4/kuU+nxkxM6V04MdF3w== 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=WItHlX2xhz/0kTfpT8F/2/emW56oZMiKbdc+KwU9cS0=; b=BWBR5+Og+i19XGn+EqsQJ4XvEb1jgJXHOg+i1R8RQ9Lw0HOPmzJNdeL49qdBzOd/qShLBK+I6tN+ppuWM/2r5MezQT+CcNR+kRdUjLmxJKDIrQmvn+cGfWtUejVc9Nd4k4CoMMi0UX3/4Uhf7bJYMyXigExevDqo2E2dS+4SbhZ2F7tEPXy/ccnF1naiBIHDpuEn0WOdMTsehtEpi27GAevBfONUW4vNRuEhRz8m/Av26zNhczAZ0/XTs6JIj0SH0gHIuLsS0Y6T/CtSFDdOIPrGIFKbTeYib9z/ubP+FvRkYuZW+LwN3gbxoxUHjqTV+hSVcSonI5RkpSLQLrqBhQ== 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=WItHlX2xhz/0kTfpT8F/2/emW56oZMiKbdc+KwU9cS0=; b=g412diC8mWomw8y+BE6k2sggKiEpvIShnLl9LlroQyxrwCpSq7wDkiYONzv0vbxh2rajmFFclB5DRSLtBOs6mwgDG/wIIvKseEkR5LeWDgR8YNIs4oUPwwLiLQUJFBYM6dkPJs6AxZvh1sbDiYcvC+ymKJomMWo3EEq2h0YwPIM= Received: from DM6PR12MB3865.namprd12.prod.outlook.com (10.255.173.210) by DM6PR12MB3243.namprd12.prod.outlook.com (20.179.105.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 22:41:39 +0000 Received: from DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862]) by DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862%6]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 22:41:39 +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" , "rkagan@virtuozzo.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v4 14/17] kvm: lapic: Clean up APIC predefined macros Thread-Topic: [PATCH v4 14/17] kvm: lapic: Clean up APIC predefined macros Thread-Index: AQHVkQWG3RtYl59N/kCcrpOQl+z4tw== Date: Fri, 1 Nov 2019 22:41:39 +0000 Message-ID: <1572648072-84536-15-git-send-email-suravee.suthikulpanit@amd.com> References: <1572648072-84536-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1572648072-84536-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: SN1PR12CA0047.namprd12.prod.outlook.com (2603:10b6:802:20::18) To DM6PR12MB3865.namprd12.prod.outlook.com (2603:10b6:5:1c8::18) 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-ht: Tenant x-ms-office365-filtering-correlation-id: c9ce428c-fb0f-414b-c147-08d75f1ca8ac x-ms-traffictypediagnostic: DM6PR12MB3243: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6108; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(1496009)(396003)(346002)(366004)(376002)(39860400002)(136003)(199004)(189003)(66476007)(66446008)(26005)(6506007)(386003)(86362001)(5660300002)(102836004)(4720700003)(305945005)(7736002)(7416002)(76176011)(256004)(14444005)(8936002)(8676002)(186003)(52116002)(6486002)(478600001)(50226002)(71200400001)(71190400001)(81166006)(6436002)(476003)(2906002)(3846002)(6116002)(6512007)(99286004)(4326008)(2616005)(316002)(11346002)(446003)(486006)(81156014)(14454004)(66946007)(36756003)(110136005)(54906003)(66066001)(64756008)(66556008)(25786009)(2501003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3243;H:DM6PR12MB3865.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: uKBuN8oi2Uh+Q21js0UUTAFsBW6K0kRVa5mJ54F2Qggx0BWi6zMVBg/WfDO95tVHwgRyetxCzsYkgp6RT4VTdFOAKTQecatkCHCBWOFPfYOorTQPFR6MW96fIkbEc7MWMNbpWICXc5pqG3c0yJFZ1suZt3WYMJPAFqwpGiCZr/DR9NQmv+MM1Mh7sxnhNXFiTz+LKT77MisjKz2H7kITH4IsVJJ7LsxDBI+6PKTU63wGFlICGG+gMawsrTcetvJN0UfVv/szZYG2B5VLMPI0jJYWyjxbJ2asfVQik9Iz95VLIjfUwHcNR7cDwFPnOsYaYyOhT9SzU9cgqKrdg4aCjIQrSK4V01oPJvoVBs9OobzGFOGRab1ug/3Lm2A/O5RTvD1gGLXD4NLAG6Mc0vpbdD99Nve0a4V3zNi3KM7h/VQB8DT625q1r0E2ll8eygoT MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: c9ce428c-fb0f-414b-c147-08d75f1ca8ac X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 22:41:39.1380 (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: CKf0yLFuFUXXmwofBZFM8pL7tabe4+ffgdH2+hIfiIW/2CClA9JiCTjhajzXkFwWiS76uZ4Hq/Q0YU5xRxyJOQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3243 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 4654230..07e154e 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 @@ -575,9 +572,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(); @@ -808,7 +805,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 @@ -1206,10 +1203,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 Nov 1 22:41:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11223881 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 6F9AA1599 for ; Fri, 1 Nov 2019 22:42:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3987A21897 for ; Fri, 1 Nov 2019 22:42:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="VZNGMhSL" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728258AbfKAWlt (ORCPT ); Fri, 1 Nov 2019 18:41:49 -0400 Received: from mail-eopbgr720065.outbound.protection.outlook.com ([40.107.72.65]:49770 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728238AbfKAWlr (ORCPT ); Fri, 1 Nov 2019 18:41:47 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZOd/zpRtgXb4cMWTQ4ywoKW4v25UXyGpJXFlZf/9V3daE16BDdqJ4TialcWU8Zjqj0w7aKj2bAcqxwTvSskb0zDMCqQ/GmvuieVxT1DTIwuWHmYR9hHy/Y4xG5CS84yDuZRSfsQAKOnXQOG9WX9tq+uo468CW7XaC73cCmHF2rBkDAzuphmKbAw7duXYkHqRzRzgGBWQbojLWKFeqFUxhzqrRIilRupSHcpzhgrhdcGsvD3Bqxlv+iQw+Q1/obN6E7O7nh99IfQUDqxbznPrxGQBd5lS937GioEbNLt+/7HKLKIq1DVqjeWOGIzjFS9rE7bbqOMUnsPRn5HEHhE1XQ== 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=CxT9MzZ8Br3DlKClZDKqnvBABopyLoZ+1hnw1m/sEorf0ifs2Nnm76i+EIbC/6Cs3BHIeNOybl3zJOCEZRI2iccELor4yrRyAUxWW8P+aE+B7dwkhB/ZSyjvZmnuTh8VJowm3L6FZngaPZrH3Z2iGa+pFfCGvt1fn4Ta0LwSc2bcjFOp3/4ZBUDN1zq+JClD9oatv92DmchiAC60/EmkiZLIi9WtSd4iE44W4WRh3OLI7S6uGOvGKiDUjEshGev5kqrRk1Gtgp1BFCHJEUr6kTaf680dQ3h1ewdnOLidYYYp7RWEVRBdi5O8TplaTPk2DN4FBy0eOnZdehmf6noLKg== 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=VZNGMhSL+A+sjW+4ZKiKr+WrsYX4qBLCoT0E+4qkrLbPekf9S96vNY1alI7c4Ciu+J/PmIyv8YMUGY0h3S7Xlao1F+B/u2TAu/wT7TJrJSoQQjs6LMnypjWoPuFFjPr5i712bdPfYZx/tg539hQXiCD7JPsTb6AzjOxEd4xSMbk= Received: from DM6PR12MB3865.namprd12.prod.outlook.com (10.255.173.210) by DM6PR12MB3243.namprd12.prod.outlook.com (20.179.105.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 22:41:40 +0000 Received: from DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862]) by DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862%6]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 22:41:40 +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" , "rkagan@virtuozzo.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v4 15/17] kvm: ioapic: Refactor kvm_ioapic_update_eoi() Thread-Topic: [PATCH v4 15/17] kvm: ioapic: Refactor kvm_ioapic_update_eoi() Thread-Index: AQHVkQWGNwVFfntfBk6Z1WAg4bf9EA== Date: Fri, 1 Nov 2019 22:41:40 +0000 Message-ID: <1572648072-84536-16-git-send-email-suravee.suthikulpanit@amd.com> References: <1572648072-84536-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1572648072-84536-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: SN1PR12CA0047.namprd12.prod.outlook.com (2603:10b6:802:20::18) To DM6PR12MB3865.namprd12.prod.outlook.com (2603:10b6:5:1c8::18) 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-ht: Tenant x-ms-office365-filtering-correlation-id: f52c0367-f623-44a3-7cd2-08d75f1ca956 x-ms-traffictypediagnostic: DM6PR12MB3243: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4303; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(1496009)(396003)(346002)(366004)(376002)(39860400002)(136003)(199004)(189003)(66476007)(66446008)(26005)(6506007)(386003)(86362001)(5660300002)(102836004)(4720700003)(305945005)(7736002)(7416002)(76176011)(256004)(14444005)(8936002)(8676002)(186003)(52116002)(6486002)(478600001)(50226002)(71200400001)(71190400001)(81166006)(6436002)(476003)(2906002)(3846002)(6116002)(6512007)(99286004)(4326008)(2616005)(316002)(11346002)(446003)(486006)(81156014)(14454004)(66946007)(36756003)(110136005)(54906003)(66066001)(64756008)(66556008)(25786009)(2501003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3243;H:DM6PR12MB3865.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Ttjjt8gHYUOBlJLsf7OqVuXaiqpbiQVvoa1tZpX8ONIg7e8cJcPa33jqwHr+Jja9zXiiD9AzwsQBcxMxDfnzYZqS5q56OguGb9VNT2UmTpZll1/+vCLV3gxKhpsEy9N76uX4NqEbdKX8WoFzbAg/oM0lm13VoYDld38XF89lfDb6wbZ6TrYQ5KLCHqBPaYZfVcvyuY3AliY6Iv7MsAUm6sJmWuxJ3mS0gZFwQK2/bFQbefNDCtWzh7vTxhyGeubHTOYst+GAP6aMTuusHcSTbIkWM0gtmQcOWkrQjYwEFLsyeYkPsWetq4BUlMbnHtJYGnSXWRCAPdDREkV8RVk0bShxKpI0r8/s+8y4ueZHMobhr6ZcAOp5nktQW45gakJiBNmXm0q45X9nOqJUbYz6aualyaD+7oPgaX7rgDqzoZueN0NmqyxEMc+r5qKY+hK+ MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: f52c0367-f623-44a3-7cd2-08d75f1ca956 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 22:41:40.2824 (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: QAyRqoZf7xjrigshhCknvkLbfw+LhDLr9Or1KPxHDvC3XT0fxhqtnBfqtc1sISylfTvEPWKfVDR2bSVJLHh1Mw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3243 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 Nov 1 22:41:41 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11223877 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 4BFBA15AB for ; Fri, 1 Nov 2019 22:41:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 20D9D21D71 for ; Fri, 1 Nov 2019 22:41: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="Gh46NuHw" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728310AbfKAWlv (ORCPT ); Fri, 1 Nov 2019 18:41:51 -0400 Received: from mail-eopbgr720065.outbound.protection.outlook.com ([40.107.72.65]:49770 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728266AbfKAWlu (ORCPT ); Fri, 1 Nov 2019 18:41:50 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SMlg7uokJD4neF0WL0Eoxt40hQXHFG23p++obEe4eTlaU38yKkoIUXZFBrDJPb2XWqQ+47Kql5BoDAAo7+MnMqICF4mgEzcPF7wOJVg3lb2WJZfA8GUhUdlqo1ZICOj1fl5wtCHackinCZyAEGs2f1ZVv2DsieVLeMB8GGxKbkCgAXfHYX+hds90LDOndQxUOK01dX7/CQPc0uCa8CINT0nAjpwKf9kKdXAukorPamapGT4QuCzt7Uz6w64QX20M4wYgfTVFCK30LGGKMiq0tXfF5Fh0l1JYBdzYw7F7pxYp7jcEOTP8RfhOboW8lX4M2rnmpbgLQH0ccgxcmPZLMg== 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=DAVHkiR8nhWMHZXu7w04MlEmDeIXqRB8jLn9H0d4PJs=; b=bUvft64w/HtSDrNOJPOZxrkXvWrx5TIAkNFTYVNx2hJR5N26RynvzfQ8lRUl+hI/64SCdkgnh1tgL8k2A0ua9OCHns2OfC3/EudiMtCg+jBBEcHrrps3w+p3A6GMoZByLnCPnw3F+fEFLcdxZM7Buxn7pOmfuj48/h270QE6A542qqi47cqipiyABgB57qlI1eFhg1wvQ5X/J87cFwyGszey+RFtJSCyayTgLs64Yqt9xgfk9LtRkKqD31b63y6P98UwJ6wUQtkIAqyOeTQCpoI/mu5KQp/RPBoSCAlPGHo5yO4miE8Dk+v74UyAvhS8/fWYkuxOJTqpvNwh1BLXjg== 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=DAVHkiR8nhWMHZXu7w04MlEmDeIXqRB8jLn9H0d4PJs=; b=Gh46NuHwRP/AHXxr19n3G2L7Owz3dkKKOa7Pd6RWwULfyVyba1lTxudUT/n9wXNKEmUdHMwjt8ovi5kvOdl6IYtEXaJJd7bRVG1zt0CiLMrDFK1yMbDOObpBelpUz0tGIY9zfCori7Uwzolcja7wezQuLSUmzGuyI2DrzfzWkk4= Received: from DM6PR12MB3865.namprd12.prod.outlook.com (10.255.173.210) by DM6PR12MB3243.namprd12.prod.outlook.com (20.179.105.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 22:41:41 +0000 Received: from DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862]) by DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862%6]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 22:41:41 +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" , "rkagan@virtuozzo.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v4 16/17] kvm: ioapic: Lazy update IOAPIC EOI Thread-Topic: [PATCH v4 16/17] kvm: ioapic: Lazy update IOAPIC EOI Thread-Index: AQHVkQWHPnnCeGX+9UOPiFdJkiKU8g== Date: Fri, 1 Nov 2019 22:41:41 +0000 Message-ID: <1572648072-84536-17-git-send-email-suravee.suthikulpanit@amd.com> References: <1572648072-84536-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1572648072-84536-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: SN1PR12CA0047.namprd12.prod.outlook.com (2603:10b6:802:20::18) To DM6PR12MB3865.namprd12.prod.outlook.com (2603:10b6:5:1c8::18) 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-ht: Tenant x-ms-office365-filtering-correlation-id: 74737793-8db8-412d-8d7f-08d75f1caa17 x-ms-traffictypediagnostic: DM6PR12MB3243: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(1496009)(396003)(346002)(366004)(376002)(39860400002)(136003)(199004)(189003)(66476007)(66446008)(26005)(6506007)(15650500001)(386003)(86362001)(5660300002)(102836004)(4720700003)(305945005)(7736002)(7416002)(76176011)(256004)(14444005)(8936002)(8676002)(186003)(52116002)(6486002)(478600001)(50226002)(71200400001)(71190400001)(81166006)(6436002)(476003)(2906002)(3846002)(6116002)(6512007)(99286004)(4326008)(2616005)(316002)(11346002)(446003)(486006)(81156014)(14454004)(66946007)(36756003)(110136005)(54906003)(66066001)(64756008)(66556008)(25786009)(2501003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3243;H:DM6PR12MB3865.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: CK0+SFmTHHj5hbbt91trPiynCNrCLCK0MBHvFjTc5PwNrbimTf8FRJYTqQfdDJaB0nDKvncgvCttsFeuwg4xfwRpKeRlyEaOKAwDz2LqnRSaC/WJUGoaQzeYdlvrxtPyqZVlhWpHhUcjrUNJiTARO02QsKFSN8b1mstiOpwYZJEhY4wPktA3BW9y8aITjdhEmdUpIh+hQrGaB94f9PqrpG/9vfkpueDpiTpwZiisn4RP/TQUE8AmeBzHrE3YwiyHWOPUEBIHCKTv/UGf8GTDn0DHG09i/1USgQ7VuORJTQi8fvw4It6dG87ZhHr5P4jCi1wGi1OogaapM09Fe5FX8JRKCtZ5F2WfD4C4LDXe38nmD2ged3vzVUTHbke6H/E4o8R/rJnp+U7k2/Tzi8lC3QlzS/YIFz1xWzDUQ88XZdGfpXQpwbY53/cBtuDSuqH+ MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 74737793-8db8-412d-8d7f-08d75f1caa17 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 22:41:41.5306 (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: 8lzDC6eUtdnZapVbrO2d18J1bKBru+u2/VuEiaMh+TOvH5DmFNTsF1jRS8clKPkB5jeb2KrPdrD3E2wAtMnY4g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3243 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..6fdd88f 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, } /* + * AMD SVM AVIC 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_activated(ioapic->kvm)) + 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 Nov 1 22:41:42 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Suthikulpanit, Suravee" X-Patchwork-Id: 11223879 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 02F081599 for ; Fri, 1 Nov 2019 22:42:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id CAE12218DE for ; Fri, 1 Nov 2019 22:42: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="OcpZpOtF" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728387AbfKAWmF (ORCPT ); Fri, 1 Nov 2019 18:42:05 -0400 Received: from mail-eopbgr720078.outbound.protection.outlook.com ([40.107.72.78]:60224 "EHLO NAM05-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728265AbfKAWlu (ORCPT ); Fri, 1 Nov 2019 18:41:50 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dZd+F+z2sA5R0NuDZUaXDDIE8ZGdCb1O8rtcsPCLvkg0LDIBHY9h8mlp8y1omhcr1tP4vJRJBgaXgxdMMMrkK7gXpz7FDgTlOOfzEmnGTQyN0fihjIDNW3zZRqlAEiU66faQTec7EUznWNe/gGKDPuC5m0RpS97Npe5UZuP1OcwZF4YU+24SX7Nlrypd9YgwnE33Vq57MvIXUmcTNO6L7JLrxuUShXiU/FMOkHSIxxTEFNL9GqBl3o/Q7NzXvcQ0kws/konqq9pldH7hJVAYusKSbMeFVmwOs1SxIpABReMiLvAJsgpbgUI29DYJU+CUh9A66hAQVZrcvbT8mt5Syw== 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=e4b9a2qTCriV/klRI55BkX7UMRg2izSVoH+kmnmWlbQ=; b=naTCoBWikfS0V1rAfmebv3lIpHT6eEdXuioDOdvoGIdRPrS+Ce4w5Cp0o7z8K3FoxrJRo5XadWYbBTeUNiaavifdhlAQnAq90eqMzTGUNy4PlU2ixV5PjEt690emqzHl47G02EOoeFrmHqPV/KoEdDZp37s3AEwDEH1qvRApPbShlaRMphBIZGapP+pLzeoCaeaIYMCtOuC0UsnIIEoZ8vD6jQrEJ3Kx+uJfCVIof8j1ytta7PZg91WDUO11jUGmhc0E37jaCgRyzGOu9TvKVHt6mNi5QcSfQ9oc2QwrIoXS/VVyMf2/k7MkQ4lJ2z4NpD7ArGfYqow7Wpa4OZip2Q== 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=e4b9a2qTCriV/klRI55BkX7UMRg2izSVoH+kmnmWlbQ=; b=OcpZpOtFDmmHITIKaAmrU9LIDxnMd/aCSv/tm/3t5TwCcoZREY87RW+4bAhnUNqN73UbYdS1GF3EZHfKwnsBOQYP19RWqm+ALd9tWDJKutefTbopkcFkw0iM8A8cyQc3GxEnhASWH+cWpSTHnp6lpth+m1QloUpmqGYh2Yysi00= Received: from DM6PR12MB3865.namprd12.prod.outlook.com (10.255.173.210) by DM6PR12MB3243.namprd12.prod.outlook.com (20.179.105.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 22:41:43 +0000 Received: from DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862]) by DM6PR12MB3865.namprd12.prod.outlook.com ([fe80::4898:93e0:3c0c:d862%6]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 22:41:43 +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" , "rkagan@virtuozzo.com" , "graf@amazon.com" , "jschoenh@amazon.de" , "karahmed@amazon.de" , "rimasluk@amazon.com" , "Grimm, Jon" , "Suthikulpanit, Suravee" Subject: [PATCH v4 17/17] svm: Allow AVIC with in-kernel irqchip mode Thread-Topic: [PATCH v4 17/17] svm: Allow AVIC with in-kernel irqchip mode Thread-Index: AQHVkQWIsd7qYee55Eaxu2bUidBQYA== Date: Fri, 1 Nov 2019 22:41:42 +0000 Message-ID: <1572648072-84536-18-git-send-email-suravee.suthikulpanit@amd.com> References: <1572648072-84536-1-git-send-email-suravee.suthikulpanit@amd.com> In-Reply-To: <1572648072-84536-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: SN1PR12CA0047.namprd12.prod.outlook.com (2603:10b6:802:20::18) To DM6PR12MB3865.namprd12.prod.outlook.com (2603:10b6:5:1c8::18) 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-ht: Tenant x-ms-office365-filtering-correlation-id: cde0f1aa-c3fa-4549-0686-08d75f1caad6 x-ms-traffictypediagnostic: DM6PR12MB3243: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4125; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(1496009)(396003)(346002)(366004)(376002)(39860400002)(136003)(199004)(189003)(66476007)(66446008)(26005)(6506007)(386003)(86362001)(5660300002)(102836004)(4720700003)(305945005)(7736002)(7416002)(76176011)(256004)(14444005)(8936002)(8676002)(186003)(52116002)(6486002)(478600001)(50226002)(71200400001)(71190400001)(81166006)(6436002)(476003)(2906002)(3846002)(6116002)(6512007)(66574012)(99286004)(4326008)(2616005)(316002)(11346002)(446003)(4744005)(486006)(81156014)(14454004)(66946007)(36756003)(110136005)(54906003)(66066001)(64756008)(66556008)(25786009)(2501003);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB3243;H:DM6PR12MB3865.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: W+21RR/OH7Yk+a0x0ubOi1Pjz0UpjsfFv3f2U6xrvVqV8DJctwC5gM6TUUMrbT3RydE9Jx6hRGa/XGmx0+89e37jARauqbanC/C6UjFstwnbyXXonXo8s1LeeIEu37OHyjFqVyElbWNQrvCfQ0QozOaTXY/MnvuByTly7OTl3amUHmhd2L5xQn7St/e61UIk+MyT7n6gccGVszQ4zqDK1SEns58Yv6lmaTORJyUQ3Okx2oyn+B6BnGh2vNy/fCYeQFAQ/ofoAAa+ogI7Hvq8uqy5aVzP3UOB6kVuj9PISB17uMSFVppwxEl5CgN/CJW9eWxJwCznUM0aIKltupA19zZ6v2tn2ob/qh3onhEU6CM08sPJTlu7LhTXW2tK5W6tee1Cuvu14POBAjCjqY5n0wGUOQDzxFJr1FjEMmGczfZZ/9mx39G+hbDQG8sPUhf/ Content-ID: <4029B512A008CC4B8C99548BDEC6E30C@namprd12.prod.outlook.com> MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: cde0f1aa-c3fa-4549-0686-08d75f1caad6 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 22:41:42.9888 (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: jGVXDspxK6+090Liexqq3fypWfj5Ge2mrqTvEFXfS/jGkcmSY51xGuKkZJRokbIFqTQLn5lDXV3uZnz7WTq//g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3243 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 9812feb..be9c1d3 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -5172,7 +5172,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)