From patchwork Tue Sep 18 03:18:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tianyu Lan X-Patchwork-Id: 10603677 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 711D51508 for ; Tue, 18 Sep 2018 03:18:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 566502A2B7 for ; Tue, 18 Sep 2018 03:18:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 493DE2A2BA; Tue, 18 Sep 2018 03:18:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D5ACE2A2B7 for ; Tue, 18 Sep 2018 03:18:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728996AbeIRIsv (ORCPT ); Tue, 18 Sep 2018 04:48:51 -0400 Received: from mail-sg2apc01on0120.outbound.protection.outlook.com ([104.47.125.120]:24704 "EHLO APC01-SG2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726434AbeIRIsu (ORCPT ); Tue, 18 Sep 2018 04:48:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2BeI0r2RU14yEwo8VLsuoeXY3JA3CxXIBR28gVEn6eY=; b=J/K37APffIfaSJzrM9n0KEHcJ4Jnn3/QeNpzdTNf5NPZ3BU0ZIqm+3ex+5lO6Wwn/c7xjozjhLgaatmLed5vi3erxeZdadPWZbTfYM1BeRu1aDucrThDvtrY5Au4tjTV0i9iFiAN9fAJnPiGjthAN3J8iraR9yTPHc0bohLguSw= Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM (52.133.156.18) by HK0P153MB0180.APCP153.PROD.OUTLOOK.COM (52.133.212.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.5; Tue, 18 Sep 2018 03:18:17 +0000 Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267]) by HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267%3]) with mapi id 15.20.1185.006; Tue, 18 Sep 2018 03:18:17 +0000 From: Tianyu Lan CC: Tianyu Lan , KY Srinivasan , Haiyang Zhang , Stephen Hemminger , "tglx@linutronix.de" , "mingo@redhat.com" , "hpa@zytor.com" , "x86@kernel.org" , "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "devel@linuxdriverproject.org" , "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "Michael Kelley (EOSG)" , vkuznets , Jork Loeser Subject: [PATCH V2 1/13] KVM: Add tlb_remote_flush_with_range callback in kvm_x86_ops Thread-Topic: [PATCH V2 1/13] KVM: Add tlb_remote_flush_with_range callback in kvm_x86_ops Thread-Index: AQHUTv4+wwpoTLXkbEm4tBNI57mR/A== Date: Tue, 18 Sep 2018 03:18:17 +0000 Message-ID: <20180918031754.113013-2-Tianyu.Lan@microsoft.com> References: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> In-Reply-To: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Tianyu.Lan@microsoft.com; x-originating-ip: [52.168.54.252] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;HK0P153MB0180;6:LbssQ9ZP99rd1CSae4FYBTiFfBoopsqbGSCuk6gI1xhDurQ9zr9COonovsPqmLkC1mqmgPXWY4sdAjnkU+MSlk95YXVxjG0xCOqyjO+98UgF+ihOormvIn2/ufRWwIRGbFEoS2He6fREK6eHxql4PjMvmSknE/ejHAI9lyqM6iPW9PJIxoqOi0Eak21iJ8n8TqRdgxTwAspoZNaXy6LS5N9qZ+rsjT6I8Hst9L+IHjt7ZD6fVGhk67XEGQo+2TSjEod/1lchr3EFsI1gnfx2ZDrRbGuWxA06wDGz38pj0s3sl1e7BVVq95pIg5jeW3H/Utn+TfXD/hAAgHYcIsSslXPi8ZntzDzK2rP7rO3EeHyy8V8aSXNHalCMeHxYxchdZWsfQF9OeYEEeDHSADh+tRNKMhE7WRlgC8WUKk5GbIHIiZeDdFweWuTywGy/4jTqrFeUaAyDQZGXCRX8VMOY5A==;5:D3D9X/e0XAA4SGaGuj094zO+n8B5QDOfKo9KkTMEdepv8EJgSS0wfHaY1d1QxrWcmhlx4sMvTPKg1Juv3/pbtTz4BssN/eOytdJu8S9O3Z6UGPIg9cmeyfZsOk8LX8l8ruy4I+ckflbU45O3Zin091pYwk5c+A6tuFEQOPHbLlU=;7:O1H9JSeZPAbhBZJQAuAzk1k4NtrBt5iS9OXF/lSD6XGUJjUIDhsrJ4m0K6Lc7HtlzbhllKahVmJAbmliuHOyE6x+MDAPzHyw3KWHewp9/z3cOOrVrkjSeONL2iEmF5iUSbDp3/RChV/pdGrt53UHlXWxLmWuMGtEnpc9tkf/X+Fl0UPh9pQdC7ZIa5Ztv5zh/QxB9taTmKqWjvlOUvJkK9H4FvFwce7IVMCgGoiyYmXYH5DZtH5xRkySAhfrcktw x-ms-office365-filtering-correlation-id: 58ad1c12-9598-43c4-451b-08d61d1560d4 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989137)(5600074)(711020)(4618075)(2017052603328)(7193020);SRVR:HK0P153MB0180; x-ms-traffictypediagnostic: HK0P153MB0180: x-ld-processed: 72f988bf-86f1-41af-91ab-2d7cd011db47,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(28532068793085)(89211679590171); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231355)(944501410)(52105095)(3002001)(10201501046)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201708071742011)(7699050);SRVR:HK0P153MB0180;BCL:0;PCL:0;RULEID:;SRVR:HK0P153MB0180; x-forefront-prvs: 0799B1B2D7 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(366004)(376002)(396003)(39860400002)(346002)(136003)(199004)(189003)(26005)(102836004)(2906002)(7736002)(6506007)(22452003)(59246006)(54906003)(316002)(14454004)(86362001)(86612001)(36756003)(6436002)(10090500001)(6486002)(6512007)(305945005)(7416002)(53936002)(2900100001)(5250100002)(256004)(97736004)(72206003)(478600001)(106356001)(8676002)(81156014)(81166006)(5660300001)(8936002)(6116002)(3846002)(99286004)(76176011)(10290500003)(1076002)(105586002)(476003)(2616005)(11346002)(446003)(66066001)(486006)(107886003)(25786009)(109986005)(68736007)(1671002)(4326008);DIR:OUT;SFP:1102;SCL:1;SRVR:HK0P153MB0180;H:HK0P153MB0129.APCP153.PROD.OUTLOOK.COM;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: auyaCipz6Cb9lAz5YviuBXtJtzQay4lUoLC9Y3d3+PphogzJHt0Mp6cdc4ZxqN875yUT0XsAOZ3J5zKDa1zU/Cl21MZHzW528y2fU6A5OA+1Ry9anIi/ouYYWCeKAC/xy9H7YmmzSp2Nj4uzrdl24yC+pVx8SRmJp+sb7Cyuaxys9PFa1EnJBTPa36V91vKINxWOatpdLZGlsWYNiCV4l5NJHPgG11RF5LYN7GJ4DgPEopGvmiyF4Wrf/4WS4slR4nqdH/W7OVf62NIYvtNzyu6zx0msjUvpL1PluJcGwDy31SGPsstLmccdSzDC3YoENM8LVxPajWftGXqh9HeFngl3JAuKC4gfp1hVUc7mNq0= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: 58ad1c12-9598-43c4-451b-08d61d1560d4 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Sep 2018 03:18:17.1153 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK0P153MB0180 To: unlisted-recipients:; (no To-header on input) Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add flush range call back in the kvm_x86_ops and platform can use it to register its associated function. The parameter "kvm_tlb_range" accepts a single range and flush list which contains a list of ranges. Signed-off-by: Lan Tianyu --- Change since v1: Change "end_gfn" to "pages" to aviod confusion as to whether "end_gfn" is inclusive or exlusive. --- arch/x86/include/asm/kvm_host.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index 8e90488c3d56..a6b77978502e 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -402,6 +402,12 @@ struct kvm_mmu { u64 pdptrs[4]; /* pae */ }; +struct kvm_tlb_range { + u64 start_gfn; + u64 pages; + struct list_head *flush_list; +}; + enum pmc_type { KVM_PMC_GP = 0, KVM_PMC_FIXED, @@ -991,6 +997,8 @@ struct kvm_x86_ops { void (*tlb_flush)(struct kvm_vcpu *vcpu, bool invalidate_gpa); int (*tlb_remote_flush)(struct kvm *kvm); + int (*tlb_remote_flush_with_range)(struct kvm *kvm, + struct kvm_tlb_range *range); /* * Flush any TLB entries associated with the given GVA. From patchwork Tue Sep 18 03:18:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tianyu Lan X-Patchwork-Id: 10603679 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 33276913 for ; Tue, 18 Sep 2018 03:18:31 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 217C52A7A3 for ; Tue, 18 Sep 2018 03:18:31 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1331C2A7A7; Tue, 18 Sep 2018 03:18:31 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 806722A7A3 for ; Tue, 18 Sep 2018 03:18:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729152AbeIRIs6 (ORCPT ); Tue, 18 Sep 2018 04:48:58 -0400 Received: from mail-sg2apc01on0128.outbound.protection.outlook.com ([104.47.125.128]:36634 "EHLO APC01-SG2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726434AbeIRIs5 (ORCPT ); Tue, 18 Sep 2018 04:48:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mrCCzTSKTjSLohhy1cGoqzeZNco8LG9h282SGyt/Orc=; b=l6dRX2ujGUMWpanJrVwu1CAZEYUlcqSQndYFqStAGCtSVmoSS1ianDTYx8UgEzfcPxE5xH8kWe94OR4Z7v+V2ZEWY+F2qvSazOgaKY9aEMBzh0cvDNTYNslLtp6kllGEL7TH11tWPSOhs6v5GwPOzWTsSXtNL7FwvoJ9ox3OyZs= Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM (52.133.156.18) by HK0P153MB0180.APCP153.PROD.OUTLOOK.COM (52.133.212.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.5; Tue, 18 Sep 2018 03:18:23 +0000 Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267]) by HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267%3]) with mapi id 15.20.1185.006; Tue, 18 Sep 2018 03:18:23 +0000 From: Tianyu Lan CC: Tianyu Lan , KY Srinivasan , Haiyang Zhang , Stephen Hemminger , "tglx@linutronix.de" , "mingo@redhat.com" , "hpa@zytor.com" , "x86@kernel.org" , "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "devel@linuxdriverproject.org" , "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "Michael Kelley (EOSG)" , vkuznets , Jork Loeser Subject: [PATCH V2 2/13] KVM/MMU: Add tlb flush with range helper function Thread-Topic: [PATCH V2 2/13] KVM/MMU: Add tlb flush with range helper function Thread-Index: AQHUTv5BJRJv8ZvwJUKcRzk5V3vi1w== Date: Tue, 18 Sep 2018 03:18:23 +0000 Message-ID: <20180918031754.113013-3-Tianyu.Lan@microsoft.com> References: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> In-Reply-To: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Tianyu.Lan@microsoft.com; x-originating-ip: [52.168.54.252] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;HK0P153MB0180;6:yvFjr4xSbuXRqGOQqvDROn6b8kDRiArw2nXOW0yD2uQgipPai7PY8D4gAEW5HSxfqTYD7loGtOpwbqo+HohYkpUUaKQsbXrFYwU6/XSCtnWeEz0BXNTcdcMb4IUdCLRh/iZNJpQadBnJYfQwBtxtTEYolxg9oeIdQzGatEjk4lk2yHYMFDdQEfPhclWCGMwwKBLa72mie1C3w16R4RC7P0oQCHY5g6tsbpAgO4WPHPo6vMvIzWzIL5XsqG1hwqSV9MAFfU54ZBehw05OqXtJ2Y482Iga6pOpSK0gcBq0Gd5LfHKz77Y3VqHFaQW8iwYLilRW01gWnsFrwlauZglJf0kANTeokrV2mWcbQkYWKEKWddyErqWt8BcTzMP9ICfxQlIRHkno37sNOUXY6Az8PkINe5X3ak71O3zdzJhwm5aAiik3a+yRtDOJFk698T2In4/hUJrS12QIX3tn2JuvXQ==;5:BOGa7WiQykJyxCRY7G0Gwn8J3/HIf5I2oJN4+Io7Gq9lkGFJWxrPdgI2ryFYUwI3q6mY9Hb7dIO6orbAu6Eu61RyDDoXj/aglxRFcU/GMtg9gCzsuJ2XNxeywWYwkCGIC/9+qdPbFPqwltAWLZrFcCGpnWLGYfCmWL5HluyE2uc=;7:5WoCUOGfILRhmX9P4/+RrcLrkl9yfxcEWJw9V7DeoHqcx9M1REmnV8GqZT44nmfboUFyMBd0lCGwWkgTfg/07+UCxaaE0yddbCurKwTmJp8uYBYOHXwXHwmI1qDmwacK+zKQVfxYdmYAFSlI4Eosb7YM4gvPQ2dW/UUVpDkEhO9aRFdsXtuGMN4oDVJnu2PdFkIL+8kDBG6QaDQ4yLyBXiT7tjO8/CZ1pYI73Bj27Yk7H+Et0vjP169NwqoOBpGb x-ms-office365-filtering-correlation-id: 917c83ac-92ff-4366-d112-08d61d1564a7 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989137)(5600074)(711020)(4618075)(2017052603328)(7193020);SRVR:HK0P153MB0180; x-ms-traffictypediagnostic: HK0P153MB0180: x-ld-processed: 72f988bf-86f1-41af-91ab-2d7cd011db47,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(28532068793085)(89211679590171); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231355)(944501410)(52105095)(3002001)(10201501046)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201708071742011)(7699050);SRVR:HK0P153MB0180;BCL:0;PCL:0;RULEID:;SRVR:HK0P153MB0180; x-forefront-prvs: 0799B1B2D7 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(366004)(376002)(396003)(39860400002)(346002)(136003)(199004)(189003)(26005)(102836004)(2906002)(7736002)(6506007)(22452003)(59246006)(54906003)(316002)(14454004)(86362001)(86612001)(36756003)(6436002)(10090500001)(6486002)(6512007)(305945005)(7416002)(53936002)(2900100001)(5250100002)(14444005)(256004)(97736004)(72206003)(478600001)(106356001)(8676002)(81156014)(81166006)(5660300001)(8936002)(6116002)(3846002)(99286004)(76176011)(10290500003)(1076002)(105586002)(476003)(2616005)(11346002)(446003)(66066001)(486006)(107886003)(25786009)(109986005)(68736007)(1671002)(4326008);DIR:OUT;SFP:1102;SCL:1;SRVR:HK0P153MB0180;H:HK0P153MB0129.APCP153.PROD.OUTLOOK.COM;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: HQVb6NuszfuIzYJVC2mDYMZ7WpEVyiqnVN403OjqAhoPnHlpvPe8T2Yz21SO1TsiSXTO+ZDYusTeicMsFIHcaowi/nFHIICwp0CVV0863B496a1qhNoXmenO60/NOFi8p9TLxvm9AC4nt4H/roA1FKEG8aDrrpQ7JZJIcKX1bbjsi2s4vU2SFPPiQV/jdVSTkwNYLoCRVe5ZH85yd9GkR/+HGmZomrgZiK8cSlqmFiDjK1Z11trXkG/KkNeub031Oelm/0I7sYfHFI6M04cC52dv2ew3BmOgae+8pe73avogkksHuYcI3UsofUxxKkf1/LHHWGxTBBLdt7ikTPJcUPe8Y8z1Z/8CXlBeUiuA6Zc= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: 917c83ac-92ff-4366-d112-08d61d1564a7 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Sep 2018 03:18:23.4918 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK0P153MB0180 To: unlisted-recipients:; (no To-header on input) Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch is to add wrapper functions for tlb_remote_flush_with_range callback. Signed-off-by: Lan Tianyu --- arch/x86/kvm/mmu.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index c67f09086378..ac3b748f58f8 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c @@ -253,6 +253,54 @@ static void mmu_spte_set(u64 *sptep, u64 spte); static union kvm_mmu_page_role kvm_mmu_calc_root_page_role(struct kvm_vcpu *vcpu); + +static inline bool kvm_available_flush_tlb_with_range(void) +{ + return kvm_x86_ops->tlb_remote_flush_with_range; +} + +static void kvm_flush_remote_tlbs_with_range(struct kvm *kvm, + struct kvm_tlb_range *range) +{ + int ret = -ENOTSUPP; + + if (range && kvm_x86_ops->tlb_remote_flush_with_range) { + /* + * Read tlbs_dirty before setting KVM_REQ_TLB_FLUSH in + * kvm_make_all_cpus_request. + */ + long dirty_count = smp_load_acquire(&kvm->tlbs_dirty); + + ret = kvm_x86_ops->tlb_remote_flush_with_range(kvm, range); + cmpxchg(&kvm->tlbs_dirty, dirty_count, 0); + } + + if (ret) + kvm_flush_remote_tlbs(kvm); +} + +static void kvm_flush_remote_tlbs_with_list(struct kvm *kvm, + struct list_head *flush_list) +{ + struct kvm_tlb_range range; + + range.flush_list = flush_list; + + kvm_flush_remote_tlbs_with_range(kvm, &range); +} + +static void kvm_flush_remote_tlbs_with_address(struct kvm *kvm, + u64 start_gfn, u64 pages) +{ + struct kvm_tlb_range range; + + range.start_gfn = start_gfn; + range.pages = pages; + range.flush_list = NULL; + + kvm_flush_remote_tlbs_with_range(kvm, &range); +} + void kvm_mmu_set_mmio_spte_mask(u64 mmio_mask, u64 mmio_value) { BUG_ON((mmio_mask & mmio_value) != mmio_value); From patchwork Tue Sep 18 03:18:29 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tianyu Lan X-Patchwork-Id: 10603681 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 44FA6913 for ; Tue, 18 Sep 2018 03:18:43 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 35C062A7A4 for ; Tue, 18 Sep 2018 03:18:43 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2914D2A7A8; Tue, 18 Sep 2018 03:18:43 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 984512A7A4 for ; Tue, 18 Sep 2018 03:18:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729178AbeIRItG (ORCPT ); Tue, 18 Sep 2018 04:49:06 -0400 Received: from mail-sg2apc01on0114.outbound.protection.outlook.com ([104.47.125.114]:34840 "EHLO APC01-SG2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726434AbeIRItF (ORCPT ); Tue, 18 Sep 2018 04:49:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rLPTbSTW8/9yHw7svnw2v5SB09+LrVHG+bpFeLM9mmA=; b=H6tNYQWDua8ZqrE37Bg3Sd+1U0swrgrXTrrNmMETPBvaATmX9Tb8ypD74AQysxqOQAY9HD5anXD5bzNMFKAnRtHBbjAa70efc9GkD266TVvCqickJpbXzUF8Bwmqsnu+ZK2gkIpktz/n06mBcGpfq6BI1IZCGRDp4j4WoePLsac= Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM (52.133.156.18) by HK0P153MB0180.APCP153.PROD.OUTLOOK.COM (52.133.212.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.5; Tue, 18 Sep 2018 03:18:30 +0000 Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267]) by HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267%3]) with mapi id 15.20.1185.006; Tue, 18 Sep 2018 03:18:30 +0000 From: Tianyu Lan CC: Tianyu Lan , KY Srinivasan , Haiyang Zhang , Stephen Hemminger , "tglx@linutronix.de" , "mingo@redhat.com" , "hpa@zytor.com" , "x86@kernel.org" , "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "devel@linuxdriverproject.org" , "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "Michael Kelley (EOSG)" , vkuznets , Jork Loeser Subject: [PATCH V2 3/13] KVM: Replace old tlb flush function with new one to flush a specified range. Thread-Topic: [PATCH V2 3/13] KVM: Replace old tlb flush function with new one to flush a specified range. Thread-Index: AQHUTv5FKmWdVZ1KR0anaBCeU4uAzg== Date: Tue, 18 Sep 2018 03:18:29 +0000 Message-ID: <20180918031754.113013-4-Tianyu.Lan@microsoft.com> References: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> In-Reply-To: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Tianyu.Lan@microsoft.com; x-originating-ip: [52.168.54.252] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;HK0P153MB0180;6:vPEkpejAytdZRoVFDp87PaHfFEPizQhwy0lS5DiTcbEJjKyHCB6v1tRdtgN3ESnvQSmF5BWyYnk7/GCuMjQ9WOcpZKY3ECbbJvBZxuaTXGjPjJvDIuMGAvVSXmAWHXD1XHc6r4mAKYCkPJoRRHR02O8vK7igIKmoynEjnK4PFCvJNubJdCwIN+jyTRwfx79eAClhLU5ak3uiZfBxd5c2K3Lqu5aFRSykjb+8GlR5mV61NRZHYlNZka/+8xZMX0ybaswIMp3qGxUG2e+6Kdt0xtHExuuBB7FZkQiCX6s2WT4Cn3GhtWkS245P7NVWK9erpeZnPDb9H8lllBlCjgiBp/k/jfNPdoM3vl/0nfxRwYEa906yPSDBlV6ikJI9CfsrALFmMmJQsDtm4S3uk/5Ex3Q5cT7hB7sKpRJlBmRMsl4ESet+45x3ZM7rErfrZMR7BPOci3LPSHRfPclkVh4Lvg==;5:hXwOli0lgSkzVsjRSPe7raxKQBfs7PZrFaTSgtHmrByjrZNox5z8g65R2iIxpVPxFY0wP5vU6Ui0bvoCTTmAfo/ypm7PCm6RXqaWpxQaSC6Kx/Od/YqINLlcUoAcM15ZcM2oH4B72cFcgC5ubgQc2iAAaGtyAf6pYQrijW+MrGE=;7:h4fImxgZ1iViWEqxU9AxROGuv/JazFzr0TodUCof/WY8UbJ1a0eaB/q1KctKpdkq2mG+c8VBD5V4d5Gkh5Pctg1YiQ9hwb3GS6ciOFUs9AHqYcwUwUPuHLc+dYOFojRD9sY4fRadmColhLDaYf//VrpX9kp/DDvpWVRlui7GgK1eGWAgKi3O7M/ltqnBYegPy1I1X0Wz+WK+LGKJdNwOMEleodV54hj1rNqvHez9C7WQqPMV01ZQWzYikF9Mz3QU x-ms-office365-filtering-correlation-id: 8bc5b595-65e9-46fa-1a4b-08d61d156875 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989137)(5600074)(711020)(4618075)(2017052603328)(7193020);SRVR:HK0P153MB0180; x-ms-traffictypediagnostic: HK0P153MB0180: x-ld-processed: 72f988bf-86f1-41af-91ab-2d7cd011db47,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(28532068793085)(89211679590171)(788757137089); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231355)(944501410)(52105095)(3002001)(10201501046)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201708071742011)(7699050);SRVR:HK0P153MB0180;BCL:0;PCL:0;RULEID:;SRVR:HK0P153MB0180; x-forefront-prvs: 0799B1B2D7 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(366004)(376002)(396003)(39860400002)(346002)(136003)(199004)(189003)(26005)(102836004)(2906002)(7736002)(6506007)(22452003)(59246006)(54906003)(316002)(14454004)(86362001)(86612001)(36756003)(6436002)(10090500001)(6486002)(6512007)(305945005)(7416002)(53936002)(2900100001)(5250100002)(14444005)(256004)(97736004)(72206003)(478600001)(106356001)(8676002)(81156014)(81166006)(5660300001)(8936002)(6116002)(3846002)(99286004)(76176011)(10290500003)(1076002)(105586002)(476003)(2616005)(11346002)(446003)(66066001)(486006)(107886003)(25786009)(109986005)(68736007)(1671002)(4326008);DIR:OUT;SFP:1102;SCL:1;SRVR:HK0P153MB0180;H:HK0P153MB0129.APCP153.PROD.OUTLOOK.COM;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: DlUOaYrLrm2i/rfiCqj9JYozvJNSA4YwosMqjze+g18pCkH5vE3nz693IVwrku3BHAyoR3bUVMhBv/J1WqmYxGcEtI2P4JKuSaDzWMmRrSTjjvWHzbO/p2BkdNYDJw6LSqOma/CS4idnYZFAOweBgfQB4DTLR0wYg2xLOOvtceigzKMO6fc3Cdx/mCJkZPIncJe/etFY1nBMNdCd9jZ6Zwnw440NAbblvKCemqQgbyOq8b5ajUSF6mvdnWfCF5tEHBMNX/QeD4XBsPMTqsKeM8Wlyw3lASMM9kquEUT5ymsNWDewvO62G31OcwpYK2ocId3ajv1R4X3R0zmwt0U7JaJXgaD814YkxlRHNzrG26A= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8bc5b595-65e9-46fa-1a4b-08d61d156875 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Sep 2018 03:18:29.8684 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK0P153MB0180 To: unlisted-recipients:; (no To-header on input) Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch is to replace kvm_flush_remote_tlbs() with kvm_flush_ remote_tlbs_with_address() in some functions without logic change. Signed-off-by: Lan Tianyu --- arch/x86/kvm/mmu.c | 33 ++++++++++++++++++++++----------- arch/x86/kvm/paging_tmpl.h | 3 ++- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index ac3b748f58f8..822e170881a4 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c @@ -1482,8 +1482,12 @@ static bool __drop_large_spte(struct kvm *kvm, u64 *sptep) static void drop_large_spte(struct kvm_vcpu *vcpu, u64 *sptep) { - if (__drop_large_spte(vcpu->kvm, sptep)) - kvm_flush_remote_tlbs(vcpu->kvm); + if (__drop_large_spte(vcpu->kvm, sptep)) { + struct kvm_mmu_page *sp = page_header(__pa(sptep)); + + kvm_flush_remote_tlbs_with_address(vcpu->kvm, sp->gfn, + KVM_PAGES_PER_HPAGE(sp->role.level)); + } } /* @@ -1770,7 +1774,7 @@ static int kvm_set_pte_rmapp(struct kvm *kvm, struct kvm_rmap_head *rmap_head, } if (need_flush) - kvm_flush_remote_tlbs(kvm); + kvm_flush_remote_tlbs_with_address(kvm, gfn, 1); return 0; } @@ -1951,7 +1955,8 @@ static void rmap_recycle(struct kvm_vcpu *vcpu, u64 *spte, gfn_t gfn) rmap_head = gfn_to_rmap(vcpu->kvm, gfn, sp); kvm_unmap_rmapp(vcpu->kvm, rmap_head, NULL, gfn, sp->role.level, 0); - kvm_flush_remote_tlbs(vcpu->kvm); + kvm_flush_remote_tlbs_with_address(vcpu->kvm, sp->gfn, + KVM_PAGES_PER_HPAGE(sp->role.level)); } int kvm_age_hva(struct kvm *kvm, unsigned long start, unsigned long end) @@ -2467,7 +2472,7 @@ static struct kvm_mmu_page *kvm_mmu_get_page(struct kvm_vcpu *vcpu, account_shadowed(vcpu->kvm, sp); if (level == PT_PAGE_TABLE_LEVEL && rmap_write_protect(vcpu, gfn)) - kvm_flush_remote_tlbs(vcpu->kvm); + kvm_flush_remote_tlbs_with_address(vcpu->kvm, gfn, 1); if (level > PT_PAGE_TABLE_LEVEL && need_sync) flush |= kvm_sync_pages(vcpu, gfn, &invalid_list); @@ -2587,7 +2592,7 @@ static void validate_direct_spte(struct kvm_vcpu *vcpu, u64 *sptep, return; drop_parent_pte(child, sptep); - kvm_flush_remote_tlbs(vcpu->kvm); + kvm_flush_remote_tlbs_with_address(vcpu->kvm, child->gfn, 1); } } @@ -3011,8 +3016,10 @@ static int mmu_set_spte(struct kvm_vcpu *vcpu, u64 *sptep, unsigned pte_access, ret = RET_PF_EMULATE; kvm_make_request(KVM_REQ_TLB_FLUSH, vcpu); } + if (set_spte_ret & SET_SPTE_NEED_REMOTE_TLB_FLUSH || flush) - kvm_flush_remote_tlbs(vcpu->kvm); + kvm_flush_remote_tlbs_with_address(vcpu->kvm, gfn, + KVM_PAGES_PER_HPAGE(level)); if (unlikely(is_mmio_spte(*sptep))) ret = RET_PF_EMULATE; @@ -5621,7 +5628,8 @@ void kvm_mmu_slot_remove_write_access(struct kvm *kvm, * on PT_WRITABLE_MASK anymore. */ if (flush) - kvm_flush_remote_tlbs(kvm); + kvm_flush_remote_tlbs_with_address(kvm, memslot->base_gfn, + memslot->npages); } static bool kvm_mmu_zap_collapsible_spte(struct kvm *kvm, @@ -5685,7 +5693,8 @@ void kvm_mmu_slot_leaf_clear_dirty(struct kvm *kvm, * dirty_bitmap. */ if (flush) - kvm_flush_remote_tlbs(kvm); + kvm_flush_remote_tlbs_with_address(kvm, memslot->base_gfn, + memslot->npages); } EXPORT_SYMBOL_GPL(kvm_mmu_slot_leaf_clear_dirty); @@ -5703,7 +5712,8 @@ void kvm_mmu_slot_largepage_remove_write_access(struct kvm *kvm, lockdep_assert_held(&kvm->slots_lock); if (flush) - kvm_flush_remote_tlbs(kvm); + kvm_flush_remote_tlbs_with_address(kvm, memslot->base_gfn, + memslot->npages); } EXPORT_SYMBOL_GPL(kvm_mmu_slot_largepage_remove_write_access); @@ -5720,7 +5730,8 @@ void kvm_mmu_slot_set_dirty(struct kvm *kvm, /* see kvm_mmu_slot_leaf_clear_dirty */ if (flush) - kvm_flush_remote_tlbs(kvm); + kvm_flush_remote_tlbs_with_address(kvm, memslot->base_gfn, + memslot->npages); } EXPORT_SYMBOL_GPL(kvm_mmu_slot_set_dirty); diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h index 14ffd973df54..708a5e44861a 100644 --- a/arch/x86/kvm/paging_tmpl.h +++ b/arch/x86/kvm/paging_tmpl.h @@ -893,7 +893,8 @@ static void FNAME(invlpg)(struct kvm_vcpu *vcpu, gva_t gva, hpa_t root_hpa) pte_gpa += (sptep - sp->spt) * sizeof(pt_element_t); if (mmu_page_zap_pte(vcpu->kvm, sp, sptep)) - kvm_flush_remote_tlbs(vcpu->kvm); + kvm_flush_remote_tlbs_with_address(vcpu->kvm, + sp->gfn, KVM_PAGES_PER_HPAGE(sp->role.level)); if (!rmap_can_add(vcpu)) break; From patchwork Tue Sep 18 03:18:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tianyu Lan X-Patchwork-Id: 10603683 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6BE6E1508 for ; Tue, 18 Sep 2018 03:18:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5B8ED2A7A4 for ; Tue, 18 Sep 2018 03:18:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4FB092A7AB; Tue, 18 Sep 2018 03:18:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 346132A7A4 for ; Tue, 18 Sep 2018 03:18:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729212AbeIRItL (ORCPT ); Tue, 18 Sep 2018 04:49:11 -0400 Received: from mail-sg2apc01on0118.outbound.protection.outlook.com ([104.47.125.118]:35712 "EHLO APC01-SG2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729164AbeIRItL (ORCPT ); Tue, 18 Sep 2018 04:49:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kUIkP0dbvGAEkEDT+JUxkOYwN9NEOBRSAVtmOdgrT5g=; b=hyt+p+WK1YBxXS3hHpXDk8Q91wEudfc3N8UFp6JMYDwutuRMXrGr88xL6Eh3DyThZ3EaKIrJ81rL/MhZweksJoyWZWuTjo/RaL04tmuPyc6p5h/EqJOkpYVmLM4kcfCWI15hQFOV5ESQFT/0t3tQgAvkTaKN0LQ/iSAqffZ7d/M= Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM (52.133.156.18) by HK0P153MB0180.APCP153.PROD.OUTLOOK.COM (52.133.212.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.5; Tue, 18 Sep 2018 03:18:36 +0000 Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267]) by HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267%3]) with mapi id 15.20.1185.006; Tue, 18 Sep 2018 03:18:36 +0000 From: Tianyu Lan CC: Tianyu Lan , KY Srinivasan , Haiyang Zhang , Stephen Hemminger , "tglx@linutronix.de" , "mingo@redhat.com" , "hpa@zytor.com" , "x86@kernel.org" , "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "devel@linuxdriverproject.org" , "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "Michael Kelley (EOSG)" , vkuznets , Jork Loeser Subject: [PATCH V2 4/13] KVM/MMU: Flush tlb directly in the kvm_handle_hva_range() Thread-Topic: [PATCH V2 4/13] KVM/MMU: Flush tlb directly in the kvm_handle_hva_range() Thread-Index: AQHUTv5JxXHYarz6dEerAeTlEED0BA== Date: Tue, 18 Sep 2018 03:18:36 +0000 Message-ID: <20180918031754.113013-5-Tianyu.Lan@microsoft.com> References: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> In-Reply-To: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Tianyu.Lan@microsoft.com; x-originating-ip: [52.168.54.252] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;HK0P153MB0180;6:iFmpc1/z0nsBBvJEsXz5A4yYtTWFKG3GWgEx+Y/U6Nvpt7QBcEiRzpDEr90fc8NcDsdCH0rrEHlR/E6EuDp6e8Ox7IgR2fiS+igftEPrV4zS2xX6nYkZSJAgdxZNXSxA+xC557ykh3POMqnn7uU8yrDIS5Lh9g+pfGQ4fcSoZbjdARb0Pyxcy4yduQe8EJh5WYXl3ObG9n10DZMVQHCK9q50+u6EyAr8l3MI6DnnDK94+weC151U0Ly1CS1lXzXapisbhcmAxWf3iovuN/q5zmdrnFF/eKhhsPnP39HXM3lbIVT0MpclzBaMP7cIhIa1az6ouGJJ2cDT6xSbF0yuv3E/k1O+Mp625cvWFOMc4v6VOkt58WuzK4Ow+O1q5gB9GjF5MR/DwA93h4z8SAthJN7dDmm495i/wNeVBmIJJR7m9lS5x59GeJUKDVe66BMqFycy7g1E1EnIstA92tWilg==;5:ymJJONL7hh+K6T8TrLxyvP1C7jESIF3xXtugRZYq/RfFJh0m9rAK6OHbyUh0fMaIRI0nyBXBODiSEvN4MfR4asNYj37maiievRvaitcPExcOVc9uNW2tiTwkGZegOjEINzbTCX/jJ/gK7JVwr6yBW994RJv68KF5dazdZVJfG6k=;7:w81luQBuyjIthjPTqPNtksppvtETAMAaLmAnoCfDWccH4AQXi/lAvtvZuEgZf2lgOHxtHsyU5IMOWTWGc0q8wVYE7TlOdQZDyAhA8vQI/bkgZfHS3BxDWPxEcsfMer3tXg3hQHV4LjOMCszv40TalfjtHIin+qz1iqFj3IMgQ5AR50UQwbTot1/WJv6+VyyVK5AzbufpvH2yt0mQxxkAio9tY+3Hj0Hf57z1jJ9qcsYY6NDsFx/DT0CgcvYdKUQV x-ms-office365-filtering-correlation-id: f4970031-ae39-41a4-9244-08d61d156c3e x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989137)(5600074)(711020)(4618075)(2017052603328)(7193020);SRVR:HK0P153MB0180; x-ms-traffictypediagnostic: HK0P153MB0180: x-ld-processed: 72f988bf-86f1-41af-91ab-2d7cd011db47,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(28532068793085)(89211679590171); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231355)(944501410)(52105095)(3002001)(10201501046)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201708071742011)(7699050);SRVR:HK0P153MB0180;BCL:0;PCL:0;RULEID:;SRVR:HK0P153MB0180; x-forefront-prvs: 0799B1B2D7 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(366004)(376002)(396003)(39860400002)(346002)(136003)(199004)(189003)(26005)(102836004)(2906002)(7736002)(6506007)(22452003)(59246006)(54906003)(316002)(14454004)(86362001)(86612001)(36756003)(6436002)(10090500001)(6486002)(6512007)(305945005)(7416002)(53936002)(2900100001)(5250100002)(256004)(97736004)(72206003)(478600001)(106356001)(8676002)(81156014)(81166006)(5660300001)(8936002)(6116002)(3846002)(99286004)(76176011)(10290500003)(1076002)(105586002)(476003)(2616005)(11346002)(446003)(66066001)(486006)(107886003)(25786009)(109986005)(68736007)(1671002)(4326008);DIR:OUT;SFP:1102;SCL:1;SRVR:HK0P153MB0180;H:HK0P153MB0129.APCP153.PROD.OUTLOOK.COM;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: 5A9DJGoIO3oK3l3aecS66G2N2uutiktN1ov2xt4lBkgvYgxqHN+BFqPkV6nrA7S9sALvz1xytjrnm1SODJzxQwa9pIuLmjrlA3+re4st31B+5msbfIoIDrxPU6zWf0QRqydZWocakePIMK6THUCnNDR4IWNrrLdRLrWFyOGzGpOwQPT87F7Q5jrFiVhwZERNPUSRF3rAQ6efC1TXaOJbJGrjBjtOz7jBPI4e+xoR0+zw47LQ1DE4galRM4Tl4HXw/1NzFKOdBHtMlKjk8Tv5ERK7nZEA1nAQ1+OsnP6vWDqy6vTyaZxSE/E4OxokzZKV6Rleq8ZYWBWIakedgbbgGr4lohVEunqkPG6aoaToxVk= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: f4970031-ae39-41a4-9244-08d61d156c3e X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Sep 2018 03:18:36.2289 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK0P153MB0180 To: unlisted-recipients:; (no To-header on input) Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch is to flush tlb directly in the kvm_handle_hva_range() when range flush is available. Signed-off-by: Lan Tianyu --- arch/x86/kvm/mmu.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index 822e170881a4..dfd2a0710417 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c @@ -1888,6 +1888,13 @@ static int kvm_handle_hva_range(struct kvm *kvm, &iterator) ret |= handler(kvm, iterator.rmap, memslot, iterator.gfn, iterator.level, data); + + if (ret && kvm_available_flush_tlb_with_range()) { + kvm_flush_remote_tlbs_with_address(kvm, + gfn_start, + gfn_end - gfn_start); + ret = 0; + } } } From patchwork Tue Sep 18 03:18:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tianyu Lan X-Patchwork-Id: 10603685 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A0F2517E0 for ; Tue, 18 Sep 2018 03:18:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 910CA2A7A4 for ; Tue, 18 Sep 2018 03:18:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 856BF2A7A8; Tue, 18 Sep 2018 03:18:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 70F4E2A7A7 for ; Tue, 18 Sep 2018 03:18:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729281AbeIRItS (ORCPT ); Tue, 18 Sep 2018 04:49:18 -0400 Received: from mail-sg2apc01on0113.outbound.protection.outlook.com ([104.47.125.113]:2560 "EHLO APC01-SG2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729164AbeIRItR (ORCPT ); Tue, 18 Sep 2018 04:49:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=u/Q935IKhGzOug1WFH//rGmpajoWJYb89PUWEIn9i1c=; b=nu1hy2RJmACUNMVKb0vpbdbmpAcg2U9OCV+z48yWuv0kdbL1c0fBwOMyDq91IWnBrBINkrAgNwEn85P3M3IAiQUtnyOp55NIfyGXoxqtSkex7ErgchcLnnYEl82GBLK+tsTYcvYpCJXGoNXVrxLNnis/5pZgGEWn7Gx5LoDw5jU= Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM (52.133.156.18) by HK0P153MB0180.APCP153.PROD.OUTLOOK.COM (52.133.212.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.5; Tue, 18 Sep 2018 03:18:43 +0000 Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267]) by HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267%3]) with mapi id 15.20.1185.006; Tue, 18 Sep 2018 03:18:43 +0000 From: Tianyu Lan CC: Tianyu Lan , KY Srinivasan , Haiyang Zhang , Stephen Hemminger , "tglx@linutronix.de" , "mingo@redhat.com" , "hpa@zytor.com" , "x86@kernel.org" , "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "devel@linuxdriverproject.org" , "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "Michael Kelley (EOSG)" , vkuznets , Jork Loeser Subject: [PATCH V2 5/13] KVM/MMU: Flush tlb directly in the kvm_zap_gfn_range() Thread-Topic: [PATCH V2 5/13] KVM/MMU: Flush tlb directly in the kvm_zap_gfn_range() Thread-Index: AQHUTv5NmHeozUNkoUy20Y293SWjhQ== Date: Tue, 18 Sep 2018 03:18:42 +0000 Message-ID: <20180918031754.113013-6-Tianyu.Lan@microsoft.com> References: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> In-Reply-To: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Tianyu.Lan@microsoft.com; x-originating-ip: [52.168.54.252] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;HK0P153MB0180;6:aHe831mWm9+BjJKZG1R3GbMSVrqTFjbU3vz6wlLco9ptv9iBp+mpPp6ILZSwkUY090GISFjw18yJnqo4+r3JEtLt8wX2Kfj71V6OqWwKIeZYarZVf/Hzl0pujVaN4B+7O5uoyIDDbQUAHlXuORjphZAfWT5nzkIhocM4outzL9wEGNA/eGAGswzN1+NSMxcCiFIkAv2hTlfh4Zfdtyd5ff+R4Ts+mY01CQgp2YJK5WQHs/pk8IdQXn/J3V7Q5dB6/6bdwYNb+nBfMqDgJudrn9N4GPZo03xx1m2fqepcU15hRYEzYczX+BB1C+tsB8Ykp1am+SGXTF4GHMBV5N07H/e8OWVvmPR+E4/ic0txe4k+qlznd1OumwbqljeBJlF8tr2clwQEjZs6fTVyMuH9AdMcGfCEFyANOL2o7m0zLxHJ7PBvNUMRfM3xmlX2djN/bzpK7VFWkXNmKGxkVoS5rg==;5:G10AJB8EmfpRbEztUdZuq9DQTaMfY9kosHRK6ng+qGCmAf5MFbaUSve8rF9Ido1evFp3UjOMfdodo+ThjKjgps/+9dKST2gq7xYMHVnirWAaPlu7fsQOuv2beUwrPvTw0lL0nxIbFgiHxBBjILL1+Mj0iop84lu6DZvyjW5LjyI=;7:mFaI5x6Ltqtezcxh2ESKk0Ap4VKWzq460Q17kN8/SERZ2WDTC7t5wXNx5vOgJ+VQ7lC1J8Duwkwk7B/51GBDoA8sc0pcWLTpYj34ZXX9eNre2+x7xWS6geCt5BOnc2lywV/Wn4K7ZNphtxbm07GSiu90q5XJ/8TDEQ+uOuZRkOc3SU4udkKsBodMZNCVcB9KyQ3Nylmk/3se+EKHutO41/Ng9nv/fw4712sXyVjQGbPRPk1DJ74voUh904Wsxu/H x-ms-office365-filtering-correlation-id: a2c43930-c377-4ee0-2cdf-08d61d157029 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989137)(5600074)(711020)(4618075)(2017052603328)(7193020);SRVR:HK0P153MB0180; x-ms-traffictypediagnostic: HK0P153MB0180: x-ld-processed: 72f988bf-86f1-41af-91ab-2d7cd011db47,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(28532068793085)(89211679590171); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231355)(944501410)(52105095)(3002001)(10201501046)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201708071742011)(7699050);SRVR:HK0P153MB0180;BCL:0;PCL:0;RULEID:;SRVR:HK0P153MB0180; x-forefront-prvs: 0799B1B2D7 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(366004)(376002)(396003)(39860400002)(346002)(136003)(199004)(189003)(26005)(102836004)(2906002)(7736002)(6506007)(22452003)(59246006)(54906003)(316002)(14454004)(86362001)(86612001)(36756003)(6436002)(10090500001)(6486002)(6512007)(305945005)(7416002)(53936002)(2900100001)(5250100002)(14444005)(256004)(97736004)(72206003)(478600001)(106356001)(8676002)(81156014)(81166006)(5660300001)(8936002)(6116002)(3846002)(99286004)(76176011)(10290500003)(1076002)(105586002)(476003)(2616005)(11346002)(446003)(66066001)(486006)(107886003)(25786009)(109986005)(68736007)(1671002)(4326008);DIR:OUT;SFP:1102;SCL:1;SRVR:HK0P153MB0180;H:HK0P153MB0129.APCP153.PROD.OUTLOOK.COM;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: 9TfBSbyW1fPtd4OoM1RtbhegD0p375UzmPZCb6mZYxsUe20STt+NDqBAyXG3anMZ/TEeP7ULyFhT5uNw+Mxsyqj319fMEb/26zWKCBu/iRIJ1VT0UGov5UHRJCngLNpbO71HB/pJSlZrAfs0aJdqINdOrrP50wsll0Dz3PIbhoij7u/VKK7venu+N0a7uUpvpoCg/W/IluIialt7/lBpEgaT4XfuNLdKM6SoiV4uJZWH6iqtwrQKKX+LE+X5o4hVSGQo4NN0m+Ikf0VwW85toRW6bdX0miWNpslfDTrBaG74gMKnUtvyXb6l3stHqh70gJEGSD8PIj7ZPjdFJGdn+6CB9JJsf8zsKg3Lz7p6+Ws= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: a2c43930-c377-4ee0-2cdf-08d61d157029 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Sep 2018 03:18:42.7915 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK0P153MB0180 To: unlisted-recipients:; (no To-header on input) Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Originally, flush tlb is done by slot_handle_level_range(). This patch is to flush tlb directly in the kvm_zap_gfn_range() when range flush is available. Signed-off-by: Lan Tianyu --- arch/x86/kvm/mmu.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index dfd2a0710417..56538fa6c017 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c @@ -5578,6 +5578,7 @@ void kvm_zap_gfn_range(struct kvm *kvm, gfn_t gfn_start, gfn_t gfn_end) { struct kvm_memslots *slots; struct kvm_memory_slot *memslot; + bool flush = false; int i; spin_lock(&kvm->mmu_lock); @@ -5585,18 +5586,27 @@ void kvm_zap_gfn_range(struct kvm *kvm, gfn_t gfn_start, gfn_t gfn_end) slots = __kvm_memslots(kvm, i); kvm_for_each_memslot(memslot, slots) { gfn_t start, end; + bool flush_tlb = true; start = max(gfn_start, memslot->base_gfn); end = min(gfn_end, memslot->base_gfn + memslot->npages); if (start >= end) continue; - slot_handle_level_range(kvm, memslot, kvm_zap_rmapp, - PT_PAGE_TABLE_LEVEL, PT_MAX_HUGEPAGE_LEVEL, - start, end - 1, true); + if (kvm_available_flush_tlb_with_range()) + flush_tlb = false; + + flush = slot_handle_level_range(kvm, memslot, + kvm_zap_rmapp, PT_PAGE_TABLE_LEVEL, + PT_MAX_HUGEPAGE_LEVEL, start, + end - 1, flush_tlb); } } + if (flush && kvm_available_flush_tlb_with_range()) + kvm_flush_remote_tlbs_with_address(kvm, gfn_start, + gfn_end - gfn_start + 1); + spin_unlock(&kvm->mmu_lock); } From patchwork Tue Sep 18 03:18:49 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tianyu Lan X-Patchwork-Id: 10603687 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 132561508 for ; Tue, 18 Sep 2018 03:19:00 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0140B2A7A4 for ; Tue, 18 Sep 2018 03:19:00 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E977E2A7A8; Tue, 18 Sep 2018 03:18:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8167A2A7A4 for ; Tue, 18 Sep 2018 03:18:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729308AbeIRItY (ORCPT ); Tue, 18 Sep 2018 04:49:24 -0400 Received: from mail-sg2apc01on0120.outbound.protection.outlook.com ([104.47.125.120]:31264 "EHLO APC01-SG2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729295AbeIRItY (ORCPT ); Tue, 18 Sep 2018 04:49:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SDwoascmo2Fss6i5JqYmFXnB+jAGFa+93djY0ltVWRo=; b=Nk7+VaA2prJC+fG01kdy2emJKLlkM7OuAW7hXGPkPwFcSvIJd1ZST8vFe4+AkCm7cOigUnkcUPbKO4VdCzoFdH+NaNJxl4JmTy8VRLZYLHvnUDIARNuz9rWjfGjBx0s8liFQ9RP5SGF86vwfNEQ63dKz9pn/fVtjwBGcst6+ZDw= Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM (52.133.156.18) by HK0P153MB0180.APCP153.PROD.OUTLOOK.COM (52.133.212.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.5; Tue, 18 Sep 2018 03:18:49 +0000 Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267]) by HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267%3]) with mapi id 15.20.1185.006; Tue, 18 Sep 2018 03:18:49 +0000 From: Tianyu Lan CC: Tianyu Lan , KY Srinivasan , Haiyang Zhang , Stephen Hemminger , "tglx@linutronix.de" , "mingo@redhat.com" , "hpa@zytor.com" , "x86@kernel.org" , "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "devel@linuxdriverproject.org" , "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "Michael Kelley (EOSG)" , vkuznets , Jork Loeser Subject: [PATCH V2 6/13] KVM/MMU: Flush tlb directly in kvm_mmu_zap_collapsible_spte() Thread-Topic: [PATCH V2 6/13] KVM/MMU: Flush tlb directly in kvm_mmu_zap_collapsible_spte() Thread-Index: AQHUTv5RfX4mHpJcVUO/sHh/EVOEwQ== Date: Tue, 18 Sep 2018 03:18:49 +0000 Message-ID: <20180918031754.113013-7-Tianyu.Lan@microsoft.com> References: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> In-Reply-To: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Tianyu.Lan@microsoft.com; x-originating-ip: [52.168.54.252] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;HK0P153MB0180;6:9sfHHTglLtFTWF7OOrFZWiViCWoQ8RMweHDDlGBWl1HjLFJlvNVBPgmGUPnQMfNDdP1A5q7ZXCtwYem1xRovMNBKCetZQ+Jy8EQWk54OjWfIourU2QETVkT5PHk7Fz4gu+dIcPV3zY6H0815aIq123cDnTfPYAx0+D24PR1jVc1UmIlLZ3yO591kU0Byvn8c2mrC1UUsmX6kOcFrmU7XfPKxwOwnBAx7c4vw6Hrl5FY2uHdxQj9eDaAKjhgcmF4iwyGP25t64WhhjKsxRNvEMxUQn6E7rGOYqnd2sY0NX1eWACZMO5PKIL5sOJi3xkzv4Orn6gXvPpA2ftQdxAfYOAMalQhKseY5RUNzA3YMuyRqRPk+L1CVZbQZovlthcywUKiEFIusue1RUhcsXujAhDnsqCzZ1+GxvIBMODL+4Q2hYr4L12xpw9+8CfM25K/knGMFi9iA0rbDefAWV4uDRw==;5:58E0UvuzRf2YRLtBdAKTw6t8bvNMH019K7HvfCmqO9w4zy0tnKuUWl3Dw17iLlW2Zd07GMm53GUy3v26BXhAUZ6zrwRkcNJCyNX5A9LVbtF6SiBOZGHhHZsL6emaqfYZ5299IFYKzAp7Rsaui5XiViIv8WWjk7jK37JBgGM8Vv8=;7:swTIQ00URVGWC5NyjWW6PPj0kVyB6IV9XtEXo9h0cDdGcnENrj3pUBivtp5slakDB2Gv4W/KLyDeE5620aCnOrA36xvqoCbNhcGYueWRnBVxn674gTLNBl/Dl2NVTLdo7u9P5OA6yST5dBfwovHSERfKpwhAR+sj2WCRu9SddW5CUD08YpPEnpxC7mUd3G6kqT6+1GLXEHJ6yLHOGLRDslyIDN9Fj1TxxKifLNPAXOeMQZzsk393axNx90uVo5od x-ms-office365-filtering-correlation-id: 400a0ea3-2183-40d1-f7e8-08d61d157404 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989137)(5600074)(711020)(4618075)(2017052603328)(7193020);SRVR:HK0P153MB0180; x-ms-traffictypediagnostic: HK0P153MB0180: x-ld-processed: 72f988bf-86f1-41af-91ab-2d7cd011db47,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(28532068793085)(89211679590171); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231355)(944501410)(52105095)(3002001)(10201501046)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201708071742011)(7699050);SRVR:HK0P153MB0180;BCL:0;PCL:0;RULEID:;SRVR:HK0P153MB0180; x-forefront-prvs: 0799B1B2D7 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(366004)(376002)(396003)(39860400002)(346002)(136003)(199004)(189003)(26005)(102836004)(2906002)(7736002)(6506007)(22452003)(59246006)(54906003)(316002)(14454004)(86362001)(86612001)(36756003)(575784001)(6436002)(10090500001)(6486002)(6512007)(305945005)(7416002)(53936002)(2900100001)(5250100002)(14444005)(256004)(97736004)(72206003)(478600001)(106356001)(8676002)(81156014)(81166006)(5660300001)(8936002)(6116002)(3846002)(99286004)(76176011)(10290500003)(1076002)(105586002)(476003)(2616005)(11346002)(446003)(66066001)(486006)(107886003)(25786009)(109986005)(68736007)(1671002)(4326008);DIR:OUT;SFP:1102;SCL:1;SRVR:HK0P153MB0180;H:HK0P153MB0129.APCP153.PROD.OUTLOOK.COM;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: adOcX8L24KMbRXXDUAurMgOMh7fuBMXzYZNhEMsV6xnSpLPJhvIrqk9zv6Uz69NPbXL6Ohs06UjFlL7kFQUFhHBjJZF2bjaWjFEgWUlV3Fs1UHsyjHXWg1137byKZV3/r0iXKX5gR+NedA5KNeP5qOANdvnWsMlsCn3wr3f8yQwnF3hp0JinbphNbRAT2cYqT2uddYs2u37oAuEA5zcZuFZeLZC/+SLOc5mQLQCNlENVuo4tW3ekh0jsjZ4LTLZxvrjngJwtauTgliFm2uld9SqkSjEA6oRUQ991J/xqEQF8DxukMrlitzuGO0TB87A+CsInZMCN556uqdUjA5TdxNhAlQ2cvObXis3fICuA3iI= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: 400a0ea3-2183-40d1-f7e8-08d61d157404 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Sep 2018 03:18:49.2801 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK0P153MB0180 To: unlisted-recipients:; (no To-header on input) Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP kvm_mmu_zap_collapsible_spte() returns flush request to the slot_handle_leaf() and the latter does flush on demand. When range flush is available, make kvm_mmu_zap_collapsible_spte() to flush tlb with range directly to avoid returning range back to slot_handle_leaf(). Signed-off-by: Lan Tianyu --- arch/x86/kvm/mmu.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index 56538fa6c017..85a81a62e0a7 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c @@ -5674,7 +5674,13 @@ static bool kvm_mmu_zap_collapsible_spte(struct kvm *kvm, !kvm_is_reserved_pfn(pfn) && PageTransCompoundMap(pfn_to_page(pfn))) { drop_spte(kvm, sptep); - need_tlb_flush = 1; + + if (kvm_available_flush_tlb_with_range()) + kvm_flush_remote_tlbs_with_address(kvm, sp->gfn, + KVM_PAGES_PER_HPAGE(sp->role.level)); + else + need_tlb_flush = 1; + goto restart; } } From patchwork Tue Sep 18 03:18:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tianyu Lan X-Patchwork-Id: 10603703 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7C4791508 for ; Tue, 18 Sep 2018 03:19:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6C8FE2A7B0 for ; Tue, 18 Sep 2018 03:19:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 60E542A7FE; Tue, 18 Sep 2018 03:19:56 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0E2B32A7B0 for ; Tue, 18 Sep 2018 03:19:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729370AbeIRItd (ORCPT ); Tue, 18 Sep 2018 04:49:33 -0400 Received: from mail-sg2apc01on0104.outbound.protection.outlook.com ([104.47.125.104]:35137 "EHLO APC01-SG2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729295AbeIRIta (ORCPT ); Tue, 18 Sep 2018 04:49:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=K2CGbHgZQz9Q5WJeNWx/Rhg/k0ckXE/QkwWnYN4LLgU=; b=ftYx5JxzEB0LZfm8OQXS1q6GECkggBNkmXYCp5X3n33t/6c4srLSN45YRixMadi0t4ulyZQkV2b2332+EfU/j+/zl1tE20zirgTFca5X05niAKBFI47mueR6bMYGGejqGO33rbHlkzrvmoDQNRNpvu5JzVAjHe6RbXTfh3EWQlw= Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM (52.133.156.18) by HK0P153MB0180.APCP153.PROD.OUTLOOK.COM (52.133.212.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.5; Tue, 18 Sep 2018 03:18:56 +0000 Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267]) by HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267%3]) with mapi id 15.20.1185.006; Tue, 18 Sep 2018 03:18:56 +0000 From: Tianyu Lan CC: Tianyu Lan , KY Srinivasan , Haiyang Zhang , Stephen Hemminger , "tglx@linutronix.de" , "mingo@redhat.com" , "hpa@zytor.com" , "x86@kernel.org" , "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "devel@linuxdriverproject.org" , "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "Michael Kelley (EOSG)" , vkuznets , Jork Loeser Subject: [PATCH V2 7/13] KVM: Add flush_link and parent_pte in the struct kvm_mmu_page Thread-Topic: [PATCH V2 7/13] KVM: Add flush_link and parent_pte in the struct kvm_mmu_page Thread-Index: AQHUTv5VCQI1tpqiNk6i3QFgEFo38g== Date: Tue, 18 Sep 2018 03:18:55 +0000 Message-ID: <20180918031754.113013-8-Tianyu.Lan@microsoft.com> References: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> In-Reply-To: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Tianyu.Lan@microsoft.com; x-originating-ip: [52.168.54.252] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;HK0P153MB0180;6:6g+0T+14b9Kmafh0hdqGAbHwnkN5a1+V6KY93Jh0cc0MP2lgsxUcUffhTugOy1TNQKBDiBrYybuwPsFMJ09IudP9e6GIMMpYC32PJjjv+V6vPeLJbc64R38vzONZYwEuWiQavTj8SVnlPuq0Vd8A1c3F2kPm8gjNewQXDbBr+ScqxiNlPDAQdp4U45T67DRs7dkBYuVapngIz5ZlpHQOozKfwaPAhmBVNgQHLCqMbWmniXv5wFwSux5dHndn6tbp9BbrUK+9I/aPFJJxz/XiqmkXq/phuZNXA+jSJVsE6qD05pZ9YxCHxTmERoNhMGzuXPGN6YkFAspvPF/evnWM44AAcbcazAa2com0P6elE1IdUKm+FryXbB2OkLt4s5OKEWcM9okqFnYoAIl88IKeDRQPSBc4FEhgeIAt+c66XrLrf6m1PmwCRaUjDbQr5iW9xdNOy6YCLKyJh/AwCAEnHg==;5:oATPxDavMjGrjJNLWX6/MvG9TlbQdc5EtT3lyy8DTyfqdt9XLSc+qhnTzS86WMWnF7Sy6C50+tdqIjC7X/lhB+n69uje4gVrI1MrRM3A7CrtMtkwklnFpyeEBZdipkpBs4vMLfXwk0HzJ+TEhpSOYkvNnu/K3R7gylE3bhXjF5E=;7:HJ2qEswUfZ7FaYsdiFOp251ryLj1UBrtlMS0S+5GLc1LEf0dMDeeEH35xqYQ+EBveSyt2kZIs+74yfZ3wuje360VVQ/4tXn3EQYcwJH753HcFNeGnxvfUs7yRQVJK8mUaiGqSK+Cr4v15IJI/4wJnMLf890k+LghvMqSG1GStITNwR4u4/5DnQdGLdd7DUIv3jJI2pKXZSc7fKgNMYUtubkAGpui9SN6SJ1E217IEQHjO+7pkRuBXMKuaErf+o0x x-ms-office365-filtering-correlation-id: 1115b55b-4bad-44aa-dcd7-08d61d1577f1 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989137)(5600074)(711020)(4618075)(2017052603328)(7193020);SRVR:HK0P153MB0180; x-ms-traffictypediagnostic: HK0P153MB0180: x-ld-processed: 72f988bf-86f1-41af-91ab-2d7cd011db47,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(28532068793085)(89211679590171); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231355)(944501410)(52105095)(3002001)(10201501046)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201708071742011)(7699050);SRVR:HK0P153MB0180;BCL:0;PCL:0;RULEID:;SRVR:HK0P153MB0180; x-forefront-prvs: 0799B1B2D7 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(366004)(376002)(396003)(39860400002)(346002)(136003)(199004)(189003)(26005)(102836004)(2906002)(7736002)(6506007)(22452003)(59246006)(54906003)(316002)(14454004)(86362001)(86612001)(36756003)(6436002)(10090500001)(6486002)(6512007)(305945005)(7416002)(53936002)(2900100001)(5250100002)(256004)(97736004)(72206003)(478600001)(106356001)(8676002)(81156014)(81166006)(5660300001)(8936002)(6116002)(3846002)(99286004)(76176011)(10290500003)(1076002)(105586002)(476003)(2616005)(11346002)(446003)(66066001)(486006)(107886003)(25786009)(109986005)(68736007)(1671002)(4326008);DIR:OUT;SFP:1102;SCL:1;SRVR:HK0P153MB0180;H:HK0P153MB0129.APCP153.PROD.OUTLOOK.COM;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: vHW5JGupMkNxJosri9rgZ/7iQ2v/np+1smbSvx1rzCjug+gdXD7gS6f32cJHu1aFgu1MZZ5UrBX14R2gciDPvN2cqK2i38TDAD4I+ma1pOe2wCAJgqPcYFTsUc7HjWZKfU18Ap/9dT+BK+6+ViznfrflYiHO7AvpKBy3CiuxZ2g8ekB3fWV6OOlK75haNb4uxab4Mb1wUtpTCpzm5LXTeQnPg31BLXk7fZ88sFsVDR1RBcY6YGK+r8oNh2TE9rc334zHcabhLTOeYcOuChAbLCBPieX9+Mrr3CGE68cY3dUugr33U1dil1v1Trre5dSTAidj772XjzSCfstSArpBdzmvarqe6C+dgIRW9av7Pq0= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1115b55b-4bad-44aa-dcd7-08d61d1577f1 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Sep 2018 03:18:55.8188 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK0P153MB0180 To: unlisted-recipients:; (no To-header on input) Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP PV EPT tlb flush function will accept a list of flush ranges and use struct kvm_mmu_page as the list entry. Signed-off-by: Lan Tianyu --- arch/x86/include/asm/kvm_host.h | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index a6b77978502e..c96bc4cbe4b7 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -279,6 +279,7 @@ struct kvm_rmap_head { struct kvm_mmu_page { struct list_head link; + struct list_head flush_link; struct hlist_node hash_link; /* From patchwork Tue Sep 18 03:19:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tianyu Lan X-Patchwork-Id: 10603689 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id DD708913 for ; Tue, 18 Sep 2018 03:19:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CC5962A7A8 for ; Tue, 18 Sep 2018 03:19:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id C0ABB2A7B0; Tue, 18 Sep 2018 03:19:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5022A2A7A8 for ; Tue, 18 Sep 2018 03:19:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729411AbeIRItj (ORCPT ); Tue, 18 Sep 2018 04:49:39 -0400 Received: from mail-sg2apc01on0137.outbound.protection.outlook.com ([104.47.125.137]:1824 "EHLO APC01-SG2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729398AbeIRIti (ORCPT ); Tue, 18 Sep 2018 04:49:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3/UwvVIprPOzynm3r0UcMqWEkXYflSAIX0YX8blZhP4=; b=fDBj47Q/CW4A0Ki09jBV4nhJwzlqcwsU4n4EE5YuvlztAgqpIlvgcc7L3RzCeFhq8DM2Sf4de6cS9jqk/R1wjVWrzzvXRyx8d2uUibSW7r8C4aXBjVhMPbCAjdb9VzqpUfVnVSLagtQw5cUQ8SyH5NWuE7d/ynb/DXzXSlftOOs= Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM (52.133.156.18) by HK0P153MB0180.APCP153.PROD.OUTLOOK.COM (52.133.212.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.5; Tue, 18 Sep 2018 03:19:02 +0000 Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267]) by HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267%3]) with mapi id 15.20.1185.006; Tue, 18 Sep 2018 03:19:02 +0000 From: Tianyu Lan CC: Tianyu Lan , KY Srinivasan , Haiyang Zhang , Stephen Hemminger , "tglx@linutronix.de" , "mingo@redhat.com" , "hpa@zytor.com" , "x86@kernel.org" , "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "devel@linuxdriverproject.org" , "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "Michael Kelley (EOSG)" , vkuznets , Jork Loeser Subject: [PATCH V2 8/13] KVM: Add spte's point in the struct kvm_mmu_page Thread-Topic: [PATCH V2 8/13] KVM: Add spte's point in the struct kvm_mmu_page Thread-Index: AQHUTv5Yjcsqwk8Jh0W575QE6PqQKg== Date: Tue, 18 Sep 2018 03:19:02 +0000 Message-ID: <20180918031754.113013-9-Tianyu.Lan@microsoft.com> References: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> In-Reply-To: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Tianyu.Lan@microsoft.com; x-originating-ip: [52.168.54.252] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;HK0P153MB0180;6:2Ybs8O/HWWzK+IxpsHRAQqaVNnI/WwO9jrsb6fO6bknNgMQEwmQNNipGzV2hXuijITfWrOk8HPbQZRAsQmNeH7tmUxkD6nfK6sMqV+fMMF3Ba/CCKscydPcjDgpjNlQF0IEnOtFgr0wDAHpfGWnPfLTOY2vhL079J+SHewsQGRoROpOqaI5ppLDkb8HD8usuHBx2rps7S7DMVRDHHTeGJc1c1Y7QqL20SLT7TCPLB0mSeWUF9yj1EiOOUj1cc1ADZ9lYidQzPPqyHi/9HvTSaYa9/6qhPlVDPX0CFp5GcNaLm1q9QF09TzpcifgD2/qPj4IplL4dYrjxX0WP/e8vrg1dApSdtF1qIfGXaIIjGhpnsdMPpKLczPK6ZKlXidRb3RFQN470ooUX2TcZ1MAsP4K6v1wHa2q7RL8RQZGgA7zM8q5hKJO1CM9MaRIyTyAe7+pkkRTO4n9Vv4KgSiwDrg==;5:78R4pM1fSMic2NGGOqorCJnKF94c6Boi8hjfDA9DRva0iGtRk6Kl85TDytjqF0+DLYxMoLtYulg1FpU9yhS+SFY/z3jxTHKdEOwbIC/jNpw8gTUfriovcTvFf1Ab2fHZ3Mv5Kh/CietVSPmzmqgduvm2xc/cnywPBVTo8BdOG6k=;7:u8FTqGKjT1j5IKOzqc6HBt3GEzaO5QfqO8yVN3MEQaPRgJsp787LhWU8kaBaR7AHr384KaqmJInmqE/PN6mGjAQq0ujD4HrJygh//L/RrDhfEZcqz21BsD2/5Ct350pSmmbJpQBNso872U7VR+xVZPPDiS1lSk/NSbS4FvSj9k6k+ZznIpo1oemVLXyqio1cdNclAk0P+4jSryc9FKuM3v15k3l90vI4Pd0XyFQ+c3Bvd3JMECI/7UshY3Of1NFP x-ms-office365-filtering-correlation-id: 5a503a90-96fd-4be9-121b-08d61d157bb5 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989137)(5600074)(711020)(4618075)(2017052603328)(7193020);SRVR:HK0P153MB0180; x-ms-traffictypediagnostic: HK0P153MB0180: x-ld-processed: 72f988bf-86f1-41af-91ab-2d7cd011db47,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(28532068793085)(89211679590171); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231355)(944501410)(52105095)(3002001)(10201501046)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201708071742011)(7699050);SRVR:HK0P153MB0180;BCL:0;PCL:0;RULEID:;SRVR:HK0P153MB0180; x-forefront-prvs: 0799B1B2D7 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(366004)(376002)(396003)(39860400002)(346002)(136003)(199004)(189003)(26005)(102836004)(2906002)(7736002)(6506007)(22452003)(59246006)(54906003)(316002)(14454004)(86362001)(86612001)(36756003)(575784001)(6436002)(10090500001)(6486002)(6512007)(305945005)(7416002)(53936002)(2900100001)(5250100002)(14444005)(256004)(97736004)(72206003)(478600001)(106356001)(8676002)(81156014)(81166006)(5660300001)(8936002)(6116002)(3846002)(99286004)(76176011)(10290500003)(1076002)(105586002)(476003)(2616005)(11346002)(446003)(66066001)(486006)(107886003)(25786009)(109986005)(68736007)(1671002)(4326008);DIR:OUT;SFP:1102;SCL:1;SRVR:HK0P153MB0180;H:HK0P153MB0129.APCP153.PROD.OUTLOOK.COM;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: T/17i9SV8IEt9c/gwj0oSFI2ajDnKmjtYMwSaAchIykAPW3H5QwUSDFJibmBYSTVAKtHdD3gSVa26dS71XOmSHd/vjqcyeI5pyNQsKYSFOe62ItAkejnpQHajVfNKIhnKBHYyhTXVY8dzjCMt2/M/w76VrcACY/y3X8uE1/Xo0wiX1/aW4L3ZD602z9FwexFiylL28J827UDQCBCHo2SUkiqMyEeBWJPQzvKzYG6dbHb9sIVrS8+T0KBiSl4QRSPYLWTHy+pasGVNSuoq+WeQZKZ24LExq9V2+semdyEowl7l46zHfkTb0ST+wAr/9xTZA1f3cmmP4202NoRGOZ3VG/iskKw06d1h/OUkSGxM00= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5a503a90-96fd-4be9-121b-08d61d157bb5 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Sep 2018 03:19:02.1953 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK0P153MB0180 To: unlisted-recipients:; (no To-header on input) Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP It's necessary to check whether mmu page is last or large page when add mmu page into flush list. "spte" is needed for such check and so add spte point in the struct kvm_mmu_page. Signed-off-by: Lan Tianyu --- arch/x86/include/asm/kvm_host.h | 1 + arch/x86/kvm/mmu.c | 5 +++++ arch/x86/kvm/paging_tmpl.h | 2 ++ 3 files changed, 8 insertions(+) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index c96bc4cbe4b7..d42d96e637b5 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -296,6 +296,7 @@ struct kvm_mmu_page { int root_count; /* Currently serving as active root */ unsigned int unsync_children; struct kvm_rmap_head parent_ptes; /* rmap pointers to parent sptes */ + u64 *sptep; /* The page is obsolete if mmu_valid_gen != kvm->arch.mmu_valid_gen. */ unsigned long mmu_valid_gen; diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index 85a81a62e0a7..8f27cb8c3989 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c @@ -3162,6 +3162,7 @@ static int __direct_map(struct kvm_vcpu *vcpu, int write, int map_writable, pseudo_gfn = base_addr >> PAGE_SHIFT; sp = kvm_mmu_get_page(vcpu, pseudo_gfn, iterator.addr, iterator.level - 1, 1, ACC_ALL); + sp->sptep = iterator.sptep; link_shadow_page(vcpu, iterator.sptep, sp); } @@ -3599,6 +3600,7 @@ static int mmu_alloc_direct_roots(struct kvm_vcpu *vcpu) sp = kvm_mmu_get_page(vcpu, 0, 0, vcpu->arch.mmu.shadow_root_level, 1, ACC_ALL); ++sp->root_count; + sp->sptep = NULL; spin_unlock(&vcpu->kvm->mmu_lock); vcpu->arch.mmu.root_hpa = __pa(sp->spt); } else if (vcpu->arch.mmu.shadow_root_level == PT32E_ROOT_LEVEL) { @@ -3615,6 +3617,7 @@ static int mmu_alloc_direct_roots(struct kvm_vcpu *vcpu) i << 30, PT32_ROOT_LEVEL, 1, ACC_ALL); root = __pa(sp->spt); ++sp->root_count; + sp->sptep = NULL; spin_unlock(&vcpu->kvm->mmu_lock); vcpu->arch.mmu.pae_root[i] = root | PT_PRESENT_MASK; } @@ -3655,6 +3658,7 @@ static int mmu_alloc_shadow_roots(struct kvm_vcpu *vcpu) vcpu->arch.mmu.shadow_root_level, 0, ACC_ALL); root = __pa(sp->spt); ++sp->root_count; + sp->sptep = NULL; spin_unlock(&vcpu->kvm->mmu_lock); vcpu->arch.mmu.root_hpa = root; return 0; @@ -3692,6 +3696,7 @@ static int mmu_alloc_shadow_roots(struct kvm_vcpu *vcpu) 0, ACC_ALL); root = __pa(sp->spt); ++sp->root_count; + sp->sptep = NULL; spin_unlock(&vcpu->kvm->mmu_lock); vcpu->arch.mmu.pae_root[i] = root | pm_mask; diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h index 708a5e44861a..5cbaf7c4a729 100644 --- a/arch/x86/kvm/paging_tmpl.h +++ b/arch/x86/kvm/paging_tmpl.h @@ -632,6 +632,7 @@ static int FNAME(fetch)(struct kvm_vcpu *vcpu, gva_t addr, table_gfn = gw->table_gfn[it.level - 2]; sp = kvm_mmu_get_page(vcpu, table_gfn, addr, it.level-1, false, access); + sp->sptep = it.sptep; } /* @@ -662,6 +663,7 @@ static int FNAME(fetch)(struct kvm_vcpu *vcpu, gva_t addr, sp = kvm_mmu_get_page(vcpu, direct_gfn, addr, it.level-1, true, direct_access); + sp->sptep = it.sptep; link_shadow_page(vcpu, it.sptep, sp); } From patchwork Tue Sep 18 03:19:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tianyu Lan X-Patchwork-Id: 10603691 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2B1C1913 for ; Tue, 18 Sep 2018 03:19:20 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 19A4B2A7A8 for ; Tue, 18 Sep 2018 03:19:20 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0DACD2A7B0; Tue, 18 Sep 2018 03:19:20 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9249F2A7A8 for ; Tue, 18 Sep 2018 03:19:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729446AbeIRIto (ORCPT ); Tue, 18 Sep 2018 04:49:44 -0400 Received: from mail-sg2apc01on0099.outbound.protection.outlook.com ([104.47.125.99]:64384 "EHLO APC01-SG2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729423AbeIRIto (ORCPT ); Tue, 18 Sep 2018 04:49:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2kmv8OvPaim2lfAazx49HhV8tDVf9WqFEVAbmq3XPkg=; b=iSpp0AUmXUeaqOSO0LF/xEgZWvNv/9R38C5yP4HTNPwAwL2ykr/1dyebwmpsgfCfG/TxqR7l148lSoVhxGCJZVCQx/kiSQlo8c1TRBGsHti9hO7FwShlZzO0paTj/28hC1jSl4Vw5zHHoK6/9/LBTtbms/A8fuROYIrMuTv+HxI= Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM (52.133.156.18) by HK0P153MB0180.APCP153.PROD.OUTLOOK.COM (52.133.212.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.5; Tue, 18 Sep 2018 03:19:09 +0000 Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267]) by HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267%3]) with mapi id 15.20.1185.006; Tue, 18 Sep 2018 03:19:09 +0000 From: Tianyu Lan CC: Tianyu Lan , KY Srinivasan , Haiyang Zhang , Stephen Hemminger , "tglx@linutronix.de" , "mingo@redhat.com" , "hpa@zytor.com" , "x86@kernel.org" , "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "devel@linuxdriverproject.org" , "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "Michael Kelley (EOSG)" , vkuznets , Jork Loeser Subject: [PATCH V2 9/13] KVM/MMU: Replace tlb flush function with range list flush function Thread-Topic: [PATCH V2 9/13] KVM/MMU: Replace tlb flush function with range list flush function Thread-Index: AQHUTv5cEo2SxfeiQk22R5/nK31APg== Date: Tue, 18 Sep 2018 03:19:08 +0000 Message-ID: <20180918031754.113013-10-Tianyu.Lan@microsoft.com> References: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> In-Reply-To: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Tianyu.Lan@microsoft.com; x-originating-ip: [52.168.54.252] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;HK0P153MB0180;6:FeeYfVrj4JYbzNrPd6pOoysMkHuFbwrxkPBQGDyH6yKi0i/Gqn8yQoj83Hu8ZFUARNqgQZCz6Gs67corq+Sf23wbvqgqFdYWxg/M6rpzsSc1W8LinKiCPtn1xR/LrkM7DeLTXHdH2hnm7ObDsiNJTT2ng7z57n16P5ELDNy4kOMqbJDTjZvz3q+ZkqsHFr/InCUPhuZ5OTW6aG2VNHuyZ+fXTlzyVwigchoBDZqqtHILRQwZsT+a8DKYjNKMorza/6SdZXoKePG+3WgbE1TCWoKkkBqcAJoLg1SgXr9mg4YQpx3pPvVBam/xMtP5bpL5jJmAV6FTfLG6ntalu9IBrJhFfJkV/F2jjtEdzbmea3SSeoRUv+oTd7YWF88BgRBJW3WRrVxlgbb+Brx7PbId0yP7xYYZcI7XES+AaXkukfKQwnVBYkHwp3sppX4QKWMxz74/pRL+V6HcCp+gWYXOqA==;5:9KxN8xZ4DWsJPuHUAt+C1lcGcWAknq9TpRYzKwLLf9dl95E/KE6lRdkp9uozX+aXQLYc5EKgYS/Rq2Z5vxgoxqNSF52lJbdC08ktzruXekvlnjUEI5CIWnKLMmmrBPLfmefhYbC8ew37OR0lPd7mStYWRnyXMZY+Qr7gxxWp3NA=;7:URQm2m9wm+MeTSEc2r4XAQUGAXOySAr/lUasYCpC30IKiqwxVUhl+FFfcFaLWvaa28Rzpf+94s0bGXgBXCuOiJUpTBikYx77Quzn17Z/NKP0Q/ifctYszIAPkfSDc8rnqgwDN2ypTVD8vE4EfKnn61Rs1GEshTWzs2iEsVqgqp1KVjN8lcMMJpHcVVvnizUs/5A4395TU+RQaan+pi2WMXOFJCmcKcUxp14Rok0v4+uSQmytQPDin9rsLdcojWBs x-ms-office365-filtering-correlation-id: 862b444e-490a-4771-befb-08d61d157f81 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989137)(5600074)(711020)(4618075)(2017052603328)(7193020);SRVR:HK0P153MB0180; x-ms-traffictypediagnostic: HK0P153MB0180: x-ld-processed: 72f988bf-86f1-41af-91ab-2d7cd011db47,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(28532068793085)(89211679590171)(788757137089); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231355)(944501410)(52105095)(3002001)(10201501046)(93006095)(93001095)(6055026)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201708071742011)(7699050);SRVR:HK0P153MB0180;BCL:0;PCL:0;RULEID:;SRVR:HK0P153MB0180; x-forefront-prvs: 0799B1B2D7 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(366004)(376002)(396003)(39860400002)(346002)(136003)(199004)(189003)(26005)(102836004)(2906002)(7736002)(6506007)(22452003)(59246006)(54906003)(316002)(14454004)(86362001)(86612001)(36756003)(6436002)(10090500001)(6486002)(6512007)(305945005)(7416002)(53936002)(2900100001)(5250100002)(14444005)(256004)(97736004)(72206003)(478600001)(106356001)(8676002)(81156014)(81166006)(5660300001)(8936002)(6116002)(3846002)(99286004)(76176011)(10290500003)(1076002)(105586002)(476003)(2616005)(11346002)(446003)(66066001)(486006)(107886003)(25786009)(109986005)(68736007)(1671002)(4326008);DIR:OUT;SFP:1102;SCL:1;SRVR:HK0P153MB0180;H:HK0P153MB0129.APCP153.PROD.OUTLOOK.COM;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: 7PGCyjB9waDTEEks9ds2CuUNBSvefMUTHUZg3lGuuayGrYlJZx20H0cq9Su2tgQ6gkDzQWyZI6RyjM6uy7ZUAiQv1MlhbsapIhmW6dnXLoQi7RVfpGfA5nep/wzqknR3sGieP0j9b4ed8bhQonUrISwk2y4R0vNBW5/T1pmdw46lseF4O4NMTp00gi3638WyGDNWqkxZWF4Mc6ZDVfRRdiMgMfAq1RhegkqwMCObpJellsrJhKIb2ss5RNh9pEBKtm+qQ/gmUfzTZ4HNUsvvpFj3lWFqiVXECv2vi/SA3lwmAYg+WyqJxcWqMFc1Nf8APMuPH5Et/iNR6lm/6YAhUJS+/xeXmkOcs845CvrEQxg= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: 862b444e-490a-4771-befb-08d61d157f81 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Sep 2018 03:19:08.5508 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK0P153MB0180 To: unlisted-recipients:; (no To-header on input) Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch is to use range list flush function in the mmu_sync_children(), kvm_mmu_commit_zap_page() and FNAME(sync_page)(). Signed-off-by: Lan Tianyu --- arch/x86/kvm/mmu.c | 26 +++++++++++++++++++++++--- arch/x86/kvm/paging_tmpl.h | 5 ++++- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index 8f27cb8c3989..0390e67715ee 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c @@ -1092,6 +1092,13 @@ static void update_gfn_disallow_lpage_count(struct kvm_memory_slot *slot, } } +static void kvm_mmu_queue_flush_request(struct kvm_mmu_page *sp, + struct list_head *flush_list) +{ + if (sp->sptep && is_last_spte(*sp->sptep, sp->role.level)) + list_add(&sp->flush_link, flush_list); +} + void kvm_mmu_gfn_disallow_lpage(struct kvm_memory_slot *slot, gfn_t gfn) { update_gfn_disallow_lpage_count(slot, gfn, 1); @@ -2369,12 +2376,16 @@ static void mmu_sync_children(struct kvm_vcpu *vcpu, while (mmu_unsync_walk(parent, &pages)) { bool protected = false; + LIST_HEAD(flush_list); - for_each_sp(pages, sp, parents, i) + for_each_sp(pages, sp, parents, i) { protected |= rmap_write_protect(vcpu, sp->gfn); + kvm_mmu_queue_flush_request(sp, &flush_list); + } if (protected) { - kvm_flush_remote_tlbs(vcpu->kvm); + kvm_flush_remote_tlbs_with_list(vcpu->kvm, + &flush_list); flush = false; } @@ -2710,6 +2721,7 @@ static void kvm_mmu_commit_zap_page(struct kvm *kvm, struct list_head *invalid_list) { struct kvm_mmu_page *sp, *nsp; + LIST_HEAD(flush_list); if (list_empty(invalid_list)) return; @@ -2723,7 +2735,15 @@ static void kvm_mmu_commit_zap_page(struct kvm *kvm, * In addition, kvm_flush_remote_tlbs waits for all vcpus to exit * guest mode and/or lockless shadow page table walks. */ - kvm_flush_remote_tlbs(kvm); + if (kvm_available_flush_tlb_with_range()) { + list_for_each_entry(sp, invalid_list, link) + kvm_mmu_queue_flush_request(sp, &flush_list); + + if (!list_empty(&flush_list)) + kvm_flush_remote_tlbs_with_list(kvm, &flush_list); + } else { + kvm_flush_remote_tlbs(kvm); + } list_for_each_entry_safe(sp, nsp, invalid_list, link) { WARN_ON(!sp->role.invalid || sp->root_count); diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h index 5cbaf7c4a729..a5f967e81429 100644 --- a/arch/x86/kvm/paging_tmpl.h +++ b/arch/x86/kvm/paging_tmpl.h @@ -972,6 +972,7 @@ static int FNAME(sync_page)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp) bool host_writable; gpa_t first_pte_gpa; int set_spte_ret = 0; + LIST_HEAD(flush_list); /* direct kvm_mmu_page can not be unsync. */ BUG_ON(sp->role.direct); @@ -1032,10 +1033,12 @@ static int FNAME(sync_page)(struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp) pte_access, PT_PAGE_TABLE_LEVEL, gfn, spte_to_pfn(sp->spt[i]), true, false, host_writable); + if (set_spte_ret && kvm_available_flush_tlb_with_range()) + kvm_mmu_queue_flush_request(sp, &flush_list); } if (set_spte_ret & SET_SPTE_NEED_REMOTE_TLB_FLUSH) - kvm_flush_remote_tlbs(vcpu->kvm); + kvm_flush_remote_tlbs_with_list(vcpu->kvm, &flush_list); return nr_present; } From patchwork Tue Sep 18 03:19:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tianyu Lan X-Patchwork-Id: 10603701 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C6300913 for ; Tue, 18 Sep 2018 03:19:52 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B5E9B2A7B0 for ; Tue, 18 Sep 2018 03:19:52 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A9F6B2A7D5; Tue, 18 Sep 2018 03:19:52 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 812152A7B0 for ; Tue, 18 Sep 2018 03:19:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729460AbeIRItx (ORCPT ); Tue, 18 Sep 2018 04:49:53 -0400 Received: from mail-hk2apc01on0134.outbound.protection.outlook.com ([104.47.124.134]:26991 "EHLO APC01-HK2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729423AbeIRItw (ORCPT ); Tue, 18 Sep 2018 04:49:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zVpmtfU8wjS+Cu8+DmBMnI45GEn3ZQrFdtue46elr+A=; b=WvGo9tWw5XEckOZBRE+caDexgYuBeoEtWnzO8e9ovvZsD6SVPKI/Rz4fZmN7ckc8YuHTVaRo+jVd8OTWip06uBzTMwTfTBqdJG034KlA9oHUpIf3KS5fo+ihN+5vQs3beInswf6mFZqRe9UEIaAUUtIkhHyPr5/c/m5zD3ua6/c= Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM (52.133.156.18) by HK0P153MB0130.APCP153.PROD.OUTLOOK.COM (52.133.156.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.5; Tue, 18 Sep 2018 03:19:15 +0000 Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267]) by HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267%3]) with mapi id 15.20.1185.006; Tue, 18 Sep 2018 03:19:15 +0000 From: Tianyu Lan CC: Tianyu Lan , KY Srinivasan , Haiyang Zhang , Stephen Hemminger , "tglx@linutronix.de" , "mingo@redhat.com" , "hpa@zytor.com" , "x86@kernel.org" , "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "devel@linuxdriverproject.org" , "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "Michael Kelley (EOSG)" , vkuznets , Jork Loeser Subject: [PATCH V2 10/13] x86/hyper-v: Add HvFlushGuestAddressList hypercall support Thread-Topic: [PATCH V2 10/13] x86/hyper-v: Add HvFlushGuestAddressList hypercall support Thread-Index: AQHUTv5g4r9T3NuYAU+4IddbeE1g5A== Date: Tue, 18 Sep 2018 03:19:14 +0000 Message-ID: <20180918031754.113013-11-Tianyu.Lan@microsoft.com> References: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> In-Reply-To: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Tianyu.Lan@microsoft.com; x-originating-ip: [52.168.54.252] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;HK0P153MB0130;6:Ie1K8vIMXYZZUqTbEpmvAvV3gfuNU2/UykAiulzInNZES0qoIEf8HY91aK7xdoLVyp6LesFwGRdJA3G9HaSc9IpnNx9TqVSIOV+cgzlvQBlkP+j1PUgXZMyHEZXY+wwVR91ls/dVoL/iOJoO9M3LS1OcbU5DGtuQV9cStZ5xLZAY6kOnMNQHFEc+zsa1C3H+pCP3qU2fpzVHksfz0zrxrcuL5UehwsQa6sfIMfj1GhsqyALClCiTLetnsQNeBFv7vm7tS0CsV28oZnd3qPG2E9ZPPLZpEJN3G7UK+gZIoP5lCyLhX6mWUjEWDXzsHyNlqjH0+qhpOUxrbzGAXTE+WYKVm9RGx4UUA8tFWXPbBVzewGEsKskri9LKXl59H5ekqUk82l3sQHtVxtBKKchxjkUM2zwep5UUZ+R+Tn2RY1yRqnW59WZegJMd0aJmIFWnzUyxVySEm4x0NQShqY46jQ==;5:aHfLSjLKYgCxgHs169Kj6WLFMGiSHPVS2pwGwJ3USBVhRWc6QfI+ENgLRcjJXz2+9kR7Qg0w7JRTd8bWndTemnd5FzCNx5UYpVC7MWqdl4UrfWmf0s72iHHDt9Dh6OhBzUlQZyLdSZo7e38YIUOVtg3B0vYxujtQ7+HUjoUZ1AU=;7:ZXuaDiU5Hcq1rGPLxHkbRLmPSSiIxbL0l8+Hifj6Z0Y9NTei3jdZyQ1X0oJ9cY9qUK9mlmCnEeXiAnry8Oma/+Y948aUDs9R6dbzVd9/+oIfKPPhwU5PhcdvRGzQciD8l/RmTRaWPitOCjYzAsqHBabb8KOdIEPSBWPPf6t8dmdUZMaxJDhSVriVd5Z1tg6aVoBUFXtx/V6o9FUVVi0WfjCI7IcgRLy5RY4Rs819iWgNZ1idegrpUWf56xTyJUwk x-ms-office365-filtering-correlation-id: d1096772-7211-4e09-d5a6-08d61d158354 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989137)(5600074)(711020)(4618075)(2017052603328)(7193020);SRVR:HK0P153MB0130; x-ms-traffictypediagnostic: HK0P153MB0130: x-ld-processed: 72f988bf-86f1-41af-91ab-2d7cd011db47,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(28532068793085)(89211679590171); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231355)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(149027)(150027)(6041310)(20161123564045)(20161123558120)(20161123560045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699050);SRVR:HK0P153MB0130;BCL:0;PCL:0;RULEID:;SRVR:HK0P153MB0130; x-forefront-prvs: 0799B1B2D7 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(6029001)(376002)(346002)(39860400002)(366004)(396003)(136003)(199004)(189003)(6486002)(36756003)(59246006)(68736007)(25786009)(2900100001)(5660300001)(22452003)(11346002)(53936002)(316002)(446003)(305945005)(5250100002)(107886003)(109986005)(86362001)(575784001)(7736002)(476003)(2616005)(7416002)(86612001)(486006)(14454004)(256004)(6512007)(72206003)(8936002)(4326008)(6506007)(478600001)(97736004)(26005)(3846002)(102836004)(8676002)(6116002)(10090500001)(81156014)(6436002)(14444005)(81166006)(106356001)(76176011)(2906002)(105586002)(1076002)(1671002)(54906003)(66066001)(99286004)(10290500003);DIR:OUT;SFP:1102;SCL:1;SRVR:HK0P153MB0130;H:HK0P153MB0129.APCP153.PROD.OUTLOOK.COM;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: 6Z1G9gSq21BvG6Q97qVqONvg8xWfnxoWr1+PdO1BF1vElBCJ9/DmwMekouhWazIePOLz1YB/UDtJNCKnFu5GdVqht/vGtMDDveL3rVxJMcy/P4Rft1vX57bFpbegaGw3KaU6d7eLYHjg+XpJFZ6vOHMMrXjDQQFXTtf46iTa9Y07S5exw/wpn8c3BtgD5/weXfcNpViJFQdlbxuy0cSFkTbuUJ7K6VYx0PFE2QPmF2EP7hjf/XTbao/KLfKl5vLX4dhJTk2z8RnCdZJl1kYN6+AorkaAR+X3u30UNKMsKylWIt4rDxDI0F7HkG/4bC5BQhp+v/rFQzgzv5oZY9uua2QYovObmqDQ01k7U2Uewkc= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-ID: <62F86B30E9210443B05D6C5475683C9C@APCP153.PROD.OUTLOOK.COM> MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: d1096772-7211-4e09-d5a6-08d61d158354 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Sep 2018 03:19:14.9944 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK0P153MB0130 To: unlisted-recipients:; (no To-header on input) Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Hyper-V provides HvFlushGuestAddressList() hypercall to flush EPT tlb with specified ranges. This patch is to add the hypercall support. Signed-off-by: Lan Tianyu --- Change since v1: Add hyperv tlb flush struct to avoid use kvm tlb flush struct in the hyperv file. --- arch/x86/hyperv/nested.c | 103 +++++++++++++++++++++++++++++++++++++ arch/x86/include/asm/hyperv-tlfs.h | 17 ++++++ arch/x86/include/asm/mshyperv.h | 16 ++++++ 3 files changed, 136 insertions(+) diff --git a/arch/x86/hyperv/nested.c b/arch/x86/hyperv/nested.c index b8e60cc50461..40ddbfd54573 100644 --- a/arch/x86/hyperv/nested.c +++ b/arch/x86/hyperv/nested.c @@ -7,15 +7,32 @@ * * Author : Lan Tianyu */ +#define pr_fmt(fmt) "Hyper-V: " fmt #include #include #include #include +#include #include +/* + * MAX_FLUSH_PAGES = "additional_pages" + 1. It's limited + * by the bitwidth of "additional_pages" in union hv_gpa_page_range. + */ +#define MAX_FLUSH_PAGES (2048) + +/* + * All input flush parameters are in single page. The max flush count + * is equal with how many entries of union hv_gpa_page_range can be + * populated in the input parameter page. MAX_FLUSH_REP_COUNT + * = (4096 - 16) / 8. (“Page Size” - "Address Space" - "Flags") / + * "GPA Range". + */ +#define MAX_FLUSH_REP_COUNT (510) + int hyperv_flush_guest_mapping(u64 as) { struct hv_guest_mapping_flush **flush_pcpu; @@ -54,3 +71,89 @@ int hyperv_flush_guest_mapping(u64 as) return ret; } EXPORT_SYMBOL_GPL(hyperv_flush_guest_mapping); + +static int fill_flush_list(union hv_gpa_page_range gpa_list[], + int offset, u64 start_gfn, u64 pages) +{ + int gpa_n = offset; + u64 cur = start_gfn; + u64 additional_pages; + + do { + if (gpa_n >= MAX_FLUSH_REP_COUNT) { + pr_warn("Request exceeds HvFlushGuestList max flush count."); + return -ENOSPC; + } + + if (pages > MAX_FLUSH_PAGES) { + additional_pages = MAX_FLUSH_PAGES - 1; + pages -= MAX_FLUSH_PAGES; + } else { + additional_pages = pages - 1; + pages = 0; + } + + gpa_list[gpa_n].page.additional_pages = additional_pages; + gpa_list[gpa_n].page.largepage = false; + gpa_list[gpa_n].page.basepfn = cur; + + cur += additional_pages + 1; + gpa_n++; + } while (pages > 0); + + return gpa_n; +} + +int hyperv_flush_guest_mapping_range(u64 as, struct hyperv_tlb_range *range) +{ + struct hv_guest_mapping_flush_list **flush_pcpu; + struct hv_guest_mapping_flush_list *flush; + u64 status = 0; + unsigned long flags; + int ret = -ENOTSUPP; + int gpa_n = 0; + + if (!hv_hypercall_pg) + goto fault; + + local_irq_save(flags); + + flush_pcpu = (struct hv_guest_mapping_flush_list **) + this_cpu_ptr(hyperv_pcpu_input_arg); + + flush = *flush_pcpu; + if (unlikely(!flush)) { + local_irq_restore(flags); + goto fault; + } + + flush->address_space = as; + flush->flags = 0; + + if (!range->flush_list) + gpa_n = fill_flush_list(flush->gpa_list, gpa_n, + range->start_gfn, range->pages); + else if (range->parse_flush_list_func) + gpa_n = range->parse_flush_list_func(flush->gpa_list, gpa_n, + range->flush_list, fill_flush_list); + else + gpa_n = -1; + + if (gpa_n < 0) { + local_irq_restore(flags); + goto fault; + } + + status = hv_do_rep_hypercall(HVCALL_FLUSH_GUEST_PHYSICAL_ADDRESS_LIST, + gpa_n, 0, flush, NULL); + + local_irq_restore(flags); + + if (!(status & HV_HYPERCALL_RESULT_MASK)) + ret = 0; + else + ret = status; +fault: + return ret; +} +EXPORT_SYMBOL_GPL(hyperv_flush_guest_mapping_range); diff --git a/arch/x86/include/asm/hyperv-tlfs.h b/arch/x86/include/asm/hyperv-tlfs.h index e977b6b3a538..512f22b49999 100644 --- a/arch/x86/include/asm/hyperv-tlfs.h +++ b/arch/x86/include/asm/hyperv-tlfs.h @@ -353,6 +353,7 @@ struct hv_tsc_emulation_status { #define HVCALL_POST_MESSAGE 0x005c #define HVCALL_SIGNAL_EVENT 0x005d #define HVCALL_FLUSH_GUEST_PHYSICAL_ADDRESS_SPACE 0x00af +#define HVCALL_FLUSH_GUEST_PHYSICAL_ADDRESS_LIST 0x00b0 #define HV_X64_MSR_VP_ASSIST_PAGE_ENABLE 0x00000001 #define HV_X64_MSR_VP_ASSIST_PAGE_ADDRESS_SHIFT 12 @@ -750,6 +751,22 @@ struct hv_guest_mapping_flush { u64 flags; }; +/* HvFlushGuestPhysicalAddressList hypercall */ +union hv_gpa_page_range { + u64 address_space; + struct { + u64 additional_pages:11; + u64 largepage:1; + u64 basepfn:52; + } page; +}; + +struct hv_guest_mapping_flush_list { + u64 address_space; + u64 flags; + union hv_gpa_page_range gpa_list[]; +}; + /* HvFlushVirtualAddressSpace, HvFlushVirtualAddressList hypercalls */ struct hv_tlb_flush { u64 address_space; diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h index f37704497d8f..19f49fbcf94d 100644 --- a/arch/x86/include/asm/mshyperv.h +++ b/arch/x86/include/asm/mshyperv.h @@ -22,6 +22,16 @@ struct ms_hyperv_info { extern struct ms_hyperv_info ms_hyperv; +struct hyperv_tlb_range { + u64 start_gfn; + u64 pages; + struct list_head *flush_list; + int (*parse_flush_list_func)(union hv_gpa_page_range gpa_list[], + int offset, struct list_head *flush_list, + int (*fill_flush_list)(union hv_gpa_page_range gpa_list[], + int offset, u64 start_gfn, u64 end_gfn)); +}; + /* * Generate the guest ID. */ @@ -348,6 +358,7 @@ void set_hv_tscchange_cb(void (*cb)(void)); void clear_hv_tscchange_cb(void); void hyperv_stop_tsc_emulation(void); int hyperv_flush_guest_mapping(u64 as); +int hyperv_flush_guest_mapping_range(u64 as, struct hyperv_tlb_range *range); #ifdef CONFIG_X86_64 void hv_apic_init(void); @@ -368,6 +379,11 @@ static inline struct hv_vp_assist_page *hv_get_vp_assist_page(unsigned int cpu) return NULL; } static inline int hyperv_flush_guest_mapping(u64 as) { return -1; } +static inline int hyperv_flush_guest_mapping_range(u64 as, + struct hyperv_tlb_range *range) +{ + return -1; +} #endif /* CONFIG_HYPERV */ #ifdef CONFIG_HYPERV_TSCPAGE From patchwork Tue Sep 18 03:19:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tianyu Lan X-Patchwork-Id: 10603693 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1007B1508 for ; Tue, 18 Sep 2018 03:19:33 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 000342A7A8 for ; Tue, 18 Sep 2018 03:19:32 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E6F7C2A7B0; Tue, 18 Sep 2018 03:19:32 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 898DE2A7A8 for ; Tue, 18 Sep 2018 03:19:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729488AbeIRIt4 (ORCPT ); Tue, 18 Sep 2018 04:49:56 -0400 Received: from mail-eopbgr1300125.outbound.protection.outlook.com ([40.107.130.125]:61168 "EHLO APC01-HK2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729423AbeIRItz (ORCPT ); Tue, 18 Sep 2018 04:49:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zpIPv/V/Z1U0u7suhhmsouyDUzvd8/Tksq9AFaxt5oU=; b=O9QMwZONkjbWgfcAMiF0nImtACn10TutKk6qkaAqOS/wo8j7kls07QPNajFKrJIasaOl3QXBUfqAC7SOzFkJSgUVlM4xDQkr0iZlKJC95niPXmSlyrxq9BSGiLO/0CtdtjXfmKL8Xr3poFWwevEdDGwKtPBZR7bbhaG8Ju6eqcQ= Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM (52.133.156.18) by HK0P153MB0130.APCP153.PROD.OUTLOOK.COM (52.133.156.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.5; Tue, 18 Sep 2018 03:19:21 +0000 Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267]) by HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267%3]) with mapi id 15.20.1185.006; Tue, 18 Sep 2018 03:19:21 +0000 From: Tianyu Lan CC: Tianyu Lan , KY Srinivasan , Haiyang Zhang , Stephen Hemminger , "tglx@linutronix.de" , "mingo@redhat.com" , "hpa@zytor.com" , "x86@kernel.org" , "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "devel@linuxdriverproject.org" , "linux-kernel@vger.kernel.org" , "kvm@vger.kernel.org" , "Michael Kelley (EOSG)" , vkuznets , Jork Loeser Subject: [PATCH V2 11/13] x86/Hyper-v: Add trace in the hyperv_nested_flush_guest_mapping_range() Thread-Topic: [PATCH V2 11/13] x86/Hyper-v: Add trace in the hyperv_nested_flush_guest_mapping_range() Thread-Index: AQHUTv5k8hBuJTz2+U+LsPtdlD58xA== Date: Tue, 18 Sep 2018 03:19:21 +0000 Message-ID: <20180918031754.113013-12-Tianyu.Lan@microsoft.com> References: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> In-Reply-To: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Tianyu.Lan@microsoft.com; x-originating-ip: [52.168.54.252] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;HK0P153MB0130;6:me6fND9SX0PQWlu+Kb4frP1GLN2+Gzz77BFsGH0hoHSODBrh8Xh5cTfG/bicPf44n7rTxrJijA0n59Qe6XXxguLanqUGvCY/QTd8seqyfi+w/yZcG0jPflEtJFWaAB9ULfcnG1sinDkisQHyYMHyRjbJsvq9gHk9qBxWx5y/pTItqPDUuXEQ4vtfrek9VXJxlUWYyG4du5kD7xFEfl2oMdmRRC3Lyr2dS3fW9rQA0ZQ2fhYJhajyFHqUmHjSbScSBTAIrHh+3DQFQ/nc6cYLxmpqiYVDpSf2osUZSj5eg1HDEtzZcQTmyefSwTHXUehbtOd8OwznePnwxS5m3LLfmyfVPNXX0kw8BA2k1b0Ue2nt7tsPsrENrr6pvgUpJDzXEnR3SoF1NK8SwKIH62myqRD5YnVcrOq6wz/z3POV3zlUQLuk5IC/miYPV3L8ix+fPz3MXojzP3M+b7/YQk7PXQ==;5:BFTk9oykttLP7hU/34LlkTIGifkn3ULIKTsyv7MNzXldorgEnWqIPWP/2Ul4/OsPovfRahQew6hf/SNzlXxSZIKgeTEHy5IACsGJzQ3b4COm4PBNeaA2g0sftJnImAai/YGR1jEJqnv7RKi3aez9Gys1/gaVNPBxGkr7DAKB8Os=;7:sQ7XV+fVXLw4387SCkfIpLc/ssP9RdWywH1g7k9OMRU5yi0btaiVlmJCsLE2Mv26fOMtrXAbbtghu2wBuDuunf418wStwOxi1aZh7LgdiLzfthXoJR7P9ABG+gUWX9Lbytawh3vwxWvwNSlmQwqId1hRzXHkR6p1pj1juZu8yThmiJ/8vkkc5PSjgHIGqlMwjtXQcvEs2DK5wl7Fdo8+Cs+BX87wdT1T08PdAzkLQQi+mP4Mbbe49lTihCc3nDbI x-ms-office365-filtering-correlation-id: a20b54de-01aa-4f83-6e2f-08d61d158736 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989137)(5600074)(711020)(4618075)(2017052603328)(7193020);SRVR:HK0P153MB0130; x-ms-traffictypediagnostic: HK0P153MB0130: x-ld-processed: 72f988bf-86f1-41af-91ab-2d7cd011db47,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(28532068793085)(89211679590171); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231355)(944501410)(52105095)(93006095)(93001095)(3002001)(10201501046)(6055026)(149027)(150027)(6041310)(20161123564045)(20161123558120)(20161123560045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699050);SRVR:HK0P153MB0130;BCL:0;PCL:0;RULEID:;SRVR:HK0P153MB0130; x-forefront-prvs: 0799B1B2D7 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(376002)(346002)(39860400002)(366004)(396003)(136003)(199004)(189003)(6486002)(36756003)(59246006)(68736007)(25786009)(2900100001)(5660300001)(22452003)(11346002)(53936002)(316002)(446003)(305945005)(5250100002)(107886003)(109986005)(86362001)(7736002)(476003)(2616005)(7416002)(86612001)(486006)(14454004)(256004)(6512007)(72206003)(8936002)(4326008)(6506007)(478600001)(97736004)(26005)(3846002)(102836004)(8676002)(6116002)(10090500001)(81156014)(6436002)(81166006)(106356001)(76176011)(2906002)(105586002)(1076002)(1671002)(54906003)(66066001)(99286004)(10290500003);DIR:OUT;SFP:1102;SCL:1;SRVR:HK0P153MB0130;H:HK0P153MB0129.APCP153.PROD.OUTLOOK.COM;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: u3Qz5WWKulTdDuB0hKzNESsFhlg09RpHHgj9NH5G7vPIDshvM/DSgi2p57i+fFLK46LvamnHbEVwyZEePwUdf8aIVQOdvPLy0ugLmZ5/PjoR+vgaM6vemahUUSYdROi+FfhS5yrh+FS3TwnRf0H2RvMP4x0TT08nHiCcnRF1N/ryc2U0QI/il7BVO5jUHs9HTljmLCfABriIjfNUzqTEkubfttW5lQPyCKcmgQZHbXKiK4cxedyVyaMPEbURyJaxCQQMV02RAxdCXkGTD6wPsve8PcPDOKN+/6Q+0dxIAgggNUWkjEe13BRAgS5fBGoBkjYs4w7ZWJg/yC1LFA1uryNi0hINuDhTBnfX6gG03/4= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: a20b54de-01aa-4f83-6e2f-08d61d158736 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Sep 2018 03:19:21.5330 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK0P153MB0130 To: unlisted-recipients:; (no To-header on input) Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch is to trace log in the hyperv_nested_flush_ guest_mapping_range(). Signed-off-by: Lan Tianyu --- arch/x86/hyperv/nested.c | 1 + arch/x86/include/asm/trace/hyperv.h | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/arch/x86/hyperv/nested.c b/arch/x86/hyperv/nested.c index 40ddbfd54573..ae7181c6ede4 100644 --- a/arch/x86/hyperv/nested.c +++ b/arch/x86/hyperv/nested.c @@ -154,6 +154,7 @@ int hyperv_flush_guest_mapping_range(u64 as, struct hyperv_tlb_range *range) else ret = status; fault: + trace_hyperv_nested_flush_guest_mapping_range(as, ret); return ret; } EXPORT_SYMBOL_GPL(hyperv_flush_guest_mapping_range); diff --git a/arch/x86/include/asm/trace/hyperv.h b/arch/x86/include/asm/trace/hyperv.h index 2e6245a023ef..ace464f09681 100644 --- a/arch/x86/include/asm/trace/hyperv.h +++ b/arch/x86/include/asm/trace/hyperv.h @@ -42,6 +42,20 @@ TRACE_EVENT(hyperv_nested_flush_guest_mapping, TP_printk("address space %llx ret %d", __entry->as, __entry->ret) ); +TRACE_EVENT(hyperv_nested_flush_guest_mapping_range, + TP_PROTO(u64 as, int ret), + TP_ARGS(as, ret), + + TP_STRUCT__entry( + __field(u64, as) + __field(int, ret) + ), + TP_fast_assign(__entry->as = as; + __entry->ret = ret; + ), + TP_printk("address space %llx ret %d", __entry->as, __entry->ret) + ); + TRACE_EVENT(hyperv_send_ipi_mask, TP_PROTO(const struct cpumask *cpus, int vector), From patchwork Tue Sep 18 03:19:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tianyu Lan X-Patchwork-Id: 10603695 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3A2E5913 for ; Tue, 18 Sep 2018 03:19:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 294D32A7B0 for ; Tue, 18 Sep 2018 03:19:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1DA172A7D5; Tue, 18 Sep 2018 03:19:41 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F10832A7B0 for ; Tue, 18 Sep 2018 03:19:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729509AbeIRIuD (ORCPT ); Tue, 18 Sep 2018 04:50:03 -0400 Received: from mail-hk2apc01on0106.outbound.protection.outlook.com ([104.47.124.106]:53890 "EHLO APC01-HK2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728944AbeIRIuC (ORCPT ); Tue, 18 Sep 2018 04:50:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vkM1XDOasZe08xhGjYX+1tcGXbLIMOabyyqCPCQ98DY=; b=Alr1psU/56krQQ/mxuG52UYd6U7QdCmiov+7RmK34m8Kao4/e+9gJgCELEM922mTxFg7m6ufku6WKTV9aSjoJ7Y/fbJ1c0MKdu60K8wFFs8s7PLvB2IArxeOh3C4PwY5miZsRNmmTbhdbZKK8jYLCIC9LTepep/K68KIZ1FEMYg= Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM (52.133.156.18) by HK0P153MB0115.APCP153.PROD.OUTLOOK.COM (52.133.156.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.6; Tue, 18 Sep 2018 03:19:27 +0000 Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267]) by HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267%3]) with mapi id 15.20.1185.006; Tue, 18 Sep 2018 03:19:27 +0000 From: Tianyu Lan CC: Tianyu Lan , "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "tglx@linutronix.de" , "mingo@redhat.com" , "hpa@zytor.com" , "x86@kernel.org" , "kvm@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "Michael Kelley (EOSG)" , KY Srinivasan , vkuznets , Jork Loeser Subject: [PATCH V2 12/13] KVM/VMX: Change hv flush logic when ept tables are mismatched. Thread-Topic: [PATCH V2 12/13] KVM/VMX: Change hv flush logic when ept tables are mismatched. Thread-Index: AQHUTv5nZuQOhoZncE6SlYYnklW2+w== Date: Tue, 18 Sep 2018 03:19:27 +0000 Message-ID: <20180918031754.113013-13-Tianyu.Lan@microsoft.com> References: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> In-Reply-To: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Tianyu.Lan@microsoft.com; x-originating-ip: [52.168.54.252] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;HK0P153MB0115;6:l1fLj0YGB/F5BUTqVz7QxitxqO8jsnzLbHYrKGd7uMKnT9gIK5CG/cgLHnUpB49rlgg8ZaBjY/V6OZFm4bTOHjid9aes8wEOnCup61nHaHqmbFccXAMsvBKHbEeicENx74iDqGzV+QnrYJJ7iwCtRNhxNjITy1M1pAj1iBw4ENouWic0LA3Sy3JlMFwqj1bws7woAAWtY85uuI4jkKMzkUK0LHStkBZSsHTnjj73ltKh5PQfAjaCwjhonEv1TMCjx7rRq29uwVz71l3rndOi2NJuan6V5EGi1KPy3Iz/sGcuq77W+u6jpKRuLQ1kPh6seOM/TdZtDQVrPOcYquUdysoIP/Otb0c8R55F4zbzsLtQnsAcOLCE98JLvaszq5ZXPuTIuQFmBdRBg5CpvRcTLf1yEX1JW7rZT2ubLTldVduDT3s4PK+TqHgu40NWp7HczP6WaFKpgjPXkDF9nBNZ6Q==;5:FbWW8CEu7iM4o1k2dDMMSOLfFCMTCtb6oxkTxvDBChBbW9KRR3yMMqALVkRc/MNgBOEETQXGsyvz0FbeArcAiHTae7wB48Y6pHDzP7aN++eWCgCWfAqDVNYKnY6hvc7WKynlkmXzhxy0x33jAWLzmTfYsqVcSB9nlh5ZaGpaU5c=;7:FlUUcfcYjew815MpjPGB+J9QFUVJvvqSJUF2tj3ilwNnkjQ21UhjMWIBDdn/L4bhkF/CWWcNRlIFoC6pV82XMuTsPgWUXBGJlEzLxd9fT2XrYiNOmfVnr2SFpMKfg8HnSHzXOuSko7XomRGBnhMY6969L7fmFFgnxWu2X2d/LgA4cVWx/7Myaj1EjxFc7DwBhQ1ncASqd9IGGzXFgYc6BIVcvoNbFb7C4Di29fRre5QFsJLcCq7FxrZEyvOKvs0q x-ms-office365-filtering-correlation-id: 26724774-7440-4894-643e-08d61d158a8b x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989137)(5600074)(711020)(4618075)(2017052603328)(7193020);SRVR:HK0P153MB0115; x-ms-traffictypediagnostic: HK0P153MB0115: x-ld-processed: 72f988bf-86f1-41af-91ab-2d7cd011db47,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(28532068793085)(89211679590171); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3002001)(3231355)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(201708071742011)(7699050);SRVR:HK0P153MB0115;BCL:0;PCL:0;RULEID:;SRVR:HK0P153MB0115; x-forefront-prvs: 0799B1B2D7 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(396003)(366004)(376002)(39860400002)(346002)(136003)(199004)(189003)(97736004)(59246006)(316002)(6436002)(22452003)(6486002)(5660300001)(2900100001)(10090500001)(2906002)(6512007)(7736002)(305945005)(5250100002)(54906003)(25786009)(99286004)(4326008)(72206003)(10290500003)(478600001)(8936002)(105586002)(106356001)(109986005)(107886003)(81156014)(81166006)(76176011)(14454004)(6506007)(66066001)(68736007)(36756003)(86612001)(1671002)(26005)(256004)(486006)(14444005)(1076002)(53936002)(8676002)(446003)(11346002)(2616005)(476003)(102836004)(86362001)(3846002)(6116002);DIR:OUT;SFP:1102;SCL:1;SRVR:HK0P153MB0115;H:HK0P153MB0129.APCP153.PROD.OUTLOOK.COM;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: j6K/FpT3vvxK645q/Kh4V16ABUPGKZvZhFAFFRnRQoGH1EKzgyu0lduuXSN5naAMQE/Ij7dINyDXl2eArC20z2FKCHeZWIK3ShcE8qn7/WplxDW1LbDmZWhPyMxIWCX8k5x4RTUPdcDaJVHd4Bl6F7Q7+H4Yo2Njpw0HkU9q7n1wk80alzY6Ei+PKmTY2CITgCdn0nSD7B0c+0iCCxZ/qrqB9TppHxsC0BgDPYE2dvmy3esYX3jvw7m047u/mX24CYRpB5/DbImb40aB2Fcjw8/NybNqqt2AOfUoN7XaVwfNDgrbWs/rBxfTIQnST5SK1qXhERug6NORYFPowyLgy/MtUKaB/RFvWQNSAC+3lHQ= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: 26724774-7440-4894-643e-08d61d158a8b X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Sep 2018 03:19:27.1140 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK0P153MB0115 To: unlisted-recipients:; (no To-header on input) Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP If ept table pointers are mismatched, flushing tlb for each vcpus via hv flush interface still helps to reduce vmexits which are triggered by IPI and INEPT emulation. Signed-off-by: Lan Tianyu --- arch/x86/kvm/vmx.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index 533a327372c8..2869c3e78168 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -1557,7 +1557,8 @@ static void check_ept_pointer_match(struct kvm *kvm) static int vmx_hv_remote_flush_tlb(struct kvm *kvm) { - int ret; + struct kvm_vcpu *vcpu; + int ret = -ENOTSUPP, i; spin_lock(&to_kvm_vmx(kvm)->ept_pointer_lock); @@ -1565,14 +1566,14 @@ static int vmx_hv_remote_flush_tlb(struct kvm *kvm) check_ept_pointer_match(kvm); if (to_kvm_vmx(kvm)->ept_pointers_match != EPT_POINTERS_MATCH) { - ret = -ENOTSUPP; - goto out; + kvm_for_each_vcpu(i, vcpu, kvm) + ret |= hyperv_flush_guest_mapping( + to_vmx(kvm_get_vcpu(kvm, i))->ept_pointer); + } else { + ret = hyperv_flush_guest_mapping( + to_vmx(kvm_get_vcpu(kvm, 0))->ept_pointer); } - ret = hyperv_flush_guest_mapping( - to_vmx(kvm_get_vcpu(kvm, 0))->ept_pointer); - -out: spin_unlock(&to_kvm_vmx(kvm)->ept_pointer_lock); return ret; } From patchwork Tue Sep 18 03:19:32 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tianyu Lan X-Patchwork-Id: 10603697 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id C3D1E1508 for ; Tue, 18 Sep 2018 03:19:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B3E832A7B0 for ; Tue, 18 Sep 2018 03:19:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A67492A7D5; Tue, 18 Sep 2018 03:19:46 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 340D82A7B0 for ; Tue, 18 Sep 2018 03:19:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729535AbeIRIuJ (ORCPT ); Tue, 18 Sep 2018 04:50:09 -0400 Received: from mail-hk2apc01on0119.outbound.protection.outlook.com ([104.47.124.119]:42874 "EHLO APC01-HK2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728944AbeIRIuI (ORCPT ); Tue, 18 Sep 2018 04:50:08 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xrpPyWTOFNx19F9nlfwZuNyIOHBf5ufont69UPp1N8I=; b=UctbPbFrUb87Bj4FbPGQal4PshdmV2ciMVYN9lT9Rcqji8SRf3To/LnAJ2Qf1Xwmh6UtEQRvflE4o2qEa4mylI8vW3XAEr8Xu8EPH8Qr6Bq7Dbfn0CBgBkWh5QIMcPq6+L1pTkwO13QZjTLOxy5/4BcVYMggxzee/SAPEqmpaBE= Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM (52.133.156.18) by HK0P153MB0115.APCP153.PROD.OUTLOOK.COM (52.133.156.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.6; Tue, 18 Sep 2018 03:19:33 +0000 Received: from HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267]) by HK0P153MB0129.APCP153.PROD.OUTLOOK.COM ([fe80::8584:ad93:130a:6267%3]) with mapi id 15.20.1185.006; Tue, 18 Sep 2018 03:19:33 +0000 From: Tianyu Lan CC: Tianyu Lan , "pbonzini@redhat.com" , "rkrcmar@redhat.com" , "tglx@linutronix.de" , "mingo@redhat.com" , "hpa@zytor.com" , "x86@kernel.org" , "kvm@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "Michael Kelley (EOSG)" , KY Srinivasan , vkuznets , Jork Loeser Subject: [PATCH V2 13/13] KVM/VMX: Add hv tlb range flush support Thread-Topic: [PATCH V2 13/13] KVM/VMX: Add hv tlb range flush support Thread-Index: AQHUTv5rTZ29EsZcUk20exkaiWAOTQ== Date: Tue, 18 Sep 2018 03:19:32 +0000 Message-ID: <20180918031754.113013-14-Tianyu.Lan@microsoft.com> References: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> In-Reply-To: <20180918031754.113013-1-Tianyu.Lan@microsoft.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Tianyu.Lan@microsoft.com; x-originating-ip: [52.168.54.252] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;HK0P153MB0115;6:08kZHYHKfpUG7Hxbq+1IuQP+ZfrKQsqUVS6IHEPhdGUPVIJ6pQXdRy69y9ennE9Dy1dEFPhPRXeCsIirYfbtbUH5mUC3Q3bqNnm9oZehmNvKNq8zkyd/ue8OmvVgwQLuzoLibTcrw6kAkdYEfR7U5mfNcP3eQI//+xSPP+JXH7c9mOeb9hzhc8b6mzdgUaWPFI4Nf0d0rjdI/dSC2L5iFwhMndyYmq5XKf4/3nSTGUXvASoRoWEIrzRTvAD4JGytELjwBGx4iQE/lcSL3KfpwexlakjRpVhjrtcYeqoadG/tNwLILw9bYWr8+1WGMU0o4rv+t0yXnrwxhi5eRc11TWTcCVFmDiiqV6LsYKbVHgVPfny+JsbRPYgRIEOat+JTA8P/cSRlVkzaovYb6pEA0UWuw8hiCkqkgud/BPdwReW19qeKqEK03qABtxmiTw/yGrMl+bg92O71sIivM6PyXA==;5:sUDUvMgSDr8a8fKO5TLWxrfwTdjsjzcK9CQ7nGoV3vU2jv68swXa/U++KJseAAmFdBZE5QymgDiaMxJIg46qVDut4X8tW3nSYAB1pqb4ZEBAIT5Sv//KYUFZyeS8Xpn92Yn08VyqkPI63SPP0Fi5e92TGdYK/Cwcp4qExa6lhQA=;7:/EPUXDpCRC3hUoOzUWApBBZY6fvUFAXNCwfPSalJ8MV28eFlbxjz/XoQOuuPS+Nb/T4xwxm02tBZ+QtIeXWt5OoT+0kACnY01OtgLPFX6RcTridM/Wa6EwcJpynMuHDYmfJL9A+KKjRfpssM9rYc7Fax5A+VbSTsARWzudm5JQaOsZdJvTeJxxlfdUa//enBqBR0Bf3jeiyI6UTUdIO29KcN/89nYtAvEsl1l44eipGgnhZMS9s3pKSmBX3ExQUp x-ms-office365-filtering-correlation-id: bc5a0631-7c92-424b-226e-08d61d158df3 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(7020095)(4652040)(8989137)(5600074)(711020)(4618075)(2017052603328)(7193020);SRVR:HK0P153MB0115; x-ms-traffictypediagnostic: HK0P153MB0115: x-ld-processed: 72f988bf-86f1-41af-91ab-2d7cd011db47,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(28532068793085)(89211679590171); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3002001)(3231355)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(201708071742011)(7699050);SRVR:HK0P153MB0115;BCL:0;PCL:0;RULEID:;SRVR:HK0P153MB0115; x-forefront-prvs: 0799B1B2D7 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(396003)(366004)(376002)(39860400002)(346002)(136003)(199004)(189003)(97736004)(59246006)(316002)(6436002)(22452003)(6486002)(5660300001)(2900100001)(10090500001)(2906002)(6512007)(7736002)(305945005)(5250100002)(54906003)(25786009)(99286004)(4326008)(72206003)(10290500003)(478600001)(8936002)(105586002)(106356001)(109986005)(107886003)(81156014)(81166006)(76176011)(14454004)(6506007)(66066001)(68736007)(36756003)(86612001)(1671002)(26005)(256004)(486006)(14444005)(1076002)(53936002)(8676002)(446003)(11346002)(2616005)(476003)(102836004)(86362001)(3846002)(6116002);DIR:OUT;SFP:1102;SCL:1;SRVR:HK0P153MB0115;H:HK0P153MB0129.APCP153.PROD.OUTLOOK.COM;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: microsoft.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: nOpR2/U/tS08cCZQywmZx58Y4Z2dzSLHGCIFSMO4u8UBT4mM/J3wkz8AT5fxxV3dJwDKl4/Ddzp9gBVvVm2LGR7q+FDv2LDH6d9VKuO1EQiqN489e/J6Cf5bnwzR5dY7zrsgj4BgMWv0gIXj+jbX/LMZEOhgrXaA0UBzmAJV/Rfwf9j8eN9aM4/UuhIkcQh4l9mCBNpUFBYhVSluIPpm9eAGfEEdzI2aUNK9nf5fQWIoBxYiPmVHAC4nAbLgDBoc4svmvSS//qHWqoSfYhWRdpTYsqw2QOKAfbO4YPfQ5YU2suBADgiEifbUVW4dLktDKVVFlqfhjVfOgWzmaUdLjPcEOp1ZKdFY/DxHGmf5Log= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-Network-Message-Id: bc5a0631-7c92-424b-226e-08d61d158df3 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Sep 2018 03:19:32.7970 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK0P153MB0115 To: unlisted-recipients:; (no To-header on input) Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch is to register tlb_remote_flush_with_range callback with hv tlb range flush interface. Signed-off-by: Lan Tianyu --- Change since v1: Pass flush range with new hyper-v tlb flush struct rather than KVM tlb flush struct. --- arch/x86/kvm/vmx.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 51 insertions(+), 7 deletions(-) diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c index 2869c3e78168..70e1f916bfc9 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -1555,7 +1555,43 @@ static void check_ept_pointer_match(struct kvm *kvm) to_kvm_vmx(kvm)->ept_pointers_match = EPT_POINTERS_MATCH; } -static int vmx_hv_remote_flush_tlb(struct kvm *kvm) +int kvm_parse_flush_list_func(union hv_gpa_page_range gpa_list[], + int offset, struct list_head *flush_list, + int (*fill_flush_list)(union hv_gpa_page_range gpa_list[], + int offset, u64 start_gfn, u64 end_gfn)) +{ + struct kvm_mmu_page *sp; + + list_for_each_entry(sp, flush_list, + flush_link) { + offset = fill_flush_list(gpa_list, offset, + sp->gfn, KVM_PAGES_PER_HPAGE(sp->role.level)); + } + + return offset; +} + +static inline int __hv_remote_flush_tlb_with_range(struct kvm *kvm, + struct kvm_vcpu *vcpu, struct kvm_tlb_range *range) +{ + u64 ept_pointer = to_vmx(vcpu)->ept_pointer; + struct hyperv_tlb_range flush_range; + + if (range) { + flush_range.start_gfn = range->start_gfn; + flush_range.pages = range->pages; + flush_range.flush_list = range->flush_list; + flush_range.parse_flush_list_func = kvm_parse_flush_list_func; + + return hyperv_flush_guest_mapping_range(ept_pointer, + &flush_range); + } else { + return hyperv_flush_guest_mapping(ept_pointer); + } +} + +static int hv_remote_flush_tlb_with_range(struct kvm *kvm, + struct kvm_tlb_range *range) { struct kvm_vcpu *vcpu; int ret = -ENOTSUPP, i; @@ -1567,16 +1603,21 @@ static int vmx_hv_remote_flush_tlb(struct kvm *kvm) if (to_kvm_vmx(kvm)->ept_pointers_match != EPT_POINTERS_MATCH) { kvm_for_each_vcpu(i, vcpu, kvm) - ret |= hyperv_flush_guest_mapping( - to_vmx(kvm_get_vcpu(kvm, i))->ept_pointer); + ret |= __hv_remote_flush_tlb_with_range( + kvm, vcpu, range); } else { - ret = hyperv_flush_guest_mapping( - to_vmx(kvm_get_vcpu(kvm, 0))->ept_pointer); + ret = __hv_remote_flush_tlb_with_range(kvm, + kvm_get_vcpu(kvm, 0), range); } spin_unlock(&to_kvm_vmx(kvm)->ept_pointer_lock); return ret; } + +static int hv_remote_flush_tlb(struct kvm *kvm) +{ + return hv_remote_flush_tlb_with_range(kvm, NULL); +} #else /* !IS_ENABLED(CONFIG_HYPERV) */ static inline void evmcs_write64(unsigned long field, u64 value) {} static inline void evmcs_write32(unsigned long field, u32 value) {} @@ -7918,8 +7959,11 @@ static __init int hardware_setup(void) #if IS_ENABLED(CONFIG_HYPERV) if (ms_hyperv.nested_features & HV_X64_NESTED_GUEST_MAPPING_FLUSH - && enable_ept) - kvm_x86_ops->tlb_remote_flush = vmx_hv_remote_flush_tlb; + && enable_ept) { + kvm_x86_ops->tlb_remote_flush = hv_remote_flush_tlb; + kvm_x86_ops->tlb_remote_flush_with_range = + hv_remote_flush_tlb_with_range; + } #endif if (!cpu_has_vmx_ple()) {