From patchwork Wed Mar 6 10:41:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Xu X-Patchwork-Id: 13583872 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id F20C5C54E41 for ; Wed, 6 Mar 2024 10:42:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 555686B007E; Wed, 6 Mar 2024 05:42:05 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 505456B0083; Wed, 6 Mar 2024 05:42:05 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3A5B16B0085; Wed, 6 Mar 2024 05:42:05 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 231CC6B0083 for ; Wed, 6 Mar 2024 05:42:05 -0500 (EST) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id D8EABC02A8 for ; Wed, 6 Mar 2024 10:42:04 +0000 (UTC) X-FDA: 81866274168.16.D5AD873 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf28.hostedemail.com (Postfix) with ESMTP id 528F1C0015 for ; Wed, 6 Mar 2024 10:42:03 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Ll1QHSV6; spf=pass (imf28.hostedemail.com: domain of peterx@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709721723; a=rsa-sha256; cv=none; b=wJERK9QwlIxx0bmqAx8ZMpV1Ln8d3CPke4zEhYpqBnEqDeRPWcgKVEdOG5hEqYi8may3g8 dwM5ISn8qLwkKPVIYgBwkuxy0Vfq3SN6DYj4QcBibnQRLQB+kYi6K8yMVI3gfL2Yv1C1ZP NrOzPpPxrw7KsOYx3sXIMDWkW7o1ZXo= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=Ll1QHSV6; spf=pass (imf28.hostedemail.com: domain of peterx@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=peterx@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709721723; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=nsf6jReUnDDAR6+gdGYukarc12MvosBlw43zRUpKkD0=; b=3uQWyqqrKtUBp+PF10x1hytG0Q03D7OqEhkyaDS+/tQQZF6AKhSbFQigz0MhUZD0DW6sqz fpU6Ou0DQA/ov06gzD0thWxztKDt+OpsLLE4IOV3gLz6iJ5AQ+lXOh4itKOBoWHSxQX6Qz 12m6oId+3MaDeLIFhoSQXpAQ4sQXgSw= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1709721722; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=nsf6jReUnDDAR6+gdGYukarc12MvosBlw43zRUpKkD0=; b=Ll1QHSV6F0rOTD1jjl/KyudCMN1mt1RRA+2JiShum0fofHd6nsI+ce6CEhWkTgmCVtjnJi We8L6CNM7RJiwuhxHdaWE4zbVmbQ6eriBJVST9ryd3w49Jwh0BhmoGvX7nF7PAFpMqGZr0 ZLpPRXladE+KdJzgaHMPBAQsRn1RzYk= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-464-h1aSarPyMoSclrJ9xw8rvg-1; Wed, 06 Mar 2024 05:41:57 -0500 X-MC-Unique: h1aSarPyMoSclrJ9xw8rvg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (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 mimecast-mx02.redhat.com (Postfix) with ESMTPS id 70D85101A56C; Wed, 6 Mar 2024 10:41:56 +0000 (UTC) Received: from x1n.redhat.com (unknown [10.72.116.8]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2CD3F112131D; Wed, 6 Mar 2024 10:41:49 +0000 (UTC) From: peterx@redhat.com To: linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org, Andrew Morton , Muchun Song , Jason Gunthorpe , peterx@redhat.com, Matthew Wilcox , Mike Rapoport , Christophe Leroy , x86@kernel.org, sparclinux@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH RFC 00/13] mm/treewide: Remove pXd_huge() API Date: Wed, 6 Mar 2024 18:41:34 +0800 Message-ID: <20240306104147.193052-1-peterx@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.3 X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 528F1C0015 X-Stat-Signature: 1ogh9snipk8ffo9fy6ybey3wanr3k1rj X-Rspam-User: X-HE-Tag: 1709721723-168319 X-HE-Meta: U2FsdGVkX1/f3UJClJ3NRtknly9x8zHGgPA81voxwPb002cT2Q5Sup37hURub/Y+WMl4xZp2j4uIWbpx9oYEH+MWmUN/kRb/MzeD+S235ona3iX54yOeiMSCbHYSkfuh0r0TSdRunRiM7ZcJ4CbUDKkdUkh2NF0MigogC8o3cETa0EyNNAGm0YOZ6E+KuZ5NuKghtTIH9Ja1NhlX4tbXMjBivGt6G+TjHMhYoyBmlBTLCrX9xCkLpVfXm/wbr1/PNEfh8vGZebcn1loguT+BW2879cAd/82mp7aklzq/BXaLbsB1w0dqKqLtxm8/gGuAQG9dT2Csc200zBTPi4p/glNpCTSjAUH0lFJ7dtLGBNdnzBu6JkyqYklo4Tt5/lyEq+GHiRBdRRKWf3qZz8v1794nzI22CiN/9BWPwGC9dFSwrSVmbqoIv7RZcEG8HHgHPb68TnxOHtAO1y7zh3Ze7AbHjr/S0vNpuZ7bDTbI5+DxDf8KMVl0PZswN8nXdCSqtNiIoQyLeXZoQVivTmQhLbUqQBFRFBb3vK6NVZM0nAfm6j6FF8gkaJpnYfq8FfoWM1H3pIxVH3DnEQvlWCIjhNnoZ82LaHonc/HUUlBA4lZ+G+V7jrl7DhQSp+DQv8e3rXNgsWxxDIb/+zSwVcnCai998EyRtOzDHXXjj64ZSPqfXoT9iR6aGpoc0t2fHja2kByMYzfhW6iIcnJSBo7nCLgJiW53n5taNN852S6TDkHGnXzbOWbomdQfbwhSzY6FmvBDv7jaHHMwPQD8Hs8pfTtt+vd2AoqzzZNccEZ4mUKdVeA+vq2nUZe8mOb8Ql9Nr3gV6nmxuH/KoWi+VkOg5WUyAwg+iE3w4easoTQQVIlVOCfZfOC172f+U1D3PIBczBNOK7qPeCAYCQ3N/DVgLf/ikwMdWe2X X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: From: Peter Xu [based on akpm/mm-unstable latest commit a7f399ae964e] In previous work [1], we removed the pXd_large() API, which is arch specific. This patchset further removes the hugetlb pXd_huge() API. Hugetlb was never special on creating huge mappings when compared with other huge mappings. Having a standalone API just to detect such pgtable entries is more or less redundant, especially after the pXd_leaf() API set is introduced with/without CONFIG_HUGETLB_PAGE. When looking at this problem, a few issues are also exposed that we don't have a clear definition of the *_huge() variance API. This patchset started by cleaning these issues first, then replace all *_huge() users to use *_leaf(), then drop all *_huge() code. On x86/sparc, swap entries will be reported "true" in pXd_huge(), while for all the rest archs they're reported "false" instead. This part is done in patch 1-5, in which I suspect patch 1 can be seen as a bug fix, but I'll leave that to hmm experts to decide. Besides, there are three archs (arm, arm64, powerpc) that have slightly different definitions between the *_huge() v.s. *_leaf() variances. I tackled them separately so that it'll be easier for arch experts to chim in when necessary. This part is done in patch 6-9. The final patches 10-13 do the rest on the final removal, since *_leaf() will be the ultimate API in the future, and we seem to have quite some confusions on how *_huge() APIs can be defined, provide a rich comment for *_leaf() API set to define them properly to avoid future misuse, and hopefully that'll also help new archs to start support huge mappings and avoid traps (like either swap entries, or PROT_NONE entry checks). The whole series is only lightly tested on x86, while as usual I don't have the capability to test all archs that it touches. Marking this series RFC as of now. [1] https://lore.kernel.org/r/20240305043750.93762-1-peterx@redhat.com Peter Xu (13): mm/hmm: Process pud swap entry without pud_huge() mm/gup: Cache p4d in follow_p4d_mask() mm/gup: Check p4d presence before going on mm/x86: Change pXd_huge() behavior to exclude swap entries mm/sparc: Change pXd_huge() behavior to exclude swap entries mm/arm: Use macros to define pmd/pud helpers mm/arm: Redefine pmd_huge() with pmd_leaf() mm/arm64: Merge pXd_huge() and pXd_leaf() definitions mm/powerpc: Redefine pXd_huge() with pXd_leaf() mm/gup: Merge pXd huge mapping checks mm/treewide: Replace pXd_huge() with pXd_leaf() mm/treewide: Remove pXd_huge() mm: Document pXd_leaf() API arch/arm/include/asm/pgtable-2level.h | 4 +-- arch/arm/include/asm/pgtable-3level-hwdef.h | 1 + arch/arm/include/asm/pgtable-3level.h | 6 ++-- arch/arm/mm/Makefile | 1 - arch/arm/mm/hugetlbpage.c | 34 ------------------- arch/arm64/include/asm/pgtable.h | 6 +++- arch/arm64/mm/hugetlbpage.c | 18 ++-------- arch/loongarch/mm/hugetlbpage.c | 12 +------ arch/mips/include/asm/pgtable-32.h | 2 +- arch/mips/include/asm/pgtable-64.h | 2 +- arch/mips/mm/hugetlbpage.c | 10 ------ arch/mips/mm/tlb-r4k.c | 2 +- arch/parisc/mm/hugetlbpage.c | 11 ------ .../include/asm/book3s/64/pgtable-4k.h | 20 ----------- .../include/asm/book3s/64/pgtable-64k.h | 25 -------------- arch/powerpc/include/asm/book3s/64/pgtable.h | 3 -- arch/powerpc/include/asm/nohash/pgtable.h | 10 ------ arch/powerpc/mm/pgtable_64.c | 6 ++-- arch/riscv/mm/hugetlbpage.c | 10 ------ arch/s390/mm/hugetlbpage.c | 10 ------ arch/sh/mm/hugetlbpage.c | 10 ------ arch/sparc/mm/hugetlbpage.c | 12 ------- arch/x86/mm/hugetlbpage.c | 26 -------------- arch/x86/mm/pgtable.c | 4 +-- include/linux/hugetlb.h | 24 ------------- include/linux/pgtable.h | 24 ++++++++++--- mm/gup.c | 24 ++++++------- mm/hmm.c | 9 ++--- mm/memory.c | 2 +- 29 files changed, 56 insertions(+), 272 deletions(-) delete mode 100644 arch/arm/mm/hugetlbpage.c