There's really no reason for the gd pointer to have the volatile qualifier.
In fact, I claim that it's completely unnecessary and just pessimizes code generation and forces ugly casts in lots of places. For example, see the casts in drivers/core/tag.c where elements are added to gd->dm_taglist, or a helper such as cyclic_get_list() that should not be needed. Also, it is what ends up standing in the way of an otherwise innocent code cleanup of list.h: https://lore.kernel.org/u-boot/20250522165656.GB2179216@bill-the-cat/ Note that riscv, x86 as well as arm64 with LTO enabled has not had this volatile qualifier, so it's unlikely there's any generic code that depends on it. CI seems mostly happy: https://github.com/u-boot/u-boot/pull/775/checks?check_run_id=43463083829 The one failing test seems to be an infrastructure thing unrelated to these patches ("docker: filesystem layer verification failed for digest sha256:379cc6cd06dc3fc80e31d5170204c0cfcc25cb3b3ad457ced23bed2b38ec9f36") Rasmus Villemoes (12): arm: drop volatile qualifier from gd pointer powerpc: drop volatile qualifier from gd pointer mips: drop volatile qualifier from gd pointer microblaze: drop volatile qualifier from gd pointer m68k: drop volatile qualifier from gd pointer m68k: drop pointless #if 0 block arc: drop volatile qualifier from gd pointer arm: imx: remove unnecessary volatile qualifiers from "save gd" variables efi: drop volatile qualifier from "save gd" variables lib/trace: drop volatile qualifier from "save gd" variables arm: remove volatile from set_gd prototype riscv: remove volatile from set_gd prototype arch/arc/include/asm/global_data.h | 2 +- arch/arm/include/asm/global_data.h | 6 +++--- arch/arm/mach-imx/hab.c | 2 +- arch/arm/mach-imx/imx9/scmi/soc.c | 4 ++-- arch/arm/mach-imx/romapi.c | 6 +++--- arch/m68k/include/asm/global_data.h | 7 +------ arch/microblaze/include/asm/global_data.h | 2 +- arch/mips/include/asm/global_data.h | 2 +- arch/powerpc/include/asm/global_data.h | 2 +- arch/riscv/include/asm/global_data.h | 2 +- lib/efi_loader/efi_boottime.c | 2 +- lib/trace.c | 4 ++-- 12 files changed, 18 insertions(+), 23 deletions(-) -- 2.49.0