From patchwork Wed Jan 4 12:22:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tarun Sahu X-Patchwork-Id: 1721365 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=213.254.12.146; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=gNvbkK7V; dkim-atps=neutral Received: from picard.linux.it (picard.linux.it [213.254.12.146]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Nn7zQ3kx3z23f5 for ; Wed, 4 Jan 2023 23:22:58 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 6DDE23CB6CE for ; Wed, 4 Jan 2023 13:22:55 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-3.smtp.seeweb.it (in-3.smtp.seeweb.it [IPv6:2001:4b78:1:20::3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 3395C3CB698 for ; Wed, 4 Jan 2023 13:22:45 +0100 (CET) Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-3.smtp.seeweb.it (Postfix) with ESMTPS id 0B8FF1A00268 for ; Wed, 4 Jan 2023 13:22:44 +0100 (CET) Received: from pps.filterd (m0127361.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 304BGnTZ025405; Wed, 4 Jan 2023 12:22:43 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=dwlh1l2uXrvxXYIHNeeCmYYy/iGO5uNdwQWPmM/JjuE=; b=gNvbkK7VHjA4D0ObWCAUWLZoGh/Wgu7qdyD0/Hi2Dh0/6pq4OTPf+WII0a+0/vl88F56 t3TDJEHdUEij1cMWezaISrbMCiGPY+I/55FafaUbAwrEarcjgOAM0s6z9J4t6QV5DupR xZXxQn9pg3p5zMzdB0uchlyDRHP5j+Z6MwPL5eqpCONAlNbtNuzSM/NzkypO7Z7/J+Sf bDx+OKgE58EwKou8Jly6HFKEfWRe3vxYB79TI1ATO4jK0b/NCnCWfn4mWUJW31Xm7V39 jm9H6ReDTkhxf5LNiabRPBd8cTXiX3FJ/aWG25+0Y0/xcUdalTqL6lYf3o3k/dYCnfM8 Qg== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mvjvfp6v6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:22:42 +0000 Received: from m0127361.ppops.net (m0127361.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 304CIsoV034350; Wed, 4 Jan 2023 12:22:42 GMT Received: from ppma03ams.nl.ibm.com (62.31.33a9.ip4.static.sl-reverse.com [169.51.49.98]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mvjvfp6up-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:22:42 +0000 Received: from pps.filterd (ppma03ams.nl.ibm.com [127.0.0.1]) by ppma03ams.nl.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 303LShN3001912; Wed, 4 Jan 2023 12:22:40 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma03ams.nl.ibm.com (PPS) with ESMTPS id 3mtcq6d994-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:22:40 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 304CMZrE43319616 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 4 Jan 2023 12:22:35 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5DBBC20049; Wed, 4 Jan 2023 12:22:35 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C96BA20040; Wed, 4 Jan 2023 12:22:31 +0000 (GMT) Received: from tarunpc.ibmuc.com (unknown [9.43.18.9]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 4 Jan 2023 12:22:31 +0000 (GMT) From: Tarun Sahu To: ltp@lists.linux.it Date: Wed, 4 Jan 2023 17:52:12 +0530 Message-Id: <20230104122224.369467-2-tsahu@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230104122224.369467-1-tsahu@linux.ibm.com> References: <20230104122224.369467-1-tsahu@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: CMmc-7hjQVftGv6hJqBuqQicbGQt324_ X-Proofpoint-GUID: 0X6OCcR-pr2mPsW2n6CmyiegHwJdMMzw X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2023-01-04_06,2023-01-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 mlxlogscore=900 adultscore=0 impostorscore=0 mlxscore=0 phishscore=0 malwarescore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301040097 X-Virus-Scanned: clamav-milter 0.102.4 at in-3.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-3.smtp.seeweb.it Subject: [LTP] [PATCH v2 01/13] Hugetlb: Migrating libhugetlbfs mlock X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geetika@linux.ibm.com, sbhat@linux.ibm.com, aneesh.kumar@linux.ibm.com, vaibhav@linux.ibm.com, rpalethorpe@suse.com Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Migrating the libhugetlbfs/testcases/mlock.c test Test Description: The test checks that mlocking hugetlb areas works with all combinations of MAP_PRIVATE and MAP_SHARED with and without MAP_LOCKED specified. Signed-off-by: Tarun Sahu --- runtest/hugetlb | 1 + testcases/kernel/mem/.gitignore | 1 + .../kernel/mem/hugetlb/hugemmap/hugemmap20.c | 86 +++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 testcases/kernel/mem/hugetlb/hugemmap/hugemmap20.c diff --git a/runtest/hugetlb b/runtest/hugetlb index 4da1525a7..2dffa8421 100644 --- a/runtest/hugetlb +++ b/runtest/hugetlb @@ -21,6 +21,7 @@ hugemmap16 hugemmap16 hugemmap17 hugemmap17 hugemmap18 hugemmap18 hugemmap19 hugemmap19 +hugemmap20 hugemmap20 hugemmap05_1 hugemmap05 -m hugemmap05_2 hugemmap05 -s hugemmap05_3 hugemmap05 -s -m diff --git a/testcases/kernel/mem/.gitignore b/testcases/kernel/mem/.gitignore index b6b3e5ddd..dfd372892 100644 --- a/testcases/kernel/mem/.gitignore +++ b/testcases/kernel/mem/.gitignore @@ -20,6 +20,7 @@ /hugetlb/hugemmap/hugemmap17 /hugetlb/hugemmap/hugemmap18 /hugetlb/hugemmap/hugemmap19 +/hugetlb/hugemmap/hugemmap20 /hugetlb/hugeshmat/hugeshmat01 /hugetlb/hugeshmat/hugeshmat02 /hugetlb/hugeshmat/hugeshmat03 diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap20.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap20.c new file mode 100644 index 000000000..539113314 --- /dev/null +++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap20.c @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/* + * Copyright (C) 2005-2006 David Gibson & Adam Litke, IBM Corporation. + * Author: David Gibson & Adam Litke + */ + +/*\ + * [Description] + * + * The test checks that mlocking hugetlb areas works with all combinations + * of MAP_PRIVATE and MAP_SHARED with and without MAP_LOCKED specified. + */ + +#include "hugetlb.h" + +#define MNTPOINT "hugetlbfs/" +static int fd = -1; +static unsigned long hpage_size; +static struct testcase { + int flags; + char *flags_str; +} testcases[] = { + {MAP_PRIVATE, "MAP_PRIVATE"}, + {MAP_SHARED, "MAP_SHARED"}, + {MAP_PRIVATE|MAP_LOCKED, "MAP_PRIVATE|MAP_LOCKED"}, + {MAP_SHARED|MAP_LOCKED, "MAP_SHARED|MAP_LOCKED"}, +}; + +static void run_test(unsigned int num) +{ + void *p; + int flags = testcases[num].flags; + char *flags_str = testcases[num].flags_str; + int ret; + + fd = tst_creat_unlinked(MNTPOINT, 0); + p = SAFE_MMAP(0, hpage_size, PROT_READ|PROT_WRITE, flags, fd, 0); + + ret = mlock(p, hpage_size); + if (ret) { + tst_res(TFAIL|TERRNO, "mlock() failed (flags %s)", flags_str); + goto cleanup; + } + + ret = munlock(p, hpage_size); + if (ret) + tst_res(TFAIL|TERRNO, "munlock() failed (flags %s)", flags_str); + else + tst_res(TPASS, "mlock/munlock with %s hugetlb mmap", + flags_str); +cleanup: + SAFE_MUNMAP(p, hpage_size); + SAFE_CLOSE(fd); +} + +static void setup(void) +{ + struct rlimit limit_info; + + hpage_size = tst_get_hugepage_size(); + + SAFE_GETRLIMIT(RLIMIT_MEMLOCK, &limit_info); + if (limit_info.rlim_cur < hpage_size) { + limit_info.rlim_max = hpage_size; + limit_info.rlim_cur = hpage_size; + SAFE_SETRLIMIT(RLIMIT_MEMLOCK, &limit_info); + } +} + +static void cleanup(void) +{ + if (fd >= 0) + SAFE_CLOSE(fd); +} + +static struct tst_test test = { + .tcnt = ARRAY_SIZE(testcases), + .needs_root = 1, + .mntpoint = MNTPOINT, + .needs_hugetlbfs = 1, + .needs_tmpdir = 1, + .setup = setup, + .cleanup = cleanup, + .test = run_test, + .hugepages = {1, TST_NEEDS}, +}; From patchwork Wed Jan 4 12:22:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tarun Sahu X-Patchwork-Id: 1721366 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=RQHksTOf; dkim-atps=neutral Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Nn7zc51Whz23f5 for ; Wed, 4 Jan 2023 23:23:08 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 2AFB63CCDE3 for ; Wed, 4 Jan 2023 13:23:06 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-4.smtp.seeweb.it (in-4.smtp.seeweb.it [IPv6:2001:4b78:1:20::4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 6DF473CB67E for ; Wed, 4 Jan 2023 13:22:50 +0100 (CET) Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-4.smtp.seeweb.it (Postfix) with ESMTPS id 417B41000231 for ; Wed, 4 Jan 2023 13:22:48 +0100 (CET) Received: from pps.filterd (m0098399.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 304CCHw8005120; Wed, 4 Jan 2023 12:22:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=kXkhF6puSsB0XxM0EbSZ47kRiDmUYhhLcPz9RllHzA8=; b=RQHksTOfgK2yCo5wzdf1bUdJYsfs0iijtaB+i0b8XmpDM1ddjsfT8Vr/btICfKQfapEc xcP7XLBucWZ8loncapAZRJk6TKtvv1pS80xF2+1jMJ7hlA2kNCtfroqT4wzP1lySaBPW 6TeUmDHNMttPPCDoIOYoXIEZpLg4z2aZEi8+tOG+K0oD9hjAWpAzUI2gop2i9ZrvxZmp ZqEZ0qb2IZmNOoqZjL4PaYKwC+O2KqiNbxP9vZ8AF02aTuE+xLsJ21jM+CO5jAANDL1e hjUdo0z33EW/9aMGnr+jZomlAFGChJuzfa5x9uefZGMJ68OmfKk4o4DrqC+9kfGOL02B /A== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw98eg7c0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:22:46 +0000 Received: from m0098399.ppops.net (m0098399.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 304CEtIB015737; Wed, 4 Jan 2023 12:22:46 GMT Received: from ppma04ams.nl.ibm.com (63.31.33a9.ip4.static.sl-reverse.com [169.51.49.99]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw98eg7b8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:22:46 +0000 Received: from pps.filterd (ppma04ams.nl.ibm.com [127.0.0.1]) by ppma04ams.nl.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 303M1ZpC020484; Wed, 4 Jan 2023 12:22:43 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma04ams.nl.ibm.com (PPS) with ESMTPS id 3mtcq6d95d-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:22:43 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 304CMeA950266418 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 4 Jan 2023 12:22:40 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 01D602004B; Wed, 4 Jan 2023 12:22:40 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 14C8420049; Wed, 4 Jan 2023 12:22:36 +0000 (GMT) Received: from tarunpc.ibmuc.com (unknown [9.43.18.9]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 4 Jan 2023 12:22:35 +0000 (GMT) From: Tarun Sahu To: ltp@lists.linux.it Date: Wed, 4 Jan 2023 17:52:13 +0530 Message-Id: <20230104122224.369467-3-tsahu@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230104122224.369467-1-tsahu@linux.ibm.com> References: <20230104122224.369467-1-tsahu@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: vZBzjl2QoBWRi3i0JA2D70GAIc1pmWRk X-Proofpoint-GUID: STKaDUtwopkXMlU661VA-t4qRZKEW0sZ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2023-01-04_06,2023-01-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 impostorscore=0 suspectscore=0 clxscore=1015 bulkscore=0 spamscore=0 lowpriorityscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 priorityscore=1501 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301040097 X-Virus-Scanned: clamav-milter 0.102.4 at in-4.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-4.smtp.seeweb.it Subject: [LTP] [PATCH v2 02/13] Hugetlb: Migrating libhugetlbfs mmap-cow X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geetika@linux.ibm.com, sbhat@linux.ibm.com, aneesh.kumar@linux.ibm.com, vaibhav@linux.ibm.com, rpalethorpe@suse.com Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Migrating the libhugetlbfs/testcases/mmap-cow.c test Test Description: Tests copy-on-write semantics of large pages where a number of threads map the same file with the MAP_PRIVATE flag. The threads then write into their copy of the mapping and recheck the contents to ensure they were not corrupted by the other threads. Signed-off-by: Tarun Sahu Reviewed-by: Li Wang --- runtest/hugetlb | 1 + testcases/kernel/mem/.gitignore | 1 + .../kernel/mem/hugetlb/hugemmap/hugemmap21.c | 116 ++++++++++++++++++ 3 files changed, 118 insertions(+) create mode 100644 testcases/kernel/mem/hugetlb/hugemmap/hugemmap21.c diff --git a/runtest/hugetlb b/runtest/hugetlb index 2dffa8421..71b4d57e4 100644 --- a/runtest/hugetlb +++ b/runtest/hugetlb @@ -22,6 +22,7 @@ hugemmap17 hugemmap17 hugemmap18 hugemmap18 hugemmap19 hugemmap19 hugemmap20 hugemmap20 +hugemmap21 hugemmap21 hugemmap05_1 hugemmap05 -m hugemmap05_2 hugemmap05 -s hugemmap05_3 hugemmap05 -s -m diff --git a/testcases/kernel/mem/.gitignore b/testcases/kernel/mem/.gitignore index dfd372892..74edfa392 100644 --- a/testcases/kernel/mem/.gitignore +++ b/testcases/kernel/mem/.gitignore @@ -21,6 +21,7 @@ /hugetlb/hugemmap/hugemmap18 /hugetlb/hugemmap/hugemmap19 /hugetlb/hugemmap/hugemmap20 +/hugetlb/hugemmap/hugemmap21 /hugetlb/hugeshmat/hugeshmat01 /hugetlb/hugeshmat/hugeshmat02 /hugetlb/hugeshmat/hugeshmat03 diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap21.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap21.c new file mode 100644 index 000000000..ce3c5866e --- /dev/null +++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap21.c @@ -0,0 +1,116 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/* + * Copyright (C) 2005-2006 IBM Corporation. + * Author: David Gibson & Adam Litke + */ + +/*\ + * [Description] + * + * Tests copy-on-write semantics of large pages where a number of threads + * map the same file with the MAP_PRIVATE flag. The threads then write + * into their copy of the mapping and recheck the contents to ensure they + * were not corrupted by the other threads. + */ + +#include "hugetlb.h" + +#define THREADS 5 +#define NR_HUGEPAGES 6 +#define MNTPOINT "hugetlbfs/" + +static int fd = -1; +static long hpage_size; + +static void do_work(int thread, size_t size, int fd) +{ + char *addr; + size_t i; + char pattern = thread+65; + + addr = SAFE_MMAP(NULL, size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); + + tst_res(TINFO, "Thread %d (pid %d): Mapped at address %p", + thread, getpid(), addr); + + for (i = 0; i < size; i++) + memcpy((char *)addr+i, &pattern, 1); + + if (msync(addr, size, MS_SYNC)) + tst_brk(TBROK|TERRNO, "Thread %d (pid %d): msync() failed", + thread, getpid()); + + for (i = 0; i < size; i++) + if (addr[i] != pattern) { + tst_res(TFAIL, "thread %d (pid: %d): Corruption at %p; " + "Got %c, Expected %c", thread, getpid(), + &addr[i], addr[i], pattern); + goto cleanup; + } + tst_res(TINFO, "Thread %d (pid %d): Pattern verified", + thread, getpid()); + +cleanup: + SAFE_MUNMAP(addr, size); + exit(0); +} + +static void run_test(void) +{ + char *addr; + size_t size, itr; + int i, pid; + pid_t *wait_list; + + wait_list = SAFE_MALLOC(THREADS * sizeof(pid_t)); + size = (NR_HUGEPAGES / (THREADS+1)) * hpage_size; + + + /* First, mmap the file with MAP_SHARED and fill with data + * If this is not done, then the fault handler will not be + * called in the kernel since private mappings will be + * created for the children at prefault time. + */ + addr = SAFE_MMAP(NULL, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); + + for (itr = 0; itr < size; itr += 8) + memcpy(addr+itr, "deadbeef", 8); + + for (i = 0; i < THREADS; i++) { + pid = SAFE_FORK(); + + if (pid == 0) + do_work(i, size, fd); + + wait_list[i] = pid; + } + tst_reap_children(); + + SAFE_MUNMAP(addr, size); + free(wait_list); + tst_res(TPASS, "mmap COW working as expected."); +} + +static void setup(void) +{ + hpage_size = tst_get_hugepage_size(); + fd = tst_creat_unlinked(MNTPOINT, 0); +} + +static void cleanup(void) +{ + if (fd >= 1) + SAFE_CLOSE(fd); +} + +static struct tst_test test = { + .needs_root = 1, + .mntpoint = MNTPOINT, + .needs_hugetlbfs = 1, + .needs_tmpdir = 1, + .forks_child = 1, + .setup = setup, + .cleanup = cleanup, + .test_all = run_test, + .hugepages = {NR_HUGEPAGES, TST_NEEDS}, +}; From patchwork Wed Jan 4 12:22:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tarun Sahu X-Patchwork-Id: 1721367 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=q8wN+xDL; dkim-atps=neutral Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Nn7zq5mMwz23f5 for ; Wed, 4 Jan 2023 23:23:19 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id CA0443CCDE0 for ; Wed, 4 Jan 2023 13:23:17 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-4.smtp.seeweb.it (in-4.smtp.seeweb.it [217.194.8.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 8F0E23CCDDB for ; Wed, 4 Jan 2023 13:22:54 +0100 (CET) Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-4.smtp.seeweb.it (Postfix) with ESMTPS id A93EC10006AB for ; Wed, 4 Jan 2023 13:22:53 +0100 (CET) Received: from pps.filterd (m0098410.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 304CLdVE002514; Wed, 4 Jan 2023 12:22:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=c8hVUOI5Zqkg8Jxn7JZtCUSDs81E1kdalo3huTZXJm4=; b=q8wN+xDL3g1N6QjkksIG5nhXzkrqqQrKR4lKmZEdrLzu7Bxdm4hzlyWmi7Tyr/EcqhwQ ///17o8KX+HVAKKUZ4D9HoVgFEL6yx7OQIvJ1Py/jQrPM4JXEAbevAeifFiTIt5DyTvB LhtwjxhfAq03cnK1dlqysJATbtCELWWQ4EeWq2tRUY/QSmo3QUXDwayuxJj/x7TgfA5K peO0tikyrRnPyxtZbnrd/PbVj75x4YLlKgkEKrZpPl1uLXhqD1dwa2tvsgLt0R7JhVbP kA+bqmX4DLqYUCiJ7iTBKjf+SMEXRMJajs1cjsPLeQe9MYkgaI56RESRlVHv7vAByA7x 8w== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw9d480s9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:22:51 +0000 Received: from m0098410.ppops.net (m0098410.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 304CMpxX006170; Wed, 4 Jan 2023 12:22:51 GMT Received: from ppma05fra.de.ibm.com (6c.4a.5195.ip4.static.sl-reverse.com [149.81.74.108]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw9d480rg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:22:50 +0000 Received: from pps.filterd (ppma05fra.de.ibm.com [127.0.0.1]) by ppma05fra.de.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 303GwwFL027483; Wed, 4 Jan 2023 12:22:48 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma05fra.de.ibm.com (PPS) with ESMTPS id 3mtcq6kux6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:22:48 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 304CMisp39846388 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 4 Jan 2023 12:22:44 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 329B020049; Wed, 4 Jan 2023 12:22:44 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9AFBF20040; Wed, 4 Jan 2023 12:22:40 +0000 (GMT) Received: from tarunpc.ibmuc.com (unknown [9.43.18.9]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 4 Jan 2023 12:22:40 +0000 (GMT) From: Tarun Sahu To: ltp@lists.linux.it Date: Wed, 4 Jan 2023 17:52:14 +0530 Message-Id: <20230104122224.369467-4-tsahu@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230104122224.369467-1-tsahu@linux.ibm.com> References: <20230104122224.369467-1-tsahu@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: AJjgmxG-PYa6AU3BcOEI_GZmdJ0Rug5R X-Proofpoint-ORIG-GUID: Fpv51vl33J6vZUJCARwqV8Z6QQwws3DY X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2023-01-04_06,2023-01-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 malwarescore=0 adultscore=0 mlxlogscore=999 impostorscore=0 suspectscore=0 lowpriorityscore=0 mlxscore=0 bulkscore=0 priorityscore=1501 spamscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301040097 X-Virus-Scanned: clamav-milter 0.102.4 at in-4.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-4.smtp.seeweb.it Subject: [LTP] [PATCH v2 03/13] Hugetlb: Migrating libhugetlbfs mmap-gettest X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geetika@linux.ibm.com, sbhat@linux.ibm.com, aneesh.kumar@linux.ibm.com, vaibhav@linux.ibm.com, rpalethorpe@suse.com Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Migrating the libhugetlbfs/testcases/mmap-gettest.c test Test Description: This baseline test validates that a mapping of a certain size can be created, correctly. Once created, all the pages are filled with a pattern and rechecked to test for corruption. The mapping is then released. This process is repeated for a specified number of iterations. Signed-off-by: Tarun Sahu Reviewed-by: Li Wang --- runtest/hugetlb | 1 + testcases/kernel/mem/.gitignore | 1 + .../kernel/mem/hugetlb/hugemmap/hugemmap22.c | 89 +++++++++++++++++++ 3 files changed, 91 insertions(+) create mode 100644 testcases/kernel/mem/hugetlb/hugemmap/hugemmap22.c diff --git a/runtest/hugetlb b/runtest/hugetlb index 71b4d57e4..8e80db140 100644 --- a/runtest/hugetlb +++ b/runtest/hugetlb @@ -23,6 +23,7 @@ hugemmap18 hugemmap18 hugemmap19 hugemmap19 hugemmap20 hugemmap20 hugemmap21 hugemmap21 +hugemmap22 hugemmap22 hugemmap05_1 hugemmap05 -m hugemmap05_2 hugemmap05 -s hugemmap05_3 hugemmap05 -s -m diff --git a/testcases/kernel/mem/.gitignore b/testcases/kernel/mem/.gitignore index 74edfa392..0fd01dbce 100644 --- a/testcases/kernel/mem/.gitignore +++ b/testcases/kernel/mem/.gitignore @@ -22,6 +22,7 @@ /hugetlb/hugemmap/hugemmap19 /hugetlb/hugemmap/hugemmap20 /hugetlb/hugemmap/hugemmap21 +/hugetlb/hugemmap/hugemmap22 /hugetlb/hugeshmat/hugeshmat01 /hugetlb/hugeshmat/hugeshmat02 /hugetlb/hugeshmat/hugeshmat03 diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap22.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap22.c new file mode 100644 index 000000000..567d0448c --- /dev/null +++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap22.c @@ -0,0 +1,89 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/* + * Copyright (C) 2005-2006 IBM Corporation. + * Author: David Gibson & Adam Litke + */ + +/*\ + * [Description] + * + * This baseline test validates that a mapping of a certain size can be + * created, correctly. Once created, all the pages are filled with a + * pattern and rechecked to test for corruption. The mapping is then + * released. This process is repeated for a specified number of + * iterations. + */ + +#include "hugetlb.h" + +#define NR_HUGEPAGES 2 +#define MNTPOINT "hugetlbfs/" + +static unsigned long hpage_size; +static int fd = -1; + +static void run_test(unsigned int iter) +{ + char *m; + size_t i, j; + char pattern = 'A'; + size_t size = NR_HUGEPAGES*hpage_size; + + fd = tst_creat_unlinked(MNTPOINT, 0); + m = SAFE_MMAP(NULL, size, (PROT_READ|PROT_WRITE), MAP_SHARED, fd, 0); + + for (i = 0; i < NR_HUGEPAGES; i++) { + for (j = 0; j < hpage_size; j++) { + if (*(m+(i*hpage_size)+j) != 0) { + tst_res(TFAIL, "Iter %u: Verifying the mmap area failed. " + "Got %c, expected 0", iter, + *(m+(i*hpage_size)+j)); + goto cleanup; + } + } + } + for (i = 0; i < NR_HUGEPAGES; i++) { + pattern = 65+(i%26); + memset(m+(i*hpage_size), pattern, hpage_size); + } + + for (i = 0; i < NR_HUGEPAGES; i++) { + pattern = 65+(i%26); + for (j = 0; j < hpage_size; j++) { + if (*(m+(i*hpage_size)+j) != pattern) { + tst_res(TFAIL, "Iter %u: Verifying the mmap area failed. " + "got: %c, expected: %c", iter, + *(m+(i*hpage_size)+j), pattern); + goto cleanup; + } + } + } + tst_res(TPASS, "Iter %u: Successfully verified the mmap area.", iter); + +cleanup: + SAFE_MUNMAP(m, size); + SAFE_CLOSE(fd); +} + +static void setup(void) +{ + hpage_size = tst_get_hugepage_size(); +} + +static void cleanup(void) +{ + if (fd >= 0) + SAFE_CLOSE(fd); +} + +static struct tst_test test = { + .tcnt = 2, + .needs_root = 1, + .mntpoint = MNTPOINT, + .needs_hugetlbfs = 1, + .needs_tmpdir = 1, + .setup = setup, + .cleanup = cleanup, + .test = run_test, + .hugepages = {NR_HUGEPAGES, TST_NEEDS}, +}; From patchwork Wed Jan 4 12:22:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tarun Sahu X-Patchwork-Id: 1721368 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=dnmAf/5w; dkim-atps=neutral Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Nn8051rMgz23f5 for ; Wed, 4 Jan 2023 23:23:33 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 23FCF3CB67B for ; Wed, 4 Jan 2023 13:23:31 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-4.smtp.seeweb.it (in-4.smtp.seeweb.it [217.194.8.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 2E7883CCDD2 for ; Wed, 4 Jan 2023 13:22:58 +0100 (CET) Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-4.smtp.seeweb.it (Postfix) with ESMTPS id 6224310006AB for ; Wed, 4 Jan 2023 13:22:56 +0100 (CET) Received: from pps.filterd (m0098410.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 304CLfgk002648; Wed, 4 Jan 2023 12:22:55 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=H5TPspvHGGosCpimHMZiTVno5pWs6cTO8QIjSVrB4AM=; b=dnmAf/5wa4UPHNpoyEb9vAuqs/FBSlwemC/38R+P98uld761AQDcBv6UU3d1UvzKg/43 yofCiDPWgpPf33+2tRDS4LSdBzB6nvYAKvOdUivOL81jkuIcUw236WP4q1aP2P1RvsEf RvssIOCgN1vKHSIAgUk3FtzM255MjoI4RTTDSTx9bw+TKHR45EA3npLntxl4Hmj/pqXM /XdwYMKb73djTPAK0xVcKrWwLViGEuaCOuuSwhKlfymzrt16DJ3hY1lswHeulYGPcNYk AeWSS2DQN7SubTlk7TsZYzjQy4NLrjmTXyDN578z4t7kCPurPdN+vc/0+fZlnlrQ+/sI wQ== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw9d480t7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:22:55 +0000 Received: from m0098410.ppops.net (m0098410.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 304CMsMM006444; Wed, 4 Jan 2023 12:22:54 GMT Received: from ppma04fra.de.ibm.com (6a.4a.5195.ip4.static.sl-reverse.com [149.81.74.106]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw9d480sk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:22:54 +0000 Received: from pps.filterd (ppma04fra.de.ibm.com [127.0.0.1]) by ppma04fra.de.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 303JUKKo023379; Wed, 4 Jan 2023 12:22:52 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma04fra.de.ibm.com (PPS) with ESMTPS id 3mtcq6buj0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:22:51 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 304CMmUx41091568 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 4 Jan 2023 12:22:48 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5218E20049; Wed, 4 Jan 2023 12:22:48 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DCEC520043; Wed, 4 Jan 2023 12:22:44 +0000 (GMT) Received: from tarunpc.ibmuc.com (unknown [9.43.18.9]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 4 Jan 2023 12:22:44 +0000 (GMT) From: Tarun Sahu To: ltp@lists.linux.it Date: Wed, 4 Jan 2023 17:52:15 +0530 Message-Id: <20230104122224.369467-5-tsahu@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230104122224.369467-1-tsahu@linux.ibm.com> References: <20230104122224.369467-1-tsahu@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: kHnagEeYceoFSAZVlHIUDUAofF73OQ3a X-Proofpoint-ORIG-GUID: qm9IsbwITIx0pM003BS87IUXL4ui1qsO X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2023-01-04_06,2023-01-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 malwarescore=0 adultscore=0 mlxlogscore=792 impostorscore=0 suspectscore=0 lowpriorityscore=0 mlxscore=0 bulkscore=0 priorityscore=1501 spamscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301040097 X-Virus-Scanned: clamav-milter 0.102.4 at in-4.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-4.smtp.seeweb.it Subject: [LTP] [PATCH v2 04/13] Hugetlb: Migrating libhugetlbfs mprotect X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geetika@linux.ibm.com, sbhat@linux.ibm.com, aneesh.kumar@linux.ibm.com, vaibhav@linux.ibm.com, rpalethorpe@suse.com Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Migrating the libhugetlbfs/testcases/mprotect.c test Test Description: This test uses mprotect to change protection of hugepage mapping and perform read/write operation. It checks if the operation results in expected behaviour as per the protection. Signed-off-by: Tarun Sahu --- runtest/hugetlb | 1 + testcases/kernel/mem/.gitignore | 1 + .../kernel/mem/hugetlb/hugemmap/hugemmap23.c | 226 ++++++++++++++++++ testcases/kernel/mem/hugetlb/lib/hugetlb.h | 9 + 4 files changed, 237 insertions(+) create mode 100644 testcases/kernel/mem/hugetlb/hugemmap/hugemmap23.c diff --git a/runtest/hugetlb b/runtest/hugetlb index 8e80db140..8ade3c9ec 100644 --- a/runtest/hugetlb +++ b/runtest/hugetlb @@ -24,6 +24,7 @@ hugemmap19 hugemmap19 hugemmap20 hugemmap20 hugemmap21 hugemmap21 hugemmap22 hugemmap22 +hugemmap23 hugemmap23 hugemmap05_1 hugemmap05 -m hugemmap05_2 hugemmap05 -s hugemmap05_3 hugemmap05 -s -m diff --git a/testcases/kernel/mem/.gitignore b/testcases/kernel/mem/.gitignore index 0fd01dbce..ffd831f2e 100644 --- a/testcases/kernel/mem/.gitignore +++ b/testcases/kernel/mem/.gitignore @@ -23,6 +23,7 @@ /hugetlb/hugemmap/hugemmap20 /hugetlb/hugemmap/hugemmap21 /hugetlb/hugemmap/hugemmap22 +/hugetlb/hugemmap/hugemmap23 /hugetlb/hugeshmat/hugeshmat01 /hugetlb/hugeshmat/hugeshmat02 /hugetlb/hugeshmat/hugeshmat03 diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap23.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap23.c new file mode 100644 index 000000000..dcb9abff7 --- /dev/null +++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap23.c @@ -0,0 +1,226 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/* + * Copyright (C) 2005-2006 IBM Corporation. + * Author: David Gibson & Adam Litke + */ + +/*\ + * [Description] + * + * This test uses mprotect to change protection of hugepage mapping and + * perform read/write operation. It checks if the operation results in + * expected behaviour as per the protection. + */ +#include +#include "hugetlb.h" + +#define MNTPOINT "hugetlbfs/" +#define RANDOM_CONSTANT 0x1234ABCD + +static int fd = -1; +static sigjmp_buf sig_escape; +static void *sig_expected = MAP_FAILED; +static long hpage_size; +static void *addr; +static struct testcase { + char *tname; + unsigned long len1; + int prot1; + char *prot1_str; + unsigned long len2; + int prot2; + char *prot2_str; +} tcases[] = { + {"R->RW", 1, PROT_READ, "PROT_READ", + 1, PROT_READ|PROT_WRITE, "PROT_READ|PROT_WRITE"}, + + {"RW->R", 1, PROT_READ|PROT_WRITE, "PROT_READ|PROT_WRITE", + 1, PROT_READ, "PROT_READ"}, + + {"R->RW 1/2", 2, PROT_READ, "PROT_READ", + 1, PROT_READ|PROT_WRITE, "PROT_READ|PROT_WRITE"}, + + {"RW->R 1/2", 2, PROT_READ|PROT_WRITE, "PROT_READ|PROT_WRITE", + 1, PROT_READ, "PROT_READ"}, + + {"NONE->R", 1, PROT_NONE, "PROT_NONE", + 1, PROT_READ, "PROT_READ"}, + + {"NONE->RW", 1, PROT_NONE, "PROT_NONE", + 1, PROT_READ|PROT_WRITE, "PROT_READ|PROT_WRITE"}, +}; + +static void sig_handler(int signum, siginfo_t *si, void *uc) +{ + (void)uc; + if (signum == SIGSEGV) { + tst_res(TINFO, "SIGSEGV at %p (sig_expected=%p)", si->si_addr, + sig_expected); + if (si->si_addr == sig_expected) + siglongjmp(sig_escape, 1); + tst_res(TFAIL, "SIGSEGV somewhere unexpected"); + } else + tst_res(TFAIL, "Unexpected signal %s", strsignal(signum)); +} + +static int test_read(void *p) +{ + volatile unsigned long *pl = p; + unsigned long x; + + if (sigsetjmp(sig_escape, 1)) { + /* We got a SEGV */ + sig_expected = MAP_FAILED; + return -1; + } + + sig_expected = p; + barrier(); + x = *pl; + tst_res(TINFO, "Read back %lu", x); + barrier(); + sig_expected = MAP_FAILED; + return 0; +} + +static int test_write(void *p, unsigned long val) +{ + volatile unsigned long *pl = p; + unsigned long x; + + if (sigsetjmp(sig_escape, 1)) { + /* We got a SEGV */ + sig_expected = MAP_FAILED; + return -1; + } + + sig_expected = p; + barrier(); + *pl = val; + x = *pl; + barrier(); + sig_expected = MAP_FAILED; + + return (x != val); +} + +static int test_prot(void *p, int prot, char *prot_str) +{ + int r, w; + + r = test_read(p); + tst_res(TINFO, "On Read: %d", r); + w = test_write(p, RANDOM_CONSTANT); + tst_res(TINFO, "On Write: %d", w); + + if (prot & PROT_READ) { + if (r != 0) { + tst_res(TFAIL, "read failed on mmap(prot %s)", prot_str); + return -1; + } + + } else { + if (r != -1) { + tst_res(TFAIL, "read succeeded on mmap(prot %s)", prot_str); + return -1; + } + } + + if (prot & PROT_WRITE) { + switch (w) { + case -1: + tst_res(TFAIL, "write failed on mmap(prot %s)", prot_str); + return -1; + case 0: + break; + case 1: + tst_res(TFAIL, "write mismatch on mmap(prot %s)", prot_str); + return -1; + default: + tst_res(TWARN, "Bug in test"); + return -1; + } + } else { + switch (w) { + case -1: + break; + case 0: + tst_res(TFAIL, "write succeeded on mmap(prot %s)", prot_str); + return -1; + case 1: + tst_res(TFAIL, "write mismatch on mmap(prot %s)", prot_str); + return -1; + default: + tst_res(TWARN, "Bug in test"); + break; + } + } + return 0; +} + +static void run_test(unsigned int num) +{ + void *p; + int ret; + + tst_res(TINFO, "Test Name: %s", tcases[num].tname); + + p = SAFE_MMAP(NULL, tcases[num].len1*hpage_size, + tcases[num].prot1, MAP_SHARED, fd, 0); + + ret = test_prot(p, tcases[num].prot1, tcases[num].prot1_str); + if (ret) + goto cleanup; + ret = mprotect(p, tcases[num].len2*hpage_size, tcases[num].prot2); + if (ret != 0) { + tst_res(TFAIL|TERRNO, "%s: mprotect(prot %s)", + tcases[num].tname, tcases[num].prot2_str); + goto cleanup; + } + + ret = test_prot(p, tcases[num].prot2, tcases[num].prot2_str); + if (ret) + goto cleanup; + if (tcases[num].len2 < tcases[num].len1) + ret = test_prot(p + tcases[num].len2*hpage_size, tcases[num].prot1, + tcases[num].prot1_str); + + tst_res(TPASS, "Successfully tested mprotect %s", tcases[num].tname); +cleanup: + SAFE_MUNMAP(p, tcases[num].len1*hpage_size); +} + +static void setup(void) +{ + struct sigaction sa = { + .sa_sigaction = sig_handler, + .sa_flags = SA_SIGINFO, + }; + + hpage_size = tst_get_hugepage_size(); + SAFE_SIGACTION(SIGSEGV, &sa, NULL); + + fd = tst_creat_unlinked(MNTPOINT, 0); + addr = SAFE_MMAP(NULL, 2*hpage_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); + memset(addr, 0, hpage_size); + SAFE_MUNMAP(addr, hpage_size); +} + +static void cleanup(void) +{ + SAFE_MUNMAP(addr+hpage_size, hpage_size); + if (fd >= 0) + SAFE_CLOSE(fd); +} + +static struct tst_test test = { + .tcnt = ARRAY_SIZE(tcases), + .needs_root = 1, + .mntpoint = MNTPOINT, + .needs_hugetlbfs = 1, + .needs_tmpdir = 1, + .setup = setup, + .cleanup = cleanup, + .test = run_test, + .hugepages = {2, TST_NEEDS}, +}; diff --git a/testcases/kernel/mem/hugetlb/lib/hugetlb.h b/testcases/kernel/mem/hugetlb/lib/hugetlb.h index a4300f40f..efca65cd6 100644 --- a/testcases/kernel/mem/hugetlb/lib/hugetlb.h +++ b/testcases/kernel/mem/hugetlb/lib/hugetlb.h @@ -30,6 +30,15 @@ #define SHM_HUGETLB 04000 /* segment is mapped via hugetlb */ #endif +#ifndef barrier +# ifdef mb + /* Redefining the mb() */ +# define barrier() mb() +# else +# define barrier() __asm__ __volatile__ ("" : : : "memory") +# endif +#endif + /* * to get the lower nine permission bits * from shmid_ds.ipc_perm.mode From patchwork Wed Jan 4 12:22:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tarun Sahu X-Patchwork-Id: 1721369 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=213.254.12.146; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=DjSM25Yy; dkim-atps=neutral Received: from picard.linux.it (picard.linux.it [213.254.12.146]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Nn80G4DWFz23f5 for ; Wed, 4 Jan 2023 23:23:42 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id AC4C13CCDFC for ; Wed, 4 Jan 2023 13:23:40 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-3.smtp.seeweb.it (in-3.smtp.seeweb.it [217.194.8.3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 105353CCDD9 for ; Wed, 4 Jan 2023 13:23:01 +0100 (CET) Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-3.smtp.seeweb.it (Postfix) with ESMTPS id 38EC81A00881 for ; Wed, 4 Jan 2023 13:22:59 +0100 (CET) Received: from pps.filterd (m0098421.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 304CEigY014753; Wed, 4 Jan 2023 12:22:58 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=gLXstMwmzLJPRhNSzXt908nHrg3Qc100MWyU3ltVVp4=; b=DjSM25YyzkTzeUH2j7hZ0kXGjOs+AUcujcOs4Vg6X0YV5IQvduANRPlXGVhp7o1+pyQp Qj9KFH+wQ8jfuF32kDl0m4124+RREQeN1nNeLhCGDUf7IInssLOXAdOKpBAhja4lR5E1 yZngrwxOLwkz0DJDAwqEdOMPPkoVjx/KqrRhMQ4pN7ZX2qGiZ9VhP2VNc619d160w4Zo ohST9Z0sn35SPZCEXtcauGrGobMZ8KYG0zr/Wonnq10AZOZbx/Ax8IgFGSnhGZqC+eLS 22hX+O29wzHE0DqJGayxBF174jhf/2QbZllknfy96xlfLIpL9I8gkf+DmlQuYV0X+Slw fw== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw99p85ts-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:22:58 +0000 Received: from m0098421.ppops.net (m0098421.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 304CFMrY018522; Wed, 4 Jan 2023 12:22:57 GMT Received: from ppma02fra.de.ibm.com (47.49.7a9f.ip4.static.sl-reverse.com [159.122.73.71]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw99p85ta-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:22:57 +0000 Received: from pps.filterd (ppma02fra.de.ibm.com [127.0.0.1]) by ppma02fra.de.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 303H2vPC028210; Wed, 4 Jan 2023 12:22:56 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma02fra.de.ibm.com (PPS) with ESMTPS id 3mtcq6uukh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:22:56 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 304CMq3h24314250 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 4 Jan 2023 12:22:52 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4663A20040; Wed, 4 Jan 2023 12:22:52 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E087E20049; Wed, 4 Jan 2023 12:22:48 +0000 (GMT) Received: from tarunpc.ibmuc.com (unknown [9.43.18.9]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 4 Jan 2023 12:22:48 +0000 (GMT) From: Tarun Sahu To: ltp@lists.linux.it Date: Wed, 4 Jan 2023 17:52:16 +0530 Message-Id: <20230104122224.369467-6-tsahu@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230104122224.369467-1-tsahu@linux.ibm.com> References: <20230104122224.369467-1-tsahu@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: -9UR3kCblDfwY7gmqU8OfjL2mHIVzv7x X-Proofpoint-ORIG-GUID: 7uvG5b3oZ62JC5bimAYgF0whsCh3RSt9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2023-01-04_06,2023-01-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 adultscore=0 malwarescore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 suspectscore=0 spamscore=0 impostorscore=0 mlxscore=0 mlxlogscore=999 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301040102 X-Virus-Scanned: clamav-milter 0.102.4 at in-3.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-3.smtp.seeweb.it Subject: [LTP] [PATCH v2 05/13] Hugetlb: Migrating libhugetlbfs mremap-fixed-huge-near-normal X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geetika@linux.ibm.com, sbhat@linux.ibm.com, aneesh.kumar@linux.ibm.com, vaibhav@linux.ibm.com, rpalethorpe@suse.com Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Migrating the libhugetlbfs/testcases/mremap-fixed-huge-near-normal.c test Test Description: The kernel has bug for mremap() on some architecture. mremap() can cause crashes on architectures with holes in the address space (like ia64) and on powerpc with it's distinct page size "slices". This test get the normal mapping address and mremap() hugepage mapping near to this normal mapping. Signed-off-by: Tarun Sahu --- runtest/hugetlb | 1 + testcases/kernel/mem/.gitignore | 1 + .../kernel/mem/hugetlb/hugemmap/hugemmap25.c | 118 ++++++++++++++++++ testcases/kernel/mem/hugetlb/lib/hugetlb.c | 19 +++ testcases/kernel/mem/hugetlb/lib/hugetlb.h | 2 +- 5 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 testcases/kernel/mem/hugetlb/hugemmap/hugemmap25.c diff --git a/runtest/hugetlb b/runtest/hugetlb index 8ade3c9ec..65265b0fe 100644 --- a/runtest/hugetlb +++ b/runtest/hugetlb @@ -25,6 +25,7 @@ hugemmap20 hugemmap20 hugemmap21 hugemmap21 hugemmap22 hugemmap22 hugemmap23 hugemmap23 +hugemmap25 hugemmap25 hugemmap05_1 hugemmap05 -m hugemmap05_2 hugemmap05 -s hugemmap05_3 hugemmap05 -s -m diff --git a/testcases/kernel/mem/.gitignore b/testcases/kernel/mem/.gitignore index ffd831f2e..c865a1e55 100644 --- a/testcases/kernel/mem/.gitignore +++ b/testcases/kernel/mem/.gitignore @@ -24,6 +24,7 @@ /hugetlb/hugemmap/hugemmap21 /hugetlb/hugemmap/hugemmap22 /hugetlb/hugemmap/hugemmap23 +/hugetlb/hugemmap/hugemmap25 /hugetlb/hugeshmat/hugeshmat01 /hugetlb/hugeshmat/hugeshmat02 /hugetlb/hugeshmat/hugeshmat03 diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap25.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap25.c new file mode 100644 index 000000000..055a430e2 --- /dev/null +++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap25.c @@ -0,0 +1,118 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/* + * Copyright (C) 2009 IBM Corporation. + * Author: David Gibson + */ + +/*\ + * [Description] + * + * The kernel has bug for mremap() on some architecture. mremap() can + * cause crashes on architectures with holes in the address space + * (like ia64) and on powerpc with it's distinct page size "slices". + * + * This test get the normal mapping address and mremap() hugepage mapping + * near to this normal mapping. + */ + +#define _GNU_SOURCE +#include "hugetlb.h" + +#define MNTPOINT "hugetlbfs/" + +static int fd = -1; +static long hpage_size; + +static int do_remap(int fd, void *target) +{ + void *a, *b; + int ret; + + a = SAFE_MMAP(NULL, hpage_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); + + ret = do_readback(a, hpage_size, "base huge"); + if (ret) + goto cleanup; + b = mremap(a, hpage_size, hpage_size, MREMAP_MAYMOVE | MREMAP_FIXED, + target); + + if (b != MAP_FAILED) { + ret = do_readback(b, hpage_size, "remapped"); + a = b; + } else + tst_res(TINFO|TERRNO, "mremap(MAYMOVE|FIXED) disallowed"); +cleanup: + SAFE_MUNMAP(a, hpage_size); + return ret; +} + +static void *map_align(size_t size, size_t align) +{ + unsigned long xsize = size + align - getpagesize(); + size_t t; + void *p, *q; + + p = SAFE_MMAP(NULL, xsize, PROT_READ|PROT_WRITE, + MAP_SHARED | MAP_ANONYMOUS, -1, 0); + + q = PALIGN(p, align); + + t = q - p; + if (t) + SAFE_MUNMAP(p, t); + + t = p + xsize - (q + size); + if (t) + SAFE_MUNMAP(q + size, t); + + return q; +} + +static void run_test(void) +{ + void *p; + int ret; + + fd = tst_creat_unlinked(MNTPOINT, 0); + p = map_align(3*hpage_size, hpage_size); + + SAFE_MUNMAP(p, hpage_size); + SAFE_MUNMAP(p + 2*hpage_size, hpage_size); + + p = p + hpage_size; + + tst_res(TINFO, "Normal mapping at %p", p); + ret = do_readback(p, hpage_size, "base normal page"); + if (ret) + goto cleanup; + ret = do_remap(fd, p - hpage_size); + if (ret) + goto cleanup; + ret = do_remap(fd, p + hpage_size); + if (ret == 0) + tst_res(TPASS, "Successfully tested mremap hpage near normal mapping"); +cleanup: + SAFE_CLOSE(fd); +} + +static void setup(void) +{ + hpage_size = tst_get_hugepage_size(); +} + +static void cleanup(void) +{ + if (fd >= 0) + SAFE_CLOSE(fd); +} + +static struct tst_test test = { + .needs_root = 1, + .mntpoint = MNTPOINT, + .needs_hugetlbfs = 1, + .needs_tmpdir = 1, + .setup = setup, + .cleanup = cleanup, + .test_all = run_test, + .hugepages = {3, TST_NEEDS}, +}; diff --git a/testcases/kernel/mem/hugetlb/lib/hugetlb.c b/testcases/kernel/mem/hugetlb/lib/hugetlb.c index 1204f21d2..43a677ce9 100644 --- a/testcases/kernel/mem/hugetlb/lib/hugetlb.c +++ b/testcases/kernel/mem/hugetlb/lib/hugetlb.c @@ -111,3 +111,22 @@ void rm_shm(int shm_id) tst_res(TINFO, "id = %d", shm_id); } } + +#define RANDOM_CONSTANT 0x1234ABCD +int do_readback(void *p, size_t size, char *desc) +{ + unsigned int *q = p; + size_t i; + + for (i = 0; i < (size / sizeof(*q)); i++) + q[i] = RANDOM_CONSTANT ^ i; + + for (i = 0; i < (size / sizeof(*q)); i++) { + if (q[i] != (RANDOM_CONSTANT ^ i)) { + tst_res(TFAIL, "At \"%s\": Mismatch at offset 0x%lx: 0x%x " + "instead of 0x%lx", desc, i, q[i], RANDOM_CONSTANT ^ i); + return -1; + } + } + return 0; +} diff --git a/testcases/kernel/mem/hugetlb/lib/hugetlb.h b/testcases/kernel/mem/hugetlb/lib/hugetlb.h index efca65cd6..241dab708 100644 --- a/testcases/kernel/mem/hugetlb/lib/hugetlb.h +++ b/testcases/kernel/mem/hugetlb/lib/hugetlb.h @@ -50,5 +50,5 @@ extern key_t shmkey; /* an IPC key generated by ftok() */ int getipckey(void); int getuserid(char *user); void rm_shm(int shm_id); - +int do_readback(void *p, size_t size, char *desc); #endif /* hugetlb.h */ From patchwork Wed Jan 4 12:22:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tarun Sahu X-Patchwork-Id: 1721370 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=VXEfAM6+; dkim-atps=neutral Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Nn80T75Qhz23f5 for ; Wed, 4 Jan 2023 23:23:53 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 7C3503CCDFE for ; Wed, 4 Jan 2023 13:23:50 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-2.smtp.seeweb.it (in-2.smtp.seeweb.it [217.194.8.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 3F0783CCDE8 for ; Wed, 4 Jan 2023 13:23:07 +0100 (CET) Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-2.smtp.seeweb.it (Postfix) with ESMTPS id 5FE18600285 for ; Wed, 4 Jan 2023 13:23:05 +0100 (CET) Received: from pps.filterd (m0098409.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 304BqYH0008367; Wed, 4 Jan 2023 12:23:04 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=Kxt+54v+8ZcLGEkv0meJhSazoorpDMAwtLAi8D1420A=; b=VXEfAM6+ZwMgFOv06LK1zDjMPEOCNdQq8peiWSMwPoMJRkriJonMvuyEStOANd1irmoo UR3k++BVajxz0ZEUshco5030isiWj0sqmTu/aNdx1cXRYnaK1VmydEXRKcd1gSiF52VR FGuK9QemcuctRiocC4Fut2zDCAgdeW/FIrKDG6nDHM1TTqiDk7xelzyFJ4kJKhtPZkqM vWTMm3JSiM8RsmiHwVdyveDuE4fIa1IPczImdL1t7BR72NC144wX5GEmfw/PQFjcsY9C OqfLO4wZwV5BV5p3bU4Xlpk5POhKwab+I3r+dWMhhwMcVtRRJUcv49t6pQ3CbEEY7nYc yA== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw8y30ncq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:04 +0000 Received: from m0098409.ppops.net (m0098409.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 304BrkNQ010244; Wed, 4 Jan 2023 12:23:03 GMT Received: from ppma04ams.nl.ibm.com (63.31.33a9.ip4.static.sl-reverse.com [169.51.49.99]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw8y30nc4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:03 +0000 Received: from pps.filterd (ppma04ams.nl.ibm.com [127.0.0.1]) by ppma04ams.nl.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 303MoMXq020628; Wed, 4 Jan 2023 12:23:01 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma04ams.nl.ibm.com (PPS) with ESMTPS id 3mtcq6d95v-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:00 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 304CMvlK18743770 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 4 Jan 2023 12:22:57 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 683E320043; Wed, 4 Jan 2023 12:22:57 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1E54620040; Wed, 4 Jan 2023 12:22:53 +0000 (GMT) Received: from tarunpc.ibmuc.com (unknown [9.43.18.9]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 4 Jan 2023 12:22:52 +0000 (GMT) From: Tarun Sahu To: ltp@lists.linux.it Date: Wed, 4 Jan 2023 17:52:17 +0530 Message-Id: <20230104122224.369467-7-tsahu@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230104122224.369467-1-tsahu@linux.ibm.com> References: <20230104122224.369467-1-tsahu@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: RBYpygV-7tXsQz-P0QWNGTLi-Q7_TJVt X-Proofpoint-ORIG-GUID: YWXuO5fRXfeVUpNsSrDI7KiKD8xLA_hE X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2023-01-04_06,2023-01-04_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=999 priorityscore=1501 phishscore=0 lowpriorityscore=0 suspectscore=0 bulkscore=0 clxscore=1015 mlxscore=0 malwarescore=0 adultscore=0 impostorscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301040097 X-Virus-Scanned: clamav-milter 0.102.4 at in-2.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-2.smtp.seeweb.it Subject: [LTP] [PATCH v2 06/13] Hugetlb: Migrating libhugetlbfs mremap-fixed-normal-near-huge X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geetika@linux.ibm.com, sbhat@linux.ibm.com, aneesh.kumar@linux.ibm.com, vaibhav@linux.ibm.com, rpalethorpe@suse.com Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Migrating the libhugetlbfs/testcases/mremap-fixed-normal-near-huge.c test Test Description: The kernel has bug for mremap() on some architecture. mremap() can cause crashes on architectures with holes in the address space (like ia64) and on powerpc with it's distinct page size "slices". This test get the huge mapping address and mremap() normal mapping near to this huge mapping. Signed-off-by: Tarun Sahu --- runtest/hugetlb | 1 + testcases/kernel/mem/.gitignore | 1 + .../kernel/mem/hugetlb/hugemmap/hugemmap26.c | 103 ++++++++++++++++++ 3 files changed, 105 insertions(+) create mode 100644 testcases/kernel/mem/hugetlb/hugemmap/hugemmap26.c diff --git a/runtest/hugetlb b/runtest/hugetlb index 65265b0fe..55185f2f7 100644 --- a/runtest/hugetlb +++ b/runtest/hugetlb @@ -26,6 +26,7 @@ hugemmap21 hugemmap21 hugemmap22 hugemmap22 hugemmap23 hugemmap23 hugemmap25 hugemmap25 +hugemmap26 hugemmap26 hugemmap05_1 hugemmap05 -m hugemmap05_2 hugemmap05 -s hugemmap05_3 hugemmap05 -s -m diff --git a/testcases/kernel/mem/.gitignore b/testcases/kernel/mem/.gitignore index c865a1e55..4886c6a5f 100644 --- a/testcases/kernel/mem/.gitignore +++ b/testcases/kernel/mem/.gitignore @@ -25,6 +25,7 @@ /hugetlb/hugemmap/hugemmap22 /hugetlb/hugemmap/hugemmap23 /hugetlb/hugemmap/hugemmap25 +/hugetlb/hugemmap/hugemmap26 /hugetlb/hugeshmat/hugeshmat01 /hugetlb/hugeshmat/hugeshmat02 /hugetlb/hugeshmat/hugeshmat03 diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap26.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap26.c new file mode 100644 index 000000000..db2d9ce81 --- /dev/null +++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap26.c @@ -0,0 +1,103 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/* + * Copyright (C) 2009 IBM Corporation. + * Author: David Gibson + */ + +/*\ + * [Description] + * + * Test Description: The kernel has bug for mremap() on some architecture. + * mremap() can cause crashes on architectures with holes in the address + * space (like ia64) and on powerpc with it's distinct page size "slices". + * + * This test get the huge mapping address and mremap() normal mapping + * near to this huge mapping. + */ + +#define _GNU_SOURCE +#include "hugetlb.h" + +#define MNTPOINT "hugetlbfs/" + +static int fd = -1; +static long hpage_size, page_size; + +static int do_remap(void *target) +{ + void *a, *b; + int ret; + + a = SAFE_MMAP(NULL, page_size, PROT_READ|PROT_WRITE, + MAP_SHARED|MAP_ANONYMOUS, -1, 0); + + ret = do_readback(a, page_size, "base normal"); + if (ret) + goto cleanup; + b = mremap(a, page_size, page_size, MREMAP_MAYMOVE | MREMAP_FIXED, + target); + + if (b != MAP_FAILED) { + do_readback(b, page_size, "remapped"); + a = b; + } else + tst_res(TINFO|TERRNO, "mremap(MAYMOVE|FIXED) disallowed"); + +cleanup: + SAFE_MUNMAP(a, page_size); + return ret; +} + +static void run_test(void) +{ + void *p; + int ret; + + fd = tst_creat_unlinked(MNTPOINT, 0); + p = SAFE_MMAP(NULL, 3*hpage_size, PROT_READ|PROT_WRITE, MAP_SHARED, + fd, 0); + + SAFE_MUNMAP(p, hpage_size); + + SAFE_MUNMAP(p + 2*hpage_size, hpage_size); + + p = p + hpage_size; + + tst_res(TINFO, "Hugepage mapping at %p", p); + + ret = do_readback(p, hpage_size, "base hugepage"); + if (ret) + goto cleanup; + ret = do_remap(p - page_size); + if (ret) + goto cleanup; + ret = do_remap(p + hpage_size); + if (ret == 0) + tst_res(TPASS, "Successfully tested mremap normal near hpage mapping"); +cleanup: + SAFE_MUNMAP(p, hpage_size); + SAFE_CLOSE(fd); +} + +static void setup(void) +{ + hpage_size = tst_get_hugepage_size(); + page_size = getpagesize(); +} + +static void cleanup(void) +{ + if (fd >= 0) + SAFE_CLOSE(fd); +} + +static struct tst_test test = { + .needs_root = 1, + .mntpoint = MNTPOINT, + .needs_hugetlbfs = 1, + .needs_tmpdir = 1, + .setup = setup, + .cleanup = cleanup, + .test_all = run_test, + .hugepages = {3, TST_NEEDS}, +}; From patchwork Wed Jan 4 12:22:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tarun Sahu X-Patchwork-Id: 1721371 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=ZYRW/45q; dkim-atps=neutral Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Nn80k2ZTtz23f5 for ; Wed, 4 Jan 2023 23:24:06 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 6754B3CCDF6 for ; Wed, 4 Jan 2023 13:24:04 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-7.smtp.seeweb.it (in-7.smtp.seeweb.it [IPv6:2001:4b78:1:20::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id D473E3CB680 for ; Wed, 4 Jan 2023 13:23:11 +0100 (CET) Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-7.smtp.seeweb.it (Postfix) with ESMTPS id 6E6FC200740 for ; Wed, 4 Jan 2023 13:23:09 +0100 (CET) Received: from pps.filterd (m0098404.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 304Aqqc6025364; Wed, 4 Jan 2023 12:23:08 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=EQO1gIGjbX3Qra3PmenSyvqwgrbdEs+/J+1CpbH5K4I=; b=ZYRW/45qybbNKshk4+ImfHbaThxJe3vhdnT0WdO4W+FiWYLTjdA9y5V4XgqGYm5a4DJz n0hAqHSAIawc5HygoHkXxUAliq620l0AZfCuyXPLHgHK2fEFmlhFM3R3Dfw81HeDttdy vZVTWe7468x7X49eg7J9sxRULBlQJL4xCN9A/tnb1Y8SvYdR+5b+aTYlFfg9fSTP4jG6 HiABmq1tOCBSVQi0/zQn99JxDRVoZCiqfYnPyw/0X8vMY6avevpuzXIKfYkGCMC9/moI oEjs0fvHrl5hqC8m2LSSYH/+xsf3L/XZY4kT1ixgYOB8f9r73IndQQEdjMYEUoOxZJus yA== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw83bj10p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:08 +0000 Received: from m0098404.ppops.net (m0098404.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 304BkVW3018083; Wed, 4 Jan 2023 12:23:07 GMT Received: from ppma01fra.de.ibm.com (46.49.7a9f.ip4.static.sl-reverse.com [159.122.73.70]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw83bj0ys-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:07 +0000 Received: from pps.filterd (ppma01fra.de.ibm.com [127.0.0.1]) by ppma01fra.de.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 303GuGCx012120; Wed, 4 Jan 2023 12:23:05 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma01fra.de.ibm.com (PPS) with ESMTPS id 3mtcq6buh0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:04 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 304CN10246596380 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 4 Jan 2023 12:23:01 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 61FC120043; Wed, 4 Jan 2023 12:23:01 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 011CD20040; Wed, 4 Jan 2023 12:22:58 +0000 (GMT) Received: from tarunpc.ibmuc.com (unknown [9.43.18.9]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 4 Jan 2023 12:22:57 +0000 (GMT) From: Tarun Sahu To: ltp@lists.linux.it Date: Wed, 4 Jan 2023 17:52:18 +0530 Message-Id: <20230104122224.369467-8-tsahu@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230104122224.369467-1-tsahu@linux.ibm.com> References: <20230104122224.369467-1-tsahu@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: Oe7-OSYdZjaGOTfGVTkm5QC6fUeLZYkC X-Proofpoint-GUID: pf_JRR-LHTXdWgAVhhxQ37lY1CFR2wJQ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2023-01-04_06,2023-01-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 phishscore=0 adultscore=0 impostorscore=0 mlxlogscore=999 bulkscore=0 lowpriorityscore=0 suspectscore=0 clxscore=1015 mlxscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301040102 X-Virus-Scanned: clamav-milter 0.102.4 at in-7.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-7.smtp.seeweb.it Subject: [LTP] [PATCH v2 07/13] Hugetlb: Migrating libhugetlbfs noresv-reserve-resv-page X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geetika@linux.ibm.com, sbhat@linux.ibm.com, aneesh.kumar@linux.ibm.com, vaibhav@linux.ibm.com, rpalethorpe@suse.com Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Migrating the libhugetlbfs/testcases/noresv-preserve-resv-page.c test Test Description: Test to preserve a reserved page against no-reserved mapping. If all hugepages are reserved, access to no-reserved shared mapping cause a process die, instead of stealing a hugepage which is reserved for other process. Signed-off-by: Tarun Sahu --- runtest/hugetlb | 1 + testcases/kernel/mem/.gitignore | 1 + .../kernel/mem/hugetlb/hugemmap/hugemmap27.c | 121 ++++++++++++++++++ 3 files changed, 123 insertions(+) create mode 100644 testcases/kernel/mem/hugetlb/hugemmap/hugemmap27.c diff --git a/runtest/hugetlb b/runtest/hugetlb index 55185f2f7..d108542d2 100644 --- a/runtest/hugetlb +++ b/runtest/hugetlb @@ -27,6 +27,7 @@ hugemmap22 hugemmap22 hugemmap23 hugemmap23 hugemmap25 hugemmap25 hugemmap26 hugemmap26 +hugemmap27 hugemmap27 hugemmap05_1 hugemmap05 -m hugemmap05_2 hugemmap05 -s hugemmap05_3 hugemmap05 -s -m diff --git a/testcases/kernel/mem/.gitignore b/testcases/kernel/mem/.gitignore index 4886c6a5f..9862414c6 100644 --- a/testcases/kernel/mem/.gitignore +++ b/testcases/kernel/mem/.gitignore @@ -26,6 +26,7 @@ /hugetlb/hugemmap/hugemmap23 /hugetlb/hugemmap/hugemmap25 /hugetlb/hugemmap/hugemmap26 +/hugetlb/hugemmap/hugemmap27 /hugetlb/hugeshmat/hugeshmat01 /hugetlb/hugeshmat/hugeshmat02 /hugetlb/hugeshmat/hugeshmat03 diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap27.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap27.c new file mode 100644 index 000000000..42dc55558 --- /dev/null +++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap27.c @@ -0,0 +1,121 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/* + * Copyright (C) 2013 LG Electronics. + * Author: Joonsoo Kim + */ + +/*\ + * [Description] + * + * Test to preserve a reserved page against no-reserved mapping. If all + * hugepages are reserved, access to no-reserved shared mapping cause a + * process die, instead of stealing a hugepage which is reserved for other + * process. + */ + +#include + +#include "hugetlb.h" + +#define MNTPOINT "hugetlbfs/" +static long hpage_size; +static int fd1 = -1, fd2 = -1; +static sigjmp_buf sig_escape; +static void *sig_expected = MAP_FAILED; + +static void sig_handler(int signum, siginfo_t *si, void *uc) +{ + (void)uc; + if (signum == SIGBUS) { + if (si->si_addr == sig_expected) + siglongjmp(sig_escape, 1); + tst_res(TFAIL, "SIGBUS somewhere unexpected: %p (expected: %p)", + si->si_addr, sig_expected); + } else + tst_res(TFAIL, "Unexpected signal %s", strsignal(signum)); +} + +static int test_write(void *p) +{ + volatile char *pl = p; + + if (sigsetjmp(sig_escape, 1)) { + /* We got a SIGBUS */ + return 1; + } + + sig_expected = p; + barrier(); + *pl = 's'; + return 0; +} + +static void run_test(void) +{ + int nr_hugepages; + int surp_hugepages; + int ret; + char *p, *q; + struct sigaction sa = { + .sa_sigaction = sig_handler, + .sa_flags = SA_SIGINFO, + }; + + nr_hugepages = SAFE_READ_MEMINFO(MEMINFO_HPAGE_FREE); + + SAFE_SIGACTION(SIGBUS, &sa, NULL); + + p = SAFE_MMAP(NULL, hpage_size * nr_hugepages, + PROT_READ | PROT_WRITE, MAP_SHARED, fd1, 0); + + tst_res(TINFO, "Reserve all hugepages %d", nr_hugepages); + + q = SAFE_MMAP(NULL, hpage_size, + PROT_READ | PROT_WRITE, MAP_SHARED | MAP_NORESERVE, fd2, 0); + + tst_res(TINFO, "Write to %p to steal reserved page", q); + + surp_hugepages = SAFE_READ_MEMINFO(MEMINFO_HPAGE_SURP); + ret = test_write(q); + if (ret == 1) { + tst_res(TPASS, "Successful with SIGSEGV received"); + goto cleanup; + } + /* Provisioning succeeded because of overcommit */ + if (SAFE_READ_MEMINFO(MEMINFO_HPAGE_SURP) == + surp_hugepages + 1) { + tst_res(TPASS, "Successful because of surplus pages"); + goto cleanup; + } + + tst_res(TFAIL, "Steal reserved page"); +cleanup: + SAFE_MUNMAP(p, hpage_size * nr_hugepages); + SAFE_MUNMAP(q, hpage_size); +} + +static void setup(void) +{ + hpage_size = tst_get_hugepage_size(); + fd1 = tst_creat_unlinked(MNTPOINT, 0); + fd2 = tst_creat_unlinked(MNTPOINT, 0); +} + +static void cleanup(void) +{ + if (fd1 >= 0) + SAFE_CLOSE(fd1); + if (fd2 >= 0) + SAFE_CLOSE(fd2); +} + +static struct tst_test test = { + .needs_root = 1, + .mntpoint = MNTPOINT, + .needs_hugetlbfs = 1, + .needs_tmpdir = 1, + .setup = setup, + .cleanup = cleanup, + .test_all = run_test, + .hugepages = {2, TST_NEEDS}, +}; From patchwork Wed Jan 4 12:22:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tarun Sahu X-Patchwork-Id: 1721372 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=213.254.12.146; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=cRRsrYyZ; dkim-atps=neutral Received: from picard.linux.it (picard.linux.it [213.254.12.146]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Nn80x1fLQz23f5 for ; Wed, 4 Jan 2023 23:24:17 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 35CB53CCE0F for ; Wed, 4 Jan 2023 13:24:15 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-7.smtp.seeweb.it (in-7.smtp.seeweb.it [217.194.8.7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 615833CB7E3 for ; Wed, 4 Jan 2023 13:23:14 +0100 (CET) Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-7.smtp.seeweb.it (Postfix) with ESMTPS id 83865200740 for ; Wed, 4 Jan 2023 13:23:12 +0100 (CET) Received: from pps.filterd (m0098416.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 304BHHR7004005; Wed, 4 Jan 2023 12:23:11 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=Hc0snoXRtpUJTC+dQJxok7QrTVQlvAqEJ5l1Dkoo1tI=; b=cRRsrYyZtnzoWRafW7jLVcaFSbYQImHdGAd3vlE/29MZ6KZ5FnD4JmTi+xjeAMvT0KQb v5vGJyRK7yw79dydZf9K0adSNo4N5eusjJ+Tp2GqLSaaZ+C44BasQOTnZP4Wg5lh8TRA 0Knqh80KruL/QeZRKnaSryaB+wSWu2w2VeoAtR9Q/cfdn/YtIINIBIdAfmr+ZF5ucihf Ny57JlxR7WwOXr36snu76QQ3wf+aqUtr1e4ejSpq9tmIE4OemLkz+FBAS+sXls6+TtPb Ue3wRt5IuxXA9GftjedF9NgG3BjG0DGVRyN3c/+IQ4Vat/6YLXYiW8m/Y2TAyacMRST1 /w== Received: from pps.reinject (localhost [127.0.0.1]) by mx0b-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw8exsc1r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:11 +0000 Received: from m0098416.ppops.net (m0098416.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 304C0Qb7020047; Wed, 4 Jan 2023 12:23:11 GMT Received: from ppma03fra.de.ibm.com (6b.4a.5195.ip4.static.sl-reverse.com [149.81.74.107]) by mx0b-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw8exsc15-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:11 +0000 Received: from pps.filterd (ppma03fra.de.ibm.com [127.0.0.1]) by ppma03fra.de.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 303H9Tcc010837; Wed, 4 Jan 2023 12:23:09 GMT Received: from smtprelay05.fra02v.mail.ibm.com ([9.218.2.225]) by ppma03fra.de.ibm.com (PPS) with ESMTPS id 3mtcq6ku7m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:09 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay05.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 304CN5WQ42074582 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 4 Jan 2023 12:23:05 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 807E320049; Wed, 4 Jan 2023 12:23:05 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 08A3920040; Wed, 4 Jan 2023 12:23:02 +0000 (GMT) Received: from tarunpc.ibmuc.com (unknown [9.43.18.9]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 4 Jan 2023 12:23:01 +0000 (GMT) From: Tarun Sahu To: ltp@lists.linux.it Date: Wed, 4 Jan 2023 17:52:19 +0530 Message-Id: <20230104122224.369467-9-tsahu@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230104122224.369467-1-tsahu@linux.ibm.com> References: <20230104122224.369467-1-tsahu@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: esLzLXhSQLLtmHXaj1SwT3M3dlZW56jn X-Proofpoint-GUID: hXM2Ve0zej-yo-nkUABfkaX_EwvFhrOE X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2023-01-04_06,2023-01-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 bulkscore=0 spamscore=0 adultscore=0 clxscore=1015 mlxscore=0 suspectscore=0 malwarescore=0 phishscore=0 mlxlogscore=999 impostorscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301040102 X-Virus-Scanned: clamav-milter 0.102.4 at in-7.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-7.smtp.seeweb.it Subject: [LTP] [PATCH v2 08/13] Hugetlb: Migrating libhugetlbfs noresv-regarded-as-resv X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geetika@linux.ibm.com, sbhat@linux.ibm.com, aneesh.kumar@linux.ibm.com, vaibhav@linux.ibm.com, rpalethorpe@suse.com Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Migrating the libhugetlbfs/testcases/noresv-regarded-as-resv.c test Test Description: Test to correct handling for reserve count. If no reserved mapping is created to reserved file region, it should be considered as reserve mapping. Otherwise, reserve count will be overflowed. Signed-off-by: Tarun Sahu Reviewed-by: Li Wang --- runtest/hugetlb | 1 + testcases/kernel/mem/.gitignore | 1 + .../kernel/mem/hugetlb/hugemmap/hugemmap28.c | 66 +++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 testcases/kernel/mem/hugetlb/hugemmap/hugemmap28.c diff --git a/runtest/hugetlb b/runtest/hugetlb index d108542d2..95afe009e 100644 --- a/runtest/hugetlb +++ b/runtest/hugetlb @@ -28,6 +28,7 @@ hugemmap23 hugemmap23 hugemmap25 hugemmap25 hugemmap26 hugemmap26 hugemmap27 hugemmap27 +hugemmap28 hugemmap28 hugemmap05_1 hugemmap05 -m hugemmap05_2 hugemmap05 -s hugemmap05_3 hugemmap05 -s -m diff --git a/testcases/kernel/mem/.gitignore b/testcases/kernel/mem/.gitignore index 9862414c6..2f8ed0df0 100644 --- a/testcases/kernel/mem/.gitignore +++ b/testcases/kernel/mem/.gitignore @@ -27,6 +27,7 @@ /hugetlb/hugemmap/hugemmap25 /hugetlb/hugemmap/hugemmap26 /hugetlb/hugemmap/hugemmap27 +/hugetlb/hugemmap/hugemmap28 /hugetlb/hugeshmat/hugeshmat01 /hugetlb/hugeshmat/hugeshmat02 /hugetlb/hugeshmat/hugeshmat03 diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap28.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap28.c new file mode 100644 index 000000000..060d1c858 --- /dev/null +++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap28.c @@ -0,0 +1,66 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/* + * Copyright (C) 2013 LG Electronics. + * Author: Joonsoo Kim + */ + +/*\ + * [Description] + * + * Test to correct handling for reserve count. If no reserved mapping is + * created to reserved file region, it should be considered as reserve + * mapping. Otherwise, reserve count will be overflowed. + */ + +#include "hugetlb.h" + +#define MNTPOINT "hugetlbfs/" +static long hpage_size; +static int fd = -1; + +static void run_test(void) +{ + unsigned long initial_resv, end_resv; + int fd; + char *p, *q; + + initial_resv = SAFE_READ_MEMINFO(MEMINFO_HPAGE_RSVD); + + fd = tst_creat_unlinked(MNTPOINT, 0); + p = SAFE_MMAP(NULL, hpage_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); + + q = SAFE_MMAP(NULL, hpage_size, + PROT_READ | PROT_WRITE, MAP_SHARED | MAP_NORESERVE, fd, 0); + + *q = 's'; + + SAFE_MUNMAP(p, hpage_size); + SAFE_MUNMAP(q, hpage_size); + SAFE_CLOSE(fd); + + end_resv = SAFE_READ_MEMINFO(MEMINFO_HPAGE_RSVD); + + TST_EXP_EQ_LU(initial_resv, end_resv); +} + +static void setup(void) +{ + hpage_size = tst_get_hugepage_size(); +} + +static void cleanup(void) +{ + if (fd >= 0) + SAFE_CLOSE(fd); +} + +static struct tst_test test = { + .needs_root = 1, + .mntpoint = MNTPOINT, + .needs_hugetlbfs = 1, + .needs_tmpdir = 1, + .setup = setup, + .cleanup = cleanup, + .test_all = run_test, + .hugepages = {2, TST_NEEDS}, +}; From patchwork Wed Jan 4 12:22:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tarun Sahu X-Patchwork-Id: 1721373 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=UMSPZU7J; dkim-atps=neutral Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Nn8172bNWz23f5 for ; Wed, 4 Jan 2023 23:24:27 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 328B93CCE0F for ; Wed, 4 Jan 2023 13:24:25 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-7.smtp.seeweb.it (in-7.smtp.seeweb.it [IPv6:2001:4b78:1:20::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id B8FF63CCDDE for ; Wed, 4 Jan 2023 13:23:19 +0100 (CET) Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-7.smtp.seeweb.it (Postfix) with ESMTPS id 02E80200742 for ; Wed, 4 Jan 2023 13:23:18 +0100 (CET) Received: from pps.filterd (m0098399.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 304CCPHX005296; Wed, 4 Jan 2023 12:23:16 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=04BdI4ENUa92uDzFFzO+c8VSg8q+ltyexRWmx4UdcNQ=; b=UMSPZU7JFyqyOpZpFzFoPx20PRyjl29521AUVJ0LEVq2Y6Noh5dXIX9XNHOQo2Jx4mMi Qu9bLx6qpYhpZooyuY1wg7FpVtaYV0d6pnXqp/yWt3wYyQm8b9oooCtJFJEeCnfy6Uhz FrEhvVvF9z7qNuYVDVCpRXnZZTWXEWqu5+zTuWi/3JRwCPhi8dliMsKEkvqgBLAJid0f Z9PWKMDUcegfQNG0Be/WG0O6Nz7ab8CNMD77lK+J2+lLb9qDQmGxECWJYI7keDPNVZ78 WrTsETO4mn8jsMqxZxa4Lj9M5SgrEYnFEeAMxZA/9JlN+OxHmlS4yBBdjBZhstmqZrxE AA== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw98eg7p9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:16 +0000 Received: from m0098399.ppops.net (m0098399.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 304CCEca005035; Wed, 4 Jan 2023 12:23:16 GMT Received: from ppma04ams.nl.ibm.com (63.31.33a9.ip4.static.sl-reverse.com [169.51.49.99]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw98eg7n5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:15 +0000 Received: from pps.filterd (ppma04ams.nl.ibm.com [127.0.0.1]) by ppma04ams.nl.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 303Muw0s020202; Wed, 4 Jan 2023 12:23:13 GMT Received: from smtprelay02.fra02v.mail.ibm.com ([9.218.2.226]) by ppma04ams.nl.ibm.com (PPS) with ESMTPS id 3mtcq6d960-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:12 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay02.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 304CN91K44171742 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 4 Jan 2023 12:23:09 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4FF3820040; Wed, 4 Jan 2023 12:23:09 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0FD3A20049; Wed, 4 Jan 2023 12:23:06 +0000 (GMT) Received: from tarunpc.ibmuc.com (unknown [9.43.18.9]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 4 Jan 2023 12:23:05 +0000 (GMT) From: Tarun Sahu To: ltp@lists.linux.it Date: Wed, 4 Jan 2023 17:52:20 +0530 Message-Id: <20230104122224.369467-10-tsahu@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230104122224.369467-1-tsahu@linux.ibm.com> References: <20230104122224.369467-1-tsahu@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: a_YgjCBsWQFU4qxUwcDpcTlbEk8JNi5d X-Proofpoint-GUID: A7uNZejsJEPBo6KHVjxBc7iuVOpxbA9x X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2023-01-04_06,2023-01-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 impostorscore=0 suspectscore=0 clxscore=1015 bulkscore=0 spamscore=0 lowpriorityscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 priorityscore=1501 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301040097 X-Virus-Scanned: clamav-milter 0.102.4 at in-7.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-7.smtp.seeweb.it Subject: [LTP] [PATCH v2 09/13] Hugetlb: Migrating libhugetlbfs private X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geetika@linux.ibm.com, sbhat@linux.ibm.com, aneesh.kumar@linux.ibm.com, vaibhav@linux.ibm.com, rpalethorpe@suse.com Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Migrating the libhugetlbfs/testcases/private.c test Test Description: The test do mmap() with shared mapping and write. It matches the data with private mmap() and then change it with other data. It checks shared mapping data if data is not contaiminated by private mapping. Signed-off-by: Tarun Sahu Reviewed-by: Li Wang --- runtest/hugetlb | 1 + testcases/kernel/mem/.gitignore | 1 + .../kernel/mem/hugetlb/hugemmap/hugemmap29.c | 107 ++++++++++++++++++ 3 files changed, 109 insertions(+) create mode 100644 testcases/kernel/mem/hugetlb/hugemmap/hugemmap29.c diff --git a/runtest/hugetlb b/runtest/hugetlb index 95afe009e..6ec8d1018 100644 --- a/runtest/hugetlb +++ b/runtest/hugetlb @@ -29,6 +29,7 @@ hugemmap25 hugemmap25 hugemmap26 hugemmap26 hugemmap27 hugemmap27 hugemmap28 hugemmap28 +hugemmap29 hugemmap29 hugemmap05_1 hugemmap05 -m hugemmap05_2 hugemmap05 -s hugemmap05_3 hugemmap05 -s -m diff --git a/testcases/kernel/mem/.gitignore b/testcases/kernel/mem/.gitignore index 2f8ed0df0..fef0a76d6 100644 --- a/testcases/kernel/mem/.gitignore +++ b/testcases/kernel/mem/.gitignore @@ -28,6 +28,7 @@ /hugetlb/hugemmap/hugemmap26 /hugetlb/hugemmap/hugemmap27 /hugetlb/hugemmap/hugemmap28 +/hugetlb/hugemmap/hugemmap29 /hugetlb/hugeshmat/hugeshmat01 /hugetlb/hugeshmat/hugeshmat02 /hugetlb/hugeshmat/hugeshmat03 diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap29.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap29.c new file mode 100644 index 000000000..6bff2c8e6 --- /dev/null +++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap29.c @@ -0,0 +1,107 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/* + * Copyright (C) 2005-2006 IBM Corporation. + * Author: David Gibson & Adam Litke + */ + +/*\ + * [Description] + * + * The test do mmap() with shared mapping and write. It matches the data + * with private mmap() and then change it with other data. It checks + * shared mapping data if data is not contaiminated by private mapping. + * Similiarly checks for private data if it is not contaminated by changing + * shared mmap data. + */ + +#include "hugetlb.h" + +#define C1 0x1234ABCD +#define C2 0xFEDC9876 + +#define MNTPOINT "hugetlbfs/" +static unsigned long hpage_size; +static int fd = -1; + +static void run_test(void) +{ + void *p, *q; + unsigned int *pl, *ql; + unsigned long i; + + fd = tst_creat_unlinked(MNTPOINT, 0); + p = SAFE_MMAP(NULL, hpage_size, PROT_READ|PROT_WRITE, MAP_SHARED, + fd, 0); + + pl = p; + for (i = 0; i < (hpage_size / sizeof(*pl)); i++) + pl[i] = C1 ^ i; + + q = SAFE_MMAP(NULL, hpage_size, PROT_READ|PROT_WRITE, MAP_PRIVATE, + fd, 0); + + ql = q; + for (i = 0; i < (hpage_size / sizeof(*ql)); i++) { + if (ql[i] != (C1 ^ i)) { + tst_res(TFAIL, "Mismatch at offset %lu, got: %u, expected: %lu", + i, ql[i], C1 ^ i); + goto cleanup; + } + } + + for (i = 0; i < (hpage_size / sizeof(*ql)); i++) + ql[i] = C2 ^ i; + + for (i = 0; i < (hpage_size / sizeof(*ql)); i++) { + if (ql[i] != (C2 ^ i)) { + tst_res(TFAIL, "PRIVATE mismatch at offset %lu, got: %u, expected: %lu", + i, ql[i], C2 ^ i); + goto cleanup; + } + } + + for (i = 0; i < (hpage_size / sizeof(*pl)); i++) { + if (pl[i] != (C1 ^ i)) { + tst_res(TFAIL, "SHARED map contaminated at offset %lu, " + "got: %u, expected: %lu", i, pl[i], C1 ^ i); + goto cleanup; + } + } + + memset(p, 0, hpage_size); + + for (i = 0; i < (hpage_size / sizeof(*ql)); i++) { + if (ql[i] != (C2 ^ i)) { + tst_res(TFAIL, "PRIVATE map contaminated at offset %lu, " + "got: %u, expected: %lu", i, ql[i], C2 ^ i); + goto cleanup; + } + } + tst_res(TPASS, "Successfully tested shared/private mmaping and its data"); +cleanup: + SAFE_MUNMAP(p, hpage_size); + SAFE_MUNMAP(q, hpage_size); + SAFE_CLOSE(fd); +} + +static void setup(void) +{ + hpage_size = tst_get_hugepage_size(); +} + +static void cleanup(void) +{ + if (fd >= 0) + SAFE_CLOSE(fd); +} + +static struct tst_test test = { + .needs_root = 1, + .mntpoint = MNTPOINT, + .needs_hugetlbfs = 1, + .needs_tmpdir = 1, + .setup = setup, + .cleanup = cleanup, + .test_all = run_test, + .hugepages = {2, TST_NEEDS}, +}; From patchwork Wed Jan 4 12:22:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tarun Sahu X-Patchwork-Id: 1721374 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=213.254.12.146; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=Sliq5+JY; dkim-atps=neutral Received: from picard.linux.it (picard.linux.it [213.254.12.146]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Nn81L2Rgbz23f5 for ; Wed, 4 Jan 2023 23:24:38 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 66E4D3CCE1E for ; Wed, 4 Jan 2023 13:24:36 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-5.smtp.seeweb.it (in-5.smtp.seeweb.it [IPv6:2001:4b78:1:20::5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384) server-digest SHA384) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 92EC33CCDDF for ; Wed, 4 Jan 2023 13:23:23 +0100 (CET) Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-5.smtp.seeweb.it (Postfix) with ESMTPS id 331A760073B for ; Wed, 4 Jan 2023 13:23:21 +0100 (CET) Received: from pps.filterd (m0098409.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 304BqeGM008585; Wed, 4 Jan 2023 12:23:20 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=OucA6jNyU7hUo2VOveCyByVOMrCH3+sS4UG2xuImG8s=; b=Sliq5+JY69dukrMca99Y6twbDcO1SqY4nKgzAw8IpXBMyw4LGldLbLsE0zH6pgRiv9n5 uY/tMdZJVzgodanGy3N7uTjDaLCLBJDPIdlCN1HCiGSyzLWk5Hj0FnbscqdfVaUd7f/e +bFgWMa4Uhk3uVRrqhXbxKGym9h5GiirECCXEY/Zv5BQDj5YKN6Bz7n6sVfdXp593wbE DD5ZDjQBjVbGluTMFicdp+2/NVxepa/Pzohi04tmfpVpZSH2TSLhnD2fdGJdH1qj+xYN 3P8jnEtOpe6EcMVF5jDR+JHApN6XUsS15gERGIEXhA4UK9DYWO+CtMKxwes45BKxOWGc lQ== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw8y30njy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:19 +0000 Received: from m0098409.ppops.net (m0098409.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 304BqmQM008738; Wed, 4 Jan 2023 12:23:19 GMT Received: from ppma04ams.nl.ibm.com (63.31.33a9.ip4.static.sl-reverse.com [169.51.49.99]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw8y30nj9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:19 +0000 Received: from pps.filterd (ppma04ams.nl.ibm.com [127.0.0.1]) by ppma04ams.nl.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 303MoMXs020628; Wed, 4 Jan 2023 12:23:17 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma04ams.nl.ibm.com (PPS) with ESMTPS id 3mtcq6d963-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:17 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 304CNDvj21496126 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 4 Jan 2023 12:23:13 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 8108A20040; Wed, 4 Jan 2023 12:23:13 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2B15520043; Wed, 4 Jan 2023 12:23:10 +0000 (GMT) Received: from tarunpc.ibmuc.com (unknown [9.43.18.9]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 4 Jan 2023 12:23:09 +0000 (GMT) From: Tarun Sahu To: ltp@lists.linux.it Date: Wed, 4 Jan 2023 17:52:21 +0530 Message-Id: <20230104122224.369467-11-tsahu@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230104122224.369467-1-tsahu@linux.ibm.com> References: <20230104122224.369467-1-tsahu@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: DEhxAtphXls-vZKvjYUO_12-tG38r2tZ X-Proofpoint-ORIG-GUID: M8jNva7fTrTDenynC1u9Yf6rYvDIjtXp X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2023-01-04_06,2023-01-04_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=999 priorityscore=1501 phishscore=0 lowpriorityscore=0 suspectscore=0 bulkscore=0 clxscore=1015 mlxscore=0 malwarescore=0 adultscore=0 impostorscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301040097 X-Virus-Scanned: clamav-milter 0.102.4 at in-5.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-5.smtp.seeweb.it Subject: [LTP] [PATCH v2 10/13] Hugetlb: Migrating libhugetlbfs readahead_reserve X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geetika@linux.ibm.com, sbhat@linux.ibm.com, aneesh.kumar@linux.ibm.com, vaibhav@linux.ibm.com, rpalethorpe@suse.com Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Migrating the libhugetlbfs/testcases/readahead_reserve.c test Test Description: readahead() on some kernels can cause the reservation counter to get corrupted. The problem is that the patches are allocated for the reservation but not faulted in at the time of allocation. The counters do not get updated and effectively "leak". This test identifies whether the kernel is vulnerable to the problem or not. It's fixed in kernel by 'commit f2deae9d4e70 ("Remove implementation of readpage from the hugetlbfs_aops")'. Signed-off-by: Tarun Sahu Reviewed-by: Li Wang --- runtest/hugetlb | 1 + testcases/kernel/mem/.gitignore | 1 + .../kernel/mem/hugetlb/hugemmap/hugemmap30.c | 75 +++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 testcases/kernel/mem/hugetlb/hugemmap/hugemmap30.c diff --git a/runtest/hugetlb b/runtest/hugetlb index 6ec8d1018..60cca4eb7 100644 --- a/runtest/hugetlb +++ b/runtest/hugetlb @@ -30,6 +30,7 @@ hugemmap26 hugemmap26 hugemmap27 hugemmap27 hugemmap28 hugemmap28 hugemmap29 hugemmap29 +hugemmap30 hugemmap30 hugemmap05_1 hugemmap05 -m hugemmap05_2 hugemmap05 -s hugemmap05_3 hugemmap05 -s -m diff --git a/testcases/kernel/mem/.gitignore b/testcases/kernel/mem/.gitignore index fef0a76d6..bb9720452 100644 --- a/testcases/kernel/mem/.gitignore +++ b/testcases/kernel/mem/.gitignore @@ -29,6 +29,7 @@ /hugetlb/hugemmap/hugemmap27 /hugetlb/hugemmap/hugemmap28 /hugetlb/hugemmap/hugemmap29 +/hugetlb/hugemmap/hugemmap30 /hugetlb/hugeshmat/hugeshmat01 /hugetlb/hugeshmat/hugeshmat02 /hugetlb/hugeshmat/hugeshmat03 diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap30.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap30.c new file mode 100644 index 000000000..7ed9046f3 --- /dev/null +++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap30.c @@ -0,0 +1,75 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/* + * Copyright (C) 2005-2006 IBM Corporation. + * Author: Mel Gorman + */ + +/*\ + * [Description] + * + * readahead() on some kernels can cause the reservation counter to get + * corrupted. The problem is that the pages are allocated for the + * reservation but not faulted in at the time of allocation. The + * counters do not get updated and effectively "leak". This test + * identifies whether the kernel is vulnerable to the problem or not. + * It's fixed in kernel by commit f2deae9d4e70. + */ + +#define _GNU_SOURCE +#include "hugetlb.h" + +#define MNTPOINT "hugetlbfs/" +static long hpage_size; +static int fd = -1; + +static void run_test(void) +{ + void *p; + unsigned long initial_rsvd, map_rsvd, readahead_rsvd, end_rsvd; + + fd = tst_creat_unlinked(MNTPOINT, 0); + initial_rsvd = SAFE_READ_MEMINFO(MEMINFO_HPAGE_RSVD); + + p = SAFE_MMAP(NULL, hpage_size, PROT_READ|PROT_WRITE, MAP_SHARED, + fd, 0); + map_rsvd = SAFE_READ_MEMINFO(MEMINFO_HPAGE_RSVD); + tst_res(TINFO, "map_rsvd: %lu", map_rsvd); + + readahead(fd, 0, hpage_size); + readahead_rsvd = SAFE_READ_MEMINFO(MEMINFO_HPAGE_RSVD); + tst_res(TINFO, "readahead_rsvd: %lu", readahead_rsvd); + + memset(p, 1, hpage_size); + + SAFE_MUNMAP(p, hpage_size); + SAFE_CLOSE(fd); + end_rsvd = SAFE_READ_MEMINFO(MEMINFO_HPAGE_RSVD); + + TST_EXP_EQ_LU(end_rsvd, initial_rsvd); +} + +static void setup(void) +{ + hpage_size = tst_get_hugepage_size(); +} + +static void cleanup(void) +{ + if (fd >= 0) + SAFE_CLOSE(fd); +} + +static struct tst_test test = { + .tags = (struct tst_tag[]) { + {"linux-git", "f2deae9d4e70"}, + {} + }, + .needs_root = 1, + .mntpoint = MNTPOINT, + .needs_hugetlbfs = 1, + .needs_tmpdir = 1, + .setup = setup, + .cleanup = cleanup, + .test_all = run_test, + .hugepages = {1, TST_NEEDS}, +}; From patchwork Wed Jan 4 12:22:22 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tarun Sahu X-Patchwork-Id: 1721376 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=FUBN8BcT; dkim-atps=neutral Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Nn81m65tGz23f5 for ; Wed, 4 Jan 2023 23:25:00 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id AC0063CE093 for ; Wed, 4 Jan 2023 13:24:58 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-7.smtp.seeweb.it (in-7.smtp.seeweb.it [217.194.8.7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 784703CCDE0 for ; Wed, 4 Jan 2023 13:23:30 +0100 (CET) Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-7.smtp.seeweb.it (Postfix) with ESMTPS id A24BB200751 for ; Wed, 4 Jan 2023 13:23:29 +0100 (CET) Received: from pps.filterd (m0098419.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 304BUALU025032; Wed, 4 Jan 2023 12:23:28 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=gWeuI8LfWQG2s6fayEbZX9cPlamT3crXpCNmwiLzBGU=; b=FUBN8BcTWqZCPq/pLMzaDpFxK7wQ1xpDL5pxzCkoy2xUSYzBml1WpCL/kaJgEdyCTfbW 8DFUi/YYMkHZEF1KLP0PnnfVn9iOkua+BXr3Z+8CnVeqXsA2AAxhS5cRZtQl1fBSEykN sbonb/gx9RRvKZjqxSnlOc+7U+ME5siUGgH3TFDsHYnO72McVVXms+nxz1R8JD4Efu6d PaHj0PICoxfSc91/aHxBFHtf//D+jgX0B6Lr9W3JaUgs3AAdABppQ2ods/wm8ik2r+03 xgvHSHqqmyqUoQEnago70qoIvINoAUe+YZ1/Tk/xw9cXXZZf7MMhAcbCSC80/nEk7+va eg== Received: from pps.reinject (localhost [127.0.0.1]) by mx0b-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw8mp93t4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:28 +0000 Received: from m0098419.ppops.net (m0098419.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 304BisuY016903; Wed, 4 Jan 2023 12:23:27 GMT Received: from ppma03fra.de.ibm.com (6b.4a.5195.ip4.static.sl-reverse.com [149.81.74.107]) by mx0b-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw8mp93s8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:27 +0000 Received: from pps.filterd (ppma03fra.de.ibm.com [127.0.0.1]) by ppma03fra.de.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 303GYFTG022838; Wed, 4 Jan 2023 12:23:26 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma03fra.de.ibm.com (PPS) with ESMTPS id 3mtcq6ku87-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:25 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 304CNHqT32047444 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 4 Jan 2023 12:23:17 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 397D220040; Wed, 4 Jan 2023 12:23:17 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0AF8D20043; Wed, 4 Jan 2023 12:23:14 +0000 (GMT) Received: from tarunpc.ibmuc.com (unknown [9.43.18.9]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 4 Jan 2023 12:23:13 +0000 (GMT) From: Tarun Sahu To: ltp@lists.linux.it Date: Wed, 4 Jan 2023 17:52:22 +0530 Message-Id: <20230104122224.369467-12-tsahu@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230104122224.369467-1-tsahu@linux.ibm.com> References: <20230104122224.369467-1-tsahu@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: EVrJYJAixjTpLb6PXSpBZPasg484Qgrw X-Proofpoint-GUID: tuASj3WBRnlGTLEh_6-xv4Z2HDesNbbX X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2023-01-04_06,2023-01-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 malwarescore=0 adultscore=0 clxscore=1015 suspectscore=0 lowpriorityscore=0 priorityscore=1501 mlxlogscore=975 mlxscore=0 impostorscore=0 bulkscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301040102 X-Virus-Scanned: clamav-milter 0.102.4 at in-7.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-7.smtp.seeweb.it Subject: [LTP] [PATCH v2 11/13] Hugetlb: Migrating libhugetlbfs shared X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geetika@linux.ibm.com, sbhat@linux.ibm.com, aneesh.kumar@linux.ibm.com, vaibhav@linux.ibm.com, rpalethorpe@suse.com Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Migrating the libhugetlbfs/testcases/shared.c test Test Description: This test is basic shared mapping test. Two shared mappings are created with same offset on a file. It checks if writing to one mapping can be seen to other mapping or not? Signed-off-by: Tarun Sahu Reviewed-by: Li Wang --- runtest/hugetlb | 1 + testcases/kernel/mem/.gitignore | 1 + .../kernel/mem/hugetlb/hugemmap/hugemmap31.c | 76 +++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 testcases/kernel/mem/hugetlb/hugemmap/hugemmap31.c diff --git a/runtest/hugetlb b/runtest/hugetlb index 60cca4eb7..33fd384b4 100644 --- a/runtest/hugetlb +++ b/runtest/hugetlb @@ -31,6 +31,7 @@ hugemmap27 hugemmap27 hugemmap28 hugemmap28 hugemmap29 hugemmap29 hugemmap30 hugemmap30 +hugemmap31 hugemmap31 hugemmap05_1 hugemmap05 -m hugemmap05_2 hugemmap05 -s hugemmap05_3 hugemmap05 -s -m diff --git a/testcases/kernel/mem/.gitignore b/testcases/kernel/mem/.gitignore index bb9720452..8375389cd 100644 --- a/testcases/kernel/mem/.gitignore +++ b/testcases/kernel/mem/.gitignore @@ -30,6 +30,7 @@ /hugetlb/hugemmap/hugemmap28 /hugetlb/hugemmap/hugemmap29 /hugetlb/hugemmap/hugemmap30 +/hugetlb/hugemmap/hugemmap31 /hugetlb/hugeshmat/hugeshmat01 /hugetlb/hugeshmat/hugeshmat02 /hugetlb/hugeshmat/hugeshmat03 diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap31.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap31.c new file mode 100644 index 000000000..9072e9de4 --- /dev/null +++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap31.c @@ -0,0 +1,76 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/* + * Copyright (C) 2005-2006 IBM Corporation. + * Author: David Gibson & Adam Litke + */ + +/*\ + * [Description] + * + * This test is basic shared mapping test. Two shared mappings are created + * with same offset on a file. It checks if writing to one mapping can be + * seen to other mapping or not? + */ + +#include "hugetlb.h" + +#define RANDOM_CONSTANT 0x1234ABCD +#define MNTPOINT "hugetlbfs/" + +static long hpage_size; +static int fd = -1; + +static void run_test(void) +{ + void *p, *q; + unsigned long *pl, *ql; + unsigned long i; + + fd = tst_creat_unlinked(MNTPOINT, 0); + p = SAFE_MMAP(NULL, hpage_size, PROT_READ|PROT_WRITE, MAP_SHARED, + fd, 0); + + q = SAFE_MMAP(NULL, hpage_size, PROT_READ|PROT_WRITE, MAP_SHARED, + fd, 0); + + pl = p; + for (i = 0; i < (hpage_size / sizeof(*pl)); i++) + pl[i] = RANDOM_CONSTANT ^ i; + + ql = q; + for (i = 0; i < (hpage_size / sizeof(*ql)); i++) { + if (ql[i] != (RANDOM_CONSTANT ^ i)) { + tst_res(TFAIL, "Mismatch at offset %lu, Got: %lu, Expected: %lu", + i, ql[i], RANDOM_CONSTANT ^ i); + goto cleanup; + } + } + + tst_res(TPASS, "Successfully tested data between two shared mappings"); +cleanup: + SAFE_MUNMAP(p, hpage_size); + SAFE_MUNMAP(q, hpage_size); + SAFE_CLOSE(fd); +} + +static void setup(void) +{ + hpage_size = tst_get_hugepage_size(); +} + +static void cleanup(void) +{ + if (fd >= 0) + SAFE_CLOSE(fd); +} + +static struct tst_test test = { + .needs_root = 1, + .mntpoint = MNTPOINT, + .needs_hugetlbfs = 1, + .needs_tmpdir = 1, + .setup = setup, + .cleanup = cleanup, + .test_all = run_test, + .hugepages = {2, TST_NEEDS}, +}; From patchwork Wed Jan 4 12:22:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tarun Sahu X-Patchwork-Id: 1721375 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=Ak7DG5a3; dkim-atps=neutral Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Nn81Z1JBYz23f5 for ; Wed, 4 Jan 2023 23:24:50 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 30B7C3CE074 for ; Wed, 4 Jan 2023 13:24:48 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-4.smtp.seeweb.it (in-4.smtp.seeweb.it [IPv6:2001:4b78:1:20::4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 7F6FA3CCDE6 for ; Wed, 4 Jan 2023 13:23:30 +0100 (CET) Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-4.smtp.seeweb.it (Postfix) with ESMTPS id 2BFA31000231 for ; Wed, 4 Jan 2023 13:23:28 +0100 (CET) Received: from pps.filterd (m0098417.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 304BtmXq028031; Wed, 4 Jan 2023 12:23:27 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=Bo8v0K5NVFIbvVTHsgRzkkicGInGpoSw6oQm+aoNXL8=; b=Ak7DG5a3W6aJYIbm0RBrCBUCDH8XvH/VC3bgbYDNTO3kTtA+q6+5WVLvR2IUohsbIhBw cT4sd7Z33G9BxaSF9XQI/r8hTfO9Evgr4s1715fZTi0OGYehFdyXaQir6RbRfkhhh4IX jqoK0GsXJTGoshaKqCK1THzl3v0aaN2kPmCR776eLOAQDo8Zty37xbAT6fWEpjG/67Rj Bm+Ow8AI7VVAwWHRkJootXUqEVrMQFp4GycEuNr0R6MyUFZq+yDyv9+wih7xt/GcrE9A KULjm8YJSyR74pMDG0gtnbz2y16wyPHC93qV5DmHA8/Jxo8vUyZh45ObU/xH5SDBmYp8 3Q== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw90xrmga-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:27 +0000 Received: from m0098417.ppops.net (m0098417.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 304Bu77v028421; Wed, 4 Jan 2023 12:23:26 GMT Received: from ppma03fra.de.ibm.com (6b.4a.5195.ip4.static.sl-reverse.com [149.81.74.107]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw90xrmfp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:26 +0000 Received: from pps.filterd (ppma03fra.de.ibm.com [127.0.0.1]) by ppma03fra.de.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 3047AFF4000437; Wed, 4 Jan 2023 12:23:25 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma03fra.de.ibm.com (PPS) with ESMTPS id 3mtcq6ku86-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:24 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 304CNLpb49873344 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 4 Jan 2023 12:23:21 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1F0312004B; Wed, 4 Jan 2023 12:23:21 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id CF81C20040; Wed, 4 Jan 2023 12:23:17 +0000 (GMT) Received: from tarunpc.ibmuc.com (unknown [9.43.18.9]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 4 Jan 2023 12:23:17 +0000 (GMT) From: Tarun Sahu To: ltp@lists.linux.it Date: Wed, 4 Jan 2023 17:52:23 +0530 Message-Id: <20230104122224.369467-13-tsahu@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230104122224.369467-1-tsahu@linux.ibm.com> References: <20230104122224.369467-1-tsahu@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: KshtRWMXw7K3BoqEwhm23O6zHUgg4JSI X-Proofpoint-GUID: RETdYzA0pTIYFCru72naqSwrOCqzBm0l X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2023-01-04_06,2023-01-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxscore=0 mlxlogscore=999 priorityscore=1501 bulkscore=0 spamscore=0 clxscore=1015 suspectscore=0 adultscore=0 malwarescore=0 impostorscore=0 lowpriorityscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301040097 X-Virus-Scanned: clamav-milter 0.102.4 at in-4.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-4.smtp.seeweb.it Subject: [LTP] [PATCH v2 12/13] Hugetlb: Migrating libhugetlbfs shm-fork X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geetika@linux.ibm.com, sbhat@linux.ibm.com, aneesh.kumar@linux.ibm.com, vaibhav@linux.ibm.com, rpalethorpe@suse.com Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Migrating the libhugetlbfs/testcases/shm-fork.c test Test Description: Test shared memory behavior when multiple threads are Test shared memory behavior when multiple threads are attached to a segment. A segment is created and then children are spawned which attach, write, read (verify), and detach from the shared memory segment. Signed-off-by: Tarun Sahu --- runtest/hugetlb | 1 + testcases/kernel/mem/.gitignore | 1 + .../kernel/mem/hugetlb/hugefork/hugefork02.c | 90 +++++++++++++++++++ 3 files changed, 92 insertions(+) create mode 100644 testcases/kernel/mem/hugetlb/hugefork/hugefork02.c diff --git a/runtest/hugetlb b/runtest/hugetlb index 33fd384b4..6d63fec5d 100644 --- a/runtest/hugetlb +++ b/runtest/hugetlb @@ -2,6 +2,7 @@ hugefallocate01 hugefallocate01 hugefallocate02 hugefallocate02 hugefork01 hugefork01 +hugefork02 hugefork02 hugemmap01 hugemmap01 hugemmap02 hugemmap02 diff --git a/testcases/kernel/mem/.gitignore b/testcases/kernel/mem/.gitignore index 8375389cd..0c1311303 100644 --- a/testcases/kernel/mem/.gitignore +++ b/testcases/kernel/mem/.gitignore @@ -2,6 +2,7 @@ /hugetlb/hugefallocate/hugefallocate01 /hugetlb/hugefallocate/hugefallocate02 /hugetlb/hugefork/hugefork01 +/hugetlb/hugefork/hugefork02 /hugetlb/hugemmap/hugemmap01 /hugetlb/hugemmap/hugemmap02 /hugetlb/hugemmap/hugemmap04 diff --git a/testcases/kernel/mem/hugetlb/hugefork/hugefork02.c b/testcases/kernel/mem/hugetlb/hugefork/hugefork02.c new file mode 100644 index 000000000..e356a256f --- /dev/null +++ b/testcases/kernel/mem/hugetlb/hugefork/hugefork02.c @@ -0,0 +1,90 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/* + * Copyright (C) 2005-2006 David Gibson & Adam Litke, IBM Corporation. + * Author: David Gibson & Adam Litke + */ + +/*\ + * [Description] + * + * Test shared memory behavior when multiple threads are attached to a + * segment. A segment is created and then children are spawned which + * attach, write, read (verify), and detach from the shared memory segment. + */ + +#include "tst_safe_sysv_ipc.h" +#include "hugetlb.h" + +static int shmid = -1; + +#define NR_HUGEPAGES 5 +#define NUMPROCS MIN(50L, tst_ncpus_available()) +#define MNTPOINT "hugetlbfs/" + +static long hpage_size; + +static void do_child(int thread, unsigned long size) +{ + volatile char *shmaddr; + int j; + unsigned long k; + + for (j = 0; j < 5; j++) { + shmaddr = SAFE_SHMAT(shmid, 0, SHM_RND); + + for (k = 0; k < size; k++) + shmaddr[k] = (char) (k); + for (k = 0; k < size; k++) + if (shmaddr[k] != (char)k) { + tst_res(TFAIL, "Thread %d, Offset %lu mismatch", thread, k); + goto cleanup; + } + + SAFE_SHMDT((const void *)shmaddr); + } +cleanup: + exit(0); +} + +static void run_test(void) +{ + unsigned long size; + int pid; + int i; + + size = hpage_size * NR_HUGEPAGES; + shmid = SAFE_SHMGET(2, size, SHM_HUGETLB|IPC_CREAT|SHM_R|SHM_W); + + for (i = 0; i < NUMPROCS; i++) { + pid = SAFE_FORK(); + + if (pid == 0) + do_child(i, size); + } + + tst_reap_children(); + tst_res(TPASS, "Successfully tested shared hugetlb memory with multiple procs"); +} + +static void setup(void) +{ + hpage_size = tst_get_hugepage_size(); +} + +static void cleanup(void) +{ + if (shmid >= 0) + SAFE_SHMCTL(shmid, IPC_RMID, NULL); +} + +static struct tst_test test = { + .needs_root = 1, + .mntpoint = MNTPOINT, + .needs_hugetlbfs = 1, + .needs_tmpdir = 1, + .forks_child = 1, + .setup = setup, + .cleanup = cleanup, + .test_all = run_test, + .hugepages = {NR_HUGEPAGES, TST_NEEDS}, +}; From patchwork Wed Jan 4 12:22:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tarun Sahu X-Patchwork-Id: 1721377 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=213.254.12.146; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: legolas.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256 header.s=pp1 header.b=KwAiLaAD; dkim-atps=neutral Received: from picard.linux.it (picard.linux.it [213.254.12.146]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4Nn81y29jlz23db for ; Wed, 4 Jan 2023 23:25:10 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id E9E273CE0A1 for ; Wed, 4 Jan 2023 13:25:07 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-5.smtp.seeweb.it (in-5.smtp.seeweb.it [IPv6:2001:4b78:1:20::5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-384)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 134A83CCDF7 for ; Wed, 4 Jan 2023 13:23:35 +0100 (CET) Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-5.smtp.seeweb.it (Postfix) with ESMTPS id 55A5D600721 for ; Wed, 4 Jan 2023 13:23:33 +0100 (CET) Received: from pps.filterd (m0098419.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 304BU8I9024896; Wed, 4 Jan 2023 12:23:32 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=j9osn4KBJ72EuffxWM5ug5xMDbJrsP0YiJm9f08tRQ4=; b=KwAiLaAD5wzrryjrVhssjV7tvJaLef1HtHiRsy2rACHjOpX6+hwHrOD/SksnKuXm8KHs fxGDZM4o/DTpiGIjlDmrsGLdI3UEvsxR4yrbJzubVwAtfQ8iziRdopSFdS9z/Po5ocEa ejIJxlwHaxhDEKmSJC6B7eg65uGchky6JYCdT/ciAxiyvWACZ40Zy2PWKJiXmICaPHlH KIasnE9j8pG39t3gZ3TGpODLPmumUh4Cz3myzzQa/UNTekaKHYoouCjYPZIaBP/BSCUs 6cXFuqiyMBTuAHlmHe3T/ZnDpxLBLWHi1yE8bjaDUDRNOCzjHC07d53IguElpKLn4gbz 1w== Received: from pps.reinject (localhost [127.0.0.1]) by mx0b-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw8mp93u2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:32 +0000 Received: from m0098419.ppops.net (m0098419.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 304BeaaA001024; Wed, 4 Jan 2023 12:23:32 GMT Received: from ppma05fra.de.ibm.com (6c.4a.5195.ip4.static.sl-reverse.com [149.81.74.108]) by mx0b-001b2d01.pphosted.com (PPS) with ESMTPS id 3mw8mp93tp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:31 +0000 Received: from pps.filterd (ppma05fra.de.ibm.com [127.0.0.1]) by ppma05fra.de.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 30466OP7032663; Wed, 4 Jan 2023 12:23:30 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma05fra.de.ibm.com (PPS) with ESMTPS id 3mtcq6kuy4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 04 Jan 2023 12:23:29 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 304CNPBp24314224 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 4 Jan 2023 12:23:25 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 32E3220043; Wed, 4 Jan 2023 12:23:25 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A247320040; Wed, 4 Jan 2023 12:23:21 +0000 (GMT) Received: from tarunpc.ibmuc.com (unknown [9.43.18.9]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Wed, 4 Jan 2023 12:23:21 +0000 (GMT) From: Tarun Sahu To: ltp@lists.linux.it Date: Wed, 4 Jan 2023 17:52:24 +0530 Message-Id: <20230104122224.369467-14-tsahu@linux.ibm.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230104122224.369467-1-tsahu@linux.ibm.com> References: <20230104122224.369467-1-tsahu@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: 0_CxdbFuD0v5vyzmQNpWlFZe6WHhxXzi X-Proofpoint-GUID: l2QGl3FAsFlUrBxPzExyiZXd7t9y9-kB X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2023-01-04_06,2023-01-04_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 malwarescore=0 adultscore=0 clxscore=1015 suspectscore=0 lowpriorityscore=0 priorityscore=1501 mlxlogscore=794 mlxscore=0 impostorscore=0 bulkscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301040102 X-Virus-Scanned: clamav-milter 0.102.4 at in-5.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-5.smtp.seeweb.it Subject: [LTP] [PATCH v2 13/13] Hugetlb: Migrating libhugetlbfs mremap-expand-slice-collision X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: geetika@linux.ibm.com, sbhat@linux.ibm.com, aneesh.kumar@linux.ibm.com, vaibhav@linux.ibm.com, rpalethorpe@suse.com Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Kernel has bug in mremap for some architecture. mremap() can cause crashes on architectures with holes in the address space (like ia64) and on powerpc with it's distict page size slices. This test perform mremap() with normal and hugepages around powerpc slice boundary. Signed-off-by: Tarun Sahu --- runtest/hugetlb | 1 + testcases/kernel/mem/.gitignore | 1 + .../kernel/mem/hugetlb/hugemmap/hugemmap24.c | 186 ++++++++++++++++++ 3 files changed, 188 insertions(+) create mode 100644 testcases/kernel/mem/hugetlb/hugemmap/hugemmap24.c diff --git a/runtest/hugetlb b/runtest/hugetlb index 6d63fec5d..feb5dec32 100644 --- a/runtest/hugetlb +++ b/runtest/hugetlb @@ -26,6 +26,7 @@ hugemmap20 hugemmap20 hugemmap21 hugemmap21 hugemmap22 hugemmap22 hugemmap23 hugemmap23 +hugemmap23 hugemmap24 hugemmap25 hugemmap25 hugemmap26 hugemmap26 hugemmap27 hugemmap27 diff --git a/testcases/kernel/mem/.gitignore b/testcases/kernel/mem/.gitignore index 0c1311303..06e125d03 100644 --- a/testcases/kernel/mem/.gitignore +++ b/testcases/kernel/mem/.gitignore @@ -25,6 +25,7 @@ /hugetlb/hugemmap/hugemmap21 /hugetlb/hugemmap/hugemmap22 /hugetlb/hugemmap/hugemmap23 +/hugetlb/hugemmap/hugemmap24 /hugetlb/hugemmap/hugemmap25 /hugetlb/hugemmap/hugemmap26 /hugetlb/hugemmap/hugemmap27 diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap24.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap24.c new file mode 100644 index 000000000..3316f04c2 --- /dev/null +++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap24.c @@ -0,0 +1,186 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/* + * Copyright (C) 2009 IBM Corporation. + * Author: David Gibson + */ + +/*\ + * [Description] + * + * Kernel has bug in mremap for some architecture. mremap() can cause + * crashes on architectures with holes in the address space (like ia64) + * and on powerpc with it's distict page size slices. + * + * This test perform mremap() with normal and hugepages around powerpc + * slice boundary. + */ + +#define _GNU_SOURCE +#include "hugetlb.h" + +#define RANDOM_CONSTANT 0x1234ABCD +#define MNTPOINT "hugetlbfs/" + +static int fd = -1; +static unsigned long slice_boundary; +static long hpage_size, page_size; + +static int init_slice_boundary(int fd) +{ + unsigned long slice_size; + void *p, *heap; + int i; +#if defined(__LP64__) && !defined(__aarch64__) + /* powerpc: 1TB slices starting at 1 TB */ + slice_boundary = 0x10000000000; + slice_size = 0x10000000000; +#else + /* powerpc: 256MB slices up to 4GB */ + slice_boundary = 0x00000000; + slice_size = 0x10000000; +#endif + + /* dummy malloc so we know where is heap */ + heap = malloc(1); + free(heap); + + /* Find 2 neighbour slices with couple huge pages free + * around slice boundary. + * 16 is the maximum number of slices (low/high) + */ + for (i = 0; i < 16-1; i++) { + slice_boundary += slice_size; + p = mmap((void *)(slice_boundary-2*hpage_size), 4*hpage_size, + PROT_READ, MAP_SHARED | MAP_FIXED, fd, 0); + if (p == MAP_FAILED) { + tst_res(TINFO|TERRNO, "can't use slice_boundary: 0x%lx", + slice_boundary); + } else { + SAFE_MUNMAP(p, 4*hpage_size); + break; + } + } + + if (p == MAP_FAILED) { + tst_res(TFAIL|TERRNO, "couldn't find 2 free neighbour slices"); + return -1; + } + tst_res(TINFO, "using slice_boundary: 0x%lx", slice_boundary); + return 0; +} + +static void run_test(void) +{ + void *p = NULL, *q = NULL, *r; + long p_size, q_size; + int ret; + + fd = tst_creat_unlinked(MNTPOINT, 0); + ret = init_slice_boundary(fd); + if (ret) + goto cleanup; + + /* First, hugepages above, normal below */ + tst_res(TINFO, "Testing with hpage above & normal below the slice_boundary"); + p_size = hpage_size; + p = SAFE_MMAP((void *)(slice_boundary + hpage_size), p_size, + PROT_READ | PROT_WRITE, + MAP_SHARED | MAP_FIXED, fd, 0); + + ret = do_readback(p, p_size, "huge above"); + if (ret) + goto cleanup; + + q_size = page_size; + q = SAFE_MMAP((void *)(slice_boundary - page_size), q_size, + PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0); + + ret = do_readback(q, q_size, "normal below"); + if (ret) + goto cleanup; + + r = mremap(q, page_size, 2*page_size, 0); + if (r == MAP_FAILED) { + tst_res(TINFO, "mremap(%p, %lu, %lu, 0) disallowed", + q, page_size, 2*page_size); + } else { + q_size = 2*page_size; + if (r != q) { + tst_res(TFAIL, "mremap() moved without MREMAP_MAYMOVE!?"); + ret = -1; + } else + ret = do_readback(q, 2*page_size, "normal below expanded"); + } + + SAFE_MUNMAP(p, p_size); + SAFE_MUNMAP(q, q_size); + if (ret) + goto cleanup_fd; + + /* Next, normal pages above, huge below */ + tst_res(TINFO, "Testing with normal above & hpage below the slice_boundary"); + p_size = page_size; + p = SAFE_MMAP((void *)(slice_boundary + hpage_size), p_size, + PROT_READ|PROT_WRITE, + MAP_SHARED | MAP_FIXED | MAP_ANONYMOUS, -1, 0); + + ret = do_readback(p, p_size, "normal above"); + if (ret) + goto cleanup; + + q_size = hpage_size; + q = SAFE_MMAP((void *)(slice_boundary - hpage_size), + q_size, PROT_READ | PROT_WRITE, + MAP_SHARED | MAP_FIXED, fd, 0); + + ret = do_readback(q, q_size, "huge below"); + if (ret) + goto cleanup; + + r = mremap(q, hpage_size, 2*hpage_size, 0); + if (r == MAP_FAILED) { + tst_res(TINFO, "mremap(%p, %lu, %lu, 0) disallowed", + q, hpage_size, 2*hpage_size); + } else { + q_size = 2*hpage_size; + if (r != q) { + tst_res(TFAIL, "mremap() moved without MREMAP_MAYMOVE!?"); + ret = -1; + } else + ret = do_readback(q, 2*hpage_size, "huge below expanded"); + } + if (ret) + goto cleanup; + tst_res(TPASS, "Successful"); +cleanup: + if (p) + SAFE_MUNMAP(p, p_size); + if (q) + SAFE_MUNMAP(q, q_size); +cleanup_fd: + SAFE_CLOSE(fd); +} + +static void setup(void) +{ + hpage_size = tst_get_hugepage_size(); + page_size = getpagesize(); +} + +static void cleanup(void) +{ + if (fd >= 0) + SAFE_CLOSE(fd); +} + +static struct tst_test test = { + .needs_root = 1, + .mntpoint = MNTPOINT, + .needs_hugetlbfs = 1, + .needs_tmpdir = 1, + .setup = setup, + .cleanup = cleanup, + .test_all = run_test, + .hugepages = {4, TST_NEEDS}, +};