I can reproduce the same class of issue on a newer Parallels Desktop version.
Environment:
Code:
Host hardware: Apple M4 Mac
Host OS: macOS 15.7.7
Host build: 24G720
Parallels Desktop: 26.4.0 (57513)
Guest OS: Ubuntu 22.04.5 LTS ARM64
Guest kernel: Linux 5.15.0-185-generic aarch64
glibc: 2.35
Inside the guest, the base sve feature is absent, but SVE2-related features are still exposed:
Features: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 asimddp sha512 asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 flagm2 frint svei8mm svebf16 bf16 afp
Code:
AT_HWCAP: efb3ffff
AT_HWCAP2: 0x105383
Important part:
Code:
sve: absent
sve2: present
svei8mm: present
svebf16: present
This causes runtime-dispatching libraries to select unsupported code paths and crash with SIGILL.
A minimal reproducer using Python cryptography:
Code:
python3 -m venv ~/crypto-latest-wheel
~/crypto-latest-wheel/bin/python -m pip install --upgrade pip setuptools
~/crypto-latest-wheel/bin/python -m pip install --only-binary=:all: cryptography
PYTHONFAULTHANDLER=1 \
~/crypto-latest-wheel/bin/python -X faulthandler \
-c 'from cryptography.hazmat.primitives import hashes; print(hashes.SHA256().name)'
Installed wheel:
cryptography-49.0.0-cp39-abi3-manylinux_2_34_aarch64.whl
Result:
Code:
Fatal Python error: Illegal instruction
...
File ".../cryptography/hazmat/primitives/hashes.py", line 9 in <module>
Illegal instruction (core dumped)
The same command succeeds when OpenSSL ARM CPU capability dispatch is disabled:
Code:
OPENSSL_armcap=0 \
PYTHONFAULTHANDLER=1 \
~/crypto-latest-wheel/bin/python -X faulthandler \
-c 'from cryptography.hazmat.primitives import hashes; print(hashes.SHA256().name)'
Output:
sha256
I also tested the suggested kernel boot parameter arm64.nosve=1.
After reboot, the parameter is active:
Code:
/proc/cmdline:
BOOT_IMAGE=/vmlinuz-5.15.0-185-generic root=/dev/mapper/... ro arm64.nosve=1
However, the guest still exposes the same SVE2-related userspace flags:
Code:
Features: ... dcpodp sve2 flagm2 frint svei8mm svebf16 bf16 afp
AT_HWCAP: efb3ffff
AT_HWCAP2: 0x105383
So in this Ubuntu 22.04.5 / Linux 5.15 ARM64 guest under Parallels Desktop 26.4.0 on Apple M4, arm64.nosve=1 does not remove the inconsistent SVE2-related HWCAP2 bits.
This still looks like inconsistent ARM64 CPU feature exposure from the virtual CPU configuration: base sve is absent, but SVE2-related features are advertised to userspace.