From patchwork Tue Mar 18 17:43:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ryan Roberts X-Patchwork-Id: 14021375 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 C35BCC282EC for ; Tue, 18 Mar 2025 17:43:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 070F0280006; Tue, 18 Mar 2025 13:43:58 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 01D01280002; Tue, 18 Mar 2025 13:43:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DB3A6280006; Tue, 18 Mar 2025 13:43:57 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id BA6D0280002 for ; Tue, 18 Mar 2025 13:43:57 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id BF8411A151A for ; Tue, 18 Mar 2025 17:43:58 +0000 (UTC) X-FDA: 83235394956.17.9236296 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf04.hostedemail.com (Postfix) with ESMTP id 54B8840011 for ; Tue, 18 Mar 2025 17:43:57 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=none; spf=pass (imf04.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742319837; 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; bh=eleiHTNj0gImOM2ovxZqMXDzKNW8BLdmEFFLpTveh+4=; b=mS5FAhR+YMMBQZ24kQDHvbdP8xO+tNVlhvkqHAq4jrfoj3MHhezlkm8qmBJOhdVw9RsIt7 nIidio6Q2lA2Ovg3nUmCuXnPb5RNXWKUCJXwiSmXgvrZUwa5FhEy9S+0+iQLNexO9pX2gC k7c9fmAtWO4IxkPLJBGqOSiERQJ5ePI= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=none; spf=pass (imf04.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742319837; a=rsa-sha256; cv=none; b=AH3FWodcdDMJ1AQCEH1kmpbz+MEqcV1iDdV07G8+xKSW9xWD6hwVbo14z1wXeyO6PCDgOg cm4ohEobo4Z5MVBd7nzbxuG0U2JoYJPh1d7IAdKXDB3Xwi+rejwUH1j/+iGD8PAmuz2S1Y AvkQwI1zz0BWgYPlHvvZjfNy9i5xLbc= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 2B5C71516; Tue, 18 Mar 2025 10:44:05 -0700 (PDT) Received: from e125769.cambridge.arm.com (e125769.cambridge.arm.com [10.1.196.27]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id DAC283F673; Tue, 18 Mar 2025 10:43:55 -0700 (PDT) From: Ryan Roberts To: Andrew Morton , Shuah Khan , Peter Xu Cc: Ryan Roberts , linux-mm@kvack.org, linux-kselftest@vger.kernel.org Subject: [PATCH v1 2/3] selftests/mm: uffd-unit-tests support for hugepages > 2M Date: Tue, 18 Mar 2025 17:43:40 +0000 Message-ID: <20250318174343.243631-2-ryan.roberts@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250318174343.243631-1-ryan.roberts@arm.com> References: <20250318174343.243631-1-ryan.roberts@arm.com> MIME-Version: 1.0 X-Stat-Signature: 1rweydsxmd55ywtnrcbumapt9sao5skx X-Rspamd-Queue-Id: 54B8840011 X-Rspam-User: X-Rspamd-Server: rspam09 X-HE-Tag: 1742319837-557169 X-HE-Meta: U2FsdGVkX1821p8Deqf1TrGblcFsakPAolTRwQ0QDHWlnQIm7xtcGWEo1+QNckfc8RE8DBk5xGNfThxX1dgSgKlXnFP4foPiATyPoyn/z2jyEV5kuYPf/oLmLss5IIjsMG4Gk7PuCpuiQ6QQxCFC0ACNjuD3B3h1LUUYx71WZN2lB2U1yGItkNvm1ThmUDbWxnSjVlsWzLYe++BAVYlVP5/R7G8FWT3lD4KLq1jpbtHU02KvZ0hrpWVL1uCSYU0/u47lm+kpRjXDW8WqK8vpAQOy34sqOJZ10q50QsF0JYIiYmIJqCag6w+21gfltucIUQk9Cvc0I2aNvy2xJUxpkk/vfnsxQfn0GgtSd+xDIsODr2kt3xgZx7CugYFHecYONOhgtczKZBIJZe0hUFSWL9H+qKNNwCQt2kkSYPKd/Nx9BoGub80DTEJYYnqT5aykBo1Kohtg9E6iQ1WRMyFuGyZAcMMZMf+2m2qmUqSAsmQ8dCG+HW6wJ6Jm6EKxRrBPu6W23kHAE63OOLAukk3QFupeHea4MD1xsGbkFU/1tEb/klH7f0HPyV/MmRvY0iMZ4m5KAGWlzrv5CaoT23V/LzbOK57AvMByxR/MU1BXtzS8sVyvNBvQH8zBMZL194Liytg10VEVQiXlDGlwHftJYemiwksWDpaSiHdxxPpWjI6VMq+ivIfZDtWZPkvdHQd0KBMVtGryhjJbKEsljm3mD/wpJ6BhyJBZJEsyvGgXsu80mSUYHCf/IRK3PX3PzRGFaTnHYL3mniy+ontVTGKAa25/DJu9veuG1Xmth1qrUEoq9iLeb0pPGtBjyt3DaNIlGOcJD/mot/l4mFgQ3xHxpQ== 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: uffd-unit-tests uses a memory area with a fixed 32M size. Then it calculates the number of pages by dividing by page_size, which itself is either the base page size or the PMD huge page size depending on the test config. For the latter, we end up with nr_pages=1 for arm64 16K base pages, and nr_pages=0 for 64K base pages. This doesn't end well. So let's make the 32M size a floor and also ensure that we have at least 2 pages given the PMD size. With this change, the tests pass on arm64 64K base page size configuration. Signed-off-by: Ryan Roberts Acked-by: Peter Xu Acked-by: Rafael Aquini --- tools/testing/selftests/mm/uffd-unit-tests.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/mm/uffd-unit-tests.c b/tools/testing/selftests/mm/uffd-unit-tests.c index 74c8bc02b506..6973e57b227a 100644 --- a/tools/testing/selftests/mm/uffd-unit-tests.c +++ b/tools/testing/selftests/mm/uffd-unit-tests.c @@ -26,6 +26,8 @@ #define ALIGN_UP(x, align_to) \ ((__typeof__(x))((((unsigned long)(x)) + ((align_to)-1)) & ~((align_to)-1))) +#define MAX(a, b) (((a) > (b)) ? (a) : (b)) + struct mem_type { const char *name; unsigned int mem_flag; @@ -196,7 +198,8 @@ uffd_setup_environment(uffd_test_args_t *args, uffd_test_case_t *test, else page_size = psize(); - nr_pages = UFFD_TEST_MEM_SIZE / page_size; + /* Ensure we have at least 2 pages */ + nr_pages = MAX(UFFD_TEST_MEM_SIZE, page_size * 2) / page_size; /* TODO: remove this global var.. it's so ugly */ nr_cpus = 1;