[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