nouveau: multithreading fixes
Fixes multithreading inside nouveau by moving move stuff into the context. Fencing is probably the biggest change here. Nothing too complicated going on overall.
I'd like to merge it directly after the next release gets branched out. This MR itself is easily backportable so if distributions want to quick multithreading in older releases downstream, they are free to do so with this MR. It should contain everything needed. The only additional patch to backport would be this one: de0a0d2f
Copr for Testing on Fedora 35: https://copr.fedorainfracloud.org/coprs/karolherbst/Nouveau_Testing/
Known issues:
-
State tracking issues in drivers. Especially the text are is causing issues. -
Get more distributions/users to test those patches -
On nv50 I hit the issue where some pushbuffer submits are not worked through on the hw. No idea if that's only limited to the fencing part or if that includes the entire pushbuffer. usleep
prior kicking does help, so it might be some stupid timing issue. -
Fix nv50 regressions.