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 86C53C7115E for ; Wed, 18 Jun 2025 05:36:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 14C8F6B0089; Wed, 18 Jun 2025 01:36:34 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0FD8B6B008A; Wed, 18 Jun 2025 01:36:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 03A296B008C; Wed, 18 Jun 2025 01:36:33 -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 EAEE06B0089 for ; Wed, 18 Jun 2025 01:36:33 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id B0F181D4064 for ; Wed, 18 Jun 2025 05:36:33 +0000 (UTC) X-FDA: 83567411466.13.9D92AC4 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.9]) by imf30.hostedemail.com (Postfix) with ESMTP id BB35580004 for ; Wed, 18 Jun 2025 05:36:31 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=Vpd7JL1E; spf=pass (imf30.hostedemail.com: domain of vivek.kasireddy@intel.com designates 198.175.65.9 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=1750224991; 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=qw/RfWTLKwm+bbX8jT7bthwzS3Qno4jV6EbrYf/XDCw=; b=8YIc75MlxCO1Keu4KWHjMrhJM6rZTEJCzW0CSboOqcpVBew8rp5kNgk+tJnE/4gNmInX/E aS0r1J+/hxZKis3MUe6fJ9jQgS628UxlsQM0U8BcjCE8+oHY3bxJsDgD8bNwWJa6U8LRPd pwbtlotpxY7G+kaXrJCH8O7e3CC0gyQ= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=Vpd7JL1E; spf=pass (imf30.hostedemail.com: domain of vivek.kasireddy@intel.com designates 198.175.65.9 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=1750224991; a=rsa-sha256; cv=none; b=6P6hg6CmCA35rbjWQT4viKcjdfZA0eL5N4/kcMKUMpWoyhVIx5p003iXOZdmG/UPFkoNR9 ExuGd+ZoWF1PMg0EejISXDEfjZC5xj52BKj8A9pTQZfMGntgAO5G+SzLlWtSw07011siVC 1C+mz6X+jnua/6lyj9CdbzsvikS8olw= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1750224992; x=1781760992; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=C87Ag18er3QM6fpUnTslHJkYcB3Llhv4m1I1vfpaeLQ=; b=Vpd7JL1EJammeKe1vA/iH+eLvWoiqqe/TouAgEcUbRXOGOfmDbHfhWap BoVBU1MTcoKKmMyz87Psg6HYHDPoOX1gHKwHBZpAvR/outRtjO297/y+V Cc2nwNiJe4nBzCs2y8KKQsoHqijyeXoNORKMcI1sVyQw/au83IxhGj5ql EL8TbjJi2CyybbrhPBo2bbm7DRqYbXm3/+nEutMMQFsYyFXGcKelTg/Cq GpgTAbtq9zVajPexsMmEwafmoE/Ra6GhkBXhGr291di+w6bLGC1XcGdWb IY/h+cqzqsxiN6tqLDWGhe3tmQuLIC1O8Yzw5Nlbe/L/sf+8MNFxBaIR1 g==; X-CSE-ConnectionGUID: FOvfp7aVTICOMw59zt1aSA== X-CSE-MsgGUID: zxEaeQEnSVehjTtKoEx1hQ== X-IronPort-AV: E=McAfee;i="6800,10657,11467"; a="74960310" X-IronPort-AV: E=Sophos;i="6.16,245,1744095600"; d="scan'208";a="74960310" Received: from fmviesa007.fm.intel.com ([10.60.135.147]) by orvoesa101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Jun 2025 22:36:29 -0700 X-CSE-ConnectionGUID: Q9snri2hT+6Owtd18O0ziQ== X-CSE-MsgGUID: SmMy5AFDROqGdkqt7ERqFQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.16,245,1744095600"; d="scan'208";a="149052934" Received: from vkasired-desk2.fm.intel.com ([10.105.128.132]) by fmviesa007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Jun 2025 22:36:27 -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 v4 1/3] mm/hugetlb: Make hugetlb_reserve_pages() return nr of entries updated Date: Tue, 17 Jun 2025 22:30:53 -0700 Message-ID: <20250618053415.1036185-2-vivek.kasireddy@intel.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250618053415.1036185-1-vivek.kasireddy@intel.com> References: <20250618053415.1036185-1-vivek.kasireddy@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: BB35580004 X-Stat-Signature: b6uruwx7s48hsbgsqpwr7nnjk49q6dqu X-HE-Tag: 1750224991-745696 X-HE-Meta: U2FsdGVkX1+VF69IhMzXReH4GxFTYVo3KWEk/agjp4l7c36DLR1+G72OKzs3uLVWESN7LDShb/gHM6025ABU8oA9dgzeUtSEq2PNu22D/ucN0JF6fJa15/VazpLja+bvH0i0qWCeHBpR4AxXKzI0EREgj2VzHR2sti+rnOadCp+1ZpvmYieUs74uVWXFGb2ApSWPrV3VlZj0gOXHVhmA+vilpCm97vDsmpa1xnB/ZMBUMFde68/GnVmsARGm7g5xvczBH898sVNUgyGJDSlb0o83Slha8+SV++2Vr2fWW9Kmxc0csmJp3VGoLqJuUeWiprhPXInJOo26L+6wcGXGToBGHjurMVz9/tu+1UD4C/k5xYs2joEig3o4iC9RLDQhM2ELGSbNRfmoquE7tbxJO/GgRTod/XVNgb312v+A6C0elSlH/3QiA2FM7j0S1uHcrHcLNpNUHzyNvMJ0eU+FrVn8gDAbbH1sqtJX0rqhqBc/ExyR46rmtamU5NNcwgAe+eFBtNxc3pVctF68tRkpyCVb5YMoyO0PAggUkbk/lICgBu6wbYUosc1l22zq7f9I2owOUiFQSaq2cVjMSbA9Fr2Z+/gs2H9k7p7ugO2W57G8ox0HegRxY1DzSDrTjrmIGs0y5slSgvS5pz58ExOFjOdJ5bdBwNNWRlcLK1KuPA8KiG1llN8IIWGcb8HIUW4iNd+TCzglrkUU4RbnyXg3wDf7K/jGv7soUsaorsmGMu02vqkpedPYwKE1OUyn7XPWXVmOEOrKu1dMhMHC0FftUGET+beOW2tRRqPVH6hyO+Thvsa82NHUQMgalnR+8IfC3V4gUB4hAN54OsTrtTTMJG1+21fPLuOlQhFK/NasWuB2zXJKmKHpRF/bPlHfjV6NQ4CwkcQ1XlGwiuW+4Cdr9SVkH2ngWmv4qnTSGqSBo1c= 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 42f374e828a2..d8310b0f36dd 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -149,7 +149,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 f74c54ecf955..6b34152744cc 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -7267,8 +7267,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) @@ -7283,7 +7290,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; } /* @@ -7298,7 +7305,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 @@ -7405,7 +7412,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; @@ -7433,7 +7440,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