Received: by 2002:ab2:6203:0:b0:1f5:f2ab:c469 with SMTP id o3csp899560lqt; Fri, 19 Apr 2024 14:07:15 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCU/ZUGzHENi7bDoZqzGtJ4xE1bF6koqEbTrWa4x9JSzyUoEOV/Plx/ttR9WY8bRYAz/WdzN7omLFptuY0yx31uzabvU88yZ0Z8bmIZCUA== X-Google-Smtp-Source: AGHT+IFpBWPyuy35ctsw3TdkLxILxdK3n5PN9r264AsLyJctc7WfAcr679rCWNBD6icFH9KTb2Lh X-Received: by 2002:a05:6a00:2d1e:b0:6ed:1012:9572 with SMTP id fa30-20020a056a002d1e00b006ed10129572mr4568487pfb.29.1713560835006; Fri, 19 Apr 2024 14:07:15 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1713560834; cv=pass; d=google.com; s=arc-20160816; b=zCV/3OuoanwLQ0K9CXT9iAN0obzK0DfbTk2ckFQI+x57204WVoZS/xCn57Zf8pdxIe uJDVk66BLhu5v8bwnJfjfQmJ8xo9SqI9ObhVko0Wls4n1roERlKzH6a7j34g7LvDzf/G qEYdkh1PSCxpKwVPhaxPujRJBqozOJ2ErsI9xJKQ2uPblazQ/9u6C1ON+3An8qpWA/OV DHV7OOkGQI0ukWe5BKodpCUt38CYiNVVfCns4OsRLKJgwIUg1kkpzY3I53vw6JclXwjF jjzptaSKze6fBOChwN9LNzal65up61q/DlDQGH3cqTNRjpEwQ4Ko7Ppdi2kmD2slyfnK /Niw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:list-unsubscribe:list-subscribe:list-id:precedence :references:message-id:subject:cc:to:from:date:dkim-signature; bh=vDccPRw3/PnxvI5b+QrmqH79otR7qScpzAtcfP56j+c=; fh=xhS/4R7Y77ZwCbiPW3f3HeuSS5KXggtiRGFKZbAQyWQ=; b=fV6mL/YwnybjJFpWhCEYq/94k1VYkX472qOnhOCLcPlbKBrWsn8cFeJQQuKVjelaQ4 aiUHVvA52rdRPnumXgiJrntINsJtnOtPboh4mtSgEaAAWg9cfs5PBGVWw3MMp//fcrIT ZB5g9cjE87RfoIOFOijw0L0EiSZJnndOGxTAn24YpmmCB728d4sTSYqthf7SvjoCUH66 UsKIuykwWr3VPHCAyhzMLR4g56bWczVp73fF80d26FxjYwGiLCnkgr1URm80QvknXEeR foD0UQfjX05K3r/w7DK6hqDmI5w9P/hsXOKiCw0uygb0Ob0s/mPSwfooGkVzEVt8rLMm 0SYA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=UyiD4e+s; arc=pass (i=1 spf=pass spfdomain=google.com dkim=pass dkdomain=google.com dmarc=pass fromdomain=google.com); spf=pass (google.com: domain of linux-kernel+bounces-151951-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-151951-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id s16-20020a056a00179000b006ecf477780fsi3980560pfg.146.2024.04.19.14.07.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 19 Apr 2024 14:07:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-151951-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=UyiD4e+s; arc=pass (i=1 spf=pass spfdomain=google.com dkim=pass dkdomain=google.com dmarc=pass fromdomain=google.com); spf=pass (google.com: domain of linux-kernel+bounces-151951-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-151951-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 8CBDD281984 for ; Fri, 19 Apr 2024 21:07:14 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D32A538F87; Fri, 19 Apr 2024 21:07:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="UyiD4e+s" Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9CA542BAFA for ; Fri, 19 Apr 2024 21:07:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.176 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713560824; cv=none; b=UaB64xUcNgT3N3qiwkLiuTNDGfuJQ4zMGnhfKsE/FoGcpCQ9Z9/rc+oqsDwU7iH/+5jWhr2rm2vuuE4t4VWDL95W6gViBLbXhUOzn3qEOtVEKogtQCkfIkqO5ijq1fddNSNktl/hirXQTFccLmPnpc48ZrCmgL6VV4CBDR3r4Wo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1713560824; c=relaxed/simple; bh=5/awzNU8HVXAcVpqIF8P0kyvvgiFFv7R/U2Ux5fpBds=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=iAne9h+lTt+VArarF2ilZuqwsvU8wstpgArWlJLPwLCy8AWTNG0BwU26099E3vVwZ0mplO3fnwoekmOjpfcxEmt7LRQtntD2tsqEPowi+gef/LxxOLutGWlvTllVJbwiXYhhkvi6VVuULcE0M+K8cz1ZIiGQ6p7bdh4YdAbgOTg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=UyiD4e+s; arc=none smtp.client-ip=209.85.210.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=google.com Received: by mail-pf1-f176.google.com with SMTP id d2e1a72fcca58-6f103b541aeso310159b3a.3 for ; Fri, 19 Apr 2024 14:07:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1713560823; x=1714165623; darn=vger.kernel.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=vDccPRw3/PnxvI5b+QrmqH79otR7qScpzAtcfP56j+c=; b=UyiD4e+sYdCmol3yECapDAUgCKkJS+GjtQB7oqalmWfuAOP8IAuAu7+AGWTa6yIHGO IAL3VvXD34IKQVK+65JzElC+D4aIE1kN639i9j849/GvV3xnIE/aM9EINQjDCL5zBYrP P6bKXJYYdgnNacSEePA5KgKZwDNzMKI65+Cjec+++BrNxUcGO4/ztADow+ql7plb0VZb /FqbS3Fgp4U5gdMEU6k1NBvvv748oLHpKRbxV+bEQfpfoPicYxle5cVYHv3xtSJ8bpKT 6AnfHHKEtPT6WvTXnyNnzrcl11uOzPvPBcYZ+wWnneyZsptuushQPIMDQhOu1lFpmAcV HZ2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713560823; x=1714165623; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=vDccPRw3/PnxvI5b+QrmqH79otR7qScpzAtcfP56j+c=; b=bmfHe/vZ/xBM2zO3Fj3QSDgORE0UDFB37DIsKTi61VMJ2z8Jf/5Nx7b6dGO/uz3DDh YD1I3TR39sJo9+pykS2PDZAATbidiC+km+ppuFVdHIg7tGyL7BsdLnEnNo+fqNPRitfA YX0TBVjaq5z0GYK3sDsN3mPAX8E1ZXvBXRQ3pDnMXSG9DVzZmz3rxARv6AFK+SFzWtQF QtG8cAsajVKqnQaQ2xMF+0pZTi9dA8nCPzi/+TUoNAwxuilWZV95ilJZaaycOFooo/+y xCF8YtLHVciM+BzFBnH35+LpPaPeluD/IGkZaManaMqql56Y8jqSmXXw6DwF9HSJuqoK z55Q== X-Forwarded-Encrypted: i=1; AJvYcCVBSkITRKWClnNpafb7yWB1OAkWsnCY0zC26e2LepAJdCinRjWC+LRzxzwmhjutR6bpPvouqt5PfKycxQX8WTTceghVE6w0/kNSCF/o X-Gm-Message-State: AOJu0Yydzr5v5mmsyXl8X6EHtcCxNsSm7OwO514Slj3tS6uh/5/Lralx wvC+UsZ2RJ4GYEW+e1Yj6wjcql11uMT6WUsfB63XIy3SNH0nSJ9hFvWZU/jeOA== X-Received: by 2002:a05:6a21:6da2:b0:1a3:63fa:f760 with SMTP id wl34-20020a056a216da200b001a363faf760mr4253434pzb.14.1713560822638; Fri, 19 Apr 2024 14:07:02 -0700 (PDT) Received: from google.com (210.73.125.34.bc.googleusercontent.com. [34.125.73.210]) by smtp.gmail.com with ESMTPSA id go20-20020a056a003b1400b006e6233563cesm3661623pfb.218.2024.04.19.14.07.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 19 Apr 2024 14:07:01 -0700 (PDT) Date: Fri, 19 Apr 2024 14:06:56 -0700 From: David Matlack To: James Houghton Cc: Andrew Morton , Paolo Bonzini , Yu Zhao , Marc Zyngier , Oliver Upton , Sean Christopherson , Jonathan Corbet , James Morse , Suzuki K Poulose , Zenghui Yu , Catalin Marinas , Will Deacon , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" , Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Shaoqin Huang , Gavin Shan , Ricardo Koller , Raghavendra Rao Ananta , Ryan Roberts , David Rientjes , Axel Rasmussen , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, kvm@vger.kernel.org, linux-mm@kvack.org, linux-trace-kernel@vger.kernel.org Subject: Re: [PATCH v3 5/7] KVM: x86: Participate in bitmap-based PTE aging Message-ID: References: <20240401232946.1837665-1-jthoughton@google.com> <20240401232946.1837665-6-jthoughton@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On 2024-04-19 01:47 PM, James Houghton wrote: > On Thu, Apr 11, 2024 at 10:28 AM David Matlack wrote: > > On 2024-04-11 10:08 AM, David Matlack wrote: > > bool kvm_age_gfn(struct kvm *kvm, struct kvm_gfn_range *range) > > { > > bool young = false; > > > > if (!range->arg.metadata->bitmap && kvm_memslots_have_rmaps(kvm)) > > young = kvm_handle_gfn_range(kvm, range, kvm_age_rmap); > > > > if (tdp_mmu_enabled) > > young |= kvm_tdp_mmu_age_gfn_range(kvm, range); > > > > return young; > > } > > > > bool kvm_test_age_gfn(struct kvm *kvm, struct kvm_gfn_range *range) > > { > > bool young = false; > > > > if (!range->arg.metadata->bitmap && kvm_memslots_have_rmaps(kvm)) > > young = kvm_handle_gfn_range(kvm, range, kvm_test_age_rmap); > > > > if (tdp_mmu_enabled) > > young |= kvm_tdp_mmu_test_age_gfn(kvm, range); > > > > return young; > > > Yeah I think this is the right thing to do. Given your other > suggestions (on patch 3), I think this will look something like this > -- let me know if I've misunderstood something: > > bool check_rmap = !bitmap && kvm_memslot_have_rmaps(kvm); > > if (check_rmap) > KVM_MMU_LOCK(kvm); > > rcu_read_lock(); // perhaps only do this when we don't take the MMU lock? > > if (check_rmap) > kvm_handle_gfn_range(/* ... */ kvm_test_age_rmap) > > if (tdp_mmu_enabled) > kvm_tdp_mmu_test_age_gfn() // modified to be RCU-safe > > rcu_read_unlock(); > if (check_rmap) > KVM_MMU_UNLOCK(kvm); I was thinking a little different. If you follow my suggestion to first make the TDP MMU aging lockless, you'll end up with something like this prior to adding bitmap support (note: the comments are just for demonstrative purposes): bool kvm_age_gfn(struct kvm *kvm, struct kvm_gfn_range *range) { bool young = false; /* Shadow MMU aging holds write-lock. */ if (kvm_memslots_have_rmaps(kvm)) { write_lock(&kvm->mmu_lock); young = kvm_handle_gfn_range(kvm, range, kvm_age_rmap); write_unlock(&kvm->mmu_lock); } /* TDM MMU aging is lockless. */ if (tdp_mmu_enabled) young |= kvm_tdp_mmu_age_gfn_range(kvm, range); return young; } Then when you add bitmap support it would look something like this: bool kvm_age_gfn(struct kvm *kvm, struct kvm_gfn_range *range) { unsigned long *bitmap = range->arg.metadata->bitmap; bool young = false; /* SHadow MMU aging holds write-lock and does not support bitmap. */ if (kvm_memslots_have_rmaps(kvm) && !bitmap) { write_lock(&kvm->mmu_lock); young = kvm_handle_gfn_range(kvm, range, kvm_age_rmap); write_unlock(&kvm->mmu_lock); } /* TDM MMU aging is lockless and supports bitmap. */ if (tdp_mmu_enabled) young |= kvm_tdp_mmu_age_gfn_range(kvm, range); return young; } rcu_read_lock/unlock() would be called in kvm_tdp_mmu_age_gfn_range(). That brings up a question I've been wondering about. If KVM only advertises support for the bitmap lookaround when shadow roots are not allocated, does that mean MGLRU will be blind to accesses made by L2 when nested virtualization is enabled? And does that mean the Linux MM will think all L2 memory is cold (i.e. good candidate for swapping) because it isn't seeing accesses made by L2?