linux-riscv.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Ard Biesheuvel <ardb@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>,
	Kefeng Wang <wangkefeng.wang@huawei.com>,
	Paul Mackerras <paulus@samba.org>, Zong Li <zong.li@sifive.com>,
	Andi Kleen <ak@linux.intel.com>,
	Paul Burton <paulburton@kernel.org>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Vincent Whitchurch <vincent.whitchurch@axis.com>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Petr Mladek <pmladek@suse.com>, Brian Gerst <brgerst@gmail.com>,
	Andy Lutomirski <luto@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Jiri Kosina <jkosina@suse.cz>, Anup Patel <anup.patel@wdc.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Philipp Rudo <prudo@linux.ibm.com>, Torsten Duwe <duwe@lst.de>,
	Masami Hiramatsu <mhiramat@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Mark Rutland <mark.rutland@arm.com>,
	"James E.J. Bottomley" <James.Bottomley@hansenpartnership.com>,
	Vincent Chen <deanbo422@gmail.com>,
	Omar Sandoval <osandov@fb.com>,
	"open list:S390" <linux-s390@vger.kernel.org>,
	Joe Lawrence <joe.lawrence@redhat.com>,
	Helge Deller <deller@gmx.de>,
	John Fastabend <john.fastabend@gmail.com>,
	Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>,
	Yonghong Song <yhs@fb.com>, Iurii Zaikin <yzaikin@google.com>,
	Andrii Nakryiko <andriin@fb.com>, Thomas Huth <thuth@redhat.com>,
	Vasily Gorbik <gor@linux.ibm.com>,
	"moderated list:ARM PORT" <linux-arm-kernel@lists.infradead.org>,
	Daniel Axtens <dja@axtens.net>,
	Damien Le Moal <damien.lemoal@wdc.com>,
	Martin KaFai Lau <kafai@fb.com>, Song Liu <songliubraving@fb.com>,
	Paul Walmsley <paul.walmsley@sifive.com>,
	Heiko Carstens <heiko.carstens@de.ibm.com>,
	Alexei Starovoitov <ast@kernel.org>,
	Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>,
	Atish Patra <atish.patra@wdc.com>, Will Deacon <will@kernel.org>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Masahiro Yamada <masahiroy@kernel.org>,
	Nayna Jain <nayna@linux.ibm.com>,
	Ley Foon Tan <ley.foon.tan@intel.com>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	Sami Tolvanen <samitolvanen@google.com>,
	"Naveen N. Rao" <naveen.n.rao@linux.ibm.com>,
	Mao Han <han_mao@c-sky.com>, Marco Elver <elver@google.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Babu Moger <Babu.Moger@amd.com>, Borislav Petkov <bp@alien8.de>,
	Greentime Hu <green.hu@gmail.com>,
	Ben Dooks <ben-linux@fluff.org>, Guan Xuetao <gxt@pku.edu.cn>,
	Thomas Bogendoerfer <tsbogend@alpha.franken.de>,
	"open list:PARISC ARCHITECTURE" <linux-parisc@vger.kernel.org>,
	Jessica Yu <jeyu@kernel.org>,
	"open list:BPF JIT for MIPS \(32-BIT AND 64-BIT\)"
	<bpf@vger.kernel.org>, "David S. Miller" <davem@davemloft.net>,
	Thiago Jung Bauermann <bauerman@linux.ibm.com>,
	David Howells <dhowells@redhat.com>,
	"open list:SPARC + UltraSPARC \(sparc/sparc64\)"
	<sparclinux@vger.kernel.org>,
	Sandipan Das <sandipan@linux.ibm.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Amit Daniel Kachhap <amit.kachhap@arm.com>,
	Tiezhu Yang <yangtiezhu@loongson.cn>,
	Miroslav Benes <mbenes@suse.cz>, Jiri Olsa <jolsa@redhat.com>,
	"open list:RISC-V ARCHITECTURE" <linux-riscv@lists.infradead.org>,
	Vincenzo Frascino <vincenzo.frascino@arm.com>,
	Anders Roxell <anders.roxell@linaro.org>,
	Sven Schnelle <svens@stackframe.org>,
	"maintainer:X86 ARCHITECTURE \(32-BIT AND 64-BIT\)"
	<x86@kernel.org>, Russell King <linux@armlinux.org.uk>,
	Mike Rapoport <rppt@linux.ibm.com>,
	Ingo Molnar <mingo@redhat.com>, Albert Ou <aou@eecs.berkeley.edu>,
	"Paul E. McKenney" <paulmck@kernel.org>,
	Josh Poimboeuf <jpoimboe@redhat.com>,
	KP Singh <kpsingh@chromium.org>,
	Dmitry Vyukov <dvyukov@google.com>,
	Nick Hu <nickhu@andestech.com>,
	"open list:BPF JIT for MIPS \(32-BIT AND 64-BIT\)"
	<netdev@vger.kernel.org>,
	"open list:MIPS" <linux-mips@vger.kernel.org>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	"open list:LINUX FOR POWERPC \(32-BIT AND 64-BIT\)"
	<linuxppc-dev@lists.ozlabs.org>
Subject: Re: [PATCH v2 1/3] module: Rename module_alloc() to text_alloc() and move to kernel proper
Date: Tue, 14 Jul 2020 15:01:09 +0200	[thread overview]
Message-ID: <20200714130109.GX10769@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <CAMj1kXGG4vxWrp1de1FxdU=8F4Jof00=T1x-7e+BW7_HP-oZMQ@mail.gmail.com>

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.

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

  reply	other threads:[~2020-07-14 13:01 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-14  9:45 [PATCH v2 0/3] kprobes: Remove MODULE dependency Jarkko Sakkinen
2020-07-14  9:45 ` [PATCH v2 1/3] module: Rename module_alloc() to text_alloc() and move to kernel proper Jarkko Sakkinen
2020-07-14  9:50   ` Russell King - ARM Linux admin
2020-07-14 10:28   ` Will Deacon
2020-07-14 11:29     ` Peter Zijlstra
2020-07-14 12:19       ` Ard Biesheuvel
2020-07-14 13:01         ` Peter Zijlstra [this message]
2020-07-14 13:33           ` Mark Rutland
2020-07-14 13:47             ` Ard Biesheuvel
2020-07-14 14:03             ` Steven Rostedt
2020-07-15  5:03               ` Masami Hiramatsu
2020-07-14 16:31           ` Jarkko Sakkinen
2020-07-14 16:46             ` Peter Zijlstra
2020-07-15  8:15             ` David Laight
2020-07-14 16:42           ` Russell King - ARM Linux admin
2020-07-14 12:25       ` Jarkko Sakkinen
2020-07-14 13:56   ` Jessica Yu
2020-07-14 15:44     ` Steven Rostedt
2020-07-14 16:37     ` Jarkko Sakkinen
2020-07-16 16:49   ` Christophe Leroy
2020-07-23  1:51     ` Jarkko Sakkinen
2020-07-23 12:42       ` Ard Biesheuvel
2020-07-24  7:36         ` Jarkko Sakkinen
2020-07-24  8:05           ` Jessica Yu
2020-07-24 15:46             ` Jarkko Sakkinen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200714130109.GX10769@hirez.programming.kicks-ass.net \
    --to=peterz@infradead.org \
    --cc=Babu.Moger@amd.com \
    --cc=James.Bottomley@hansenpartnership.com \
    --cc=ak@linux.intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=amit.kachhap@arm.com \
    --cc=anders.roxell@linaro.org \
    --cc=andriin@fb.com \
    --cc=anil.s.keshavamurthy@intel.com \
    --cc=anup.patel@wdc.com \
    --cc=aou@eecs.berkeley.edu \
    --cc=ardb@kernel.org \
    --cc=ast@kernel.org \
    --cc=atish.patra@wdc.com \
    --cc=bauerman@linux.ibm.com \
    --cc=ben-linux@fluff.org \
    --cc=benh@kernel.crashing.org \
    --cc=borntraeger@de.ibm.com \
    --cc=bp@alien8.de \
    --cc=bpf@vger.kernel.org \
    --cc=brgerst@gmail.com \
    --cc=catalin.marinas@arm.com \
    --cc=damien.lemoal@wdc.com \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=deanbo422@gmail.com \
    --cc=deller@gmx.de \
    --cc=dhowells@redhat.com \
    --cc=dja@axtens.net \
    --cc=duwe@lst.de \
    --cc=dvyukov@google.com \
    --cc=elver@google.com \
    --cc=gor@linux.ibm.com \
    --cc=green.hu@gmail.com \
    --cc=gxt@pku.edu.cn \
    --cc=han_mao@c-sky.com \
    --cc=heiko.carstens@de.ibm.com \
    --cc=hpa@zytor.com \
    --cc=jarkko.sakkinen@linux.intel.com \
    --cc=jeyu@kernel.org \
    --cc=jkosina@suse.cz \
    --cc=joe.lawrence@redhat.com \
    --cc=john.fastabend@gmail.com \
    --cc=jolsa@redhat.com \
    --cc=jpoimboe@redhat.com \
    --cc=kafai@fb.com \
    --cc=kpsingh@chromium.org \
    --cc=ley.foon.tan@intel.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-parisc@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=luto@kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=masahiroy@kernel.org \
    --cc=mbenes@suse.cz \
    --cc=mhiramat@kernel.org \
    --cc=mingo@redhat.com \
    --cc=mpe@ellerman.id.au \
    --cc=naveen.n.rao@linux.ibm.com \
    --cc=nayna@linux.ibm.com \
    --cc=netdev@vger.kernel.org \
    --cc=nickhu@andestech.com \
    --cc=osandov@fb.com \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=paulburton@kernel.org \
    --cc=paulmck@kernel.org \
    --cc=paulus@samba.org \
    --cc=pmladek@suse.com \
    --cc=prudo@linux.ibm.com \
    --cc=rostedt@goodmis.org \
    --cc=rppt@linux.ibm.com \
    --cc=samitolvanen@google.com \
    --cc=sandipan@linux.ibm.com \
    --cc=songliubraving@fb.com \
    --cc=sparclinux@vger.kernel.org \
    --cc=svens@stackframe.org \
    --cc=tglx@linutronix.de \
    --cc=thuth@redhat.com \
    --cc=tsbogend@alpha.franken.de \
    --cc=vincent.whitchurch@axis.com \
    --cc=vincenzo.frascino@arm.com \
    --cc=wangkefeng.wang@huawei.com \
    --cc=will@kernel.org \
    --cc=x86@kernel.org \
    --cc=yangtiezhu@loongson.cn \
    --cc=yhs@fb.com \
    --cc=yzaikin@google.com \
    --cc=zong.li@sifive.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).