Hi, This is v2 of the series updated according to the outcome from testing with a BWX system. Only test cases have been updated and no changes have been made to actual code and obviously only the patches still outstanding have been included.
Additionally 1/7 has been folded into this series from a patch previously submitted on its own to address a functional regression in the option handling, as it's been discovered that it's required for correct execution of several test cases added with the series, with target configurations that default to EV56 or a newer CPU architecture variant. This series has come out of a discussion[1] around the removal of non-BWX Alpha support from the Linux kernel due to data races affecting RCU algorithms. As it happens these data races also apply to BWX Alpha systems, as I have discovered in the course of this effort, although owing to how the Alpha backend of GCC has implemented block copy and clear operations rather than actual hardware limitations, for example GCC will happily produce code such as: ldbu $1,0($3) stw $31,8($3) stq $1,0($3) to zero a 9-byte member at the byte offset of 1 of a quadword-aligned struct, happily clobbering a 1-byte member at the beginning of said struct if there is a concurrent or parallel write to that member in the middle of the unprotected RMW sequence. This patch series addresses these issues in the last two changes, with suitable preparations made ahead of them. The intent for these changes is to eventually bring Linux kernel support back for non-BWX systems still in people's possession. This has been verified with the `alpha-linux-gnu' (EV4) target using a POWER9 system as the host and an AlphaServer 300 (EV45) system as the target, with no regressions except where expected due to LDx_L (as always the first in a sequence) executed with an unaligned address, exceedingly rarely though (4 test cases across all the GCC frontends and libraries covered). This will be addressed via emulation on the Linux kernel side, now in the works. This v2 has also been verified with the `alphaev56-linux-gnu' (EV56) target using the same POWER9 system and EV68 hardware kindly shared for this purpose by Magnus Lindholm <linm...@gmail.com>. No Rust frontend or libgrust library verification has been run due to a recent version requirement increase for the `cargo' helper tool, which my development system cannot currently satisfy and I figured out that getting that sorted right now would be the best use of my time. More details on testing have been included with the respective changes. With changes to non-Alpha code committed and 5/7 already approved the relevant maintainers have now been dropped from the list of recipients for this patchset. Previous iterations: - v1 at: <https://inbox.sourceware.org/gcc-patches/alpine.deb.2.21.2411141652300.9...@angie.orcam.me.uk/>. - 1/7 at: <https://inbox.sourceware.org/gcc-patches/alpine.deb.2.21.2412300410050.20...@angie.orcam.me.uk/> References: [1] "alpha: cleanups for 6.10", <https://lore.kernel.org/r/20240503081125.67990-1-a...@kernel.org/> Maciej