diff mbox series

nouveau/gsp: add three notifier callbacks that we see in normal operation

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

Commit Message

Dave Airlie Dec. 4, 2023, 10:55 p.m. UTC
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(-)

Comments

Timur Tabi Dec. 4, 2023, 11:06 p.m. UTC | #1
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?
Dave Airlie Dec. 5, 2023, 12:01 a.m. UTC | #2
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.
Timur Tabi Dec. 5, 2023, 12:06 a.m. UTC | #3
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 mbox series

Patch

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;