From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id E23E6C7115C for ; Sun, 22 Jun 2025 08:10:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 28E586B0095; Sun, 22 Jun 2025 04:10:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 23EA06B0096; Sun, 22 Jun 2025 04:10:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 12D8D6B0098; Sun, 22 Jun 2025 04:10:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id F2D516B0095 for ; Sun, 22 Jun 2025 04:10:54 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id A0E1181AE8 for ; Sun, 22 Jun 2025 08:10:54 +0000 (UTC) X-FDA: 83582315628.16.250C6CB Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf27.hostedemail.com (Postfix) with ESMTP id 2478F40002 for ; Sun, 22 Jun 2025 08:10:52 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Xv1Su9e6; spf=pass (imf27.hostedemail.com: domain of liwang@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=liwang@redhat.com; dmarc=pass (policy=quarantine) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750579853; a=rsa-sha256; cv=none; b=8GNynOTK9ImjKEDauQVkFXJlfanHqU9h9YDzRPlBIvIODzCYvCXwRU2eHV6X65jMzv9EIC mtrQ+TDZ3CL8uXWVNcLLPpTmv5Io2AOWJnGR7jxfUn6cIuVm+7/HgwSwuW1LSQNlG+rYYT R8Xr4Vo3MfnTapyxQ9WPi67CDhVxYpw= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Xv1Su9e6; spf=pass (imf27.hostedemail.com: domain of liwang@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=liwang@redhat.com; dmarc=pass (policy=quarantine) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750579853; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=q8/rI4IAgVs+NRa+vTa1gDWf15Ja/4IU/WEAKTpWEJ0=; b=BWXxlkPb460+RZ96kbz0HwkIoxiWY95cOmbLUcYoTKIpGu9KF6CGi/jW8LE7sjSszBC6ob vwC5GdyvNd6nrftPZUvd9FQEvKTFF36WOqkPkPExpiO4VmjtkhpkHaFbv0sA+HCCoVVDO5 z9IggBSUvR61e7baRhvGyx17VFXkKYo= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1750579852; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=q8/rI4IAgVs+NRa+vTa1gDWf15Ja/4IU/WEAKTpWEJ0=; b=Xv1Su9e6GdDj3reTFry6iaYMQuFm2cjXsl3iz8nJ/2BTQhGwbEsWpsVtfxNgLrejHV2OI8 Q/EanIqph5jeQA4sA6xXF6ZweQjz2ZUNp0blpgRDWLXcDDm0HV0Tu8zxcXypB3Jvazsjz0 i8zXWSd9Wd0XgR7zbg02YF6ru6iXuvA= Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-479-j_PRBuV7P26oHEuAD19uDA-1; Sun, 22 Jun 2025 04:10:50 -0400 X-MC-Unique: j_PRBuV7P26oHEuAD19uDA-1 X-Mimecast-MFC-AGG-ID: j_PRBuV7P26oHEuAD19uDA_1750579848 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C794C180034E; Sun, 22 Jun 2025 08:10:47 +0000 (UTC) Received: from dell-per7425-02.rhts.eng.pek2.redhat.com (dell-per7425-02.rhts.eng.pek2.redhat.com [10.73.116.18]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id D36F9195608D; Sun, 22 Jun 2025 08:10:40 +0000 (UTC) From: Li Wang To: akpm@linux-foundation.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: Aruna Ramakrishna , Bagas Sanjaya , Catalin Marinas , Dave Hansen , David Hildenbrand , Joey Gouly , Johannes Weiner , Keith Lucas , Ryan Roberts , Shuah Khan Subject: [PATCH] mm/selftests: improve UFFD-WP feature detection in KSM test Date: Sun, 22 Jun 2025 16:10:35 +0800 Message-ID: <20250622081035.378164-1-liwang@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 2478F40002 X-Stat-Signature: ox7srqse56mcubzru8dhh64uz3f44erw X-Rspam-User: X-HE-Tag: 1750579852-263327 X-HE-Meta: U2FsdGVkX1/hL8/hJkMDYY768BEdYPMy58RhqyZdr82VDGAQjaKw9dA+TzVQKHY80uINwDOe/7wi/PJFlemznULBxXKdBUNn8N+2G+FXsoG7SjDaqvapFJY3YgoASUjN5Mz1m/GgVYXklQKfCdvuc5RliOFGFafTiObnMRyQrWdPmdPtWYewkL9hBZYFx1fU8ukJe/P6daqDVjhU5PwXS9qGW1v3k1w3lknpYJoiLdo50xh0uIJAQupJDuuhxu/qNkESkrBRNdrg0Eh6UJomSOqNdKzAI7UugktYor/SbVbnz7ZV4PHQL4GUPE4kwmrQMshxvf+hFwOb5k6wwmJeaJySrwxaoD3HLgODWkAYwebZ8yUz7ZdcrEcrpC7BZyuD+cM2obGQYfGX4WZzX0DYAEK8Ww44Z7ijpKhTckq87W7lQ6woiSfq7+PkoNtPyOqKLbkcnTQDas/Mnq3eeeD+sirUAr1oaZ0UO8gv6GcaiufldBlcYQa+aiv48sk1u//0pPxhK4/Hj64ImMhaFAfLNpGHs5gK7oqvqpQGmP3KDryZw+l6HwsEcss8a7Gb0nwY89K5q6z6Sb+2tAkD1cAPr3jmNihHy1e4Fq1uMNo7O/MT/H6UG2AnEn7l3lxlZZX4TTFqS64fHVSY7m4L+XAbAn8R0+VJmdGr7B5aH7oPUmDpDIKbyOM85I7s9mT3P6PYHpB/iejN9j1M535PHARA1w+x/oxcLmTrrobCwzUTcT/XSqEWf37t6yLEfaZEB0drTjR+fXGl1PFbXt9Zb/0TML6eyXEM7IOd+5TazGp1iZ6TZ+27kxYrWALyrr/2ao3PRnyF+oJjCU6Tqr+OKWhyv9C0XEDZBp5GGXSY+f+TK74nQxaxNobARpmXaQFAmwLWtKyxUmTDlYl3+SJkgsyTY8TNqiijFrRp5jsr0EaZwYbP/s3CZghQbEX2kZgjHi0T3skvSx+AYmpuziKOKOd 5cjSipBp 5MZTTjL2aJbQp4glttTInWSENPy5Tp2U7cxqEq+Wz6BWounK5G0ovsmLvoXAFmn7l6Jq+ X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: The current implementation of test_unmerge_uffd_wp() explicitly sets `uffdio_api.features = UFFD_FEATURE_PAGEFAULT_FLAG_WP` before calling UFFDIO_API. This can cause the ioctl() call to fail with EINVAL on kernels that do not support UFFD-WP, leading the test to fail unnecessarily: # ------------------------------ # running ./ksm_functional_tests # ------------------------------ # TAP version 13 # 1..9 # # [RUN] test_unmerge # ok 1 Pages were unmerged # # [RUN] test_unmerge_zero_pages # ok 2 KSM zero pages were unmerged # # [RUN] test_unmerge_discarded # ok 3 Pages were unmerged # # [RUN] test_unmerge_uffd_wp # not ok 4 UFFDIO_API failed <----- # # [RUN] test_prot_none # ok 5 Pages were unmerged # # [RUN] test_prctl # ok 6 Setting/clearing PR_SET_MEMORY_MERGE works # # [RUN] test_prctl_fork # # No pages got merged # # [RUN] test_prctl_fork_exec # ok 7 PR_SET_MEMORY_MERGE value is inherited # # [RUN] test_prctl_unmerge # ok 8 Pages were unmerged # Bail out! 1 out of 8 tests failed # # Planned tests != run tests (9 != 8) # # Totals: pass:7 fail:1 xfail:0 xpass:0 skip:0 error:0 # [FAIL] This patch improves compatibility and error handling by: 1. Changes the feature check to first query supported features (features=0) rather than specifically requesting WP support. 2. Gracefully skipping the test if: - UFFDIO_API fails with EINVAL (feature not supported), or - UFFD_FEATURE_PAGEFAULT_FLAG_WP is not advertised by the kernel. 3. Providing better diagnostics by distinguishing expected failures (e.g., EINVAL) from unexpected ones and reporting them using strerror(). The updated logic makes the test more robust across different kernel versions and configurations, while preserving existing behavior on systems that do support UFFD-WP. Signed-off-by: Li Wang Cc: Aruna Ramakrishna Cc: Bagas Sanjaya Cc: Catalin Marinas Cc: Dave Hansen Cc: David Hildenbrand Cc: Joey Gouly Cc: Johannes Weiner Cc: Keith Lucas Cc: Ryan Roberts Cc: Shuah Khan --- tools/testing/selftests/mm/ksm_functional_tests.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/mm/ksm_functional_tests.c b/tools/testing/selftests/mm/ksm_functional_tests.c index b61803e36d1c..f3db257dc555 100644 --- a/tools/testing/selftests/mm/ksm_functional_tests.c +++ b/tools/testing/selftests/mm/ksm_functional_tests.c @@ -393,9 +393,13 @@ static void test_unmerge_uffd_wp(void) /* See if UFFD-WP is around. */ uffdio_api.api = UFFD_API; - uffdio_api.features = UFFD_FEATURE_PAGEFAULT_FLAG_WP; + uffdio_api.features = 0; if (ioctl(uffd, UFFDIO_API, &uffdio_api) < 0) { - ksft_test_result_fail("UFFDIO_API failed\n"); + if (errno == EINVAL) + ksft_test_result_skip("UFFDIO_API not supported (EINVAL)\n"); + else + ksft_test_result_fail("UFFDIO_API failed: %s\n", strerror(errno)); + goto close_uffd; } if (!(uffdio_api.features & UFFD_FEATURE_PAGEFAULT_FLAG_WP)) { -- 2.49.0