From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A3391C5321D for ; Mon, 26 Aug 2024 16:19:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 01A786B0083; Mon, 26 Aug 2024 12:19:23 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F0CA16B0085; Mon, 26 Aug 2024 12:19:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DD4BB6B0088; Mon, 26 Aug 2024 12:19:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id C120F6B0083 for ; Mon, 26 Aug 2024 12:19:22 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 461801A1216 for ; Mon, 26 Aug 2024 16:19:22 +0000 (UTC) X-FDA: 82494906564.04.FEE77E0 Received: from mail-pg1-f176.google.com (mail-pg1-f176.google.com [209.85.215.176]) by imf06.hostedemail.com (Postfix) with ESMTP id 5B6CF180009 for ; Mon, 26 Aug 2024 16:19:20 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=d9Ys1WsS; spf=pass (imf06.hostedemail.com: domain of andrii.nakryiko@gmail.com designates 209.85.215.176 as permitted sender) smtp.mailfrom=andrii.nakryiko@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724689075; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=2TNxklj2DP+/gfuMrzYVi36ytGXhB5WDn+kWAt/Ahpc=; b=tHOEhKV59vIj0KH4r5b09kI477v0f+gZ428Qk4Pa/71N/ekYAfiS/np8Ti663dI0jHxaOz GAxBpUDolSkjF4DI+u1V0oJuwUNg6kzRLaavizlh8n+ha8SksIiGXgp2yG4+ByQqiOnN0Y iymm5LQ3ienodcsKeRTXeeduKto2LD0= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724689075; a=rsa-sha256; cv=none; b=lAFYYsP2OrFcIQs9Xvs+jno2GsZAesDJVZA+OaIgddfCFAj5UG6AyDZXwpkXVE1L3KJACQ KnHmm3nqSRf45z82HjvQbocWZQMiAyMBqAVBtZ2P3fRNC9mL1kyaGyEB4OsFHD76V4L/Hg owr04FwG19ToYfVyBuLuSTrBKOxfto8= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=d9Ys1WsS; spf=pass (imf06.hostedemail.com: domain of andrii.nakryiko@gmail.com designates 209.85.215.176 as permitted sender) smtp.mailfrom=andrii.nakryiko@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pg1-f176.google.com with SMTP id 41be03b00d2f7-7d1fa104851so927436a12.3 for ; Mon, 26 Aug 2024 09:19:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724689159; x=1725293959; darn=kvack.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=2TNxklj2DP+/gfuMrzYVi36ytGXhB5WDn+kWAt/Ahpc=; b=d9Ys1WsSbsQ1jAcBL1nQAVoy2LEdf1cUgqXUMKpAToN+OE348buCTdEE8iQASqd6TC JDJF8zaSvvAGWV6orBsoJlUgHVWYV1phzW7JlQNsc8Wzb4ldJlvjqljpR40s2x5zJIrx Jy9CISCou/R+rspMEnpJEPRSuPkm+kR1XLo9Z6vDFIDUZv2H+QaoWOujiKQCHGhu9R30 iBUUbKUb9v/3eVURDCVENrmWeZMa3jMeBkqiyF51exFvpBNmeUxHg0NYVVSUt/fPkglV 68biVteU7UFdzbrvlJXE++6Mfwdrpp89YIwWHleued2ND2gEEun3fA7T+yGeQXNkaG3v snPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724689159; x=1725293959; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2TNxklj2DP+/gfuMrzYVi36ytGXhB5WDn+kWAt/Ahpc=; b=pipSxrnoVGd/xGJTmmKs2+dO+RCFWDDarQSS4Afwoevcy/0VaHlHnrhzl98VYyYXBB V2QxNhkCpEvHkMhycEaKuWb4bjC4vdcYU2/TSLTbZUO0a1YKf3f2mXrcPLPL8BLg0Qke V44uZdkUZx+Uw++77oiElVr+vVC9quJF781hhDjau1vdLZH+SeH9P9Mp5PfU0nNJiGpp ZdV0MzG3omffG9idupSQMh0UYeDJFoZ8AFvcmwec9E5HfIgBivQUKP1VRhS8VlXEyFc3 /4sK9TjBXV2QNJdbhhBLF6lt2LtkufZMEVT2+qgcu33h4e8EP0e9Q1Jjfec2w8r+akXF aGag== X-Forwarded-Encrypted: i=1; AJvYcCU6APe4VwTPkZhmYhpw52LlVWHW4c72Rc5/kdhmuVyVcUa3TKfmCyVjp8OxhUFzKUQX3bTeINhsFQ==@kvack.org X-Gm-Message-State: AOJu0YzPP+7HF4alsBLxaM2FkEYFA5l/BIJjd6wEKT4KFjMPg2w6vSlT sZ/En1J4N6/93epsfH5tx1ic/6+Hsxjfe7gjsox1llJouUYZ8GY8MmzHG2soQ4j6OgRDwi4dD0j vciuXa4y6lcafLzmQj6mBEiCkstk= X-Google-Smtp-Source: AGHT+IF9cs5m/kA6mXNVEWrGv85VEaW26troShS04+qtdhQGucmzQKnmayLz60i/IMyXgyX1YJV77MdA8x9DInrQuTM= X-Received: by 2002:a17:90a:ae11:b0:2cb:4bed:ed35 with SMTP id 98e67ed59e1d1-2d8259f3fdbmr71826a91.41.1724689158928; Mon, 26 Aug 2024 09:19:18 -0700 (PDT) MIME-Version: 1.0 References: <20240814185417.1171430-1-andrii@kernel.org> <20240814185417.1171430-10-andrii@kernel.org> <8fc31d49d4666599cc2ac6815ff3e0b09adc8a94.camel@gmail.com> In-Reply-To: <8fc31d49d4666599cc2ac6815ff3e0b09adc8a94.camel@gmail.com> From: Andrii Nakryiko Date: Mon, 26 Aug 2024 09:19:06 -0700 Message-ID: Subject: Re: [PATCH v6 bpf-next 09/10] bpf: wire up sleepable bpf_get_stack() and bpf_get_task_stack() helpers To: Eduard Zingerman Cc: Andrii Nakryiko , bpf@vger.kernel.org, linux-mm@kvack.org, akpm@linux-foundation.org, adobriyan@gmail.com, shakeel.butt@linux.dev, hannes@cmpxchg.org, ak@linux.intel.com, osandov@osandov.com, song@kernel.org, jannh@google.com, linux-fsdevel@vger.kernel.org, willy@infradead.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 5B6CF180009 X-Stat-Signature: dbftfc7izuh661qxrnwyqh7cdo5dd8np X-Rspamd-Server: rspam09 X-Rspam-User: X-HE-Tag: 1724689160-976416 X-HE-Meta: U2FsdGVkX1+GUuYF0Zbt4J7MQffBpUWOC9MFBj9lYg+WN7epu2JRJbvCbGvKIgPQKyWaGMxVVY6tMuGX1eViU8Fska7z/0G/pcTGE9BPegRUWLFJeIRmZQu3IC1EBQHcpNaOjr5vB0piROMZDV3MEBJINx8eNzuzIDZAsJm5cU2BTlg+VE+AWwnuHJJWmr9qE3tihgVK/kPB22mxxxVN2MdaItYQsXdA2lEf/RQ15TZ3joVJkyWmH5zlHJ3nQOgupAH7p1qAwL3ARhQ9LYlRJI6LCoo+fr2hAhe5xDpBtw7QcOdl6AydH4imHlF3Hh/9XqNMtacrz3vBeXQn6bH5ATWhxNV4tKUPOfdTWaTVAxVGYUCfoy1HKa5tfLOFvbl6GQkl5N+MQ4iUZb+b9XSD7TMJJOiMt5a3EYp1MMWEsYYL0/1NEr2ed4ZtdovYZ7niLBx7FUYtNSxbdtSxfFrK1k7+20yzkSoJw+jQo7RYpWZbNUnHWOi6i2u3bv4N95LteWPoZxGfTIfVSSfyzo49lf82k5Ym2ui77/MHhRvA2NZyda/pVKq8wm672SdzVIAMM7gmFMPvEDBJ2jOBctyFEAdrI6TBEd2wdYnpsyqoMrvz7anBn+gWN+llyGsI05aJ5xxrlprX/pOJ4UVlIjw2sXKk/DlBT016PyYfQJrEMCzjbFUfx4TM0tv75u3UuxldR/qHaFGu5wNM016gkDBlcOvxwuJequX8s+F78Cvx/kk/Mf+5SuvGW5LipczCZvmlAJme8H903jfQwhsO8ja9q2ot+p1yaCUsHKTYN++wmEUUYzJSRAxsLzDKvYkx6YgWzZ/GEF7vXGchI6YLvKIJca8pxvOTJlSvFVrTcXc/fmIqqVv59UlWZSIWzpL1FflWP6HdXMc0L2FVl0nZeVcuejqp3u66+YAv1THLzBir9uYpP5qKZ3nujgdQfoVk5HThnIDxfbqE7Bz3XwcOIqf jXttNt4M fVRaje5BE1e+s7UU3yLrJWEKClVULcK1CuQzSN+EXrOPcfFoXZaouHQ233ymr64zi4dVv4Mv1fQ/gvK/HKUrcewzq5I/cKHMpEMg3+DtKvGI6Pm4vD1k4GkxSMqpIvl3Wh1bRiR+DZlICj3pYhLJIMWcsU94Axea6C4idFeyW+YVpikOUjWjQv6xv7VTbuTsgbOZuESvCRhCcbN3qdsjQlrXmEBMXZ7sfBRDQrjd6HoSRYNaqFwvbMa+f4Qa1ghDcXlmGCzwhFX3sJwF24K1ZQEsCQeluw4kbLPLIBlhp/b5Q6PQXYg2nItBokwalIUNfM8mZ6oH4ev7IJ+YlSfd4Oo66ot2n1RJ97E0MnVvRfo+K+AThIc/ZCoA95kncXMR0uFim3oC0LNNAljEFE5bH8xHKA8G3BKX8zqAKhGReajNsirEkfymfJ10gtTGeY2qFjuWAL/UZ/gDu4bc= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Fri, Aug 23, 2024 at 3:22=E2=80=AFPM Eduard Zingerman wrote: > > On Wed, 2024-08-14 at 11:54 -0700, Andrii Nakryiko wrote: > > Add sleepable implementations of bpf_get_stack() and > > bpf_get_task_stack() helpers and allow them to be used from sleepable > > BPF program (e.g., sleepable uprobes). > > > > Note, the stack trace IPs capturing itself is not sleepable (that would > > need to be a separate project), only build ID fetching is sleepable and > > thus more reliable, as it will wait for data to be paged in, if > > necessary. For that we make use of sleepable build_id_parse() > > implementation. > > > > Now that build ID related internals in kernel/bpf/stackmap.c can be use= d > > both in sleepable and non-sleepable contexts, we need to add additional > > rcu_read_lock()/rcu_read_unlock() protection around fetching > > perf_callchain_entry, but with the refactoring in previous commit it's > > now pretty straightforward. We make sure to do rcu_read_unlock (in > > sleepable mode only) right before stack_map_get_build_id_offset() call > > which can sleep. By that time we don't have any more use of > > perf_callchain_entry. > > > > Note, bpf_get_task_stack() will fail for user mode if task !=3D current= . > > And for kernel mode build ID are irrelevant. So in that sense adding > > sleepable bpf_get_task_stack() implementation is a no-op. It feel right > > to wire this up for symmetry and completeness, but I'm open to just > > dropping it until we support `user && crosstask` condition. > > > > Signed-off-by: Andrii Nakryiko > > --- > > All seems logical. > You skip wiring up support for sleepable bpf_get_task_stack() in > tp_prog_func_proto(), pe_prog_func_proto() and > raw_tp_prog_func_proto(), this is because these are used for programs > that are never run in sleepable context, right? Correct. I contemplated for a bit wiring it up for tracepoints, as we might get sleepable tracepoints eventually, but we can always do it as a follow up. > > Reviewed-by: Eduard Zingerman > > [...] >