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 579ACC2D0CD for ; Mon, 19 May 2025 22:34:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 12BB26B0093; Mon, 19 May 2025 18:33:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 03FD96B0096; Mon, 19 May 2025 18:33:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E96AF6B0098; Mon, 19 May 2025 18:33:56 -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 C51EA6B0093 for ; Mon, 19 May 2025 18:33:56 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 24834C1401 for ; Mon, 19 May 2025 22:33:56 +0000 (UTC) X-FDA: 83461111272.09.A80DD2E Received: from mail-qv1-f49.google.com (mail-qv1-f49.google.com [209.85.219.49]) by imf25.hostedemail.com (Postfix) with ESMTP id 7D223A0002 for ; Mon, 19 May 2025 22:33:54 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=jTAoZjaa; spf=pass (imf25.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.219.49 as permitted sender) smtp.mailfrom=usamaarif642@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=jTAoZjaa; spf=pass (imf25.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.219.49 as permitted sender) smtp.mailfrom=usamaarif642@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747694034; 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=QBedgeD+gExl3gWB2aOy4e3KdH1CGamnabmn5JJeaHM=; b=1kQxJZLJowK+JX2lHU+L/chVQOi06mtoXn+zwL+p1wKGuNnhlUF0fGjxkDok2xukc85ENi H0U86RyV248dKayfdfo+G/JPenvjnm/ApCVsHEjbRR+OZz4u2FhATSjx+0qI1E2844fwHi DZnmUGi6qaNsAP2BE+PeXWriMi2XsQs= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747694034; a=rsa-sha256; cv=none; b=qoMRFLM9ng6oj7o5Z+z366eYYkDWp39eJnt3aYGvV1H/IVJw7rVWeJcLi0EkKN0dIXY9r1 MlnvNPlnK2m20+qY2HQ07k0OrdHTo/lbH6iXWGpn1Q3jNMj33aPJsZoGqbZcLwaVeVjsxJ mkMutU5lPTaklYTTLflWFkeu6ZaQ/9s= Received: by mail-qv1-f49.google.com with SMTP id 6a1803df08f44-6f8b2682d61so38326016d6.0 for ; Mon, 19 May 2025 15:33:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747694033; x=1748298833; 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=QBedgeD+gExl3gWB2aOy4e3KdH1CGamnabmn5JJeaHM=; b=jTAoZjaaubV6Sw/0BzT0EJQbxIpotxfNYBZK/OURw8iwXAY/UCVUpnwbJ3SuY49wUT b7UsPfLhvmubptlTMeKCBxSEAfDbc7rI049ZU1FmCt8OaPAYvtT8/MmbMr5bxvYyvQ+I /73MwOeSVhaOWVL4c320qMvnEdwPKqW02Y2a9reS2z6oCIZipQthXctwPK5DpOFSCdjv uuGUjMwpdA2vjjdSYKgNS3ARSH5iXtjdtVYk0QFyHntZjwfEhqOB9wbjW4wmup2xdP8A KkV8uyOd7o23SdVKeHXLKdd64tXgFqiMyyPJ5kvNmJkBefP6NEoejbbijPH+g/CGeSjK 8aAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747694033; x=1748298833; 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=QBedgeD+gExl3gWB2aOy4e3KdH1CGamnabmn5JJeaHM=; b=At2xXNnMDpBriWdG2LssYmjR1f0T76TeoSuv4R4U/VhL5AsjrGoRShDJ7Qn/M1KzMl yXCIfFPnCfbI7dAInCsqsSktn+orfx9WwhQQRwi7Ktwgws2A6DiuyW5fQPI2OPNr7krT AbDFroLkaxCpzRJ2at8MVnRKdESA5sz97QQo1ZDm9m1gJLo2q40L43dDOh57tgdkLMzL YrM2SY0dCtq14UHKChnZu9He5sUXY0Bz5xTfUioaSh8YyRQMyLxvcGC18oQ3X679bCxb hGwKMm7ElEKZh3HUvKmzR0xg3aK9kUVr4Y1myk83cBudMAI3ZdzZ/0lzCwVVv/Uaduss Ss6w== X-Forwarded-Encrypted: i=1; AJvYcCW34tQo/jiGyBtM7hbUhsqZGTqhil7bsfwmN3DcJ1IwH0KOkR/ttYnj/i1OJXL+agX7cj+jFaJu7w==@kvack.org X-Gm-Message-State: AOJu0YxsSXpKUNJwq0U4hy7hQ57ZkfOo/RoyVJscbTlJ/KF++vFlH1n9 rJjuVKXuyD20fLFIuQQWPOH5HYZCRdjEcfilLpPHlVsXbfe1sPicSVL5 X-Gm-Gg: ASbGncujJinzqOdkY8qdAtokfK2FKNgeEQhp+cNvNqsH0D1Ybe7/1zW/Di+bMt7CsUC srwsLf3JJrrEtb1bFZzRdPtf6EU2bp5h3/+fLzbZR9aztV+slk4kUx9jcjArviqs8ds3yoMer31 e7RB3KkJoDY+LCLMUbFIJrSDYmR1M4Bd9H3h7tu8XTng1pjWFpTkB2mRHEtNwrHPvBcvLjOxwua ojIBxGZ82p6x8VpxSMz42vdshJ/pEVu7cerMTNXskPG1626vvAU3IAT+2ef40jdb6sF+X70TR1w da4C5Pd/rwHpg3Dl1hGtV1sIzUjj9pOydAG5ffgy+6biW6uy X-Google-Smtp-Source: AGHT+IHIMtoPpH0aTMNDuPw4CtAj8gWgNrBxIjYiHH9b7GKsL6dv3EnaDjorXwPudxtkzQKEOIFtfg== X-Received: by 2002:a05:622a:4d4f:b0:494:b8fd:b565 with SMTP id d75a77b69052e-494b8fdb73fmr226540651cf.17.1747694033571; Mon, 19 May 2025 15:33:53 -0700 (PDT) Received: from localhost ([2a03:2880:20ff:4::]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-494ae3ccfd5sm61080091cf.2.2025.05.19.15.33.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 May 2025 15:33:53 -0700 (PDT) From: Usama Arif To: Andrew Morton , david@redhat.com, linux-mm@kvack.org Cc: hannes@cmpxchg.org, shakeel.butt@linux.dev, riel@surriel.com, ziy@nvidia.com, laoar.shao@gmail.com, baolin.wang@linux.alibaba.com, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, npache@redhat.com, ryan.roberts@arm.com, vbabka@suse.cz, jannh@google.com, Arnd Bergmann , linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, kernel-team@meta.com, Usama Arif Subject: [PATCH v3 6/7] selftests: prctl: introduce tests for PR_THP_POLICY_DEFAULT_HUGE Date: Mon, 19 May 2025 23:29:58 +0100 Message-ID: <20250519223307.3601786-7-usamaarif642@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250519223307.3601786-1-usamaarif642@gmail.com> References: <20250519223307.3601786-1-usamaarif642@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 7D223A0002 X-Stat-Signature: s8rmiuq47yth18mpx6sabndyhsa9e1pg X-Rspam-User: X-HE-Tag: 1747694034-741498 X-HE-Meta: U2FsdGVkX1+i48qYN1MVOOr8UA8YOLB3TAFjGnEDzfNXYsqqZ5nk/hPzEO4vVYoLEDVIMasDYyNq4IQOYhxsyKL7NtsMS2J+J3xXMeC97o5L2C+EAp/EqZjwqRvyxD76cDIopdM1kwPkbfhXs6OT6rp3UaERCRz60lltQUdjVcBwd5zuVi9QnO30qlZpSSuCGjdBz2/I5MoXqa68IVAIIx56+wxCTW+RPdMgC0ljpIMxzmfqtpXTh2EoPYylIKkDV2MQ5CZh9SluSCf7LmWXNmJgAaTlGAeM12LumFkRchS4AsP7ZJvJACPjwSdWy2rXJLwvG0TZjyEQU2/nLMlsNrsJh19tEzXyMuiQpglBFZs6hwEYw1nD1g7nBdl35mPwDNuUDtKvbheTXMB4xYxBnDFFwExjDhxMEDchIA641M+BA2ob+vDRPtoh56ryASQLKuay1NnLVltjuL0nch7soV2FdD3IRCNGegPj1GGMMfxq6gMD6zJMe7zC6MggKq+XSfeApOiGSxGLc+FziEgzqo2RjSj9ZjBZRQeeCENanDu8PaQYQVht1k60CWevPuGDHDkiHYE9uTfVe7CU2HXG1mlVCfFTJnAJdNXFFLBiuCyzxHXtzrxNnhnm8qus5HI7Fcs9k0VPbCAruqOGZDZ8IPCFKObH66l5EV8T67swaMBGrwY9IuCCSdHNvO329szAsKRwe9QHJZh3QEzgyak679ThlbeV0XiPAqEl7OrSWH6wREWmCXa+pmwVgZmlDku0MDqE3f/a8WHVjHLp3eAxAUDI5s2BM31PNmST9KrkzRy1oBFqqIxQ8Ux2DzeduZDtAewdM/PVZJ+tJb/G3oy9O8EcGxo3pgg18Mg49YpU4s1fVco5OeDSYk+lb9y0kvMC6OzTzJtHXuEezLHSNC7ox0PZlNpBiVyGlEN7b9c3W74ALgXuB8VCUA+LdOJElwWf8eMbzHG0RQc8UyOmnN6 rYUeL9GD 0f/CG4aFe2Rms4EXvbbzHDz/J1y1hFUvYi0lMy9hx2nbW/voilS9NQCnrNaOC0W7hhf2RBt1nStdzqimxM4NWbIouW7JKE1Ghjs7z/1JOuIqXGH3bHZtn8Rr0IVva7WCszx7PpMGq1GpMJnUAGW6D19stTP1ceF52Ba73fB9fVESslQwigpTWjfdhog== 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: The test is limited to 2M PMD THPs. It does not modify the system settings in order to not disturb other process running in the system. It runs if the PMD size is 2M, if the 2M policy is set to inherit and if the system global THP policy is set to "madvise", so that the change in behaviour due to PR_THP_POLICY_DEFAULT_HUGE can be seen. This tests if: - the process can successfully set the policy - carry it over to the new process with fork - if hugepage is gotten both with and without madvise - the process can successfully reset the policy to PR_DEFAULT_SYSTEM - if hugepage is gotten after the policy reset only with MADV_HUGEPAGE Signed-off-by: Usama Arif --- tools/testing/selftests/prctl/thp_policy.c | 74 +++++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/prctl/thp_policy.c b/tools/testing/selftests/prctl/thp_policy.c index 7791d282f7c8..62cf1fa6fd28 100644 --- a/tools/testing/selftests/prctl/thp_policy.c +++ b/tools/testing/selftests/prctl/thp_policy.c @@ -203,6 +203,77 @@ static int test_global_always_process_nohuge(void) return -1; } +/* Global policy is madvise, process is changed to HUGE (process becomes always) */ +static int test_global_madvise_process_huge(void) +{ + int is_anonhuge = 0, res = 0, status = 0; + pid_t pid; + + if (prctl(PR_SET_THP_POLICY, PR_DEFAULT_MADV_HUGEPAGE, NULL, NULL, NULL) != 0) { + perror("prctl failed to set process policy to always"); + return -1; + } + + /* Make sure prctl changes are carried across fork */ + pid = fork(); + if (pid < 0) { + perror("fork"); + exit(EXIT_FAILURE); + } + + res = prctl(PR_GET_THP_POLICY, NULL, NULL, NULL, NULL); + if (res != PR_DEFAULT_MADV_HUGEPAGE) { + printf("prctl PR_GET_THP_POLICY returned %d pid %d\n", res, pid); + goto err_out; + } + + /* global = madvise, process = always, we should get HPs irrespective of MADV_HUGEPAGE */ + is_anonhuge = test_mmap_thp(0); + if (!is_anonhuge) { + printf("PR_DEFAULT_MADV_HUGEPAGE set but didn't get hugepages\n"); + goto err_out; + } + + is_anonhuge = test_mmap_thp(1); + if (!is_anonhuge) { + printf("PR_DEFAULT_MADV_HUGEPAGE set but did't get hugepages\n"); + goto err_out; + } + + /* Reset to system policy */ + if (prctl(PR_SET_THP_POLICY, PR_DEFAULT_SYSTEM, NULL, NULL, NULL) != 0) { + perror("prctl failed to set policy to system"); + goto err_out; + } + + is_anonhuge = test_mmap_thp(0); + if (is_anonhuge) { + printf("global policy is madvise\n"); + goto err_out; + } + + is_anonhuge = test_mmap_thp(1); + if (!is_anonhuge) { + printf("global policy is madvise\n"); + goto err_out; + } + + if (pid == 0) { + exit(EXIT_SUCCESS); + } else { + wait(&status); + if (WIFEXITED(status)) + return 0; + else + return -1; + } +err_out: + if (pid == 0) + exit(EXIT_FAILURE); + else + return -1; +} + int main(void) { if (sysfs_check()) @@ -210,5 +281,6 @@ int main(void) if (system_thp_policy == SYSTEM_POLICY_ALWAYS) return test_global_always_process_nohuge(); - + else + return test_global_madvise_process_huge(); } -- 2.47.1