Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp2587851rwd; Fri, 2 Jun 2023 11:28:43 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6L5T29A7rCDMaWzOQdt3HkuOdPgaCoVZn8a9Jomw3IHTj91toC+vEg/ZX4mcGBFKchFegb X-Received: by 2002:aa7:8890:0:b0:63d:2f13:1f3 with SMTP id z16-20020aa78890000000b0063d2f1301f3mr11115545pfe.33.1685730523082; Fri, 02 Jun 2023 11:28:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685730523; cv=none; d=google.com; s=arc-20160816; b=0azWxMwDAr3r8+v7JKqU7p4OP5eHXbyf7qeiSaeul+ONoSmywoYpWg8xA19yU2RaQk uIsm/LhpyGDfHRZg7SRwz+18lzaSGAGw+m03OsIqlyU/2om0ex5+5CBcqCgF1UGGZoG3 12JFe04z0sAdwgNS8kT53OkEWWunclgSpPf00iL15UzXFRydWoCvAal5Uu8rhNFb4AnW /V3d8Qiu3bHL9ZaJecdvbGfpFz3nyV2HAlakCL353FAoLJuVlRSHIcH3lDPSj5E0p0kx By7XKsgIzzUvzsfMruTDPLJTgwHGMMwxojs/nwKzetAUC4sg8swczx1pgzsRiVU/N+pC Gahg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=X+6D25ac/ynfkYhL6CVIatM+QSgTz3ZdfLV95/xOw/s=; b=OEGZEfkdAIp0UaTFwkKCSVOteRiV0aMpO0mdxBGw3s0B+aBTT93pRek7Qtd7h+ysyk sxzuvViNw2O7CAu1IZ58LXwj67U20khYuPUfleG6PqoxBvOFuMnylguk5OUQEnnfd7HQ jrHeCxJTZPXfVpxxVqAlv7sw8OXJB/zkE3idfEia7fdlC+acTgeF+VY64vikxjucYzhl vQ6C7T3ffJb8CjtDXD7XF4j/1eNhX4vm3fkwBFOZqvj4YLobay3Cn8DW8Rmn1iJR3NiU L/g0x2raScA/18WNdLoPSUk+j9EaTJEKR7Wx5N4bV7Bdpp5zc/UVqUEi406c7XXYPXFD xtRg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=m8QqKBlw; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a25-20020a637059000000b00535f192eac7si1328979pgn.211.2023.06.02.11.28.30; Fri, 02 Jun 2023 11:28:43 -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; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=m8QqKBlw; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236250AbjFBSVS (ORCPT + 99 others); Fri, 2 Jun 2023 14:21:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40102 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235519AbjFBSVQ (ORCPT ); Fri, 2 Jun 2023 14:21:16 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 253991A1; Fri, 2 Jun 2023 11:21:15 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id B4DF36523F; Fri, 2 Jun 2023 18:21:14 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1C87DC433AA; Fri, 2 Jun 2023 18:21:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1685730074; bh=X+6D25ac/ynfkYhL6CVIatM+QSgTz3ZdfLV95/xOw/s=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=m8QqKBlwUZ1OdVsi3iL4i/wpx/dFY6BbtHjhKMAoPALO9d9S1Of5z7SZF4QL6sTbP 1AkumCJkUSaKm4k7dCVk+lOGEFZdfq22cqjqj27S/pPlmB3p+6xXv2CNvliSMKoASM /hdXoCMRwv6EJy8J6GYtUkCvLB9u0rcyusLTXlpDOf8Lr4f24TWYjjjFg1gay1e8Ak p/JJ9xBOtMt5dIZYwKQ9oFJD8MWj9f1lt6ZhCj0XTqBGpkRKgNx/tS3niGcx/Matut 0hwyzJfj74d+iBjmUiHb0LPXzSLbkWfgBPmkBtc2NCOoUpEnhn1N5112VQidBofQtB l46PC2/nl/Dww== Received: by mail-lj1-f182.google.com with SMTP id 38308e7fff4ca-2af189d323fso46352391fa.1; Fri, 02 Jun 2023 11:21:14 -0700 (PDT) X-Gm-Message-State: AC+VfDy6tUtSTkY4WimD0ve8ZiSIIh10ZMJfMY+q87EfuCPbr3gZqly6 Qk5lO3wACNYGAPPmYAAU39rdvk/Wpx+a3HieDNM= X-Received: by 2002:a2e:b55a:0:b0:2b0:59c3:29c9 with SMTP id a26-20020a2eb55a000000b002b059c329c9mr217540ljn.6.1685730071990; Fri, 02 Jun 2023 11:21:11 -0700 (PDT) MIME-Version: 1.0 References: <20230601101257.530867-1-rppt@kernel.org> In-Reply-To: From: Song Liu Date: Fri, 2 Jun 2023 11:20:58 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 00/13] mm: jit/text allocator To: Mark Rutland Cc: Kent Overstreet , 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 , 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, Puranjay Mohan Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-7.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,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 Fri, Jun 2, 2023 at 2:35=E2=80=AFAM Mark Rutland = wrote: > > 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 i= t can work > > > even with CONFIG_MODULES=3Dn, 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 t= hat can be > > > provided independently, even if those happen to use common infrastruc= ture. > > > > How much memory can kprobes conceivably use? I think we also want to tr= y > > 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+e= nd > 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 cau= ses > > > > 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 ca= ll > > > > 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 allocatio= n must > > > > fill jit_alloc_params structure and implement jit_alloc_arch_params= () that > > > > returns a pointer to that structure. If an architecture does not im= plement > > > > 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 usi= ng 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 ra= nge > 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. Th= at > might be it, tbh. IIUC, arm64 uses VMALLOC address space for BPF programs. The reason is each BPF program uses at least 64kB (one page) out of the 128MB address space. Puranjay Mohan (CC'ed) is working on enabling bpf_prog_pack for arm64. Once this work is done, multiple BPF programs will be able to share a page. Will this improvement remove the need to specify a different address range for BPF programs? Thanks, Song