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 4AFDEC4345F for ; Thu, 11 Apr 2024 18:01:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CA2AF6B007B; Thu, 11 Apr 2024 14:01:10 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C51C26B0093; Thu, 11 Apr 2024 14:01:10 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B19B46B0095; Thu, 11 Apr 2024 14:01:10 -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 92ACA6B007B for ; Thu, 11 Apr 2024 14:01:10 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id D9D9380C13 for ; Thu, 11 Apr 2024 18:01:09 +0000 (UTC) X-FDA: 81998017458.13.0C2B79B Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) by imf21.hostedemail.com (Postfix) with ESMTP id E2C321C0023 for ; Thu, 11 Apr 2024 18:01:07 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=ZLTL2pAa; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf21.hostedemail.com: domain of dmatlack@google.com designates 209.85.128.52 as permitted sender) smtp.mailfrom=dmatlack@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1712858468; 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=TFQZlmoBEIaWgT85a+mHB96sryXc4pNLPf5zok3FIIo=; b=rhnTxhG+BRu6K2cod1op9BwedcVW9PWF0A5fW007gIGukL8YQIm+mvIhZSRk86GJTLutGe aY0y03yry6wUF3x65fJlJqzwM26CSIuat6Dy0sjZiUa20GM5nxrlzI7UuWYEqXK33R/fE3 Km0++rMBJjn239TOhv19gjV+8fFgXWk= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=ZLTL2pAa; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf21.hostedemail.com: domain of dmatlack@google.com designates 209.85.128.52 as permitted sender) smtp.mailfrom=dmatlack@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712858468; a=rsa-sha256; cv=none; b=XqgoE8aPJyMMuCn80t2HMmMLrP6MXm+9Oal9FlhJDcxPnbFatCFqDs6SRMWDU5vCWMgl26 CX1N2uJr9GV6RtDh1twqB1bKYcRtwkhyH9rGO5u1VRlyFWRNvoYja5Bk/5HzvDeoCHcxuC Tk7D9PjvYv6r5rYMJEy8XkRA1JgD+uk= Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-416b5f6813cso1574175e9.0 for ; Thu, 11 Apr 2024 11:01:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1712858466; x=1713463266; 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=TFQZlmoBEIaWgT85a+mHB96sryXc4pNLPf5zok3FIIo=; b=ZLTL2pAaBHpW/vYBWqg98AgKsGN7NNSR/8ggwVwfgmJ1ufFoHuf07P1j01CRm5pJZj ZMsya7DjssH0ojSk9poPurg82tNdiZac2wkeEKLKEpZSucfBv2wB92fzpFK7VbK1qDXd ZyWgfaTdYYhwzvucUNKTmERkNw18kdAptTHZ4IyziuQ/1Ome09vVLPbR9AvvLergXcua mdljeHD7a1d9y1QLaY0oYSnUw4bFGpJbLh8/dhHKJ4X0eurmO4H4kT7Oe7PUD6SOY7k/ sCmV4tqp+I3i4vKQ/kHX6BphacLNTvstkkbo5cmzY9eZgL9r5eVqHPBgJWKCa1oZfmac oVQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712858466; x=1713463266; 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=TFQZlmoBEIaWgT85a+mHB96sryXc4pNLPf5zok3FIIo=; b=CIQMtY1D7/P2Ux1h5oDVNyB6yFKGDZXhFv4Ew5B6DwEW2XHJ0ovJo9hhxc6V/Ku1ZN 8oJ3QFXdBcJFRKjrGbPUXLMstX2tbcImc6pPACOwGUmXiJ/cCdRJz4J4zU78ueeI+1y7 r21AmYWqTp5gRqbdeVMYi87GAGMDt4ZfCsgii94db1BvbryOMrX7e/10T6mK7VFYp142 VmAOsG82+dKxoi4e9Bj7UVuWuEY5M/cQSC2pQuCaJqtudq6XX5oDb09byoz7uRjjGSv3 SgA/GPFMyLFDQoUqartwvjn/nkzVPrGpusijPYcmHl/TYIsNSqAT+LV06sXBWVhbUC0n 4qUA== X-Forwarded-Encrypted: i=1; AJvYcCXZuZM5Utmy0b890/ofUxQVZjpBS9iy0ZszPaF2Feb5Q1KGJo2c6B394EjV8rP+lHPe3a0PNckrrFIJTJ9ADKM8R40= X-Gm-Message-State: AOJu0Yzj0sqwhdh2SgqULqWFo2qh2jF2aUHfQekx0nErVmx63M4C3LV7 cSuzvYrtAfdd2qEOrqEzdgy6/9nOZFDsTA5qNevijhoSB/hmeJ6n2GW6Ib6bDWL/uzulM+Spmca yvLubKS3Gb9X8WG01jAtPUkSunoEg7czjhzTk X-Google-Smtp-Source: AGHT+IEl4Iu+H70L5iEuaxVGs2wVMTfN36uwSB9T1kbBSUqJDIrWPvmyrfPoncl+j8yWfnTJVbG6KZ40Dk/wHobSp7A= X-Received: by 2002:a5d:564e:0:b0:343:6551:935 with SMTP id j14-20020a5d564e000000b0034365510935mr235209wrw.66.1712858466173; Thu, 11 Apr 2024 11:01:06 -0700 (PDT) MIME-Version: 1.0 References: <20240401232946.1837665-1-jthoughton@google.com> <20240401232946.1837665-6-jthoughton@google.com> In-Reply-To: From: David Matlack Date: Thu, 11 Apr 2024 11:00:37 -0700 Message-ID: Subject: Re: [PATCH v3 5/7] KVM: x86: Participate in bitmap-based PTE aging 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 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: E2C321C0023 X-Stat-Signature: idfqphh9635kaha535qasnhu9b9sz9wi X-HE-Tag: 1712858467-90703 X-HE-Meta: U2FsdGVkX1/Wgxm18oHfbnlT2uiHnI399WcxKTsE/jyQdie9K7tBYFV6oNWjjhlyMxfx7FM4rJxofFzwbiJDNlFCEGhKjBej0MpsUQv956/FLqbvkA6fOKZMF1R/e3nExMuD/Xi3u9GBUp1TaUAYrmQaYYOnR/GbpecCiZM1s2OO4gzL6pFDFZ64y38b4E4UW6r9SZTlVV7noGUxJ34WxcK0cTORdtnlxP/hoREu7PVeuw4cxaqy6/6cWNKqihEpxbNmFXzSzlQ/QxbwV0btsJvOEYzOULlJeXuqsx1HQ+73iZK4//LbLd4cvqZ/PDgmvC4A4fGCDlroLYhLWKEvHrL7Ou/+AnvOEKMWfLEPBenqrCqX2+La+X7q9GmXkLfxyfvOIUlNEP8pMOgnatrTLDkIzNUGWoi0hTt0s9xtbh3UKFvRWaNdE1xn/zRk4LUxvm+sBeqWCx1vqLMnQ7kBw/p1ZhtNJABYIuaLf2J+F9rm81fg8iLIfuJtAVnxcVzVW/bgXZdrbTTSpBbxgdmiZCaykbL0rNSft4yCkYfa1o32RFoiXlR44R6MTYwuBIec1qEePg45hLs6Tx6osRcAsi9SiZlvxqAGpWKoMMRz761gvWb8w7OfjABKBoplCco8kIZYDqhxWO0hsq0pz3dELMCqn5HcAAFjNfR7vJhfX4cF80/pYRJjaFgjE9A09vwQPM/lLQrv7E7NW5bPLhjHIf3NZ6A8cy+iYEUjGlUZVkuYuxiMOOPmKr7Ca7rrA7qx3p5xwrOiMoFvOaBV8wMIBTyQzbc4gII4fugrE8ZDqTJF+psgIKq5R4UhjZiG2g80F87ZLZFhC46tnjFp7sPxByRrGkuABav5Zp2rOKZiqDf406wuq7EQN5MJi4eBB3Y/Zk+QsJxJWEXtKGMlbm2M5QtPeMNSN1WuKUlDDrrbz1jDwcZgnjIZ5S+BhMSpwCNGEVxrN6z3Exku35nHYp3 aqLmXgKq lARjZDbdBoMgwyUyP9FtgoPAkXGD5jhFhhxWl05x/Rm3ApKhzGAu9X9i6h784cGTUG9Ynye1LBsierA623P/XcyWKPOTzgdHiRqd9BVfG9ZJndY5u3H1lNLy72BBAmVVOujTb56en0J4gLP7tBDiw5slasevbXYg8Xoiz2ukoH1FL8V1gfDp96rhwISWZ++1fGtsLzWpHCEsj69MX42GRI0vumSfIrIbcy0q/CDonB7hUAAbg1uqE1ss6eA== 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, Apr 11, 2024 at 10:28=E2=80=AFAM David Matlack wrote: > > On 2024-04-11 10:08 AM, David Matlack wrote: > > On 2024-04-01 11:29 PM, James Houghton wrote: > > > Only handle the TDP MMU case for now. In other cases, if a bitmap was > > > not provided, fallback to the slowpath that takes mmu_lock, or, if a > > > bitmap was provided, inform the caller that the bitmap is unreliable. > > > > > > Suggested-by: Yu Zhao > > > Signed-off-by: James Houghton > > > --- > > > arch/x86/include/asm/kvm_host.h | 14 ++++++++++++++ > > > arch/x86/kvm/mmu/mmu.c | 16 ++++++++++++++-- > > > arch/x86/kvm/mmu/tdp_mmu.c | 10 +++++++++- > > > 3 files changed, 37 insertions(+), 3 deletions(-) > > > > > > diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/k= vm_host.h > > > index 3b58e2306621..c30918d0887e 100644 > > > --- a/arch/x86/include/asm/kvm_host.h > > > +++ b/arch/x86/include/asm/kvm_host.h > > > @@ -2324,4 +2324,18 @@ int memslot_rmap_alloc(struct kvm_memory_slot = *slot, unsigned long npages); > > > */ > > > #define KVM_EXIT_HYPERCALL_MBZ GENMASK_ULL(31, 1) > > > > > > +#define kvm_arch_prepare_bitmap_age kvm_arch_prepare_bitmap_age > > > +static inline bool kvm_arch_prepare_bitmap_age(struct mmu_notifier *= mn) > > > +{ > > > + /* > > > + * Indicate that we support bitmap-based aging when using the TDP= MMU > > > + * and the accessed bit is available in the TDP page tables. > > > + * > > > + * We have no other preparatory work to do here, so we do not nee= d to > > > + * redefine kvm_arch_finish_bitmap_age(). > > > + */ > > > + return IS_ENABLED(CONFIG_X86_64) && tdp_mmu_enabled > > > + && shadow_accessed_mask; > > > +} > > > + > > > #endif /* _ASM_X86_KVM_HOST_H */ > > > diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c > > > index 992e651540e8..fae1a75750bb 100644 > > > --- a/arch/x86/kvm/mmu/mmu.c > > > +++ b/arch/x86/kvm/mmu/mmu.c > > > @@ -1674,8 +1674,14 @@ bool kvm_age_gfn(struct kvm *kvm, struct kvm_g= fn_range *range) > > > { > > > bool young =3D false; > > > > > > - if (kvm_memslots_have_rmaps(kvm)) > > > + if (kvm_memslots_have_rmaps(kvm)) { > > > + if (range->lockless) { > > > + kvm_age_set_unreliable(range); > > > + return false; > > > + } > > > > If a VM has TDP MMU enabled, supports A/D bits, and is using nested > > virtualization, MGLRU will effectively be blind to all accesses made by > > the VM. > > > > kvm_arch_prepare_bitmap_age() will return true indicating that the > > bitmap is supported. But then kvm_age_gfn() and kvm_test_age_gfn() will > > return false immediately and indicate the bitmap is unreliable because = a > > shadow root is allocate. The notfier will then return > > MMU_NOTIFIER_YOUNG_BITMAP_UNRELIABLE. Ah no, I'm wrong here. Setting args.unreliable causes the notifier to return 0 instead of MMU_NOTIFIER_YOUNG_FAST. MMU_NOTIFIER_YOUNG_BITMAP_UNRELIABLE is used for something else. The control flow of all this and naming of functions and macros is overall confusing. args.unreliable and MMU_NOTIFIER_YOUNG_BITMAP_UNRELIABLE for one. Also I now realize kvm_arch_prepare/finish_bitmap_age() are used even when the bitmap is _not_ provided, so those names are also misleading.