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 C0041C83030 for ; Fri, 4 Jul 2025 06:26:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 117816B01A5; Fri, 4 Jul 2025 02:26:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 04CA96B019E; Fri, 4 Jul 2025 02:26:40 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E09786B0192; Fri, 4 Jul 2025 02:26:40 -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 C529F6B018B for ; Fri, 4 Jul 2025 02:26:40 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 79931BFD78 for ; Fri, 4 Jul 2025 06:26:40 +0000 (UTC) X-FDA: 83625598560.14.A86D8C2 Received: from mail-pf1-f180.google.com (mail-pf1-f180.google.com [209.85.210.180]) by imf04.hostedemail.com (Postfix) with ESMTP id A076440006 for ; Fri, 4 Jul 2025 06:26:38 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=bwdTOpxY; spf=pass (imf04.hostedemail.com: domain of lizhe.67@bytedance.com designates 209.85.210.180 as permitted sender) smtp.mailfrom=lizhe.67@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751610398; 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=2g/dwRr6sLGaceuHHFqckJ3jttaQlwjxhPJ/ULf0C3w=; b=PexKidzFDFVLeFTIoAfVsyVZqoEyaLXB56A8iPG5BeMxciHj+li/VJf39/7fhFQXIGrV/R R00+uCTeKtZ1pmgHRUqdEJrj78NrbF+Brb1Mc7f1GM66bo/ncUBNRiALFr/e4KaMZRcM5e 8h8Zg07f2FIBdPoBP7M+AGf1STyeC9I= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751610398; a=rsa-sha256; cv=none; b=63tI/SeDxEaf8hHfZTMVCiJuMyC4GRfOhmG93BtH0Lf2//5qzVUUgXpdL/J5fimi0cOP1J o6qfi2Zf16Qmcxs0hIewKDifKVBKIEV2Li/ppLrDry6MPvNkzplOyfBI9GO9JN93ytn2N+ 1Yvlf98SNgCPc4F4HWvjuMIOi+EYsB4= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b=bwdTOpxY; spf=pass (imf04.hostedemail.com: domain of lizhe.67@bytedance.com designates 209.85.210.180 as permitted sender) smtp.mailfrom=lizhe.67@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com Received: by mail-pf1-f180.google.com with SMTP id d2e1a72fcca58-748e378ba4fso910352b3a.1 for ; Thu, 03 Jul 2025 23:26:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1751610397; x=1752215197; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2g/dwRr6sLGaceuHHFqckJ3jttaQlwjxhPJ/ULf0C3w=; b=bwdTOpxYDIldXAqyEKVdRhRikuJrz2BW9nuscCLfNcb9SQ4ZmPfCWc+3MYJnYVVdEI WR5qE4d0IYa2othNJx3pyLWSFssK07IsM2Nnu3z+dVsrNAilTOjUnHtDdxLMIR0Xt5xp NfBwn/q0p8ZC1OWaKxrSxp7+WSRS1tk6PXausd+OP7PhzsTaOUQJIqfYRqr5JLfeKpU+ /zUFzJpsQDoZqfkyjFG81NBCMA+UwYCcsxgeddKRi8teiYiuTx6+PCejBUYr+3Ch8hiM cTlGr2hF7/vNV/1I0th7w8x+qdnpP/v2NvQBpeQ8igTaxrn+L/KazoKoW6j5lp98zw8D Z92w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751610397; x=1752215197; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2g/dwRr6sLGaceuHHFqckJ3jttaQlwjxhPJ/ULf0C3w=; b=eQ4g4g6HQjNzIVygsmdedwhSTxZzUhFFbDOSDgfJa5wteD20g2V88v1YMWk9KkWlKj /A+rILfBpS4ns8ehNGXwVYLH96E8NG7HlHNMdY6sIxgCKa6K0zVnxp6iVEcr2zcVmKjA FkPmARcIjb/YBkYVloqZRfBMnRkTovVHVB06MkJMnX06jQX4O87v7FlTPceMddgeUyWs yle7bmeJyXaWdTBiWx0IDYBkoK99wt8z4V/eEM7TnHt5nD2boai0Rh3z7p03Q9emQRoM rijyFn1iqCIu0kdtaQqcf2MSVVK1pBGFlm5XlWVrWa3OLcznxcihcfXQVrH/BZGvE3GP 3Xxg== X-Forwarded-Encrypted: i=1; AJvYcCVLgAcaU259p5q7RrjxvUYo2jrWlyyaaWI6BFa/F/Yot2ytP1IvNsSafk50Z2yRBExqTLAC8x7Y7Q==@kvack.org X-Gm-Message-State: AOJu0YypO73PcLkbX8SH1Fdmw7vNdfr16HU6MXFmione6IemssDGAvpW YfLq4SNZGlWGdN/uawOpS+DSXm+Wx4a74uK6CXobTOYrofO5TPXct77e66PpcT9VcsU= X-Gm-Gg: ASbGncu/TcGkIlnvJvfTqkckGbwmbWkUbxRIIguUVHH3lHkvWsmVejXvUsL+mwMJoLU cokPjeON0gG10NS4RKaCoSD/N91UR3YlKzNdPxxTt4aXP3Ph5XmT8w7aa1UKixf9FN8hVFQnL9z c+N6RiwqETT0Fhm7TLO8MbQl4o9p3Ltckbh1Ndtz+M+YC0vLWTqVTp/+E6VXK5i8GMhECva2Qu8 jwNvVZw7hWTHrR9ba4TxzToghH/YA+A4Mv3KQHbXcWK32u9ReeJQB8oW3Wltf7sEL2mIaVl7XMG Sj986Dlpo1ZiM4iOXPoC5vh9oJfAPPXXaGMx+upnP1/BZ+qVwkvCoO/ndmxnEuMC+KAsY4K3ddf lMIShtPzvnojbAs4rxMHES0E= X-Google-Smtp-Source: AGHT+IFgq2ivg/0MglwTFQ4WJrnXsHzXC1MwrFb4H0GFB2MQTzaMHFKRHwI7ymeiA/dv4aTbTUdETg== X-Received: by 2002:a05:6a20:9195:b0:203:bb65:995a with SMTP id adf61e73a8af0-225c08e0ffamr2890704637.30.1751610397524; Thu, 03 Jul 2025 23:26:37 -0700 (PDT) Received: from localhost.localdomain ([203.208.189.8]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b38ee5f643dsm1183240a12.37.2025.07.03.23.26.33 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 03 Jul 2025 23:26:37 -0700 (PDT) From: lizhe.67@bytedance.com To: alex.williamson@redhat.com, akpm@linux-foundation.org, david@redhat.com, peterx@redhat.com, jgg@ziepe.ca Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, lizhe.67@bytedance.com Subject: [PATCH v2 1/5] mm: introduce num_pages_contiguous() Date: Fri, 4 Jul 2025 14:25:58 +0800 Message-ID: <20250704062602.33500-2-lizhe.67@bytedance.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250704062602.33500-1-lizhe.67@bytedance.com> References: <20250704062602.33500-1-lizhe.67@bytedance.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: A076440006 X-Stat-Signature: tdzewmmp93ae7pw77dmgebzs57exkho9 X-HE-Tag: 1751610398-675022 X-HE-Meta: U2FsdGVkX1+CexZhFVlwviJ+idBTnIA1QJpRCwVLLN7tBKnEYywvZz0NjWbL2QGWDUD5ca9yBYRfYaChzcOBq6E13kHQzjv66Cu2hrAI3RTcPAHwsPj3NaBxCMGWSURQYDlqigh34WzV14+CYLVDhGIKNNXX62LO76ZJXlS+2b8QXkrX6zfdsu+SFODIXEulprtQB9L6Q0VJYcTtpZ/lJLC9z0LJeZOrfJHRSiqRGKEeYoH46RbiYlHZ7KGCwOVszC/npPUohxeBpyxJm1MDmJ4naSwN9XAtsNlCPDp/xd0PPsip2jpb3KsSedozTydk3+f8lRqr8yKO6ZAYeu9Xt6aF+ZnIxGKK7NoqbU1/lVD4nWqc/GwSegZA9PHJECuaFs0dvfMYCQxbNQI+f54Grny1V+MP4n0U2sMRmX+356dyXrDwRIywRUbQjK7nHIDlxuvcvm5288XvgXffPtJNKV+YVUVgBNjsbf5Tl+PyKINX24hdWb8yPpdrnxfFa1UGmdu1V6TJpU5NN0kw+ZsMaYrW73qpysveGe0Ge655dS17ozprOZJL0kee8Gy4Q+XJRvWYJPDLqLlMFYf7fYSwBj5Ri0T2gJdRbqCpzDNo8CUUow+ScJtHpHDJ5KmwkOEQfimp2fZFfLYMtxmX0lX7WJS9ygU1v5cCmW5yq12NMuMYibEJLu/VHJCqOAfbXTbwftupPcTfMpOjuIiy3YNXghXvSIJW5Cgf4GZD37zugBCURImTD3bBOW63bLgknbXVY5y/1MEc+jrlet3HL/W6Wk20pwHTQMBtJoKktPuqIyyiqlSrMKM3haxuOkYeab/Q8j4vYS87R87iofubLstnhAgWX5dfbHuJQSTkO8YLTSPbP2WtdRQUohzQRKNralBO0hQaebrzpJYHSTEiogGVFmYUwEuCvApqxgGcxSRxGZzNfmyDfZFerFdS34zugMvQUOyrHDAhC/kCKhH4FNv eQJa8Shr zoR/Ifwcawt0K+E5xGRjTW752YoZDnp+PEd97yPERrEiP1MkF2GL65alve5XicsKQ5la69LI2Dml/cOnDV06sRHcR8sbQyisw2KwmEgCGtgEb/PBVI4QukJWaRAL6RU5CtmLGg64mRumKqxIKUeHa6SUU8OSVXZMBZqfak9ta3gGEU/I8Cc2XwFHEB29eg6E0X2DXf/1uR7yUbBv/mQofZyiOp1G+Tpw5+NBgxJctb6HsC4BflD+nn0GVQWK807ZGtliPPvsolNCr7yXPn/t+IKFW4o2pKlq6BJ97a3gXwS5D2CYfGMuh52lw/HTe78W6yk4iVrzquU+xpqyfk7n3WCpr986KSuD9xfxZklKCy0D/O0UfZ7s1L6dpnDYaV+hKuztwkJ0MGYIAdlB1NeJv2OCrVEkyKcnKFXmW 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: From: Li Zhe Function num_pages_contiguous() determine the number of contiguous pages starting from the first page in the given array of page pointers. VFIO will utilize this interface to accelerate the VFIO DMA map process. Suggested-by: David Hildenbrand Signed-off-by: Li Zhe --- include/linux/mm.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/include/linux/mm.h b/include/linux/mm.h index 0ef2ba0c667a..1d26203d1ced 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -205,6 +205,26 @@ extern unsigned long sysctl_admin_reserve_kbytes; #define folio_page_idx(folio, p) ((p) - &(folio)->page) #endif +/* + * num_pages_contiguous() - determine the number of contiguous pages + * starting from the first page. + * + * @pages: an array of page pointers + * @nr_pages: length of the array + */ +static inline unsigned long num_pages_contiguous(struct page **pages, + unsigned long nr_pages) +{ + struct page *first_page = pages[0]; + unsigned long i; + + for (i = 1; i < nr_pages; i++) + if (pages[i] != nth_page(first_page, i)) + break; + + return i; +} + /* to align the pointer to the (next) page boundary */ #define PAGE_ALIGN(addr) ALIGN(addr, PAGE_SIZE) -- 2.20.1