Having registered debugfs files globally causes
the files to not show up on the second, third
etc.. card in the system.

Signed-off-by: Christian K?nig <deathsimple at vodafone.de>
---
 drivers/gpu/drm/radeon/radeon.h        |    8 +++++++
 drivers/gpu/drm/radeon/radeon_device.c |   33 ++++++++++++++-----------------
 2 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index c1e056b..c052406 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -881,6 +881,11 @@ void radeon_test_moves(struct radeon_device *rdev);
 /*
  * Debugfs
  */
+struct radeon_debugfs {
+        struct drm_info_list    *files;
+        unsigned                num_files;
+};
+
 int radeon_debugfs_add_files(struct radeon_device *rdev,
                             struct drm_info_list *files,
                             unsigned nfiles);
@@ -1243,6 +1248,9 @@ struct radeon_device {
        struct drm_file *cmask_filp;
        /* i2c buses */
        struct radeon_i2c_chan *i2c_bus[RADEON_MAX_I2C_BUS];
+       /* debugfs */
+       struct radeon_debugfs   debugfs[RADEON_DEBUGFS_MAX_NUM_FILES];
+       unsigned                debugfs_count;
 };

 int radeon_device_init(struct radeon_device *rdev,
diff --git a/drivers/gpu/drm/radeon/radeon_device.c 
b/drivers/gpu/drm/radeon/radeon_device.c
index b51e157..13ac46c 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -977,33 +977,29 @@ int radeon_gpu_reset(struct radeon_device *rdev)
 /*
  * Debugfs
  */
-struct radeon_debugfs {
-       struct drm_info_list    *files;
-       unsigned                num_files;
-};
-static struct radeon_debugfs _radeon_debugfs[RADEON_DEBUGFS_MAX_NUM_FILES];
-static unsigned _radeon_debugfs_count = 0;
-
 int radeon_debugfs_add_files(struct radeon_device *rdev,
                             struct drm_info_list *files,
                             unsigned nfiles)
 {
        unsigned i;

-       for (i = 0; i < _radeon_debugfs_count; i++) {
-               if (_radeon_debugfs[i].files == files) {
+       for (i = 0; i < rdev->debugfs_count; i++) {
+               if (rdev->debugfs[i].files == files) {
                        /* Already registered */
                        return 0;
                }
        }
-       if ((_radeon_debugfs_count + nfiles) > RADEON_DEBUGFS_MAX_NUM_FILES) {
-               DRM_ERROR("Reached maximum number of debugfs files.\n");
-               DRM_ERROR("Report so we increase 
RADEON_DEBUGFS_MAX_NUM_FILES.\n");
+
+       i = rdev->debugfs_count + 1;
+       if (i > RADEON_DEBUGFS_MAX_NUM_FILES) {
+               DRM_ERROR("Reached maximum number of debugfs components.\n");
+               DRM_ERROR("Report so we increase "
+                         "RADEON_DEBUGFS_MAX_COMPONENTS.\n");
                return -EINVAL;
        }
-       _radeon_debugfs[_radeon_debugfs_count].files = files;
-       _radeon_debugfs[_radeon_debugfs_count].num_files = nfiles;
-       _radeon_debugfs_count++;
+       rdev->debugfs[rdev->debugfs_count].files = files;
+       rdev->debugfs[rdev->debugfs_count].num_files = nfiles;
+       rdev->debugfs_count = i;
 #if defined(CONFIG_DEBUG_FS)
        drm_debugfs_create_files(files, nfiles,
                                 rdev->ddev->control->debugfs_root,
@@ -1023,11 +1019,12 @@ int radeon_debugfs_init(struct drm_minor *minor)

 void radeon_debugfs_cleanup(struct drm_minor *minor)
 {
+        struct radeon_device *rdev = minor->dev->dev_private;
        unsigned i;

-       for (i = 0; i < _radeon_debugfs_count; i++) {
-               drm_debugfs_remove_files(_radeon_debugfs[i].files,
-                                        _radeon_debugfs[i].num_files, minor);
+       for (i = 0; i < rdev->debugfs_count; i++) {
+               drm_debugfs_remove_files(rdev->debugfs[i].files,
+                                        rdev->debugfs[i].num_files, minor);
        }
 }
 #endif
-- 
1.7.5.4

Reply via email to