From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5E33D299A84 for ; Mon, 15 Dec 2025 21:17:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765833433; cv=none; b=SlcL4NrxlgkBwvTnHq36Rh2Qy7OTGCEI4ClG8YwWufRZpTCV60yoSDPKiKL14sa+7YLeQWiLo3hwqLUBT1iIuogyzTXh4gl7nGFE2h8SdAlKCc7q0hVpGaHuOCJ4eIS4H1rL7O4CVcUceB4AaUR8OcTGYuhEZIKSkuuzBp9OUOE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765833433; c=relaxed/simple; bh=irXKzYenrL55s88ODywxpDlaQdbUGXgKMEWxYiPHHks=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=pD6fU3gIaEz0QLDBERbu4t/EPY41WJikhFox8QB8lLCFHPiUMppM8coDg4RPVocz60qKYX5jgv8yI6JTXEoEhbqeyN5XpIMuACuYeUMPoT33t9AniLVwCniziNzAaMoP/8ZzYwo9f37LE4jyOkKlCayF3TfY7G6HZ60eE2dQgNw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=NoSk/wL/; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="NoSk/wL/" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1765833430; 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=0ADnfSiMIGzMB/wdMCwvS96AWdDKTF7dBext/rGAqaI=; b=NoSk/wL/Ll7iJkJcxXvc09HHRhcZHs0lJLDMLkn+GbR7vF57eDz45LuOeM1qc/5zkXzAeX T1jWfVjcgx2n1aopChPGCyFK5IRitZ3KiOkbIBt2bgesB2gpz2jiEO54FL1ah931sKwdcC U4ASNGeYAcsoXM4c7X75/TIaY6wd9Ac= Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-29-ZwfahJxwOhWpNe79uy8s6Q-1; Mon, 15 Dec 2025 16:17:07 -0500 X-MC-Unique: ZwfahJxwOhWpNe79uy8s6Q-1 X-Mimecast-MFC-AGG-ID: ZwfahJxwOhWpNe79uy8s6Q_1765833425 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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8D46B1956053; Mon, 15 Dec 2025 21:17:05 +0000 (UTC) Received: from fedora.redhat.com (unknown [10.22.80.180]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 1CBB21955F21; Mon, 15 Dec 2025 21:17:03 +0000 (UTC) From: Luiz Capitulino To: linux-kernel@vger.kernel.org, linux-mm@kvack.org, david@kernel.org Cc: ryan.roberts@arm.com, akpm@linux-foundation.org, lorenzo.stoakes@oracle.com Subject: [PATCH 00/11] mm: thp: always enable mTHP support Date: Mon, 15 Dec 2025 16:16:42 -0500 Message-ID: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 Today, if an architecture implements has_transparent_hugepage() and the CPU lacks support for PMD-sized pages, the THP code disables all THP, including mTHP. In addition, the kernel lacks a well defined API to check for PMD-sized page support. It currently relies on has_transparent_hugepage() and thp_disabled_by_hw(), but they are not well defined and are tied to THP support. This series addresses both issues by introducing a new well defined API to query PMD-sized page support: pgtable_has_pmd_leaves(). Using this new helper, we ensure that mTHP remains enabled even when the architecture or CPU doesn't support PMD-sized pages. Please, note that we need to do the same refactoring for has_transparent_pud_hugepage(). I actually have patches for this one too, I'm planning to post it as a follow up to this series in the near future. Thanks to David Hildenbrand for suggesting this improvement and for providing guidance (all bugs and misconcentpions are mine). This is on top of latest mm-new branch commit d0a24447990a ("mm/hugetlb: fix excessive IPI broadcasts when unsharing PMD tables using mmu_gather"). v1 -- - Call init_arch_has_pmd_leaves() from start_kernel() - Keep pgtable_has_pmd_leaves() calls tied to CONFIG_TRANSPARENT_HUGEPAGE (David) - Clear PUD_ORDER when clearing PMD_ORDER (David) - Small changelog improvements (David) - Rebased on top of latest mm-new Luiz Capitulino (11): docs: tmpfs: remove implementation detail reference mm: introduce pgtable_has_pmd_leaves() drivers: dax: use pgtable_has_pmd_leaves() drivers: i915 selftest: use pgtable_has_pmd_leaves() drivers: nvdimm: use pgtable_has_pmd_leaves() mm: debug_vm_pgtable: use pgtable_has_pmd_leaves() mm: shmem: use pgtable_has_pmd_leaves() treewide: rename has_transparent_hugepage() to arch_has_pmd_leaves() mm: replace thp_disabled_by_hw() with pgtable_has_pmd_leaves() mm/thp: always enable mTHP support mm/thp: x86: cleanup PSE feature bit usage Documentation/filesystems/tmpfs.rst | 5 ++--- arch/mips/include/asm/pgtable.h | 4 ++-- arch/mips/mm/tlb-r4k.c | 4 ++-- arch/powerpc/include/asm/book3s/64/hash-4k.h | 2 +- arch/powerpc/include/asm/book3s/64/hash-64k.h | 2 +- arch/powerpc/include/asm/book3s/64/pgtable.h | 10 +++++----- arch/powerpc/include/asm/book3s/64/radix.h | 2 +- arch/powerpc/mm/book3s64/hash_pgtable.c | 4 ++-- arch/s390/include/asm/pgtable.h | 4 ++-- arch/x86/include/asm/pgtable.h | 6 ------ arch/x86/include/asm/pgtable_32.h | 6 ++++++ drivers/dax/dax-private.h | 2 +- .../gpu/drm/i915/gem/selftests/huge_pages.c | 4 +++- drivers/nvdimm/pfn_devs.c | 6 ++++-- include/linux/huge_mm.h | 7 ------- include/linux/pgtable.h | 11 ++++++++-- init/main.c | 1 + mm/debug_vm_pgtable.c | 20 +++++++++---------- mm/huge_memory.c | 13 ++++++------ mm/memory.c | 10 +++++++++- mm/shmem.c | 9 +++++---- 21 files changed, 73 insertions(+), 59 deletions(-) -- 2.52.0