Intel® ISA Extensions
Use hardware-based isolation and memory encryption to provide more code protection in your solutions.

Intel SDE fails on Ice Lake

New Contributor II

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.





0 Kudos
1 Reply

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.

0 Kudos