diff options
| author | Ben Skeggs <bskeggs@redhat.com> | 2015-11-22 14:47:19 -0500 |
|---|---|---|
| committer | Ben Skeggs <bskeggs@redhat.com> | 2015-11-25 00:31:21 -0500 |
| commit | 2fb2b3c6e49a9dc1ed39631ae977b62a273b5a57 (patch) | |
| tree | 610b44cfd820223b4fcee8ce01dbff777d6cffae | |
| parent | ccb7b6ba076c66e1746b87ed0575e387bb2bce13 (diff) | |
drm/nouveau/gr/gf117-: assume no PPC if NV_PGRAPH_GPC_GPM_PD_PES_TPC_ID_MASK is zero
fdo#92761
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
| -rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf117.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.h | 1 |
3 files changed, 5 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf117.c b/drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf117.c index b5b875928aba..74de7a96c22a 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf117.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/ctxgf117.c | |||
| @@ -207,6 +207,8 @@ gf117_grctx_generate_attrib(struct gf100_grctx *info) | |||
| 207 | const u32 b = beta * gr->ppc_tpc_nr[gpc][ppc]; | 207 | const u32 b = beta * gr->ppc_tpc_nr[gpc][ppc]; |
| 208 | const u32 t = timeslice_mode; | 208 | const u32 t = timeslice_mode; |
| 209 | const u32 o = PPC_UNIT(gpc, ppc, 0); | 209 | const u32 o = PPC_UNIT(gpc, ppc, 0); |
| 210 | if (!(gr->ppc_mask[gpc] & (1 << ppc))) | ||
| 211 | continue; | ||
| 210 | mmio_skip(info, o + 0xc0, (t << 28) | (b << 16) | ++bo); | 212 | mmio_skip(info, o + 0xc0, (t << 28) | (b << 16) | ++bo); |
| 211 | mmio_wr32(info, o + 0xc0, (t << 28) | (b << 16) | --bo); | 213 | mmio_wr32(info, o + 0xc0, (t << 28) | (b << 16) | --bo); |
| 212 | bo += grctx->attrib_nr_max * gr->ppc_tpc_nr[gpc][ppc]; | 214 | bo += grctx->attrib_nr_max * gr->ppc_tpc_nr[gpc][ppc]; |
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c index dda7a7d224c9..7cdea770fc4c 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c | |||
| @@ -1530,6 +1530,8 @@ gf100_gr_oneinit(struct nvkm_gr *base) | |||
| 1530 | gr->ppc_nr[i] = gr->func->ppc_nr; | 1530 | gr->ppc_nr[i] = gr->func->ppc_nr; |
| 1531 | for (j = 0; j < gr->ppc_nr[i]; j++) { | 1531 | for (j = 0; j < gr->ppc_nr[i]; j++) { |
| 1532 | u8 mask = nvkm_rd32(device, GPC_UNIT(i, 0x0c30 + (j * 4))); | 1532 | u8 mask = nvkm_rd32(device, GPC_UNIT(i, 0x0c30 + (j * 4))); |
| 1533 | if (mask) | ||
| 1534 | gr->ppc_mask[i] |= (1 << j); | ||
| 1533 | gr->ppc_tpc_nr[i][j] = hweight8(mask); | 1535 | gr->ppc_tpc_nr[i][j] = hweight8(mask); |
| 1534 | } | 1536 | } |
| 1535 | } | 1537 | } |
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.h b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.h index 4611961b1187..02e78b8d93f6 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.h +++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.h | |||
| @@ -97,6 +97,7 @@ struct gf100_gr { | |||
| 97 | u8 tpc_nr[GPC_MAX]; | 97 | u8 tpc_nr[GPC_MAX]; |
| 98 | u8 tpc_total; | 98 | u8 tpc_total; |
| 99 | u8 ppc_nr[GPC_MAX]; | 99 | u8 ppc_nr[GPC_MAX]; |
| 100 | u8 ppc_mask[GPC_MAX]; | ||
| 100 | u8 ppc_tpc_nr[GPC_MAX][4]; | 101 | u8 ppc_tpc_nr[GPC_MAX][4]; |
| 101 | 102 | ||
| 102 | struct nvkm_memory *unk4188b4; | 103 | struct nvkm_memory *unk4188b4; |
