Le jeudi 13 août 2026, 13:43:46 heure d’été d’Europe centrale Simon McVittie a 
écrit :
> On Thu, 13 Aug 2026 at 13:00:41 +0200, John Paul Adrian Glaubitz wrote:
> >On Thu, 2026-08-13 at 12:53 +0200, Bastien Roucaries wrote:
> >> In order to ease the user/devel experience I want for isa-support to 
> >> create test for forky baseline
> >>
> >> For now I test for armhf:
> >>
> >> armv8-support
> >>     CPU feature checking - require ARMv8
> >>
> >> neon-support
> >
> >Not sure I understand this. You want to raise armhf to ARMv8? Why would
> >anyone then install a 32-bit port when they could just use the 64-bit
> >port in the first place?
> 
> I think perhaps what Bastien is trying to do is to identify useful 
> functionality levels that are *above* the baseline, so that isa-support 
> can be used to gate their availability; while avoiding checks for 
> functionality levels that are *below* the baseline, because by 
> definition Debian is not expected to run on CPUs that lack that 
> functionality anyway?

Yes it is is
> 
> The purpose of isa-support is that when our official architecture 
> baseline is relatively low (like i586 on bookworm i386), but a specific 
> package needs a higher functionality level (like various i386 packages 
> that needed SSE2 anyway), those specific packages can depend on 
> something like
> 
>      sse2-support [i386]
> 
> and the result will be that the package fails to install on baseline 
> CPUs, and only installs successfully on those CPUs where it can actually 
> work.

You could even now test at run time using isa-support package and 
/usr/libexec/x86_64-linux-gnu/isa-support/test-SSE3
/usr/libexec/x86_64-linux-gnu/isa-support/test-SSE4.1
/usr/libexec/x86_64-linux-gnu/isa-support/test-SSE4.2
/usr/libexec/x86_64-linux-gnu/isa-support/test-x86-64-v2
/usr/libexec/x86_64-linux-gnu/isa-support/test-x86-64-v3

qemu command are available in case of problem:
/usr/libexec/x86_64-linux-gnu/isa-support/qemu-bad-SSE3
/usr/libexec/x86_64-linux-gnu/isa-support/qemu-bad-SSE4.1
/usr/libexec/x86_64-linux-gnu/isa-support/qemu-bad-SSE4.2
/usr/libexec/x86_64-linux-gnu/isa-support/qemu-bad-x86-64-v2
/usr/libexec/x86_64-linux-gnu/isa-support/qemu-bad-x86-64-v3
/usr/libexec/x86_64-linux-gnu/isa-support/qemu-good-SSE3
/usr/libexec/x86_64-linux-gnu/isa-support/qemu-good-SSE4.1
/usr/libexec/x86_64-linux-gnu/isa-support/qemu-good-SSE4.2
/usr/libexec/x86_64-linux-gnu/isa-support/qemu-good-x86-64-v2
/usr/libexec/x86_64-linux-gnu/isa-support/qemu-good-x86-64-v3

run it with program and you could check if program run with or without extra 
instruction.

> 
> Since trixie, we officially require more i386 features than we did in 
> bookworm[1] so the common case of needing SSE2 is no longer interesting: 
> all of our x86 CPUs are meant to have SSE2 anyway. But I expect that 
> we'll see analogous situations appear for higher CPU functionality 
> levels: there's already some x86 binary software that requires higher 
> than x86-64-v1. For example, Steam requires SSE3 and CMPXCHG8, which are 
> x86-64-v2 features.
> 
> [1] 
> https://www.debian.org/releases/trixie/release-notes/issues.en.html#reduced-support-for-i386
> 
> The use case for armv8-support on armhf would be a piece of software 
> that has to be compiled as 32-bit for ABI compatibility reasons, but 
> requires ARMv8 CPU functionality, and therefore has:
> 
>      Depends armv8-support [armhf]
> 
> Bastien, are you aware of any specific pieces of software on armhf that 
> have this requirement, or are you adding a check and a package 
> speculatively in case a package needs it in future? 

I suppose JIT program nodejs was complicated, chromium also.

> On x86, there's a 
> lot of legacy binary-only software that requires 32-bit libraries to 
> continue to exist on x86_64 (mostly games), but I wasn't aware that 
> armhf had a similar legacy binary requirement (and if it does, we'll 
> have broken a lot of it anyway, by doing the 64-bit time_t transition).
> 
> >> For amd64/i386 (i will like to only use psABI defintion so
> >>
> >> sse3-support
> >>     vérification de caractéristique de CPU – besoin de SSE3
> >> sse4.1-support
> >>     CPU feature checking - require SSE4.1
> >> sse4.2-support
> >>     SSE4.2
> >> x86-64-v2-support
> >>     CPU feature checking - require x86-64-v2
> >> x86-64-v3-support
> >>     CPU feature checking - require x86-64-v3
> >
> >Isn't that something that should be done using hwcaps support?
> 
> You can use hwcaps or a similar mechanism for libraries, for example if 
> your use-case is that you have a less-optimized version of OpenSSL 
> compiled for the x86_64 baseline, and a more-optimized version compiled 
> with x86-64-v2 requirements that can be used to speed up systems with a 
> better CPU. As long as the ABI is the same, the better/faster library 
> can be a drop-in substitute for the less-optimized one.
> 
> But, using hwcaps isn't necessarily feasible if a whole program or 
> component makes higher-than-baseline assumptions. For example Steam is 
> known to require SSE3 and CMPXCHG16B, which are higher than the 
> x86_64-v1 baseline (they're a subset of x86-64-v2); and I could easily 
> imagine Chromium or Firefox deciding that its x86_64 JIT implementation 
> is going to assume non-baseline CPU features to improve performance or 
> code complexity.

For sse3
  Reverse Depends: libhyperscan5 (5.4.2-3)
  Reverse Depends: libqt6webenginecore6 (6.8.2+dfsg-4)

> 
> (Steam as packaged in Debian as steam-installer doesn't currently use 
> isa-support, but the upstream code has a check for the required CPU 
> features and an error message popup if they are missing. A dependency on 
> sse3-support would probably make sense, I'll add that at some point.)
> 
> Sometimes the use of these newer CPU features is a pervasive 
> architectural assumption, rather than something you can turn on and off.  
> For example, I don't know for sure why Steam needs CMPXCHG16B (128-bit 
> atomic operations), but it's probably safe to assume that it's using 
> them for some sort of lockless synchronization between threads or 
> processes. If it's that, then its developers are unlikely to be willing 
> to write a baseline-compatible fallback - and after committing to using 
> 128-bit atomic ops, it might not be *possible* to write a fallback without 
> breaking compatibility, even if they wanted to.
> 
> >> for ppc/ppc64
> >>
> >> altivec-support
> >
> >POWER8 already has AltiVec. For powerpc and ppc64, AltiVec is not
> >required in the baseline because there are some embedded systems
> >that people use that don't support AltiVec despite being more recent
> >than some of the first AltiVec CPUs.
> 
> Right, that makes this a good example of where isa-support is useful.  
> The purpose of having an altivec-support package in isa-support would be 
> so that Debian-as-a-whole can continue to be installable on those 
> embedded CPUs, but when a specific piece of software *does* require 
> Altivec (like ioquake3 did in the past), that piece of software can be 
> installable onto POWER8 and Apple G4/G5 systems, but flagged as not 
> suitable for the embedded CPUs that you mentioned.
> 
>      smcv
> 
> 

Attachment: signature.asc
Description: This is a digitally signed message part.

Reply via email to