Merge branch 'linux-5.9' of git://github.com/skeggsb/linux into drm-fixes
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
This commit is contained in:
Коммит
d37d569200
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#include "disp.h"
|
||||
#include "head.h"
|
||||
|
||||
#include <nvif/push507c.h>
|
||||
#include <nvif/pushc37b.h>
|
||||
|
||||
#include <nvhw/class/clc37d.h>
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
Загрузка…
Ссылка в новой задаче