Also I've noticed that "disable read-read optimisations" patch practically does the same as converting kgem_bo_sync__cpu_full back to kgem_bo_sync__cpu (I may be wrong here though it looks this way to me). I will not question this as you are developer and know best, though as tests shown only one particular branch of kgem_bo_sync__cpu_full triggers this issue, see kgem_bo_sync__cpu_full-revert-bad.patch. Maybe you could add some asserts in that branch, I will apply them and give you some more info?
Also I've noticed that "disable read-read optimisations" patch practically does the same as converting kgem_bo_ sync__cpu_ full back to kgem_bo_sync__cpu (I may be wrong here though it looks this way to me). I will not question this as you are developer and know best, though as tests shown only one particular branch of kgem_bo_ sync__cpu_ full triggers this issue, see kgem_bo_ sync__cpu_ full-revert- bad.patch. Maybe you could add some asserts in that branch, I will apply them and give you some more info?