Are they building for the base riscv with no isa extensions? This might be addressed somewhere in the debian docs but I didn't see it.
Are they building for the base riscv with no isa extensions? This might be addressed somewhere in the debian docs but I didn't see it.
Anyway, I did find this on the Debian website[1]. So it seems they mean rv64gc.
[1] https://wiki.debian.org/RISC-V#Hardware_baseline_and_ABI_cho...
There's a lot in there which RV64GC (ratified in 2019, I understand unchanged since 2017) lacks.
Some of the new extensions e.g. vector and bit manipulation do have a significant effect in performance.
That is the hard part. On Intel you can use CPUID, but it is ARM policy to not expose such instructions. You can read /proc/cpuinfo, but that is Linux-specific.
Edit: there is a reason for ARM policy: CPUID is a well known virtualization hazard. In fact, KVM immediately traps if you execute CPUID on guest. ARM made a good decision here. Still, it means things can't work exactly like it worked on Intel.
The recommended approach is to use HWCAPs, or else to use the kernel's "emulated ID register accesses" functionality.
You can also look at the hwcaps (available in the ELF aux vector) -- this is the older mechanism.
It's true that there's no cross-OS mechanism to do this, but that's life -- often the OS wants to get in anyway to sanitize the answers (eg so it can tell you "feature X is not present" when it knows about a hardware erratum or the OS was built without feature-X support).
This is going to confuse the hell out of the potential customer base and it would be a crying shame, wasting a golden opportunity to get out of the oxygen-choking clutches of proprietary ISA vendors (who at this point are purely rent-seeking and add exactly zero actual economic value to the ecosystem).
Not following the profiles will be possible but will cause issues.