From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6E49C308F38; Thu, 23 Oct 2025 16:40:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=216.40.44.12 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761237647; cv=none; b=okK5RoYnjym61kCEH6wciS1MoM19Gjw0EszRI+WwMhY/t+saNjJjSQmahucRvlmmqcPlTKjF39us2isRpPwcKAih6ZwJOcyOYCfKhC9AanvMOwqGV8OyZFNxPlOBoeZFOBkW5uobIF183cCZ3VBxktW8QAY3pLIlSGjZ2ddkiq8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761237647; c=relaxed/simple; bh=rnsLj7G2Q4LWV1AO4LqUJD5jb2kwyjL7kpPO+GtVgdg=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ayz8C1xdwRnXXkZytfndeqUilXz7KIWSFvBDdAG0XokM9wRIsDqV/b+jUk93Qgf+B+ufSkohWLPvLkVRSMVdDuf7/5iYrlA3P/7+aTKdUAbU3mq7Ypx/R3ikdDh/9btsWfXhZph4s8bhOIDxNM11L8kLDnE8c6T9GmONUtBzKaQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=goodmis.org; spf=pass smtp.mailfrom=goodmis.org; arc=none smtp.client-ip=216.40.44.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=goodmis.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=goodmis.org Received: from omf12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 1C1C6C0C03; Thu, 23 Oct 2025 16:40:36 +0000 (UTC) Received: from [HIDDEN] (Authenticated sender: rostedt@goodmis.org) by omf12.hostedemail.com (Postfix) with ESMTPA id 1C16719; Thu, 23 Oct 2025 16:40:31 +0000 (UTC) Date: Thu, 23 Oct 2025 12:40:57 -0400 From: Steven Rostedt To: Peter Zijlstra Cc: Steven Rostedt , linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, bpf@vger.kernel.org, x86@kernel.org, Masami Hiramatsu , Mathieu Desnoyers , Josh Poimboeuf , Ingo Molnar , Jiri Olsa , Arnaldo Carvalho de Melo , Namhyung Kim , Thomas Gleixner , Andrii Nakryiko , Indu Bhagat , "Jose E. Marchesi" , Beau Belgrave , Jens Remus , Linus Torvalds , Andrew Morton , Florian Weimer , Sam James , Kees Cook , Carlos O'Donell Subject: Re: [PATCH v16 0/4] perf: Support the deferred unwinding infrastructure Message-ID: <20251023124057.2a6e793a@gandalf.local.home> In-Reply-To: <20251023150002.GR4067720@noisy.programming.kicks-ass.net> References: <20251007214008.080852573@kernel.org> <20251023150002.GR4067720@noisy.programming.kicks-ass.net> X-Mailer: Claws Mail 3.20.0git84 (GTK+ 2.24.33; x86_64-pc-linux-gnu) Precedence: bulk X-Mailing-List: linux-trace-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Stat-Signature: 4ghmzc64qshrjyu9b44bi1ze1a7zh14x X-Rspamd-Server: rspamout01 X-Rspamd-Queue-Id: 1C16719 X-Session-Marker: 726F737465647440676F6F646D69732E6F7267 X-Session-ID: U2FsdGVkX1/vS1yPcV24TdOmvaIXpwP/jWrmfBeXtwA= X-HE-Tag: 1761237631-199775 X-HE-Meta: U2FsdGVkX1/KkQayy8T8nBvljuDSAC4RsHEqtrM3F6Pudd/lnjCVzSCIxptS//mwcDPMu4ogrFlzkh85nZ5lmKGYP/TNSa4Mi+yXVqZXYDJDTgTUc8OZtwjuhyGhO1pY0YDzmd9ISyCdoeymCDptCYRq1Ao36PzorqdffVgGDAwgtFgSj6hAav3C1hd2GSo0srCRd1nerjiTzSQ7cSLHzQAHR2CjsHT9x/TzlTracVJNef3RcpWo6f6jjTKN+1qlvmsOcpqynWpUy7zWGBdQPH0qVq4s41RUBNZ1sUFJfH3ZOvvFdJvOVfmjvHQZl6a6c/TiUwEA6D9Ew4KCMNUN4X0qvzjqNhRJuPk3XgTin57C0tnYviom2CEXvXLD7IQS On Thu, 23 Oct 2025 17:00:02 +0200 Peter Zijlstra wrote: > +/* Deferred unwinding callback for task specific events */ > +static void perf_unwind_deferred_callback(struct unwind_work *work, > + struct unwind_stacktrace *trace, u64 cookie) > +{ > + struct perf_callchain_deferred_event deferred_event = { > + .trace = trace, > + .event = { > + .header = { > + .type = PERF_RECORD_CALLCHAIN_DEFERRED, > + .misc = PERF_RECORD_MISC_USER, > + .size = sizeof(deferred_event.event) + > + (trace->nr * sizeof(u64)), > + }, > + .cookie = cookie, > + .nr = trace->nr, > + }, > + }; > + > + perf_iterate_sb(perf_callchain_deferred_output, &deferred_event, NULL); > +} > + So "perf_iterate_sb()" was the key point I was missing. I'm guessing it's basically a demultiplexer that distributes events to all the requestors? If I had know this, I would have done it completely different. -- Steve