drm/nouveau/flcn: show falcon user in debug output
authorBen Skeggs <bskeggs@redhat.com>
Wed, 1 Jun 2022 10:47:20 +0000 (20:47 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Wed, 9 Nov 2022 00:44:46 +0000 (10:44 +1000)
Displays both owner/user of the falcon (when they differ), and takes
both subdevs' debug levels into account when deciding whether to log
the message.

- runlist debugging will use one of the alternate macros added here

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
drivers/gpu/drm/nouveau/include/nvkm/core/falcon.h
drivers/gpu/drm/nouveau/include/nvkm/core/subdev.h
drivers/gpu/drm/nouveau/nvkm/falcon/qmgr.h

index fd9a3f9a518e8dae1ef0c2272679032b4e60f9dd..d647d8acb15b6cb1917b45e31169c89d3718a2aa 100644 (file)
@@ -21,14 +21,14 @@ void nvkm_falcon_v1_disable(struct nvkm_falcon *);
 void gp102_sec2_flcn_bind_context(struct nvkm_falcon *, struct nvkm_memory *);
 int gp102_sec2_flcn_enable(struct nvkm_falcon *);
 
-#define FLCN_PRINTK(t,f,fmt,a...) do {                               \
-       if ((f)->owner->name != (f)->name)                           \
-               nvkm_##t((f)->owner, "%s: "fmt"\n", (f)->name, ##a); \
-       else                                                         \
-               nvkm_##t((f)->owner, fmt"\n", ##a);                  \
-} while(0)
-#define FLCN_DBG(f,fmt,a...) FLCN_PRINTK(debug, (f), fmt, ##a)
-#define FLCN_ERR(f,fmt,a...) FLCN_PRINTK(error, (f), fmt, ##a)
+#define FLCN_PRINTK(f,l,p,fmt,a...) ({                                                          \
+       if ((f)->owner->name != (f)->name)                                                      \
+               nvkm_printk___((f)->owner, (f)->user, NV_DBG_##l, p, "%s:"fmt, (f)->name, ##a); \
+       else                                                                                    \
+               nvkm_printk___((f)->owner, (f)->user, NV_DBG_##l, p, fmt, ##a);                 \
+})
+#define FLCN_DBG(f,fmt,a...) FLCN_PRINTK((f), DEBUG, info, " "fmt"\n", ##a)
+#define FLCN_ERR(f,fmt,a...) FLCN_PRINTK((f), ERROR, err, " "fmt"\n", ##a)
 
 /**
  * struct nvfw_falcon_msg - header for all messages
index f920a2de17353dfb961fefbb64f6d9e167b95f49..bce6e1ba09ea048f8416abff99888001bfd3bc95 100644 (file)
@@ -70,11 +70,18 @@ int  nvkm_subdev_info(struct nvkm_subdev *, u64, u64 *);
 void nvkm_subdev_intr(struct nvkm_subdev *);
 
 /* subdev logging */
-#define nvkm_printk_(s,l,p,f,a...) do {                                        \
-       const struct nvkm_subdev *_subdev = (s);                               \
-       if (CONFIG_NOUVEAU_DEBUG >= (l) && _subdev->debug >= (l))              \
-               dev_##p(_subdev->device->dev, "%s: "f, _subdev->name, ##a);    \
+#define nvkm_printk_ok(s,u,l)                                                                \
+       ((CONFIG_NOUVEAU_DEBUG >= (l)) && ((s)->debug >= (l) || ((u) && (u)->debug >= (l))))
+#define nvkm_printk___(s,u,l,p,f,a...) do {                                                  \
+       if (nvkm_printk_ok((s), (u), (l))) {                                                 \
+               if ((u) && (u) != (s))                                                       \
+                       dev_##p((s)->device->dev, "%s(%s):"f, (s)->name, (u)->name, ##a);    \
+               else                                                                         \
+                       dev_##p((s)->device->dev, "%s:"f, (s)->name, ##a);                   \
+       }                                                                                    \
 } while(0)
+#define nvkm_printk__(s,l,p,f,a...) nvkm_printk___((s), (s), (l), p, f, ##a)
+#define nvkm_printk_(s,l,p,f,a...) nvkm_printk__((s), (l), p, " "f, ##a)
 #define nvkm_printk(s,l,p,f,a...) nvkm_printk_((s), NV_DBG_##l, p, f, ##a)
 #define nvkm_fatal(s,f,a...) nvkm_printk((s), FATAL,   crit, f, ##a)
 #define nvkm_error(s,f,a...) nvkm_printk((s), ERROR,    err, f, ##a)
index 976cb7b7aa9996a4036a015caff83b2958710588..33564ac906a8b3daed351e725fa8eba33f8f9011 100644 (file)
@@ -82,8 +82,7 @@ struct nvkm_falcon_msgq {
        u32 position;
 };
 
-#define FLCNQ_PRINTK(t,q,f,a...)                                               \
-       FLCN_PRINTK(t, (q)->qmgr->falcon, "%s: "f, (q)->name, ##a)
-#define FLCNQ_DBG(q,f,a...) FLCNQ_PRINTK(debug, (q), f, ##a)
-#define FLCNQ_ERR(q,f,a...) FLCNQ_PRINTK(error, (q), f, ##a)
+#define FLCNQ_PRINTK(q,l,p,f,a...) FLCN_PRINTK((q)->qmgr->falcon, l, p, "%s: "f, (q)->name, ##a)
+#define FLCNQ_DBG(q,f,a...) FLCNQ_PRINTK((q), DEBUG, info, f, ##a)
+#define FLCNQ_ERR(q,f,a...) FLCNQ_PRINTK((q), ERROR, err, f, ##a)
 #endif