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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 798E4C87FCB for ; Fri, 30 Aug 2024 00:34:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D1F346B0088; Thu, 29 Aug 2024 20:34:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CD0276B008A; Thu, 29 Aug 2024 20:34:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B6FC16B008C; Thu, 29 Aug 2024 20:34:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 9BA2D6B0088 for ; Thu, 29 Aug 2024 20:34:52 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 5077C81354 for ; Fri, 30 Aug 2024 00:34:52 +0000 (UTC) X-FDA: 82507041624.04.0B6B465 Received: from mail-yw1-f182.google.com (mail-yw1-f182.google.com [209.85.128.182]) by imf22.hostedemail.com (Postfix) with ESMTP id 85C79C0007 for ; Fri, 30 Aug 2024 00:34:50 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=hZYKvsIL; spf=pass (imf22.hostedemail.com: domain of jthoughton@google.com designates 209.85.128.182 as permitted sender) smtp.mailfrom=jthoughton@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724978045; a=rsa-sha256; cv=none; b=pPBO00eRkd9EnG1IHU9CNgen9Z3hb+Wh8F4bWdRmyBwgznKBVOidfhGUFrykHj64h/sq0c JMvAdVg014gMHCcGHvJWEVdlWtMXF0cZ2SYNtmp9t8sSHAwhKHR66Tqc7uZzr2ryb9yD3r zRv2y+aeJzGKVcmCfJHXT2rxt+nkR1g= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=hZYKvsIL; spf=pass (imf22.hostedemail.com: domain of jthoughton@google.com designates 209.85.128.182 as permitted sender) smtp.mailfrom=jthoughton@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724978045; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ScuyZghAxUsq77xlIUmB3FT5rIh3r/8m9ZVZaLG04YU=; b=P5Paufh3NlbG2vozaERVOGbDZ0Y5hFRkKHLd9x7pKLwG3LSizB3P6yVe3AwSUXfLlvBUih ZDKnO4eGICuzqU/D0qv98nx66o9srurcCGjEHVlWIGuqlkBEw3jnYhF4PBNzpvTojLrAgp 4ih1i3hAG8sQSO+NyqdyYh8fMYAX8pQ= Received: by mail-yw1-f182.google.com with SMTP id 00721157ae682-6ca1d6f549eso14992637b3.0 for ; Thu, 29 Aug 2024 17:34:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1724978089; x=1725582889; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=ScuyZghAxUsq77xlIUmB3FT5rIh3r/8m9ZVZaLG04YU=; b=hZYKvsILZWiyvhJP36Xw04yfpjNog358Ci0relXaAcBPJQea1EoUuRzjr6p/0RnkHp ubWG7SWtCt6rEzpcimi10MofqHf5iuGZABNcg4s+3FfGRyw4Pv9XMeZ8XS0I7mzEp3tz mXvy33zqHdGeMiqJtr4MNEww6rntM3ELJqNZZOO4SpSWdTourXtz0mLeA4NbEF+ySvvY nQ5qddz8iTasYdCpJ36FnualHSJTl8YMtV7AtgGkocz3f7ew3IWnX5tWaOZTUlnP7OBK X/5S2RveBJfElPNYh1pXSUKXFmoljswrI4lxf3/ctvn/aU3dl7Vo73DVctzSIaBbJ5Di 4jow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724978089; x=1725582889; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ScuyZghAxUsq77xlIUmB3FT5rIh3r/8m9ZVZaLG04YU=; b=ijSbb2aN1VNlqPm7xZDPg+3eX1QXABJEipt7BcOmbYiaaSbI7WfK+5+q+uK82+/Icd y5tTEOG8vmytvy69o2PIPgZGGByR/st2KDKYxudyZ7h18nM8t2qEAGCiwIsMuzG8V35S MaP5RCnn9pilMccJURpRcFWoYD/eTnwkVoAqPYK1FBc+TQZBE16VTgunQuz1gnccYh0c bajo5BleGYg9dNGB7vc7kmazuzxTBMjB4+PMdDXcVQmzwqJGK54cuPlRvYpR3b5fGFpq FDo+kYPcce5INupSGrGzbcKTikFbjMumEkHgRvYOsjAEU1BpVEL86XrZhc6Qi6qv+zm6 /mRg== X-Forwarded-Encrypted: i=1; AJvYcCVTpk+xJXzCjb7HHHtcF6rnrkDDJO5qU94d9TIfcHJWTJzN1yvZ9OT03+rLaW+vEGHp7hJFoyJ7Bw==@kvack.org X-Gm-Message-State: AOJu0YwKN5Kpyjy9me+Zf0JhyM8etKM6wsCQhu1Ijzbitg8zw+up1JlA 8YzZ9c8MS6Pu1Zlqy7MxjRCkDqEMasrSq0wj0ZwKloz3Wd8f1FfTThoA+0QNQN6NuZEiK+A28nd J/XrSpQi5wNNdMG4ARCFDNUuK8k5lytUYtUPw X-Google-Smtp-Source: AGHT+IEHfgQ7ITmpC9nLKgn2p9q5pKXn+MuPyh1yHF6iMxunaqm5ZCNB9dh715WRCvs589w6aHZcopQzVWBPqtznylA= X-Received: by 2002:a05:690c:7409:b0:6ae:d19f:8b62 with SMTP id 00721157ae682-6d40ff0ca84mr4280747b3.43.1724978089470; Thu, 29 Aug 2024 17:34:49 -0700 (PDT) MIME-Version: 1.0 References: <20240724011037.3671523-1-jthoughton@google.com> <20240724011037.3671523-9-jthoughton@google.com> In-Reply-To: From: James Houghton Date: Thu, 29 Aug 2024 17:34:13 -0700 Message-ID: Subject: Re: [PATCH v6 08/11] KVM: x86: Optimize kvm_{test_,}age_gfn a little bit To: Sean Christopherson Cc: David Matlack , Andrew Morton , Paolo Bonzini , Ankit Agrawal , Axel Rasmussen , Catalin Marinas , David Rientjes , James Morse , Jason Gunthorpe , Jonathan Corbet , Marc Zyngier , Oliver Upton , Raghavendra Rao Ananta , Ryan Roberts , Shaoqin Huang , Suzuki K Poulose , Wei Xu , Will Deacon , Yu Zhao , Zenghui Yu , kvmarm@lists.linux.dev, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: kkx1ybyjj9n9kyhw7a4kr8jwux1ccfta X-Rspamd-Queue-Id: 85C79C0007 X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1724978090-519514 X-HE-Meta: U2FsdGVkX1+qyDiw2qzA75Vr9RM7HN6WmhZuIgfYH75WHaqtG3M1Xl3PoBjns6lwCgvVXvf0eFL81AibEHS5tr7K/i/18LCkGGnVXUpBdhJIed/+IHoUi2zqquyRkDp13ajI+KsYS3ARl3xa/NlGtggiRk4kLz9BTEAKllfKeFQOfxjNiRUZfi19YgB3Z2FrLaahxHxVXcKJJHNoaeSg+oiPaqtxDCyMckAnimvu6B3eUWBzw2MJAKSjloByvGjhwQtNEWBb/RkeELmasATBOYwcdHOeUj5i5d6AiLCi6OkWK2168fxisMPWnpMbJMdiXf1jU9mY/esT6CdUx0xAi/WnYcJK1KIZI6Gkzf096qrKOwYxeHyamhKJMnpuFy/jOh3JqoHZbcdJEZZzn5hsRYpvmgOY2hJASB9lnF5AC/R8w1S8v1LRLGbsOqSkEePWpTvciqlaIBVCV3czx4TNAvkh/TpebCNpFYcO5HQV8hccAn4c5XB7Y0J454lh2fEYypDkBvED2hGQaihLlI2eGRHBCdesZmeZeHSUQmV2NxBMDnjilcuuVM5IhThXhLt+myuvvGrnrvHIjYb6evBOdbZ8J4JyyZZz98Dz1oC7bwtCRrsp9iBDAQaly7Pn7baHpCfY4TDQTn/sYayL1w+v5u/PBJJjudM+sd9QBG7gJYLU01xceEuvhXC7Xq+kWn09IEmHzykAP9rrnoukWawdfUOh4ZWVONZN+bNgXzRtRUxulftyjJ229IHrpt8u2OzShvsxPWtY0rTeUbOwvS7QhQXJvFLaHDwQmOwxfUNVX1iDLh078lOBOOCcQMiwz4hi+QA2dO0j+UxvjkP0Vj1v1QhOHYszs0rUDStdRwVVXHvphNLKvF4Dy6P2zgB9JLCoW9/EM2giWU/5ZwSOf9PUJlpLYtFirFVwiL9odToq8TNq6CQOwSfUOI87wRo8Zpw0mcafqZgMFxMJ+MA0b0W PV67ug7P 2rC9gl7ktZ+NYmJJHhm1djmQvg/fdLb9SsLsZdOD1qD8xDOhQxUnHBMBbTb9UigWZImG7RCrDXXXie8ZLeYyYBJ9V2mfuhizECVv2Uu2PyCA7EI8OwDfOJKIvNhRRBaQZPv1o7rDcRAc2pD19FKgbvXpnapTwNx94h3ZwybQ+3TAbUGLn51GlvyZBg4wSszEi8PJUNTCymrxZr88FwoVKCBVy+4zDYI+rNi0l6RhQZwAbWLueLNregH2RsFxr8ugdhfSx4K7NcLe2yyk= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Fri, Aug 16, 2024 at 6:00=E2=80=AFPM Sean Christopherson wrote: > > On Thu, Jul 25, 2024, David Matlack wrote: > > On 2024-07-24 01:10 AM, James Houghton wrote: > > > Optimize both kvm_age_gfn and kvm_test_age_gfn's interaction with the > > > > nit: Use () when referring to functions. > > > > > shadow MMU by, rather than checking if our memslot has rmaps, check i= f > > > there are any indirect_shadow_pages at all. > > > > What is optimized by checking indirect_shadow_pages instead of > > have_rmaps and what's the benefit? Smells like a premature optimization= . > > Checking indirect_shadow_pages avoids taking mmu_lock for write when KVM = doesn't > currently have shadow MMU pages, but did at some point in the past, where= as > kvm_memslots_have_rmaps() is sticky and will return true forever. Thanks for the clear explanation. > > > Also, for kvm_test_age_gfn, reorder the TDP MMU check to be first. If= we > > > find that the range is young, we do not need to check the shadow MMU. > > > > This should be a separate commit since it's a logically distinct change > > and no dependency on the other change in this commit (other than both > > touch the same function). Done. > > Splitting the commits up will also make it easier to write more specifi= c > > short logs (instead of "optimize a little bit" :) > > +1. Especially code movement and refactoring, e.g. factoring out > tdp_mmu_clear_spte_bits_atomic() would ideally be in a standalone patch t= hat's > dead simple to review. I have now split out the creation of tdp_mmu_clear_spte_bits_atomic() into its own patch. Though I'm not entirely convinced splitting out every refactor like that is always a good thing.