From patchwork Tue Oct 11 12:16:05 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Gongyi X-Patchwork-Id: 1688642 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=) 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 4MmvxH5cT6z1yqk for ; Tue, 11 Oct 2022 23:20:03 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 503723CAE9A for ; Tue, 11 Oct 2022 14:20:00 +0200 (CEST) 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) server-digest SHA384) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 415273CAE72 for ; Tue, 11 Oct 2022 14:19:48 +0200 (CEST) Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by in-3.smtp.seeweb.it (Postfix) with ESMTPS id 5464C1A007E3 for ; Tue, 11 Oct 2022 14:19:47 +0200 (CEST) Received: from canpemm500005.china.huawei.com (unknown [172.30.72.54]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4MmvsF49MKzpVdb for ; Tue, 11 Oct 2022 20:16:33 +0800 (CST) Received: from ubuntu1804.huawei.com (10.67.174.63) by canpemm500005.china.huawei.com (7.192.104.229) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Tue, 11 Oct 2022 20:19:43 +0800 To: Date: Tue, 11 Oct 2022 20:16:05 +0800 Message-ID: <20221011121607.55575-2-zhaogongyi@huawei.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221011121607.55575-1-zhaogongyi@huawei.com> References: <20221011121607.55575-1-zhaogongyi@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.67.174.63] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To canpemm500005.china.huawei.com (7.192.104.229) X-CFilter-Loop: Reflected X-Virus-Scanned: clamav-milter 0.102.4 at in-3.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.0 required=7.0 tests=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 1/3] syscalls/madvise03: new test for madvise(MADV_DONTNEED) 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: , X-Patchwork-Original-From: Zhao Gongyi via ltp From: Zhao Gongyi Reply-To: Zhao Gongyi Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Test cases for madvise(2) system call, verify that after a successful MADV_DONTNEED operation, it will result in zero-fill-on-demand pages for anonymous private mappings. Signed-off-by: Zhao Gongyi --- runtest/syscalls | 1 + testcases/kernel/syscalls/madvise/.gitignore | 1 + testcases/kernel/syscalls/madvise/madvise03.c | 69 +++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 testcases/kernel/syscalls/madvise/madvise03.c -- 2.17.1 diff --git a/runtest/syscalls b/runtest/syscalls index 51de0a614..c81764df4 100644 --- a/runtest/syscalls +++ b/runtest/syscalls @@ -940,6 +940,7 @@ mincore04 mincore04 madvise01 madvise01 madvise02 madvise02 +madvise03 madvise03 madvise05 madvise05 madvise06 madvise06 madvise07 madvise07 diff --git a/testcases/kernel/syscalls/madvise/.gitignore b/testcases/kernel/syscalls/madvise/.gitignore index 002d8e5d9..f4bfdfefe 100644 --- a/testcases/kernel/syscalls/madvise/.gitignore +++ b/testcases/kernel/syscalls/madvise/.gitignore @@ -1,5 +1,6 @@ /madvise01 /madvise02 +/madvise03 /madvise05 /madvise06 /madvise07 diff --git a/testcases/kernel/syscalls/madvise/madvise03.c b/testcases/kernel/syscalls/madvise/madvise03.c new file mode 100644 index 000000000..70330060e --- /dev/null +++ b/testcases/kernel/syscalls/madvise/madvise03.c @@ -0,0 +1,69 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved. + * Author: Zhao Gongyi + */ + +/*\ + * [Description] + * + * Test cases for madvise(2) system call, advise value as "MADV_MADV_DONTNEED": + * After a successful MADV_DONTNEED operation, it will result in + * zero-fill-on-demand pages for anonymous private mappings. + */ + +#include "tst_test.h" + +#define MAP_SIZE (8 * 1024) + +static char *addr; + +static void run(void) +{ + int i; + + TEST(madvise(addr, MAP_SIZE, MADV_DONTNEED)); + if (TST_RET == -1) { + tst_brk(TBROK | TTERRNO, "madvise(%p, %d, 0x%x) failed", + addr, MAP_SIZE, MADV_DONTNEED); + } + + for (i = 0; i < MAP_SIZE; i++) { + if (addr[i]) { + tst_res(TFAIL, + "There are no zero-fill-on-demand pages " + "for anonymous private mappings"); + return; + } + } + + if (i == MAP_SIZE) { + tst_res(TPASS, + "There are zero-fill-on-demand pages " + "for anonymous private mappings"); + } +} + +static void setup(void) +{ + addr = SAFE_MMAP(NULL, MAP_SIZE, + PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, + -1, 0); + memset(addr, 1, MAP_SIZE); +} + +static void cleanup(void) +{ + if (addr) + SAFE_MUNMAP(addr, MAP_SIZE); +} + + + +static struct tst_test test = { + .test_all = run, + .setup = setup, + .cleanup = cleanup, +}; + From patchwork Tue Oct 11 12:16:06 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Gongyi X-Patchwork-Id: 1688643 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=) 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 4MmvxW2lVBz23jS for ; Tue, 11 Oct 2022 23:20:15 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 29FDC3CAEA3 for ; Tue, 11 Oct 2022 14:20:13 +0200 (CEST) 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 195B53CAE93 for ; Tue, 11 Oct 2022 14:19:49 +0200 (CEST) Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by in-4.smtp.seeweb.it (Postfix) with ESMTPS id F0B201000B25 for ; Tue, 11 Oct 2022 14:19:48 +0200 (CEST) Received: from canpemm500005.china.huawei.com (unknown [172.30.72.55]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4Mmvqg30fMz1M8xq for ; Tue, 11 Oct 2022 20:15:11 +0800 (CST) Received: from ubuntu1804.huawei.com (10.67.174.63) by canpemm500005.china.huawei.com (7.192.104.229) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Tue, 11 Oct 2022 20:19:44 +0800 To: Date: Tue, 11 Oct 2022 20:16:06 +0800 Message-ID: <20221011121607.55575-3-zhaogongyi@huawei.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221011121607.55575-1-zhaogongyi@huawei.com> References: <20221011121607.55575-1-zhaogongyi@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.67.174.63] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To canpemm500005.china.huawei.com (7.192.104.229) X-CFilter-Loop: Reflected X-Virus-Scanned: clamav-milter 0.102.4 at in-4.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.0 required=7.0 tests=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 2/3] syscalls/madvise04: new test for madvise(MADV_DONTNEED) 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: , X-Patchwork-Original-From: Zhao Gongyi via ltp From: Zhao Gongyi Reply-To: Zhao Gongyi Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Test cases for madvise(2) system call, verify that MADV_DONTNEED cannot be applied to Huge TLB pages. Signed-off-by: Zhao Gongyi --- runtest/syscalls | 1 + testcases/kernel/syscalls/madvise/.gitignore | 1 + testcases/kernel/syscalls/madvise/madvise04.c | 48 +++++++++++++++++++ 3 files changed, 50 insertions(+) create mode 100644 testcases/kernel/syscalls/madvise/madvise04.c -- 2.17.1 diff --git a/runtest/syscalls b/runtest/syscalls index c81764df4..eb1910cec 100644 --- a/runtest/syscalls +++ b/runtest/syscalls @@ -941,6 +941,7 @@ mincore04 mincore04 madvise01 madvise01 madvise02 madvise02 madvise03 madvise03 +madvise04 madvise04 madvise05 madvise05 madvise06 madvise06 madvise07 madvise07 diff --git a/testcases/kernel/syscalls/madvise/.gitignore b/testcases/kernel/syscalls/madvise/.gitignore index f4bfdfefe..db8ce47c1 100644 --- a/testcases/kernel/syscalls/madvise/.gitignore +++ b/testcases/kernel/syscalls/madvise/.gitignore @@ -1,6 +1,7 @@ /madvise01 /madvise02 /madvise03 +/madvise04 /madvise05 /madvise06 /madvise07 diff --git a/testcases/kernel/syscalls/madvise/madvise04.c b/testcases/kernel/syscalls/madvise/madvise04.c new file mode 100644 index 000000000..d7ccaf97e --- /dev/null +++ b/testcases/kernel/syscalls/madvise/madvise04.c @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved. + * Author: Zhao Gongyi + */ + +/*\ + * [Description] + * + * Test cases for madvise(2) system call, advise value as "MADV_MADV_DONTNEED": + * MADV_DONTNEED cannot be applied to Huge TLB pages. + */ + +#include "tst_test.h" + +#define MAP_SIZE (8 * 1024) + +static char *addr; +static int mapsz; + +static void run(void) +{ + TST_EXP_FAIL(madvise(addr, mapsz, MADV_DONTNEED), EINVAL); +} + +static void setup(void) +{ + mapsz = tst_get_hugepage_size(); + addr = SAFE_MMAP(NULL, mapsz, + PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB, + -1, 0); +} + +static void cleanup(void) +{ + if (addr) + SAFE_MUNMAP(addr, mapsz); +} + +static struct tst_test test = { + .test_all = run, + .setup = setup, + .cleanup = cleanup, + .needs_root = 1, + .hugepages = {1, TST_NEEDS}, +}; + From patchwork Tue Oct 11 12:16:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Gongyi X-Patchwork-Id: 1688644 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=) 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 4Mmvxj1NnWz23jS for ; Tue, 11 Oct 2022 23:20:25 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 7CCA23CAEA0 for ; Tue, 11 Oct 2022 14:20:22 +0200 (CEST) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-6.smtp.seeweb.it (in-6.smtp.seeweb.it [217.194.8.6]) (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 5D3B23CAEA1 for ; Tue, 11 Oct 2022 14:19:50 +0200 (CEST) Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by in-6.smtp.seeweb.it (Postfix) with ESMTPS id 8F4C61400DCF for ; Tue, 11 Oct 2022 14:19:48 +0200 (CEST) Received: from canpemm500005.china.huawei.com (unknown [172.30.72.53]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4MmvsH2r0qzpVXR for ; Tue, 11 Oct 2022 20:16:35 +0800 (CST) Received: from ubuntu1804.huawei.com (10.67.174.63) by canpemm500005.china.huawei.com (7.192.104.229) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Tue, 11 Oct 2022 20:19:45 +0800 To: Date: Tue, 11 Oct 2022 20:16:07 +0800 Message-ID: <20221011121607.55575-4-zhaogongyi@huawei.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20221011121607.55575-1-zhaogongyi@huawei.com> References: <20221011121607.55575-1-zhaogongyi@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.67.174.63] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To canpemm500005.china.huawei.com (7.192.104.229) X-CFilter-Loop: Reflected X-Virus-Scanned: clamav-milter 0.102.4 at in-6.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.0 required=7.0 tests=SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-6.smtp.seeweb.it Subject: [LTP] [PATCH v2 3/3] syscalls/madvise11: new test for madvise(MADV_DONTNEED) 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: , X-Patchwork-Original-From: Zhao Gongyi via ltp From: Zhao Gongyi Reply-To: Zhao Gongyi Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Test cases for madvise(2) system call, verify that when MADV_DONTNEED applied to shared mappings, it will lead to the resident set size(RSS) of the calling process reduced immediately. Signed-off-by: Zhao Gongyi --- runtest/syscalls | 1 + testcases/kernel/syscalls/madvise/.gitignore | 1 + testcases/kernel/syscalls/madvise/madvise11.c | 78 +++++++++++++++++++ 3 files changed, 80 insertions(+) create mode 100644 testcases/kernel/syscalls/madvise/madvise11.c -- 2.17.1 diff --git a/runtest/syscalls b/runtest/syscalls index eb1910cec..296af9f9d 100644 --- a/runtest/syscalls +++ b/runtest/syscalls @@ -948,6 +948,7 @@ madvise07 madvise07 madvise08 madvise08 madvise09 madvise09 madvise10 madvise10 +madvise11 madvise11 newuname01 newuname01 diff --git a/testcases/kernel/syscalls/madvise/.gitignore b/testcases/kernel/syscalls/madvise/.gitignore index db8ce47c1..ffd8823d1 100644 --- a/testcases/kernel/syscalls/madvise/.gitignore +++ b/testcases/kernel/syscalls/madvise/.gitignore @@ -8,3 +8,4 @@ /madvise08 /madvise09 /madvise10 +/madvise11 diff --git a/testcases/kernel/syscalls/madvise/madvise11.c b/testcases/kernel/syscalls/madvise/madvise11.c new file mode 100644 index 000000000..77f0b91ac --- /dev/null +++ b/testcases/kernel/syscalls/madvise/madvise11.c @@ -0,0 +1,78 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2022. All rights reserved. + * Author: Zhao Gongyi + */ + +/*\ + * [Description] + * + * Test cases for madvise(2) system call, advise value as "MADV_MADV_DONTNEED": + * When MADV_DONTNEED applied to shared mappings, it will lead to the + * resident set size(RSS) of the calling process reduced immediately. + */ + +#include +#include +#include "tst_test.h" + +#define MAP_SIZE (8 * 1024) +#define BUF_SIZE 1024 + +static FILE *fp; +static char *addr; + +static void run(void) +{ + char cmd[BUF_SIZE]; + char line[BUF_SIZE]; + char vm_area_addr[128]; + + TEST(madvise(addr, MAP_SIZE, MADV_DONTNEED)); + if (TST_RET == -1) { + tst_brk(TBROK | TTERRNO, "madvise(%p, %d, 0x%x)", + addr, MAP_SIZE, MADV_DONTNEED); + } + + sprintf(vm_area_addr, "%p", addr); + sprintf(cmd, + "cat /proc/%d/smaps | grep %s -A 4 | grep Rss: | grep '0 kB'", + getpid(), &(vm_area_addr[2])); + + fp = popen(cmd, "r"); + if (!fp) + tst_brk(TBROK, "popen failed"); + + if (fgets(line, sizeof(line), fp) != NULL) { + if (strstr(line, " 0 kB")) + tst_res(TPASS, "RSS is released"); + else + tst_res(TFAIL, "RSS is not released"); + + } else + tst_brk(TBROK, "There is no 'Rss:' in smaps?"); +} + +static void setup(void) +{ + addr = SAFE_MMAP(NULL, MAP_SIZE, + PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, + -1, 0); + memset(addr, 1, MAP_SIZE); +} + +static void cleanup(void) +{ + if (addr) + SAFE_MUNMAP(addr, MAP_SIZE); + if (fp) + pclose(fp); +} + +static struct tst_test test = { + .test_all = run, + .setup = setup, + .cleanup = cleanup, +}; +