On 19.09.2023 12:35, Andrew Cooper wrote: > The patch adding check_ist_exit() neglected to consider reset_stack_and_jump() > leaving C and entering one of the Xen exit paths. The value in %r12 is stale, > and depending on compiler decisions may not be 0. > > This shows up in Gitlab CI for the Clang build: > > https://gitlab.com/xen-project/people/andyhhp/xen/-/jobs/5112783827 > > and in OSSTest for GCC 8: > > > http://logs.test-lab.xenproject.org/osstest/logs/183045/test-amd64-amd64-xl-qemuu-debianhvm-amd64/serial-pinot0.log > > The justification for ensuring ist_exit is accurate in the exit paths still > stands, so zero %r12 in reset_stack_and_jump() to indicate a non-IST exit.
I did think of this as an option, but I don't think this covers all cases. If we take #DB while in a PV guest, that'll be an IST entry. Assume further that we re-schedule before re-entering the guest. Upon the vCPU being scheduled back in we'll have %r12 clear with an on-stack indication of having taken an IST guest exit. Jan
