From nobody Mon Sep 28 13:18:04 2026 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) (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 E4CDC30EF80 for ; Fri, 21 Aug 2026 07:05:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787295926; cv=none; b=MBsWDijeOG3Uazp1Q0WRyhaqXzmURIVXq8htRzjpuzq6y9MvGV6w7odJHq1s0uPlgKXAizpy2CyAMGgx8SKaPLQyImM7rQi75pg0KDKseAZCo/LPcqxe4wgbSoipJeryV5QkYcxNsfbz60V4sFSGreKOQ9fdbsw/PqxEZ/p2onc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787295926; c=relaxed/simple; bh=S4JpXI2XvjmM0BzJAh92ntodAxMCCL1sVnkIUxsvnsc=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=NdORwTPU0LX9x3LlqhRF5ipYHb3bknf1ICip+uR8FL0g1UE9I/rpyqMBa1aqL504VgWwX+jflPLSD1v3zhEAt6PN7wgl22Sp8SABGn07loA3R4nlboq/1tgwz0OT18EKAUMJnKSFKUYwPkuo0GElSqwRB2xOTlAIlvowuCnt5Yk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=crusoe.ai; spf=pass smtp.mailfrom=crusoe.ai; dkim=pass (2048-bit key) header.d=crusoe.ai header.i=@crusoe.ai header.b=H1KfjPcK; arc=none smtp.client-ip=209.85.214.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=crusoe.ai Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=crusoe.ai Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=crusoe.ai header.i=@crusoe.ai header.b="H1KfjPcK" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-2cedda2ce6fso4094425ad.1 for ; Fri, 21 Aug 2026 00:05:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crusoe.ai; s=google; t=1787295924; x=1787900724; 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=H72dygOg9yIEOwIPt0eosLGHWNoHMNL+/AqoJVCW+JE=; b=H1KfjPcKjcJ7rIArT2pCRl3hjIs6gMCoF6Lp5eCPn/Tsb0hiLak1G2yQXkCzLgk+xM TuGaeEBzDQ+beydRribxNoAMi5V8SWvSZBG5afbatf5cwv+e+/YpvLOXX5zcWqpjIUE6 9fy8mve+fxaV6t7f+bdjSEn1b4+Xy0+90N9t3B5VRuQeXHlGE6NSjlzYRSv5sbkdohV/ H17Hlzf8Qbq9/MJ1RNKNckcHTe0Or/04XZ8ytB78WD1cVnq/GcsTvzsDBdG84BR+owQC 376XIg61Gv/m+qiZ9uOcn04N9cI+rnR6NNLDsB9u+bNL9WPIuNZBe8dkUWQxNtV5rsBA p5Jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787295924; x=1787900724; 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=H72dygOg9yIEOwIPt0eosLGHWNoHMNL+/AqoJVCW+JE=; b=quR9hhQn8E2pSjslsWo3IQqSZvtsczggLXcMc38uOLdhXCRc8o2h+97tX7+L2lkB0c Z10NHLFK4D/+/wuslHxKtrz9CPo7WczOUk8AheSUkvEXxCeLrEsVZhTEEpE3ik4227Q9 40/8cS8aEv0I+PiPlR3TOGe9trR4z4JkChhI4mV52FLao2MV7rqgUWj6f5VK6kScKaea hnswgPOKHEmqD2VEyYf0yb5J94KAM3Rs1bRYNHIwD9OQFoqZPThgKqRBqLE1ZRWD/S6K zloNPAwDGFsg8+z28OUACe+HX3vlP5l0U9P3ZE5DdfmohCm8HZ/hAVHSNzaiFUfhGayx B71A== X-Forwarded-Encrypted: i=1; AHgh+Roj0luRwJIM5AZ1sfUmNQHW9k6XCRJaPfUzR0m5KV0Pf2/afAZPNJpwQ4frbII6Xr9aqEPVWh8PBP2IOHI=@vger.kernel.org X-Gm-Message-State: AFuF++kBrkbHnkQVFAhDpI0aBzmhhq9SXwGKI140FIaNg2kZtYZM4u7r +tud3qrsjDUwIh9t05TmCvGDOrIAfp3gGn8OVo+JQGT5uPZBuAUAvd4muDVgryN1hxs= X-Gm-Gg: AR+sD132MsAzUDoa9dawGSvhL7Qz5bM6srYr8wTVMveZ2xvM9Q/fA1luXan3gWhYmhU sb1dgZ7S1IEe2jdNAEqchEuUeSPZRvgG5TNyiTBiV6wRxJoCJ0N2elJmlzebnmd/jgDGnxE5T99 Jxj/wX3mQ3sX2BDQNDTL9XLm5CgS/DUn0w025CMgEI0yRTbsykN1AQFCFC78V9plO/X7QJRz6PX 76NUwfx0ecOjn5NeRbFsrt+/wM0O9BvaX4EhcOmJwONKjq0+8GxmIHtzVmV/lxuI+wasq5XL8mI bPIiGv8xcETPknIJZkg23L+XcvG2l9OYUmsNBNTrCtQfSU4mZq4QUHikRynr2n2MayMY2uIdba1 buuab7brl25RnlYtHVtJBNqJjLWTNnyxiEbNUxNGSw9OA9e1eXu3/5aDyKAwaZEidx2uGezmGL/ Pt5jvddgvWNpVVdjImm9rUNeoEO1pd6kke8/RpHbp+qMyQxvLyAcBpeNFx6snreU83Bgi3PihEz 3UMzWIWW5KGUB4cMNXZXHembdslfAyMKyGtCZ+m3oU= X-Received: by 2002:a17:903:b07:b0:2cf:afe8:b722 with SMTP id d9443c01a7336-2d64afe960dmr79499025ad.11.1787295924173; Fri, 21 Aug 2026 00:05:24 -0700 (PDT) Received: from MBP-Saravanan-D.civet-hops.ts.net ([2601:647:4380:3400:8867:e04c:ed8b:db39]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-327bef77bfcsm21651507eec.9.2026.08.21.00.05.22 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 21 Aug 2026 00:05:23 -0700 (PDT) From: Saravanan D To: Andrew Morton , linux-mm@kvack.org Cc: David Hildenbrand , Lorenzo Stoakes , Zi Yan , Baolin Wang , "Liam R . Howlett" , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Usama Arif , Peter Xu , Alex Williamson , linux-kernel@vger.kernel.org, Saravanan D Subject: [PATCH] mm/huge_memory: allow huge pfnmaps regardless of THP mode Date: Fri, 21 Aug 2026 00:05:20 -0700 Message-ID: <20260821070520.25759-1-saravanand@crusoe.ai> X-Mailer: git-send-email 2.53.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 THP mode check in __thp_vma_allowable_orders() runs before the clause that trusts huge_fault() handlers, so huge pfnmaps only materialize when THP is set to "always". The THP modes exist to limit the memory and khugepaged costs of transparent hugepages. Special mappings are backed by pfns instead of THP folios and khugepaged never scans them, so those costs do not apply and we can exempt special mappings from the mode check. This also makes THPeligible in smaps report 1 for such mappings. This matters for VFIO device passthrough on distributions where the default THP mode is "madvise". Mapping a 128 GiB GPU BAR through VFIO_IOMMU_MAP_DMA costs 33.5 million order 0 faults and 20.7 seconds when the mode denies huge pfnmaps. With huge pfnmaps allowed, the same mapping takes 128 PUD faults and 0.4 seconds. Signed-off-by: Saravanan D --- mm/huge_memory.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index afbb5974bd22..bc61b8020af6 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -193,9 +193,10 @@ unsigned long __thp_vma_allowable_orders(struct vm_are= a_struct *vma, if (!vma_is_anonymous(vma)) { /* * Enforce THP collapse requirements as necessary. Anonymous vmas - * were already handled in thp_vma_allowable_orders(). + * were already handled in thp_vma_allowable_orders(). Special + * mappings have no THP costs and are exempt. */ - if (!forced_collapse && + if (!forced_collapse && !vma_is_special_huge(vma) && (!hugepage_global_enabled() || (!(vm_flags & VM_HUGEPAGE) && !hugepage_global_always()))) return 0; base-commit: a032d41a86cb82a747bc14d9c82b3e153a9a9ab7 --=20 2.53.0