Message ID | 20231204225519.358885-1-airlied@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | nouveau/gsp: add three notifier callbacks that we see in normal operation | expand |
On Tue, 2023-12-05 at 08:55 +1000, Dave Airlie wrote: > +static int > +r535_gsp_msg_ucode_libos_print(void *priv, u32 fn, void *repv, u32 repc) > +{ > + /* work out what we should do here. */ > + return 0; > +} This is part of my logrm debugfs patch. It contains the printf log from a PMU exception. Do you want me to research the other two RPCs and tell you exactly what they do? But if you're not planning on actually doing anything with these RPCs, why add callbacks? Doesn't the driver already ignore RPCs it doesn't recognize?
On Tue, 5 Dec 2023 at 09:07, Timur Tabi <ttabi@nvidia.com> wrote: > > On Tue, 2023-12-05 at 08:55 +1000, Dave Airlie wrote: > > +static int > > +r535_gsp_msg_ucode_libos_print(void *priv, u32 fn, void *repv, u32 repc) > > +{ > > + /* work out what we should do here. */ > > + return 0; > > +} > > This is part of my logrm debugfs patch. It contains the printf log from a > PMU exception. > > Do you want me to research the other two RPCs and tell you exactly what they > do? > > But if you're not planning on actually doing anything with these RPCs, why > add callbacks? Doesn't the driver already ignore RPCs it doesn't recognize? The current code prints a message when we get a callback we don't handle, this silences those, but maybe I should just silence them. Dave.
On Tue, 2023-12-05 at 10:01 +1000, Dave Airlie wrote: > The current code prints a message when we get a callback we don't > handle, this silences those, but maybe I should just silence them. How about this: In r535_gsp_msg_recv(): if (ntfy->fn && (ntfy->fn == msg->function)) { ntfy->func(ntfy->priv, ntfy->fn, msg->data, msg->length - sizeof(*msg)); break; } and then in r535_gsp_oneinit(): r535_gsp_msg_ntfy_add(gsp, NV_VGPU_MSG_EVENT_PERF_BRIDGELESS_INFO_UPDATE, NULL, NULL); ...
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c index f6725a5f5bfb..8b368df2e798 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c @@ -1505,6 +1505,26 @@ r535_gsp_msg_run_cpu_sequencer(void *priv, u32 fn, void *repv, u32 repc) return 0; } +static int +r535_gsp_msg_perf_bridgeless_info_update(void *priv, u32 fn, void *repv, u32 repc) +{ + return 0; +} + +static int +r535_gsp_msg_ucode_libos_print(void *priv, u32 fn, void *repv, u32 repc) +{ + /* work out what we should do here. */ + return 0; +} + +static int +r535_gsp_msg_gsp_send_user_shared_data(void *priv, u32 fn, void *repv, u32 repc) +{ + /* this seems to send some sort of assert counts from gsp */ + return 0; +} + static void nvkm_gsp_mem_dtor(struct nvkm_gsp *gsp, struct nvkm_gsp_mem *mem) { @@ -2104,7 +2124,9 @@ r535_gsp_oneinit(struct nvkm_gsp *gsp) r535_gsp_msg_ntfy_add(gsp, NV_VGPU_MSG_EVENT_MMU_FAULT_QUEUED, r535_gsp_msg_mmu_fault_queued, gsp); r535_gsp_msg_ntfy_add(gsp, NV_VGPU_MSG_EVENT_OS_ERROR_LOG, r535_gsp_msg_os_error_log, gsp); - + r535_gsp_msg_ntfy_add(gsp, NV_VGPU_MSG_EVENT_PERF_BRIDGELESS_INFO_UPDATE, r535_gsp_msg_perf_bridgeless_info_update, gsp); + r535_gsp_msg_ntfy_add(gsp, NV_VGPU_MSG_EVENT_UCODE_LIBOS_PRINT, r535_gsp_msg_ucode_libos_print, gsp); + r535_gsp_msg_ntfy_add(gsp, NV_VGPU_MSG_EVENT_GSP_SEND_USER_SHARED_DATA, r535_gsp_msg_gsp_send_user_shared_data, gsp); ret = r535_gsp_rm_boot_ctor(gsp); if (ret) return ret;
These seem to get called, but it doesn't look like we have to care too much at this point. Signed-off-by: Dave Airlie <airlied@redhat.com> --- .../gpu/drm/nouveau/nvkm/subdev/gsp/r535.c | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-)