From nobody Mon Feb 9 14:15:10 2026 Received: from mail-pl1-f194.google.com (mail-pl1-f194.google.com [209.85.214.194]) (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 3C7A533F399 for ; Fri, 9 Jan 2026 08:26:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.194 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767947218; cv=none; b=YJR9p93yDBhkKVAiPZmRgv9b/PGdnAhtqx7GPbuNwDA1eXYLw41X/sSPP+8ioh72BoYupiSHic/of1dJ8UcHE0WFUgaYlet4BBoI1G7/kKGqJr/5t6ohchLTdSEwf37KrCaKWr4+L3AEvDERMVmaPDNcqhozktiCUpcCpCUpqpQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767947218; c=relaxed/simple; bh=KRgennOchm4SecL+a0qWWX+iu4AtLOUYwMuL9asr6dA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aLoWEXtOGvIg73miyXaShrbuYNiARilmHYI+dxA7xhTJGWkGCI54Nm7wZLdCHIzRlzIoBK4Ry8bDpYNsVQoTFDYd23FeLccw0QERG62xfiQbZfeSbrqWZyZF5a86ceJL2DucRmDhrX3Z6z9tjy7mJdwHW3BBmGNOW0f2U7F6m/8= 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=PKB6rXX9; arc=none smtp.client-ip=209.85.214.194 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="PKB6rXX9" Received: by mail-pl1-f194.google.com with SMTP id d9443c01a7336-2a0c09bb78cso21869695ad.0 for ; Fri, 09 Jan 2026 00:26:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767947212; x=1768552012; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=18MAnJO+sPEnlXXhWmkeZwsmbj02KmkQZndeRSrm91c=; b=PKB6rXX9kWPPSO0stUv3IdOetZz+q4+sOxD5CsBH9GiM/WZJRAdVZDjU5vKPtiWoTI 8qO+qTkMg+oApGP3EdI/W6Ky9JvoTaI83oBAHkyE0tQzr/gDMdEnkqFNTJ/mL62xTnls wuORJQ6rDjUKxquAtLAF9OeD7VFYLApiKgHqj+dce/qnqPO0FEoTqIGCgRHj4Dq2Pid4 4Ly8KAKxsyHl04esf0Vrk4vfuu2fLdDAZ+T1buTGOHqVqDz1XNFYMxaEZEOpnR8pkVhn ZydWlJugeC9fuukKWMt2efpNWv/jCskk9rh7wcLrCpWHl37EB31TeW3+xcGdHrxcPgkq ILDA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767947212; x=1768552012; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=18MAnJO+sPEnlXXhWmkeZwsmbj02KmkQZndeRSrm91c=; b=UWCLhostDPaLMivNeNSbIBQNn36ITgEaTbbLVvs9aawW/vNn54MEFFdnR2zYkFTA34 xBdp0IH9PIq3eF5EhDgeiWZz9i4spIXDqlxPl7iepieOj5rtgQ+1s5+6Soxe4OSyrvHB lgZ27Wqb9PcwT2KXhELC1petecilaSxUQXYG/jiRjhSdq3Q20DToRrQPlWAiCaPnNuAV Ki3zWGJ12VAgGB4m8Hvjqt+6opomniNNjyGu/KQH7co4aGgYbqnrLbaA874+5xqYf2r8 qL4a3J7xwJ7T0rPoQAOavXCltnj+F2djpwsUH2JvkddOVD6kJiSpiiBd1caLHBF2xDMz 60vQ== X-Forwarded-Encrypted: i=1; AJvYcCWtOzOaYaQyDcRDRhb7WdRtbQ+58QqfOkAG7LS3fXjLbRMNnC30lfKRuEsbfPCSJCcTUe4exse1VNVeuNI=@vger.kernel.org X-Gm-Message-State: AOJu0YzaOFZ+4vdDp8OPS36grm2wvv9DR1+aHzbgsMbEOCV+3V8nRe0o yJTARVovNRUOpvh1UVUXGrz7xvi2Tysfx2Rezl8RACJi9ad75ZbgJams X-Gm-Gg: AY/fxX7WA23oLOrSEEajYRO04P52Ppbi6+GZikIDj0lViG+VOWarjHKvVXhAquSJk/e +LsxaM5TIJCtaaKS+/cX2CQk7lEHplQwrfeaVsrrenl+EzyN3GyK7dlXLb7JeyvtUPZHZr4qae6 QxBymicYPv9LEv1QC8Mu08IkAgT7h3D5F8gELZkwl5Cw0LJPa0dVyCIG/GzyojxUsWloc+qEbfq U2v1AF6khanC5/lDLKbcz6kOP7XOFRnY/teOt5DGI+kTMyKJQlawvkYdS/o8i1a+DM2IY0gbAjQ gMR0GtCOEAqUArEgjlRNNPslRzTDIpmsX7HfVZtyftxC68wV5cafDojMDZktLywwDrx3JYMgYD5 IQwIeD+LOCRJQTnLrt/CpkaxwdQdb8120kVPLYHMycJ2k12vjWOBUzJIX+TJLA5EhGdMrgbVssC 4H/p4AhGM= X-Google-Smtp-Source: AGHT+IGf0QEF/d7jltyx6UG06B7MN/WN+LdN2dlUAM1K2IAl+ueP/PI0ghV05FaX8xFWfu2q1TFeJg== X-Received: by 2002:a17:903:3508:b0:2a0:a33d:1385 with SMTP id d9443c01a7336-2a3e39d7c25mr126466485ad.17.1767947212170; Fri, 09 Jan 2026 00:26:52 -0800 (PST) Received: from 7940hx ([160.187.0.149]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a3e3cc7912sm100104695ad.67.2026.01.09.00.26.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jan 2026 00:26:51 -0800 (PST) From: Menglong Dong X-Google-Original-From: Menglong Dong To: ast@kernel.org, eddyz87@gmail.com Cc: daniel@iogearbox.net, john.fastabend@gmail.com, andrii@kernel.org, martin.lau@linux.dev, song@kernel.org, yonghong.song@linux.dev, kpsingh@kernel.org, sdf@fomichev.me, haoluo@google.com, jolsa@kernel.org, bpf@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH bpf-next v3 1/3] bpf, x86: inline bpf_get_current_task() for x86_64 Date: Fri, 9 Jan 2026 16:26:29 +0800 Message-ID: <20260109082631.246647-2-dongml2@chinatelecom.cn> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260109082631.246647-1-dongml2@chinatelecom.cn> References: <20260109082631.246647-1-dongml2@chinatelecom.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Inline bpf_get_current_task() and bpf_get_current_task_btf() for x86_64 to obtain better performance. In !CONFIG_SMP case, the percpu variable is just a normal variable, and we can read the current_task directly. Signed-off-by: Menglong Dong --- v3: - implement it in the verifier with BPF_MOV64_PERCPU_REG() instead of in x86_64 JIT. --- kernel/bpf/verifier.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 3d44c5d06623..520c413839ee 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -17688,6 +17688,8 @@ static bool verifier_inlines_helper_call(struct bpf= _verifier_env *env, s32 imm) switch (imm) { #ifdef CONFIG_X86_64 case BPF_FUNC_get_smp_processor_id: + case BPF_FUNC_get_current_task_btf: + case BPF_FUNC_get_current_task: return env->prog->jit_requested && bpf_jit_supports_percpu_insn(); #endif default: @@ -23273,6 +23275,24 @@ static int do_misc_fixups(struct bpf_verifier_env = *env) insn =3D new_prog->insnsi + i + delta; goto next_insn; } + + /* Implement bpf_get_current_task() and bpf_get_current_task_btf() inlin= e. */ + if ((insn->imm =3D=3D BPF_FUNC_get_current_task || insn->imm =3D=3D BPF_= FUNC_get_current_task_btf) && + verifier_inlines_helper_call(env, insn->imm)) { + insn_buf[0] =3D BPF_MOV64_IMM(BPF_REG_0, (u32)(unsigned long)¤t_t= ask); + insn_buf[1] =3D BPF_MOV64_PERCPU_REG(BPF_REG_0, BPF_REG_0); + insn_buf[2] =3D BPF_LDX_MEM(BPF_DW, BPF_REG_0, BPF_REG_0, 0); + cnt =3D 3; + + new_prog =3D bpf_patch_insn_data(env, i + delta, insn_buf, cnt); + if (!new_prog) + return -ENOMEM; + + delta +=3D cnt - 1; + env->prog =3D prog =3D new_prog; + insn =3D new_prog->insnsi + i + delta; + goto next_insn; + } #endif /* Implement bpf_get_func_arg inline. */ if (prog_type =3D=3D BPF_PROG_TYPE_TRACING && --=20 2.52.0