Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp1962359rwd; Fri, 2 Jun 2023 02:47:28 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ56ayMoHJ/HnW04GC8CpFsfeWKy6gFisP0GAFQ2ktSbC4YDG/mNq65IyYUN5USEq0XAKAMo X-Received: by 2002:a05:6a20:8e25:b0:10d:b160:3d4f with SMTP id y37-20020a056a208e2500b0010db1603d4fmr15270878pzj.38.1685699248519; Fri, 02 Jun 2023 02:47:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685699248; cv=none; d=google.com; s=arc-20160816; b=RKfp0chJezLfb5x0T+EoyDf1UoTIMoD21mvXoL6lSAGIWdVQb+6UCl6OYQNHkbByko hKGvHa3sV0NGUlDm3EdOs6DuLVVNgFsj4CTj6TkpWPr3Y24JJgKqaKTQ4ZNp8F/vurXC tPX60BwD9C4SE4YdGYHjwiO5mEw3ilO+UWDQ+qXhLNjLk0H9Rs+FtpCtBWnRD0lD5o9R 3/NiodxTxDpeZk0lYmF6xRG9a9+NlAXB8A3tLBdxNL0fs7dGlCzEhfXSzY1wGBH1sWKD 8/5wiDCKgGVaqsIa92wuBR6CnmxpM4w4Ygfo09DLEvduyxqK9dfwFPOhdNmeCvc71JzM H4RQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date; bh=87mTw7tq+f5d+ncaNuVLx3G+dncvfJSWs2BZQEYNO+A=; b=duUFyXGsSXEYHKaW4wGyxs18ejNhOzattsCP4BC6gVb1wV+okOj35Tfvnz8X5ZhZoQ AuZpekUDoLWXsrQv9PxDAfix4mnt5FdwkZD/wr0OFGtjHpoHUujok3LHnoTnduuz08gv 0WqnlGVRzrSApgWOXRYX2Whh3vB/XaNxy8LYKOkIRH9SGBtr0ksKtjtLtEa6PwuNdDDi xSGMfNcGkUgHIV+iEIvh6bsmjxQ9LgG7X9p5BeBGPMpV1JHM6eu5oPprIc2WnQ3Y0i4U +PLxbTG74cScasjLjV9rRkSA9FKaJovxu0GSesPIjrtDLqnVvJTq1+WZx/56cjb91snr RPIQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id bm18-20020a656e92000000b005418b187c59si706057pgb.633.2023.06.02.02.47.16; Fri, 02 Jun 2023 02:47:28 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234595AbjFBJfj (ORCPT + 99 others); Fri, 2 Jun 2023 05:35:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50320 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234687AbjFBJff (ORCPT ); Fri, 2 Jun 2023 05:35:35 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id A00EF99; Fri, 2 Jun 2023 02:35:20 -0700 (PDT) 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 2ACE41063; Fri, 2 Jun 2023 02:36:05 -0700 (PDT) Received: from FVFF77S0Q05N (unknown [10.57.24.167]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id AF4863F7BD; Fri, 2 Jun 2023 02:35:14 -0700 (PDT) Date: Fri, 2 Jun 2023 10:35:09 +0100 From: Mark Rutland To: Kent Overstreet Cc: Mike Rapoport , linux-kernel@vger.kernel.org, Andrew Morton , Catalin Marinas , Christophe Leroy , "David S. Miller" , Dinh Nguyen , Heiko Carstens , Helge Deller , Huacai Chen , Luis Chamberlain , Michael Ellerman , "Naveen N. Rao" , Palmer Dabbelt , Russell King , Song Liu , Steven Rostedt , Thomas Bogendoerfer , Thomas Gleixner , Will Deacon , bpf@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 00/13] mm: jit/text allocator Message-ID: References: <20230601101257.530867-1-rppt@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jun 01, 2023 at 02:14:56PM -0400, Kent Overstreet wrote: > On Thu, Jun 01, 2023 at 05:12:03PM +0100, Mark Rutland wrote: > > For a while I have wanted to give kprobes its own allocator so that it can work > > even with CONFIG_MODULES=n, and so that it doesn't have to waste VA space in > > the modules area. > > > > Given that, I think these should have their own allocator functions that can be > > provided independently, even if those happen to use common infrastructure. > > How much memory can kprobes conceivably use? I think we also want to try > to push back on combinatorial new allocators, if we can. That depends on who's using it, and how (e.g. via BPF). To be clear, I'm not necessarily asking for entirely different allocators, but I do thinkg that we want wrappers that can at least pass distinct start+end parameters to a common allocator, and for arm64's modules code I'd expect that we'd keep the range falblack logic out of the common allcoator, and just call it twice. > > > Several architectures override module_alloc() because of various > > > constraints where the executable memory can be located and this causes > > > additional obstacles for improvements of code allocation. > > > > > > This set splits code allocation from modules by introducing > > > jit_text_alloc(), jit_data_alloc() and jit_free() APIs, replaces call > > > sites of module_alloc() and module_memfree() with the new APIs and > > > implements core text and related allocation in a central place. > > > > > > Instead of architecture specific overrides for module_alloc(), the > > > architectures that require non-default behaviour for text allocation must > > > fill jit_alloc_params structure and implement jit_alloc_arch_params() that > > > returns a pointer to that structure. If an architecture does not implement > > > jit_alloc_arch_params(), the defaults compatible with the current > > > modules::module_alloc() are used. > > > > As above, I suspect that each of the callsites should probably be using common > > infrastructure, but I don't think that a single jit_alloc_arch_params() makes > > sense, since the parameters for each case may need to be distinct. > > I don't see how that follows. The whole point of function parameters is > that they may be different :) What I mean is that jit_alloc_arch_params() tries to aggregate common parameters, but they aren't actually common (e.g. the actual start+end range for allocation). > Can you give more detail on what parameters you need? If the only extra > parameter is just "does this allocation need to live close to kernel > text", that's not that big of a deal. My thinking was that we at least need the start + end for each caller. That might be it, tbh. Thanks, Mark.