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 8F464C5B543 for ; Thu, 5 Jun 2025 17:16:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 062E46B00B9; Thu, 5 Jun 2025 13:16:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0136A6B00BA; Thu, 5 Jun 2025 13:16:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E1DC46B00BB; Thu, 5 Jun 2025 13:16:14 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id C30BB6B00B9 for ; Thu, 5 Jun 2025 13:16:14 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 83CE6C1051 for ; Thu, 5 Jun 2025 17:16:14 +0000 (UTC) X-FDA: 83522000268.24.9E50843 Received: from mail-pf1-f202.google.com (mail-pf1-f202.google.com [209.85.210.202]) by imf11.hostedemail.com (Postfix) with ESMTP id BF3D240013 for ; Thu, 5 Jun 2025 17:16:12 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=2XqoBu+7; spf=pass (imf11.hostedemail.com: domain of 329BBaAsKCMwsu2w93wGB5yy66y3w.u64305CF-442Dsu2.69y@flex--ackerleytng.bounces.google.com designates 209.85.210.202 as permitted sender) smtp.mailfrom=329BBaAsKCMwsu2w93wGB5yy66y3w.u64305CF-442Dsu2.69y@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=1749143772; 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=WW1U8dIDh6ytqr2jQf+s1CfXHIJG7Bp1IXjCpzycLzY0AyktRo5nU6k2j/vYP7WgPn3rSU SdQGaIXE6IRqTvywhHyo1WLaDkRiWqc0gATPAdXrOT+rXdifSD1vZ/JnFAJLxdohwMaM+0 /ooMWf1qf/Nk24WTRZAzzhoosM5o1q4= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=2XqoBu+7; spf=pass (imf11.hostedemail.com: domain of 329BBaAsKCMwsu2w93wGB5yy66y3w.u64305CF-442Dsu2.69y@flex--ackerleytng.bounces.google.com designates 209.85.210.202 as permitted sender) smtp.mailfrom=329BBaAsKCMwsu2w93wGB5yy66y3w.u64305CF-442Dsu2.69y@flex--ackerleytng.bounces.google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749143772; a=rsa-sha256; cv=none; b=LJ+J28Pf45h0pmaHrwrHLulB+1ydMVOB5ivYx69BUCZ2jIs08sNSb9XYKCKQ1slTRe82xk nVnQ6C2AxtNCbZLmk4XlIgZSqZGw5tkO6ozAJOn2qHgP9g2O5iZWETSzS4Xbil5W16olBo sJA07n8q/Wb2mL4tzlXqGb35immgjVo= Received: by mail-pf1-f202.google.com with SMTP id d2e1a72fcca58-73e0094706bso1682442b3a.3 for ; Thu, 05 Jun 2025 10:16:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1749143771; x=1749748571; 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=2XqoBu+7Z49XLSUQuY5Yr4oxNWJx9XG5vSRWyr5bjG/EGOcLpn9ccEbWxRY/JvsDvY Q8nWi2/EMXMvSQynQnlv2J3z6JdaQUzHWm3pD9HBfbLWv3CHjofGBUsipuxvSJg+mD/s veJZjSBU5oKseFHkDU1vLwbtYtfxpEbg2i/ysnXAW4fIMeYZzcLhjpQKgjxyM/ZVl945 aNju5xmG+xKqErMLz7TyRwd10ZPbQwPYUvfKkzv7LqpavH0zbynd1Z158g9P1xU8b98O xuh+NlLo8wJr13+KCi+4Pp+ajVd8ABfpCLk/or/ad5Vy9G/WrEm5SxXTxS25ZRdgMKr9 0dpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749143771; x=1749748571; 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=sZciTdMvYQD/9s5jsyirxXK/0ZiGcKPisylYuJb++NeQvC80amqSRMh7al9y403Qlu 0f/LEXbEGhZz08kuqhssxyGXqv+Mk4IwosTdX4pD+HQCUQDhOlprGNOVOGX7O8ezxBTV mZKR0u690gwXhT+kVUS0EOf81no80ewYrwuki4X7umvHzv8TOWOuSkNPxtmL3OydUQBV jS3CO+HL+xgSzYzbQav+I+DWS37LtMMhHmGfgrqiIHDKI2HgZ53+u4ttOKM9c7otKJyM Ae/cZkb5AkhlTQxptJFrN5+FcvKa/rvwxbZYRD4aAi45DX8WItR4ANXMG6GlMXe/u1bm oUjA== X-Forwarded-Encrypted: i=1; AJvYcCUWzMI8KHzQOWjLK7T1VVmIwdtwmBh14dGhdL26WPbH56OhJn6sfic4oYNB/t7sLF6YuQQdyYWTJQ==@kvack.org X-Gm-Message-State: AOJu0YwRuJeoRQxPcj9gNfgEsUm7eiSUukxw6oI8rb0UYSdURa/WoLPq Kl9B+yf+6PC1GHd7Xrq22KcRrEIoMc7xcaPxcFyYThsYvAgbwNIYU8w2CFvg05rPAbWHwJwrVYS kK2NCJG/4nYlaDNK4S5mcoT3+fw== X-Google-Smtp-Source: AGHT+IHsVYh0GgG5BEiO5ED3ww8e04bKedQW6s8IFetr0LVufC4TvNmMIrwHvA/YCfrSoO0Jh0Izl6xHqaQ0nKL6UA== X-Received: from pfef13.prod.google.com ([2002:a05:6a00:228d:b0:746:301b:10ca]) (user=ackerleytng job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a00:21d3:b0:746:3200:5f8 with SMTP id d2e1a72fcca58-74827f304f8mr618930b3a.22.1749143771256; Thu, 05 Jun 2025 10:16:11 -0700 (PDT) Date: Thu, 05 Jun 2025 10:16:09 -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-Queue-Id: BF3D240013 X-Stat-Signature: hwws6qdehy83uppub7i4e5e96jj3b3qi X-Rspam-User: X-Rspamd-Server: rspam07 X-HE-Tag: 1749143772-965836 X-HE-Meta: U2FsdGVkX18G4EY6mJbTav3ZfyiOa1qqhWeiEltLnm2purBdjv1GfL8t3dxykfX1XK0Kadu1vKEnESoTa7ZmStsFQAtEltpQStABCNrHfcs5GbgCeoEGeX6aT5XfzJxrgLBRoj5BSv4/AF+CNXhTxgU6zd2VGXKxZm5lQJ8lEGqs0jGwTGlm2x7TLpFhvrieytTaBh/4fRF4FXDVQ12ktK02k502f6kprZBgKj3fdUG5A8I7P4sLIXOW5ET54x+ToHnyJTNM+liTYW75rsVAZ5/v5LejgSH/y4bip5F5zcNcHyQdZV/b8Lck21O+g+2bqqLjwwG+GgriarPdBJ/kFOMJq1YdY22qX9uLPaa7L4Z12c+wYwvUwdxXcY7/Cdr1c5vb+Xqst8WxN8AgmA7+OicKuISuIikVhPXWZmObV0Bz8OEa/o7J5vaNGrMdbWmvYID2oJHpCGtjBmr2PloKtprNbInWgDVe7swBEs9YSTjYavBMhXRG6GkDvO0/gX20HdGxKPuhIcj9VM3PmWbFi7DZsKGj5wB+Y+JIsBUjVtkbVoKOmlsou0hWo6DUG3epVFd+cdIUl4f1RZupeL6Lqj6K3OtcEf9DTKMILDi1Li+mQvrfbX+4CpQqIqSGVwKq+w2W7hQY8uu7j0FINeI/iUw4iDioJypZHE8GrQ46l+gQ54U4T8LvZscas/IK+4ZZeG3XMHAS+jGljNXRJh0c8Sco3aDH7SZiffT9mNgkPgo6/KJeg6XCHGt9ieMNFU0F8alWjF3Gh11wsDOJmzJqV4ZRuvDYMkxOP3FUx0gOOF6dbvPl1cv9t3aRabvByMKeYbQv6uglul8UANONzErU8QZqHAYbF9mlH5f5JlbmB/dOVqicEX0SwlOq5WPUc4n7HgvIHAmHXeC1UQCzEGabGdqTIx3dmeWd5vljuqcQMLFJKMXBvgtovLy3wZU0kRylqvustVILt422scSuBr1 Un/634Tj VUkZb3MeoSMLrnpJHpYv0wDVabvo7becI7Ul6GR6JB6Pu+Gh9UvGGV95lXHjFVrgyyh4g8V9G3FFO+1aPsKcQjWwdj7UB/KUVHsgpoD5ARV3hvYah8uGLmdDVBu2SgagtAdBrLtlIXFvXO4MYn1Omn9yAVeWuu5jlycQTvt5sneXHxn/Eh2YU2azfW0umATJtepjPOUcbi+R1upBMWbouiKkgPQ6Uk378FSxGHQzQZ3JQbIhveKvdyMJgHJ0Rpispoz2fFmCSC/7/Kb7EslOr2xMyfKZroikfXr2OcoWzuhElKQzCMZBV26P+mNQqk8d9x1h0WZcqVzV+1lcPs6HTuyLSN4cbxncEaoNjjccXuYiHbizZCOAWUkFpTgzN4eEdylsBtIfgmr/QjcPzNP9mO/k7aSwpM8vvYBuXf3t8BfEwsmHLYpBULs3+cEyYP782sHRsjCJ6Ji1jQgI54DwEnr297xe38MXhpJ/c7mx/WEeLfIdsq/lC+7s1DklAT7NfsYTLmHrOBLSfY6jmO/eI+eT/C18uUG1zbyHnKs2yYIzxuFc4WJWdth/i0Wl7gqHxOjwyzVRkMXR66gw73VQ5eIR5plfN5P6o+MRuig+fno5gvpp5T5xPx46mcSnmhrqbWnN+Yj7RtfQMiLnY1ZKLKAeT6njAYUnD6IuzW5VSg7mK/njQ7l1VhHCp5Hubl1lltJhmbqwpK3kDEMJ9ikReh1uBfcaDJ1A44UTj 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); >> +} >> +