All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/3] Use kvmalloc_array for radeon and amdgpu CS chunks
@ 2021-03-03  3:49 Chen Li
  2021-03-03  3:52 ` [PATCH v3 1/3] drm/radeon: Use kvmalloc for " Chen Li
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Chen Li @ 2021-03-03  3:49 UTC (permalink / raw)
  To: amd-gfx; +Cc: Alex Deucher, "Christian König"


When testing kernel with trinity, the kernel turned to tainted in that radeon CS require large memory and order is over MAX_ORDER.

kvmalloc/kvmalloc_array should be used here in that it will fallback to vmalloc if necessary.

Chen Li (3):
  drm/radeon: Use kvmalloc for CS chunks
  drm/amdgpu: Use kvmalloc for CS chunks
  drm/amdgpu: correct DRM_ERROR for kvmalloc_array

Changelog:
  v1->v2:
    * also use kvmalloc in amdgpu
    * fix a DRM_ERROR message for kvmalloc_array.
  v2->v3:
    * add missing kvfree for amdgpu CS

 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 14 +++++++-------
 drivers/gpu/drm/radeon/radeon_cs.c     |  8 ++++----
 2 files changed, 11 insertions(+), 11 deletions(-)

--
2.30.0


_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* [PATCH v3 1/3] drm/radeon: Use kvmalloc for CS chunks
  2021-03-03  3:49 [PATCH v3 0/3] Use kvmalloc_array for radeon and amdgpu CS chunks Chen Li
@ 2021-03-03  3:52 ` Chen Li
  2021-03-03  3:53 ` [PATCH v3 2/3] drm/amdgpu: " Chen Li
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Chen Li @ 2021-03-03  3:52 UTC (permalink / raw)
  To: amd-gfx; +Cc: Alex Deucher, "Christian König"


The number of chunks/chunks_array may be passed in
by userspace and can be large.

Signed-off-by: Chen Li <chenli@uniontech.com>
---
 drivers/gpu/drm/radeon/radeon_cs.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_cs.c b/drivers/gpu/drm/radeon/radeon_cs.c
index 35e937d39b51..fb736ef9f9aa 100644
--- a/drivers/gpu/drm/radeon/radeon_cs.c
+++ b/drivers/gpu/drm/radeon/radeon_cs.c
@@ -288,7 +288,7 @@ int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data)
 	p->chunk_relocs = NULL;
 	p->chunk_flags = NULL;
 	p->chunk_const_ib = NULL;
-	p->chunks_array = kcalloc(cs->num_chunks, sizeof(uint64_t), GFP_KERNEL);
+	p->chunks_array = kvmalloc_array(cs->num_chunks, sizeof(uint64_t), GFP_KERNEL);
 	if (p->chunks_array == NULL) {
 		return -ENOMEM;
 	}
@@ -299,7 +299,7 @@ int radeon_cs_parser_init(struct radeon_cs_parser *p, void *data)
 	}
 	p->cs_flags = 0;
 	p->nchunks = cs->num_chunks;
-	p->chunks = kcalloc(p->nchunks, sizeof(struct radeon_cs_chunk), GFP_KERNEL);
+	p->chunks = kvmalloc_array(p->nchunks, sizeof(struct radeon_cs_chunk), GFP_KERNEL);
 	if (p->chunks == NULL) {
 		return -ENOMEM;
 	}
@@ -452,8 +452,8 @@ static void radeon_cs_parser_fini(struct radeon_cs_parser *parser, int error, bo
 	kvfree(parser->vm_bos);
 	for (i = 0; i < parser->nchunks; i++)
 		kvfree(parser->chunks[i].kdata);
-	kfree(parser->chunks);
-	kfree(parser->chunks_array);
+	kvfree(parser->chunks);
+	kvfree(parser->chunks_array);
 	radeon_ib_free(parser->rdev, &parser->ib);
 	radeon_ib_free(parser->rdev, &parser->const_ib);
 }
-- 
2.30.0



_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* [PATCH v3 2/3] drm/amdgpu: Use kvmalloc for CS chunks
  2021-03-03  3:49 [PATCH v3 0/3] Use kvmalloc_array for radeon and amdgpu CS chunks Chen Li
  2021-03-03  3:52 ` [PATCH v3 1/3] drm/radeon: Use kvmalloc for " Chen Li
@ 2021-03-03  3:53 ` Chen Li
  2021-03-03  3:54 ` [PATCH v3 3/3] drm/amdgpu: correct DRM_ERROR for kvmalloc_array Chen Li
  2021-03-03 11:30 ` [PATCH v3 0/3] Use kvmalloc_array for radeon and amdgpu CS chunks Christian König
  3 siblings, 0 replies; 6+ messages in thread
From: Chen Li @ 2021-03-03  3:53 UTC (permalink / raw)
  To: amd-gfx; +Cc: Alex Deucher, "Christian König"


The number of chunks/chunks_array may be passed in
by userspace and can be large.

Signed-off-by: Chen Li <chenli@uniontech.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index 3e240b952e79..d9ae2cb86bc7 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -117,7 +117,7 @@ static int amdgpu_cs_parser_init(struct amdgpu_cs_parser *p, union drm_amdgpu_cs
 	if (cs->in.num_chunks == 0)
 		return 0;
 
-	chunk_array = kmalloc_array(cs->in.num_chunks, sizeof(uint64_t), GFP_KERNEL);
+	chunk_array = kvmalloc_array(cs->in.num_chunks, sizeof(uint64_t), GFP_KERNEL);
 	if (!chunk_array)
 		return -ENOMEM;
 
@@ -144,7 +144,7 @@ static int amdgpu_cs_parser_init(struct amdgpu_cs_parser *p, union drm_amdgpu_cs
 	}
 
 	p->nchunks = cs->in.num_chunks;
-	p->chunks = kmalloc_array(p->nchunks, sizeof(struct amdgpu_cs_chunk),
+	p->chunks = kvmalloc_array(p->nchunks, sizeof(struct amdgpu_cs_chunk),
 			    GFP_KERNEL);
 	if (!p->chunks) {
 		ret = -ENOMEM;
@@ -238,7 +238,7 @@ static int amdgpu_cs_parser_init(struct amdgpu_cs_parser *p, union drm_amdgpu_cs
 
 	if (p->uf_entry.tv.bo)
 		p->job->uf_addr = uf_offset;
-	kfree(chunk_array);
+	kvfree(chunk_array);
 
 	/* Use this opportunity to fill in task info for the vm */
 	amdgpu_vm_set_task_info(vm);
@@ -250,11 +250,11 @@ static int amdgpu_cs_parser_init(struct amdgpu_cs_parser *p, union drm_amdgpu_cs
 free_partial_kdata:
 	for (; i >= 0; i--)
 		kvfree(p->chunks[i].kdata);
-	kfree(p->chunks);
+	kvfree(p->chunks);
 	p->chunks = NULL;
 	p->nchunks = 0;
 free_chunk:
-	kfree(chunk_array);
+	kvfree(chunk_array);
 
 	return ret;
 }
@@ -706,7 +706,7 @@ static void amdgpu_cs_parser_fini(struct amdgpu_cs_parser *parser, int error,
 
 	for (i = 0; i < parser->nchunks; i++)
 		kvfree(parser->chunks[i].kdata);
-	kfree(parser->chunks);
+	kvfree(parser->chunks);
 	if (parser->job)
 		amdgpu_job_free(parser->job);
 	if (parser->uf_entry.tv.bo) {
-- 
2.30.0



_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* [PATCH v3 3/3] drm/amdgpu: correct DRM_ERROR for kvmalloc_array
  2021-03-03  3:49 [PATCH v3 0/3] Use kvmalloc_array for radeon and amdgpu CS chunks Chen Li
  2021-03-03  3:52 ` [PATCH v3 1/3] drm/radeon: Use kvmalloc for " Chen Li
  2021-03-03  3:53 ` [PATCH v3 2/3] drm/amdgpu: " Chen Li
@ 2021-03-03  3:54 ` Chen Li
  2021-03-03 11:30 ` [PATCH v3 0/3] Use kvmalloc_array for radeon and amdgpu CS chunks Christian König
  3 siblings, 0 replies; 6+ messages in thread
From: Chen Li @ 2021-03-03  3:54 UTC (permalink / raw)
  To: amd-gfx; +Cc: Alex Deucher, "Christian König"


This may avoid debug confusion.
Signed-off-by: Chen Li <chenli@uniontech.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
index d9ae2cb86bc7..b5c766998045 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
@@ -559,7 +559,7 @@ static int amdgpu_cs_parser_bos(struct amdgpu_cs_parser *p,
 					sizeof(struct page *),
 					GFP_KERNEL | __GFP_ZERO);
 		if (!e->user_pages) {
-			DRM_ERROR("calloc failure\n");
+			DRM_ERROR("kvmalloc_array failure\n");
 			return -ENOMEM;
 		}
 
-- 
2.30.0



_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* Re: [PATCH v3 0/3] Use kvmalloc_array for radeon and amdgpu CS chunks
  2021-03-03  3:49 [PATCH v3 0/3] Use kvmalloc_array for radeon and amdgpu CS chunks Chen Li
                   ` (2 preceding siblings ...)
  2021-03-03  3:54 ` [PATCH v3 3/3] drm/amdgpu: correct DRM_ERROR for kvmalloc_array Chen Li
@ 2021-03-03 11:30 ` Christian König
  2021-03-03 15:00   ` Alex Deucher
  3 siblings, 1 reply; 6+ messages in thread
From: Christian König @ 2021-03-03 11:30 UTC (permalink / raw)
  To: Chen Li, amd-gfx; +Cc: Alex Deucher

Reviewed-by: Christian König <christian.koenig@amd.com> for the entire 
series.

Am 03.03.21 um 04:49 schrieb Chen Li:
> When testing kernel with trinity, the kernel turned to tainted in that radeon CS require large memory and order is over MAX_ORDER.
>
> kvmalloc/kvmalloc_array should be used here in that it will fallback to vmalloc if necessary.
>
> Chen Li (3):
>    drm/radeon: Use kvmalloc for CS chunks
>    drm/amdgpu: Use kvmalloc for CS chunks
>    drm/amdgpu: correct DRM_ERROR for kvmalloc_array
>
> Changelog:
>    v1->v2:
>      * also use kvmalloc in amdgpu
>      * fix a DRM_ERROR message for kvmalloc_array.
>    v2->v3:
>      * add missing kvfree for amdgpu CS
>
>   drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 14 +++++++-------
>   drivers/gpu/drm/radeon/radeon_cs.c     |  8 ++++----
>   2 files changed, 11 insertions(+), 11 deletions(-)
>
> --
> 2.30.0
>
>

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

* Re: [PATCH v3 0/3] Use kvmalloc_array for radeon and amdgpu CS chunks
  2021-03-03 11:30 ` [PATCH v3 0/3] Use kvmalloc_array for radeon and amdgpu CS chunks Christian König
@ 2021-03-03 15:00   ` Alex Deucher
  0 siblings, 0 replies; 6+ messages in thread
From: Alex Deucher @ 2021-03-03 15:00 UTC (permalink / raw)
  To: Christian König; +Cc: Alex Deucher, Chen Li, amd-gfx list

Applied.  Thanks!

Alex

On Wed, Mar 3, 2021 at 6:30 AM Christian König <christian.koenig@amd.com> wrote:
>
> Reviewed-by: Christian König <christian.koenig@amd.com> for the entire
> series.
>
> Am 03.03.21 um 04:49 schrieb Chen Li:
> > When testing kernel with trinity, the kernel turned to tainted in that radeon CS require large memory and order is over MAX_ORDER.
> >
> > kvmalloc/kvmalloc_array should be used here in that it will fallback to vmalloc if necessary.
> >
> > Chen Li (3):
> >    drm/radeon: Use kvmalloc for CS chunks
> >    drm/amdgpu: Use kvmalloc for CS chunks
> >    drm/amdgpu: correct DRM_ERROR for kvmalloc_array
> >
> > Changelog:
> >    v1->v2:
> >      * also use kvmalloc in amdgpu
> >      * fix a DRM_ERROR message for kvmalloc_array.
> >    v2->v3:
> >      * add missing kvfree for amdgpu CS
> >
> >   drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 14 +++++++-------
> >   drivers/gpu/drm/radeon/radeon_cs.c     |  8 ++++----
> >   2 files changed, 11 insertions(+), 11 deletions(-)
> >
> > --
> > 2.30.0
> >
> >
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

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

end of thread, other threads:[~2021-03-03 15:00 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-03  3:49 [PATCH v3 0/3] Use kvmalloc_array for radeon and amdgpu CS chunks Chen Li
2021-03-03  3:52 ` [PATCH v3 1/3] drm/radeon: Use kvmalloc for " Chen Li
2021-03-03  3:53 ` [PATCH v3 2/3] drm/amdgpu: " Chen Li
2021-03-03  3:54 ` [PATCH v3 3/3] drm/amdgpu: correct DRM_ERROR for kvmalloc_array Chen Li
2021-03-03 11:30 ` [PATCH v3 0/3] Use kvmalloc_array for radeon and amdgpu CS chunks Christian König
2021-03-03 15:00   ` 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.