Hello. I have just installed a new Linux image with CONFIG_VSX=y, however nettle is still triggering illegal instruction there.
2022-10-20 2:14 GMT+08:00, Niels Möller <ni...@lysator.liu.se>: > 王昊然 <msl0000023...@gmail.com> writes: > >>> int main() { >>> unsigned long int hwcap = getauxval(AT_HWCAP); >>> printf("hwcap = 0x%lx\n", hwcap); >>> return 0; >>> } >>> whr@debian:~/src$ gcc -Wall cpu-feature-test.c >>> whr@debian:~/src$ ./a.out >>> hwcap = 0xdc0065c2 > > And the flags checked by nettle are (from > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/powerpc/include/uapi/asm/cputable.h?h=v6.1-rc1) > > > #define PPC_FEATURE_HAS_ALTIVEC 0x10000000 > #define PPC_FEATURE_HAS_VSX 0x00000080 > > so both set in your case. > >>> >>>> Is the program that crashes running under a vm, or is the kernel >>>> running >>>> on the bare metal? Each layer of vm tends to be ian opportunity to >>>> introduce >>>> errors in the list of available processor features. >>> >>> Operating systems on this machine are always running on the Power >>> Hypervisor, >>> which is a part of the server firmware. >>> >> >> I just checked the nettle source code, it is indeed correctly checked >> both >> PPC_FEATURE_HAS_ALTIVEC and PPC_FEATURE_HAS_VSX; and with my HWCAP has >> PPC_FEATURE_HAS_VSX set, I think it hits a limitation of this processor >> feature checking logic: hardware supporting it, but the kernel didn't. >> >> I will try to build a new kernel with CONFIG_VSX enabled by tomorrow. > > My understanding is that AT_HWCAP should describe what instructions are > available to userspace processes. If an instruction set extension isn't > fully supported and enabled by all of hw/kernel/hypervisor, it should > not be listed in hwcap. So the alternative might be to leave VSX > disabled, but ensure it isn't advertised in hwcaps. > > Regards, > /Niels > > -- > Niels Möller. PGP key CB4962D070D77D7FCB8BA36271D8F1FF368C6677. > Internet email is subject to wholesale government surveillance. >