From patchwork Sun Jun 5 06:43:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lai Jiangshan X-Patchwork-Id: 12869711 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E91B0C43334 for ; Sun, 5 Jun 2022 06:43:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244302AbiFEGnD (ORCPT ); Sun, 5 Jun 2022 02:43:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35182 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243907AbiFEGnA (ORCPT ); Sun, 5 Jun 2022 02:43:00 -0400 Received: from mail-pf1-x42a.google.com (mail-pf1-x42a.google.com [IPv6:2607:f8b0:4864:20::42a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3EFBE29805; Sat, 4 Jun 2022 23:42:56 -0700 (PDT) Received: by mail-pf1-x42a.google.com with SMTP id x4so1768343pfj.10; Sat, 04 Jun 2022 23:42:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KM1oikz+Ia9mBiSM3+pw9WjtCt1EQ9hMQl48+WeL5cM=; b=HX8EfDf5WIq4AlYOacnyiqpv687wfE7clq7qblX2gZCKD/SJjyRVEpsfdmEE5hN/dx GRa3nOiWAHG1Qg50NUnkvf+jgvHXyiCvP0j/toJmLOfbbYTw7KMI4aXADgSZZ0EMPGLS 8K+s0TrmN5QbiuPEMix7EiyfHFT0yCqcfEbup9cp87hzCUUUcSXdDlVyZt1owQIKruug sTslzmaP3akqW43NdPrGlxKHheK0Jpmn7Qt4SEPMo+VvW6wqtpgE34ClnOjzCuWYPEyB 8iXFKONQFTKMCnGoBTScxRc+yLVPgUIY4QTQh0Zyh/rHoKwyyfJnYLS/q5VVJbejr9+E KFmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KM1oikz+Ia9mBiSM3+pw9WjtCt1EQ9hMQl48+WeL5cM=; b=GKT+8sPSbgFk1ZYdLa8mWZmEqvqFzRddqrqKTwDq8CtB68+6k63fwtNuEoOby1dFGa Lyfso9Z2tR4uFDTZ621009YaBxMyf9gO6edFVBkUzCeeBWreru9SocP969jvnoSDgpX3 t/D9a+qKDGWtwWfki2Eq3AM7pxdGQ3WVpOjqAP25JIbJzMaYhA6PYZlqEXTou2TwVZ1k buJkRjIPb95fMaJusL+ACq2VQOCULrtnWU3ziImAiYOoWtDy28xdmcWeAiHvlsZbAjek +nqHAQP8AnRf2l/mrOz1DbV+0YB0vexrWjWRbDERPnJe58pDKc2ZDoEN++ZFO3vUkpn/ z/gg== X-Gm-Message-State: AOAM5318vT9O0Q1R4sJ2D/dbKItX2RytAO+QTCcqp2ffxeVrn/TeTOWp JMvYSEMKIsr8zXZzcymRkaEFb0LLXwk= X-Google-Smtp-Source: ABdhPJxydESjX02nx0dTvWq2uEG82KGX3cWEuD45WHQtRyWrMfukHWuo2zgk70Nmo57dm2nNQYCXVA== X-Received: by 2002:a05:6a00:2293:b0:51b:f02e:de32 with SMTP id f19-20020a056a00229300b0051bf02ede32mr7524558pfe.17.1654411375583; Sat, 04 Jun 2022 23:42:55 -0700 (PDT) Received: from localhost ([198.11.178.15]) by smtp.gmail.com with ESMTPSA id q15-20020a170902eb8f00b0015e8d4eb25asm8059385plg.164.2022.06.04.23.42.54 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 04 Jun 2022 23:42:55 -0700 (PDT) From: Lai Jiangshan To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Paolo Bonzini Cc: Sean Christopherson , Vitaly Kuznetsov , Maxim Levitsky , Lai Jiangshan Subject: [PATCH 01/12] KVM: X86/MMU: Warn if sp->unsync_children > 0 in link_shadow_page() Date: Sun, 5 Jun 2022 14:43:31 +0800 Message-Id: <20220605064342.309219-2-jiangshanlai@gmail.com> X-Mailer: git-send-email 2.19.1.6.gb485710b In-Reply-To: <20220605064342.309219-1-jiangshanlai@gmail.com> References: <20220605064342.309219-1-jiangshanlai@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org From: Lai Jiangshan The check for sp->unsync_children in link_shadow_page() can be removed since FNAME(fetch) ensures it is zero. (@sp is direct when link_shadow_page() is called from other places, which also means sp->unsync_children is zero.) link_shadow_page() is not a fast path, check it and warn instead. Signed-off-by: Lai Jiangshan --- arch/x86/kvm/mmu/mmu.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index 086f32dffdbe..f61416818116 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -2197,7 +2197,13 @@ static void link_shadow_page(struct kvm_vcpu *vcpu, u64 *sptep, mmu_page_add_parent_pte(vcpu, sp, sptep); - if (sp->unsync_children || sp->unsync) + /* + * Propagate the unsync bit when sp->unsync. + * + * The caller ensures the sp is synced when it has unsync children, + * so sp->unsync_children must be zero. See FNAME(fetch). + */ + if (sp->unsync || WARN_ON_ONCE(sp->unsync_children)) mark_unsync(sptep); } From patchwork Sun Jun 5 06:43:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lai Jiangshan X-Patchwork-Id: 12869710 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D8FD2CCA47B for ; Sun, 5 Jun 2022 06:43:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345248AbiFEGnF (ORCPT ); Sun, 5 Jun 2022 02:43:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35304 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244254AbiFEGnC (ORCPT ); Sun, 5 Jun 2022 02:43:02 -0400 Received: from mail-pf1-x42e.google.com (mail-pf1-x42e.google.com [IPv6:2607:f8b0:4864:20::42e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 158C334B83; Sat, 4 Jun 2022 23:43:00 -0700 (PDT) Received: by mail-pf1-x42e.google.com with SMTP id 15so10354877pfy.3; Sat, 04 Jun 2022 23:43:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=dDNkyiYQibCgf/rVCghm4F/yjFWHN7ySeP2Yb3nvzmc=; b=jJ3i1ndXvgUe3bVZ1KiEPg7d7J8wl20/W0DXpd4iDs1QmFmBftn0Z5h8JJlEsSoE+V bfkbz0NaECSkC/9Rv04c5VmAlrvAlgfzyI92saVJ/czrtAhNoThBxQXftVjtf7aviWU2 wGEfCID2dFvWXvsOM6YvABN45a83Vnzv7L30YRwi6PS/YDJvzpA1CMh+Y2NijZN98zig S8H0VSpAuuYjja2n9qs0dvFc7AM/9ehsV0bgG6ZkPXeD6/MhnUAj+KiQDt7qNR6n1vpH XsjZmJtVCl2vmjZ5NLP5bNFP0QMJdn40NwGyoJHewxKUD+uHGqHdt47v4FMQm/XkWc5D 5+vA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=dDNkyiYQibCgf/rVCghm4F/yjFWHN7ySeP2Yb3nvzmc=; b=cgvmWUfT67mA1wsxKyrRlm9oL2VM+73Xw8RJMkcPEt99r72xUlOfCEJS52NsbqJ3+/ i8Ss8XCU8g2ZQ2F3JAXLPFxBmTopDh2PQwOO8NTLSClOdcT0dPAR3dhY8sYWNxFiwrI1 jg5ljdoPuDmn8ll7I1z/qkk1VCo4Jp+Lc5oeuuaB0Su4WFdnayiXlJXLB10jmTwKxh+U r0F033BuRGk9bbrq2brVcG3Jqr/BadP51v96rZcPkrr/kHi+xI8bDomY7DAnRH77GQtq Kw7DEhNaCAxEHy9q9u5d1ad5Gwqr5BjdRnqPUmudibeqfyCWmM7QNaOiljtqDHzCohQF OlJw== X-Gm-Message-State: AOAM532vYsF2DoJSJyu5zu8iwlqzwP/z5lbqIeDRP9rRvbaQ2LWgc+Wd KcM35gIaENUzp8R1evNjkc4mqBVhKHA= X-Google-Smtp-Source: ABdhPJwdH0lclPyZGPsa51Rk3cJQFvD4yz2VwKFWA/YVSobyo48r9HKeUzZ72GdREO7t+e8Q6QGRjw== X-Received: by 2002:a05:6a00:894:b0:518:7f19:f21d with SMTP id q20-20020a056a00089400b005187f19f21dmr73517227pfj.4.1654411379289; Sat, 04 Jun 2022 23:42:59 -0700 (PDT) Received: from localhost ([198.11.178.15]) by smtp.gmail.com with ESMTPSA id u2-20020a17090add4200b001cd8e9ea22asm10167510pjv.52.2022.06.04.23.42.58 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 04 Jun 2022 23:42:59 -0700 (PDT) From: Lai Jiangshan To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Paolo Bonzini Cc: Sean Christopherson , Vitaly Kuznetsov , Maxim Levitsky , Lai Jiangshan Subject: [PATCH 02/12] KVM: X86/MMU: Rename kvm_unlink_unsync_page() to kvm_mmu_page_clear_unsync() Date: Sun, 5 Jun 2022 14:43:32 +0800 Message-Id: <20220605064342.309219-3-jiangshanlai@gmail.com> X-Mailer: git-send-email 2.19.1.6.gb485710b In-Reply-To: <20220605064342.309219-1-jiangshanlai@gmail.com> References: <20220605064342.309219-1-jiangshanlai@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org From: Lai Jiangshan "Unlink" is ambiguous, the function does not disconnect any link. Use "clear" instead which is an antonym of "mark" in the name of the function mark_unsync() or kvm_mmu_mark_parents_unsync(). Signed-off-by: Lai Jiangshan --- arch/x86/kvm/mmu/mmu.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index f61416818116..c20981dfc4fd 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -1825,7 +1825,7 @@ static int mmu_unsync_walk(struct kvm_mmu_page *sp, return __mmu_unsync_walk(sp, pvec); } -static void kvm_unlink_unsync_page(struct kvm *kvm, struct kvm_mmu_page *sp) +static void kvm_mmu_page_clear_unsync(struct kvm *kvm, struct kvm_mmu_page *sp) { WARN_ON(!sp->unsync); trace_kvm_mmu_sync_page(sp); @@ -1987,7 +1987,7 @@ static int mmu_sync_children(struct kvm_vcpu *vcpu, } for_each_sp(pages, sp, parents, i) { - kvm_unlink_unsync_page(vcpu->kvm, sp); + kvm_mmu_page_clear_unsync(vcpu->kvm, sp); flush |= kvm_sync_page(vcpu, sp, &invalid_list) > 0; mmu_pages_clear_parents(&parents); } @@ -2326,7 +2326,7 @@ static bool __kvm_mmu_prepare_zap_page(struct kvm *kvm, unaccount_shadowed(kvm, sp); if (sp->unsync) - kvm_unlink_unsync_page(kvm, sp); + kvm_mmu_page_clear_unsync(kvm, sp); if (!sp->root_count) { /* Count self */ (*nr_zapped)++; From patchwork Sun Jun 5 06:43:33 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lai Jiangshan X-Patchwork-Id: 12869712 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3A3D5C43334 for ; Sun, 5 Jun 2022 06:43:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349893AbiFEGnI (ORCPT ); Sun, 5 Jun 2022 02:43:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35414 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348283AbiFEGnF (ORCPT ); Sun, 5 Jun 2022 02:43:05 -0400 Received: from mail-pj1-x1035.google.com (mail-pj1-x1035.google.com [IPv6:2607:f8b0:4864:20::1035]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4348463D1; Sat, 4 Jun 2022 23:43:04 -0700 (PDT) Received: by mail-pj1-x1035.google.com with SMTP id mh16-20020a17090b4ad000b001e8313301f1so3646758pjb.1; Sat, 04 Jun 2022 23:43:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=HAmVyG/FQPF9ZWY/eAgNLdHok7UOGyy5hasiOmhkNcE=; b=lBbKOrLHGvr+GpF7DCISUFAHsz816Jo/UoXSdRhOiielbgBmr67RMo5f1Jm06+ye59 bGrL41ldb3KdisKNXS8lIHNBSH/lIr0hysM9Xe+/uIdJumCv49RVmmIAH7sjEjA2umsA HJhscro3m/CNz71o5E0u0H2pmgHV21YTLtBJmlfXAePl5/HSP4UVKGx16DXeoEZbKIsl JQpEZhethCoiJdN6TEdjMLzbdX4uRgnbjTbXwkw8oDq7gOG1aOq7wCyQoKo4ibYGqERR deMhN7DrDB/QVFC1Cv370AmfJJ4xv94tDgq87RQe+IIvuRpngpyHpiMmxAwEgcH1pm34 7k0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=HAmVyG/FQPF9ZWY/eAgNLdHok7UOGyy5hasiOmhkNcE=; b=l9vle7+acvrnK+MfgfyGtf4eEmcZhrRRi4KPJNv1Fo/Ztvndk4R/5z7a4x/aYl/rWv CJ9w9Iu7b3xQcn2vg4D6LQhBgRpxIwQgZ80Tibi4/U/x4ifcMQxVOQ8wIfC7zt3KV5WH aypcV66Ldw2GWkhtoLRmz5qabWj8aIa+XyUyLjiBrlHY03pFbR1yQyQ/nQhcaknDuC5J kzAn5BJmzfyoHn6e3l54FINXAGmh15Arm1yzaXYijhKuE6m2CflKQ/qdgASQnMpMev+F 8ePmMtJFS4mPrMHTiiPAZYLEh7w60ah2w+5lNxbMzRbQjDtYmgy9E9A2sWhAI8jjVIPr HMeQ== X-Gm-Message-State: AOAM532MC9464hGnx92RwsmnIfMu4+UxOpUD15uXYfdP9nFp9dlyhg2N 6TDVywel/pNhAIsFoo6erhHymoZTtpU= X-Google-Smtp-Source: ABdhPJyKKc0BEeR66F4GM+AUvXjxNwnksKvUdC3T6bUy7AZZZ5sp8LGzsvOdhMU5I0o96pF5LnfDaA== X-Received: by 2002:a17:902:e751:b0:163:d8d9:8440 with SMTP id p17-20020a170902e75100b00163d8d98440mr18116143plf.12.1654411383686; Sat, 04 Jun 2022 23:43:03 -0700 (PDT) Received: from localhost ([198.11.178.15]) by smtp.gmail.com with ESMTPSA id p2-20020a056a0026c200b0050dc76281e5sm4501036pfw.191.2022.06.04.23.43.02 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 04 Jun 2022 23:43:03 -0700 (PDT) From: Lai Jiangshan To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Paolo Bonzini Cc: Sean Christopherson , Vitaly Kuznetsov , Maxim Levitsky , Lai Jiangshan Subject: [PATCH 03/12] KVM: X86/MMU: Split a part of kvm_unsync_page() as kvm_mmu_page_mark_unsync() Date: Sun, 5 Jun 2022 14:43:33 +0800 Message-Id: <20220605064342.309219-4-jiangshanlai@gmail.com> X-Mailer: git-send-email 2.19.1.6.gb485710b In-Reply-To: <20220605064342.309219-1-jiangshanlai@gmail.com> References: <20220605064342.309219-1-jiangshanlai@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org From: Lai Jiangshan Make it as the opposite function of kvm_mmu_page_clear_unsync(). Signed-off-by: Lai Jiangshan --- arch/x86/kvm/mmu/mmu.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index c20981dfc4fd..cc0207e26f6e 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -2529,12 +2529,16 @@ static int kvm_mmu_unprotect_page_virt(struct kvm_vcpu *vcpu, gva_t gva) return r; } -static void kvm_unsync_page(struct kvm *kvm, struct kvm_mmu_page *sp) +static void kvm_mmu_page_mark_unsync(struct kvm *kvm, struct kvm_mmu_page *sp) { trace_kvm_mmu_unsync_page(sp); ++kvm->stat.mmu_unsync; sp->unsync = 1; +} +static void kvm_unsync_page(struct kvm *kvm, struct kvm_mmu_page *sp) +{ + kvm_mmu_page_mark_unsync(kvm, sp); kvm_mmu_mark_parents_unsync(sp); } From patchwork Sun Jun 5 06:43:34 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lai Jiangshan X-Patchwork-Id: 12869713 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1F0CBC43334 for ; Sun, 5 Jun 2022 06:43:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350742AbiFEGnV (ORCPT ); Sun, 5 Jun 2022 02:43:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35650 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350702AbiFEGnJ (ORCPT ); Sun, 5 Jun 2022 02:43:09 -0400 Received: from mail-pj1-x1036.google.com (mail-pj1-x1036.google.com [IPv6:2607:f8b0:4864:20::1036]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 940683818A; Sat, 4 Jun 2022 23:43:08 -0700 (PDT) Received: by mail-pj1-x1036.google.com with SMTP id d12-20020a17090abf8c00b001e2eb431ce4so10215165pjs.1; Sat, 04 Jun 2022 23:43:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=X+oVc5Jc2YZlyFStynYpBPKDNUvLM8aeKT+uK1k5JEA=; b=Ku4OmJ+WXgLGs0srjvwrm+2S0nMCWDp+mnf6WSBti1bQhuufoJEOJv/4sbwcumzQs7 M3jSUcb5/iIAtQasQC56uxpEpSY+E56hchLIRc2GVEZ1/4wLX4bzGNoORn44+K1A/Svf Ule6uBVQ1qE2eMaPo/Qrn+lKGZHVjYtPsAq3OQhL2a8KFQi9HelVE6oNGpOB+AZwhYqN yN4izr8BTmFxPA6QRxmnMsT2lV44+g0Fsms6Fe38+UamX/EEG9Qf5PQST7MJa++B2VbX fC00uWG0OhE/swo26Uybw5sBDz/JVBI/TaIML23iiponDkD9R8t8WSU37u26VXHMBajS 2ftw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=X+oVc5Jc2YZlyFStynYpBPKDNUvLM8aeKT+uK1k5JEA=; b=4B6CoUMc/MpuHdIN/M+kSx4M+ysyhUgetPTRq8oL5PouxELnVfgLPL20sf7wp7DxIr +Aker28y919c62J8N3QhAzu6xSxRcvLg0Zgf/xn2KGNujskApC9XlnAKFuJEUGHuSKVm NwwPllrH/QmLftFmdEc/jHUvazk7MoXjfXG0dLFD15r7T8y6d3tXZnmmAPG3erZlCWTf 0da7evxGo/tdSv0AhcNc+QFofXh2aaGghs48fRfcqc63SZQvUfsbVcmXgiSEV4pBYtgg F6XCSxhAOv9BwKPcTuRsR87F9/WhSqm+xo4xHjQtLD1pT+M0cBuWk/j4RfpLA7WbrggT SAIQ== X-Gm-Message-State: AOAM5324Z5GNwaCVHp5oAze/K0dKmYUSeDMcHeDqhO73UUZVkhA1mqNv GQknguT1KIvBl/Jhs1d748KVH9Czc+0= X-Google-Smtp-Source: ABdhPJz8GBmZ3diXVAJtJRy94jd1RtPCSu8Fgy0ih6j6jnD0Sv6PFvAkoZIy2dCAV3QOo40ysDpqKQ== X-Received: by 2002:a17:902:f641:b0:15f:21f8:92a1 with SMTP id m1-20020a170902f64100b0015f21f892a1mr18846794plg.56.1654411387727; Sat, 04 Jun 2022 23:43:07 -0700 (PDT) Received: from localhost ([198.11.178.15]) by smtp.gmail.com with ESMTPSA id m13-20020a170902db0d00b001616c3bd5c2sm8342929plx.162.2022.06.04.23.43.07 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 04 Jun 2022 23:43:07 -0700 (PDT) From: Lai Jiangshan To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Paolo Bonzini Cc: Sean Christopherson , Vitaly Kuznetsov , Maxim Levitsky , Lai Jiangshan Subject: [PATCH 04/12] KVM: X86/MMU: Remove mmu_pages_clear_parents() Date: Sun, 5 Jun 2022 14:43:34 +0800 Message-Id: <20220605064342.309219-5-jiangshanlai@gmail.com> X-Mailer: git-send-email 2.19.1.6.gb485710b In-Reply-To: <20220605064342.309219-1-jiangshanlai@gmail.com> References: <20220605064342.309219-1-jiangshanlai@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org From: Lai Jiangshan mmu_unsync_walk() is designed to be workable in a pagetable which has unsync child bits set in the shadow pages in the pagetable but without any unsync shadow pages. This can be resulted when the unsync shadow pages of a pagetable can be walked from other pagetables and have been synced or zapped when other pagetables are synced or zapped. So mmu_pages_clear_parents() is not required even when the callers of mmu_unsync_walk() zap or sync the pagetable. So remove mmu_pages_clear_parents() and the child bits can be cleared in the next call of mmu_unsync_walk() in one go. Removing mmu_pages_clear_parents() allows for further simplifying mmu_unsync_walk() including removing the struct mmu_page_path since the function is the only user of it. Signed-off-by: Lai Jiangshan Reviewed-by: Sean Christopherson --- arch/x86/kvm/mmu/mmu.c | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index cc0207e26f6e..f35fd5c59c38 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -1948,23 +1948,6 @@ static int mmu_pages_first(struct kvm_mmu_pages *pvec, return mmu_pages_next(pvec, parents, 0); } -static void mmu_pages_clear_parents(struct mmu_page_path *parents) -{ - struct kvm_mmu_page *sp; - unsigned int level = 0; - - do { - unsigned int idx = parents->idx[level]; - sp = parents->parent[level]; - if (!sp) - return; - - WARN_ON(idx == INVALID_INDEX); - clear_unsync_child_bit(sp, idx); - level++; - } while (!sp->unsync_children); -} - static int mmu_sync_children(struct kvm_vcpu *vcpu, struct kvm_mmu_page *parent, bool can_yield) { @@ -1989,7 +1972,6 @@ static int mmu_sync_children(struct kvm_vcpu *vcpu, for_each_sp(pages, sp, parents, i) { kvm_mmu_page_clear_unsync(vcpu->kvm, sp); flush |= kvm_sync_page(vcpu, sp, &invalid_list) > 0; - mmu_pages_clear_parents(&parents); } if (need_resched() || rwlock_needbreak(&vcpu->kvm->mmu_lock)) { kvm_mmu_remote_flush_or_zap(vcpu->kvm, &invalid_list, flush); @@ -2298,7 +2280,6 @@ static int mmu_zap_unsync_children(struct kvm *kvm, for_each_sp(pages, sp, parents, i) { kvm_mmu_prepare_zap_page(kvm, sp, invalid_list); - mmu_pages_clear_parents(&parents); zapped++; } } From patchwork Sun Jun 5 06:43:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lai Jiangshan X-Patchwork-Id: 12869714 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 63E30C43334 for ; Sun, 5 Jun 2022 06:43:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350793AbiFEGnZ (ORCPT ); Sun, 5 Jun 2022 02:43:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36646 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350731AbiFEGnV (ORCPT ); Sun, 5 Jun 2022 02:43:21 -0400 Received: from mail-pl1-x634.google.com (mail-pl1-x634.google.com [IPv6:2607:f8b0:4864:20::634]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 45DDE43EE5; Sat, 4 Jun 2022 23:43:13 -0700 (PDT) Received: by mail-pl1-x634.google.com with SMTP id h1so9822611plf.11; Sat, 04 Jun 2022 23:43:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3eBsFJ18pF1qO1rm3dNSOKE58CjtlgTGIMUN29KX6lU=; b=UgOi65DOQaBv9hI+RV62pFeDtA4skU/RXJDEsturdsDrMAwSk+0tvK9/i7ET9jXMIW koNE01d9KyPdiXDAyF3zSZj0RgpK1gbbZCkAIaRSLBBlfOm3ocJ6rrF2rPYzwTNhlZxm LqpZzlcjp74dDteVnQZBZxDPBomXZTYlSuuYZeXehojq75IwaZiPhOIoJlpz2sXOg3// a8bUVpcvn981+a3lopeFsXGuYhAQuLrTcMbIuj+hnKKKCqv8Cjy+Q/buD2xNF4JYmRaB Bwg7Npr5dx6O3TLy1XAL7BX69yDMZztZ8xEOcGh5AN8YvkwqmtU0i4lWUqe9i8ArCeBX 8FmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3eBsFJ18pF1qO1rm3dNSOKE58CjtlgTGIMUN29KX6lU=; b=WtmDnkzuLqTg2x3P3h+XJM9SycsZtkx8ImWcwpPnjCAx2hfTqyVgraZas5tkDgm+Pm K9KlRIaYRTeTwsQrpJV5miY2/DkY6+l02Shv0F/bAnCZFA67gAesZDzXcn6XoJWDfmaJ /LP23QJZIJRkRp7auzcSdx79LrVooW4osal4Zw4NuMHj+2uIhDWtUeVDMMBY6qyPmCYt 8DTBDxQ/zajv+mJDelRarxUKJCeOP04oPKoKlUSlp63azR86us6VyoOZOqEAAq7H4YOJ JA7vC7TLMy8JvFmjK9ePA6m/dBIEVvOYKYSyv2zgJT8aPRcWV2CmbFqAX45T9nUGlls1 MAYg== X-Gm-Message-State: AOAM533AUNzN5pq+Hh/2Fpk3YadWppNBSEV9a4VZ4/sTTILm0HkBeV91 W8nXf1mOdLqrYVUeU/E2WZCN3DKZ668= X-Google-Smtp-Source: ABdhPJxGi7B52Ale/DMFBtDJYilBopY6YXs1YKD8RSEroiTg/bnC0a2Vmxtjqk1j/at57EXyoJDhfA== X-Received: by 2002:a17:90b:504:b0:1e6:a0a4:c823 with SMTP id r4-20020a17090b050400b001e6a0a4c823mr15129107pjz.190.1654411391531; Sat, 04 Jun 2022 23:43:11 -0700 (PDT) Received: from localhost ([198.11.178.15]) by smtp.gmail.com with ESMTPSA id k18-20020aa79732000000b0050e006279bfsm8352012pfg.137.2022.06.04.23.43.10 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 04 Jun 2022 23:43:11 -0700 (PDT) From: Lai Jiangshan To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Paolo Bonzini Cc: Sean Christopherson , Vitaly Kuznetsov , Maxim Levitsky , Lai Jiangshan Subject: [PATCH 05/12] KVM: X86/MMU: Clear unsync bit directly in __mmu_unsync_walk() Date: Sun, 5 Jun 2022 14:43:35 +0800 Message-Id: <20220605064342.309219-6-jiangshanlai@gmail.com> X-Mailer: git-send-email 2.19.1.6.gb485710b In-Reply-To: <20220605064342.309219-1-jiangshanlai@gmail.com> References: <20220605064342.309219-1-jiangshanlai@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org From: Lai Jiangshan mmu_unsync_walk() and __mmu_unsync_walk() requires the caller to clear unsync for the shadow pages in the resulted pvec by synching them or zapping them. All callers does so. Otherwise mmu_unsync_walk() and __mmu_unsync_walk() can't work because they always walk from the beginning. It is possible to make mmu_unsync_walk() and __mmu_unsync_walk() lists unsync shadow pages in the resulted pvec without needing synching them or zapping them later. It would require to change mmu_unsync_walk() and __mmu_unsync_walk() and make it walk from the last visited position derived from the resulted pvec of the previous call of mmu_unsync_walk(). It would complicate the walk and no callers require the possible new behavior. It is better to keep the original behavior. Since the shadow pages in the resulted pvec will be synced or zapped, and clear_unsync_child_bit() for parents will be called anyway later. Call clear_unsync_child_bit() earlier and directly in __mmu_unsync_walk() to make the code more efficient (the memory of the shadow pages is hot in the CPU cache, and no need to visit the shadow pages again later). Signed-off-by: Lai Jiangshan --- arch/x86/kvm/mmu/mmu.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index f35fd5c59c38..2446ede0b7b9 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -1794,19 +1794,23 @@ static int __mmu_unsync_walk(struct kvm_mmu_page *sp, return -ENOSPC; ret = __mmu_unsync_walk(child, pvec); - if (!ret) { - clear_unsync_child_bit(sp, i); - continue; - } else if (ret > 0) { - nr_unsync_leaf += ret; - } else + if (ret < 0) return ret; - } else if (child->unsync) { + nr_unsync_leaf += ret; + } + + /* + * Clear unsync bit for @child directly if @child is fully + * walked and all the unsync shadow pages descended from + * @child (including itself) are added into @pvec, the caller + * must sync or zap all the unsync shadow pages in @pvec. + */ + clear_unsync_child_bit(sp, i); + if (child->unsync) { nr_unsync_leaf++; if (mmu_pages_add(pvec, child, i)) return -ENOSPC; - } else - clear_unsync_child_bit(sp, i); + } } return nr_unsync_leaf; From patchwork Sun Jun 5 06:43:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lai Jiangshan X-Patchwork-Id: 12869715 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8BD43C433EF for ; Sun, 5 Jun 2022 06:43:47 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350732AbiFEGno (ORCPT ); Sun, 5 Jun 2022 02:43:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36534 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350752AbiFEGnV (ORCPT ); Sun, 5 Jun 2022 02:43:21 -0400 Received: from mail-pj1-x102a.google.com (mail-pj1-x102a.google.com [IPv6:2607:f8b0:4864:20::102a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 64A4F48385; Sat, 4 Jun 2022 23:43:16 -0700 (PDT) Received: by mail-pj1-x102a.google.com with SMTP id l7-20020a17090aaa8700b001dd1a5b9965so10203131pjq.2; Sat, 04 Jun 2022 23:43:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3lxuLS0NpiGO7M36E+oogOCuogXON8W2SkzS8j5kybs=; b=XJlSc8NRBTEnI8sPXD8yAeACQTeC35dnUtyusLLS7xfFzb4pkFk0BX5AmG/C/NS/AL I10lc3HAJ5nIZbHw/qoFDTKLmgfrKl4RV/g6r9XYd8Nlv7BM1eQmdZAUsZLJdmF9F4QV YEgycj+XYsuYt9HYfslib5+bjd4f63jhpdhDkffPMeTchXx4EbhJFw4pNSQBaaTvvG2s BC0MJUzkfpK2fHIvKkmzcBApQly8eGYGWrDAt/kfSn1nK7PEp0mWUrbVuy15NqP+bfBE H0aKyimr+LK3GCVX7ELTnv+Q5RPVgG03ttoxPjuXGHPeKBhhcDkeMy0v5Y0itJoVj8hw ru0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3lxuLS0NpiGO7M36E+oogOCuogXON8W2SkzS8j5kybs=; b=KrcZMYqs829pavZOe4USQpBK8Li20PJ0UX5bqpvmMeQfp7rQHwYfZ/AePpJzCJPZDj okCWMf42unbpL6npdoRdSlMFp11fJBiD0uWEMB0jSQxmBPL7xBx1sCysZ3x/L4CX2h0T NdGECpjnRTDVFGS0DMOSBf1ksHcKxfRnPs6q5UueeCUb1htywh9uD1Daz+9HDA+/e5tB wFvi73EfwIFtICQKvlfGuxVbRdVjOCto7nhdlxT/Y2ia+PDsRh/BqjNTLUo3xgUUziho 2hn2hiPWnbdRLQeGpdoiiKwKpLmUNrrgeWq2EOygPnSorNA6jxLtL2TP24xLInYioMB+ r6VQ== X-Gm-Message-State: AOAM530ho2uwiNGRhh5cggX9xuQRvrt/rLonIREH0QoxVPHngSWH01F7 jeKJAEnia2fc3RMx3jxOrkTyPItKQ2E= X-Google-Smtp-Source: ABdhPJx/6+hlNAYkDtSpXwGcllbn9DasPqXSNG4KS0bFyet3zPTbEti/NOcfMsS3yI0nzfuBu7m97w== X-Received: by 2002:a17:902:ccc8:b0:162:6ea:4d with SMTP id z8-20020a170902ccc800b0016206ea004dmr18186514ple.144.1654411395415; Sat, 04 Jun 2022 23:43:15 -0700 (PDT) Received: from localhost ([198.11.178.15]) by smtp.gmail.com with ESMTPSA id h12-20020a170902eecc00b0015e8d4eb29esm8176746plb.232.2022.06.04.23.43.14 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 04 Jun 2022 23:43:15 -0700 (PDT) From: Lai Jiangshan To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Paolo Bonzini Cc: Sean Christopherson , Vitaly Kuznetsov , Maxim Levitsky , Lai Jiangshan Subject: [PATCH 06/12] KVM: X86/MMU: Rename mmu_unsync_walk() to mmu_unsync_walk_and_clear() Date: Sun, 5 Jun 2022 14:43:36 +0800 Message-Id: <20220605064342.309219-7-jiangshanlai@gmail.com> X-Mailer: git-send-email 2.19.1.6.gb485710b In-Reply-To: <20220605064342.309219-1-jiangshanlai@gmail.com> References: <20220605064342.309219-1-jiangshanlai@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org From: Lai Jiangshan mmu_unsync_walk() and __mmu_unsync_walk() requires the caller to clear unsync for the shadow pages in the resulted pvec by synching them or zapping them. All callers does so. Otherwise mmu_unsync_walk() and __mmu_unsync_walk() can't work because they always walk from the beginning. And mmu_unsync_walk() and __mmu_unsync_walk() directly clear unsync bits now, rename it. Signed-off-by: Lai Jiangshan --- arch/x86/kvm/mmu/mmu.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index 2446ede0b7b9..a56d328365e4 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -1773,7 +1773,7 @@ static inline void clear_unsync_child_bit(struct kvm_mmu_page *sp, int idx) __clear_bit(idx, sp->unsync_child_bitmap); } -static int __mmu_unsync_walk(struct kvm_mmu_page *sp, +static int __mmu_unsync_walk_and_clear(struct kvm_mmu_page *sp, struct kvm_mmu_pages *pvec) { int i, ret, nr_unsync_leaf = 0; @@ -1793,7 +1793,7 @@ static int __mmu_unsync_walk(struct kvm_mmu_page *sp, if (mmu_pages_add(pvec, child, i)) return -ENOSPC; - ret = __mmu_unsync_walk(child, pvec); + ret = __mmu_unsync_walk_and_clear(child, pvec); if (ret < 0) return ret; nr_unsync_leaf += ret; @@ -1818,7 +1818,7 @@ static int __mmu_unsync_walk(struct kvm_mmu_page *sp, #define INVALID_INDEX (-1) -static int mmu_unsync_walk(struct kvm_mmu_page *sp, +static int mmu_unsync_walk_and_clear(struct kvm_mmu_page *sp, struct kvm_mmu_pages *pvec) { pvec->nr = 0; @@ -1826,7 +1826,7 @@ static int mmu_unsync_walk(struct kvm_mmu_page *sp, return 0; mmu_pages_add(pvec, sp, INVALID_INDEX); - return __mmu_unsync_walk(sp, pvec); + return __mmu_unsync_walk_and_clear(sp, pvec); } static void kvm_mmu_page_clear_unsync(struct kvm *kvm, struct kvm_mmu_page *sp) @@ -1962,7 +1962,7 @@ static int mmu_sync_children(struct kvm_vcpu *vcpu, LIST_HEAD(invalid_list); bool flush = false; - while (mmu_unsync_walk(parent, &pages)) { + while (mmu_unsync_walk_and_clear(parent, &pages)) { bool protected = false; for_each_sp(pages, sp, parents, i) @@ -2279,7 +2279,7 @@ static int mmu_zap_unsync_children(struct kvm *kvm, if (parent->role.level == PG_LEVEL_4K) return 0; - while (mmu_unsync_walk(parent, &pages)) { + while (mmu_unsync_walk_and_clear(parent, &pages)) { struct kvm_mmu_page *sp; for_each_sp(pages, sp, parents, i) { From patchwork Sun Jun 5 06:43:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lai Jiangshan X-Patchwork-Id: 12869716 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 78D8BC43334 for ; Sun, 5 Jun 2022 06:44:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350869AbiFEGoB (ORCPT ); Sun, 5 Jun 2022 02:44:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36756 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350798AbiFEGnZ (ORCPT ); Sun, 5 Jun 2022 02:43:25 -0400 Received: from mail-pj1-x1029.google.com (mail-pj1-x1029.google.com [IPv6:2607:f8b0:4864:20::1029]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 837BC48E4C; Sat, 4 Jun 2022 23:43:20 -0700 (PDT) Received: by mail-pj1-x1029.google.com with SMTP id l20-20020a17090a409400b001dd2a9d555bso10235285pjg.0; Sat, 04 Jun 2022 23:43:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=hP6WCCUnsgHR2skvjVke3m5tSl6/Nn31ws8pPHbQIQs=; b=cpWF4hZjd7n8ys3I/RUfjMbUmhxvOtTu7/OVGCgN5jobwWUu5ufojOspj2koShTqsb Ep6BWxnnU99WO2qmh4dSfxxpK84K/3JFXmvomfx2eN15Wo/tWM9TIsk2PcS/xoBITtaK gPLcns0VlBGItpvJAR4uh09q3saYnER8JPYr5oXaP4Rno/eTRDm88TLcy6q1oblFjjaC KbFcbtgOYUJ3mWmjUMV0ffoNhtuJxnZbeZpksDHrPPhQtFyEPVtgGY+i5DYDvEb4SklF qvs5+hwgJFZTbVMApxJ6otLjU+z97d7HlJlsao2PFYmtgmF8/JUbptGQtyiz3GbnOhKL s7SA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=hP6WCCUnsgHR2skvjVke3m5tSl6/Nn31ws8pPHbQIQs=; b=bwsH3W8X/3nLxHSwukMT2Qg6y7OVTebXO8t30m/VFRLC7VNmHqj3rxASaFBTpBMHdv ntd8C0L5rccf3qNoXDogcIriXGTZog/hTBjyeJrVQTXw5PUtl8ZYAucQILnO3sPDJAHc 0hPNt63xYeHiNpYvzYatI+PLDCV7JjqMOLQZ/nqBed8LX+3xurgMPLm1/cPLFVzd3q1c P1DUJvdRmZbaRbF0o/YUG5yW3JOIptzLMlXUKfLi0Xi21DWs1nLO/5+a9RVWvcbdrwRu CGzwKKJ+ka/rQ8uSqccAF/LLCYif4yq99nBm775VCubhgmrhKTeW59ZSYRs85rOjaEav YHeQ== X-Gm-Message-State: AOAM532K2IV460b6VNgzd9vPhxnwsLoNbCzFzEDOB/iD7G9rZSN/6wRu +w9HxNj+go9mcfBlUvycxcwNdl9wpyI= X-Google-Smtp-Source: ABdhPJyQNThK2t3saTIHCPi97vTn17IROQ3IqH6dv7P2ekERSI+4IX6SPUK91sKd9WeaOwDRLc/J5g== X-Received: by 2002:a17:902:e94e:b0:158:91e6:501 with SMTP id b14-20020a170902e94e00b0015891e60501mr18155243pll.29.1654411399215; Sat, 04 Jun 2022 23:43:19 -0700 (PDT) Received: from localhost ([198.11.178.15]) by smtp.gmail.com with ESMTPSA id ru12-20020a17090b2bcc00b001cb6527ca39sm10350755pjb.0.2022.06.04.23.43.18 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 04 Jun 2022 23:43:19 -0700 (PDT) From: Lai Jiangshan To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Paolo Bonzini Cc: Sean Christopherson , Vitaly Kuznetsov , Maxim Levitsky , Lai Jiangshan Subject: [PATCH 07/12] KVM: X86/MMU: Remove the useless struct mmu_page_path Date: Sun, 5 Jun 2022 14:43:37 +0800 Message-Id: <20220605064342.309219-8-jiangshanlai@gmail.com> X-Mailer: git-send-email 2.19.1.6.gb485710b In-Reply-To: <20220605064342.309219-1-jiangshanlai@gmail.com> References: <20220605064342.309219-1-jiangshanlai@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org From: Lai Jiangshan struct mmu_page_path is set and updated but never used since mmu_pages_clear_parents() is removed. Remove it. Signed-off-by: Lai Jiangshan --- arch/x86/kvm/mmu/mmu.c | 37 +++++++++---------------------------- 1 file changed, 9 insertions(+), 28 deletions(-) diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index a56d328365e4..65a2f4a2ce25 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -1897,39 +1897,28 @@ static bool is_obsolete_sp(struct kvm *kvm, struct kvm_mmu_page *sp) unlikely(sp->mmu_valid_gen != kvm->arch.mmu_valid_gen); } -struct mmu_page_path { - struct kvm_mmu_page *parent[PT64_ROOT_MAX_LEVEL]; - unsigned int idx[PT64_ROOT_MAX_LEVEL]; -}; - -#define for_each_sp(pvec, sp, parents, i) \ - for (i = mmu_pages_first(&pvec, &parents); \ +#define for_each_sp(pvec, sp, i) \ + for (i = mmu_pages_first(&pvec); \ i < pvec.nr && ({ sp = pvec.page[i].sp; 1;}); \ - i = mmu_pages_next(&pvec, &parents, i)) + i = mmu_pages_next(&pvec, i)) -static int mmu_pages_next(struct kvm_mmu_pages *pvec, - struct mmu_page_path *parents, - int i) +static int mmu_pages_next(struct kvm_mmu_pages *pvec, int i) { int n; for (n = i+1; n < pvec->nr; n++) { struct kvm_mmu_page *sp = pvec->page[n].sp; - unsigned idx = pvec->page[n].idx; int level = sp->role.level; - parents->idx[level-1] = idx; if (level == PG_LEVEL_4K) break; - parents->parent[level-2] = sp; } return n; } -static int mmu_pages_first(struct kvm_mmu_pages *pvec, - struct mmu_page_path *parents) +static int mmu_pages_first(struct kvm_mmu_pages *pvec) { struct kvm_mmu_page *sp; int level; @@ -1943,13 +1932,7 @@ static int mmu_pages_first(struct kvm_mmu_pages *pvec, level = sp->role.level; WARN_ON(level == PG_LEVEL_4K); - parents->parent[level-2] = sp; - - /* Also set up a sentinel. Further entries in pvec are all - * children of sp, so this element is never overwritten. - */ - parents->parent[level-1] = NULL; - return mmu_pages_next(pvec, parents, 0); + return mmu_pages_next(pvec, 0); } static int mmu_sync_children(struct kvm_vcpu *vcpu, @@ -1957,7 +1940,6 @@ static int mmu_sync_children(struct kvm_vcpu *vcpu, { int i; struct kvm_mmu_page *sp; - struct mmu_page_path parents; struct kvm_mmu_pages pages; LIST_HEAD(invalid_list); bool flush = false; @@ -1965,7 +1947,7 @@ static int mmu_sync_children(struct kvm_vcpu *vcpu, while (mmu_unsync_walk_and_clear(parent, &pages)) { bool protected = false; - for_each_sp(pages, sp, parents, i) + for_each_sp(pages, sp, i) protected |= kvm_vcpu_write_protect_gfn(vcpu, sp->gfn); if (protected) { @@ -1973,7 +1955,7 @@ static int mmu_sync_children(struct kvm_vcpu *vcpu, flush = false; } - for_each_sp(pages, sp, parents, i) { + for_each_sp(pages, sp, i) { kvm_mmu_page_clear_unsync(vcpu->kvm, sp); flush |= kvm_sync_page(vcpu, sp, &invalid_list) > 0; } @@ -2273,7 +2255,6 @@ static int mmu_zap_unsync_children(struct kvm *kvm, struct list_head *invalid_list) { int i, zapped = 0; - struct mmu_page_path parents; struct kvm_mmu_pages pages; if (parent->role.level == PG_LEVEL_4K) @@ -2282,7 +2263,7 @@ static int mmu_zap_unsync_children(struct kvm *kvm, while (mmu_unsync_walk_and_clear(parent, &pages)) { struct kvm_mmu_page *sp; - for_each_sp(pages, sp, parents, i) { + for_each_sp(pages, sp, i) { kvm_mmu_prepare_zap_page(kvm, sp, invalid_list); zapped++; } From patchwork Sun Jun 5 06:43:38 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lai Jiangshan X-Patchwork-Id: 12869721 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AF897C433EF for ; Sun, 5 Jun 2022 06:44:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350747AbiFEGow (ORCPT ); Sun, 5 Jun 2022 02:44:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38434 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350756AbiFEGns (ORCPT ); Sun, 5 Jun 2022 02:43:48 -0400 Received: from mail-pf1-x432.google.com (mail-pf1-x432.google.com [IPv6:2607:f8b0:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7F45048325; Sat, 4 Jun 2022 23:43:24 -0700 (PDT) Received: by mail-pf1-x432.google.com with SMTP id w21so10400144pfc.0; Sat, 04 Jun 2022 23:43:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=zlSXyDoUcGhenuZlmA7G7JdusXRzge3goPKj2Qa0+W8=; b=UXvkknmiKZQUnRF0SnnecBKU9kYMnrbzn3/WhEugctwOuwEVOMEuVIt/V3XF9EMSy+ pjMsVhORVuq2i0x3zFUlXPOdDGSL0sWTFpMN2CX/3avtAjcmfftA1aRiu1UHGLoAKXIP iAJLW3lvrQ3CtsU3ODi5Gky6c1aZIkiJ6qCzqAz2Evl0MvFAIwm9PW0+NdHecqoZa9j3 DUubP8P0neawote61chfhEJULV9jPR2PCz1838QjLHLOSo6tdKqSWD/QFki3orwaEvbB R/Mus2qZVNA281wrR7/5uGj5qz/owkOjentqFKqQLrgwEAZ/O5DdIowTpTj+gYioVbOp DMcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zlSXyDoUcGhenuZlmA7G7JdusXRzge3goPKj2Qa0+W8=; b=Kopk+bJTJ5EDD2mn4A3fgepqzH+u9Bg0TA0FiMVj/5fmemT0Y5jFK/mJlzVL3wS9rv I6uU/GALyBwGPQxYkuM9jhaWa9gc6eI9PNk9g75OxMOtPs10G77FkHyg/dITggjuc3Zf Mq42F35euyFr8H98g4o1Br2zaRBD+tNNMN3hhCGLZDvcpqLjzqTp+lHYIwYfVE9mIJgM qSSftnsujILyLgpclqm3M8ijxglr5cIoCXNa6lP1LwCJqfyGB5Ss11lJL9z2g+OG7cg5 FgkVYaJXYnMolMXSg/KljSZERVjdaHErgW3StIcuyZmUUtHE8UUkV2x2hjLEcXocr9jf 7jsQ== X-Gm-Message-State: AOAM532XGAiDXXAK6/41dSli6TWRrd91mNq4kXfTi27iVWxwFqQ5569l VO8R0VIntJC2fe43VmUMpjBpycaz2V0= X-Google-Smtp-Source: ABdhPJwiEGRHCwKFkaS2+nPPAFGgD7d7vh1t5+UYJntCp3OZEYisn+jd8mbWcXmacXh1gPoPX2FoVw== X-Received: by 2002:a63:82c7:0:b0:3fc:bcd9:8114 with SMTP id w190-20020a6382c7000000b003fcbcd98114mr15525207pgd.112.1654411403320; Sat, 04 Jun 2022 23:43:23 -0700 (PDT) Received: from localhost ([198.11.178.15]) by smtp.gmail.com with ESMTPSA id s5-20020a170902ea0500b001638a171558sm8336350plg.202.2022.06.04.23.43.22 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 04 Jun 2022 23:43:23 -0700 (PDT) From: Lai Jiangshan To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Paolo Bonzini Cc: Sean Christopherson , Vitaly Kuznetsov , Maxim Levitsky , Lai Jiangshan Subject: [PATCH 08/12] KVM: X86/MMU: Remove the useless idx from struct kvm_mmu_pages Date: Sun, 5 Jun 2022 14:43:38 +0800 Message-Id: <20220605064342.309219-9-jiangshanlai@gmail.com> X-Mailer: git-send-email 2.19.1.6.gb485710b In-Reply-To: <20220605064342.309219-1-jiangshanlai@gmail.com> References: <20220605064342.309219-1-jiangshanlai@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org From: Lai Jiangshan The value is only set but never really used. Signed-off-by: Lai Jiangshan --- arch/x86/kvm/mmu/mmu.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index 65a2f4a2ce25..dc159db46b34 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -1745,13 +1745,11 @@ static int nonpaging_sync_page(struct kvm_vcpu *vcpu, struct kvm_mmu_pages { struct mmu_page_and_offset { struct kvm_mmu_page *sp; - unsigned int idx; } page[KVM_PAGE_ARRAY_NR]; unsigned int nr; }; -static int mmu_pages_add(struct kvm_mmu_pages *pvec, struct kvm_mmu_page *sp, - int idx) +static int mmu_pages_add(struct kvm_mmu_pages *pvec, struct kvm_mmu_page *sp) { int i; @@ -1761,7 +1759,6 @@ static int mmu_pages_add(struct kvm_mmu_pages *pvec, struct kvm_mmu_page *sp, return 0; pvec->page[pvec->nr].sp = sp; - pvec->page[pvec->nr].idx = idx; pvec->nr++; return (pvec->nr == KVM_PAGE_ARRAY_NR); } @@ -1790,7 +1787,7 @@ static int __mmu_unsync_walk_and_clear(struct kvm_mmu_page *sp, child = to_shadow_page(ent & PT64_BASE_ADDR_MASK); if (child->unsync_children) { - if (mmu_pages_add(pvec, child, i)) + if (mmu_pages_add(pvec, child)) return -ENOSPC; ret = __mmu_unsync_walk_and_clear(child, pvec); @@ -1808,7 +1805,7 @@ static int __mmu_unsync_walk_and_clear(struct kvm_mmu_page *sp, clear_unsync_child_bit(sp, i); if (child->unsync) { nr_unsync_leaf++; - if (mmu_pages_add(pvec, child, i)) + if (mmu_pages_add(pvec, child)) return -ENOSPC; } } @@ -1816,8 +1813,6 @@ static int __mmu_unsync_walk_and_clear(struct kvm_mmu_page *sp, return nr_unsync_leaf; } -#define INVALID_INDEX (-1) - static int mmu_unsync_walk_and_clear(struct kvm_mmu_page *sp, struct kvm_mmu_pages *pvec) { @@ -1825,7 +1820,7 @@ static int mmu_unsync_walk_and_clear(struct kvm_mmu_page *sp, if (!sp->unsync_children) return 0; - mmu_pages_add(pvec, sp, INVALID_INDEX); + mmu_pages_add(pvec, sp); return __mmu_unsync_walk_and_clear(sp, pvec); } @@ -1926,8 +1921,6 @@ static int mmu_pages_first(struct kvm_mmu_pages *pvec) if (pvec->nr == 0) return 0; - WARN_ON(pvec->page[0].idx != INVALID_INDEX); - sp = pvec->page[0].sp; level = sp->role.level; WARN_ON(level == PG_LEVEL_4K); From patchwork Sun Jun 5 06:43:39 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lai Jiangshan X-Patchwork-Id: 12869717 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 207E0C43334 for ; Sun, 5 Jun 2022 06:44:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350726AbiFEGoG (ORCPT ); Sun, 5 Jun 2022 02:44:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35738 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350825AbiFEGn7 (ORCPT ); Sun, 5 Jun 2022 02:43:59 -0400 Received: from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com [IPv6:2607:f8b0:4864:20::62b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 683DE483AF; Sat, 4 Jun 2022 23:43:28 -0700 (PDT) Received: by mail-pl1-x62b.google.com with SMTP id n8so9866005plh.1; Sat, 04 Jun 2022 23:43:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9ZPEYVPT8lSmzrFfSReWUpWaXzCkp32kYLA9BRd9poo=; b=ZNn0WASDiHjxRFywP5TR73R8wJiC3ZSdxxKyspy9RLQdrkXYFta3MBrcxf84vmim5j c7nJdyx85YRp8jUZtcteGz6fD50M36c5Ew2w92iQNUcmZYxVQpDEHSJrUQpMaK82xbBh W+hVKL0c6cZlEAk5NNfLEgoGU17jUZpJDgCDvq71EMHFkyGbCPy5LJ6//gTetBajJuqp 4QqIqKQVAHPWWcXNgAgx91QaVoI19hKygJCUL5E2j1f1NhNcUzbU/eviuqaPJBEL23i+ 3h+Fw42rkQcH56WMnHbdDMyh6IK0lSYJmBnsKfNTfj9IPdzRyFA358b7SKt/ZNzoixO0 69Og== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9ZPEYVPT8lSmzrFfSReWUpWaXzCkp32kYLA9BRd9poo=; b=16RKKU+NALGwjRymfBld11/H8mHWMg9Uxoz4YGJjq2HEpvzdtjv/RBhr2N7ZBN8YK1 nTKLU0DfNJz3pNYwc/8193zzJdUsr6V1T1KtjtXO2caODJ+oeV7LvJ+k4y/blIxzRax6 eqF8KfJItlt5KUkdHoX5qcM7GEmIVOINpTse5kllJ5EyCirHXuCfrQnPoq/gMDZWhlCN vQLSz5L3uwUt0KI87RNDRtPPHWAYKqb09KJ2EA/o/tnh4wcjrYpVUcTlT86xACIEDUtf kemeGVa1ncFeZmPUh7yOWNddiBo8udCFh9JZs5Y2qOMNqWiAHV+8k8ArsxLm38K44eSd b6wQ== X-Gm-Message-State: AOAM530b39jOa1cNdRlIyxJvN6GZ0Kbp6gbKgD7+sZcV0o+c1/K1Xjba bg+3nshPgPEWm4JcLGcMRVaPX2XqYIE= X-Google-Smtp-Source: ABdhPJw1Z0TMC5z7R5ZNgBNj1jdkxTHk0RywS567SkssZrZ/sO+fyc07fWQO7eJOE0kxP0hwV3dChg== X-Received: by 2002:a17:90b:4a92:b0:1e8:2ba1:64bf with SMTP id lp18-20020a17090b4a9200b001e82ba164bfmr12833283pjb.41.1654411407330; Sat, 04 Jun 2022 23:43:27 -0700 (PDT) Received: from localhost ([198.11.178.15]) by smtp.gmail.com with ESMTPSA id js24-20020a17090b149800b001df3a251cc2sm10376609pjb.4.2022.06.04.23.43.26 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 04 Jun 2022 23:43:27 -0700 (PDT) From: Lai Jiangshan To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Paolo Bonzini Cc: Sean Christopherson , Vitaly Kuznetsov , Maxim Levitsky , Lai Jiangshan Subject: [PATCH 09/12] KVM: X86/MMU: Unfold struct mmu_page_and_offset in struct kvm_mmu_pages Date: Sun, 5 Jun 2022 14:43:39 +0800 Message-Id: <20220605064342.309219-10-jiangshanlai@gmail.com> X-Mailer: git-send-email 2.19.1.6.gb485710b In-Reply-To: <20220605064342.309219-1-jiangshanlai@gmail.com> References: <20220605064342.309219-1-jiangshanlai@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org From: Lai Jiangshan struct kvm_mmu_page *sp is the only field in struct mmu_page_and_offset. Unfold it. Signed-off-by: Lai Jiangshan --- arch/x86/kvm/mmu/mmu.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index dc159db46b34..a5563e5ee2e5 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -1743,9 +1743,7 @@ static int nonpaging_sync_page(struct kvm_vcpu *vcpu, #define KVM_PAGE_ARRAY_NR 16 struct kvm_mmu_pages { - struct mmu_page_and_offset { - struct kvm_mmu_page *sp; - } page[KVM_PAGE_ARRAY_NR]; + struct kvm_mmu_page *sp[KVM_PAGE_ARRAY_NR]; unsigned int nr; }; @@ -1755,10 +1753,10 @@ static int mmu_pages_add(struct kvm_mmu_pages *pvec, struct kvm_mmu_page *sp) if (sp->unsync) for (i=0; i < pvec->nr; i++) - if (pvec->page[i].sp == sp) + if (pvec->sp[i] == sp) return 0; - pvec->page[pvec->nr].sp = sp; + pvec->sp[pvec->nr] = sp; pvec->nr++; return (pvec->nr == KVM_PAGE_ARRAY_NR); } @@ -1894,7 +1892,7 @@ static bool is_obsolete_sp(struct kvm *kvm, struct kvm_mmu_page *sp) #define for_each_sp(pvec, sp, i) \ for (i = mmu_pages_first(&pvec); \ - i < pvec.nr && ({ sp = pvec.page[i].sp; 1;}); \ + i < pvec.nr && ({ sp = pvec.sp[i]; 1;}); \ i = mmu_pages_next(&pvec, i)) static int mmu_pages_next(struct kvm_mmu_pages *pvec, int i) @@ -1902,7 +1900,7 @@ static int mmu_pages_next(struct kvm_mmu_pages *pvec, int i) int n; for (n = i+1; n < pvec->nr; n++) { - struct kvm_mmu_page *sp = pvec->page[n].sp; + struct kvm_mmu_page *sp = pvec->sp[n]; int level = sp->role.level; if (level == PG_LEVEL_4K) @@ -1921,7 +1919,7 @@ static int mmu_pages_first(struct kvm_mmu_pages *pvec) if (pvec->nr == 0) return 0; - sp = pvec->page[0].sp; + sp = pvec->sp[0]; level = sp->role.level; WARN_ON(level == PG_LEVEL_4K); From patchwork Sun Jun 5 06:43:40 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lai Jiangshan X-Patchwork-Id: 12869720 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3B84CC43334 for ; Sun, 5 Jun 2022 06:44:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350773AbiFEGom (ORCPT ); Sun, 5 Jun 2022 02:44:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36656 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350827AbiFEGn7 (ORCPT ); Sun, 5 Jun 2022 02:43:59 -0400 Received: from mail-pj1-x1035.google.com (mail-pj1-x1035.google.com [IPv6:2607:f8b0:4864:20::1035]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 35B9448892; Sat, 4 Jun 2022 23:43:31 -0700 (PDT) Received: by mail-pj1-x1035.google.com with SMTP id n10so10423332pjh.5; Sat, 04 Jun 2022 23:43:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Bu7ZrkPxS66jxcidoVWV6iYAl5bluEGFikDfLhjYokI=; b=M8RXbxYdMIpzAXk26g7e1Flo+N/99FBOkaWgEjMhoc4L0AbKTkdc4F+dbPMw9Hd1XB XncFNmvvKS5l22ooBh9AjMrLxiWOYAfJ5buroZc74xJIW2QRoAW4fmcgJNvO4EaZ5goq i655sPiap7Yo/hYYW5+lsj/PT1qabJ1VcuRT9veENb4Kj18zYGFwOtMJScUB4KtrtoWU w3fIkU7tMD8lXlxKMevEKozOi/lGmlTatFv/QPO0HDHO2Xfe+Thh7NpylZ2/eB9Cc/RP bkfzR/QnFTDZoLB9c05B9EMPsnqKOXi9YEsYgJfOEV5UkGfY/u8tbXheqgZz/jwgxAMw Vtbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Bu7ZrkPxS66jxcidoVWV6iYAl5bluEGFikDfLhjYokI=; b=0RYu4u4RbO8Fyd4eJgjotz6EdceRVVc/ENJoX4CuoQX0g4PLMmCDwfOu+lNle2ObG3 xvHzd+kDtJVaMkgKFC0Fp+XusbYEjMAL5MJfEEKP/+Pbk1XZck46psdA343u9qqdmFwI Nr6y0L2kBLj+egLmRtdOdpJ6AkPsYDy4z4lBYxqFfOGlAwoyl70+NWMLw0vzzg+Gmmhj mXXrzyFG+7sRPKHKfleEYs6Bv9U1yUMHUdikqK3lU8S9AnL8GiYB9v7D2WNNNOz0rhnR otO4w8NrYxW/Q2iGaxvOzQHcaOunzSS+RelvUG4Zo8YtMHHNq1Ll63E63GKNYpLr6rfJ mIvg== X-Gm-Message-State: AOAM532T8HxlsGFarkkGO8Y30Rse+kl4k2JeZjLMgMklmhQxac3pi40g 6KaDa5Q5ItrQzcw/IsXz4FCEIO7iB/A= X-Google-Smtp-Source: ABdhPJzq8vJNMjwqjFJY7It9lSU2JDdDSYc/z2ZOXaRYHUPC4hh7tkuK3uwZlndPkBaGP7ahKbYcJw== X-Received: by 2002:a17:90b:3ecd:b0:1dc:94f2:1bc0 with SMTP id rm13-20020a17090b3ecd00b001dc94f21bc0mr19945260pjb.32.1654411411042; Sat, 04 Jun 2022 23:43:31 -0700 (PDT) Received: from localhost ([198.11.178.15]) by smtp.gmail.com with ESMTPSA id k81-20020a628454000000b0050dc762815esm1186895pfd.56.2022.06.04.23.43.30 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 04 Jun 2022 23:43:30 -0700 (PDT) From: Lai Jiangshan To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Paolo Bonzini Cc: Sean Christopherson , Vitaly Kuznetsov , Maxim Levitsky , Lai Jiangshan Subject: [PATCH 10/12] KVM: X86/MMU: Don't add parents to struct kvm_mmu_pages Date: Sun, 5 Jun 2022 14:43:40 +0800 Message-Id: <20220605064342.309219-11-jiangshanlai@gmail.com> X-Mailer: git-send-email 2.19.1.6.gb485710b In-Reply-To: <20220605064342.309219-1-jiangshanlai@gmail.com> References: <20220605064342.309219-1-jiangshanlai@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org From: Lai Jiangshan Parents added into the struct kvm_mmu_pages are never used. Signed-off-by: Lai Jiangshan --- arch/x86/kvm/mmu/mmu.c | 36 +++++------------------------------- 1 file changed, 5 insertions(+), 31 deletions(-) diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index a5563e5ee2e5..304a515bd073 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -1751,10 +1751,9 @@ static int mmu_pages_add(struct kvm_mmu_pages *pvec, struct kvm_mmu_page *sp) { int i; - if (sp->unsync) - for (i=0; i < pvec->nr; i++) - if (pvec->sp[i] == sp) - return 0; + for (i=0; i < pvec->nr; i++) + if (pvec->sp[i] == sp) + return 0; pvec->sp[pvec->nr] = sp; pvec->nr++; @@ -1785,9 +1784,6 @@ static int __mmu_unsync_walk_and_clear(struct kvm_mmu_page *sp, child = to_shadow_page(ent & PT64_BASE_ADDR_MASK); if (child->unsync_children) { - if (mmu_pages_add(pvec, child)) - return -ENOSPC; - ret = __mmu_unsync_walk_and_clear(child, pvec); if (ret < 0) return ret; @@ -1818,7 +1814,6 @@ static int mmu_unsync_walk_and_clear(struct kvm_mmu_page *sp, if (!sp->unsync_children) return 0; - mmu_pages_add(pvec, sp); return __mmu_unsync_walk_and_clear(sp, pvec); } @@ -1897,33 +1892,12 @@ static bool is_obsolete_sp(struct kvm *kvm, struct kvm_mmu_page *sp) static int mmu_pages_next(struct kvm_mmu_pages *pvec, int i) { - int n; - - for (n = i+1; n < pvec->nr; n++) { - struct kvm_mmu_page *sp = pvec->sp[n]; - int level = sp->role.level; - - if (level == PG_LEVEL_4K) - break; - - } - - return n; + return i + 1; } static int mmu_pages_first(struct kvm_mmu_pages *pvec) { - struct kvm_mmu_page *sp; - int level; - - if (pvec->nr == 0) - return 0; - - sp = pvec->sp[0]; - level = sp->role.level; - WARN_ON(level == PG_LEVEL_4K); - - return mmu_pages_next(pvec, 0); + return 0; } static int mmu_sync_children(struct kvm_vcpu *vcpu, From patchwork Sun Jun 5 06:43:41 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lai Jiangshan X-Patchwork-Id: 12869718 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 612B2C433EF for ; Sun, 5 Jun 2022 06:44:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350812AbiFEGoO (ORCPT ); Sun, 5 Jun 2022 02:44:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37338 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350768AbiFEGoA (ORCPT ); Sun, 5 Jun 2022 02:44:00 -0400 Received: from mail-pg1-x52a.google.com (mail-pg1-x52a.google.com [IPv6:2607:f8b0:4864:20::52a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8982D48394; Sat, 4 Jun 2022 23:43:35 -0700 (PDT) Received: by mail-pg1-x52a.google.com with SMTP id f65so285522pgc.7; Sat, 04 Jun 2022 23:43:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=RHnX3Bz/yPg0aUke0Eo3cgpI4N778FFMTEZJU+eVzVo=; b=MyL7EC6VSCYrB9jrxMq5kuB2zoDT+CBEQrFILANjMOKVe95OaK3v1EMXAS/NxAuMwB XDrpSLxyiFjGz1L3Tk0at7HaoL2RSi0uA2gZNxw6dlwbjM31oso3CuyF6h0B1mlivFie knX2AIe3FtorrwTx0Nm+DYywtw5Xl/NvL6PtNHoDegbxsAieTJN4jfHbOm+0d9i2+dH9 0yvV3xfA4CGkvC0osNZLinMTzr2NYlEmMJxlSv7dMHdpUORevXIS/JXBF27es1xLZGxZ ym6tYD0UnfMJ7Y65VPnSiusT2s4mZSFdJjApBtAnro9L/RJLbkyDjhbD1ZR+ojq+7b0l /4Ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=RHnX3Bz/yPg0aUke0Eo3cgpI4N778FFMTEZJU+eVzVo=; b=e4E7+qaFg9O4X8lRdxeaQ6CYm/zwaddgeKd+ao/OlonDvDvVJ+oxmAYiLUKdtd9Hiz YasgykPAwazkIMdH6v/vIogrSmqsTIaPQOevhUH0ZPu19zK4JXARV+4WtndlX1BZfWuJ dgMh4S2tCYtrwNszVxbFldfAR/I9vxydvdUE3RBBV0L8Xvb6B6a2hXTL5omiexB7nzlT mgOV37nwGC2WCT/LvAY91o+e112KCyvswjR0Dpznba1r0mx7hIO+ZYaPqFtSfZOKsi/P BwmM/0TlvAuMHfcgLVXpMmcKvUerFnRXr4nOLP6FdJxvEiL/ybw6jGynl0rDYzIrvf+b 9nkw== X-Gm-Message-State: AOAM531udQmW8FeNWVXryP1Om+JGpZ/1RTA1woESM74+Ij3a9RCYUyTs ezvSIlpfYLRvpClFucyy9JeE7Iq7U68= X-Google-Smtp-Source: ABdhPJzteKFqnQkYZNWjDY+hJqG9wUHBf4WkIiGjArY2/M6ztizXDlW2+jEGLf7ES6EVNT+FuO7NUw== X-Received: by 2002:a63:ef4e:0:b0:3f9:e8c4:b72d with SMTP id c14-20020a63ef4e000000b003f9e8c4b72dmr15529949pgk.328.1654411414879; Sat, 04 Jun 2022 23:43:34 -0700 (PDT) Received: from localhost ([198.11.178.15]) by smtp.gmail.com with ESMTPSA id jg15-20020a17090326cf00b001640594376dsm8155910plb.183.2022.06.04.23.43.34 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 04 Jun 2022 23:43:34 -0700 (PDT) From: Lai Jiangshan To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Paolo Bonzini Cc: Sean Christopherson , Vitaly Kuznetsov , Maxim Levitsky , Lai Jiangshan Subject: [PATCH 11/12] KVM: X86/MMU: Remove mmu_pages_first() and mmu_pages_next() Date: Sun, 5 Jun 2022 14:43:41 +0800 Message-Id: <20220605064342.309219-12-jiangshanlai@gmail.com> X-Mailer: git-send-email 2.19.1.6.gb485710b In-Reply-To: <20220605064342.309219-1-jiangshanlai@gmail.com> References: <20220605064342.309219-1-jiangshanlai@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org From: Lai Jiangshan Use i = 0 andd i++ instead. Signed-off-by: Lai Jiangshan --- arch/x86/kvm/mmu/mmu.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index 304a515bd073..7cfc4bc89f60 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -1886,19 +1886,7 @@ static bool is_obsolete_sp(struct kvm *kvm, struct kvm_mmu_page *sp) } #define for_each_sp(pvec, sp, i) \ - for (i = mmu_pages_first(&pvec); \ - i < pvec.nr && ({ sp = pvec.sp[i]; 1;}); \ - i = mmu_pages_next(&pvec, i)) - -static int mmu_pages_next(struct kvm_mmu_pages *pvec, int i) -{ - return i + 1; -} - -static int mmu_pages_first(struct kvm_mmu_pages *pvec) -{ - return 0; -} + for (i = 0; i < pvec.nr && ({ sp = pvec.sp[i]; 1;}); i++) static int mmu_sync_children(struct kvm_vcpu *vcpu, struct kvm_mmu_page *parent, bool can_yield) From patchwork Sun Jun 5 06:43:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lai Jiangshan X-Patchwork-Id: 12869719 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B8937C43334 for ; Sun, 5 Jun 2022 06:44:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350883AbiFEGoY (ORCPT ); Sun, 5 Jun 2022 02:44:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36854 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350858AbiFEGoB (ORCPT ); Sun, 5 Jun 2022 02:44:01 -0400 Received: from mail-pj1-x1029.google.com (mail-pj1-x1029.google.com [IPv6:2607:f8b0:4864:20::1029]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8956E4991C; Sat, 4 Jun 2022 23:43:39 -0700 (PDT) Received: by mail-pj1-x1029.google.com with SMTP id a10so10434766pju.3; Sat, 04 Jun 2022 23:43:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=XmFX5FJYjWQ43Zgix1LgnK1s4hmtFFAjCX8rn0TCV50=; b=pi2Lr73UbY5js8cUjD+Th9u3vCul0jEnLzyIoRuCxONsBeaVOgB06fxb7waPakU9BE 2ZzrdWelecAC3+hn4Mby9jn6XUuupt+KfaqA2qyuI2WEgpD5DotpD/ABjtxepFjjGMBB na27DodlJUsh8IzPP5Z4EDO0bwbrzz+TLHxmpXrINvS4iiKBSTnzzHMxIyZDiWs9YJ6b YCLrrnDscANGp1OT2uzgeiBmZzoNkJhbcp4181J+kv+ssj2Gh/gRzt2WO49cvJb2xUOC 3WxPY3Gx28ER2uomYIm5996H4yTxLBaCc24tMVjIYER18Ge1E0KwFc9AKex1TZAdk4ew yCBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=XmFX5FJYjWQ43Zgix1LgnK1s4hmtFFAjCX8rn0TCV50=; b=jWvD3/W30aRWizT+kruRGjR1O3QmN63YlNH2kiL3DTdrk8vM7TYMltz9M5dh3nDnCh lP38WbWR2QfLG0PDKt+a3fL7XBj0+/vVoJ+QEQ6qbKgx6vAP6QmDnf+7jgiTfsxt8UWu oVaByDJ9QSBUO1gRNYXvxS5zFyDFqTMkP/06iwfwSt4jihJUpv5YapofLz1hG3M6jUmm kcSzCqhlAVvIeeNoFPaAgTYqPcpEK6p0jrfsyNZpXOOH0p95qfeQx8T4oQt/EwS7IKcE B9GkjiaEQpJA7q+JabIK8rdFw0nQiT3ixeDNzONP2qbtzwDZ7O5BYYUHSB0bqqE8rShN yjvg== X-Gm-Message-State: AOAM533pXPA8Lq0Vk2tcUi8JJ/S5Jb4yrkZnm6y8mS6DQ3Rn40YKuqrT 1CLue/YDFnjd+LKkjIxf9dgY7h9wva8= X-Google-Smtp-Source: ABdhPJzxRsiy8SjNjG8fGJcksOwJAI/F/EEjP52FiPNOF81hQFciWs40AKgDDv5b5R8CXcuZoHIkVw== X-Received: by 2002:a17:903:130d:b0:164:17f5:9de5 with SMTP id iy13-20020a170903130d00b0016417f59de5mr18749719plb.132.1654411418474; Sat, 04 Jun 2022 23:43:38 -0700 (PDT) Received: from localhost ([198.11.178.15]) by smtp.gmail.com with ESMTPSA id i27-20020a056a00005b00b0050dc7628171sm8359144pfk.75.2022.06.04.23.43.37 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 04 Jun 2022 23:43:38 -0700 (PDT) From: Lai Jiangshan To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Paolo Bonzini Cc: Sean Christopherson , Vitaly Kuznetsov , Maxim Levitsky , Lai Jiangshan Subject: [PATCH 12/12] KVM: X86/MMU: Rename struct kvm_mmu_pages to struct kvm_mmu_page_vec Date: Sun, 5 Jun 2022 14:43:42 +0800 Message-Id: <20220605064342.309219-13-jiangshanlai@gmail.com> X-Mailer: git-send-email 2.19.1.6.gb485710b In-Reply-To: <20220605064342.309219-1-jiangshanlai@gmail.com> References: <20220605064342.309219-1-jiangshanlai@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org From: Lai Jiangshan It is implemented as a vector and variable names for it are pvec. Rename it to kvm_mmu_page_vec for better describing it. Signed-off-by: Lai Jiangshan --- arch/x86/kvm/mmu/mmu.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index 7cfc4bc89f60..64e0d155068c 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -1742,12 +1742,12 @@ static int nonpaging_sync_page(struct kvm_vcpu *vcpu, #define KVM_PAGE_ARRAY_NR 16 -struct kvm_mmu_pages { +struct kvm_mmu_page_vec { struct kvm_mmu_page *sp[KVM_PAGE_ARRAY_NR]; unsigned int nr; }; -static int mmu_pages_add(struct kvm_mmu_pages *pvec, struct kvm_mmu_page *sp) +static int mmu_pages_add(struct kvm_mmu_page_vec *pvec, struct kvm_mmu_page *sp) { int i; @@ -1768,7 +1768,7 @@ static inline void clear_unsync_child_bit(struct kvm_mmu_page *sp, int idx) } static int __mmu_unsync_walk_and_clear(struct kvm_mmu_page *sp, - struct kvm_mmu_pages *pvec) + struct kvm_mmu_page_vec *pvec) { int i, ret, nr_unsync_leaf = 0; @@ -1808,7 +1808,7 @@ static int __mmu_unsync_walk_and_clear(struct kvm_mmu_page *sp, } static int mmu_unsync_walk_and_clear(struct kvm_mmu_page *sp, - struct kvm_mmu_pages *pvec) + struct kvm_mmu_page_vec *pvec) { pvec->nr = 0; if (!sp->unsync_children) @@ -1885,7 +1885,7 @@ static bool is_obsolete_sp(struct kvm *kvm, struct kvm_mmu_page *sp) unlikely(sp->mmu_valid_gen != kvm->arch.mmu_valid_gen); } -#define for_each_sp(pvec, sp, i) \ +#define page_vec_for_each_sp(pvec, sp, i) \ for (i = 0; i < pvec.nr && ({ sp = pvec.sp[i]; 1;}); i++) static int mmu_sync_children(struct kvm_vcpu *vcpu, @@ -1893,14 +1893,14 @@ static int mmu_sync_children(struct kvm_vcpu *vcpu, { int i; struct kvm_mmu_page *sp; - struct kvm_mmu_pages pages; + struct kvm_mmu_page_vec pvec; LIST_HEAD(invalid_list); bool flush = false; - while (mmu_unsync_walk_and_clear(parent, &pages)) { + while (mmu_unsync_walk_and_clear(parent, &pvec)) { bool protected = false; - for_each_sp(pages, sp, i) + page_vec_for_each_sp(pvec, sp, i) protected |= kvm_vcpu_write_protect_gfn(vcpu, sp->gfn); if (protected) { @@ -1908,7 +1908,7 @@ static int mmu_sync_children(struct kvm_vcpu *vcpu, flush = false; } - for_each_sp(pages, sp, i) { + page_vec_for_each_sp(pvec, sp, i) { kvm_mmu_page_clear_unsync(vcpu->kvm, sp); flush |= kvm_sync_page(vcpu, sp, &invalid_list) > 0; } @@ -2208,15 +2208,15 @@ static int mmu_zap_unsync_children(struct kvm *kvm, struct list_head *invalid_list) { int i, zapped = 0; - struct kvm_mmu_pages pages; + struct kvm_mmu_page_vec pvec; if (parent->role.level == PG_LEVEL_4K) return 0; - while (mmu_unsync_walk_and_clear(parent, &pages)) { + while (mmu_unsync_walk_and_clear(parent, &pvec)) { struct kvm_mmu_page *sp; - for_each_sp(pages, sp, i) { + page_vec_for_each_sp(pvec, sp, i) { kvm_mmu_prepare_zap_page(kvm, sp, invalid_list); zapped++; }