From nobody Sun Jul 26 01:48:11 2026 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A82CC3CC7EC for ; Fri, 10 Jul 2026 09:24:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783675478; cv=none; b=GLS6lyPn2gS2j7kAy+plJPmrLd222AgmczOCsCmvIe26dNJNgNQX/omRfDAGJTPg7kO1ApS4vH6bKAtWwrsFIL6aYoJSXzbDFzE4fMArfYNsi8CrI3FzLgRecO828m+iOFrTt85cMOvl708jurxyT6Ph14I7810sRDY9TQcdeZg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783675478; c=relaxed/simple; bh=6KRORgrjHHCi1pgc/lNRWVr1mWlJr76tSwhx8sFHMps=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=CxoB7SZCpiFACYRCFQCoZ5cM5uZ5KRX9oPDi1y39IezEVHTpX5yL2OzeVu2qWvytdVdaJ77dhfgm+p+va+Vmd9kzvLuTlU9eEtLtcChVtvhnCu5hfl1WKjy7RJnIEjyn4pdTFn4XimEWNFg615zgdm/YZQnRH2KhmzH8VNaGMZo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bytedance.com; spf=pass smtp.mailfrom=bytedance.com; dkim=pass (2048-bit key) header.d=bytedance.com header.i=@bytedance.com header.b=K/6AvtOl; arc=none smtp.client-ip=209.85.214.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bytedance.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bytedance.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bytedance.com header.i=@bytedance.com header.b="K/6AvtOl" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-2cc6ae3e7f1so4123675ad.0 for ; Fri, 10 Jul 2026 02:24:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1783675475; x=1784280275; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=dgywglFUIwjru+wdRX3rW0UAMsUidjYqKDAc3zGlpNk=; b=K/6AvtOlXQxE3NXLeiUFrBBaK2ac3k8MXxFUl013Qxe7PNvkEShvQ1Xv/Kz7qGpU0c IPazX+W1FRDhpl6a69wvTSJti5yrFCCnvvImURD78o9JHAwmAJTlm7+WVvYNRaXS6c77 t3idsPj1QL9IluQlUZUom5FARtXs1WcNzldAyuqaAbUqv2gDVPwPW9QCn7TBtuffTMt2 jh6JVEQLm+/gSSKfV7sCNPOaYgapUdYF7YGrFDTyKXH1GYXVKiqrP+ysNSP1p1k3XS7B oiEfVva0Rp71rVkr7+MebXclqUAzUwyr6w+IghTJ7PIPX5XRio469meaQr0EB3XgEimy NRog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783675475; x=1784280275; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=dgywglFUIwjru+wdRX3rW0UAMsUidjYqKDAc3zGlpNk=; b=NHlppB6wCqzjb1P/J7zDbMbLZwUFWUFIgeRK19LoeTtnmfTZyFzTUZNMVrdKVRUHZe Nbh2euHPKedOxW63ZfON2PXY/NCH3msXx6vBCtfLR/FSTWXfWdK3NkuyCtmmErAnkMMM 1jSO4EeS+hjALm/tXFAV/B+X9dLBRHNE2ZVUFOOj07yVOoEUqOFNf/V1nqITTdFItbEB oQi24O9isToehjMmfm9vFH+N8kAi7wmuLzIi4qJHaaMJNx4hOfALy8SqYApaF28jeHSW OPf4djVuhfOLqkWTzChB89ns02FvRa+XpIQM6MdjtrhAKctMaJPK74fPWkqTdIsSPnQl InpA== X-Forwarded-Encrypted: i=1; AHgh+Ro+Eyif7COzHI24X8zkXDnkQfCPE5jZbwtX7I1KlepXOFMQn3+m0Ix44kUFMQdiO7aTYpiV9TTUre3xxd0=@vger.kernel.org X-Gm-Message-State: AOJu0YwPYY9CHAkbhsiQaqqQ0Ivvxsf4yWtfizWWEoe+9JakACiciKq5 rafd48KIL6BQLiOPmyqsTwILmMChpkrxTH6KissU7ASfGGh3y2kFUxT01X33CCOLsEw= X-Gm-Gg: AfdE7ckV+GoIHvPnky65RXOCdJBRsIX0OWyKYQu7jJ+QnnSdNS4FEJvaa6YUzidlA1j CyDMmQp7QteSkLurv8fxRPU/UO7mBQ0sw25qUKu2bWYALQo/dw9W71nI47yfk9dRz5ydx/Smer+ s7NgB+hD/jBh3EuCREk4V3T9xoaJz5tp9dwuCN/sIZh1RJYrEXujEkr8FUwMGg+zNmI3wW+pvQD 1Irn3dlA7Ch1f4m+Iv51dwDwrcV7bhg/i2ZF+SN1bSMqorVyaWTqSZBNkSrobX3BPnbRD4T0wwO BDuNnCp5+tVRtdZOb8Ltj8a9JuHo/wS35ejVydmeKGVBylYirz3gNkoPnQjk+/qwW13bZGa258j Z3D8qUdHLx7UJV6TlSICL/NwzXsDcHrB6tsBXDh72XO933vqBZUXXcdw4KqIH6oLeVRMzkep48k mdBPra0loHxiMHkhRi23+0SBgy9cp2reAo X-Received: by 2002:a17:902:fc8e:b0:2ca:ddbd:a19b with SMTP id d9443c01a7336-2ccea40b65emr107793175ad.28.1783675474937; Fri, 10 Jul 2026 02:24:34 -0700 (PDT) Received: from n232-176-004.byted.org ([36.110.163.98]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ccc9bdb72fsm56827995ad.6.2026.07.10.02.24.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Jul 2026 02:24:33 -0700 (PDT) From: Muchun Song To: Andrew Morton , David Hildenbrand , Shuah Khan Cc: Lorenzo Stoakes , "Liam R . Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Muchun Song , muchun.song@linux.dev Subject: [PATCH] selftests/mm: remove obsolete hugetlb vmemmap test Date: Fri, 10 Jul 2026 17:24:27 +0800 Message-ID: <20260710092427.3459121-1-songmuchun@bytedance.com> X-Mailer: git-send-email 2.54.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The hugetlb vmemmap selftest was added to check the old HVO layout where tail vmemmap pages reused the head page. That assumption no longer matches the current HVO mapping layout. HVO now keeps a private backing page for the head vmemmap page and remaps redundant tail vmemmap pages to a shared read-only backing page. The old page flag check is therefore testing an obsolete implementation detail rather than the current ABI or behavior. Remove the stale test and its build, run, and ignore entries. Signed-off-by: Muchun Song Acked-by: David Hildenbrand (Arm) Reviewed-by: Lorenzo Stoakes Reviewed-by: SJ Park --- tools/testing/selftests/mm/.gitignore | 2 - tools/testing/selftests/mm/Makefile | 1 - tools/testing/selftests/mm/hugetlb-vmemmap.c | 132 ------------------- tools/testing/selftests/mm/run_vmtests.sh | 1 - 4 files changed, 136 deletions(-) delete mode 100644 tools/testing/selftests/mm/hugetlb-vmemmap.c diff --git a/tools/testing/selftests/mm/.gitignore b/tools/testing/selftest= s/mm/.gitignore index 9ccd9e1447e6..227476d8ff1f 100644 --- a/tools/testing/selftests/mm/.gitignore +++ b/tools/testing/selftests/mm/.gitignore @@ -3,11 +3,9 @@ cow hugepage-mmap hugepage-mremap hugepage-shm -hugepage-vmemmap hugetlb-mmap hugetlb-mremap hugetlb-shm -hugetlb-vmemmap hugetlb-madvise hugetlb-read-hwpoison hugetlb-soft-offline diff --git a/tools/testing/selftests/mm/Makefile b/tools/testing/selftests/= mm/Makefile index ed321ae709da..ee8def9b4c31 100644 --- a/tools/testing/selftests/mm/Makefile +++ b/tools/testing/selftests/mm/Makefile @@ -66,7 +66,6 @@ TEST_GEN_FILES +=3D hugetlb-mremap TEST_GEN_FILES +=3D hugetlb-read-hwpoison TEST_GEN_FILES +=3D hugetlb-shm TEST_GEN_FILES +=3D hugetlb-soft-offline -TEST_GEN_FILES +=3D hugetlb-vmemmap TEST_GEN_FILES +=3D khugepaged TEST_GEN_FILES +=3D madv_populate TEST_GEN_FILES +=3D map_fixed_noreplace diff --git a/tools/testing/selftests/mm/hugetlb-vmemmap.c b/tools/testing/s= elftests/mm/hugetlb-vmemmap.c deleted file mode 100644 index 507df78a158d..000000000000 --- a/tools/testing/selftests/mm/hugetlb-vmemmap.c +++ /dev/null @@ -1,132 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * A test case of using hugepage memory in a user application using the - * mmap system call with MAP_HUGETLB flag. Before running this program - * make sure the administrator has allocated enough default sized huge - * pages to cover the 2 MB allocation. - */ -#include -#include -#include -#include -#include -#include "vm_util.h" -#include "hugepage_settings.h" - -#define PAGE_COMPOUND_HEAD (1UL << 15) -#define PAGE_COMPOUND_TAIL (1UL << 16) -#define PAGE_HUGE (1UL << 17) - -#define HEAD_PAGE_FLAGS (PAGE_COMPOUND_HEAD | PAGE_HUGE) -#define TAIL_PAGE_FLAGS (PAGE_COMPOUND_TAIL | PAGE_HUGE) - -#define PM_PFRAME_BITS 55 -#define PM_PFRAME_MASK ~((1UL << PM_PFRAME_BITS) - 1) - -static size_t pagesize; -static size_t maplength; - -static void write_bytes(char *addr, size_t length) -{ - unsigned long i; - - for (i =3D 0; i < length; i++) - *(addr + i) =3D (char)i; -} - -static unsigned long virt_to_pfn(void *addr) -{ - int fd; - unsigned long pagemap; - - fd =3D open("/proc/self/pagemap", O_RDONLY); - if (fd < 0) - return -1UL; - - lseek(fd, (unsigned long)addr / pagesize * sizeof(pagemap), SEEK_SET); - read(fd, &pagemap, sizeof(pagemap)); - close(fd); - - return pagemap & ~PM_PFRAME_MASK; -} - -static int check_page_flags(unsigned long pfn) -{ - int fd, i; - unsigned long pageflags; - - fd =3D open("/proc/kpageflags", O_RDONLY); - if (fd < 0) - return -1; - - lseek(fd, pfn * sizeof(pageflags), SEEK_SET); - - read(fd, &pageflags, sizeof(pageflags)); - if ((pageflags & HEAD_PAGE_FLAGS) !=3D HEAD_PAGE_FLAGS) { - close(fd); - ksft_print_msg("Head page flags (%lx) is invalid\n", pageflags); - return -1; - } - - /* - * pages other than the first page must be tail and shouldn't be head; - * this also verifies kernel has correctly set the fake page_head to tail - * while hugetlb_free_vmemmap is enabled. - */ - for (i =3D 1; i < maplength / pagesize; i++) { - read(fd, &pageflags, sizeof(pageflags)); - if ((pageflags & TAIL_PAGE_FLAGS) !=3D TAIL_PAGE_FLAGS || - (pageflags & HEAD_PAGE_FLAGS) =3D=3D HEAD_PAGE_FLAGS) { - close(fd); - ksft_print_msg("Tail page flags (%lx) is invalid\n", pageflags); - return -1; - } - } - - close(fd); - - return 0; -} - -int main(int argc, char **argv) -{ - void *addr; - unsigned long pfn; - int ret; - - ksft_print_header(); - ksft_set_plan(1); - - if (!hugetlb_setup_default(1)) - ksft_exit_skip("Not enough free huge pages\n"); - - pagesize =3D psize(); - maplength =3D default_huge_page_size(); - if (!maplength) - ksft_exit_skip("Unable to determine huge page size\n"); - - addr =3D mmap(NULL, maplength, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB, -1, 0); - if (addr =3D=3D MAP_FAILED) - ksft_exit_fail_perror("mmap"); - - /* Trigger allocation of HugeTLB page. */ - write_bytes(addr, maplength); - - pfn =3D virt_to_pfn(addr); - if (pfn =3D=3D -1UL) { - ksft_perror("virt_to_pfn"); - munmap(addr, maplength); - ksft_exit_fail(); - } - - ksft_print_msg("Returned address is %p whose pfn is %lx\n", addr, pfn); - - ret =3D check_page_flags(pfn); - - if (munmap(addr, maplength)) - ksft_exit_fail_perror("munmap"); - - ksft_test_result(!ret, "HugeTLB vmemmap page flags\n"); - ksft_finished(); -} diff --git a/tools/testing/selftests/mm/run_vmtests.sh b/tools/testing/self= tests/mm/run_vmtests.sh index 8c296dedf047..a60b9f9f16e7 100755 --- a/tools/testing/selftests/mm/run_vmtests.sh +++ b/tools/testing/selftests/mm/run_vmtests.sh @@ -262,7 +262,6 @@ echo "TAP version 13" | tap_output CATEGORY=3D"hugetlb" run_test ./hugetlb-mmap CATEGORY=3D"hugetlb" run_test ./hugetlb-shm CATEGORY=3D"hugetlb" run_test ./hugetlb-mremap -CATEGORY=3D"hugetlb" run_test ./hugetlb-vmemmap CATEGORY=3D"hugetlb" run_test ./hugetlb-madvise CATEGORY=3D"hugetlb" run_test ./hugetlb_dio CATEGORY=3D"hugetlb" run_test ./hugetlb_fault_after_madv base-commit: 4f441960e691d37c880d2cc004de06bb5b6bd5e4 --=20 2.54.0