- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Running the newest version of the software development emulator (SDE) on Ice Lake, fails for the simple program:
#define _GNU_SOURCE #include <stdio.h> #include <sched.h> int main() { printf("Running on CPU %d\n", sched_getcpu()); }
Running it with -skl, it crashes with:
sde64 -skl -- ./sde-test TID 0 SDE-ERROR: Executed instruction not valid for specified chip (SKYLAKE): 0x7ffe4d6f09a5: rdpid rax Image: [vdso]+0x9a5 Function: __vdso_getcpu Instruction bytes are: f3 0f c7 f8
This is because newer Linux kernel versions use the new in Ice Lake instruction rdpid. Since this happens in the VDSO, it bypasses the usual cpuid checks (the same VDSO page will be loaded into every binary, based on capability checks done once at boot, or something like that).
I don't find a good workaround: it doesn't seem to be possible to disbale the VDSO anymore dynamically: you have to reboot the host with vdso=0 kernel parameter.
The SDE tool should probably whitelist rdpid in the VDSO or something like that, since this will probably be a common problem as Ice Lake gets more common.
- Tags:
- Intel® Advanced Vector Extensions (Intel® AVX)
- Intel® Streaming SIMD Extensions
- Parallel Computing
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for reporting the problem. We will fix it in our next SDE release.
Currently, the only workaround that I can give is to use the knob -chip-check-exe which limits these checks only for the executable.

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page