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 6ABF7C5B543 for ; Thu, 5 Jun 2025 17:16:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 015D76B00B0; Thu, 5 Jun 2025 13:16:10 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F07F46B00B8; Thu, 5 Jun 2025 13:16:09 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DD0246B00B9; Thu, 5 Jun 2025 13:16:09 -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 BB1216B00B0 for ; Thu, 5 Jun 2025 13:16:09 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 413E8BE932 for ; Thu, 5 Jun 2025 17:16:09 +0000 (UTC) X-FDA: 83522000058.16.267443C Received: from mail-pg1-f202.google.com (mail-pg1-f202.google.com [209.85.215.202]) by imf11.hostedemail.com (Postfix) with ESMTP id 64F564001B for ; Thu, 5 Jun 2025 17:16:07 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=xj4YkJqM; spf=pass (imf11.hostedemail.com: domain of 31tBBaAsKCMcnpxr4yrB60tt11tyr.p1zyv07A-zzx8npx.14t@flex--ackerleytng.bounces.google.com designates 209.85.215.202 as permitted sender) smtp.mailfrom=31tBBaAsKCMcnpxr4yrB60tt11tyr.p1zyv07A-zzx8npx.14t@flex--ackerleytng.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=1749143767; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=1BvVogHbLCy3WniKJnzNXayCUjBrxVyVRH9sGv66360=; b=WUJsR5PlGlBoTXDJEBd22Z5TBMGQOhmy6pR/a8v2ynv1wM4ZDFSPZF3VCXZ5yUYU3XX+Nd oIRXD22UKLesCr4k3Go+rzHoxvCKgt/mIP8AWJD6i1PKxjaiR49hCTfnVQySJ1RCwtiLE3 vK86OIgVH2qWMZF3qeNmro2UKyEtEX8= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=xj4YkJqM; spf=pass (imf11.hostedemail.com: domain of 31tBBaAsKCMcnpxr4yrB60tt11tyr.p1zyv07A-zzx8npx.14t@flex--ackerleytng.bounces.google.com designates 209.85.215.202 as permitted sender) smtp.mailfrom=31tBBaAsKCMcnpxr4yrB60tt11tyr.p1zyv07A-zzx8npx.14t@flex--ackerleytng.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749143767; a=rsa-sha256; cv=none; b=LY9uPMosHGDX34UJtmaxwtRrKKMpO1god0oSX6Q0Jhoevjmyw5qsv7cNq/4k8XufUXTT6g WZP4HR3zDjb6HU0Ad2KlUpp5tZFLC3VNup+8lc31HgdKBoXmMJFPdas33MBEe+W6tjcm3L T9Gga736aawF96XUuE0bCS3paQ847QU= Received: by mail-pg1-f202.google.com with SMTP id 41be03b00d2f7-b26db9af463so1080127a12.2 for ; Thu, 05 Jun 2025 10:16:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1749143766; x=1749748566; darn=kvack.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=1BvVogHbLCy3WniKJnzNXayCUjBrxVyVRH9sGv66360=; b=xj4YkJqMP4dR5qeWdH5T5PkLF7idkEGczUKtgtRsY2UMPPSZX8qF8p86RilKh6EexC K1ikCpZQtYBeTv0bAmMDh9dV7MYQm9seBhUSQCX09kV++rRIxqBKBzu2tVKi6UXt1nzt 4JurI//JQVyoBvOOLZhvUxf5x6+wNLIk0/rzhGRQ/wLMZPPc++pviZKQIjbTgTuHQ8Ws XzZDwflUeVhucOMdfD5L/vI4D+XjGAlDY10bl45IAT3TxTEowap9uKnanyoYj1zVjrMa 0XTc54jk6s1kmJ0lfA8EOaYNsQnqCDr8u91S/+ZzNGB115Vt4oMWh8IvSEgpOMuZHtfJ lnwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749143766; x=1749748566; h=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=1BvVogHbLCy3WniKJnzNXayCUjBrxVyVRH9sGv66360=; b=qf2gwzhtqa0nV5DzCyP2MJr3hWedn6OxuuAVY53Cv7wdjWAkbIpw5qgQ0n0qO72V34 BBMvUmndifaRA0UWqVdoHd667omstrLemOJbYeTomoM9g5lQ65BpcTO/SwV7saXjXe6u AgKM5EoSyndRODJ3G1uqa0lTJTMj1QBSFts9CnGHQd7XwJWTotVAZkE75z7o05EM+1db HTFlVsWXokEvIuXXuhz2HG48nX4/NBJTrIUOkdcOKfEZwbiQO/E3vBlDGZs+/emygvwT wao8zl+AVZPmyk+oXOCSC6C7YPxIm68cO1OrhPfNP6ucIBjEvtLioBteHIMmCp1/0NU2 M7Ng== X-Forwarded-Encrypted: i=1; AJvYcCW4L1I+GHv44ADGiwO3Kst8englwjc2QfxbnOT+Z+fmnrb6fKjj7GPFAH3gEZUhIpebE9i/i5YTpQ==@kvack.org X-Gm-Message-State: AOJu0Ywq/JTprtIRmF3i6T7hrtU2/SMZPKv7+kTz5OWAL/+ycnDP2hIB svUA8sVllosgTx+oNTqAWXtxqtzfiwqzsoXCLf3sGgrxETHbjAgQOUR7bkYMRH8Y8cl9GU1Vjvg 1zL+MC7E5ojrBqvIrKZNVAqx+jA== X-Google-Smtp-Source: AGHT+IEvH4pPOhC5swS9Ac1ft02M4o++P2gdgLCIEBYmzEPlGyI5fIrpImE4csjfyMJNGLfVLTN7N+dzmJ3OxtE7CA== X-Received: from pfrg4.prod.google.com ([2002:aa7:9f04:0:b0:746:2ae9:24a]) (user=ackerleytng job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:9149:b0:216:1ea0:a51a with SMTP id adf61e73a8af0-21d22c44192mr11686682637.38.1749143766157; Thu, 05 Jun 2025 10:16:06 -0700 (PDT) Date: Thu, 05 Jun 2025 10:16:04 -0700 In-Reply-To: <85ae7dc691c86a1ae78d56d413a1b13b444b57cd.camel@intel.com> Mime-Version: 1.0 References: <7753dc66229663fecea2498cf442a768cb7191ba.1747264138.git.ackerleytng@google.com> <85ae7dc691c86a1ae78d56d413a1b13b444b57cd.camel@intel.com> Message-ID: Subject: Re: [RFC PATCH v2 38/51] KVM: guest_memfd: Split allocator pages for guest_memfd use From: Ackerley Tng To: "Edgecombe, Rick P" , "kvm@vger.kernel.org" , "linux-fsdevel@vger.kernel.org" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , "x86@kernel.org" Cc: "palmer@dabbelt.com" , "pvorel@suse.cz" , "catalin.marinas@arm.com" , "Miao, Jun" , "Shutemov, Kirill" , "pdurrant@amazon.co.uk" , "steven.price@arm.com" , "peterx@redhat.com" , "vbabka@suse.cz" , "jack@suse.cz" , "amoorthy@google.com" , "maz@kernel.org" , "keirf@google.com" , "vkuznets@redhat.com" , "quic_eberman@quicinc.com" , "mail@maciej.szmigiero.name" , "hughd@google.com" , "anthony.yznaga@oracle.com" , "Wang, Wei W" , "Du, Fan" , "Wieczor-Retman, Maciej" , "quic_svaddagi@quicinc.com" , "Hansen, Dave" , "ajones@ventanamicro.com" , "paul.walmsley@sifive.com" , "nsaenz@amazon.es" , "aik@amd.com" , "usama.arif@bytedance.com" , "quic_mnalajal@quicinc.com" , "fvdl@google.com" , "rppt@kernel.org" , "quic_cvanscha@quicinc.com" , "bfoster@redhat.com" , "willy@infradead.org" , "anup@brainfault.org" , "thomas.lendacky@amd.com" , "tabba@google.com" , "mic@digikod.net" , "oliver.upton@linux.dev" , "akpm@linux-foundation.org" , "Zhao, Yan Y" , "binbin.wu@linux.intel.com" , "muchun.song@linux.dev" , "Li, Zhiquan1" , "rientjes@google.com" , "mpe@ellerman.id.au" , "Aktas, Erdem" , "david@redhat.com" , "jgg@ziepe.ca" , "Annapurve, Vishal" , "Xu, Haibo1" , "jhubbard@nvidia.com" , "Yamahata, Isaku" , "jthoughton@google.com" , "will@kernel.org" , "steven.sistare@oracle.com" , "jarkko@kernel.org" , "quic_pheragu@quicinc.com" , "chenhuacai@kernel.org" , "Huang, Kai" , "shuah@kernel.org" , "dwmw@amazon.co.uk" , "pankaj.gupta@amd.com" , "Peng, Chao P" , "nikunj@amd.com" , "Graf, Alexander" , "viro@zeniv.linux.org.uk" , "pbonzini@redhat.com" , "yuzenghui@huawei.com" , "jroedel@suse.de" , "suzuki.poulose@arm.com" , "jgowans@amazon.com" , "Xu, Yilun" , "liam.merwick@oracle.com" , "michael.roth@amd.com" , "quic_tsoni@quicinc.com" , "richard.weiyang@gmail.com" , "Weiny, Ira" , "aou@eecs.berkeley.edu" , "Li, Xiaoyao" , "qperret@google.com" , "kent.overstreet@linux.dev" , "dmatlack@google.com" , "james.morse@arm.com" , "brauner@kernel.org" , "pgonda@google.com" , "quic_pderrin@quicinc.com" , "hch@infradead.org" , "roypat@amazon.co.uk" , "seanjc@google.com" Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 64F564001B X-Stat-Signature: hwws6qdehy83uppub7i4e5e96jj3b3qi X-Rspam-User: X-HE-Tag: 1749143767-659795 X-HE-Meta: U2FsdGVkX19YQ8V+9DsH86AsdgO0bPDP01pNmc8VVrihd8w7Cx18o2X0h1b5QOpsx+7SFI+iZp+5aUIm1DW4BC5DBcaXvKmJly7zLq9XxJyYZZ8WMuinPycTp45gzVQvKmFGcMQads//lEUm6hl7X0u2D5u+r1sm9DwMmpSWyqaGxcEBoDTDKZQBzAGxb9mXppog3uruWGAQAp7AmIHOZNC5V8TFTtygpJER+1cs3+rtA0aQ2FfcBUG0XF/BvfTy5iDtzkrSDqXtvf6ayDHjr7MuPQZxdjEymAsgMm5hFOitOe1r0yNpZ3MMZ0GYXfiYgCDL1EVa6+7gj0dk/JzY7VIii401OJjVFQ39b0Ser10I8Qc2iUnZKCwjCRDEJJVnrkGc3FIT30JdYIWFygj42x4njFmYlYPMpY7mRcpaWFPrbE+fIB0IrqSLALAbTYzCu1kI7Ao5hRwx1JQK6xRTXexT1VQJiHMrg3xmc7BQC6vU4rY3kpJVgDZOzQhpXXfzlRN6uBPV1mc8OCVNudu279tUjB5KcCz8ZQ3zG3fHDchCOOFEy8mC1cnbiL4qxqfLvaVXAYZu+y4HITPYlvCrPo8twbgLcN7LdtJgKirpGAffaafContaHDLL7N1ouBsdUxii+kU0OZbLjcZEP1NWL4qL4biqGHy/bh7nZCJHZEmXk+OQdAV6p8+rQr4voc4vjJSws7xx9wkQXmT+Fyj8MXSQRSmU78PBmmKs3xfT+L7FrKR/49V7ChT315edoPxIApw4scxjHAkm/Z21ErjEixyr01ke8epSOlJUi9g8bkIqJqlqRmopIxvhbphZb3T7m46PsCQdjUS8z8AdJapBkR9idgZSCuV4XTCzVAajUY0fcqF+r7hHigHhwymlFsZXv59aeeQmYI0cCk/NXdvaCKUee8JoZ0T5XlKZ/pHJ+mkISoB+KEu1ZvmG3JfVQ+FT+uGVeG72emyb82zLm5/ pJf2y3dv xX6SbGZp8Nqe22RlmuelNU3thLgKIOYfB/k91m5vG5H567p6gxfowt0INDfQnvm0tKfsd7DEmoZuHs5M/UuFQsArxZMeZwg5yU+rSln4lYAhUnAubTrEDce4TbrxINYT/uMSvRGhS5bwtHOizMjCUDD6HKV6pAJy38IZoZZifj7soj0UCMWSdweMxnosT7IqRmnHaw0gedhFvqxQR2cyXlhCnshe5OJlC5ChQtijJ7ql+BLBDbc06bMB3ZAJkfax0xazVyHW9fjfo8P5v3jqXD9Jvf8DN3hdXNUvplTtqqGLJbLdTVMgRs3aosFj2o1VHCbe66B+oURIhqpuY36TOMy2KHn0kvXhR8JnPW6+scOPQ1GLJHcUHHV45k9PUgLZwmPVtPHXn6Cj85FmRFVyd0PuWX+MJeI8ZAkl83fU/l8BoNBoeAs/TEkD9EvE0aSZ0j1PWOtarDTVHJ3EVAnyi6BKXk3rokg5RArl7b+FrRA0wmEcJhIGrmzNi28/HuGcjWMZrfiqEBv2BnSX0pSMP6GTXfrfnUDD/3gurFIq7SEw/6QR80whCd0uUL2YJoc659oL+5oCP7tssRtI78h9cNN5H23pUGiocQc9tTDsEv/sgE7lLNcRkavEHtUYaaGpUzT2RLFrVWc2IGzEFtjnKE2w0+dNHEx7gtUjKjeuh07KjizExMpDSpiHui36m06K/bLaePJAsJzqcSWeSx6/X5V/OJqXqANgGvGkE 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: "Edgecombe, Rick P" writes: > On Wed, 2025-05-14 at 16:42 -0700, Ackerley Tng wrote: >> + >> +static pgoff_t kvm_gmem_compute_invalidate_bound(struct inode *inode, >> + pgoff_t bound, bool start) >> +{ >> + size_t nr_pages; >> + void *priv; >> + >> + if (!kvm_gmem_has_custom_allocator(inode)) > > General comment - It's a bit unfortunate how kvm_gmem_has_custom_allocator() is > checked all over the place across this series. There are only two allocators > after this, right? So one is implemented with callbacks presumably designed to > fit other allocators, and one has special case logic in guest_memfd.c. > > Did you consider designing struct guestmem_allocator_operations so that it could > encapsulate the special logic for both the existing and new > allocators? I did, yes. I believe it is definitely possible to make standard 4K pages become another allocator too. I would love to clean this up. Not sure if that will be a new series after this one, or part of this one though. > If it > didn't work well, could we expect that a next allocator would actually fit > struct guestmem_allocator_operations? > This was definitely designed to support allocators beyond guestmem_hugetlb, though I won't promise that it will be a perfect fit for future allocators. This is internal to the kernel and this interface can be updated for future allocators though. >> + return bound; >> + >> + priv = kvm_gmem_allocator_private(inode); >> + nr_pages = kvm_gmem_allocator_ops(inode)->nr_pages_in_folio(priv); >> + >> + if (start) >> + return round_down(bound, nr_pages); >> + else >> + return round_up(bound, nr_pages); >> +} >> + >> +static pgoff_t kvm_gmem_compute_invalidate_start(struct inode *inode, >> + pgoff_t bound) >> +{ >> + return kvm_gmem_compute_invalidate_bound(inode, bound, true); >> +} >> + >> +static pgoff_t kvm_gmem_compute_invalidate_end(struct inode *inode, >> + pgoff_t bound) >> +{ >> + return kvm_gmem_compute_invalidate_bound(inode, bound, false); >> +} >> +