Commit caeb6ab8 authored by Ben Skeggs's avatar Ben Skeggs

drm/nouveau/kms/nv50-: fix case where notifier buffer is at offset 0

VRAM offset 0 is a valid address, triggered on GA102.
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent add42781
...@@ -222,7 +222,7 @@ nv50_dmac_wait(struct nvif_push *push, u32 size) ...@@ -222,7 +222,7 @@ nv50_dmac_wait(struct nvif_push *push, u32 size)
int int
nv50_dmac_create(struct nvif_device *device, struct nvif_object *disp, nv50_dmac_create(struct nvif_device *device, struct nvif_object *disp,
const s32 *oclass, u8 head, void *data, u32 size, u64 syncbuf, const s32 *oclass, u8 head, void *data, u32 size, s64 syncbuf,
struct nv50_dmac *dmac) struct nv50_dmac *dmac)
{ {
struct nouveau_cli *cli = (void *)device->object.client; struct nouveau_cli *cli = (void *)device->object.client;
...@@ -271,7 +271,7 @@ nv50_dmac_create(struct nvif_device *device, struct nvif_object *disp, ...@@ -271,7 +271,7 @@ nv50_dmac_create(struct nvif_device *device, struct nvif_object *disp,
if (ret) if (ret)
return ret; return ret;
if (!syncbuf) if (syncbuf < 0)
return 0; return 0;
ret = nvif_object_ctor(&dmac->base.user, "kmsSyncCtxDma", NV50_DISP_HANDLE_SYNCBUF, ret = nvif_object_ctor(&dmac->base.user, "kmsSyncCtxDma", NV50_DISP_HANDLE_SYNCBUF,
......
...@@ -95,7 +95,7 @@ struct nv50_outp_atom { ...@@ -95,7 +95,7 @@ struct nv50_outp_atom {
int nv50_dmac_create(struct nvif_device *device, struct nvif_object *disp, int nv50_dmac_create(struct nvif_device *device, struct nvif_object *disp,
const s32 *oclass, u8 head, void *data, u32 size, const s32 *oclass, u8 head, void *data, u32 size,
u64 syncbuf, struct nv50_dmac *dmac); s64 syncbuf, struct nv50_dmac *dmac);
void nv50_dmac_destroy(struct nv50_dmac *); void nv50_dmac_destroy(struct nv50_dmac *);
/* /*
......
...@@ -76,7 +76,7 @@ wimmc37b_init_(const struct nv50_wimm_func *func, struct nouveau_drm *drm, ...@@ -76,7 +76,7 @@ wimmc37b_init_(const struct nv50_wimm_func *func, struct nouveau_drm *drm,
int ret; int ret;
ret = nv50_dmac_create(&drm->client.device, &disp->disp->object, ret = nv50_dmac_create(&drm->client.device, &disp->disp->object,
&oclass, 0, &args, sizeof(args), 0, &oclass, 0, &args, sizeof(args), -1,
&wndw->wimm); &wndw->wimm);
if (ret) { if (ret) {
NV_ERROR(drm, "wimm%04x allocation failed: %d\n", oclass, ret); NV_ERROR(drm, "wimm%04x allocation failed: %d\n", oclass, ret);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment