drm/nouveau/fault/gv100: fix fault buffer initialisation

Not sure how this happened, it worked last time I tested it!

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
Ben Skeggs 2018-06-13 15:33:16 +10:00
parent bdf4424dc3
commit 60cda66572
3 changed files with 19 additions and 13 deletions

View File

@ -133,8 +133,14 @@ nvkm_fault_oneinit(struct nvkm_subdev *subdev)
}
}
return nvkm_event_init(&nvkm_fault_ntfy, 1, fault->buffer_nr,
ret = nvkm_event_init(&nvkm_fault_ntfy, 1, fault->buffer_nr,
&fault->event);
if (ret)
return ret;
if (fault->func->oneinit)
ret = fault->func->oneinit(fault);
return ret;
}
static void *

View File

@ -176,8 +176,17 @@ gv100_fault_init(struct nvkm_fault *fault)
nvkm_notify_get(&fault->nrpfb);
}
static int
gv100_fault_oneinit(struct nvkm_fault *fault)
{
return nvkm_notify_init(&fault->buffer[0]->object, &fault->event,
gv100_fault_ntfy_nrpfb, false, NULL, 0, 0,
&fault->nrpfb);
}
static const struct nvkm_fault_func
gv100_fault = {
.oneinit = gv100_fault_oneinit,
.init = gv100_fault_init,
.fini = gv100_fault_fini,
.intr = gv100_fault_intr,
@ -192,15 +201,5 @@ int
gv100_fault_new(struct nvkm_device *device, int index,
struct nvkm_fault **pfault)
{
struct nvkm_fault *fault;
int ret;
ret = nvkm_fault_new_(&gv100_fault, device, index, &fault);
*pfault = fault;
if (ret)
return ret;
return nvkm_notify_init(&fault->buffer[0]->object, &fault->event,
gv100_fault_ntfy_nrpfb, false, NULL, 0, 0,
&fault->nrpfb);
return nvkm_fault_new_(&gv100_fault, device, index, pfault);
}

View File

@ -20,6 +20,7 @@ int nvkm_fault_new_(const struct nvkm_fault_func *, struct nvkm_device *,
int index, struct nvkm_fault **);
struct nvkm_fault_func {
int (*oneinit)(struct nvkm_fault *);
void (*init)(struct nvkm_fault *);
void (*fini)(struct nvkm_fault *);
void (*intr)(struct nvkm_fault *);