Re: [PATCH v2 08/22] alpha: select ARCH_SUPPORTS_INT128

From: Magnus Lindholm

Date: Fri Oct 09 2026 - 02:54:05 EST


Hi Matt,

On Sat, Sep 5, 2026 at 9:29 PM Matt Turner <mattst88@xxxxxxxxx> wrote:
>
> gcc supports __int128 on Alpha, and the 64x64 to 128-bit multiply that
> the users in the scheduler and in lib/ care about maps onto mulq/umulh
> rather than an out-of-line libgcc helper.
>
> Gate the select on CC_HAS_INT128 as the other 64-bit architectures do.
>
> Assisted-by: Claude:claude-opus-5
> Signed-off-by: Matt Turner <mattst88@xxxxxxxxx>
> Tested-by: Magnus Lindholm <linmag7@xxxxxxxxx>
> Reviewed-by: Magnus Lindholm <linmag7@xxxxxxxxx>
> ---
> arch/alpha/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
> index 2672971b83f3..bed3f1c8d9d2 100644
> --- a/arch/alpha/Kconfig
> +++ b/arch/alpha/Kconfig
> @@ -16,6 +16,7 @@ config ALPHA
> select ARCH_NO_PREEMPT
> select ARCH_NO_SG_CHAIN
> select ARCH_SUPPORTS_ATOMIC_RMW
> + select ARCH_SUPPORTS_INT128 if CC_HAS_INT128
> select ARCH_USE_CMPXCHG_LOCKREF
> select FORCE_PCI
> select PCI_DOMAINS if PCI
>
> --
> 2.54.0
>

The kernel test robot reported undefined references to __ashlti3,
__ashrti3 and __lshrti3 with CONFIG_CC_OPTIMIZE_FOR_SIZE=y.

Alpha doesn't currently provide these helpers. CC_HAS_INT128 confirms
support for the type, but doesn't guarantee that the generated code
can link without libgcc.

I suggest dropping "alpha: select ARCH_SUPPORTS_INT128" for now and
bringing it back once the required helpers are implemented and tested
with size-optimized builds, including UBSAN. Removing the select
eliminates the missing references in the affected objects.

There are no functional dependencies on this patch in the rest of
for-next. I tested rebasing without it: the page-table-check and
hugetlb patches each needed a small Kconfig context conflict resolved,
keeping their own selects and omitting ARCH_SUPPORTS_INT128. The
remaining commits replayed cleanly, and the resulting tree differs
only by that one-line removal.

Magnus