[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] x86: Fix check_ist_exit() assertions
On 19/09/2023 12:46 pm, Jan Beulich wrote: > 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. This is nasty, and we would easily have that behaviour if e.g. GDBSX was attached to the vCPU in question. In that case, technically it's the other scheduled vCPU which is undergoing the ist_exit, but regs->entry_vector will be different and invalidate the check. I guess for now I'll have to relent on checking on the exit-to-guest paths. I don't see any other feasible option. ~Andrew
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |