I've made some fixes to valgrind side (https://gitlab.winehq.org/rbernon/valgrind) as well, to better handle stack switches. The syscall dispatcher doesn't need any special treatment anymore.
`KeUserModeCallback` still does because it copies arguments below what will be the new stack pointer before we switch to it, but it's now very simple to silent it in the suppression file.
There's a few tweaks on the Wine side to avoid some "invalid" writes, but generally the fixes are much simpler than before and should work much better.