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 65A41CA0ED2 for ; Fri, 30 Aug 2024 03:48:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E1BB36B0085; Thu, 29 Aug 2024 23:48:04 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id DA49E6B0088; Thu, 29 Aug 2024 23:48:04 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C451E6B0089; Thu, 29 Aug 2024 23:48:04 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id A08A76B0085 for ; Thu, 29 Aug 2024 23:48:04 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 187EDA0CD9 for ; Fri, 30 Aug 2024 03:48:04 +0000 (UTC) X-FDA: 82507528488.02.AFF4961 Received: from mail-pl1-f201.google.com (mail-pl1-f201.google.com [209.85.214.201]) by imf10.hostedemail.com (Postfix) with ESMTP id 40E76C0003 for ; Fri, 30 Aug 2024 03:48:02 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=hEbswFX1; spf=pass (imf10.hostedemail.com: domain of 38EDRZgYKCPMnZVieXbjjbgZ.Xjhgdips-hhfqVXf.jmb@flex--seanjc.bounces.google.com designates 209.85.214.201 as permitted sender) smtp.mailfrom=38EDRZgYKCPMnZVieXbjjbgZ.Xjhgdips-hhfqVXf.jmb@flex--seanjc.bounces.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=1724989592; 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=7oDkTMtkbW8nQHJkC6FNRU/4bZFr8mldBmCcZx8NdnI=; b=pBxdEfiGOjuVeQV+ixnExgLYrPjlrwpK9mPNmmLhyA9DsNOzpwQml6xcLxNGJBtOFju4yM zGdKkN/CKsBK79kipKSmvTsAbucjyUZ6C/JqgaFrzfUQAZlA+geHUP+mitsSNnM0DnwibO E4q7PpMmJejUXyv6HkofrrjdRb5HTPk= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724989592; a=rsa-sha256; cv=none; b=WcmNRso/TzLz+axDz9FEJTmi+ythlYTbKuIR5rwa8FcO1nf+mVJ6hZnt8xxCWPqd2tzXx7 qtIwAohJvrphyUTVoO3fcM/v7NlS3IKDwnBJHoykdQpIVsfnB4RQE2K47jGvqrg0K9Zbvl w/2o0Wop4EM3AiaQpsZNuSQWzxiY3hY= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=hEbswFX1; spf=pass (imf10.hostedemail.com: domain of 38EDRZgYKCPMnZVieXbjjbgZ.Xjhgdips-hhfqVXf.jmb@flex--seanjc.bounces.google.com designates 209.85.214.201 as permitted sender) smtp.mailfrom=38EDRZgYKCPMnZVieXbjjbgZ.Xjhgdips-hhfqVXf.jmb@flex--seanjc.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-pl1-f201.google.com with SMTP id d9443c01a7336-201f464e3e8so14664075ad.3 for ; Thu, 29 Aug 2024 20:48:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1724989681; x=1725594481; darn=kvack.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=7oDkTMtkbW8nQHJkC6FNRU/4bZFr8mldBmCcZx8NdnI=; b=hEbswFX1ec5zWKlstxgH+ALopv7UpOFvctjlDdNJ6iP/xzTMvNxsVfC0CbINYTfIZg mINPph/glvTlMUVmCXBCzyCtmL6RzxXNsrupi0v5NMyI5I8zawgYUq77Xy2cgYcibtm+ JwK4rJLBpK88czSRTZUFwnkWrCxhm0aXb4laM9mxTGEGzM/KPb9k4jv94ZscQGd0EXhu ccTfzruhs/29ChkOIzffbpcN4JBnpI8nQ5BFaM03uDnSll4L49h8Q9+LwZkG/Dbpoi8M kLDOTTwn5gbI9ndRMcDV5jCjyBo1OOpE/voYoRStigl90xjOxMhaHsTBh/uGU2uqj8HC pjfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724989681; x=1725594481; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=7oDkTMtkbW8nQHJkC6FNRU/4bZFr8mldBmCcZx8NdnI=; b=UZg3EBxc18RNWMeP2NVv84rRB6rAzZZA5LycB+bM2tt2dV5s8XnFpBANhCoUbqqEQd M0d4g4FW9GVdJtYjqRAZIfQ4pHv4PoaQPG/4p7yZzRWaTQumA4WrbrANOVBpFFlSi75F 3RdL4Pch1YhVFFhZlYgbP9Yy/jIvLmWvyWVFHE8YXvLxG5vqUpEBN7rCiCqKElhKqlc4 ayIlRcNqzY95CxTPcdlOzNDHDIFR3RMpHIKofjAk2G0GU4qcUKlfbDb5z7W+hncrFM5P xq78n8XTsFU5PIVPADKi2Rsd0fmW9JpCfNOGjsNKk8Hu2yDf95+pG4/scLm1zo1NiwkC PQLw== X-Forwarded-Encrypted: i=1; AJvYcCUew6KNUjjXuxxnmjwxPracqbTzlqAlzphQ6ee2QPN452H80LIbquJZ84EtLNSunl0c5QTLvDQ0nw==@kvack.org X-Gm-Message-State: AOJu0YwnxaljSJgan5em/fCHLQl8VvA1uHJXnfN2g5CFktN954Gvs88n GJPCaswVoEvk8JIr6uiNW1zlMprzsjcC8TtMvwKR0GtRvF9tPSZDRMlZz2c68CK+vJqP/1aBIva nRw== X-Google-Smtp-Source: AGHT+IFuJaHoFSCV5+8BWRf+q8zKeUDxkgIb0cxDbWq2MCPl2PJvwzOB/7AGr0dtEc/kwU7osl3dzfbQCdc= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:902:f54c:b0:1ff:4618:36dd with SMTP id d9443c01a7336-20527612dc9mr665745ad.1.1724989680602; Thu, 29 Aug 2024 20:48:00 -0700 (PDT) Date: Thu, 29 Aug 2024 20:47:59 -0700 In-Reply-To: Mime-Version: 1.0 References: <20240724011037.3671523-1-jthoughton@google.com> <20240724011037.3671523-3-jthoughton@google.com> Message-ID: Subject: Re: [PATCH v6 02/11] KVM: x86: Relax locking for kvm_test_age_gfn and kvm_age_gfn From: Sean Christopherson To: James Houghton Cc: Andrew Morton , Paolo Bonzini , Ankit Agrawal , Axel Rasmussen , Catalin Marinas , David Matlack , 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-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 40E76C0003 X-Stat-Signature: qa7ixqythqc5d3cdus11c6kyeazosihj X-HE-Tag: 1724989682-974561 X-HE-Meta: U2FsdGVkX181AcyvBMuE5qxGql9L24YELbKUoMAB8wqzQXJF4S7N3WzzPb6pXQRzc8E4WKjB/CzruuDFgwG18WCQUoCv8OVxY7FaFPhKZRaSvckIjUeIzVmnGz6/rMBvKOboMzoxEnf4YeWoBwWqMhehr8siModm9WftNI+j+qOJmaKFTvWdGttQon6Are/bc9eXb+vQQSgBWy8yqneGAjYWj1h0jLZOeFBPNIVzwFIxXb4UQ584k51OqlYFzcSVQMxG0Zzp9XN3eibjgh1QK5kM/iRtRh5wBjf3Didx7uHzMZ9cnZjz/9UgG0Pnrr/gNzQ7uHeU8BRSEpWO21BoKQLyTFL+UVw5QEl/RZw/WFkcVdk24WpfISdesQIpNBIY++3gJk7G7KPxGVUTI1xvhMfze2y2wRcaR4xiHAGlisbkrvRPG0QhSWFBlYTzpNU+hEEHlbxfeEpEvDDUqkDSxJuWqHiBfv3ORbYj5BW7d1xWfDRE+BRzey/SedpmAwBzMEllymvVqS9Y0mXXxbaw6hvoLh8Ns4I3Da2T5J/vf55dHXMGtmiLfrrp/laA+8f0kmWS12a31wEqShLZwuWjjyvbenRGrsn4IgLGsl6IPMsfsXweyTE/kiw20f12IOC10bjmvnoLUm4vg7SzuIdgoc+hxT33lZLbOB5WbdvfI2SmP3U+x8pqRTyICw+52IpyBPCxEBR3VhXfC7AbQHO3MamHrod+2qWOG8n3DCnt2lDCePggV/+5dW3SoyXU273l9sMOaBnH8a2p53lgZDCLsltZa7+hTvnJzJjA0hBmaFbwyI49XguQDhtRUapm7p4RjOd0yGID+SWv96eVIcPPEpnGva4FVJ7toWYjwPh7MHOE6SdgewIs6zkSLD38Favi/j+we16rLDRVEZcP0LWGosSeJeDndbYGUWUymjXnL4WL9az/YBYnXpb2s8F3egE7UpdSMUvHgfcStYmjKAb 62GXdApn vwOCvSF505/CqcrVBZKG9EDwmbjDD8Ii5mHdMCPaBPg14dIvLr4kUN96/FQu0o5/VvXtyUVbNhwOVL5NG4jl4GY7rgVnaiuTyShLu2g38Zp5SkXZCHgc8bj0R8sQCFUvS0Og2TWjMIPWEWFuTSu9qbMEmWgXlC8dyqqREaIoSlCagAr/NkAhFULMt3N7nCd7mG329wTdrVZFEEYIY/1meEwYjgaXUNN3JyF+795hmzn3shQ2mCkohIX3GgT3G/CNK+53/SPxROvVXdSWYA9NoWQn6mIXrmvnSPECXImVlUAToU61pIEZ9HhafleqTnDPfczTWvhz9KDDCEqjHVFNnCuW1MRAg7Zcaup0hS4RdRQMF0mC8/y8Bwriq519V/iOPNETKkCY5r/N9oophQ3MMxNo7jrp3SPCYGWxqI59ShIGvwPWMZK9yY3a+wtt1CZUu8XVU1V7Ja1dnWfUrRE++/98OkfIw7J5a9g3oJ8W/2CPOcL9CUZHVPmy3QXv8nPaMdjjuzats9DFf8DFoFe7rdDPdHtuwoPjaJmktRg7+/Gh+DCRn+5AElaTrFkczfLvrcB5gjqNIpOIYhIlKSGOPU5a0ARS01AK1dAOQXJ0Cbrz9bvFF7Z0oCOdsMQrgoRwRN7/ncTvU20HXfwbXO54RGoZzic7MO1GrRyMbEucsswioYI0= 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 Thu, Aug 29, 2024, James Houghton wrote: > On Fri, Aug 16, 2024 at 6:05=E2=80=AFPM Sean Christopherson wrote: > > > +static __always_inline bool kvm_tdp_mmu_handle_gfn_lockless( > > > + struct kvm *kvm, > > > + struct kvm_gfn_range *range, > > > + tdp_handler_t handler) > > > > Please burn all the Google3 from your brain, and code ;-) >=20 > I indented this way to avoid going past the 80 character limit. I've > adjusted it to be more like the other functions in this file. >=20 > Perhaps I should put `static __always_inline bool` on its own line? Noooo. Do not wrap before the function name. Linus has a nice explanation/= rant on this[1]. In this case, I'm pretty sure you can avoid the helper and simply handle al= l aging paths in a single API, e.g. similar to what I proposed for the shadow MMU[2= ]. [1] https://lore.kernel.org/all/CAHk-=3DwjoLAYG446ZNHfg=3DGhjSY6nFmuB_wA8fY= d5iLBNXjo9Bw@mail.gmail.com [2] https://lore.kernel.org/all/20240809194335.1726916-16-seanjc@google.com > > > /* > > > * Mark the SPTEs range of GFNs [start, end) unaccessed and return n= on-zero > > > * if any of the GFNs in the range have been accessed. > > > @@ -1237,28 +1272,30 @@ static bool age_gfn_range(struct kvm *kvm, st= ruct tdp_iter *iter, > > > { > > > u64 new_spte; > > > > > > +retry: > > > /* If we have a non-accessed entry we don't need to change the = pte. */ > > > if (!is_accessed_spte(iter->old_spte)) > > > return false; > > > > > > if (spte_ad_enabled(iter->old_spte)) { > > > - iter->old_spte =3D tdp_mmu_clear_spte_bits(iter->sptep, > > > - iter->old_spte= , > > > - shadow_accesse= d_mask, > > > - iter->level); > > > + iter->old_spte =3D tdp_mmu_clear_spte_bits_atomic(iter-= >sptep, > > > + shadow_accessed_mask); > > > new_spte =3D iter->old_spte & ~shadow_accessed_mask; > > > } else { > > > - /* > > > - * Capture the dirty status of the page, so that it doe= sn't get > > > - * lost when the SPTE is marked for access tracking. > > > - */ > > > + new_spte =3D mark_spte_for_access_track(iter->old_spte)= ; > > > + if (__tdp_mmu_set_spte_atomic(iter, new_spte)) { > > > + /* > > > + * The cmpxchg failed. If the spte is still a > > > + * last-level spte, we can safely retry. > > > + */ > > > + if (is_shadow_present_pte(iter->old_spte) && > > > + is_last_spte(iter->old_spte, iter->level)) > > > + goto retry; > > > > Do we have a feel for how often conflicts actually happen? I.e. is it = worth > > retrying and having to worry about infinite loops, however improbable t= hey may > > be? >=20 > I'm not sure how common this is. I think it's probably better not to > retry actually. If the cmpxchg fails, this spte is probably young > anyway, so I can just `return true` instead of potentially retrying. > This is all best-effort anyway. +1