From mboxrd@z Thu Jan 1 00:00:00 1970 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 8A6F7C433FE for ; Fri, 25 Mar 2022 23:53:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229704AbiCYXyv (ORCPT ); Fri, 25 Mar 2022 19:54:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34852 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229611AbiCYXys (ORCPT ); Fri, 25 Mar 2022 19:54:48 -0400 Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com [IPv6:2a00:1450:4864:20::235]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 72BE94C419 for ; Fri, 25 Mar 2022 16:53:13 -0700 (PDT) Received: by mail-lj1-x235.google.com with SMTP id s25so12212542lji.5 for ; Fri, 25 Mar 2022 16:53:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=8qXoYUkt8E2evKFcvqOeWBKlnnitRNfoGnLZMz+10kE=; b=OQdleKS9jBYFLVrrzj4DPCHf4gaVpqu58/EC7lxApoPXr60nb+ziM2552oK9jW2c/B ivMOHtTRyaNpW+GG34OG94pTLknSvunFjCnhWMHxD8gtHegvxPSYW/YhHuoNyH70mfCv TBchSbI1uBUcfH/frw4Xb1ROxPqwy2a8vYWETNL9+9tviD1tVELp3+7ceCGRqtDWRCKW 30mwS4Zfjo8suRFiY0SHvhTiNbKnjmF7AMUuDTMYhwcIpvgsmh76Mbkn6djR4TWVLXAt tQ+Z3py7JogTT/kJ9bWxb/epg1pqGhkFEIA2LhxON0krn941lj5JLcyI18LtZawHPxdB yFeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=8qXoYUkt8E2evKFcvqOeWBKlnnitRNfoGnLZMz+10kE=; b=yFiSRW4fPJU3yCSK5FZWGJFU9RUbyy3CAjSTCwgMvhEY/omVB5t8dgKdQUeviV+Hmp iHv/yId/usYAKcfIm+SDUNcm9Af80ZgufExge212ZLdSu3IWfUtOY9mLR/BPeIyF6MJU ed2ARHxubnuMxkzPwo0WgCnaSJmoJG2Bu0fVUHGb71p/MgmezqwCKLM/y7em09+9csyi pwMCUswOdRcDrBrBwp8VN0d466vzpcfq2XnYJAfVqPl8w9ibHW8Oa/KGi1/OWVwQhTdM 7q9XPaVt+FCepLcQHJhn1WSEJE7OeBZSVjmegwDBlzkpjFwgs3PaxkStQRNA8zbuA8to uxuw== X-Gm-Message-State: AOAM5319aFMxrdXZfLyk74lznGF5k4RysBw70UiEDN6ksYL5vqf+POdF PasQ6Sed2uoRsh/AA2T4cbMEmLLGYWzFOjkxCu1FFQ== X-Google-Smtp-Source: ABdhPJwTe3Jp4SsjbZ7FweW8j9HWkbFTY486qkS/Kbpu0+fJ9ImPAalJ2s7OU1fGNaHABBqHEZ1wUH92EdTp4sQMfTc= X-Received: by 2002:a05:651c:988:b0:24a:c21f:7057 with SMTP id b8-20020a05651c098800b0024ac21f7057mr1127843ljq.16.1648252391586; Fri, 25 Mar 2022 16:53:11 -0700 (PDT) MIME-Version: 1.0 References: <20220325233125.413634-1-vipinsh@google.com> In-Reply-To: <20220325233125.413634-1-vipinsh@google.com> From: David Matlack Date: Fri, 25 Mar 2022 16:52:45 -0700 Message-ID: Subject: Re: [PATCH] KVM: x86/mmu: Speed up slot_rmap_walk_next for sparsely populated rmaps To: Vipin Sharma Cc: Paolo Bonzini , Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm list , LKML Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Mar 25, 2022 at 4:31 PM Vipin Sharma wrote: > > Avoid calling handlers on empty rmap entries and skip to the next non > empty rmap entry. > > Empty rmap entries are noop in handlers. > > Signed-off-by: Vipin Sharma > Suggested-by: Sean Christopherson > Change-Id: I8abf0f4d82a2aae4c5d58b80bcc17ffc30785ffc nit: Omit Change-Id tags from upstream commits. > --- > arch/x86/kvm/mmu/mmu.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c > index 51671cb34fb6..f296340803ba 100644 > --- a/arch/x86/kvm/mmu/mmu.c > +++ b/arch/x86/kvm/mmu/mmu.c > @@ -1499,11 +1499,14 @@ static bool slot_rmap_walk_okay(struct slot_rmap_walk_iterator *iterator) > return !!iterator->rmap; > } > > -static void slot_rmap_walk_next(struct slot_rmap_walk_iterator *iterator) > +static noinline void What is the reason to add noinline? > +slot_rmap_walk_next(struct slot_rmap_walk_iterator *iterator) > { > - if (++iterator->rmap <= iterator->end_rmap) { > + while (++iterator->rmap <= iterator->end_rmap) { > iterator->gfn += (1UL << KVM_HPAGE_GFN_SHIFT(iterator->level)); > - return; > + > + if (iterator->rmap->val) > + return; > } > > if (++iterator->level > iterator->end_level) { > > base-commit: c9b8fecddb5bb4b67e351bbaeaa648a6f7456912 > -- > 2.35.1.1021.g381101b075-goog >