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 B591C1E8332 for ; Mon, 2 Feb 2026 00:55:41 +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=qwkYZxWL9+eTEU4qG2vZgK5q1H6sIIVUYw26aumk9v/TtPWhpbm/JJDHv9IBxa/689Elg9mHHriRvRua/3BSgSvUnf5FKztofLRj2qTim7BK0gqFb0z2qTyoGqARyPyThth6IeCf3v4RcC9qQJEdeImjV+HCBpyjuiNpd4J8zho= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769993744; c=relaxed/simple; bh=dKikJPUghK2/M3i+1IdY0EihZkncvlLAZaHXkq5UHPk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=prC30sj7UQI1JqnrOf7I8cVj84P3amTf842TTu1Te3Dni/4cyWJKIjTgYghBR9nbMBzsFrXmorINT3cHYj+u0jUSpuNyayv+ZnwrkXXQScwgyIrQaUuQKMHwJ1q0dXjJp8zpO7TY+Pz8h861wbEV/Foc3wARgbRYYgK7IbzVpPQ= 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=aQ43r4QW; 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="aQ43r4QW" Received: by mail-oi1-f178.google.com with SMTP id 5614622812f47-45f0dbe7dafso1504595b6e.3 for ; Sun, 01 Feb 2026 16:55:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769993740; x=1770598540; 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=cYjr1TGhCAf/RKiT8q6ihWoR60MJtgSyO0Vv0YqmLhk=; b=aQ43r4QWypslIX1toWIYX1TtZ1YIc2+q7bek2uNfMx8PmVNTpO8TZXn+n2asiQ5IbH qKKkJN5acBSW8lvODAsABBsK1cMiJG5wyqvZXvChUFJmtl5ELX55zj3FEXNPN3DSYI0s jIWhn/0Txkq54zosnR2Ya7Rwfg3xbwsMfGo/E8yRPPR81EibBdN0O5AfNA6vrHWuJw+j osSMBcWmQk0vmyWu21WfMV2D6IJd7LqqAGzSbDN95m9QwFwwAV5jOOGtcx+vyM1XfCtI p/PV5avd2/Ziy93yfvLPF9OZC3HakXKtI8ZFeIDWBl3UN1cSMvEWNJW9ycCZ4FvDydg2 8dvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769993740; x=1770598540; 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=cYjr1TGhCAf/RKiT8q6ihWoR60MJtgSyO0Vv0YqmLhk=; b=My2yvYBaKStG1t68eeWY3a7tcJC2gnqVODXvTIaZfx7aalvPDXXMkMftnv5PFZfGiW WEi+7twWTU84FRWDb8UF8sUFKUQ+Arhcp7HwBxqu7TQP+XULC6HfVz6tObDtDv+wgQ07 dvyFXrIAaVSPGUA85Dqs1YCrZ19j+tjuWGlKikab5TrxrJf7DreidTT9NFo34TmEykk9 jFUgG1GD4h3ZZ0OYWgWDIfiXzi5BjVQRhe6R+RbrA08dKU4+NogsbMmm3am7CkWJTZ5/ ge9KZM2R9e6ZMKlP9eh4IlnEXotKJRvxjmnZcK4EyVnA/xi6RKSfRAwVRUskw7axZ4cH jjgg== X-Forwarded-Encrypted: i=1; AJvYcCVqPzcMyISwCJcCxNHkbXp647FhZ5hq37oZOEJmmlidNRoyB7ty+r8RMOogAtJ3lHn3Uj6DIM5k1jg3sJs=@vger.kernel.org X-Gm-Message-State: AOJu0YwHCwry3lurFR//1+SLdc3qDrfTcB1oQLLesouC4CVDPfyFBM3D AhYu1uGUy3lDVbPKFRVsGZqs39EO8J4XUTdYXdH+QQjwJSEOz9FPSik/ X-Gm-Gg: AZuq6aJ6yN1281l+zGk+dyNeV4/A21Qag/FcBRSmSMLUaU7i6n3sv72k8XcG7B9s9xJ 6yvBYdDMQu1r71g+kI4zGnctGZ4OLbQutGSBGnuQ9eGy7sRac9gDgRmgcUE1rIyXzqoUDfqKtdC Cj6E5LsNjAnXJgm/WgPhJtVTi9aGQXi0XX8ySOOcGxl7GchNtNJeP0h/PKnz4gNcFzwhvhhZmMU 8ttzLfrcZZxnPVwnc9CI41mHaer1ZKJg8RRu1SBWALznvLJVzfbA3Y3bZulYynXvIB+NyPF8GrN Pq8Yiv9/lHzZB9SSvSfQMxpC8p4TKOzHsxhS+A56iHrFokR2nrplN4H7T0DeEF4nrJrF6exLFP5 q7PXSlRk6M95uPqSB9DagfikHBC+4Vl6gn3hXi2gogdCk6M+QHhtbVqDnGW/LT7eV4sVOtRKdu7 aNgCBrwWqF X-Received: by 2002:a05:6808:67c1:b0:45f:21a:4995 with SMTP id 5614622812f47-45f34b832admr4654575b6e.23.1769993740110; Sun, 01 Feb 2026 16:55:40 -0800 (PST) Received: from localhost ([2a03:2880:10ff:53::]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-409575f6551sm10693913fac.22.2026.02.01.16.55.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Feb 2026 16:55:39 -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 10/12] selftests/mm: add PUD THP mprotect split test Date: Sun, 1 Feb 2026 16:50:27 -0800 Message-ID: <20260202005451.774496-11-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 changes permissions on a portion of a PUD THP using mprotect. Since different parts now have different permissions, the PUD must be split. The test verifies correct behavior after the permission change. Signed-off-by: Usama Arif --- tools/testing/selftests/mm/pud_thp_test.c | 26 +++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tools/testing/selftests/mm/pud_thp_test.c b/tools/testing/self= tests/mm/pud_thp_test.c index 8d4cb0e60f7f7..b59eb470adbba 100644 --- a/tools/testing/selftests/mm/pud_thp_test.c +++ b/tools/testing/selftests/mm/pud_thp_test.c @@ -256,4 +256,30 @@ TEST_F(pud_thp, partial_munmap) self->split_before, split_after); } =20 +/* + * Test: mprotect triggers split + * Verifies that changing protection on part of a PUD THP splits it + */ +TEST_F(pud_thp, mprotect_split) +{ + volatile unsigned char *p =3D (unsigned char *)self->aligned; + unsigned long split_after; + int ret; + + /* Touch memory to allocate PUD THP */ + memset(self->aligned, 0xEE, PUD_SIZE); + + /* Change protection on a 2MB region - should trigger PUD split */ + ret =3D mprotect((char *)self->aligned + PMD_SIZE, PMD_SIZE, PROT_READ); + ASSERT_EQ(ret, 0); + + split_after =3D read_vmstat("thp_split_pud"); + + /* Verify memory still readable */ + ASSERT_EQ(*p, 0xEE); + + TH_LOG("mprotect split completed (thp_split_pud: %lu -> %lu)", + self->split_before, split_after); +} + TEST_HARNESS_MAIN --=20 2.47.3