From nobody Sat Feb 7 08:44:20 2026 Received: from mail-oi1-f178.google.com (mail-oi1-f178.google.com [209.85.167.178]) (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 B311C1E1DE5 for ; Mon, 2 Feb 2026 00:55:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769993744; cv=none; b=D6ZeqRYB7wiVbAOLqohGfqZU/17P1uNfPxLhmVDRV7CCM9kIDqwYc3XRxOutdvBm/sDrESSrNq9MRAn0iHNaMVB9MC7aa950FyC+fSMRMx6wvBzzPTekpyrudYXiiY59W1F09KwnV8hMbHP3VvgdoSbICNWualD9NzSzOWStD/c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769993744; c=relaxed/simple; bh=xHstk2Jk4m/lc2nrF1FKGsC6k95gf3TRjbE6hrUxCzM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uXHZ8j9QYLA6Jeh6ooQea9tDyucuigMf79K5ZD5lLKb7HDY13JJip4NMt5zFWDZOLqKPVqsOecqBnjit15Z17edC2n8z5EZitiIELE/9OLLt0DFcW/F4y969yHwX3rvN7/9KFfm17C3NcvytwPKR5ZuBbaAz4mbZW8/5pNU8Dmo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=PIXOmsZs; arc=none smtp.client-ip=209.85.167.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PIXOmsZs" Received: by mail-oi1-f178.google.com with SMTP id 5614622812f47-45eabce608dso2891996b6e.2 for ; Sun, 01 Feb 2026 16:55:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769993741; x=1770598541; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hKd/LbJPp/JDVOH5LR7j10+P7y3WmWdSNYy5oCtrFjw=; b=PIXOmsZsedWfAo+svsnq0YrU6C8ixOoS8KqBim07IUGPjN577wvQ2WAs1MM2D719Jb yM1ySSdJS6pGzrb2puRxg62Ta8ep7tILJbuX/17Q/4Oi5i5J/tAZGDpDAh5YFQLugCqd AKBwTZgZhEutpuXbBaUk2NnFQi55VnWARlyEGHHbH8nb4qZxnizcRSs4Q8oANXdp1jbs aersdB4G6eMeBZpnjM6mXT3iwqFgdQQ7+SgdTk8pcuH0qDBmCOTd2HsyIYsNyImPBuQt QTN8J2piaDoMsIsb38BpqVnimFril0m5O42q5mvgyZnVcyhl/PfW4jy2GEDT8zKuEEOq hl2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769993741; x=1770598541; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=hKd/LbJPp/JDVOH5LR7j10+P7y3WmWdSNYy5oCtrFjw=; b=sCYEbydubTitO1JDnLoLQ8Q57lfY3sq8co4vfrjZeWJ6SjLiRk/luj1TIxY1gnsU1u jDRP1hSSqevH64NS5nlDygEByOfCJkMefg+HBcfkJVaTp8ML4qavRoAqBxTDSZvcTK+4 0IgnQKG2JWk81RzlFjODS6C8ehDCRPCI0+RDqOcsjY2u34fI+CGHRfCzgiJocDCbc6Cu HzdYLEegwrnq9O5k98LDna9jFr1AaKsxAVHPZCX4lWYJXCwv4mPy320xwh/tgjYKn/U0 3O1fQXWz2XbGNBcnkY/EujwAEZ/vg6ZsgyOSD+I/GHatSbVq44NG35g4N4+eG1wduCkL PU/g== X-Forwarded-Encrypted: i=1; AJvYcCV2QJ4Ko3CrddnSWrRXBWr6587ThXd5eCuQdiiAj1Gd3q5rl8wsD/lP13IfLX4aFQhVVX26UuPRrdNnSMg=@vger.kernel.org X-Gm-Message-State: AOJu0YxkSNw7/0T0kXyy/AcDWH3iTJ0Ihumrc3l2mVLrCi9vSsU8Yd8n D/7xuaHo147/G+11BirZRHJqXwufqDHp8CS1/JSf4t+CSsWBK69zRn6V X-Gm-Gg: AZuq6aLcumrK2vfxTQneWkRJnfNJlPL94M8PRG5+XP7d+Yk6F/mJDwBnPnei5qEuQHT zxhMn6vBNCuDiwtlvoC9yfw2cC5z8ws1Eb5ZxCs1riRHH1pCNkSTQNQiMLD9gSjsh5Y1pN4W/1h 1gLv6Px1PCsFxAYrkr2v0EFyq0+JmJsDgtYACBCyseddtlF9TDz6ZkLmvz+5L2CgjaH3+p7ZePt bRJ7iDaFE+xajHbzOd/XSIfM8UepzFLma5IGvSTyY1BRsSVq7LzXIp5k5r8MSytXi7/xD9lyeUV pcbXzal3d4nEbxWyMF8/THdDEqv+Du/wCU09UdzN4uoBhO7RY7IzEDyGcAjKdLXQMtbOaMBn/OD BXuNHQ34NGedDkL4weB7Pikz/fGvw2hynJBFyXJ/Brp24leBEsgRMIWUhUDEe7EYmjV896OeXfj a7Sl1qjSebkDHAx4n5vs0= X-Received: by 2002:a05:6820:2909:b0:662:f997:8448 with SMTP id 006d021491bc7-6630f37792emr6869006eaf.58.1769993741508; Sun, 01 Feb 2026 16:55:41 -0800 (PST) Received: from localhost ([2a03:2880:10ff:71::]) by smtp.gmail.com with ESMTPSA id 006d021491bc7-662f996216asm9000764eaf.6.2026.02.01.16.55.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Feb 2026 16:55:40 -0800 (PST) From: Usama Arif To: ziy@nvidia.com, Andrew Morton , David Hildenbrand , lorenzo.stoakes@oracle.com, linux-mm@kvack.org Cc: hannes@cmpxchg.org, riel@surriel.com, shakeel.butt@linux.dev, kas@kernel.org, baohua@kernel.org, dev.jain@arm.com, baolin.wang@linux.alibaba.com, npache@redhat.com, Liam.Howlett@oracle.com, ryan.roberts@arm.com, vbabka@suse.cz, lance.yang@linux.dev, linux-kernel@vger.kernel.org, kernel-team@meta.com, Usama Arif Subject: [RFC 11/12] selftests/mm: add PUD THP reclaim test Date: Sun, 1 Feb 2026 16:50:28 -0800 Message-ID: <20260202005451.774496-12-usamaarif642@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260202005451.774496-1-usamaarif642@gmail.com> References: <20260202005451.774496-1-usamaarif642@gmail.com> 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" Add a test that uses MADV_PAGEOUT to advise the kernel to page out the PUD THP memory. This exercises the reclaim path which must split the PUD THP before reclaiming the individual pages. Signed-off-by: Usama Arif --- tools/testing/selftests/mm/pud_thp_test.c | 33 +++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tools/testing/selftests/mm/pud_thp_test.c b/tools/testing/self= tests/mm/pud_thp_test.c index b59eb470adbba..961fdc489d8a2 100644 --- a/tools/testing/selftests/mm/pud_thp_test.c +++ b/tools/testing/selftests/mm/pud_thp_test.c @@ -28,6 +28,10 @@ =20 #define TEST_REGION_SIZE (2 * PUD_SIZE) /* 2GB to ensure PUD alignment */ =20 +#ifndef MADV_PAGEOUT +#define MADV_PAGEOUT 21 +#endif + /* Get PUD-aligned address within a region */ static inline void *pud_align(void *addr) { @@ -282,4 +286,33 @@ TEST_F(pud_thp, mprotect_split) self->split_before, split_after); } =20 +/* + * Test: Reclaim via MADV_PAGEOUT + * Verifies that reclaim path correctly handles PUD THPs + */ +TEST_F(pud_thp, reclaim_pageout) +{ + volatile unsigned char *p; + unsigned long split_after; + int ret; + + /* Touch memory to allocate PUD THP */ + memset(self->aligned, 0xAA, PUD_SIZE); + + /* Try to reclaim the pages */ + ret =3D madvise(self->aligned, PUD_SIZE, MADV_PAGEOUT); + if (ret < 0 && errno =3D=3D EINVAL) + SKIP(return, "MADV_PAGEOUT not supported"); + ASSERT_EQ(ret, 0); + + split_after =3D read_vmstat("thp_split_pud"); + + /* Touch memory again to verify it's still accessible */ + p =3D (unsigned char *)self->aligned; + (void)*p; /* Read to bring pages back if swapped */ + + TH_LOG("Reclaim completed (thp_split_pud: %lu -> %lu)", + self->split_before, split_after); +} + TEST_HARNESS_MAIN --=20 2.47.3