The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: David Laight <david.laight.linux@gmail.com>
To: "Zach O'Keefe" <zokeefe@google.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>,
	"Vlastimil Babka (SUSE)" <vbabka@kernel.org>,
	Dave Hansen <dave.hansen@intel.com>,
	Thomas Gleixner <tglx@kernel.org>,
	David Stevens <stevensd@google.com>,
	Pasha Tatashin <pasha.tatashin@soleen.com>,
	Linus Walleij <linus.walleij@linaro.org>,
	Will Deacon <willdeacon@google.com>,
	Quentin Perret <qperret@google.com>,
	Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	x86@kernel.org, Andy Lutomirski <luto@kernel.org>,
	Xin Li <xin@zytor.com>, Peter Zijlstra <peterz@infradead.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	David Hildenbrand <david@kernel.org>,
	Lorenzo Stoakes <ljs@kernel.org>,
	"Liam R. Howlett" <Liam.Howlett@oracle.com>,
	Mike Rapoport <rppt@kernel.org>,
	Suren Baghdasaryan <surenb@google.com>,
	Michal Hocko <mhocko@suse.com>,
	Uladzislau Rezki <urezki@gmail.com>, Kees Cook <kees@kernel.org>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH v2 00/13] Dynamic Kernel Stacks
Date: Mon, 29 Jun 2026 20:43:48 +0100	[thread overview]
Message-ID: <20260629204348.2426a800@pumpkin> (raw)
In-Reply-To: <CAAa6QmQme+d1rOCEMF_ySwCANsUEbq0mHoq8ijVELBU=d+qPrQ@mail.gmail.com>

On Mon, 29 Jun 2026 10:29:53 -0700
"Zach O'Keefe" <zokeefe@google.com> wrote:

> Thanks All.
> 
> Yes, we run with CONFIG_DEBUG_STACK_USAGE -- which allows us to put
> together information on max stack depth usage per host/task.
> 
> I'd like to create an upstream recipe for finding deep stacks
> statically by combining per-frame sizes from --fstack-usage with
> callgraphs generated using Dan Carpenter's smatch utility. In
> particular, smatch's selling point is the ability to track indirect
> calls (i.e., calls through vm_operations, super_operations, etc).
> While easy to set up, and working well out-of-the-box, this currently
> results in many false-positive callstack possibilities, so I'm trying
> to pare down the graph to get to some useable data. Additionally will
> need to know what exception-originating stacks can possibly be
> superimposed on the base callstack, for the given configuration -- for
> example, today, only a few places we'd expect to see #PF stack.
> Lastly, I've been analyzing perf-like data to authoritatively
> construct the call graphs as well -- or at least to use for
> seeding/filtering the static call graph.

I've thought of trying to do that getting objtool to output the
stack offset of every call (I think it ends up in the debug info)
and using the IBT function hashes to group indirect calls together.
But I've not got further than failing to compile a kernel with the
required compiler options :-(

Unravelling the mess and breaking recursive call loops is a separate
problem - which you seem to have hit.
(I've done it many, many years ago for an embedded system with no
indirect calls of recursion.)

I think objtool already works out a lot of things you'd need.
Getting it to output a file of:
	'func_x at stack offset off calls func_y'
would give something to post-process.

	David



> 
> Thanks,
> Zach
> 


  parent reply	other threads:[~2026-06-29 19:43 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-24 19:14 [PATCH v2 00/13] Dynamic Kernel Stacks David Stevens
2026-04-24 19:14 ` [PATCH v2 01/13] fork: Remove assumption that vm_area->nr_pages equals to THREAD_SIZE David Stevens
2026-04-24 19:14 ` [PATCH v2 02/13] fork: Don't assume fully populated stack during reuse David Stevens
2026-04-24 19:14 ` [PATCH v2 03/13] fork: Move vm_stack to the beginning of the stack David Stevens
2026-04-24 19:14 ` [PATCH v2 04/13] fork: separate vmap stack allocation and free calls David Stevens
2026-04-24 19:14 ` [PATCH v2 05/13] mm/vmalloc: Add a get_vm_area_node() and vmap_pages_range() public functions David Stevens
2026-04-24 19:14 ` [PATCH v2 06/13] fork: Move vmap stack freeing to work queue David Stevens
2026-04-24 19:14 ` [PATCH v2 07/13] fork: Dynamic Kernel Stacks David Stevens
2026-04-24 19:14 ` [PATCH v2 08/13] task_stack.h: Add stack_not_used() support for dynamic stack David Stevens
2026-04-24 19:14 ` [PATCH v2 09/13] fork: Dynamic Kernel Stack accounting David Stevens
2026-04-24 19:14 ` [PATCH v2 10/13] fork: Store task pointer in unpopulated stack ptes David Stevens
2026-06-26 22:46   ` Thomas Gleixner
2026-06-27 23:11     ` Thomas Gleixner
2026-04-24 19:14 ` [PATCH v2 11/13] x86/entry/fred: encode frame pointer on entry David Stevens
2026-05-20 22:24   ` David Stevens
2026-05-22 22:25     ` H. Peter Anvin
2026-05-24 18:22       ` Xin Li
2026-04-24 19:14 ` [PATCH v2 12/13] x86: Add support for dynamic kernel stacks via FRED David Stevens
2026-06-26 22:39   ` Thomas Gleixner
2026-06-27  4:05     ` David Stevens
2026-06-28 16:46       ` Thomas Gleixner
2026-06-28 20:33         ` H. Peter Anvin
2026-06-29  8:41           ` Thomas Gleixner
2026-06-29 14:52             ` H. Peter Anvin
2026-04-24 19:14 ` [PATCH v2 13/13] x86: Add support for dynamic kernel stacks via IST David Stevens
2026-04-24 19:41 ` [PATCH v2 00/13] Dynamic Kernel Stacks Dave Hansen
2026-04-24 21:35   ` Pasha Tatashin
2026-04-24 22:21     ` Dave Hansen
2026-04-24 22:49       ` David Stevens
2026-04-24 22:26     ` David Laight
2026-04-24 23:06       ` Pasha Tatashin
2026-06-19  0:29       ` Dave Hansen
2026-06-19 19:56         ` Zach O'Keefe
2026-06-20  5:25         ` David Stevens
2026-06-20 23:22           ` Dave Hansen
2026-04-25  9:19   ` H. Peter Anvin
2026-04-27 16:17     ` Dave Hansen
2026-06-18 14:50       ` Zach O'Keefe
2026-06-18 18:53         ` Dave Hansen
2026-06-18 22:28           ` H. Peter Anvin
2026-06-19  0:40             ` David Stevens
2026-06-19  0:44               ` H. Peter Anvin
2026-06-19 12:45           ` Thomas Gleixner
2026-06-19 19:20             ` Zach O'Keefe
2026-06-19 21:59               ` Thomas Gleixner
2026-06-20  5:02                 ` David Stevens
2026-06-20 21:59                   ` Thomas Gleixner
2026-06-20 19:33                 ` Zach O'Keefe
2026-06-20 19:44                   ` H. Peter Anvin
2026-06-20 20:01                     ` Zach O'Keefe
2026-06-20 23:34                   ` Thomas Gleixner
2026-06-22 23:00                     ` Zach O'Keefe
2026-06-23  7:50                       ` David Hildenbrand (Arm)
2026-06-23  9:10                         ` David Laight
2026-06-23  9:19                           ` David Hildenbrand (Arm)
2026-06-23 21:58                       ` Thomas Gleixner
2026-06-29 16:02                         ` Dave Hansen
2026-06-29 16:12                           ` H. Peter Anvin
2026-06-29 16:18                           ` Vlastimil Babka (SUSE)
2026-06-29 16:21                             ` H. Peter Anvin
2026-06-29 17:29                               ` Zach O'Keefe
2026-06-29 17:38                                 ` Dave Hansen
2026-06-29 19:43                                 ` David Laight [this message]
2026-06-29 20:17                           ` Matthew Wilcox
2026-06-29 21:13                             ` Dave Hansen
2026-06-29 20:28                           ` David Laight
2026-06-25 11:56         ` Andrew Cooper
2026-06-25 21:38           ` H. Peter Anvin
2026-06-26  8:16         ` David Laight
2026-04-27 16:31     ` Pasha Tatashin

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=20260629204348.2426a800@pumpkin \
    --to=david.laight.linux@gmail.com \
    --cc=Liam.Howlett@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=bp@alien8.de \
    --cc=dave.hansen@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=david@kernel.org \
    --cc=hpa@zytor.com \
    --cc=kees@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=ljs@kernel.org \
    --cc=luto@kernel.org \
    --cc=mhocko@suse.com \
    --cc=mingo@redhat.com \
    --cc=pasha.tatashin@soleen.com \
    --cc=peterz@infradead.org \
    --cc=qperret@google.com \
    --cc=rppt@kernel.org \
    --cc=stevensd@google.com \
    --cc=surenb@google.com \
    --cc=tglx@kernel.org \
    --cc=urezki@gmail.com \
    --cc=vbabka@kernel.org \
    --cc=willdeacon@google.com \
    --cc=x86@kernel.org \
    --cc=xin@zytor.com \
    --cc=zokeefe@google.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