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 B0A48C8303C for ; Mon, 7 Jul 2025 03:38:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 231446B03F7; Sun, 6 Jul 2025 23:38:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1E21F6B03F8; Sun, 6 Jul 2025 23:38:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0F8476B03F9; Sun, 6 Jul 2025 23:38:45 -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 EBF826B03F7 for ; Sun, 6 Jul 2025 23:38:44 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 59DF6C0247 for ; Mon, 7 Jul 2025 03:38:44 +0000 (UTC) X-FDA: 83636061768.15.7F4445E Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) by imf20.hostedemail.com (Postfix) with ESMTP id 9B1A31C000E for ; Mon, 7 Jul 2025 03:38:41 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b="EX5t/8c6"; spf=pass (imf20.hostedemail.com: domain of lizhe.67@bytedance.com designates 209.85.210.172 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=1751859522; 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=gYLAUdUJTR9rpX/RucDx6r9U6vpMoU3BznYDYTgd2Is=; b=MEWmAALq4w2fMzbAbyEHlxJCcIX7O25oJulOlYmtfQDxijULbuB9JjC9pWhnI7Li1jSdFT e3NW2YHaNHL+Ti9Jbbc+5Uj8liSQrNC3aW4kiR9OAJ6J5xjTzrfTwKtqH9+zGXVyuypFuT FgIRPXlGGjuk6cw6oZqUwVQRhecS6Q0= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=bytedance.com header.s=google header.b="EX5t/8c6"; spf=pass (imf20.hostedemail.com: domain of lizhe.67@bytedance.com designates 209.85.210.172 as permitted sender) smtp.mailfrom=lizhe.67@bytedance.com; dmarc=pass (policy=quarantine) header.from=bytedance.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751859522; a=rsa-sha256; cv=none; b=ATQKDY2KrHFBV8ZY6cQ0zzDTeiKnw+SQ3Frd8Uo340BuJ96+CjjJm/VUw9O060/qmUqmLk YLTMeHoJSEf2egyQCAWHFIBpxiYFkkrr7wiEhuxbr0PnC4aPJp9NTCbLD+CtPrx/R20hK6 faHm7bAlJxp4PLqwFMypgRpsYNsjNFE= Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-73972a54919so2240775b3a.3 for ; Sun, 06 Jul 2025 20:38:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1751859520; x=1752464320; 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=gYLAUdUJTR9rpX/RucDx6r9U6vpMoU3BznYDYTgd2Is=; b=EX5t/8c6051QskYvRwSFtn4cg/0rSQhz8Dkd+l74TxSrNIkFuW5DFvBlO/XZgR3PR5 2Yui2aB+qVWGDYL0sOLRfJjBZO2lCzTaPtXergAY+NyNbltwEhoszcozrX8qW5wyrde0 59/4uYPDwtzKLrPsaV+VsePtEo4/mW3JA98dubA4JlL3Du5aDPvkeMEkg9GSyWdVGILp nNhRT17K8zZGEzXVL17SgaoF2VbJgVeP7HrW/JudGhmvPHNry8RkggZon3PGK1EIPWb+ T4tx2JAjE7MRq0me3R5tlOO9l7TjeO1dF/M+gv1lQWElItlaTOYR5CTX0CvibzRwUB6T /3ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751859520; x=1752464320; 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=gYLAUdUJTR9rpX/RucDx6r9U6vpMoU3BznYDYTgd2Is=; b=YfTA4PY5BtI7D2rxj5PKNlrgoVyAs2OE8VHzI4h1WdNJHh0Eo8pMyBh9gFm18Hlewg 1bfjdhNgFPqqu9zTdaSamwAS0o3yTMlYxdwH6jaqCRSodD31tjgvCVVR3HQG32Ea2+J1 to6TARFaENsfY8nOXGkx/Hep5BleX0k3Y2e0RaAPO9O/L6rSaEHEDpQHpqMW1lwtOluy +5joU/PP2u+oSlshav/FTjid4OZ9xFLkNt5P1WzD5GS6q+jDXq8YDvg1nF6iONMtRhBh A8tSc05qqs39rRRMeJ2QY1lis5pbERaEAPb+Npb7cTsuBSpfQJyOH/U8TTTmc+vnNUON Jr2Q== X-Forwarded-Encrypted: i=1; AJvYcCXESRD46s28L75IQZVgMVGFQIA6iE9XGZ/D8HmcUiYhtjRp/fj6ysOyILALZdy/VKy6PnNxRztefw==@kvack.org X-Gm-Message-State: AOJu0YztIXJA6SgHm9IbM+1gw9OYOg6bDGiLDJO89Aa+6eXJvGTaoeux iy7F+wXtbzv3CQ8zmVmHYhP53Zgzk+aAlHcudtfSOA5gTyW/uZLZpCTDYDBldCeRHYc= X-Gm-Gg: ASbGnctwqtB5aZchFCGLQ5qfMtIHd6LdoZwh1QfvAJZxZvp7AoHN/piqiz6xp4pnzTf Zje+PqAKWon+nTSnILTDvMdvleMbD4howmW1dxvOGri8M6GAklqFI+Wgm0J+TWzAcp4bTmnLpqe PtI9vhgRBFQCWGWZQ472pPYkqadlvLV1eFWjnHtXPyeSFwxOsOQnqJfp1wApJCC4NZuQoWRXV8O gn+9PU45+6WltpGITg3jxNiWpIwsounAXZ4miFJ5JAeecyRws/JbyJEAmoEOhimxqhrsJk+rNJc RNGz+i4yR+7dKbiFKGWzT8JLfUdKnJnDIXCe2vd413QXdScQOG1aqeyySfCyrv+cO0kWiwsNRAw mVAdKjHPLCtprzA== X-Google-Smtp-Source: AGHT+IHQ+vMn4AUfTUfzbidm8jT0R/lnwjN3Q065ykEjKC8AayhHkU7jvtK+lcztQOyY68HYaP5uQQ== X-Received: by 2002:a05:6a00:4f8b:b0:746:2a0b:3dc8 with SMTP id d2e1a72fcca58-74ce8aca411mr12735141b3a.17.1751859520171; Sun, 06 Jul 2025 20:38:40 -0700 (PDT) Received: from localhost.localdomain ([203.208.189.10]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74ce4299c3dsm7789475b3a.116.2025.07.06.20.38.36 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 06 Jul 2025 20:38:39 -0700 (PDT) From: lizhe.67@bytedance.com To: jgg@ziepe.ca Cc: akpm@linux-foundation.org, alex.williamson@redhat.com, david@redhat.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, lizhe.67@bytedance.com, peterx@redhat.com Subject: Re: [PATCH v2 1/5] mm: introduce num_pages_contiguous() Date: Mon, 7 Jul 2025 11:38:33 +0800 Message-ID: <20250707033833.59970-1-lizhe.67@bytedance.com> X-Mailer: git-send-email 2.45.2 In-Reply-To: <20250704171015.GJ904431@ziepe.ca> References: <20250704171015.GJ904431@ziepe.ca> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 9B1A31C000E X-Rspam-User: X-Stat-Signature: udj9cz8cmf9unco9jqiym3tgtro4aofy X-HE-Tag: 1751859521-586978 X-HE-Meta: U2FsdGVkX1+O2PvdG0JrDaKJRvxe5cqbuNiepcPkGSe1lNrrav7x9E+Abrb+XeEIFIChibNselGtG5+QIqZZvfOhtSKrl838ENR8f4Bz+7FhUXBJzJz4sV0RhJIHs2aYatfju4uYwPsYAnKVnw+/9UkpoWx3ejyODA5L24KC58XhqO3bhyqyZ57p3DaV8ZNpAdscUum6JapyDfeunmqgtjuyZD6Jqnk5GzaklhAc+RVMPKEziT0VsKH1WNXDGOTdvOHPipV9J1dl+zqRGEWC7KmlTKD9TjqSrxIH769IwwzCpQa7N2YDll52fCYQA3XODirmMyKtq3yz9SSWXhHjuVOA2kSOnDnNRPlKuwSgO4M1SW6QAkT1gDHtlAf0NTDOfZyHmkFW69STTRs72X/Mw+SMsj+YqcFMa30Ey4vdk8I+QGtdQ4LtHbmfq05Ed8OIWMKLwAUBl0oC8y8eCjk9lBLhflsJbBMldwQgTUrQr/KTXvTnPqX1f00/Ul/56XVxufY+M6yCais+vfTpOltLEQLm72PcqHKwdEFZO8ab4UzXC7K4dsfgixhdO6dNXwgdbIY72AqrqY8Hk+xSac6V2HTin4Gk0LuAibI+ykm3hPYezHCx46QrqFJzPtGE1a03mvFP3sExo/+rGs0bleOLVBSnZh+GEW/BkKzmkws/5MpNhwjrxgMlgDOrKIQwzXp4OBh8Tx+e/N1DxgjHK8Qi+qaaIy0tpj9uhJPuu50BY+6fkUoQfHzrbXzD6e83KYNJ+nSt6t9Qn0HpYA2tYYFjft9jAV9ZYARv9xkmnmWo0aOJFN1DGrla8RZcl/YexspIf44uEzF2fbDFvHJfPYPVHQmroDD+Bx6MSLmub93ZJS1OqukoXpTZnKuqqtbkp7wX2hPvJABvbdSw8SLm/aTn4v0srLybq/DN/otsCrH2lCm6mKAqB2SIZ22k1c/w4FIIIkyB3j/dYH8ag92kdfy AHgUxKVf 6IAN9LhXclGlg48DsqypsKJK5Ds7BpTGmXusAsdFWTLBnNOc/JAsswxuXd8vYDMHcIdp2dOnrPiykKt5E2CsE9ZO4XG5tPp/w7VTwyunf9nAvcgu4c1sBn//MqH2WW8hvZ7lAdKZxifs7+EYQwh4Yn/2FOKpmFOKrFUKnMUW8O69gnI9W32WIue3L3pzfQtR/O/Us2desAI9GOJfgqzCZO6nrpkB/RyI+Ee2IiMcF/O48pTfrXgqaFWPG+GFPlOu3HbVnbqHjqsz+LpJ8Q3v8bA6kNyY0oBV/SsSQE3K2M17r5cAmjo4yzXnxCQkVooLeVqPev6YdoueUNf7hFLo+9fYlovefaaFe+Moa+tM/tPz6ThDmbidmkny9KAt6L004iS0g6iwbNgNRSVupEqocRIacZLx7Jm0wr57wUxVrHcS+sYqpZt7O9UIfh1OmwHNtHNkQB5dszc++CBIW35wE6WWdTA== 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: On Fri, 4 Jul 2025 14:10:15 -0300, jgg@ziepe.ca wrote: > > 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) > > Both longs should be size_t I think Yes, size_t is a better choice. > > +{ > > + struct page *first_page = pages[0]; > > + unsigned long i; > > Size_t > > > + > > + for (i = 1; i < nr_pages; i++) > > + if (pages[i] != nth_page(first_page, i)) > > + break; > > It seems OK. So the reasoning here is this is faster on > CONFIG_SPARSEMEM_VMEMMAP/nonsparse Yes. > and about the same on sparse mem? > (or we don't care?) Regarding sparse memory, I'm not entirely certain. From my understanding, VFIO is predominantly utilized in virtualization scenarios, which typically have sufficient kernel resources. This implies that CONFIG_SPARSEMEM_VMEMMAP is generally set to "y" in such cases. Therefore, we need not overly concern ourselves with this particular scenario. Of course, David has also proposed optimization solutions for sparse memory scenarios[1]. If anyone later complains about performance in this context, I would be happy to assist with further optimization efforts. Currently, I only have a x86_64 machine, on which CONFIG_SPARSEMEM_VMEMMAP is forcibly enabled. Attempting to compile with CONFIG_SPARSEMEM && !CONFIG_SPARSEMEM_VMEMMAP results in compilation errors, preventing me from conducting the relevant performance tests. Thanks, Zhe [1]: https://lore.kernel.org/all/c1144447-6b67-48d3-b37c-5f1ca6a9b4a7@redhat.com/#t