From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-yx1-f68.google.com (mail-yx1-f68.google.com [74.125.224.68]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C6E512D640F for ; Wed, 3 Dec 2025 09:16:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.224.68 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764753369; cv=none; b=WtlxBa+PuNqy/j6UaBPPCrehO7QoDPt1QsZ4UCYRQ4w42aUzBAZfe96wvsHC51MZxtg0Y1Iusf3z3nKBIBhFkTwtmt3FVzyzgDXROedQWe2PN0ki2Solyjaqp3cuMPXghrkJcdkvbxLaQTEIE8tzwQdUY3BJl9o774abxZsBfU0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764753369; c=relaxed/simple; bh=PJbfPpXQ1Wl4+h8UE/xMewyCcGHvABOB4dS4pDUJ9yI=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=WQZOZRLXGx5wXbA38LPrO1DW0mE5UCSb/dGmw35km9i0eS/zHMKOFIkckV3fdQrvX6x1jIEeJbn42IcghqtJ2rcXlzYbXpOkqDdDsDTBA+/7JliFA2a2DqsG2cb1+O4n3mJaqDGkyJOIncfxXfThzLPOTit+ZanZrSVr2DtY5/g= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Ltbo4otk; arc=none smtp.client-ip=74.125.224.68 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Ltbo4otk" Received: by mail-yx1-f68.google.com with SMTP id 956f58d0204a3-6442e2dd8bbso1739105d50.0 for ; Wed, 03 Dec 2025 01:16:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764753363; x=1765358163; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=Zvn9HrRJdFSvUw/pGaMaIOGegy9462R/6im+1ui/l3U=; b=Ltbo4otkpZ6vrWK80nWypID3gJBW1UaBq7N/d3axa+G5fAIzWwGsROXgf+T6BsGmE9 YpAHb8IIdJwsUtSk4uJCMLL5WhFKZinwV2xNBLIRDDfBbeOBPWxODB586r32gPC9wYJD gL+qRzidaAm4Zz4wpVfjnMmC0jHyz4LKOd5VM3wFIq6ljki5jGZP88T1mdonIvU+j9GM pNgvfFGUsm8EJ0RzZVEsAuxD8iy/amNeyb3B+YfydkTS8qaHRgN9iYAfrWiXSQ8ckOe6 TclgjUaSbBrI+HayVX80bcwO210hGJKSNvz3+/br3IvkyuOA5XB5eH+hEZi/bAOQ+Bq9 g+7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764753363; x=1765358163; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Zvn9HrRJdFSvUw/pGaMaIOGegy9462R/6im+1ui/l3U=; b=wn/l9vp9BQgxT4emQiGG9c13kZEVglq6R2aaD+VwKHOUxBZI8PIkuMVX3ltkd7iAuq FlcrCzqWFprqpG46Zsz1wffZuP9IEeRmRGDfFU0UHpVXfv594I2y+ifGa3sAPEFkM23u epCIGBPLGcr64jfPy9oyj5B6IKWO1pFZd3fY//xMJxhJwE6qb7B7WXeOM53iTfZKtCT9 003YfFX5TCjviykj/l8QB9unxxStnCOdUSGoSd41zEnWvleA7K0O/e9JmZOJ/7DA60D1 pw5W3uUN4qLlwPNZNNSiss6/rQsY1jitU+5Ynm8deiX2edE2vW4+cQAUQEITAmGKN+9t SjXg== X-Forwarded-Encrypted: i=1; AJvYcCU0iJG3WwpslhdlR2b8hW/GPN9vtwKF6OrGUHXFpL82U09Sa2nnUCsEUZIcMgRWAdNcF5GpJqc66PEDWyQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyB0DvzyXPvW09Ofi2zZzMgq7uNPbUa/0wbqAmwIU+yj19A1JqK yEtjCvexWNawBol2HUGZn0B35vumalml59iMuImFYT+wUAyHDS+tBnxyzIBA4rDz2ShD3n6K/Gm grT/mVZssFEH8drLHVbrDDXjoHLEg5nI= X-Gm-Gg: ASbGncsK3LtmnUpYS4upgpB5TsWH0qli4OM45FPu+wGl7rWdWNpIY09WYlUOFZE18cu wAx7JeemeJNUxE78znlTvLvKOvCM146zZaCUQtjUN5Q8s76smA3zQfNySXjerHWCJomR7zySsNu N9CYxrB5mleTG8EicuECwL6I/N9wb7+m+MMPiDq3PFKcK5uvZ2IJQeqx23QpMp8CxBljnVX2ifx MjZJZzl4SwZ+C42hBgQgR2TPTHjdmeNC4bHDve/qzTVirVc6jQ+fYYEzaJKg3vAeF/2s80= X-Google-Smtp-Source: AGHT+IGzwDFZDWme46YAnVAYHhM1JFHKL7Q/q8FoGtyn85xl72liVPRXP4MJCYeiDce1hUNnHIbvdVJiL9cFbDX/sAY= X-Received: by 2002:a05:690e:120e:b0:63f:b545:9960 with SMTP id 956f58d0204a3-64436f6da37mr1340803d50.11.1764753363482; Wed, 03 Dec 2025 01:16:03 -0800 (PST) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20251203082402.78816-1-jolsa@kernel.org> <20251203082402.78816-2-jolsa@kernel.org> In-Reply-To: <20251203082402.78816-2-jolsa@kernel.org> From: Menglong Dong Date: Wed, 3 Dec 2025 17:15:52 +0800 X-Gm-Features: AWmQ_bmG0tIamKx5RfhXBBYAUrUfUZzFDuU-aYWqrSdiQGfV8mSCyiAygQcVpgo Message-ID: Subject: Re: [PATCHv4 bpf-next 1/9] ftrace,bpf: Remove FTRACE_OPS_FL_JMP ftrace_ops flag To: Jiri Olsa Cc: Steven Rostedt , Florent Revest , Mark Rutland , bpf@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Song Liu Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Dec 3, 2025 at 4:24=E2=80=AFPM Jiri Olsa wrote: > > At the moment the we allow the jmp attach only for ftrace_ops that > has FTRACE_OPS_FL_JMP set. This conflicts with following changes > where we use single ftrace_ops object for all direct call sites, > so all could be be attached via just call or jmp. > > We already limit the jmp attach support with config option and bit > (LSB) set on the trampoline address. It turns out that's actually > enough to limit the jmp attach for architecture and only for chosen > addresses (with LSB bit set). > > Each user of register_ftrace_direct or modify_ftrace_direct can set > the trampoline bit (LSB) to indicate it has to be attached by jmp. > > The bpf trampoline generation code uses trampoline flags to generate > jmp-attach specific code and ftrace inner code uses the trampoline > bit (LSB) to handle return from jmp attachment, so there's no harm > to remove the FTRACE_OPS_FL_JMP bit. > > The fexit/fmodret performance stays the same (did not drop), > current code: > > fentry : 77.904 =C2=B1 0.546M/s > fexit : 62.430 =C2=B1 0.554M/s > fmodret : 66.503 =C2=B1 0.902M/s > > with this change: > > fentry : 80.472 =C2=B1 0.061M/s > fexit : 63.995 =C2=B1 0.127M/s > fmodret : 67.362 =C2=B1 0.175M/s > > Fixes: 25e4e3565d45 ("ftrace: Introduce FTRACE_OPS_FL_JMP") > Signed-off-by: Jiri Olsa > --- > include/linux/ftrace.h | 1 - > kernel/bpf/trampoline.c | 32 ++++++++++++++------------------ > kernel/trace/ftrace.c | 14 -------------- > 3 files changed, 14 insertions(+), 33 deletions(-) > > diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h > index 015dd1049bea..505b7d3f5641 100644 > --- a/include/linux/ftrace.h > +++ b/include/linux/ftrace.h > @@ -359,7 +359,6 @@ enum { > FTRACE_OPS_FL_DIRECT =3D BIT(17), > FTRACE_OPS_FL_SUBOP =3D BIT(18), > FTRACE_OPS_FL_GRAPH =3D BIT(19), > - FTRACE_OPS_FL_JMP =3D BIT(20), Yeah, the FTRACE_OPS_FL_JMP is not necessary. I added it in case that we maybe want to implement such "jmp" for ftrace trampoline in the feature. But it's OK to remove it now. > }; > > #ifndef CONFIG_DYNAMIC_FTRACE_WITH_ARGS > diff --git a/kernel/bpf/trampoline.c b/kernel/bpf/trampoline.c > index 976d89011b15..b9a358d7a78f 100644 > --- a/kernel/bpf/trampoline.c > +++ b/kernel/bpf/trampoline.c > @@ -214,10 +214,15 @@ static int modify_fentry(struct bpf_trampoline *tr,= u32 orig_flags, > int ret; > > if (tr->func.ftrace_managed) { > + unsigned long addr =3D (unsigned long) new_addr; > + > + if (bpf_trampoline_use_jmp(tr->flags)) > + addr =3D ftrace_jmp_set(addr); nit: It seems that we can remove the variable "addr" can use the "new_addr" directly? > + > if (lock_direct_mutex) > - ret =3D modify_ftrace_direct(tr->fops, (long)new_= addr); > + ret =3D modify_ftrace_direct(tr->fops, addr); > else > - ret =3D modify_ftrace_direct_nolock(tr->fops, (lo= ng)new_addr); > + ret =3D modify_ftrace_direct_nolock(tr->fops, add= r); > } else { > ret =3D bpf_trampoline_update_fentry(tr, orig_flags, old_= addr, > new_addr); > @@ -240,10 +245,15 @@ static int register_fentry(struct bpf_trampoline *t= r, void *new_addr) > } > > if (tr->func.ftrace_managed) { > + unsigned long addr =3D (unsigned long) new_addr; > + > + if (bpf_trampoline_use_jmp(tr->flags)) > + addr =3D ftrace_jmp_set(addr); And here. Thanks! Menglong Dong > + [...] >