From mboxrd@z Thu Jan 1 00:00:00 1970 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 0C2ACC4345F for ; Sun, 14 Apr 2024 07:28:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5C0026B0082; Sun, 14 Apr 2024 03:28:07 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 56F786B0085; Sun, 14 Apr 2024 03:28:07 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 410B06B0087; Sun, 14 Apr 2024 03:28:07 -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 1F4A76B0082 for ; Sun, 14 Apr 2024 03:28:07 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 8BD54A02C7 for ; Sun, 14 Apr 2024 07:28:06 +0000 (UTC) X-FDA: 82007308572.13.E30003F Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf16.hostedemail.com (Postfix) with ESMTP id EEF7D18000C for ; Sun, 14 Apr 2024 07:28:03 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=mSn3bFIT; spf=pass (imf16.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713079684; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=PTjZtFDV+e0SZywjRkZKpNTSYLoLfBsorre9sVs8uUQ=; b=cgTBQDGIndRz0UyBUe92VStfr4XpjpE1Y/2uIWJVJ8XQDrYKaK1L02ioSf4fB48SZ2l1JD 4dPZe0LrnrGDxB9eqIBkxjMQZIck9xcfP41PEACfEsxrQf/0LrDj/vNI0wIqI+w0GKA5KN 34k/W2UBaPih/Q09y4UhJUO1UyUgMW4= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1713079684; a=rsa-sha256; cv=none; b=igSJIkUqaSKVdlkHOBCzo2/uLJ3lYOGxL8FW2jQ6fn/INiBgXpN4ztBgetZ3APjwq5ZNMD rZYn3wvR3nXk7iUZYRd2AzclmRovhDuxY+H5elcJrcdG00+7iWEEBc5wsMsLKt+2vG0iG5 p3h8HcGE7NJyC6vQ37ZvBWCtok3nRfk= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=mSn3bFIT; spf=pass (imf16.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 0AE1B6091C; Sun, 14 Apr 2024 07:28:03 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 759F8C072AA; Sun, 14 Apr 2024 07:27:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1713079682; bh=7UcAoz/SHZJ9dQ0bgxdPwC8jDXsqkfxw4nZlv0SLw5o=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=mSn3bFITK7eYlJdTFbScch0ThBeU+CtfVZynIF2TKYAjwpfIWpT9mvprRtl/vRdi+ PWs0IudDlFW6Beno7xjDAiW1ip7pL/FGhEaTkCamfUxQ5eDkHTs4QkNm97zhVJccwv UxX9+hkJgUV7GSohwVI620vdp0JYtwTWKKysZvcjBk9t6kUNPFg5Eeatgn84u8vivs 7On6vy8KLlD97z5wp8DI0bLXFhxIaSTkHjS//iWFuOPg7CQ+rJyeDYDISTJa6W6AFc TXNbcHaOhhepqyuh8BUKoPaV89wZMsoGzWH9gtBjUYYSDb1AqF+wsfY3ZeQjYF2dQ5 tmillpYns8epg== Date: Sun, 14 Apr 2024 10:26:47 +0300 From: Mike Rapoport To: Sam Ravnborg Cc: linux-kernel@vger.kernel.org, Alexandre Ghiti , Andrew Morton , =?iso-8859-1?Q?Bj=F6rn_T=F6pel?= , Catalin Marinas , Christophe Leroy , "David S. Miller" , Dinh Nguyen , Donald Dutile , Eric Chanudet , Heiko Carstens , Helge Deller , Huacai Chen , Kent Overstreet , Luis Chamberlain , Mark Rutland , Michael Ellerman , Nadav Amit , Palmer Dabbelt , Puranjay Mohan , Rick Edgecombe , Russell King , Song Liu , Steven Rostedt , Thomas Bogendoerfer , Thomas Gleixner , Will Deacon , bpf@vger.kernel.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org, linux-mm@kvack.org, linux-modules@vger.kernel.org, linux-parisc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, loongarch@lists.linux.dev, netdev@vger.kernel.org, sparclinux@vger.kernel.org, x86@kernel.org Subject: Re: [PATCH v4 06/15] mm/execmem, arch: convert simple overrides of module_alloc to execmem Message-ID: References: <20240411160051.2093261-1-rppt@kernel.org> <20240411160051.2093261-7-rppt@kernel.org> <20240411205346.GA66667@ravnborg.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240411205346.GA66667@ravnborg.org> X-Rspamd-Queue-Id: EEF7D18000C X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: ybknhqui656rkukgyab7zwernw75dpwo X-HE-Tag: 1713079683-958340 X-HE-Meta: U2FsdGVkX19OopYM6TgxZFKuRJ81ejWDYLOarnVZXde9efsqsey6EX7DVsOxrh7O3Gn7VNyBzIbmzCHmCOhzPhSbodpgsbgQ0sp2VEceFl0pepavC+3Q9GiRRUd/RvNl9oP7d1O+lN4+rsgHEyxN1MZeptvrKu74Jdx9Ke24Gzi2ceAo+Pvnw9sHm9TaS0KmfLthK0qyuImF0vevUQZGvMM7qkLEOp+a2cXXBgDQm/OyB6W+dO8P0mbKCOeZ4rTuAbUz8EUNdnieGi5hvJGmbnJu7oPzKDAQugGBQcRbUXLzb6JcrXugkOZlgcS3nWA+pec0zBgKu8oMQMlQuNRHXuMw2hw8nOm7J5XAIT3M/3p4wgB5sMJ1vid7Zw2cvnzUQ7DwfgZQtoUQEVmfwnmU/zHf2mIHFGtgnWCsNcQfMZh1kqVUegMnOVQpMtS3yxAAIwRpppyELA38rfFuXeks3yBddfAbGhrU8G/De9ofCVnwKkpLPlDJEUFi6TVSFimX44SuoS22staWg9E3FDPMesJzJyoOLSbF+YSJOE2AokkKhdfmbm8OH1GVTeNuljxT3znxM+JKzc/bn0A8Xbc9IAgcP/VxXk8g1fXbpwP03LTAKgcIDnrQsa1gbFe+MKVo/2jOUk2TG8v8Umr+F4qPPlQGgawSZNx+xWmoGqzM+59+EG3w6DC5ElxHoKjrvkzmkKUhXNaFJ87qplfz0sgPvf3D2m+PAzKGVqaKYtdEd9OzZDdCHpPpeNLv/fR371+Jy8IUHLCz2BnarOzw8NqhAg9av1MEHB4TUU9RT5rxOevqd9FvlMd99a8c6Re3fOyXmnpR7VbkM9YWae7dAmkd6sUmd0Yp5VKSfFXQbV8SGhQdRiiIBlSvOQEkdRTgipVeZsVTVbMbVgjupAfBEycaHPI4TgzS+6jSlmAOVeaEZGRpRtel36n1+F8SQ/yLDTQ8LtwjzOPzt4lY9dkd7CP YyNrZaP2 2htF98qRRgw3YfpFCzN16m0dRt8veMM0BvBy4oKKd1D/RbEWcaERKM6EbXADuHgu1vuw+dDffYN2j7vJooT7znQYZPBTYyTPB2EVb9T20nm6xKpDUd+61uqpN4ts4I0mGnu7V9lqJr0kdIQ4jNG975zN42MESpCIrzdnodXtIA/mhu0vK4gvwDmYerPPBFN/OTlisqE5mDioJWEwIsSjkJ1bP9jRyM9hRiYMNQ1h4AYYkQpB48/2RvPGy+fbDl3SJU3cWPh6XyYmbKzASXtacxz5SGxvSdzgaSlBjZfhNnC25Ckpjuae0dCfVnwFQ82LDd5A0J/54fa34XTbRSPmJzHzk47JoGe4gV9HgHwJw+qPihq+jpvJNvWP+GrRmxMI0V50RZX5pjhITQvXa+1RhQZSX4Q== 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: On Thu, Apr 11, 2024 at 10:53:46PM +0200, Sam Ravnborg wrote: > Hi Mike. > > On Thu, Apr 11, 2024 at 07:00:42PM +0300, Mike Rapoport wrote: > > From: "Mike Rapoport (IBM)" > > > > Several architectures override module_alloc() only to define address > > range for code allocations different than VMALLOC address space. > > > > Provide a generic implementation in execmem that uses the parameters for > > address space ranges, required alignment and page protections provided > > by architectures. > > > > The architectures must fill execmem_info structure and implement > > execmem_arch_setup() that returns a pointer to that structure. This way the > > execmem initialization won't be called from every architecture, but rather > > from a central place, namely a core_initcall() in execmem. > > > > The execmem provides execmem_alloc() API that wraps __vmalloc_node_range() > > with the parameters defined by the architectures. If an architecture does > > not implement execmem_arch_setup(), execmem_alloc() will fall back to > > module_alloc(). > > > > Signed-off-by: Mike Rapoport (IBM) > > --- > > This code snippet could be more readable ... > > diff --git a/arch/sparc/kernel/module.c b/arch/sparc/kernel/module.c > > index 66c45a2764bc..b70047f944cc 100644 > > --- a/arch/sparc/kernel/module.c > > +++ b/arch/sparc/kernel/module.c > > @@ -14,6 +14,7 @@ > > #include > > #include > > #include > > +#include > > > > #include > > #include > > @@ -21,34 +22,26 @@ > > > > #include "entry.h" > > > > +static struct execmem_info execmem_info __ro_after_init = { > > + .ranges = { > > + [EXECMEM_DEFAULT] = { > > #ifdef CONFIG_SPARC64 > > - > > -#include > > - > > -static void *module_map(unsigned long size) > > -{ > > - if (PAGE_ALIGN(size) > MODULES_LEN) > > - return NULL; > > - return __vmalloc_node_range(size, 1, MODULES_VADDR, MODULES_END, > > - GFP_KERNEL, PAGE_KERNEL, 0, NUMA_NO_NODE, > > - __builtin_return_address(0)); > > -} > > + .start = MODULES_VADDR, > > + .end = MODULES_END, > > #else > > -static void *module_map(unsigned long size) > > + .start = VMALLOC_START, > > + .end = VMALLOC_END, > > +#endif > > + .alignment = 1, > > + }, > > + }, > > +}; > > + > > +struct execmem_info __init *execmem_arch_setup(void) > > { > > - return vmalloc(size); > > -} > > -#endif /* CONFIG_SPARC64 */ > > - > > -void *module_alloc(unsigned long size) > > -{ > > - void *ret; > > - > > - ret = module_map(size); > > - if (ret) > > - memset(ret, 0, size); > > + execmem_info.ranges[EXECMEM_DEFAULT].pgprot = PAGE_KERNEL; > > > > - return ret; > > + return &execmem_info; > > } > > > > /* Make generic code ignore STT_REGISTER dummy undefined symbols. */ > > ... if the following was added: > > diff --git a/arch/sparc/include/asm/pgtable_32.h b/arch/sparc/include/asm/pgtable_32.h > index 9e85d57ac3f2..62bcafe38b1f 100644 > --- a/arch/sparc/include/asm/pgtable_32.h > +++ b/arch/sparc/include/asm/pgtable_32.h > @@ -432,6 +432,8 @@ static inline int io_remap_pfn_range(struct vm_area_struct *vma, > > #define VMALLOC_START _AC(0xfe600000,UL) > #define VMALLOC_END _AC(0xffc00000,UL) > +#define MODULES_VADDR VMALLOC_START > +#define MODULES_END VMALLOC_END > > > Then the #ifdef CONFIG_SPARC64 could be dropped and the code would be > the same for 32 and 64 bits. Yeah, the #ifdef there can be dropped even regardless of execmem. I'll add a patch for that. > Just a drive-by comment. > > Sam > -- Sincerely yours, Mike.