[PATCH 00/12] drop volatile from global data

Rasmus Villemoes ravi at prevas.dk
Wed Jun 4 21:56:00 CEST 2025


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



More information about the U-Boot mailing list