diff options
author | Maarten Lankhorst <maarten.lankhorst@canonical.com> | 2013-07-07 10:37:48 +0200 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2013-07-08 10:48:10 +1000 |
commit | a0b7ebfb39bf80078d12bd1a46ec40d0d0dbdeef (patch) | |
tree | 18c7e39d694132f5b0d0df4c5493b1e4918e21a9 | |
parent | bbf0c7e0c9c351b3981692a6ed0b4ec6fed18439 (diff) |
gr/nvc0: fix gpc firmware regression
"drm/nve0-/gr: some new gpc registers can have multiple copies"
5ee86c4190f9e caused a regression for nvc0, because the bit indicating last
transfer has occured was no longer set, resulting in random system lockups.
Reported-by: Ronald Uitermark <ronald645@gmail.com>
Tested-by: Ronald Uitermark <ronald645@gmail.com>
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r-- | nvkm/engine/graph/fuc/gpc.fuc | 3 | ||||
-rw-r--r-- | nvkm/engine/graph/fuc/gpcnvc0.fuc.h | 40 |
2 files changed, 23 insertions, 20 deletions
diff --git a/nvkm/engine/graph/fuc/gpc.fuc b/nvkm/engine/graph/fuc/gpc.fuc index b52f4a8b..5547c1b3 100644 --- a/nvkm/engine/graph/fuc/gpc.fuc +++ b/nvkm/engine/graph/fuc/gpc.fuc @@ -352,6 +352,9 @@ ctx_xfer: // per-TPC mmio context xbit $r10 $flags $p1 // direction +#if !NV_PGRAPH_GPCX_UNK__SIZE + or $r10 4 // last +#endif mov $r11 0x4000 sethi $r11 0x500000 // base = NV_PGRAPH_GPC0_TPC0 ld b32 $r12 D[$r0 + #gpc_id] diff --git a/nvkm/engine/graph/fuc/gpcnvc0.fuc.h b/nvkm/engine/graph/fuc/gpcnvc0.fuc.h index 2afe75ce..f2b0dea8 100644 --- a/nvkm/engine/graph/fuc/gpcnvc0.fuc.h +++ b/nvkm/engine/graph/fuc/gpcnvc0.fuc.h @@ -400,26 +400,26 @@ uint32_t nvc0_grgpc_code[] = { 0x0d98000c, 0x00e7f001, 0x016621f5, - 0xf101acf0, - 0xf04000b7, - 0x0c9850b3, - 0x0fc4b604, - 0x9800bcbb, - 0x0d98010c, - 0x060f9802, - 0x0800e7f1, - 0x016621f5, - 0x021521f5, - 0xf40601f4, -/* 0x0532: ctx_xfer_post */ - 0x17f11412, - 0x13f04afc, - 0x0d27f002, - 0xf50012d0, -/* 0x0543: ctx_xfer_done */ - 0xf5021521, - 0xf8047921, - 0x00000000, + 0xf001acf0, + 0xb7f104a5, + 0xb3f04000, + 0x040c9850, + 0xbb0fc4b6, + 0x0c9800bc, + 0x020d9801, + 0xf1060f98, + 0xf50800e7, + 0xf5016621, + 0xf4021521, + 0x12f40601, +/* 0x0535: ctx_xfer_post */ + 0xfc17f114, + 0x0213f04a, + 0xd00d27f0, + 0x21f50012, +/* 0x0546: ctx_xfer_done */ + 0x21f50215, + 0x00f80479, 0x00000000, 0x00000000, 0x00000000, |