From patchwork Mon Jun 27 04:58:07 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anshuman Khandual X-Patchwork-Id: 1648612 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=Uzll1fMq; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (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 bilbo.ozlabs.org (Postfix) with ESMTPS id 4LWb9t5DL2z9sGt for ; Mon, 27 Jun 2022 14:59:30 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=nnaS9/jNXALsuwqdxXPgAHcYJUHFVTImYL/depOS+fE=; b=Uzll1fMqJF3vhZ NinseGX5Yh10Ch7Vl+DzPzXDXikqOEp8j2zrg9nAcLVoIuIgk+M+vdwTbyQdjkIygctNjQgOUXKqz /PtbYYlYVJtIBndB5qu0hY6o7JFaJe27QPSTS/T455SdT1+PaoqY9q9b8yJdsazZIwMa+ZaX50MkO g9n5GmkNTZC2SvnelRe1K/KqP0nhZq4hPeZUg+UEvHoM0cx9wICb3pbtMtCgHmaJ8TEVBAhnMp4c8 H53MPlSUYkZrcEHTXRZmLmNPPEYZsgju9jNTKY8o/Dmr5QNnA4ECUNeqFVYvGqVXCDTM3M38Iy2Ay K2QXWACC5AJ/3OLlC8fA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o5gqN-00FT4g-M0; Mon, 27 Jun 2022 04:59:27 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o5gpu-00FSjW-GV; Mon, 27 Jun 2022 04:59:02 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8D61923A; Sun, 26 Jun 2022 21:58:51 -0700 (PDT) Received: from a077893.blr.arm.com (unknown [10.162.42.6]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 125053F5A1; Sun, 26 Jun 2022 21:58:43 -0700 (PDT) From: Anshuman Khandual To: linux-mm@kvack.org Cc: hch@infradead.org, christophe.leroy@csgroup.eu, Anshuman Khandual , Andrew Morton , linuxppc-dev@lists.ozlabs.org, sparclinux@vger.kernel.org, x86@kernel.org, openrisc@lists.librecores.org, linux-xtensa@linux-xtensa.org, linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org, linux-parisc@vger.kernel.org, linux-alpha@vger.kernel.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-ia64@vger.kernel.org, linux-mips@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-um@lists.infradead.org, linux-sh@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH V5 00/26] mm/mmap: Drop __SXXX/__PXXX macros from across platforms Date: Mon, 27 Jun 2022 10:28:07 +0530 Message-Id: <20220627045833.1590055-1-anshuman.khandual@arm.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220626_215858_670323_F08051B2 X-CRM114-Status: GOOD ( 13.66 ) X-Spam-Score: -5.0 (-----) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: __SXXX/__PXXX macros is an unnecessary abstraction layer in creating the generic protection_map[] array which is used for vm_get_page_prot(). This abstraction layer can be avoided, if the platforms ju [...] Content analysis details: (-5.0 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -5.0 RCVD_IN_DNSWL_HI RBL: Sender listed at https://www.dnswl.org/, high trust [217.140.110.172 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-BeenThere: linux-snps-arc@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux on Synopsys ARC Processors List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org __SXXX/__PXXX macros is an unnecessary abstraction layer in creating the generic protection_map[] array which is used for vm_get_page_prot(). This abstraction layer can be avoided, if the platforms just define the array protection_map[] for all possible vm_flags access permission combinations and also export vm_get_page_prot() implementation. This series drops __SXXX/__PXXX macros from across platforms in the tree. First it build protects generic protection_map[] array with '#ifdef __P000' and moves it inside platforms which enable ARCH_HAS_VM_GET_PAGE_PROT. Later this build protects same array with '#ifdef ARCH_HAS_VM_GET_PAGE_PROT' and moves inside remaining platforms while enabling ARCH_HAS_VM_GET_PAGE_PROT. This adds a new macro DECLARE_VM_GET_PAGE_PROT defining the current generic vm_get_page_prot(), in order for it to be reused on platforms that do not require custom implementation. Finally, ARCH_HAS_VM_GET_PAGE_PROT can just be dropped, as all platforms now define and export vm_get_page_prot(), via looking up a private and static protection_map[] array. protection_map[] data type has been changed as 'static const' on all platforms that do not change it during boot. This series applies on v5.19-rc3 and has been build tested for multiple platforms. While here it has dropped off all previous tags from folks after the current restructuring. Series common CC list has been expanded to cover all impacted platforms for wider reach. - Anshuman Changes in V5: - Converted most platfomr protection_map[] array as 'static const' - Moved DECLARE_VM_GET_PAGE_PROT inside - Moved generic protection_map[] comment near DECLARE_VM_GET_PAGE_PROT - Updated some commit messages Changes in V4: https://lore.kernel.org/all/20220624044339.1533882-1-anshuman.khandual@arm.com/ - Both protection_map[] and vm_get_page_prot() moves inside all platforms - Split patches to create modular changes for individual platforms - Add macro DECLARE_VM_GET_PAGE_PROT defining generic vm_get_page_prot() - Drop ARCH_HAS_VM_GET_PAGE_PROT Changes in V3: https://lore.kernel.org/all/20220616040924.1022607-1-anshuman.khandual@arm.com/ - Fix build issues on powerpc and riscv Changes in V2: https://lore.kernel.org/all/20220613053354.553579-1-anshuman.khandual@arm.com/ - Add 'const' identifier to protection_map[] on powerpc - Dropped #ifndef CONFIG_ARCH_HAS_VM_GET_PAGE_PROT check from sparc 32 - Dropped protection_map[] init from sparc 64 - Dropped all new platform changes subscribing ARCH_HAS_VM_GET_PAGE_PROT - Added a second patch which moves generic protection_map[] array into all remaining platforms (!ARCH_HAS_VM_GET_PAGE_PROT) Changes in V1: https://lore.kernel.org/all/20220603101411.488970-1-anshuman.khandual@arm.com/ Cc: Andrew Morton Cc: Christoph Hellwig Cc: Christophe Leroy Cc: linuxppc-dev@lists.ozlabs.org Cc: sparclinux@vger.kernel.org Cc: x86@kernel.org Cc: openrisc@lists.librecores.org Cc: linux-xtensa@linux-xtensa.org Cc: linux-csky@vger.kernel.org Cc: linux-hexagon@vger.kernel.org Cc: linux-parisc@vger.kernel.org Cc: linux-alpha@vger.kernel.org Cc: linux-riscv@lists.infradead.org Cc: linux-csky@vger.kernel.org Cc: linux-s390@vger.kernel.org Cc: linux-ia64@vger.kernel.org Cc: linux-mips@vger.kernel.org Cc: linux-m68k@lists.linux-m68k.org Cc: linux-snps-arc@lists.infradead.org Cc: linux-arm-kernel@lists.infradead.org Cc: linux-um@lists.infradead.org Cc: linux-sh@vger.kernel.org Cc: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org Anshuman Khandual (26): mm/mmap: Build protect protection_map[] with __P000 mm/mmap: Define DECLARE_VM_GET_PAGE_PROT powerpc/mm: Move protection_map[] inside the platform sparc/mm: Move protection_map[] inside the platform arm64/mm: Move protection_map[] inside the platform x86/mm: Move protection_map[] inside the platform mm/mmap: Build protect protection_map[] with ARCH_HAS_VM_GET_PAGE_PROT microblaze/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT loongarch/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT openrisc/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT xtensa/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT hexagon/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT parisc/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT alpha/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT nios2/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT riscv/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT csky/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT s390/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT ia64/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT mips/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT m68k/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT arc/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT arm/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT um/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT sh/mm: Enable ARCH_HAS_VM_GET_PAGE_PROT mm/mmap: Drop ARCH_HAS_VM_GET_PAGE_PROT arch/alpha/include/asm/pgtable.h | 17 ------- arch/alpha/mm/init.c | 22 +++++++++ arch/arc/include/asm/pgtable-bits-arcv2.h | 18 -------- arch/arc/mm/mmap.c | 20 +++++++++ arch/arm/include/asm/pgtable.h | 17 ------- arch/arm/lib/uaccess_with_memcpy.c | 2 +- arch/arm/mm/mmu.c | 20 +++++++++ arch/arm64/Kconfig | 1 - arch/arm64/include/asm/pgtable-prot.h | 18 -------- arch/arm64/mm/mmap.c | 21 +++++++++ arch/csky/include/asm/pgtable.h | 18 -------- arch/csky/mm/init.c | 20 +++++++++ arch/hexagon/include/asm/pgtable.h | 27 ----------- arch/hexagon/mm/init.c | 42 +++++++++++++++++ arch/ia64/include/asm/pgtable.h | 18 -------- arch/ia64/mm/init.c | 28 +++++++++++- arch/loongarch/include/asm/pgtable-bits.h | 19 -------- arch/loongarch/mm/cache.c | 46 +++++++++++++++++++ arch/m68k/include/asm/mcf_pgtable.h | 54 ---------------------- arch/m68k/include/asm/motorola_pgtable.h | 22 --------- arch/m68k/include/asm/sun3_pgtable.h | 17 ------- arch/m68k/mm/mcfmmu.c | 55 +++++++++++++++++++++++ arch/m68k/mm/motorola.c | 20 +++++++++ arch/m68k/mm/sun3mmu.c | 20 +++++++++ arch/microblaze/include/asm/pgtable.h | 17 ------- arch/microblaze/mm/init.c | 20 +++++++++ arch/mips/include/asm/pgtable.h | 22 --------- arch/mips/mm/cache.c | 3 ++ arch/nios2/include/asm/pgtable.h | 16 ------- arch/nios2/mm/init.c | 20 +++++++++ arch/openrisc/include/asm/pgtable.h | 18 -------- arch/openrisc/mm/init.c | 20 +++++++++ arch/parisc/include/asm/pgtable.h | 18 -------- arch/parisc/mm/init.c | 20 +++++++++ arch/powerpc/Kconfig | 1 - arch/powerpc/include/asm/pgtable.h | 20 +-------- arch/powerpc/mm/pgtable.c | 24 ++++++++++ arch/riscv/include/asm/pgtable.h | 20 --------- arch/riscv/mm/init.c | 20 +++++++++ arch/s390/include/asm/pgtable.h | 17 ------- arch/s390/mm/mmap.c | 20 +++++++++ arch/sh/include/asm/pgtable.h | 17 ------- arch/sh/mm/mmap.c | 20 +++++++++ arch/sparc/Kconfig | 1 - arch/sparc/include/asm/pgtable_32.h | 19 -------- arch/sparc/include/asm/pgtable_64.h | 19 -------- arch/sparc/mm/init_32.c | 20 +++++++++ arch/sparc/mm/init_64.c | 3 ++ arch/um/include/asm/pgtable.h | 17 ------- arch/um/kernel/mem.c | 20 +++++++++ arch/x86/Kconfig | 1 - arch/x86/include/asm/pgtable_types.h | 19 -------- arch/x86/mm/mem_encrypt_amd.c | 7 ++- arch/x86/mm/pgprot.c | 27 +++++++++++ arch/x86/um/mem_32.c | 2 +- arch/xtensa/include/asm/pgtable.h | 18 -------- arch/xtensa/mm/init.c | 20 +++++++++ include/linux/mm.h | 1 - include/linux/pgtable.h | 28 ++++++++++++ mm/Kconfig | 3 -- mm/mmap.c | 47 ------------------- 61 files changed, 604 insertions(+), 563 deletions(-)