All of lore.kernel.org
 help / color / mirror / Atom feed
* Some minor bugfixes
@ 2011-10-28  9:14 Christian König
  2011-10-28  9:14 ` [PATCH 1/3] drm/radeon: fix debugfs handling Christian König
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Christian König @ 2011-10-28  9:14 UTC (permalink / raw)
  To: dri-devel

The following three patches are just minor bug fixes.

I've send them to the list previously, but this time they are based upon drm-next instead of drm-fixes and I also fixed some spelling mistakes in the commit messages.

Please commit. Thanks,
Christian.

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

* [PATCH 1/3] drm/radeon: fix debugfs handling
  2011-10-28  9:14 Some minor bugfixes Christian König
@ 2011-10-28  9:14 ` Christian König
  2011-10-28  9:14 ` [PATCH 2/3] drm/radeon: no need to check all relocs for duplicates Christian König
  2011-10-28  9:14 ` [PATCH 3/3] drm/radeon: fix a spelling mistake Christian König
  2 siblings, 0 replies; 7+ messages in thread
From: Christian König @ 2011-10-28  9:14 UTC (permalink / raw)
  To: dri-devel; +Cc: Christian König

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@vodafone.de>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
---
 drivers/gpu/drm/radeon/radeon.h        |    8 ++++++++
 drivers/gpu/drm/radeon/radeon_device.c |   26 ++++++++++----------------
 2 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index e3170c7..ede1b1b 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -879,6 +879,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);
@@ -1241,6 +1246,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_COMPONENTS];
+	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 c33bc91..d50fa60 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -978,36 +978,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_COMPONENTS];
-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;
 		}
 	}
 
-	i = _radeon_debugfs_count + 1;
+	i = rdev->debugfs_count + 1;
 	if (i > RADEON_DEBUGFS_MAX_COMPONENTS) {
 		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 = i;
+	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,
@@ -1027,11 +1020,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

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* [PATCH 2/3] drm/radeon: no need to check all relocs for duplicates
  2011-10-28  9:14 Some minor bugfixes Christian König
  2011-10-28  9:14 ` [PATCH 1/3] drm/radeon: fix debugfs handling Christian König
@ 2011-10-28  9:14 ` Christian König
  2011-10-28 14:15   ` Alex Deucher
  2011-10-28  9:14 ` [PATCH 3/3] drm/radeon: fix a spelling mistake Christian König
  2 siblings, 1 reply; 7+ messages in thread
From: Christian König @ 2011-10-28  9:14 UTC (permalink / raw)
  To: dri-devel; +Cc: Christian König

Only check the previously checked relocs for
duplicates. Also leaving the handle uninitialized
isn't such a good idea.

Signed-off-by: Christian König <deathsimple@vodafone.de>
---
 drivers/gpu/drm/radeon/radeon_cs.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c
index fae00c0..7b6e98a 100644
--- a/drivers/gpu/drm/radeon/radeon_cs.c
+++ b/drivers/gpu/drm/radeon/radeon_cs.c
@@ -58,7 +58,7 @@ int radeon_cs_parser_relocs(struct radeon_cs_parser *p)
 
 		duplicate = false;
 		r = (struct drm_radeon_cs_reloc *)&chunk->kdata[i*4];
-		for (j = 0; j < p->nrelocs; j++) {
+		for (j = 0; j < i; j++) {
 			if (r->handle == p->relocs[j].handle) {
 				p->relocs_ptr[i] = &p->relocs[j];
 				duplicate = true;
@@ -84,7 +84,8 @@ int radeon_cs_parser_relocs(struct radeon_cs_parser *p)
 			p->relocs[i].flags = r->flags;
 			radeon_bo_list_add_object(&p->relocs[i].lobj,
 						  &p->validated);
-		}
+		} else
+			p->relocs[i].handle = 0;
 	}
 	return radeon_bo_list_validate(&p->validated);
 }
-- 
1.7.5.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* [PATCH 3/3] drm/radeon: fix a spelling mistake
  2011-10-28  9:14 Some minor bugfixes Christian König
  2011-10-28  9:14 ` [PATCH 1/3] drm/radeon: fix debugfs handling Christian König
  2011-10-28  9:14 ` [PATCH 2/3] drm/radeon: no need to check all relocs for duplicates Christian König
@ 2011-10-28  9:14 ` Christian König
  2 siblings, 0 replies; 7+ messages in thread
From: Christian König @ 2011-10-28  9:14 UTC (permalink / raw)
  To: dri-devel; +Cc: Christian König

Better fix it before this obvious typo spreads even more.

Signed-off-by: Christian König <deathsimple@vodafone.de>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
---
 drivers/gpu/drm/radeon/radeon.h       |    4 +-
 drivers/gpu/drm/radeon/radeon_fence.c |   34 ++++++++++++++++----------------
 drivers/gpu/drm/radeon/radeon_pm.c    |    4 +-
 drivers/gpu/drm/radeon/radeon_ring.c  |    2 +-
 4 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index ede1b1b..2fda4ae 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -198,7 +198,7 @@ struct radeon_fence_driver {
 	wait_queue_head_t		queue;
 	rwlock_t			lock;
 	struct list_head		created;
-	struct list_head		emited;
+	struct list_head		emitted;
 	struct list_head		signaled;
 	bool				initialized;
 };
@@ -209,7 +209,7 @@ struct radeon_fence {
 	struct list_head		list;
 	/* protected by radeon_fence.lock */
 	uint32_t			seq;
-	bool				emited;
+	bool				emitted;
 	bool				signaled;
 };
 
diff --git a/drivers/gpu/drm/radeon/radeon_fence.c b/drivers/gpu/drm/radeon/radeon_fence.c
index a488b50..711bd6e 100644
--- a/drivers/gpu/drm/radeon/radeon_fence.c
+++ b/drivers/gpu/drm/radeon/radeon_fence.c
@@ -74,7 +74,7 @@ int radeon_fence_emit(struct radeon_device *rdev, struct radeon_fence *fence)
 	unsigned long irq_flags;
 
 	write_lock_irqsave(&rdev->fence_drv.lock, irq_flags);
-	if (fence->emited) {
+	if (fence->emitted) {
 		write_unlock_irqrestore(&rdev->fence_drv.lock, irq_flags);
 		return 0;
 	}
@@ -88,8 +88,8 @@ int radeon_fence_emit(struct radeon_device *rdev, struct radeon_fence *fence)
 		radeon_fence_ring_emit(rdev, fence);
 
 	trace_radeon_fence_emit(rdev->ddev, fence->seq);
-	fence->emited = true;
-	list_move_tail(&fence->list, &rdev->fence_drv.emited);
+	fence->emitted = true;
+	list_move_tail(&fence->list, &rdev->fence_drv.emitted);
 	write_unlock_irqrestore(&rdev->fence_drv.lock, irq_flags);
 	return 0;
 }
@@ -129,7 +129,7 @@ static bool radeon_fence_poll_locked(struct radeon_device *rdev)
 		return false;
 	}
 	n = NULL;
-	list_for_each(i, &rdev->fence_drv.emited) {
+	list_for_each(i, &rdev->fence_drv.emitted) {
 		fence = list_entry(i, struct radeon_fence, list);
 		if (fence->seq == seq) {
 			n = i;
@@ -145,7 +145,7 @@ static bool radeon_fence_poll_locked(struct radeon_device *rdev)
 			fence = list_entry(i, struct radeon_fence, list);
 			fence->signaled = true;
 			i = n;
-		} while (i != &rdev->fence_drv.emited);
+		} while (i != &rdev->fence_drv.emitted);
 		wake = true;
 	}
 	return wake;
@@ -159,7 +159,7 @@ static void radeon_fence_destroy(struct kref *kref)
 	fence = container_of(kref, struct radeon_fence, kref);
 	write_lock_irqsave(&fence->rdev->fence_drv.lock, irq_flags);
 	list_del(&fence->list);
-	fence->emited = false;
+	fence->emitted = false;
 	write_unlock_irqrestore(&fence->rdev->fence_drv.lock, irq_flags);
 	kfree(fence);
 }
@@ -174,7 +174,7 @@ int radeon_fence_create(struct radeon_device *rdev, struct radeon_fence **fence)
 	}
 	kref_init(&((*fence)->kref));
 	(*fence)->rdev = rdev;
-	(*fence)->emited = false;
+	(*fence)->emitted = false;
 	(*fence)->signaled = false;
 	(*fence)->seq = 0;
 	INIT_LIST_HEAD(&(*fence)->list);
@@ -203,8 +203,8 @@ bool radeon_fence_signaled(struct radeon_fence *fence)
 	if (fence->rdev->shutdown) {
 		signaled = true;
 	}
-	if (!fence->emited) {
-		WARN(1, "Querying an unemited fence : %p !\n", fence);
+	if (!fence->emitted) {
+		WARN(1, "Querying an unemitted fence : %p !\n", fence);
 		signaled = true;
 	}
 	if (!signaled) {
@@ -295,11 +295,11 @@ int radeon_fence_wait_next(struct radeon_device *rdev)
 		return 0;
 	}
 	write_lock_irqsave(&rdev->fence_drv.lock, irq_flags);
-	if (list_empty(&rdev->fence_drv.emited)) {
+	if (list_empty(&rdev->fence_drv.emitted)) {
 		write_unlock_irqrestore(&rdev->fence_drv.lock, irq_flags);
 		return 0;
 	}
-	fence = list_entry(rdev->fence_drv.emited.next,
+	fence = list_entry(rdev->fence_drv.emitted.next,
 			   struct radeon_fence, list);
 	radeon_fence_ref(fence);
 	write_unlock_irqrestore(&rdev->fence_drv.lock, irq_flags);
@@ -318,11 +318,11 @@ int radeon_fence_wait_last(struct radeon_device *rdev)
 		return 0;
 	}
 	write_lock_irqsave(&rdev->fence_drv.lock, irq_flags);
-	if (list_empty(&rdev->fence_drv.emited)) {
+	if (list_empty(&rdev->fence_drv.emitted)) {
 		write_unlock_irqrestore(&rdev->fence_drv.lock, irq_flags);
 		return 0;
 	}
-	fence = list_entry(rdev->fence_drv.emited.prev,
+	fence = list_entry(rdev->fence_drv.emitted.prev,
 			   struct radeon_fence, list);
 	radeon_fence_ref(fence);
 	write_unlock_irqrestore(&rdev->fence_drv.lock, irq_flags);
@@ -375,7 +375,7 @@ int radeon_fence_driver_init(struct radeon_device *rdev)
 	radeon_fence_write(rdev, 0);
 	atomic_set(&rdev->fence_drv.seq, 0);
 	INIT_LIST_HEAD(&rdev->fence_drv.created);
-	INIT_LIST_HEAD(&rdev->fence_drv.emited);
+	INIT_LIST_HEAD(&rdev->fence_drv.emitted);
 	INIT_LIST_HEAD(&rdev->fence_drv.signaled);
 	init_waitqueue_head(&rdev->fence_drv.queue);
 	rdev->fence_drv.initialized = true;
@@ -413,10 +413,10 @@ static int radeon_debugfs_fence_info(struct seq_file *m, void *data)
 
 	seq_printf(m, "Last signaled fence 0x%08X\n",
 		   radeon_fence_read(rdev));
-	if (!list_empty(&rdev->fence_drv.emited)) {
-		   fence = list_entry(rdev->fence_drv.emited.prev,
+	if (!list_empty(&rdev->fence_drv.emitted)) {
+		   fence = list_entry(rdev->fence_drv.emitted.prev,
 				      struct radeon_fence, list);
-		   seq_printf(m, "Last emited fence %p with 0x%08X\n",
+		   seq_printf(m, "Last emitted fence %p with 0x%08X\n",
 			      fence,  fence->seq);
 	}
 	return 0;
diff --git a/drivers/gpu/drm/radeon/radeon_pm.c b/drivers/gpu/drm/radeon/radeon_pm.c
index 6fabe89..eca9570 100644
--- a/drivers/gpu/drm/radeon/radeon_pm.c
+++ b/drivers/gpu/drm/radeon/radeon_pm.c
@@ -781,9 +781,9 @@ static void radeon_dynpm_idle_work_handler(struct work_struct *work)
 		int not_processed = 0;
 
 		read_lock_irqsave(&rdev->fence_drv.lock, irq_flags);
-		if (!list_empty(&rdev->fence_drv.emited)) {
+		if (!list_empty(&rdev->fence_drv.emitted)) {
 			struct list_head *ptr;
-			list_for_each(ptr, &rdev->fence_drv.emited) {
+			list_for_each(ptr, &rdev->fence_drv.emitted) {
 				/* count up to 3, that's enought info */
 				if (++not_processed >= 3)
 					break;
diff --git a/drivers/gpu/drm/radeon/radeon_ring.c b/drivers/gpu/drm/radeon/radeon_ring.c
index 49d5820..f3d7d22 100644
--- a/drivers/gpu/drm/radeon/radeon_ring.c
+++ b/drivers/gpu/drm/radeon/radeon_ring.c
@@ -169,7 +169,7 @@ void radeon_ib_free(struct radeon_device *rdev, struct radeon_ib **ib)
 	if (tmp == NULL) {
 		return;
 	}
-	if (!tmp->fence->emited)
+	if (!tmp->fence->emitted)
 		radeon_fence_unref(&tmp->fence);
 	mutex_lock(&rdev->ib_pool.mutex);
 	tmp->free = true;
-- 
1.7.5.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: [PATCH 2/3] drm/radeon: no need to check all relocs for duplicates
  2011-10-28  9:14 ` [PATCH 2/3] drm/radeon: no need to check all relocs for duplicates Christian König
@ 2011-10-28 14:15   ` Alex Deucher
  0 siblings, 0 replies; 7+ messages in thread
From: Alex Deucher @ 2011-10-28 14:15 UTC (permalink / raw)
  To: Christian König; +Cc: dri-devel

2011/10/28 Christian König <deathsimple@vodafone.de>:
> Only check the previously checked relocs for
> duplicates. Also leaving the handle uninitialized
> isn't such a good idea.
>
> Signed-off-by: Christian König <deathsimple@vodafone.de>

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>


> ---
>  drivers/gpu/drm/radeon/radeon_cs.c |    5 +++--
>  1 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c
> index fae00c0..7b6e98a 100644
> --- a/drivers/gpu/drm/radeon/radeon_cs.c
> +++ b/drivers/gpu/drm/radeon/radeon_cs.c
> @@ -58,7 +58,7 @@ int radeon_cs_parser_relocs(struct radeon_cs_parser *p)
>
>                duplicate = false;
>                r = (struct drm_radeon_cs_reloc *)&chunk->kdata[i*4];
> -               for (j = 0; j < p->nrelocs; j++) {
> +               for (j = 0; j < i; j++) {
>                        if (r->handle == p->relocs[j].handle) {
>                                p->relocs_ptr[i] = &p->relocs[j];
>                                duplicate = true;
> @@ -84,7 +84,8 @@ int radeon_cs_parser_relocs(struct radeon_cs_parser *p)
>                        p->relocs[i].flags = r->flags;
>                        radeon_bo_list_add_object(&p->relocs[i].lobj,
>                                                  &p->validated);
> -               }
> +               } else
> +                       p->relocs[i].handle = 0;
>        }
>        return radeon_bo_list_validate(&p->validated);
>  }
> --
> 1.7.5.4
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>

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

* Re: [PATCH 1/3] drm/radeon: fix debugfs handling
  2011-10-25 15:04 [PATCH 1/3] drm/radeon: fix debugfs handling Christian König
@ 2011-10-27 22:39 ` Alex Deucher
  0 siblings, 0 replies; 7+ messages in thread
From: Alex Deucher @ 2011-10-27 22:39 UTC (permalink / raw)
  To: Christian König; +Cc: dri-devel

2011/10/25 Christian König <deathsimple@vodafone.de>:
> 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@vodafone.de>

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

> ---
>  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
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
>

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

* [PATCH 1/3] drm/radeon: fix debugfs handling
@ 2011-10-25 15:04 Christian König
  2011-10-27 22:39 ` Alex Deucher
  0 siblings, 1 reply; 7+ messages in thread
From: Christian König @ 2011-10-25 15:04 UTC (permalink / raw)
  To: dri-devel; +Cc: Christian König

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@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

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

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

end of thread, other threads:[~2011-10-28 14:15 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-10-28  9:14 Some minor bugfixes Christian König
2011-10-28  9:14 ` [PATCH 1/3] drm/radeon: fix debugfs handling Christian König
2011-10-28  9:14 ` [PATCH 2/3] drm/radeon: no need to check all relocs for duplicates Christian König
2011-10-28 14:15   ` Alex Deucher
2011-10-28  9:14 ` [PATCH 3/3] drm/radeon: fix a spelling mistake Christian König
  -- strict thread matches above, loose matches on Subject: below --
2011-10-25 15:04 [PATCH 1/3] drm/radeon: fix debugfs handling Christian König
2011-10-27 22:39 ` Alex Deucher

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.