Hello all,
Recently our QAs used valgrind tool(valgrind-3.20.0.GIT) to verify memory leak
with Qemu release on Intel new Sapphire Rapids platform. They only focused on
Sapphire Rapids' new features which are merged into Linux and Qemu release.
#The command
/usr/local/bin/valgrind --log-file=/root/valgrind.log --leak-check=full -v \
./qemu-system-x86_64 \
......
#Qemu will report below issue with valgrind tool:
qemu-system-x86_64: warning: prctl(ARCH_REQ_XCOMP_GUEST_PERM) failure for
feature bit 18
qemu-system-x86_64: kvm_init_vcpu: kvm_arch_init_vcpu failed (0): Operation not
permitted
W/o valgrind tool, the AMX can work normally in latest Linux and Qemu release.
I checked the Qemu code, below syscall will fail(rc=-1) with valgrind tool
int rc = syscall(SYS_arch_prctl, ARCH_REQ_XCOMP_GUEST_PERM, bit);
Notice: bit=18, which is AMX feature in xstate area.
I also use same valgrind command to check amx selftool on Sapphire Rapids
platform.
/usr/local/bin/valgrind --log-file=/root/valgrind.log --leak-check=full -v
linux/tools/testing/selftests/x86/amx_64
amx_64: [FAIL] xstate cpuid: invalid tile data size/offset: 0/0: Success
from the linux/tools/testing/selftests/x86/amx.c
eax = CPUID_LEAF_XSTATE;
ecx = XFEATURE_XTILEDATA;
cpuid(&eax, &ebx, &ecx, &edx);
/*
* eax: XTILEDATA state component size
* ebx: XTILEDATA state component offset in user buffer
*/
if (!eax || !ebx)
fatal_error("xstate cpuid: invalid tile data size/offset:
%d/%d",
eax, ebx);
Above code only read AMX xtilestate's offset and size from xstate buffer by
cpuid.
But from the error information, with valgrind tool, the amx selftest tool in
Linux can't
read correct Sapphire Rapids platform's cpuid registers.
I also tried this same command w/o valgrind tool in intel older
platform(without this feature),
we can get same error information, but this should be normal behavior.
root@icx:~/yangzhon/projects/amx/linux# tools/testing/selftests/x86/amx_64
amx_64: [FAIL] xstate cpuid: invalid tile data size/offset: 0/0: Success
So, from above issue in Intel new platform, the valgrind need do some enablings
to be compatible
with on new platform? Seems valgrind tool can't identify the real HW platform
because cpuid can't
read correct register value. thanks!
Regards,
Yang
_______________________________________________
Valgrind-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-users