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 48159C3ABC9 for ; Wed, 21 May 2025 05:23:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 261976B0092; Wed, 21 May 2025 01:23:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 12CD56B0098; Wed, 21 May 2025 01:23:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E9A6A6B0095; Wed, 21 May 2025 01:23:31 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id C23556B0092 for ; Wed, 21 May 2025 01:23:31 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 21FC257F00 for ; Wed, 21 May 2025 05:23:30 +0000 (UTC) X-FDA: 83465772180.10.BA93DAA Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.19]) by imf13.hostedemail.com (Postfix) with ESMTP id 0EA9020003 for ; Wed, 21 May 2025 05:23:27 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=ZES2OsDu; spf=pass (imf13.hostedemail.com: domain of vivek.kasireddy@intel.com designates 198.175.65.19 as permitted sender) smtp.mailfrom=vivek.kasireddy@intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747805008; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=U1DD1ev18tJUa3v5S4cCIlCKJLUjdT3BRpeL5tz4rko=; b=TXS8rashj4n+f0GAe5oqPbVEF0UbR+Uqv7xOJ1iv5RLs50QJJ+P8ugQJ7Ss1qp1X68X2Ie t2SwOaRRU/6ykSRxe7u8lVVEUMjlEfS2igyZ6gkAUhtFewvvCPlD/r7gOD8zd8AvlbYGue GqyFZ9KXtKqxdbbGtUaodU44hozk7R0= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=ZES2OsDu; spf=pass (imf13.hostedemail.com: domain of vivek.kasireddy@intel.com designates 198.175.65.19 as permitted sender) smtp.mailfrom=vivek.kasireddy@intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747805008; a=rsa-sha256; cv=none; b=cxog4LQrXPc0DtGS1qpxWOTsr5oeifBCVNFMqgasRcby7nqJdV2mvIgN7CU4LFqkuszWrR 479yno6xin6SJxUKLB1+VdWnzq6moTjDe5BR/oHM/liooCk1+WI6dxFPSAG33BHfscjIhC u7OEwD4dnrvnIquXaMpuqyWlb+A/+Xw= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1747805008; x=1779341008; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=l31XNRo8KI41uE4zOhXFi6rKnP37VgXQ4y+S+FAKKPc=; b=ZES2OsDui/VOGh7WvNyDenb8vJ146/1w/MafOE9caGdndOG3IqcpaTce 1d/aryB04mxKNvpYkK0LZbw7UrHj70G+BMvLR5BBLQQ8zADympO4W2mTV UOklVDY19mKi0o2aaZylkjR7m9Isjlj19MkiOw5/zC5cR/5LxS5sdDkaH lwdtYq0v2uiBLOfA8wQzmjV/LBHbBYLvqvZk08m+Im0/8RnmcHLxTOXUG kmP3yaWyGy7m5J6D9TLR28J27/npS8SGAwF+ye6Jd7nh+4zEBiZ9dpejd GKbsUtVXBuExkoIaCDfsVRgYk9F+9IYJ23CMcYPOUq9XoV1SuBuiFE80u w==; X-CSE-ConnectionGUID: vSBIWvIPQEubBGGh7XQmaA== X-CSE-MsgGUID: QI7ibqH7QCG8J99imTRitA== X-IronPort-AV: E=McAfee;i="6700,10204,11439"; a="49638998" X-IronPort-AV: E=Sophos;i="6.15,303,1739865600"; d="scan'208";a="49638998" Received: from fmviesa002.fm.intel.com ([10.60.135.142]) by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 May 2025 22:23:24 -0700 X-CSE-ConnectionGUID: 4TUVXEbDRxm1SXeutiiJ5g== X-CSE-MsgGUID: mf16ue/6RlCpTs5bL9k1dw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.15,303,1739865600"; d="scan'208";a="163188662" Received: from vkasired-desk2.fm.intel.com ([10.105.128.132]) by fmviesa002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 May 2025 22:23:23 -0700 From: Vivek Kasireddy To: dri-devel@lists.freedesktop.org, linux-mm@kvack.org Cc: Vivek Kasireddy , Steve Sistare , Muchun Song , David Hildenbrand , Andrew Morton Subject: [PATCH v3 1/3] mm/hugetlb: Make hugetlb_reserve_pages() return nr of entries updated Date: Tue, 20 May 2025 22:19:35 -0700 Message-ID: <20250521052119.1105530-2-vivek.kasireddy@intel.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250521052119.1105530-1-vivek.kasireddy@intel.com> References: <20250521052119.1105530-1-vivek.kasireddy@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Queue-Id: 0EA9020003 X-Rspamd-Server: rspam09 X-Stat-Signature: pq647sk639dxuqm63ptkkb1atz1o6yph X-HE-Tag: 1747805007-660575 X-HE-Meta: U2FsdGVkX19F7VzJRd/HQIWmoEDE5Dtb7Kr9rOm2jqCNEkCTcg0I9icJLYGFKusfj03mT2D9qI28/+EI64o23JhPGC7T175Hql8+fiGZCmZ9WO/eqeicTXZReEO6COHGH2WCC8z1VatV8oDwyk5aKRXr6dW+MYFfPVQREFyvwlf5uRUJpIxZtYyWOobTXiuHGUyyFQXKjgm2fMIACwswOBU1AK9Re0EQKqvb58DC0AVgNqXULqgeHGzZDHDm2BPzBlLimSx52aSIXKfbfhAwMoSl7KjyKTtRLThSMEflFfZBiF9xaBmtFpxVqfNeQtaFr1N/41/oGnzpdHXswjCgeaL4cs6G95VoCd/gP1QwMR04s7C7OZHY5UBpghyFi5ewmd0Zk75K+hMcgPhb01LkoJrhOM3GCTUJVjyCedbmUyHgYkcBmFMGW8nr2AsdpfX2v1/DawaYOmtdV/UasTeKu5JIAklk7MCd6m3p8Q4W7AvzJSTxXoCgEWvX/qW2VUMyvMyi11Ayy55ASLNJNy3Lze5aECM47fEQrcZAFa7LvcUR+EC0+akI2HVump3baNvHO/gH2mUU8CEp50DHQzhnyAlhwAEgqahDj0BuNjO4vY0bIQaxV9Ht1eOAgOFuz3kf7dJNAYC0ZhnfoSRLUndUEGoSwoJCTaZVPpZ6ibKNHwJFnFnUSXQnNr7DB5Lb6BYw4gWHmN3hsE/UatEt6jbPxFSGbUcG2v958GK0lREPZ34B49HmRRhygia957OLxDYJVfGKaBqkGOEXEpylkKvloWLcmxWUVX2cC+Pyvizc7dJnDOsQ2sGIfW0fW/WlteuPM2562t5/k5nqSmJNsCBkCVdh8nnKQrOn9gimFHMy9B2BpSS3Z16p5ar66/f3bbW/sXtHQFRZrKsWTJkhaEurPkp5V4dJ0qFznUdD3VBTm32g5WyRJ/3CXxupUgGnuqKjJI91OJkZDz/lTtJfII2 mpPe2y3S m3hrR1cFCuG6WGtefvhG3r+tjQS7eb9raDLeSobBCSujHx2/kEa9EqbK/Ni6Fmir7u5tuWkPqUyxtFQw6Nu8PE8slqhD33sZTtl4CjR/e8AAxzdysCyhYxzgPwUyi37yAWioIez8aT/jAPrADDId6E1qxzNNqLwXL5bYJv0xqp/w2BcfRbZTEVaQrVKI+0V52E2jbXPTur9bqSB1qcZrS5d9naJ5UJQH/7VwCunEwRowGdBSXgUMz3/rUgwATPj60I0kLSKZS0dwmFk+jEmp8/hZAhdb+QCmkDX4VSC4u/1depB8sFKi4tXiV2rDJk5wlRDZKQGeW5vcmVjs= 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: Currently, hugetlb_reserve_pages() returns a bool to indicate whether the reservation map update for the range [from, to] was successful or not. This is not sufficient for the case where the caller needs to determine how many entries were updated for the range. Therefore, have hugetlb_reserve_pages() return the number of entries updated in the reservation map associated with the range [from, to]. Also, update the callers of hugetlb_reserve_pages() to handle the new return value. Cc: Steve Sistare Cc: Muchun Song Cc: David Hildenbrand Cc: Andrew Morton Signed-off-by: Vivek Kasireddy --- fs/hugetlbfs/inode.c | 8 ++++---- include/linux/hugetlb.h | 2 +- mm/hugetlb.c | 19 +++++++++++++------ 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index e4de5425838d..00b2d1a032fd 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -150,10 +150,10 @@ static int hugetlbfs_file_mmap(struct file *file, struct vm_area_struct *vma) if (inode->i_flags & S_PRIVATE) vm_flags |= VM_NORESERVE; - if (!hugetlb_reserve_pages(inode, + if (hugetlb_reserve_pages(inode, vma->vm_pgoff >> huge_page_order(h), len >> huge_page_shift(h), vma, - vm_flags)) + vm_flags) < 0) goto out; ret = 0; @@ -1561,9 +1561,9 @@ struct file *hugetlb_file_setup(const char *name, size_t size, inode->i_size = size; clear_nlink(inode); - if (!hugetlb_reserve_pages(inode, 0, + if (hugetlb_reserve_pages(inode, 0, size >> huge_page_shift(hstate_inode(inode)), NULL, - acctflag)) + acctflag) < 0) file = ERR_PTR(-ENOMEM); else file = alloc_file_pseudo(inode, mnt, name, O_RDWR, diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 8f3ac832ee7f..793d8390d3e4 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -148,7 +148,7 @@ int hugetlb_mfill_atomic_pte(pte_t *dst_pte, uffd_flags_t flags, struct folio **foliop); #endif /* CONFIG_USERFAULTFD */ -bool hugetlb_reserve_pages(struct inode *inode, long from, long to, +long hugetlb_reserve_pages(struct inode *inode, long from, long to, struct vm_area_struct *vma, vm_flags_t vm_flags); long hugetlb_unreserve_pages(struct inode *inode, long start, long end, diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 7ae38bfb9096..cba9d60a4e28 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -7241,8 +7241,15 @@ long hugetlb_change_protection(struct vm_area_struct *vma, return pages > 0 ? (pages << h->order) : pages; } -/* Return true if reservation was successful, false otherwise. */ -bool hugetlb_reserve_pages(struct inode *inode, +/* + * Update the reservation map for the range [from, to]. + * + * Returns the number of entries that would be added to the reservation map + * associated with the range [from, to]. This number is greater or equal to + * zero. -EINVAL or -ENOMEM is returned in case of any errors. + */ + +long hugetlb_reserve_pages(struct inode *inode, long from, long to, struct vm_area_struct *vma, vm_flags_t vm_flags) @@ -7257,7 +7264,7 @@ bool hugetlb_reserve_pages(struct inode *inode, /* This should never happen */ if (from > to) { VM_WARN(1, "%s called with a negative range\n", __func__); - return false; + return -EINVAL; } /* @@ -7272,7 +7279,7 @@ bool hugetlb_reserve_pages(struct inode *inode, * without using reserves */ if (vm_flags & VM_NORESERVE) - return true; + return 0; /* * Shared mappings base their reservation on the number of pages that @@ -7379,7 +7386,7 @@ bool hugetlb_reserve_pages(struct inode *inode, hugetlb_cgroup_put_rsvd_cgroup(h_cg); } } - return true; + return chg; out_put_pages: spool_resv = chg - gbl_reserve; @@ -7407,7 +7414,7 @@ bool hugetlb_reserve_pages(struct inode *inode, kref_put(&resv_map->refs, resv_map_release); set_vma_resv_map(vma, NULL); } - return false; + return chg < 0 ? chg : add < 0 ? add : -EINVAL; } long hugetlb_unreserve_pages(struct inode *inode, long start, long end, -- 2.49.0