On Fri, 31 Jan 2025, Ivan Kokshaysky wrote: > This series fixes oopses on Alpha/SMP observed since kernel v6.9. [1] > Thanks to Magnus Lindholm for identifying that remarkably longstanding > bug. > > The problem is that GCC expects 16-byte alignment of the incoming stack > since early 2004, as Maciej found out [2]: > Having actually dug speculatively I can see that the psABI was changed in > GCC 3.5 with commit e5e10fb4a350 ("re PR target/14539 (128-bit long double > improperly aligned)") back in Mar 2004, when the stack pointer alignment > was increased from 8 bytes to 16 bytes, and arch/alpha/kernel/entry.S has > various suspicious stack pointer adjustments, starting with SP_OFF which > is not a whole multiple of 16. > > Also, as Magnus noted, "ALPHA Calling Standard" [3] required the same: > D.3.1 Stack Alignment > This standard requires that stacks be octaword aligned at the time a > new procedure is invoked. > > However: > - the "normal" kernel stack is always misaligned by 8 bytes, thanks to > the odd number of 64-bit words in 'struct pt_regs', which is the very > first thing pushed onto the kernel thread stack; > - syscall, fault, interrupt etc. handlers may, or may not, receive aligned > stack depending on numerous factors. Would you please put this analysis into the commit description of 3/4? It gives a good justification for the change, so it seems appropriate to me to get it recorded along with the commit for posterity. NB I've been feeling a little bit unwell over the last couple of days and consequently I only started my GCC/glibc verification yesterday. Current ETC is this coming Tue. Perheps it's worth noting that I run this against 6.3.0-rc5 with a couple of backports on top to resolve conflicts, as the current master does not support EV45 hardware anymore. I'll let you know of the outcome. Maciej