diff options
9 files changed, 10 insertions, 8 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c index 6104f61b00fc..21b10f9840c9 100644 --- a/drivers/gpu/drm/nouveau/nouveau_display.c +++ b/drivers/gpu/drm/nouveau/nouveau_display.c | |||
| @@ -111,7 +111,7 @@ nouveau_display_scanoutpos_head(struct drm_crtc *crtc, int *vpos, int *hpos, | |||
| 111 | }; | 111 | }; |
| 112 | struct nouveau_display *disp = nouveau_display(crtc->dev); | 112 | struct nouveau_display *disp = nouveau_display(crtc->dev); |
| 113 | struct drm_vblank_crtc *vblank = &crtc->dev->vblank[drm_crtc_index(crtc)]; | 113 | struct drm_vblank_crtc *vblank = &crtc->dev->vblank[drm_crtc_index(crtc)]; |
| 114 | int ret, retry = 1; | 114 | int ret, retry = 20; |
| 115 | 115 | ||
| 116 | do { | 116 | do { |
| 117 | ret = nvif_mthd(&disp->disp, 0, &args, sizeof(args)); | 117 | ret = nvif_mthd(&disp->disp, 0, &args, sizeof(args)); |
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/dmanv40.c b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/dmanv40.c index 0ec179fc40a1..5f722c6e8a2f 100644 --- a/drivers/gpu/drm/nouveau/nvkm/engine/fifo/dmanv40.c +++ b/drivers/gpu/drm/nouveau/nvkm/engine/fifo/dmanv40.c | |||
| @@ -44,6 +44,8 @@ nv40_fifo_dma_engine(struct nvkm_engine *engine, u32 *reg, u32 *ctx) | |||
| 44 | *ctx = 0x38; | 44 | *ctx = 0x38; |
| 45 | return true; | 45 | return true; |
| 46 | case NVKM_ENGINE_MPEG: | 46 | case NVKM_ENGINE_MPEG: |
| 47 | if (engine->subdev.device->chipset < 0x44) | ||
| 48 | return false; | ||
| 47 | *reg = 0x00330c; | 49 | *reg = 0x00330c; |
| 48 | *ctx = 0x54; | 50 | *ctx = 0x54; |
| 49 | return true; | 51 | return true; |
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/boost.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/boost.c index eaf74eb72983..8ab896dd4e92 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/boost.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/boost.c | |||
| @@ -33,7 +33,7 @@ nvbios_boostTe(struct nvkm_bios *bios, | |||
| 33 | u32 boost = 0; | 33 | u32 boost = 0; |
| 34 | 34 | ||
| 35 | if (!bit_entry(bios, 'P', &bit_P)) { | 35 | if (!bit_entry(bios, 'P', &bit_P)) { |
| 36 | if (bit_P.version == 2) | 36 | if (bit_P.version == 2 && bit_P.length >= 0x34) |
| 37 | boost = nvbios_rd32(bios, bit_P.offset + 0x30); | 37 | boost = nvbios_rd32(bios, bit_P.offset + 0x30); |
| 38 | 38 | ||
| 39 | if (boost) { | 39 | if (boost) { |
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/cstep.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/cstep.c index 5063382d8a6c..7c8c36054f71 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/cstep.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/cstep.c | |||
| @@ -33,7 +33,7 @@ nvbios_cstepTe(struct nvkm_bios *bios, | |||
| 33 | u32 cstep = 0; | 33 | u32 cstep = 0; |
| 34 | 34 | ||
| 35 | if (!bit_entry(bios, 'P', &bit_P)) { | 35 | if (!bit_entry(bios, 'P', &bit_P)) { |
| 36 | if (bit_P.version == 2) | 36 | if (bit_P.version == 2 && bit_P.length >= 0x38) |
| 37 | cstep = nvbios_rd32(bios, bit_P.offset + 0x34); | 37 | cstep = nvbios_rd32(bios, bit_P.offset + 0x34); |
| 38 | 38 | ||
| 39 | if (cstep) { | 39 | if (cstep) { |
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/fan.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/fan.c index 456f9ea920dc..0dfb15a27e4e 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/fan.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/fan.c | |||
| @@ -32,7 +32,7 @@ nvbios_fan_table(struct nvkm_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, u8 *len) | |||
| 32 | u32 fan = 0; | 32 | u32 fan = 0; |
| 33 | 33 | ||
| 34 | if (!bit_entry(bios, 'P', &bit_P)) { | 34 | if (!bit_entry(bios, 'P', &bit_P)) { |
| 35 | if (bit_P.version == 2 && bit_P.length >= 0x5a) | 35 | if (bit_P.version == 2 && bit_P.length >= 0x5c) |
| 36 | fan = nvbios_rd32(bios, bit_P.offset + 0x58); | 36 | fan = nvbios_rd32(bios, bit_P.offset + 0x58); |
| 37 | 37 | ||
| 38 | if (fan) { | 38 | if (fan) { |
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/power_budget.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/power_budget.c index 617bfffce4ad..03d2f970a29f 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/power_budget.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/power_budget.c | |||
| @@ -33,7 +33,7 @@ nvbios_power_budget_table(struct nvkm_bios *bios, u8 *ver, u8 *hdr, u8 *cnt, | |||
| 33 | u32 power_budget; | 33 | u32 power_budget; |
| 34 | 34 | ||
| 35 | if (bit_entry(bios, 'P', &bit_P) || bit_P.version != 2 || | 35 | if (bit_entry(bios, 'P', &bit_P) || bit_P.version != 2 || |
| 36 | bit_P.length < 0x2c) | 36 | bit_P.length < 0x30) |
| 37 | return 0; | 37 | return 0; |
| 38 | 38 | ||
| 39 | power_budget = nvbios_rd32(bios, bit_P.offset + 0x2c); | 39 | power_budget = nvbios_rd32(bios, bit_P.offset + 0x2c); |
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/vpstate.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/vpstate.c index f199270163d2..20b6fc8243e0 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/vpstate.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/vpstate.c | |||
| @@ -31,7 +31,7 @@ nvbios_vpstate_offset(struct nvkm_bios *b) | |||
| 31 | struct bit_entry bit_P; | 31 | struct bit_entry bit_P; |
| 32 | 32 | ||
| 33 | if (!bit_entry(b, 'P', &bit_P)) { | 33 | if (!bit_entry(b, 'P', &bit_P)) { |
| 34 | if (bit_P.version == 2) | 34 | if (bit_P.version == 2 && bit_P.length >= 0x3c) |
| 35 | return nvbios_rd32(b, bit_P.offset + 0x38); | 35 | return nvbios_rd32(b, bit_P.offset + 0x38); |
| 36 | } | 36 | } |
| 37 | 37 | ||
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgf100.c b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgf100.c index 53c32fc694e9..c63975907c90 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgf100.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgf100.c | |||
| @@ -589,7 +589,7 @@ gf100_ram_ctor(const struct nvkm_ram_func *func, struct nvkm_fb *fb, | |||
| 589 | nvkm_debug(subdev, "FBP %d: %4d MiB, %d LTC(s)\n", | 589 | nvkm_debug(subdev, "FBP %d: %4d MiB, %d LTC(s)\n", |
| 590 | fbp, size, ltcs); | 590 | fbp, size, ltcs); |
| 591 | lcomm = min(lcomm, (u64)(size / ltcs) << 20); | 591 | lcomm = min(lcomm, (u64)(size / ltcs) << 20); |
| 592 | total += size << 20; | 592 | total += (u64) size << 20; |
| 593 | ltcn += ltcs; | 593 | ltcn += ltcs; |
| 594 | } else { | 594 | } else { |
| 595 | nvkm_debug(subdev, "FBP %d: disabled\n", fbp); | 595 | nvkm_debug(subdev, "FBP %d: disabled\n", fbp); |
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/secboot/gm20b.c b/drivers/gpu/drm/nouveau/nvkm/subdev/secboot/gm20b.c index b10ed59a4911..30491d132d59 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/secboot/gm20b.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/secboot/gm20b.c | |||
| @@ -48,7 +48,7 @@ gm20b_secboot_tegra_read_wpr(struct gm200_secboot *gsb, u32 mc_base) | |||
| 48 | mc = ioremap(mc_base, 0xd00); | 48 | mc = ioremap(mc_base, 0xd00); |
| 49 | if (!mc) { | 49 | if (!mc) { |
| 50 | nvkm_error(&sb->subdev, "Cannot map Tegra MC registers\n"); | 50 | nvkm_error(&sb->subdev, "Cannot map Tegra MC registers\n"); |
| 51 | return PTR_ERR(mc); | 51 | return -ENOMEM; |
| 52 | } | 52 | } |
| 53 | sb->wpr_addr = ioread32_native(mc + MC_SECURITY_CARVEOUT2_BOM_0) | | 53 | sb->wpr_addr = ioread32_native(mc + MC_SECURITY_CARVEOUT2_BOM_0) | |
| 54 | ((u64)ioread32_native(mc + MC_SECURITY_CARVEOUT2_BOM_HI_0) << 32); | 54 | ((u64)ioread32_native(mc + MC_SECURITY_CARVEOUT2_BOM_HI_0) << 32); |
