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 X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A83C6C433E0 for ; Tue, 14 Jul 2020 16:31:55 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7303622464 for ; Tue, 14 Jul 2020 16:31:55 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="S/oZGcFN" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7303622464 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Tq8VE1miSuAM9YOj3x1F6XX6yk2O1XU6dHXZQruTOuw=; b=S/oZGcFNnyTTvokPSqnXVUZ8N z03Zy0pBHDqgw2f7mwb6SNfpVztU+7yrURQAXxInOeyXjgNhM4u7j0MXrsHFkfsZ8PtRAw9Uxb4Yd +aieQ2e2a+1EvbpLT7A6E5dSagFrMLRKLjPRy0E0PY1VAttdjgZyT6HJATIRZQXAnReT/tGo2K6M4 V/EMicjtkUMiImWc3VjPqAm1BtHs+mBuVXJRKPE5Rz1YxfJkt0rA7+FJ1cQn++3eBgkx9DKhWoDMn rWR1u8YxtBaChYfhtfmsF8N2w0NuEdPb2OSixFyrHXdi0v4F5kgc/ZANFI/B6lc0FCX6cuTeaMVOb 9gcgE9Tww==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvNqK-00028o-RL; Tue, 14 Jul 2020 16:31:44 +0000 Received: from mga06.intel.com ([134.134.136.31]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvNqH-00027X-Mj; Tue, 14 Jul 2020 16:31:42 +0000 IronPort-SDR: +aarHTAxxik6k45UpMSOm7IkfdeLJGCx/+oOZg+70vXCGOi3fty4KVNo3X9hsJoOTGOEBTD044 d/yQ9Bupy8tg== X-IronPort-AV: E=McAfee;i="6000,8403,9681"; a="210493397" X-IronPort-AV: E=Sophos;i="5.75,352,1589266800"; d="scan'208";a="210493397" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Jul 2020 09:31:38 -0700 IronPort-SDR: fcIVyBiiy87ArSQBQ9bBCRdpH5T8cVmHqC7sDn4u8xmAwPyfL/b179YnP+BhGbJyH8rNN59HYL iqlKNF6rkwcQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,352,1589266800"; d="scan'208";a="316433992" Received: from pipper-mobl1.ger.corp.intel.com (HELO localhost) ([10.249.46.185]) by orsmga008.jf.intel.com with ESMTP; 14 Jul 2020 09:31:04 -0700 Date: Tue, 14 Jul 2020 19:31:03 +0300 From: Jarkko Sakkinen To: Peter Zijlstra Subject: Re: [PATCH v2 1/3] module: Rename module_alloc() to text_alloc() and move to kernel proper Message-ID: <20200714163103.GA1472166@linux.intel.com> References: <20200714094625.1443261-1-jarkko.sakkinen@linux.intel.com> <20200714094625.1443261-2-jarkko.sakkinen@linux.intel.com> <20200714102826.GB4756@willie-the-truck> <20200714112927.GV10769@hirez.programming.kicks-ass.net> <20200714130109.GX10769@hirez.programming.kicks-ass.net> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20200714130109.GX10769@hirez.programming.kicks-ass.net> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200714_123142_070087_FC3A01CE X-CRM114-Status: GOOD ( 26.25 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Catalin Marinas , Kefeng Wang , Paul Mackerras , Zong Li , Andi Kleen , Paul Burton , Michael Ellerman , Vincent Whitchurch , Benjamin Herrenschmidt , Petr Mladek , Brian Gerst , Andy Lutomirski , Thomas Gleixner , Jiri Kosina , Anup Patel , Linux Kernel Mailing List , Philipp Rudo , Torsten Duwe , Masami Hiramatsu , Andrew Morton , Mark Rutland , "James E.J. Bottomley" , Vincent Chen , Omar Sandoval , "open list:S390" , Joe Lawrence , Helge Deller , John Fastabend , Anil S Keshavamurthy , Yonghong Song , Iurii Zaikin , Andrii Nakryiko , Thomas Huth , Vasily Gorbik , "moderated list:ARM PORT" , Daniel Axtens , Damien Le Moal , Martin KaFai Lau , Song Liu , Paul Walmsley , Heiko Carstens , Alexei Starovoitov , Atish Patra , Will Deacon , Daniel Borkmann , Masahiro Yamada , Nayna Jain , Ley Foon Tan , Christian Borntraeger , Sami Tolvanen , "Naveen N. Rao" , Mao Han , Marco Elver , Steven Rostedt , Babu Moger , Borislav Petkov , Greentime Hu , Ben Dooks , Guan Xuetao , Thomas Bogendoerfer , "open list:PARISC ARCHITECTURE" , Jessica Yu , "open list:BPF JIT for MIPS \(32-BIT AND 64-BIT\)" , "David S. Miller" , Thiago Jung Bauermann , David Howells , "open list:SPARC + UltraSPARC \(sparc/sparc64\)" , Sandipan Das , "H. Peter Anvin" , Amit Daniel Kachhap , Tiezhu Yang , Miroslav Benes , Jiri Olsa , Ard Biesheuvel , Vincenzo Frascino , Anders Roxell , Sven Schnelle , "maintainer:X86 ARCHITECTURE \(32-BIT AND 64-BIT\)" , Russell King , "open list:RISC-V ARCHITECTURE" , Mike Rapoport , Ingo Molnar , Albert Ou , "Paul E. McKenney" , Josh Poimboeuf , KP Singh , Dmitry Vyukov , Nick Hu , "open list:BPF JIT for MIPS \(32-BIT AND 64-BIT\)" , "open list:MIPS" , Palmer Dabbelt , "open list:LINUX FOR POWERPC \(32-BIT AND 64-BIT\)" Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org On Tue, Jul 14, 2020 at 03:01:09PM +0200, Peter Zijlstra wrote: > On Tue, Jul 14, 2020 at 03:19:24PM +0300, Ard Biesheuvel wrote: > > So perhaps the answer is to have text_alloc() not with a 'where' > > argument but with a 'why' argument. Or more simply, just have separate > > alloc/free APIs for each case, with generic versions that can be > > overridden by the architecture. > > Well, there only seem to be 2 cases here, either the pointer needs to > fit in some immediate displacement, or not. > > On x86 we seem have the advantage of a fairly large immediate > displacement as compared to many other architectures (due to our > variable sized instructions). And thus have been fairly liberal with our > usage of it (also our indirect jmps/calls suck, double so with > RETCH-POLINE). > > Still, the indirect jump, as mentioned by Russel should work for > arbitrarily placed code for us too. > > > So I'm thinking that something like: > > enum ptr_type { > immediate_displacement, > absolute, > }; > > void *text_alloc(unsigned long size, enum ptr_type type) > { > unsigned long vstart = VMALLOC_START; > unsigned long vend = VMALLOC_END; > > if (type == immediate_displacement) { > vstart = MODULES_VADDR; > vend = MODULES_END; > } > > return __vmalloc_node_range(size, TEXT_ALIGN, vstart, vend, > GFP_KERNEL, PAGE_KERNEL_EXEC, 0, > NUMA_NO_NODE, _RET_IP_); > } > > void text_free(void *ptr) > { > vfree(ptr); > } > > Should work for all cases. Yes, we might then want something like a per > arch: > > {BPF,FTRACE,KPROBE}_TEXT_TYPE > > to help with text_alloc() usage in generic code, but I think > fundamentally, there's only these two options. There is one arch (nios2), which uses a regular kzalloc(). This means that both text_alloc() and text_memfree() need to be weaks symbols and nios2 needs to have overriding text.c to do its thing. /Jarkko _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv