diff options
| author | Ben Skeggs <bskeggs@redhat.com> | 2010-01-12 00:28:19 -0500 |
|---|---|---|
| committer | Ben Skeggs <bskeggs@redhat.com> | 2010-01-14 03:48:38 -0500 |
| commit | e147eae80afe98b86a7921a40a709584e6603e34 (patch) | |
| tree | b40bdaf039d5d2b2a90794bff102cf9a42abd745 | |
| parent | 9855e584d296a32bbcc1bb3d29b7e0ed078b03cc (diff) | |
drm/nouveau: wait on fence after bo move if validating for another channel
Not an ideal solution, but it'll do for the moment for correctness. We
need to come up with a nicer way to manage inter-channel sync, the hw
is unfortunately a little lacking in this area.
Should fix some resume corruption, as well as corruption that may be seen
while under memory pressure.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
| -rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_bo.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c index e342a418d434..db0ed4c13f98 100644 --- a/drivers/gpu/drm/nouveau/nouveau_bo.c +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c | |||
| @@ -469,6 +469,8 @@ nouveau_bo_move_accel_cleanup(struct nouveau_channel *chan, | |||
| 469 | 469 | ||
| 470 | ret = ttm_bo_move_accel_cleanup(&nvbo->bo, fence, NULL, | 470 | ret = ttm_bo_move_accel_cleanup(&nvbo->bo, fence, NULL, |
| 471 | evict, no_wait, new_mem); | 471 | evict, no_wait, new_mem); |
| 472 | if (nvbo->channel && nvbo->channel != chan) | ||
| 473 | ret = nouveau_fence_wait(fence, NULL, false, false); | ||
| 472 | nouveau_fence_unref((void *)&fence); | 474 | nouveau_fence_unref((void *)&fence); |
| 473 | return ret; | 475 | return ret; |
| 474 | } | 476 | } |
