From patchwork Wed Mar 13 21:47:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Xu X-Patchwork-Id: 13591910 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 95735C54E58 for ; Wed, 13 Mar 2024 21:47:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0FE7880060; Wed, 13 Mar 2024 17:47:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0AE4E8005E; Wed, 13 Mar 2024 17:47:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E6A8580060; Wed, 13 Mar 2024 17:47:26 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id D561B8005E for ; Wed, 13 Mar 2024 17:47:26 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id A9EF1120F54 for ; Wed, 13 Mar 2024 21:47:26 +0000 (UTC) X-FDA: 81893352492.17.BB16456 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf06.hostedemail.com (Postfix) with ESMTP id A17D5180017 for ; Wed, 13 Mar 2024 21:47:24 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=FI57p4S+; spf=pass (imf06.hostedemail.com: domain of peterx@redhat.com designates 170.10.129.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=1710366444; a=rsa-sha256; cv=none; b=383WYqXxVNwIUi4awC5WtK8j5hM3IkWe49Noy2AX0laAVt6EF/Fbfo49pXUv6gHD2DrxPX vxRklF0pX67UZNKO8knGW+mjaMWlUw8exZaDmpD44qpUkrLLLk/Ga3VCISDQ8NsJYE0T+U ZMJP+hiIP71omqMzakfbaTxK/R1k4Ow= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=FI57p4S+; spf=pass (imf06.hostedemail.com: domain of peterx@redhat.com designates 170.10.129.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=1710366444; 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=Cvg3h+nHFQQ2z0yoilgh/3E5YQAg693jLTvjOOpWcMg=; b=gd/6I+b1r0NXScRfeWAj+CdJlAPAptzku+rR5yPaYaXX8+/aWzQdtl3H2vu6L+PytrGfJ6 XeVjaDY5Vjk4mxlgaWOZEjoT+mZGhKYZIzCVGd2NRxnZdHYlxGD65rFbbhQmR8JP1fU46i N5rKTj1FdVnh2g7J5y+Rho5vZLj7is4= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1710366444; 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=Cvg3h+nHFQQ2z0yoilgh/3E5YQAg693jLTvjOOpWcMg=; b=FI57p4S+EUcPi+r1+QxwPl0qovIAantYoBd76JKd9wff2BDeBE1QK85NxHnYzA8IJiin5G DOaGBjfWifd7hjEwFNDUDpp9rMPUkT8pn9KGRRkOHv24Ic9tyDg8SAUoKJEVO6EdbiYYI6 vbqNIvIvCpIvbUEhT9Fin9vShdYtHZI= Received: from mail-vs1-f69.google.com (mail-vs1-f69.google.com [209.85.217.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-495-uJU9l9bbPWOVta0AHVXXUQ-1; Wed, 13 Mar 2024 17:47:22 -0400 X-MC-Unique: uJU9l9bbPWOVta0AHVXXUQ-1 Received: by mail-vs1-f69.google.com with SMTP id ada2fe7eead31-474c751e9baso10125137.0 for ; Wed, 13 Mar 2024 14:47:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710366442; x=1710971242; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Cvg3h+nHFQQ2z0yoilgh/3E5YQAg693jLTvjOOpWcMg=; b=xLKREA8amllnmZcxyBF+ur4PjfZkQKgJRM4qHznz18E597/ZxshdtOp74AJSRaxTZR D8D8rKD7fieIMIyOB1mh41Yq9lBUPZfE6iulnUmYopXSryPhjfKphrScrbdKs4U8GrMz axxqrhosf1kk3IRqv9MFeHIBBKjxoIJz5ij7LAZIxOGFvlZE+NzWAO7D3sNqQ7pCzuTd cJLb4i1rZjHlR/7hIK8FekyvTxKjLo6fa6nG4hcQ9hIploiN3jps6W8pKEL4CrPyjuAk 3HYrjOZaG69n+l+eCV9EnOqTArUXnIZcaBG+I8+0UCA6fYAzx3oJN0TpCK6E2i3OhucB d1GQ== X-Forwarded-Encrypted: i=1; AJvYcCVaRp/eoHCObFpvw/oBSQnaQ7poIrtNDwrh4Xrq0N38hrsdPuu/apkom7mf6foLAP328gzMoav2a4MCeyyGih/WaBY= X-Gm-Message-State: AOJu0YydvTHm5o/Dlcv5AX0KjKX6pTOcvuDG4D7XmgVqZKe/OeoOo+gQ mXWUnn3l8M4bviHqqij5GZERU/A9EJtmOzDdMH926pFoHSyAnOZqzdga2ZUzgOdU0MVW4Yu00xp NsHqNlEUIekr4SbF733KlZsiCHFMVKugj+2atB1UQQsQzQctx X-Received: by 2002:a67:fc48:0:b0:474:d24b:f5cc with SMTP id p8-20020a67fc48000000b00474d24bf5ccmr185179vsq.2.1710366442029; Wed, 13 Mar 2024 14:47:22 -0700 (PDT) X-Google-Smtp-Source: AGHT+IExtUpFAsO3j//nWUMiYrfkHfIQvS7XHG2BBi3o5gYAsKI/7+sGpzOvwSA+TSYy8KtxKUURKw== X-Received: by 2002:a67:fc48:0:b0:474:d24b:f5cc with SMTP id p8-20020a67fc48000000b00474d24bf5ccmr185164vsq.2.1710366441588; Wed, 13 Mar 2024 14:47:21 -0700 (PDT) Received: from x1n.redhat.com ([99.254.121.117]) by smtp.gmail.com with ESMTPSA id dv10-20020ad44eea000000b0069111c5cdd4sm60114qvb.100.2024.03.13.14.47.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 Mar 2024 14:47:21 -0700 (PDT) From: peterx@redhat.com To: linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: linux-arm-kernel@lists.infradead.org, Matthew Wilcox , linuxppc-dev@lists.ozlabs.org, Christophe Leroy , Andrew Morton , x86@kernel.org, peterx@redhat.com, Mike Rapoport , Muchun Song , sparclinux@vger.kernel.org, Jason Gunthorpe Subject: [PATCH 00/13] mm/treewide: Remove pXd_huge() API Date: Wed, 13 Mar 2024 17:47:06 -0400 Message-ID: <20240313214719.253873-1-peterx@redhat.com> X-Mailer: git-send-email 2.44.0 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: A17D5180017 X-Stat-Signature: hg9brfmppk8da9n1idiurmmiu4aifkkh X-Rspam-User: X-HE-Tag: 1710366444-118863 X-HE-Meta: U2FsdGVkX1+Z+qUpow1Zee1TPP2nmIP4Y0wGkLyqWScoRBz8GEQapsDXUbvCWJ2wo6eNbLJqy6zESC+zHzLs09muaGwAd6j8omLTZzLmTvC+PKqkz9FxFQDNqCzFQf4UK5rSgBDuuY0sK1TsLBvz2ICguF55N7UkH1aHE5dSK1XMXSfk+fRzzLk71OFLnOzA+PRvBMAmalur8/B387l/PGmVhqgXUUOTjDFRpD1rjcQehbPZPlGxe/qXgktpiiMwSIllTR5Im7qQ8mh8dpDiJeMkZvGAVL9GdqkFx+cU1gU4JNjRUrifx6Lc7BMv5jw/GKEjMqs+a52XxSz5jgd3jpyi29xinCUSE8D8ZRPeuxBdNM9lg2nW7u8Fbh0/Ib57fAz8aKXc7nZY3A3hHrFbJtqAioomL2akEDDlfKWD++98X9ME7g56LcPYdqB5J6AkaHBpOEh07Uq8a7OC83S54+0qGzYPghxS1IbN0ZtR6GFqZRUGtaEs0k0u54laEX6jclwm2h9TgwiPAOb5h8WBlUNrX7KwWpRHGkd8wa7GdgR3WU+K3PijWjunuUQB4LSYRjxiOx8wwk6XPqZl7CW4txTEsrwDQ3X4mkDpoufWdW3sKs+Uu1k0tGTd4l7uQ+ZFCu0M0U4eIzbNVamCFhkhHzIeIpDzZdc3SV6EZ07Teo0pO6ryQWjwPuewm0411nLAYmqwmGZMhpCqVTrtKLxwkeL1yPTJx9po/sbkt5WcFx22UCwwM5svlm/tz/vBa0ilYBdIvNY+7EMqxn6G2c7g88B7fux562FVYMK46DLXKUU93sEw4WyxuXt3Ayf7XI2ibXscI2OPhoSQ8XxcLQ+KuU7a40O5GDW/KoZjwZ9IAmbZnfaE1u3AeQOtBhSkrFO5IblWUPEKRhfwzHU/ik8xxPGbYSOGWI1ASx0QEZDSL7ELEvvU4vf5rp8AXJYh86MLGPbX772ToDx04tVZWEl ic8RJWuy gMrS4bdA1stJtTFsNvl+iEH3TmKwvyO3W8RSBqjkMqLmtwt/rH6pwDk8iyd49uXJ32oeqOpp+Jr8p7Zvo/I2GhAh3j/mnF3uKiQVmmKudg7Iu8Sk3ikjhT5lKO+HUTTNIXSRFHgJchA3ZdDd8974wB3Ue2iTjliT59iE/zUOY9toFo1iZqa1wYsUI2HqWlEknvLK40erTVntkKZt0rOK+Yx6kG2F6iKLtvpbfv9yyehUTVrsHJTuPXZgOEDFU2zgogeTXB0N7hqUK4C542XHbHNOyYXDl89DmKcXwZCIfeDbSxxMmD9zQPQYXkbZBWZhhuyVf5RLhZblemCizsNBTb65WHf2fwjk89NjMK03i/aYpxIgF7fhixwYKQ4skYE/K/PAr8Pfogu45BUxn3X4Pujroj3APFXSANdMskW8pkfJiYFaWxFx/DrEzkfbyix+tJPI+Mev6lcy5rtMJAdqQEo5u8r1kk7jDquD7AeNpHh67Mzs= 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 9af2e4c429b5] v1: - Rebase, remove RFC tag - Fixed powerpc patch build issue, enhancing commit message [Michael] - Optimize patch 1 & 3 on "none || !present" check [Jason] 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. [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 | 27 +++++++-------- 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, 68 insertions(+), 284 deletions(-) delete mode 100644 arch/arm/mm/hugetlbpage.c