Skip to content

Commit

Permalink
Merge branch 'linux-5.9' of git://github.com/skeggsb/linux into drm-f…
Browse files Browse the repository at this point in the history
…ixes

A couple of minor fixes to the display changes that went in for 5.9.
The most important of which is a workaround for a HW bug that was
exposed by better push buffer space management, leading to
random(ish...) display engine hangs.

Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Ben Skeggs <skeggsb@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/ <CACAvsv5QDxyMihrxbPk+-sORnaYtjR6_dbM68gEhb2wxht_G1w@mail.gmail.com
  • Loading branch information
Dave Airlie committed Sep 4, 2020
2 parents 0f8aeef + ca386aa commit d37d569
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 3 deletions.
5 changes: 4 additions & 1 deletion drivers/gpu/drm/nouveau/dispnv50/core507d.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,10 @@ core507d_update(struct nv50_core *core, u32 *interlock, bool ntfy)
interlock[NV50_DISP_INTERLOCK_OVLY] |
NVDEF(NV507D, UPDATE, NOT_DRIVER_FRIENDLY, FALSE) |
NVDEF(NV507D, UPDATE, NOT_DRIVER_UNFRIENDLY, FALSE) |
NVDEF(NV507D, UPDATE, INHIBIT_INTERRUPTS, FALSE));
NVDEF(NV507D, UPDATE, INHIBIT_INTERRUPTS, FALSE),

SET_NOTIFIER_CONTROL,
NVDEF(NV507D, SET_NOTIFIER_CONTROL, NOTIFY, DISABLE));

return PUSH_KICK(push);
}
Expand Down
2 changes: 1 addition & 1 deletion drivers/gpu/drm/nouveau/dispnv50/crcc37d.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#include "disp.h"
#include "head.h"

#include <nvif/push507c.h>
#include <nvif/pushc37b.h>

#include <nvhw/class/clc37d.h>

Expand Down
6 changes: 6 additions & 0 deletions drivers/gpu/drm/nouveau/dispnv50/disp.c
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,12 @@ nv50_dmac_create(struct nvif_device *device, struct nvif_object *disp,
dmac->push->end = dmac->push->bgn;
dmac->max = 0x1000/4 - 1;

/* EVO channels are affected by a HW bug where the last 12 DWORDs
* of the push buffer aren't able to be used safely.
*/
if (disp->oclass < GV100_DISP)
dmac->max -= 12;

args->pushbuf = nvif_handle(&dmac->_push.mem.object);

ret = nv50_chan_create(device, disp, oclass, head, data, size,
Expand Down
2 changes: 1 addition & 1 deletion drivers/gpu/drm/nouveau/include/nvif/push507c.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,6 @@
PUSH_ASSERT(!((o) & ~DRF_SMASK(NV507C_DMA_JUMP_OFFSET)), "offset"); \
PUSH_DATA__((p), NVDEF(NV507C, DMA, OPCODE, JUMP) | \
NVVAL(NV507C, DMA, JUMP_OFFSET, (o) >> 2), \
"jump 0x%08x - %s", (u32)(o), __func__); \
" jump 0x%08x - %s", (u32)(o), __func__); \
} while(0)
#endif

0 comments on commit d37d569

Please sign in to comment.