On 03.07.2025 01:50, Steven Rostedt wrote: > On Tue, 1 Jul 2025 17:36:55 +0200 > Jens Remus <jremus@xxxxxxxxxxxxx> wrote: > >> On s390 the prev_frame_sp may be equal to curr_frame_sp for the topmost >> frame, as long as the topmost function did not allocate any stack. For >> instance when early in the prologue or when in a leaf function that does >> not require any stack space. My s390 sframe support patches would >> therefore currently change above check to: >> >> /* stack going in wrong direction? */ >> if (sp <= state->sp - topmost) >> goto done; > > How do you calculate "topmost" then? > > Is it another field you add to "state"? Correct. It is a boolean set to true in unwind_user_start() and set to false in unwind_user_next() when updating the state. I assume most architectures need above change, as their SP at function entry should be equal to the SP at call site (unlike x86-64 due to CALL). s390 also needs this information to allow restoring of FP/RA saved in other registers (instead of on the stack) only for the topmost frame. For any other frame arbitrary register contents would not be available, as user unwind only unwinds SP, FP, and RA. I would post my s390 sframe support patches as RFC once you have provided a merged sframe branch as discussed in: https://lore.kernel.org/all/20250702124737.565934b5@xxxxxxxxxxxxxxxxx/ Regards, Jens -- Jens Remus Linux on Z Development (D3303) +49-7031-16-1128 Office jremus@xxxxxxxxxx IBM IBM Deutschland Research & Development GmbH; Vorsitzender des Aufsichtsrats: Wolfgang Wendt; Geschäftsführung: David Faller; Sitz der Gesellschaft: Böblingen; Registergericht: Amtsgericht Stuttgart, HRB 243294 IBM Data Privacy Statement: https://www.ibm.com/privacy/