All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/6] drm/debugfs: Make the debugfs structure more generic
@ 2023-01-30 12:30 Maíra Canal
  2023-01-30 12:30 ` [PATCH v2 1/6] drm/debugfs: Introduce wrapper for debugfs list Maíra Canal
                   ` (5 more replies)
  0 siblings, 6 replies; 13+ messages in thread
From: Maíra Canal @ 2023-01-30 12:30 UTC (permalink / raw)
  To: Daniel Vetter, David Airlie, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, Liviu Dudau, Brian Starkey,
	Noralf Trønnes, Emma Anholt, Melissa Wen, Rodrigo Siqueira,
	Jani Nikula
  Cc: Maíra Canal, André Almeida, dri-devel

This series is the first step to introduce a debugfs structure to KMS objects
and it is inspired by the feedback provided in [1]. Thanks, Jani and Daniel for
all the feedback provided!

This first step is making the current API more generic and preparing it to
receive the KMS objects in the future. Moreover, this will help to avoid
copypasting when expanding the API.

Make the debug structure more generic by:

- Passing the right pointer to the functions as an explicit parameter. So, the
  show function signature should be

      int show(struct seq_file *m, struct drm_device *dev, void *data)

  Note that with this approach, the show callback doesn't need to use the struct
  drm_debugfs_entry anymore.

- Switch the pointer in struct drm_debugfs_entry to void *, so that, in the
  future, the struct drm_debugfs_entry can receive different types of DRM
  objects (struct drm_device, struct drm_connector, struct drm_crtc...).

- Switch the show callback pointer to void * and cast it in the show callback
  wrapper. This way in the future we can create different callback wrappers and
  cast each one to the proper function signature.

- Add a struct wrapper for debugfs_list and debugfs_mutex, and also create
  helpers to init the list, destroy the list, register the list's files and add
  files to the list.

v1 -> v2: https://lore.kernel.org/dri-devel/20230116102815.95063-1-mcanal@igalia.com/T/

- Use forward declaration instead of the header (Jani Nikula).
- Make the struct drm_debugfs_files a pointer in struct drm_device (Jani Nikula).
- Change the parameter order of `drm_debugfs_files_add` (Jani Nikula).
- s/struct drm_debugfs_list/struct drm_debugfs_files (Jani Nikula).

[1] https://lore.kernel.org/dri-devel/20230111173748.752659-1-mcanal@igalia.com/T/

Best Regards,
- Maíra Canal

Maíra Canal (6):
  drm/debugfs: Introduce wrapper for debugfs list
  drm/debugfs: Make drm_device use the struct drm_debugfs_list
  drm/debugfs: Create wrapper to add files to debugfs list
  drm/debugfs: Create wrapper to register debugfs
  drm/debugfs: Make the show callback pass the pointer to the right
    object
  drm/debugfs: Make the struct drm_debugfs_entry independent of DRM
    device

 drivers/gpu/drm/arm/hdlcd_drv.c       |  8 +--
 drivers/gpu/drm/drm_atomic.c          |  4 +-
 drivers/gpu/drm/drm_client.c          |  5 +-
 drivers/gpu/drm/drm_debugfs.c         | 81 +++++++++++++++++----------
 drivers/gpu/drm/drm_drv.c             |  7 ++-
 drivers/gpu/drm/drm_framebuffer.c     |  4 +-
 drivers/gpu/drm/drm_gem_vram_helper.c |  2 +-
 drivers/gpu/drm/drm_internal.h        | 12 ++++
 drivers/gpu/drm/gud/gud_drv.c         |  5 +-
 drivers/gpu/drm/v3d/v3d_debugfs.c     | 16 ++----
 drivers/gpu/drm/vc4/vc4_bo.c          |  4 +-
 drivers/gpu/drm/vc4/vc4_debugfs.c     |  6 +-
 drivers/gpu/drm/vc4/vc4_hdmi.c        |  6 +-
 drivers/gpu/drm/vc4/vc4_hvs.c         |  8 +--
 drivers/gpu/drm/vc4/vc4_v3d.c         |  4 +-
 drivers/gpu/drm/vkms/vkms_drv.c       |  4 +-
 include/drm/drm_debugfs.h             | 34 ++++++++---
 include/drm/drm_device.h              | 12 +---
 18 files changed, 119 insertions(+), 103 deletions(-)

-- 
2.39.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH v2 1/6] drm/debugfs: Introduce wrapper for debugfs list
  2023-01-30 12:30 [PATCH v2 0/6] drm/debugfs: Make the debugfs structure more generic Maíra Canal
@ 2023-01-30 12:30 ` Maíra Canal
  2023-01-30 12:30 ` [PATCH v2 2/6] drm/debugfs: Make drm_device use the struct drm_debugfs_files Maíra Canal
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 13+ messages in thread
From: Maíra Canal @ 2023-01-30 12:30 UTC (permalink / raw)
  To: Daniel Vetter, David Airlie, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, Liviu Dudau, Brian Starkey,
	Noralf Trønnes, Emma Anholt, Melissa Wen, Rodrigo Siqueira,
	Jani Nikula
  Cc: Maíra Canal, André Almeida, dri-devel

Introduce a struct wrapper for all the debugfs-related stuff: the list
of debugfs files and the mutex that protects it. This will make it
easier to initialize all the debugfs list in a DRM object and will
create a good abstraction for a possible implementation of the debugfs
infrastructure for KMS objects.

Signed-off-by: Maíra Canal <mcanal@igalia.com>
---
 drivers/gpu/drm/drm_debugfs.c  | 18 ++++++++++++++++++
 drivers/gpu/drm/drm_internal.h | 12 ++++++++++++
 include/drm/drm_debugfs.h      | 16 ++++++++++++++++
 3 files changed, 46 insertions(+)

diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
index 4f643a490dc3..8658d3929ea5 100644
--- a/drivers/gpu/drm/drm_debugfs.c
+++ b/drivers/gpu/drm/drm_debugfs.c
@@ -218,6 +218,24 @@ void drm_debugfs_create_files(const struct drm_info_list *files, int count,
 }
 EXPORT_SYMBOL(drm_debugfs_create_files);
 
+struct drm_debugfs_files *drm_debugfs_files_init(void)
+{
+	struct drm_debugfs_files *debugfs_files;
+
+	debugfs_files = kzalloc(sizeof(*debugfs_files), GFP_KERNEL);
+
+	INIT_LIST_HEAD(&debugfs_files->list);
+	mutex_init(&debugfs_files->mutex);
+
+	return debugfs_files;
+}
+
+void drm_debugfs_files_destroy(struct drm_debugfs_files *debugfs_files)
+{
+	mutex_destroy(&debugfs_files->mutex);
+	kfree(debugfs_files);
+}
+
 int drm_debugfs_init(struct drm_minor *minor, int minor_id,
 		     struct dentry *root)
 {
diff --git a/drivers/gpu/drm/drm_internal.h b/drivers/gpu/drm/drm_internal.h
index ed2103ee272c..71dd38796d28 100644
--- a/drivers/gpu/drm/drm_internal.h
+++ b/drivers/gpu/drm/drm_internal.h
@@ -23,6 +23,7 @@
 
 #include <linux/kthread.h>
 
+#include <drm/drm_debugfs.h>
 #include <drm/drm_ioctl.h>
 #include <drm/drm_vblank.h>
 
@@ -183,6 +184,8 @@ int drm_gem_dumb_destroy(struct drm_file *file, struct drm_device *dev,
 
 /* drm_debugfs.c drm_debugfs_crc.c */
 #if defined(CONFIG_DEBUG_FS)
+struct drm_debugfs_files *drm_debugfs_files_init(void);
+void drm_debugfs_files_destroy(struct drm_debugfs_files *debugfs_files);
 int drm_debugfs_init(struct drm_minor *minor, int minor_id,
 		     struct dentry *root);
 void drm_debugfs_cleanup(struct drm_minor *minor);
@@ -193,6 +196,15 @@ void drm_debugfs_crtc_add(struct drm_crtc *crtc);
 void drm_debugfs_crtc_remove(struct drm_crtc *crtc);
 void drm_debugfs_crtc_crc_add(struct drm_crtc *crtc);
 #else
+static inline struct drm_debugfs_files *drm_debugfs_list_init(void)
+{
+	return NULL;
+}
+
+static inline void drm_debugfs_list_destroy(struct drm_debugfs_files *debugfs_files)
+{
+}
+
 static inline int drm_debugfs_init(struct drm_minor *minor, int minor_id,
 				   struct dentry *root)
 {
diff --git a/include/drm/drm_debugfs.h b/include/drm/drm_debugfs.h
index 7616f457ce70..423aa3de506a 100644
--- a/include/drm/drm_debugfs.h
+++ b/include/drm/drm_debugfs.h
@@ -32,6 +32,8 @@
 #ifndef _DRM_DEBUGFS_H_
 #define _DRM_DEBUGFS_H_
 
+#include <linux/list.h>
+#include <linux/mutex.h>
 #include <linux/types.h>
 #include <linux/seq_file.h>
 /**
@@ -79,6 +81,20 @@ struct drm_info_node {
 	struct dentry *dent;
 };
 
+/**
+ * struct drm_debugfs_files - Encapsulates the debugfs list and its mutex
+ *
+ * This structure represents the debugfs list of files and is encapsulated
+ * with a mutex to protect the access of the list.
+ */
+struct drm_debugfs_files {
+	/** @list: List of debugfs files to be created by the DRM object. */
+	struct list_head list;
+
+	/** @mutex: Protects &list access. */
+	struct mutex mutex;
+};
+
 /**
  * struct drm_debugfs_info - debugfs info list entry
  *
-- 
2.39.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 2/6] drm/debugfs: Make drm_device use the struct drm_debugfs_files
  2023-01-30 12:30 [PATCH v2 0/6] drm/debugfs: Make the debugfs structure more generic Maíra Canal
  2023-01-30 12:30 ` [PATCH v2 1/6] drm/debugfs: Introduce wrapper for debugfs list Maíra Canal
@ 2023-01-30 12:30 ` Maíra Canal
  2023-01-31 17:15     ` kernel test robot
  2023-01-30 12:30 ` [PATCH v2 3/6] drm/debugfs: Create wrapper to add files to debugfs list Maíra Canal
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 13+ messages in thread
From: Maíra Canal @ 2023-01-30 12:30 UTC (permalink / raw)
  To: Daniel Vetter, David Airlie, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, Liviu Dudau, Brian Starkey,
	Noralf Trønnes, Emma Anholt, Melissa Wen, Rodrigo Siqueira,
	Jani Nikula
  Cc: Maíra Canal, André Almeida, dri-devel

The struct drm_debugfs_files encapsulates all the debugfs-related
objects, so that they can be initialized and destroyed with two helpers.
Therefore, make the struct drm_device use the struct drm_debugfs_files
instead of instantiating the debugfs list and mutex separated.

Signed-off-by: Maíra Canal <mcanal@igalia.com>
---
 drivers/gpu/drm/drm_debugfs.c | 10 +++++-----
 drivers/gpu/drm/drm_drv.c     |  7 ++++---
 include/drm/drm_device.h      | 12 +++---------
 3 files changed, 12 insertions(+), 17 deletions(-)

diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
index 8658d3929ea5..aa83f230c402 100644
--- a/drivers/gpu/drm/drm_debugfs.c
+++ b/drivers/gpu/drm/drm_debugfs.c
@@ -263,7 +263,7 @@ int drm_debugfs_init(struct drm_minor *minor, int minor_id,
 	if (dev->driver->debugfs_init)
 		dev->driver->debugfs_init(minor);
 
-	list_for_each_entry_safe(entry, tmp, &dev->debugfs_list, list) {
+	list_for_each_entry_safe(entry, tmp, &dev->debugfs_files->list, list) {
 		debugfs_create_file(entry->file.name, 0444,
 				    minor->debugfs_root, entry, &drm_debugfs_entry_fops);
 		list_del(&entry->list);
@@ -280,7 +280,7 @@ void drm_debugfs_late_register(struct drm_device *dev)
 	if (!minor)
 		return;
 
-	list_for_each_entry_safe(entry, tmp, &dev->debugfs_list, list) {
+	list_for_each_entry_safe(entry, tmp, &dev->debugfs_files->list, list) {
 		debugfs_create_file(entry->file.name, 0444,
 				    minor->debugfs_root, entry, &drm_debugfs_entry_fops);
 		list_del(&entry->list);
@@ -357,9 +357,9 @@ void drm_debugfs_add_file(struct drm_device *dev, const char *name,
 	entry->file.data = data;
 	entry->dev = dev;
 
-	mutex_lock(&dev->debugfs_mutex);
-	list_add(&entry->list, &dev->debugfs_list);
-	mutex_unlock(&dev->debugfs_mutex);
+	mutex_lock(&dev->debugfs_files->mutex);
+	list_add(&entry->list, &dev->debugfs_files->list);
+	mutex_unlock(&dev->debugfs_files->mutex);
 }
 EXPORT_SYMBOL(drm_debugfs_add_file);
 
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index c6eb8972451a..50812cbe1d81 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -39,6 +39,7 @@
 #include <drm/drm_cache.h>
 #include <drm/drm_client.h>
 #include <drm/drm_color_mgmt.h>
+#include <drm/drm_debugfs.h>
 #include <drm/drm_drv.h>
 #include <drm/drm_file.h>
 #include <drm/drm_managed.h>
@@ -598,7 +599,7 @@ static void drm_dev_init_release(struct drm_device *dev, void *res)
 	mutex_destroy(&dev->clientlist_mutex);
 	mutex_destroy(&dev->filelist_mutex);
 	mutex_destroy(&dev->struct_mutex);
-	mutex_destroy(&dev->debugfs_mutex);
+	drm_debugfs_files_destroy(dev->debugfs_files);
 	drm_legacy_destroy_members(dev);
 }
 
@@ -639,14 +640,14 @@ static int drm_dev_init(struct drm_device *dev,
 	INIT_LIST_HEAD(&dev->filelist_internal);
 	INIT_LIST_HEAD(&dev->clientlist);
 	INIT_LIST_HEAD(&dev->vblank_event_list);
-	INIT_LIST_HEAD(&dev->debugfs_list);
 
 	spin_lock_init(&dev->event_lock);
 	mutex_init(&dev->struct_mutex);
 	mutex_init(&dev->filelist_mutex);
 	mutex_init(&dev->clientlist_mutex);
 	mutex_init(&dev->master_mutex);
-	mutex_init(&dev->debugfs_mutex);
+
+	dev->debugfs_files = drm_debugfs_files_init();
 
 	ret = drmm_add_action_or_reset(dev, drm_dev_init_release, NULL);
 	if (ret)
diff --git a/include/drm/drm_device.h b/include/drm/drm_device.h
index 7cf4afae2e79..77290f4a06ff 100644
--- a/include/drm/drm_device.h
+++ b/include/drm/drm_device.h
@@ -16,6 +16,7 @@ struct drm_vblank_crtc;
 struct drm_vma_offset_manager;
 struct drm_vram_mm;
 struct drm_fb_helper;
+struct drm_debugfs_files;
 
 struct inode;
 
@@ -312,19 +313,12 @@ struct drm_device {
 	struct drm_fb_helper *fb_helper;
 
 	/**
-	 * @debugfs_mutex:
-	 *
-	 * Protects &debugfs_list access.
-	 */
-	struct mutex debugfs_mutex;
-
-	/**
-	 * @debugfs_list:
+	 * @debugfs_files:
 	 *
 	 * List of debugfs files to be created by the DRM device. The files
 	 * must be added during drm_dev_register().
 	 */
-	struct list_head debugfs_list;
+	struct drm_debugfs_files *debugfs_files;
 
 	/* Everything below here is for legacy driver, never use! */
 	/* private: */
-- 
2.39.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 3/6] drm/debugfs: Create wrapper to add files to debugfs list
  2023-01-30 12:30 [PATCH v2 0/6] drm/debugfs: Make the debugfs structure more generic Maíra Canal
  2023-01-30 12:30 ` [PATCH v2 1/6] drm/debugfs: Introduce wrapper for debugfs list Maíra Canal
  2023-01-30 12:30 ` [PATCH v2 2/6] drm/debugfs: Make drm_device use the struct drm_debugfs_files Maíra Canal
@ 2023-01-30 12:30 ` Maíra Canal
  2023-01-30 12:30 ` [PATCH v2 4/6] drm/debugfs: Create wrapper to register debugfs Maíra Canal
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 13+ messages in thread
From: Maíra Canal @ 2023-01-30 12:30 UTC (permalink / raw)
  To: Daniel Vetter, David Airlie, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, Liviu Dudau, Brian Starkey,
	Noralf Trønnes, Emma Anholt, Melissa Wen, Rodrigo Siqueira,
	Jani Nikula
  Cc: Maíra Canal, André Almeida, dri-devel

Create a helper to encapsulate the code that adds a new debugfs file to
a linked list related to a object. Moreover, the helper also provides
more flexibily, as the parameter is a struct drm_debugfs_files.

Signed-off-by: Maíra Canal <mcanal@igalia.com>
---
 drivers/gpu/drm/drm_debugfs.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
index aa83f230c402..0e3f3ffa9f88 100644
--- a/drivers/gpu/drm/drm_debugfs.c
+++ b/drivers/gpu/drm/drm_debugfs.c
@@ -236,6 +236,13 @@ void drm_debugfs_files_destroy(struct drm_debugfs_files *debugfs_files)
 	kfree(debugfs_files);
 }
 
+static void drm_debugfs_files_add(struct drm_debugfs_files *debugfs_files, struct list_head *entry)
+{
+	mutex_lock(&debugfs_files->mutex);
+	list_add(entry, &debugfs_files->list);
+	mutex_unlock(&debugfs_files->mutex);
+}
+
 int drm_debugfs_init(struct drm_minor *minor, int minor_id,
 		     struct dentry *root)
 {
@@ -357,9 +364,7 @@ void drm_debugfs_add_file(struct drm_device *dev, const char *name,
 	entry->file.data = data;
 	entry->dev = dev;
 
-	mutex_lock(&dev->debugfs_files->mutex);
-	list_add(&entry->list, &dev->debugfs_files->list);
-	mutex_unlock(&dev->debugfs_files->mutex);
+	drm_debugfs_files_add(dev->debugfs_files, &entry->list);
 }
 EXPORT_SYMBOL(drm_debugfs_add_file);
 
-- 
2.39.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 4/6] drm/debugfs: Create wrapper to register debugfs
  2023-01-30 12:30 [PATCH v2 0/6] drm/debugfs: Make the debugfs structure more generic Maíra Canal
                   ` (2 preceding siblings ...)
  2023-01-30 12:30 ` [PATCH v2 3/6] drm/debugfs: Create wrapper to add files to debugfs list Maíra Canal
@ 2023-01-30 12:30 ` Maíra Canal
  2023-01-30 12:30 ` [PATCH v2 5/6] drm/debugfs: Make the show callback pass the pointer to the right object Maíra Canal
  2023-01-30 12:30 ` [PATCH v2 6/6] drm/debugfs: Make the struct drm_debugfs_entry independent of DRM device Maíra Canal
  5 siblings, 0 replies; 13+ messages in thread
From: Maíra Canal @ 2023-01-30 12:30 UTC (permalink / raw)
  To: Daniel Vetter, David Airlie, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, Liviu Dudau, Brian Starkey,
	Noralf Trønnes, Emma Anholt, Melissa Wen, Rodrigo Siqueira,
	Jani Nikula
  Cc: Maíra Canal, André Almeida, dri-devel

Create a helper to encapsulate the code that creates a new debugfs files
from a linked list related to an object. Moreover, the helper also
provides more flexibily on the type of the object.

Signed-off-by: Maíra Canal <mcanal@igalia.com>
---
 drivers/gpu/drm/drm_debugfs.c | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
index 0e3f3ffa9f88..b4d2e7dd87f5 100644
--- a/drivers/gpu/drm/drm_debugfs.c
+++ b/drivers/gpu/drm/drm_debugfs.c
@@ -243,11 +243,21 @@ static void drm_debugfs_files_add(struct drm_debugfs_files *debugfs_files, struc
 	mutex_unlock(&debugfs_files->mutex);
 }
 
+static void drm_debugfs_register(struct drm_minor *minor, struct drm_debugfs_files *debugfs_files)
+{
+	struct drm_debugfs_entry *entry, *tmp;
+
+	list_for_each_entry_safe(entry, tmp, &debugfs_files->list, list) {
+		debugfs_create_file(entry->file.name, 0444,
+				    minor->debugfs_root, entry, &drm_debugfs_entry_fops);
+		list_del(&entry->list);
+	}
+}
+
 int drm_debugfs_init(struct drm_minor *minor, int minor_id,
 		     struct dentry *root)
 {
 	struct drm_device *dev = minor->dev;
-	struct drm_debugfs_entry *entry, *tmp;
 	char name[64];
 
 	INIT_LIST_HEAD(&minor->debugfs_list);
@@ -270,11 +280,7 @@ int drm_debugfs_init(struct drm_minor *minor, int minor_id,
 	if (dev->driver->debugfs_init)
 		dev->driver->debugfs_init(minor);
 
-	list_for_each_entry_safe(entry, tmp, &dev->debugfs_files->list, list) {
-		debugfs_create_file(entry->file.name, 0444,
-				    minor->debugfs_root, entry, &drm_debugfs_entry_fops);
-		list_del(&entry->list);
-	}
+	drm_debugfs_register(minor, dev->debugfs_files);
 
 	return 0;
 }
@@ -282,16 +288,11 @@ int drm_debugfs_init(struct drm_minor *minor, int minor_id,
 void drm_debugfs_late_register(struct drm_device *dev)
 {
 	struct drm_minor *minor = dev->primary;
-	struct drm_debugfs_entry *entry, *tmp;
 
 	if (!minor)
 		return;
 
-	list_for_each_entry_safe(entry, tmp, &dev->debugfs_files->list, list) {
-		debugfs_create_file(entry->file.name, 0444,
-				    minor->debugfs_root, entry, &drm_debugfs_entry_fops);
-		list_del(&entry->list);
-	}
+	drm_debugfs_register(minor, dev->debugfs_files);
 }
 
 int drm_debugfs_remove_files(const struct drm_info_list *files, int count,
-- 
2.39.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 5/6] drm/debugfs: Make the show callback pass the pointer to the right object
  2023-01-30 12:30 [PATCH v2 0/6] drm/debugfs: Make the debugfs structure more generic Maíra Canal
                   ` (3 preceding siblings ...)
  2023-01-30 12:30 ` [PATCH v2 4/6] drm/debugfs: Create wrapper to register debugfs Maíra Canal
@ 2023-01-30 12:30 ` Maíra Canal
  2023-01-30 12:30 ` [PATCH v2 6/6] drm/debugfs: Make the struct drm_debugfs_entry independent of DRM device Maíra Canal
  5 siblings, 0 replies; 13+ messages in thread
From: Maíra Canal @ 2023-01-30 12:30 UTC (permalink / raw)
  To: Daniel Vetter, David Airlie, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, Liviu Dudau, Brian Starkey,
	Noralf Trønnes, Emma Anholt, Melissa Wen, Rodrigo Siqueira,
	Jani Nikula
  Cc: Maíra Canal, André Almeida, dri-devel

Currently, the drivers need to access the struct drm_debugfs_entry to
get the proper device on the show callback. There is no need for such
thing, as you can wrap the show callback in order to provide to the
driver the proper parameters: the struct seq_file, the struct drm_device
and the driver-specific data stored in the struct drm_debugfs_info.

Therefore, make the show callback pass the pointer to the right object
in the parameters, which makes the API more type-safe.

Signed-off-by: Maíra Canal <mcanal@igalia.com>
---
 drivers/gpu/drm/arm/hdlcd_drv.c       |  8 ++------
 drivers/gpu/drm/drm_atomic.c          |  4 +---
 drivers/gpu/drm/drm_client.c          |  5 ++---
 drivers/gpu/drm/drm_debugfs.c         | 25 ++++++++++++-------------
 drivers/gpu/drm/drm_framebuffer.c     |  4 +---
 drivers/gpu/drm/drm_gem_vram_helper.c |  2 +-
 drivers/gpu/drm/gud/gud_drv.c         |  5 ++---
 drivers/gpu/drm/v3d/v3d_debugfs.c     | 16 ++++------------
 drivers/gpu/drm/vc4/vc4_bo.c          |  4 +---
 drivers/gpu/drm/vc4/vc4_debugfs.c     |  6 ++----
 drivers/gpu/drm/vc4/vc4_hdmi.c        |  6 ++----
 drivers/gpu/drm/vc4/vc4_hvs.c         |  8 ++------
 drivers/gpu/drm/vc4/vc4_v3d.c         |  4 +---
 drivers/gpu/drm/vkms/vkms_drv.c       |  4 +---
 include/drm/drm_debugfs.h             | 14 ++++++++------
 15 files changed, 42 insertions(+), 73 deletions(-)

diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
index e3507dd6f82a..b70bc7b11764 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.c
+++ b/drivers/gpu/drm/arm/hdlcd_drv.c
@@ -193,10 +193,8 @@ static int hdlcd_setup_mode_config(struct drm_device *drm)
 }
 
 #ifdef CONFIG_DEBUG_FS
-static int hdlcd_show_underrun_count(struct seq_file *m, void *arg)
+static int hdlcd_show_underrun_count(struct seq_file *m, struct drm_device *drm, void *arg)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct drm_device *drm = entry->dev;
 	struct hdlcd_drm_private *hdlcd = drm_to_hdlcd_priv(drm);
 
 	seq_printf(m, "underrun : %d\n", atomic_read(&hdlcd->buffer_underrun_count));
@@ -206,10 +204,8 @@ static int hdlcd_show_underrun_count(struct seq_file *m, void *arg)
 	return 0;
 }
 
-static int hdlcd_show_pxlclock(struct seq_file *m, void *arg)
+static int hdlcd_show_pxlclock(struct seq_file *m, struct drm_device *drm, void *arg)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct drm_device *drm = entry->dev;
 	struct hdlcd_drm_private *hdlcd = drm_to_hdlcd_priv(drm);
 	unsigned long clkrate = clk_get_rate(hdlcd->clk);
 	unsigned long mode_clock = hdlcd->crtc.mode.crtc_clock * 1000;
diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index 5457c02ca1ab..38f140481fcc 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -1754,10 +1754,8 @@ void drm_state_dump(struct drm_device *dev, struct drm_printer *p)
 EXPORT_SYMBOL(drm_state_dump);
 
 #ifdef CONFIG_DEBUG_FS
-static int drm_state_info(struct seq_file *m, void *data)
+static int drm_state_info(struct seq_file *m, struct drm_device *dev, void *data)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct drm_device *dev = entry->dev;
 	struct drm_printer p = drm_seq_file_printer(m);
 
 	__drm_state_dump(dev, &p, true);
diff --git a/drivers/gpu/drm/drm_client.c b/drivers/gpu/drm/drm_client.c
index 009e7b10455c..ec2e6bc3515d 100644
--- a/drivers/gpu/drm/drm_client.c
+++ b/drivers/gpu/drm/drm_client.c
@@ -488,10 +488,9 @@ int drm_client_framebuffer_flush(struct drm_client_buffer *buffer, struct drm_re
 EXPORT_SYMBOL(drm_client_framebuffer_flush);
 
 #ifdef CONFIG_DEBUG_FS
-static int drm_client_debugfs_internal_clients(struct seq_file *m, void *data)
+static int drm_client_debugfs_internal_clients(struct seq_file *m, struct drm_device *dev,
+					       void *data)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct drm_device *dev = entry->dev;
 	struct drm_printer p = drm_seq_file_printer(m);
 	struct drm_client_dev *client;
 
diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
index b4d2e7dd87f5..21f01c7d0ab1 100644
--- a/drivers/gpu/drm/drm_debugfs.c
+++ b/drivers/gpu/drm/drm_debugfs.c
@@ -49,10 +49,8 @@
  * Initialization, etc.
  **************************************************/
 
-static int drm_name_info(struct seq_file *m, void *data)
+static int drm_name_info(struct seq_file *m, struct drm_device *dev, void *data)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct drm_device *dev = entry->dev;
 	struct drm_master *master;
 
 	mutex_lock(&dev->master_mutex);
@@ -70,10 +68,8 @@ static int drm_name_info(struct seq_file *m, void *data)
 	return 0;
 }
 
-static int drm_clients_info(struct seq_file *m, void *data)
+static int drm_clients_info(struct seq_file *m, struct drm_device *dev, void *data)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct drm_device *dev = entry->dev;
 	struct drm_file *priv;
 	kuid_t uid;
 
@@ -122,11 +118,8 @@ static int drm_gem_one_name_info(int id, void *ptr, void *data)
 	return 0;
 }
 
-static int drm_gem_name_info(struct seq_file *m, void *data)
+static int drm_gem_name_info(struct seq_file *m, struct drm_device *dev, void *data)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct drm_device *dev = entry->dev;
-
 	seq_printf(m, "  name     size handles refcount\n");
 
 	mutex_lock(&dev->object_name_lock);
@@ -143,6 +136,13 @@ static const struct drm_debugfs_info drm_debugfs_list[] = {
 };
 #define DRM_DEBUGFS_ENTRIES ARRAY_SIZE(drm_debugfs_list)
 
+static int drm_debugfs_dev_show(struct seq_file *m, void *unused)
+{
+	struct drm_debugfs_entry *entry = m->private;
+	int (*show)(struct seq_file *, struct drm_device *, void *) = entry->file.show;
+
+	return show(m, entry->dev, entry->file.data);
+}
 
 static int drm_debugfs_open(struct inode *inode, struct file *file)
 {
@@ -154,9 +154,8 @@ static int drm_debugfs_open(struct inode *inode, struct file *file)
 static int drm_debugfs_entry_open(struct inode *inode, struct file *file)
 {
 	struct drm_debugfs_entry *entry = inode->i_private;
-	struct drm_debugfs_info *node = &entry->file;
 
-	return single_open(file, node->show, entry);
+	return single_open(file, drm_debugfs_dev_show, entry);
 }
 
 static const struct file_operations drm_debugfs_entry_fops = {
@@ -353,7 +352,7 @@ void drm_debugfs_cleanup(struct drm_minor *minor)
  * drm_debugfs_init.
  */
 void drm_debugfs_add_file(struct drm_device *dev, const char *name,
-			  int (*show)(struct seq_file*, void*), void *data)
+			  int (*show)(struct seq_file*, struct drm_device*, void*), void *data)
 {
 	struct drm_debugfs_entry *entry = drmm_kzalloc(dev, sizeof(*entry), GFP_KERNEL);
 
diff --git a/drivers/gpu/drm/drm_framebuffer.c b/drivers/gpu/drm/drm_framebuffer.c
index aff3746dedfb..f01b3cca9e06 100644
--- a/drivers/gpu/drm/drm_framebuffer.c
+++ b/drivers/gpu/drm/drm_framebuffer.c
@@ -1201,10 +1201,8 @@ void drm_framebuffer_print_info(struct drm_printer *p, unsigned int indent,
 }
 
 #ifdef CONFIG_DEBUG_FS
-static int drm_framebuffer_info(struct seq_file *m, void *data)
+static int drm_framebuffer_info(struct seq_file *m, struct drm_device *dev, void *data)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct drm_device *dev = entry->dev;
 	struct drm_printer p = drm_seq_file_printer(m);
 	struct drm_framebuffer *fb;
 
diff --git a/drivers/gpu/drm/drm_gem_vram_helper.c b/drivers/gpu/drm/drm_gem_vram_helper.c
index d40b3edb52d0..8ed02b5cf678 100644
--- a/drivers/gpu/drm/drm_gem_vram_helper.c
+++ b/drivers/gpu/drm/drm_gem_vram_helper.c
@@ -955,7 +955,7 @@ static struct ttm_device_funcs bo_driver = {
  * struct drm_vram_mm
  */
 
-static int drm_vram_mm_debugfs(struct seq_file *m, void *data)
+static int drm_vram_mm_debugfs(struct seq_file *m, struct drm_device *dev, void *data)
 {
 	struct drm_debugfs_entry *entry = m->private;
 	struct drm_vram_mm *vmm = entry->dev->vram_mm;
diff --git a/drivers/gpu/drm/gud/gud_drv.c b/drivers/gpu/drm/gud/gud_drv.c
index 9d7bf8ee45f1..cfd887de599a 100644
--- a/drivers/gpu/drm/gud/gud_drv.c
+++ b/drivers/gpu/drm/gud/gud_drv.c
@@ -323,10 +323,9 @@ static struct drm_gem_object *gud_gem_prime_import(struct drm_device *drm, struc
 	return drm_gem_prime_import_dev(drm, dma_buf, gdrm->dmadev);
 }
 
-static int gud_stats_debugfs(struct seq_file *m, void *data)
+static int gud_stats_debugfs(struct seq_file *m, struct drm_device *dev, void *data)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct gud_device *gdrm = to_gud_device(entry->dev);
+	struct gud_device *gdrm = to_gud_device(dev);
 	char buf[10];
 
 	string_get_size(gdrm->bulk_len, 1, STRING_UNITS_2, buf, sizeof(buf));
diff --git a/drivers/gpu/drm/v3d/v3d_debugfs.c b/drivers/gpu/drm/v3d/v3d_debugfs.c
index 330669f51fa7..a142615f4789 100644
--- a/drivers/gpu/drm/v3d/v3d_debugfs.c
+++ b/drivers/gpu/drm/v3d/v3d_debugfs.c
@@ -77,10 +77,8 @@ static const struct v3d_reg_def v3d_csd_reg_defs[] = {
 	REGDEF(V3D_CSD_CURRENT_CFG6),
 };
 
-static int v3d_v3d_debugfs_regs(struct seq_file *m, void *unused)
+static int v3d_v3d_debugfs_regs(struct seq_file *m, struct drm_device *dev, void *unused)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct drm_device *dev = entry->dev;
 	struct v3d_dev *v3d = to_v3d_dev(dev);
 	int i, core;
 
@@ -124,10 +122,8 @@ static int v3d_v3d_debugfs_regs(struct seq_file *m, void *unused)
 	return 0;
 }
 
-static int v3d_v3d_debugfs_ident(struct seq_file *m, void *unused)
+static int v3d_v3d_debugfs_ident(struct seq_file *m, struct drm_device *dev, void *unused)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct drm_device *dev = entry->dev;
 	struct v3d_dev *v3d = to_v3d_dev(dev);
 	u32 ident0, ident1, ident2, ident3, cores;
 	int core;
@@ -186,10 +182,8 @@ static int v3d_v3d_debugfs_ident(struct seq_file *m, void *unused)
 	return 0;
 }
 
-static int v3d_debugfs_bo_stats(struct seq_file *m, void *unused)
+static int v3d_debugfs_bo_stats(struct seq_file *m, struct drm_device *dev, void *unused)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct drm_device *dev = entry->dev;
 	struct v3d_dev *v3d = to_v3d_dev(dev);
 
 	mutex_lock(&v3d->bo_lock);
@@ -202,10 +196,8 @@ static int v3d_debugfs_bo_stats(struct seq_file *m, void *unused)
 	return 0;
 }
 
-static int v3d_measure_clock(struct seq_file *m, void *unused)
+static int v3d_measure_clock(struct seq_file *m, struct drm_device *dev, void *unused)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct drm_device *dev = entry->dev;
 	struct v3d_dev *v3d = to_v3d_dev(dev);
 	uint32_t cycles;
 	int core = 0;
diff --git a/drivers/gpu/drm/vc4/vc4_bo.c b/drivers/gpu/drm/vc4/vc4_bo.c
index c2b7573bd92b..9083b0184c0f 100644
--- a/drivers/gpu/drm/vc4/vc4_bo.c
+++ b/drivers/gpu/drm/vc4/vc4_bo.c
@@ -67,10 +67,8 @@ static void vc4_bo_stats_print(struct drm_printer *p, struct vc4_dev *vc4)
 	mutex_unlock(&vc4->purgeable.lock);
 }
 
-static int vc4_bo_stats_debugfs(struct seq_file *m, void *unused)
+static int vc4_bo_stats_debugfs(struct seq_file *m, struct drm_device *dev, void *unused)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct drm_device *dev = entry->dev;
 	struct vc4_dev *vc4 = to_vc4_dev(dev);
 	struct drm_printer p = drm_seq_file_printer(m);
 
diff --git a/drivers/gpu/drm/vc4/vc4_debugfs.c b/drivers/gpu/drm/vc4/vc4_debugfs.c
index fac624a663ea..42c5d3c95a3f 100644
--- a/drivers/gpu/drm/vc4/vc4_debugfs.c
+++ b/drivers/gpu/drm/vc4/vc4_debugfs.c
@@ -32,11 +32,9 @@ vc4_debugfs_init(struct drm_minor *minor)
 	}
 }
 
-static int vc4_debugfs_regset32(struct seq_file *m, void *unused)
+static int vc4_debugfs_regset32(struct seq_file *m, struct drm_device *drm, void *data)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct drm_device *drm = entry->dev;
-	struct debugfs_regset32 *regset = entry->file.data;
+	struct debugfs_regset32 *regset = data;
 	struct drm_printer p = drm_seq_file_printer(m);
 	int idx;
 
diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index 14628864487a..5e1e1edc55db 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -158,11 +158,9 @@ static bool vc4_hdmi_is_full_range_rgb(struct vc4_hdmi *vc4_hdmi,
 		drm_default_rgb_quant_range(mode) == HDMI_QUANTIZATION_RANGE_FULL;
 }
 
-static int vc4_hdmi_debugfs_regs(struct seq_file *m, void *unused)
+static int vc4_hdmi_debugfs_regs(struct seq_file *m, struct drm_device *drm, void *data)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct vc4_hdmi *vc4_hdmi = entry->file.data;
-	struct drm_device *drm = vc4_hdmi->connector.dev;
+	struct vc4_hdmi *vc4_hdmi = data;
 	struct drm_printer p = drm_seq_file_printer(m);
 	int idx;
 
diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c
index 4da66ef96783..8c37b5c3cb05 100644
--- a/drivers/gpu/drm/vc4/vc4_hvs.c
+++ b/drivers/gpu/drm/vc4/vc4_hvs.c
@@ -91,10 +91,8 @@ void vc4_hvs_dump_state(struct vc4_hvs *hvs)
 	drm_dev_exit(idx);
 }
 
-static int vc4_hvs_debugfs_underrun(struct seq_file *m, void *data)
+static int vc4_hvs_debugfs_underrun(struct seq_file *m, struct drm_device *dev, void *data)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct drm_device *dev = entry->dev;
 	struct vc4_dev *vc4 = to_vc4_dev(dev);
 	struct drm_printer p = drm_seq_file_printer(m);
 
@@ -103,10 +101,8 @@ static int vc4_hvs_debugfs_underrun(struct seq_file *m, void *data)
 	return 0;
 }
 
-static int vc4_hvs_debugfs_dlist(struct seq_file *m, void *data)
+static int vc4_hvs_debugfs_dlist(struct seq_file *m, struct drm_device *dev, void *data)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct drm_device *dev = entry->dev;
 	struct vc4_dev *vc4 = to_vc4_dev(dev);
 	struct vc4_hvs *hvs = vc4->hvs;
 	struct drm_printer p = drm_seq_file_printer(m);
diff --git a/drivers/gpu/drm/vc4/vc4_v3d.c b/drivers/gpu/drm/vc4/vc4_v3d.c
index 29a664c8bf44..49eb48a270db 100644
--- a/drivers/gpu/drm/vc4/vc4_v3d.c
+++ b/drivers/gpu/drm/vc4/vc4_v3d.c
@@ -94,10 +94,8 @@ static const struct debugfs_reg32 v3d_regs[] = {
 	VC4_REG32(V3D_ERRSTAT),
 };
 
-static int vc4_v3d_debugfs_ident(struct seq_file *m, void *unused)
+static int vc4_v3d_debugfs_ident(struct seq_file *m, struct drm_device *dev, void *unused)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct drm_device *dev = entry->dev;
 	struct vc4_dev *vc4 = to_vc4_dev(dev);
 	int ret = vc4_v3d_pm_get(vc4);
 
diff --git a/drivers/gpu/drm/vkms/vkms_drv.c b/drivers/gpu/drm/vkms/vkms_drv.c
index 6d3a2d57d992..dde6a500f3b1 100644
--- a/drivers/gpu/drm/vkms/vkms_drv.c
+++ b/drivers/gpu/drm/vkms/vkms_drv.c
@@ -90,10 +90,8 @@ static void vkms_atomic_commit_tail(struct drm_atomic_state *old_state)
 	drm_atomic_helper_cleanup_planes(dev, old_state);
 }
 
-static int vkms_config_show(struct seq_file *m, void *data)
+static int vkms_config_show(struct seq_file *m, struct drm_device *dev, void *data)
 {
-	struct drm_debugfs_entry *entry = m->private;
-	struct drm_device *dev = entry->dev;
 	struct vkms_device *vkmsdev = drm_device_to_vkms_device(dev);
 
 	seq_printf(m, "writeback=%d\n", vkmsdev->config->writeback);
diff --git a/include/drm/drm_debugfs.h b/include/drm/drm_debugfs.h
index 423aa3de506a..0fb7ad5f6893 100644
--- a/include/drm/drm_debugfs.h
+++ b/include/drm/drm_debugfs.h
@@ -36,6 +36,9 @@
 #include <linux/mutex.h>
 #include <linux/types.h>
 #include <linux/seq_file.h>
+
+struct drm_device;
+
 /**
  * struct drm_info_list - debugfs info list entry
  *
@@ -108,11 +111,10 @@ struct drm_debugfs_info {
 	/**
 	 * @show:
 	 *
-	 * Show callback. &seq_file->private will be set to the &struct
-	 * drm_debugfs_entry corresponding to the instance of this info
-	 * on a given &struct drm_device.
+	 * Show callback. This callback will be casted in order to provide
+	 * the &seq_file, the DRM object and the data stored in this struct.
 	 */
-	int (*show)(struct seq_file*, void*);
+	void *show;
 
 	/** @driver_features: Required driver features for this entry. */
 	u32 driver_features;
@@ -146,7 +148,7 @@ int drm_debugfs_remove_files(const struct drm_info_list *files,
 			     int count, struct drm_minor *minor);
 
 void drm_debugfs_add_file(struct drm_device *dev, const char *name,
-			  int (*show)(struct seq_file*, void*), void *data);
+			  int (*show)(struct seq_file*, struct drm_device*, void*), void *data);
 
 void drm_debugfs_add_files(struct drm_device *dev,
 			   const struct drm_debugfs_info *files, int count);
@@ -163,7 +165,7 @@ static inline int drm_debugfs_remove_files(const struct drm_info_list *files,
 }
 
 static inline void drm_debugfs_add_file(struct drm_device *dev, const char *name,
-					int (*show)(struct seq_file*, void*),
+					int (*show)(struct seq_file*, struct drm_device*, void*),
 					void *data)
 {}
 
-- 
2.39.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH v2 6/6] drm/debugfs: Make the struct drm_debugfs_entry independent of DRM device
  2023-01-30 12:30 [PATCH v2 0/6] drm/debugfs: Make the debugfs structure more generic Maíra Canal
                   ` (4 preceding siblings ...)
  2023-01-30 12:30 ` [PATCH v2 5/6] drm/debugfs: Make the show callback pass the pointer to the right object Maíra Canal
@ 2023-01-30 12:30 ` Maíra Canal
  2023-01-30 19:32     ` kernel test robot
  2023-01-30 20:03     ` kernel test robot
  5 siblings, 2 replies; 13+ messages in thread
From: Maíra Canal @ 2023-01-30 12:30 UTC (permalink / raw)
  To: Daniel Vetter, David Airlie, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, Liviu Dudau, Brian Starkey,
	Noralf Trønnes, Emma Anholt, Melissa Wen, Rodrigo Siqueira,
	Jani Nikula
  Cc: Maíra Canal, André Almeida, dri-devel

In order to turn the API more expansible to other DRM objects, such as
the struct drm_connector, make the struct drm_debugfs_entry hold a void
pointer and cast the void pointer to the struct drm_device when needed.

Signed-off-by: Maíra Canal <mcanal@igalia.com>
---
 drivers/gpu/drm/drm_debugfs.c | 4 ++--
 include/drm/drm_debugfs.h     | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/drm_debugfs.c b/drivers/gpu/drm/drm_debugfs.c
index 21f01c7d0ab1..f12c3fdf61bb 100644
--- a/drivers/gpu/drm/drm_debugfs.c
+++ b/drivers/gpu/drm/drm_debugfs.c
@@ -141,7 +141,7 @@ static int drm_debugfs_dev_show(struct seq_file *m, void *unused)
 	struct drm_debugfs_entry *entry = m->private;
 	int (*show)(struct seq_file *, struct drm_device *, void *) = entry->file.show;
 
-	return show(m, entry->dev, entry->file.data);
+	return show(m, entry->object, entry->file.data);
 }
 
 static int drm_debugfs_open(struct inode *inode, struct file *file)
@@ -362,7 +362,7 @@ void drm_debugfs_add_file(struct drm_device *dev, const char *name,
 	entry->file.name = name;
 	entry->file.show = show;
 	entry->file.data = data;
-	entry->dev = dev;
+	entry->object = dev;
 
 	drm_debugfs_files_add(dev->debugfs_files, &entry->list);
 }
diff --git a/include/drm/drm_debugfs.h b/include/drm/drm_debugfs.h
index 0fb7ad5f6893..4ab0557f55e0 100644
--- a/include/drm/drm_debugfs.h
+++ b/include/drm/drm_debugfs.h
@@ -130,8 +130,8 @@ struct drm_debugfs_info {
  * drm_debugfs_info on a &struct drm_device.
  */
 struct drm_debugfs_entry {
-	/** @dev: &struct drm_device for this node. */
-	struct drm_device *dev;
+	/** @object: The DRM object that owns this node. */
+	void *object;
 
 	/** @file: Template for this node. */
 	struct drm_debugfs_info file;
-- 
2.39.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 6/6] drm/debugfs: Make the struct drm_debugfs_entry independent of DRM device
  2023-01-30 12:30 ` [PATCH v2 6/6] drm/debugfs: Make the struct drm_debugfs_entry independent of DRM device Maíra Canal
@ 2023-01-30 19:32     ` kernel test robot
  2023-01-30 20:03     ` kernel test robot
  1 sibling, 0 replies; 13+ messages in thread
From: kernel test robot @ 2023-01-30 19:32 UTC (permalink / raw)
  To: Maíra Canal, Daniel Vetter, David Airlie, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann, Liviu Dudau, Brian Starkey,
	Noralf Trønnes, Emma Anholt, Melissa Wen, Rodrigo Siqueira,
	Jani Nikula
  Cc: llvm, oe-kbuild-all, Maíra Canal, André Almeida, dri-devel

Hi Maíra,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on drm-intel/for-linux-next drm-tip/drm-tip]
[cannot apply to drm-intel/for-linux-next-fixes linus/master v6.2-rc6]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Ma-ra-Canal/drm-debugfs-Introduce-wrapper-for-debugfs-list/20230130-203549
base:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link:    https://lore.kernel.org/r/20230130123008.287141-7-mcanal%40igalia.com
patch subject: [PATCH v2 6/6] drm/debugfs: Make the struct drm_debugfs_entry independent of DRM device
config: x86_64-rhel-8.3-rust (https://download.01.org/0day-ci/archive/20230131/202301310356.XzCDAfmm-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/2b098c9687b25368fa4a9e128963a13723aace67
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Ma-ra-Canal/drm-debugfs-Introduce-wrapper-for-debugfs-list/20230130-203549
        git checkout 2b098c9687b25368fa4a9e128963a13723aace67
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/gpu/drm/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> drivers/gpu/drm/drm_gem_vram_helper.c:961:35: error: no member named 'dev' in 'struct drm_debugfs_entry'
           struct drm_vram_mm *vmm = entry->dev->vram_mm;
                                     ~~~~~  ^
   1 error generated.


vim +961 drivers/gpu/drm/drm_gem_vram_helper.c

6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  953  
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  954  /*
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  955   * struct drm_vram_mm
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  956   */
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  957  
6454c853ce9fa83 Maíra Canal       2023-01-30  958  static int drm_vram_mm_debugfs(struct seq_file *m, struct drm_device *dev, void *data)
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  959  {
6fd80729f14e3f7 Maíra Canal       2022-12-19  960  	struct drm_debugfs_entry *entry = m->private;
6fd80729f14e3f7 Maíra Canal       2022-12-19 @961  	struct drm_vram_mm *vmm = entry->dev->vram_mm;
9de59bc201496f2 Dave Airlie       2020-08-04  962  	struct ttm_resource_manager *man = ttm_manager_type(&vmm->bdev, TTM_PL_VRAM);
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  963  	struct drm_printer p = drm_seq_file_printer(m);
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  964  
9de59bc201496f2 Dave Airlie       2020-08-04  965  	ttm_resource_manager_debug(man, &p);
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  966  	return 0;
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  967  }
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  968  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 6/6] drm/debugfs: Make the struct drm_debugfs_entry independent of DRM device
@ 2023-01-30 19:32     ` kernel test robot
  0 siblings, 0 replies; 13+ messages in thread
From: kernel test robot @ 2023-01-30 19:32 UTC (permalink / raw)
  To: Maíra Canal, Daniel Vetter, David Airlie, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann, Liviu Dudau, Brian Starkey,
	Noralf Trønnes, Emma Anholt, Melissa Wen, Rodrigo Siqueira,
	Jani Nikula
  Cc: Maíra Canal, llvm, André Almeida, dri-devel, oe-kbuild-all

Hi Maíra,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on drm-intel/for-linux-next drm-tip/drm-tip]
[cannot apply to drm-intel/for-linux-next-fixes linus/master v6.2-rc6]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Ma-ra-Canal/drm-debugfs-Introduce-wrapper-for-debugfs-list/20230130-203549
base:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link:    https://lore.kernel.org/r/20230130123008.287141-7-mcanal%40igalia.com
patch subject: [PATCH v2 6/6] drm/debugfs: Make the struct drm_debugfs_entry independent of DRM device
config: x86_64-rhel-8.3-rust (https://download.01.org/0day-ci/archive/20230131/202301310356.XzCDAfmm-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/2b098c9687b25368fa4a9e128963a13723aace67
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Ma-ra-Canal/drm-debugfs-Introduce-wrapper-for-debugfs-list/20230130-203549
        git checkout 2b098c9687b25368fa4a9e128963a13723aace67
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/gpu/drm/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> drivers/gpu/drm/drm_gem_vram_helper.c:961:35: error: no member named 'dev' in 'struct drm_debugfs_entry'
           struct drm_vram_mm *vmm = entry->dev->vram_mm;
                                     ~~~~~  ^
   1 error generated.


vim +961 drivers/gpu/drm/drm_gem_vram_helper.c

6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  953  
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  954  /*
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  955   * struct drm_vram_mm
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  956   */
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  957  
6454c853ce9fa83 Maíra Canal       2023-01-30  958  static int drm_vram_mm_debugfs(struct seq_file *m, struct drm_device *dev, void *data)
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  959  {
6fd80729f14e3f7 Maíra Canal       2022-12-19  960  	struct drm_debugfs_entry *entry = m->private;
6fd80729f14e3f7 Maíra Canal       2022-12-19 @961  	struct drm_vram_mm *vmm = entry->dev->vram_mm;
9de59bc201496f2 Dave Airlie       2020-08-04  962  	struct ttm_resource_manager *man = ttm_manager_type(&vmm->bdev, TTM_PL_VRAM);
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  963  	struct drm_printer p = drm_seq_file_printer(m);
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  964  
9de59bc201496f2 Dave Airlie       2020-08-04  965  	ttm_resource_manager_debug(man, &p);
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  966  	return 0;
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  967  }
6b5ce4a1fb84898 Thomas Zimmermann 2019-09-11  968  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 6/6] drm/debugfs: Make the struct drm_debugfs_entry independent of DRM device
  2023-01-30 12:30 ` [PATCH v2 6/6] drm/debugfs: Make the struct drm_debugfs_entry independent of DRM device Maíra Canal
@ 2023-01-30 20:03     ` kernel test robot
  2023-01-30 20:03     ` kernel test robot
  1 sibling, 0 replies; 13+ messages in thread
From: kernel test robot @ 2023-01-30 20:03 UTC (permalink / raw)
  To: Maíra Canal, Daniel Vetter, David Airlie, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann, Liviu Dudau, Brian Starkey,
	Noralf Trønnes, Emma Anholt, Melissa Wen, Rodrigo Siqueira,
	Jani Nikula
  Cc: oe-kbuild-all, Maíra Canal, André Almeida, dri-devel

Hi Maíra,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on drm-intel/for-linux-next drm-tip/drm-tip next-20230130]
[cannot apply to drm-intel/for-linux-next-fixes linus/master v6.2-rc6]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Ma-ra-Canal/drm-debugfs-Introduce-wrapper-for-debugfs-list/20230130-203549
base:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link:    https://lore.kernel.org/r/20230130123008.287141-7-mcanal%40igalia.com
patch subject: [PATCH v2 6/6] drm/debugfs: Make the struct drm_debugfs_entry independent of DRM device
config: x86_64-rhel-8.3-kselftests (https://download.01.org/0day-ci/archive/20230131/202301310330.jVo5mu9t-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
reproduce (this is a W=1 build):
        # https://github.com/intel-lab-lkp/linux/commit/2b098c9687b25368fa4a9e128963a13723aace67
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Ma-ra-Canal/drm-debugfs-Introduce-wrapper-for-debugfs-list/20230130-203549
        git checkout 2b098c9687b25368fa4a9e128963a13723aace67
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        make W=1 O=build_dir ARCH=x86_64 olddefconfig
        make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/gpu/drm/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/drm_gem_vram_helper.c: In function 'drm_vram_mm_debugfs':
>> drivers/gpu/drm/drm_gem_vram_helper.c:961:40: error: 'struct drm_debugfs_entry' has no member named 'dev'
     961 |         struct drm_vram_mm *vmm = entry->dev->vram_mm;
         |                                        ^~


vim +961 drivers/gpu/drm/drm_gem_vram_helper.c

6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  953  
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  954  /*
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  955   * struct drm_vram_mm
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  956   */
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  957  
6454c853ce9fa8 Maíra Canal       2023-01-30  958  static int drm_vram_mm_debugfs(struct seq_file *m, struct drm_device *dev, void *data)
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  959  {
6fd80729f14e3f Maíra Canal       2022-12-19  960  	struct drm_debugfs_entry *entry = m->private;
6fd80729f14e3f Maíra Canal       2022-12-19 @961  	struct drm_vram_mm *vmm = entry->dev->vram_mm;
9de59bc201496f Dave Airlie       2020-08-04  962  	struct ttm_resource_manager *man = ttm_manager_type(&vmm->bdev, TTM_PL_VRAM);
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  963  	struct drm_printer p = drm_seq_file_printer(m);
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  964  
9de59bc201496f Dave Airlie       2020-08-04  965  	ttm_resource_manager_debug(man, &p);
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  966  	return 0;
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  967  }
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  968  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 6/6] drm/debugfs: Make the struct drm_debugfs_entry independent of DRM device
@ 2023-01-30 20:03     ` kernel test robot
  0 siblings, 0 replies; 13+ messages in thread
From: kernel test robot @ 2023-01-30 20:03 UTC (permalink / raw)
  To: Maíra Canal, Daniel Vetter, David Airlie, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann, Liviu Dudau, Brian Starkey,
	Noralf Trønnes, Emma Anholt, Melissa Wen, Rodrigo Siqueira,
	Jani Nikula
  Cc: Maíra Canal, André Almeida, dri-devel, oe-kbuild-all

Hi Maíra,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on drm-intel/for-linux-next drm-tip/drm-tip next-20230130]
[cannot apply to drm-intel/for-linux-next-fixes linus/master v6.2-rc6]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Ma-ra-Canal/drm-debugfs-Introduce-wrapper-for-debugfs-list/20230130-203549
base:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link:    https://lore.kernel.org/r/20230130123008.287141-7-mcanal%40igalia.com
patch subject: [PATCH v2 6/6] drm/debugfs: Make the struct drm_debugfs_entry independent of DRM device
config: x86_64-rhel-8.3-kselftests (https://download.01.org/0day-ci/archive/20230131/202301310330.jVo5mu9t-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
reproduce (this is a W=1 build):
        # https://github.com/intel-lab-lkp/linux/commit/2b098c9687b25368fa4a9e128963a13723aace67
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Ma-ra-Canal/drm-debugfs-Introduce-wrapper-for-debugfs-list/20230130-203549
        git checkout 2b098c9687b25368fa4a9e128963a13723aace67
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        make W=1 O=build_dir ARCH=x86_64 olddefconfig
        make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/gpu/drm/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/gpu/drm/drm_gem_vram_helper.c: In function 'drm_vram_mm_debugfs':
>> drivers/gpu/drm/drm_gem_vram_helper.c:961:40: error: 'struct drm_debugfs_entry' has no member named 'dev'
     961 |         struct drm_vram_mm *vmm = entry->dev->vram_mm;
         |                                        ^~


vim +961 drivers/gpu/drm/drm_gem_vram_helper.c

6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  953  
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  954  /*
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  955   * struct drm_vram_mm
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  956   */
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  957  
6454c853ce9fa8 Maíra Canal       2023-01-30  958  static int drm_vram_mm_debugfs(struct seq_file *m, struct drm_device *dev, void *data)
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  959  {
6fd80729f14e3f Maíra Canal       2022-12-19  960  	struct drm_debugfs_entry *entry = m->private;
6fd80729f14e3f Maíra Canal       2022-12-19 @961  	struct drm_vram_mm *vmm = entry->dev->vram_mm;
9de59bc201496f Dave Airlie       2020-08-04  962  	struct ttm_resource_manager *man = ttm_manager_type(&vmm->bdev, TTM_PL_VRAM);
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  963  	struct drm_printer p = drm_seq_file_printer(m);
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  964  
9de59bc201496f Dave Airlie       2020-08-04  965  	ttm_resource_manager_debug(man, &p);
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  966  	return 0;
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  967  }
6b5ce4a1fb8489 Thomas Zimmermann 2019-09-11  968  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 2/6] drm/debugfs: Make drm_device use the struct drm_debugfs_files
  2023-01-30 12:30 ` [PATCH v2 2/6] drm/debugfs: Make drm_device use the struct drm_debugfs_files Maíra Canal
@ 2023-01-31 17:15     ` kernel test robot
  0 siblings, 0 replies; 13+ messages in thread
From: kernel test robot @ 2023-01-31 17:15 UTC (permalink / raw)
  To: Maíra Canal, Daniel Vetter, David Airlie, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann, Liviu Dudau, Brian Starkey,
	Noralf Trønnes, Emma Anholt, Melissa Wen, Rodrigo Siqueira,
	Jani Nikula
  Cc: Maíra Canal, André Almeida, dri-devel, oe-kbuild-all

Hi Maíra,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on drm-intel/for-linux-next drm-tip/drm-tip next-20230131]
[cannot apply to drm-intel/for-linux-next-fixes linus/master v6.2-rc6]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Ma-ra-Canal/drm-debugfs-Introduce-wrapper-for-debugfs-list/20230130-203549
base:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link:    https://lore.kernel.org/r/20230130123008.287141-3-mcanal%40igalia.com
patch subject: [PATCH v2 2/6] drm/debugfs: Make drm_device use the struct drm_debugfs_files
config: arc-randconfig-r043-20230129 (https://download.01.org/0day-ci/archive/20230201/202302010102.Zlw3VTYI-lkp@intel.com/config)
compiler: arceb-elf-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/776660a442d9112d8fbc06b0b8b0b77852b18fca
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Ma-ra-Canal/drm-debugfs-Introduce-wrapper-for-debugfs-list/20230130-203549
        git checkout 776660a442d9112d8fbc06b0b8b0b77852b18fca
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arc olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arc SHELL=/bin/bash drivers/gpu/drm/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>

All error/warnings (new ones prefixed by >>):

   drivers/gpu/drm/drm_drv.c: In function 'drm_dev_init_release':
>> drivers/gpu/drm/drm_drv.c:602:9: error: implicit declaration of function 'drm_debugfs_files_destroy'; did you mean 'drm_debugfs_list_destroy'? [-Werror=implicit-function-declaration]
     602 |         drm_debugfs_files_destroy(dev->debugfs_files);
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~
         |         drm_debugfs_list_destroy
   drivers/gpu/drm/drm_drv.c: In function 'drm_dev_init':
>> drivers/gpu/drm/drm_drv.c:650:30: error: implicit declaration of function 'drm_debugfs_files_init'; did you mean 'drm_debugfs_list_init'? [-Werror=implicit-function-declaration]
     650 |         dev->debugfs_files = drm_debugfs_files_init();
         |                              ^~~~~~~~~~~~~~~~~~~~~~
         |                              drm_debugfs_list_init
>> drivers/gpu/drm/drm_drv.c:650:28: warning: assignment to 'struct drm_debugfs_files *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
     650 |         dev->debugfs_files = drm_debugfs_files_init();
         |                            ^
   cc1: some warnings being treated as errors


vim +602 drivers/gpu/drm/drm_drv.c

   562	
   563	/**
   564	 * DOC: component helper usage recommendations
   565	 *
   566	 * DRM drivers that drive hardware where a logical device consists of a pile of
   567	 * independent hardware blocks are recommended to use the :ref:`component helper
   568	 * library<component>`. For consistency and better options for code reuse the
   569	 * following guidelines apply:
   570	 *
   571	 *  - The entire device initialization procedure should be run from the
   572	 *    &component_master_ops.master_bind callback, starting with
   573	 *    devm_drm_dev_alloc(), then binding all components with
   574	 *    component_bind_all() and finishing with drm_dev_register().
   575	 *
   576	 *  - The opaque pointer passed to all components through component_bind_all()
   577	 *    should point at &struct drm_device of the device instance, not some driver
   578	 *    specific private structure.
   579	 *
   580	 *  - The component helper fills the niche where further standardization of
   581	 *    interfaces is not practical. When there already is, or will be, a
   582	 *    standardized interface like &drm_bridge or &drm_panel, providing its own
   583	 *    functions to find such components at driver load time, like
   584	 *    drm_of_find_panel_or_bridge(), then the component helper should not be
   585	 *    used.
   586	 */
   587	
   588	static void drm_dev_init_release(struct drm_device *dev, void *res)
   589	{
   590		drm_legacy_ctxbitmap_cleanup(dev);
   591		drm_legacy_remove_map_hash(dev);
   592		drm_fs_inode_free(dev->anon_inode);
   593	
   594		put_device(dev->dev);
   595		/* Prevent use-after-free in drm_managed_release when debugging is
   596		 * enabled. Slightly awkward, but can't really be helped. */
   597		dev->dev = NULL;
   598		mutex_destroy(&dev->master_mutex);
   599		mutex_destroy(&dev->clientlist_mutex);
   600		mutex_destroy(&dev->filelist_mutex);
   601		mutex_destroy(&dev->struct_mutex);
 > 602		drm_debugfs_files_destroy(dev->debugfs_files);
   603		drm_legacy_destroy_members(dev);
   604	}
   605	
   606	static int drm_dev_init(struct drm_device *dev,
   607				const struct drm_driver *driver,
   608				struct device *parent)
   609	{
   610		struct inode *inode;
   611		int ret;
   612	
   613		if (!drm_core_init_complete) {
   614			DRM_ERROR("DRM core is not initialized\n");
   615			return -ENODEV;
   616		}
   617	
   618		if (WARN_ON(!parent))
   619			return -EINVAL;
   620	
   621		kref_init(&dev->ref);
   622		dev->dev = get_device(parent);
   623		dev->driver = driver;
   624	
   625		INIT_LIST_HEAD(&dev->managed.resources);
   626		spin_lock_init(&dev->managed.lock);
   627	
   628		/* no per-device feature limits by default */
   629		dev->driver_features = ~0u;
   630	
   631		if (drm_core_check_feature(dev, DRIVER_COMPUTE_ACCEL) &&
   632					(drm_core_check_feature(dev, DRIVER_RENDER) ||
   633					drm_core_check_feature(dev, DRIVER_MODESET))) {
   634			DRM_ERROR("DRM driver can't be both a compute acceleration and graphics driver\n");
   635			return -EINVAL;
   636		}
   637	
   638		drm_legacy_init_members(dev);
   639		INIT_LIST_HEAD(&dev->filelist);
   640		INIT_LIST_HEAD(&dev->filelist_internal);
   641		INIT_LIST_HEAD(&dev->clientlist);
   642		INIT_LIST_HEAD(&dev->vblank_event_list);
   643	
   644		spin_lock_init(&dev->event_lock);
   645		mutex_init(&dev->struct_mutex);
   646		mutex_init(&dev->filelist_mutex);
   647		mutex_init(&dev->clientlist_mutex);
   648		mutex_init(&dev->master_mutex);
   649	
 > 650		dev->debugfs_files = drm_debugfs_files_init();
   651	
   652		ret = drmm_add_action_or_reset(dev, drm_dev_init_release, NULL);
   653		if (ret)
   654			return ret;
   655	
   656		inode = drm_fs_inode_new();
   657		if (IS_ERR(inode)) {
   658			ret = PTR_ERR(inode);
   659			DRM_ERROR("Cannot allocate anonymous inode: %d\n", ret);
   660			goto err;
   661		}
   662	
   663		dev->anon_inode = inode;
   664	
   665		if (drm_core_check_feature(dev, DRIVER_COMPUTE_ACCEL)) {
   666			ret = drm_minor_alloc(dev, DRM_MINOR_ACCEL);
   667			if (ret)
   668				goto err;
   669		} else {
   670			if (drm_core_check_feature(dev, DRIVER_RENDER)) {
   671				ret = drm_minor_alloc(dev, DRM_MINOR_RENDER);
   672				if (ret)
   673					goto err;
   674			}
   675	
   676			ret = drm_minor_alloc(dev, DRM_MINOR_PRIMARY);
   677			if (ret)
   678				goto err;
   679		}
   680	
   681		ret = drm_legacy_create_map_hash(dev);
   682		if (ret)
   683			goto err;
   684	
   685		drm_legacy_ctxbitmap_init(dev);
   686	
   687		if (drm_core_check_feature(dev, DRIVER_GEM)) {
   688			ret = drm_gem_init(dev);
   689			if (ret) {
   690				DRM_ERROR("Cannot initialize graphics execution manager (GEM)\n");
   691				goto err;
   692			}
   693		}
   694	
   695		ret = drm_dev_set_unique(dev, dev_name(parent));
   696		if (ret)
   697			goto err;
   698	
   699		return 0;
   700	
   701	err:
   702		drm_managed_release(dev);
   703	
   704		return ret;
   705	}
   706	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH v2 2/6] drm/debugfs: Make drm_device use the struct drm_debugfs_files
@ 2023-01-31 17:15     ` kernel test robot
  0 siblings, 0 replies; 13+ messages in thread
From: kernel test robot @ 2023-01-31 17:15 UTC (permalink / raw)
  To: Maíra Canal, Daniel Vetter, David Airlie, Maarten Lankhorst,
	Maxime Ripard, Thomas Zimmermann, Liviu Dudau, Brian Starkey,
	Noralf Trønnes, Emma Anholt, Melissa Wen, Rodrigo Siqueira,
	Jani Nikula
  Cc: oe-kbuild-all, Maíra Canal, André Almeida, dri-devel

Hi Maíra,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on drm-misc/drm-misc-next]
[also build test ERROR on drm-intel/for-linux-next drm-tip/drm-tip next-20230131]
[cannot apply to drm-intel/for-linux-next-fixes linus/master v6.2-rc6]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Ma-ra-Canal/drm-debugfs-Introduce-wrapper-for-debugfs-list/20230130-203549
base:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link:    https://lore.kernel.org/r/20230130123008.287141-3-mcanal%40igalia.com
patch subject: [PATCH v2 2/6] drm/debugfs: Make drm_device use the struct drm_debugfs_files
config: arc-randconfig-r043-20230129 (https://download.01.org/0day-ci/archive/20230201/202302010102.Zlw3VTYI-lkp@intel.com/config)
compiler: arceb-elf-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/776660a442d9112d8fbc06b0b8b0b77852b18fca
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Ma-ra-Canal/drm-debugfs-Introduce-wrapper-for-debugfs-list/20230130-203549
        git checkout 776660a442d9112d8fbc06b0b8b0b77852b18fca
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arc olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=arc SHELL=/bin/bash drivers/gpu/drm/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>

All error/warnings (new ones prefixed by >>):

   drivers/gpu/drm/drm_drv.c: In function 'drm_dev_init_release':
>> drivers/gpu/drm/drm_drv.c:602:9: error: implicit declaration of function 'drm_debugfs_files_destroy'; did you mean 'drm_debugfs_list_destroy'? [-Werror=implicit-function-declaration]
     602 |         drm_debugfs_files_destroy(dev->debugfs_files);
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~
         |         drm_debugfs_list_destroy
   drivers/gpu/drm/drm_drv.c: In function 'drm_dev_init':
>> drivers/gpu/drm/drm_drv.c:650:30: error: implicit declaration of function 'drm_debugfs_files_init'; did you mean 'drm_debugfs_list_init'? [-Werror=implicit-function-declaration]
     650 |         dev->debugfs_files = drm_debugfs_files_init();
         |                              ^~~~~~~~~~~~~~~~~~~~~~
         |                              drm_debugfs_list_init
>> drivers/gpu/drm/drm_drv.c:650:28: warning: assignment to 'struct drm_debugfs_files *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
     650 |         dev->debugfs_files = drm_debugfs_files_init();
         |                            ^
   cc1: some warnings being treated as errors


vim +602 drivers/gpu/drm/drm_drv.c

   562	
   563	/**
   564	 * DOC: component helper usage recommendations
   565	 *
   566	 * DRM drivers that drive hardware where a logical device consists of a pile of
   567	 * independent hardware blocks are recommended to use the :ref:`component helper
   568	 * library<component>`. For consistency and better options for code reuse the
   569	 * following guidelines apply:
   570	 *
   571	 *  - The entire device initialization procedure should be run from the
   572	 *    &component_master_ops.master_bind callback, starting with
   573	 *    devm_drm_dev_alloc(), then binding all components with
   574	 *    component_bind_all() and finishing with drm_dev_register().
   575	 *
   576	 *  - The opaque pointer passed to all components through component_bind_all()
   577	 *    should point at &struct drm_device of the device instance, not some driver
   578	 *    specific private structure.
   579	 *
   580	 *  - The component helper fills the niche where further standardization of
   581	 *    interfaces is not practical. When there already is, or will be, a
   582	 *    standardized interface like &drm_bridge or &drm_panel, providing its own
   583	 *    functions to find such components at driver load time, like
   584	 *    drm_of_find_panel_or_bridge(), then the component helper should not be
   585	 *    used.
   586	 */
   587	
   588	static void drm_dev_init_release(struct drm_device *dev, void *res)
   589	{
   590		drm_legacy_ctxbitmap_cleanup(dev);
   591		drm_legacy_remove_map_hash(dev);
   592		drm_fs_inode_free(dev->anon_inode);
   593	
   594		put_device(dev->dev);
   595		/* Prevent use-after-free in drm_managed_release when debugging is
   596		 * enabled. Slightly awkward, but can't really be helped. */
   597		dev->dev = NULL;
   598		mutex_destroy(&dev->master_mutex);
   599		mutex_destroy(&dev->clientlist_mutex);
   600		mutex_destroy(&dev->filelist_mutex);
   601		mutex_destroy(&dev->struct_mutex);
 > 602		drm_debugfs_files_destroy(dev->debugfs_files);
   603		drm_legacy_destroy_members(dev);
   604	}
   605	
   606	static int drm_dev_init(struct drm_device *dev,
   607				const struct drm_driver *driver,
   608				struct device *parent)
   609	{
   610		struct inode *inode;
   611		int ret;
   612	
   613		if (!drm_core_init_complete) {
   614			DRM_ERROR("DRM core is not initialized\n");
   615			return -ENODEV;
   616		}
   617	
   618		if (WARN_ON(!parent))
   619			return -EINVAL;
   620	
   621		kref_init(&dev->ref);
   622		dev->dev = get_device(parent);
   623		dev->driver = driver;
   624	
   625		INIT_LIST_HEAD(&dev->managed.resources);
   626		spin_lock_init(&dev->managed.lock);
   627	
   628		/* no per-device feature limits by default */
   629		dev->driver_features = ~0u;
   630	
   631		if (drm_core_check_feature(dev, DRIVER_COMPUTE_ACCEL) &&
   632					(drm_core_check_feature(dev, DRIVER_RENDER) ||
   633					drm_core_check_feature(dev, DRIVER_MODESET))) {
   634			DRM_ERROR("DRM driver can't be both a compute acceleration and graphics driver\n");
   635			return -EINVAL;
   636		}
   637	
   638		drm_legacy_init_members(dev);
   639		INIT_LIST_HEAD(&dev->filelist);
   640		INIT_LIST_HEAD(&dev->filelist_internal);
   641		INIT_LIST_HEAD(&dev->clientlist);
   642		INIT_LIST_HEAD(&dev->vblank_event_list);
   643	
   644		spin_lock_init(&dev->event_lock);
   645		mutex_init(&dev->struct_mutex);
   646		mutex_init(&dev->filelist_mutex);
   647		mutex_init(&dev->clientlist_mutex);
   648		mutex_init(&dev->master_mutex);
   649	
 > 650		dev->debugfs_files = drm_debugfs_files_init();
   651	
   652		ret = drmm_add_action_or_reset(dev, drm_dev_init_release, NULL);
   653		if (ret)
   654			return ret;
   655	
   656		inode = drm_fs_inode_new();
   657		if (IS_ERR(inode)) {
   658			ret = PTR_ERR(inode);
   659			DRM_ERROR("Cannot allocate anonymous inode: %d\n", ret);
   660			goto err;
   661		}
   662	
   663		dev->anon_inode = inode;
   664	
   665		if (drm_core_check_feature(dev, DRIVER_COMPUTE_ACCEL)) {
   666			ret = drm_minor_alloc(dev, DRM_MINOR_ACCEL);
   667			if (ret)
   668				goto err;
   669		} else {
   670			if (drm_core_check_feature(dev, DRIVER_RENDER)) {
   671				ret = drm_minor_alloc(dev, DRM_MINOR_RENDER);
   672				if (ret)
   673					goto err;
   674			}
   675	
   676			ret = drm_minor_alloc(dev, DRM_MINOR_PRIMARY);
   677			if (ret)
   678				goto err;
   679		}
   680	
   681		ret = drm_legacy_create_map_hash(dev);
   682		if (ret)
   683			goto err;
   684	
   685		drm_legacy_ctxbitmap_init(dev);
   686	
   687		if (drm_core_check_feature(dev, DRIVER_GEM)) {
   688			ret = drm_gem_init(dev);
   689			if (ret) {
   690				DRM_ERROR("Cannot initialize graphics execution manager (GEM)\n");
   691				goto err;
   692			}
   693		}
   694	
   695		ret = drm_dev_set_unique(dev, dev_name(parent));
   696		if (ret)
   697			goto err;
   698	
   699		return 0;
   700	
   701	err:
   702		drm_managed_release(dev);
   703	
   704		return ret;
   705	}
   706	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2023-01-31 17:16 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-30 12:30 [PATCH v2 0/6] drm/debugfs: Make the debugfs structure more generic Maíra Canal
2023-01-30 12:30 ` [PATCH v2 1/6] drm/debugfs: Introduce wrapper for debugfs list Maíra Canal
2023-01-30 12:30 ` [PATCH v2 2/6] drm/debugfs: Make drm_device use the struct drm_debugfs_files Maíra Canal
2023-01-31 17:15   ` kernel test robot
2023-01-31 17:15     ` kernel test robot
2023-01-30 12:30 ` [PATCH v2 3/6] drm/debugfs: Create wrapper to add files to debugfs list Maíra Canal
2023-01-30 12:30 ` [PATCH v2 4/6] drm/debugfs: Create wrapper to register debugfs Maíra Canal
2023-01-30 12:30 ` [PATCH v2 5/6] drm/debugfs: Make the show callback pass the pointer to the right object Maíra Canal
2023-01-30 12:30 ` [PATCH v2 6/6] drm/debugfs: Make the struct drm_debugfs_entry independent of DRM device Maíra Canal
2023-01-30 19:32   ` kernel test robot
2023-01-30 19:32     ` kernel test robot
2023-01-30 20:03   ` kernel test robot
2023-01-30 20:03     ` kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.