Commit 60cda665 authored by Ben Skeggs's avatar Ben Skeggs

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

Not sure how this happened, it worked last time I tested it!
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent bdf4424d
......@@ -133,8 +133,14 @@ nvkm_fault_oneinit(struct nvkm_subdev *subdev)
}
}
return nvkm_event_init(&nvkm_fault_ntfy, 1, fault->buffer_nr,
&fault->event);
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 *
......
......@@ -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);
}
......@@ -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 *);
......
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