[Bug 94125] [SNA HSW bisected] git commit "sna: Skip sync if we have an idle coherent bo" causes corruption
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Fri Feb 12 21:30:14 UTC 2016
https://bugs.freedesktop.org/show_bug.cgi?id=94125
--- Comment #1 from Chris Wilson <chris at chris-wilson.co.uk> ---
Do you mind reverting that commit chunk-by-chunk to narrow down which bo are
suspect? It implies the request tracking is wrong either at the ddx or kernel
level, but most likely it is a foriegn bo which the ddx has mistakenly assumed
is idle. Along those lines
diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index 8e5ec51..f593abd 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -7003,8 +7003,10 @@ void kgem_bo_sync__cpu(struct kgem *kgem, struct kgem_bo
*bo)
assert(!bo->scanout);
assert_tiling(kgem, bo);
- if (bo->rq == NULL && (kgem->has_llc || bo->snoop))
+ if (bo->rq == NULL && (kgem->has_llc || bo->snoop)) {
+ assert(!__kgem_busy(kgem, bo->handle));
return;
+ }
kgem_bo_submit(kgem, bo);
@@ -7043,8 +7045,10 @@ void kgem_bo_sync__cpu_full(struct kgem *kgem, struct
kgem_bo *bo, bool write)
assert(!bo->scanout || !write);
assert_tiling(kgem, bo);
- if (bo->rq == NULL && (kgem->has_llc || bo->snoop))
+ if (bo->rq == NULL && (kgem->has_llc || bo->snoop)) {
+ assert(!__kgem_busy(kgem, bo->handle));
return;
+ }
if (write || bo->needs_flush)
kgem_bo_submit(kgem, bo);
@@ -7093,8 +7097,10 @@ void kgem_bo_sync__gtt(struct kgem *kgem, struct kgem_bo
*bo)
assert(bo->proxy == NULL);
assert_tiling(kgem, bo);
- if (bo->rq == NULL)
+ if (bo->rq == NULL) {
+ assert(!__kgem_busy(kgem, bo->handle));
return;
+ }
kgem_bo_submit(kgem, bo);
plus a full-debug log would help.
Also would be nice to check if
diff --git a/src/sna/kgem.c b/src/sna/kgem.c
index 8e5ec51..0b621b6 100644
--- a/src/sna/kgem.c
+++ b/src/sna/kgem.c
@@ -7003,7 +7003,7 @@ void kgem_bo_sync__cpu(struct kgem *kgem, struct kgem_bo
*bo)
assert(!bo->scanout);
assert_tiling(kgem, bo);
- if (bo->rq == NULL && (kgem->has_llc || bo->snoop))
+ if (bo->rq == NULL && (kgem->has_llc || bo->snoop) && !bo->flush)
return;
kgem_bo_submit(kgem, bo);
@@ -7043,7 +7043,7 @@ void kgem_bo_sync__cpu_full(struct kgem *kgem, struct
kgem_bo *bo, bool write)
assert(!bo->scanout || !write);
assert_tiling(kgem, bo);
- if (bo->rq == NULL && (kgem->has_llc || bo->snoop))
+ if (bo->rq == NULL && (kgem->has_llc || bo->snoop) && !bo->flush)
return;
if (write || bo->needs_flush)
@@ -7093,7 +7093,7 @@ void kgem_bo_sync__gtt(struct kgem *kgem, struct kgem_bo
*bo)
assert(bo->proxy == NULL);
assert_tiling(kgem, bo);
- if (bo->rq == NULL)
+ if (bo->rq == NULL && !bo->flush)
return;
kgem_bo_submit(kgem, bo);
affected the rendering.
--
You are receiving this mail because:
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/intel-gfx-bugs/attachments/20160212/e003f5da/attachment.html>
More information about the intel-gfx-bugs
mailing list