* [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.