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 AA66DC2D0CD for ; Thu, 15 May 2025 13:35:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A2E6F6B008C; Thu, 15 May 2025 09:35:30 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 993216B008A; Thu, 15 May 2025 09:35:30 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7953E6B008C; Thu, 15 May 2025 09:35:30 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 4BC616B0089 for ; Thu, 15 May 2025 09:35:30 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 1A8F01C7D55 for ; Thu, 15 May 2025 13:35:31 +0000 (UTC) X-FDA: 83445239262.02.4C2071B Received: from mail-qt1-f174.google.com (mail-qt1-f174.google.com [209.85.160.174]) by imf29.hostedemail.com (Postfix) with ESMTP id 4A728120013 for ; Thu, 15 May 2025 13:35:29 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=iIuJLPcq; spf=pass (imf29.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.160.174 as permitted sender) smtp.mailfrom=usamaarif642@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=iIuJLPcq; spf=pass (imf29.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.160.174 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=1747316129; 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=CtvBBE4lYcv74+ivoM7qVOvxBm5IPUDZF94M62uE0Ws=; b=fnemaHNXqRDtkiMt1JxsBeVW1hNfacdiizDrfXwnmCR1jdkMmlQ9WMf3XXUzV7vH57q5ch HDBFpB2Uc/Qv7PFXkO5gnXNTGjSIH9hrHW8I1qHo5CEWkoZGZj/iEs7C2/dg64AolJGLnn u/9ZoC8tYiX5zX+iOaxc7Eo7hu76+OA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747316129; a=rsa-sha256; cv=none; b=hnnB5NQwZ0vPNM6VJpJBXKktw+6CRKKRbhG0qf5HqvFk27E6dBUWTiBrJ0BxUS6iRmhesv GCFoMQ1mLkfdASxkgvjE6zqP65tLoT3htb3hLCdFOplNMUzMP7dB9ZiiasifGM3Duh+eFl M2PzyLdJlch2WFg9JpS8YR9Uuby/LkY= Received: by mail-qt1-f174.google.com with SMTP id d75a77b69052e-48d71b77cc0so12985901cf.1 for ; Thu, 15 May 2025 06:35:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747316128; x=1747920928; 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=CtvBBE4lYcv74+ivoM7qVOvxBm5IPUDZF94M62uE0Ws=; b=iIuJLPcqmdU69B/BpWWGvAYlq/Fttye3EC9PRXZKe0vxgP0o2AUCMe2ebPY+n4v6OH M8sOcmF+OoWqXyCPSHzW1Y1qZXVW2vipUrYWL6tOlnSiPOVByg0wNfLBfcjlkPoaI3q+ RJsNzy8ApAzgxALUnJ0SpXc2x+L5N0A6QGDffgq++yytbRB+6P3R/nw7ZJRy6cBZZHLf x2nPKu8Bj+Id07Z6BbBqsp+78iMP/Dgkk2KCY77Piw0MS0llwrhvUS4swQN2KECxxajh vbLam5leUQKvPIih2R7ZBmsXBrRk96xwJYxZii5NLoFCFwZA08a8BrJnNa7a/d2s4Kz3 8Vlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747316128; x=1747920928; 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=CtvBBE4lYcv74+ivoM7qVOvxBm5IPUDZF94M62uE0Ws=; b=UzRNGlVZXj/sViO4W8UPrsr9kpkhln2TO77TB+5oCtWk9yB9hoYg7COHF0iVOSFQaj FcW7QcLp23AxqOTxXnISiCX/p+dhyhdDYun58EdDA9EckM3Un8YMYCFKkFElFrFEeFr0 beoPB51N90lr5tfZWuqisg0uC71Wj7kU1sWMqelmBae753eKAFBamcHWQ10fZIKQGskL tOJS9Ky+u3i1gdYM3q7ZeKxmjgZ9R0j6q0wFbhDOQfXKsnGJSP2gE5a5DPyYvp2J7rxr Md7gaDmo2geOQYwORoQQ7Gt41yXDf+4VpvauXtIS2HLiYqCB1AatLakiKRzyvmA5rNf0 ccPw== X-Forwarded-Encrypted: i=1; AJvYcCXaLPbrS5pVZmRs5i0K6VKT2EMazQzCdcHokEqBKVsK/TEEqXxF8BEqX2fd41BJ1IYxcLdFjcpNMg==@kvack.org X-Gm-Message-State: AOJu0YxzF4aWkG3RI/WMoywgtrPpCpuGgyxjUb224EapQigFuwm++6OT W+CZHQy7HSSJziz35eUme+K681YYIgXn+tM37xx7gwBBUalPgdQK X-Gm-Gg: ASbGncspjfDxt51xDIpmOzE9iAveM/7Yht5HQyw1JbmAZ1WAPs4nW/c2nMGKr4NfPbu OggRYm+3/PL+R5kruWK9j2rFSR/yAZL2gj48UyHX+FXFYUKJFUEDjQ3SVxlfxNFD/3WGBvZFKgD SgoHJkOIVMEohuk+TvghnqfIm91XFjr3J2KtlwrO4PjkxmaB8opWLqTA13l5HAUYtY38ZOh9cAW yB5OAW8D48lG6SIw2GHG5BdO+KUmTEZ1PLfXGas9kMivCgOcrVxTStqm8IOR9J65ez/V9WVYaHv BBPpObspRjTprSzBK0qCebtI8M+CNB9TWq/XcB9VgqsDdmrVqQ== X-Google-Smtp-Source: AGHT+IGpjYwWV/atpzk9s+akSVbxFw4jbJE0V5Wxe+VGDRYZR+hyAhZAfK6FVTg+z4k/TOeXDtcybw== X-Received: by 2002:a05:622a:1f9a:b0:48a:582a:64de with SMTP id d75a77b69052e-49495c61e14mr104644551cf.7.1747316128395; Thu, 15 May 2025 06:35:28 -0700 (PDT) Received: from localhost ([2a03:2880:20ff:72::]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-4945248964dsm92002391cf.21.2025.05.15.06.35.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 May 2025 06:35:28 -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, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, kernel-team@meta.com, Usama Arif Subject: [PATCH 5/6] selftests: prctl: introduce tests for PR_THP_POLICY_DEFAULT_HUGE Date: Thu, 15 May 2025 14:33:34 +0100 Message-ID: <20250515133519.2779639-6-usamaarif642@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250515133519.2779639-1-usamaarif642@gmail.com> References: <20250515133519.2779639-1-usamaarif642@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 4A728120013 X-Stat-Signature: so6oencqnu5koy5d3fqfip9hwg6bag61 X-Rspam-User: X-HE-Tag: 1747316129-305368 X-HE-Meta: U2FsdGVkX19gbm+MHUdK8R3lzKzLXW2JgoMsvhSk0FiuYtuAlX/fMuY+g+swF9DyWX1MpNbPInNuzYRqyoH3X9RT74stOjqhjBXksdJ+IbI7X+4QdbKvA8YIEUgbZrMUxOvGsmfZa5s5UtuUWgDvwHK8wZQ5iPTJ3DnS80DoBWBSDWIWXI9zR6LMzM4jmuOReZ3jFCBTk8qSW3b11k0wM9oZtfa+Cv+gWRObSYb2H+Ll01tczgYBnw7IleD99yxxJ0jpvfjwkJQXIc/ZMHGItaru2rtm6Ux176fzfxeaLqPidtE3biRi27J2MUAiOYunjtyhgjzhLaL43RRMgUt8vxNCjidFpUeMRYgv9S/xxWWvfyh97ixrEPHsMIIVZeb32TmRah9pS7YRLGFJ3vZf1LECyIfBjzUUveLUJF6T0qbgfwJ/bvEmOf9gKAUhv0Qu7oGPNM4HXgpgzBrBmSe8FDwp2wRS6uFNIdwA716x8V92q0oZyChcrmaHpn7AvMqtZvoOVZgfqFpAQyKbwjAKPEBeeZlCXGHy4NLtiVxW/1nLABS0H1Q7EVlyLM/f2bcRNkn6cOaTmaTuDNrYS1FasF7Iflpvbsq7PBUrQ7eAhnMgTOstztVraVmhPZcT3tk52f7UfVe4I2IqdqtvekQCLOjqkZ1lW1BAEBdwU6ZrMM/h1RV6GWl/y+MciocBGzUafkoboei5Zyvees7w1E79H54vYYxqjmcTXLgC7nQ1pEjxASca4GW2tOqSQyY/NSZgArnfgzdH0xPp+boAzDMH74ZQCO24kU2nMcGNgBdkJfsYPcpRzxjZQFNgopJQgnTHdEnBgxXrcCWoMpkHQhBOp5U4XtQKS99aqmmKJW/IcEn8zKET9RjGZR538WAUOOkV7r6xXMNXgL3RWrQifcR0B4kIut/vrrrAHS2F8ASPEcEWNgxBcPWxmLaa+sd5rWy2FmtcYn6gg6iKOwyxfLH nkuc2wO5 neD4E2bZmAop1SXtEIhySdJ7cAhUXzrps0980Wzm1GKkJrNFo7YASCaw2ZnUWvzNZeL8Z7UOAvNiSe52mHYtKxlnBFMTPPRPcyD8baYnXmZN2RyYa6lsivm/eOsJfjapGboBWOK7vjW7Sxy5edsk4tSSy7OkO5UWV/bmbEEQULnpzLYvJ+jjV+eGSZZhZdMLFtUlkDSfl45uhutufLYxbogvYo8Xaeog8sDw5d0vzdb9Xn4QN7VAqFu+78csQEaYrLBoYWPquPiUxm8fZAtKY/+SToNz4dumdB/iQVJyNGNOD9oMnjuWmA20GmiRKV8F8TBzhfbBBR5o2jy0HwMhdaCkhsEH0j4PITQW8VJMPwzB7GNQURVAyLkMidr/+YnCU8ubNnVtTok7yJ9Dm5JEulUTpWeRCOAc7LRdTj2xebjjnVlT5brwNY7qLU5EGRQEF55GW+OLxrpbxMEggurvMEJJO6GwNPyJxh1kzRuJmpv+IFAZAymZzrfEhBaQZckRspfm6mRw1oytKazYr0foCCh1kC/kC4+EGIDoph5G0OhQ0ezH3RScfhZJPbNh/F21nGHq4 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_THP_POLICY_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 e39872a6d429..65c87f99423e 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_THP_POLICY_DEFAULT_HUGE, 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_THP_POLICY_DEFAULT_HUGE) { + 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_THP_POLICY_DEFAULT_HUGE set but didn't get hugepages\n"); + goto err_out; + } + + is_anonhuge = test_mmap_thp(1); + if (!is_anonhuge) { + printf("PR_THP_POLICY_DEFAULT_HUGE set but did't get hugepages\n"); + goto err_out; + } + + /* Reset to system policy */ + if (prctl(PR_SET_THP_POLICY, PR_THP_POLICY_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