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 BA66BC4345F for ; Thu, 11 Apr 2024 20:53:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3852B6B0082; Thu, 11 Apr 2024 16:53:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 335336B0087; Thu, 11 Apr 2024 16:53:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1FCBF6B0088; Thu, 11 Apr 2024 16:53:56 -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 033576B0082 for ; Thu, 11 Apr 2024 16:53:55 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id B60FF80D2A for ; Thu, 11 Apr 2024 20:53:55 +0000 (UTC) X-FDA: 81998452830.30.74BF4FF Received: from mailrelay1-1.pub.mailoutpod2-cph3.one.com (mailrelay1-1.pub.mailoutpod2-cph3.one.com [46.30.211.176]) by imf07.hostedemail.com (Postfix) with ESMTP id 6B7DF40005 for ; Thu, 11 Apr 2024 20:53:52 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=ravnborg.org header.s=rsa1 header.b=kv3VYS1n; dkim=pass header.d=ravnborg.org header.s=ed1 header.b="2lz6/kgt"; spf=none (imf07.hostedemail.com: domain of sam@ravnborg.org has no SPF policy when checking 46.30.211.176) smtp.mailfrom=sam@ravnborg.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1712868833; 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=8iZCIbXv/o+9vFGi/T/APUrhuAqs9LM6RRA1ferZ2wg=; b=5gsjQO+2RMzevBkp5x6MbST1WnlrhY2K9eK216TN4XqJY6PDoQFpXU6vD2S2s8M4tQOgdZ 4yfOng6WdcZrLBdw7kGdoy6Qq7alV0EVhY1os8ouK23WJKMMlK4N5O7J6mx+UXh8uD2uda xy0CH1I31MJ+xnBNcJigGDR3G4MT/rQ= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1712868833; a=rsa-sha256; cv=none; b=Ox0DqhdD4eAcIs5V//8utXJaZ0LqM8a075pXjhdRsRBPx1iAhL7lcHkVXvpCLwBhY5soUm cLP1v2FH4nkghzI+odzgZ6W5z5oY9qdgzGcHfmh1k6OQJcMY1dNQFB1nEs3NX/KJPnSvlz iwu0JtnN3xn9C9ApWt2YfzBOQJLgnZc= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=ravnborg.org header.s=rsa1 header.b=kv3VYS1n; dkim=pass header.d=ravnborg.org header.s=ed1 header.b="2lz6/kgt"; spf=none (imf07.hostedemail.com: domain of sam@ravnborg.org has no SPF policy when checking 46.30.211.176) smtp.mailfrom=sam@ravnborg.org; dmarc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ravnborg.org; s=rsa1; h=in-reply-to:content-type:mime-version:references:message-id:subject:cc:to: from:date:from; bh=8iZCIbXv/o+9vFGi/T/APUrhuAqs9LM6RRA1ferZ2wg=; b=kv3VYS1nb+1jhVe9oEyryqOQdogTQlFfldT5zGFYz9zCFOW49UnzyKwrJoDnpG5By8Wz6/89q37/J 74y1ANyGrc4+nAdiZLdwTQ7At1BMHShrpW21ksmQCnho4ndLVURK71dGIBPbwAmFDNXGQ3nhWfJORf kv6U7sF+UeIM9uVpTWy6T9yWjx+pcsw/GMhx3KJhDEBn/z0Ta31X9WEj03K6p1on5B6YlTztmnenxM 6t/dz3ghpSDNSSOo+Nh+gwCqPRCFFIbfiAkM9VZsrPcOKFRvNMfm1iQmPZN5y4JbJlPGl97XHjBdfO 1z6v1BSheYGCsHilS105+mOpPAp8U2Q== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=ravnborg.org; s=ed1; h=in-reply-to:content-type:mime-version:references:message-id:subject:cc:to: from:date:from; bh=8iZCIbXv/o+9vFGi/T/APUrhuAqs9LM6RRA1ferZ2wg=; b=2lz6/kgt5Ws9Bwhsrc83nOkDSczAnngGL2Yh8km6qYY8h6ibpExr6aVD63x7Bbyn4q9jSyAbA/9ij 5z3+8uwDQ== X-HalOne-ID: 9634f2b2-f845-11ee-b2f6-516168859393 Received: from ravnborg.org (2-105-2-98-cable.dk.customer.tdc.net [2.105.2.98]) by mailrelay1.pub.mailoutpod2-cph3.one.com (Halon) with ESMTPSA id 9634f2b2-f845-11ee-b2f6-516168859393; Thu, 11 Apr 2024 20:53:48 +0000 (UTC) Date: Thu, 11 Apr 2024 22:53:46 +0200 From: Sam Ravnborg To: Mike Rapoport 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: <20240411205346.GA66667@ravnborg.org> References: <20240411160051.2093261-1-rppt@kernel.org> <20240411160051.2093261-7-rppt@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240411160051.2093261-7-rppt@kernel.org> X-Stat-Signature: 8sfmb5mqthdkzfbornzzrn3fphy56f78 X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 6B7DF40005 X-Rspam-User: X-HE-Tag: 1712868832-370764 X-HE-Meta: U2FsdGVkX1+DpBfWwwihketM6OurIKk8gzq10rLfGND7YZww0SgTilMzspf4+XUSX1xI53RzRMlWIlNTbdWqFWQ5Azqb+PpIWfq1GDqC1kpIDhq2pL57qNF0IWq1W9GQ6SUZ9LFznLY+PIq4Vj1KoWnHCG8XImE3C8pBJtJHSeA5EYazdldGwG+L7HPmzcvywLW+0w3JiR1WjAKO25ZK5PiX0/kBAqstEoSIYBugEJjJj9eBptGSH+V6LrbpEnWwq8fOcheoHT2ZYYxDYE+bg2kMOUurHLfVog1hkgc8oXBC2GoF910abMaYZ6sWvFBfddNDMlkEhRsq59xadz3+BdDzH+MoNd1DorrnzqPlPjnUyiDuvyizNCpcY4ONIoyzSCKL/gcd0vri/Q4SxFtD4LaUIbEq6K4ji2DZRca7PvDFcMw2LQU/Mq43fsZYQjBOdSlzF2nvN7Em02d6wSWvon/VrP3mxz5m8xlVDNLLaehSHS2AaD5gF70ybL+z4zBhHCX/XPgu7is5PeAYRzXsR9DZYrz8C/ML3yiOFg/BfVxyjHbQSdmBADa/ZaY9fejDENWR7caJM+sEDxERnNCet5Qc+YoDSWexsviS3EyVK8hYFeih0vNTrB+hsHZ88iYDfpwVk6uYO8R4g5JyvNWhSsfjQxbk2v8UDu9w4lf27ms9S/ydjpjh73JrhIgHLmUPA7+KsdP1kZN4vhwqZgAIeYI8tuUSXZwFI+Ou4QHl9lBWl/x5CfQ2ZV4y9ENFlT2xYTL+jigvEKWcHptb2SxWPa0HWBQTH4HKiev/XOORzO8ixDS5Ntml4UWyNBUzcT7dkRcCvms9JpBkC4sEZR2JhfMCLSJnc91tiJhFCPLCref8lqppaEYGGQ7A4W1vYM+i72RpxtoHi+1TyWkpX/Hf0oi5riR54dIDFoM+MolfvwH36qoS1jNbQ3ivQjCb3C8ihyGUoALkQgFkheNDMdG 4Jk5YKG8 rpwPSIyrzngZc06LUVkTbf1s5X5HL31nSgbXgs9vDMl+lyrHtOAErM4daGgxDiyUHsHbj8Jga4oT21xPXUlF/SZyY+5OdVrxP6VlU3Y2HNOGEDfKr51cV/iAhUT7N7hAtzlKCuSml1kNdq7O6YRwHoQzLj6ywdDtZRuTB7Ulx4gQa9LwYIK1bCCZLIuRc+E14kPgrfsJfvGgRoIUD4o8BrQK3aU3DyyWUVjjgbHnfyf2q/96AhEQMspaRmXYX19O0Moa1Ds6Culrt4ATbd5n4uugfH9zSYV+Q4w2VKdZ0W86hyz95ZTMbTOPdCpPDCw5gdtPLhsNI/bqLjV81X4Ts4kg3M9Zs8+GobK4ABf7rz87FlZU2MfwK0XhfCYwn7azWXIFkhN9Ro73N19N5GFEN5sxwuQhZrPTSW7+tvopyoxiP8K0W7aCpt38KT+ThLmXFzIyC6E7Tkp1VJm5MA55MkdTYLQz6pFmdER1s7HzWn2WV8Qc= 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: 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. Just a drive-by comment. Sam