Message ID | 20220121213831.47229-3-igormtorrente@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add new formats support to vkms | expand |
On 01/21, Igor Torrente wrote: > Currently, the memory to the composition frame is being allocated using > the kzmalloc. This comes with the limitation of maximum size of one > page size(which in the x86_64 is 4Kb and 4MB for default and hugepage > respectively). > > Somes test of igt (e.g. kms_plane@pixel-format) uses more than 4MB when > testing some pixel formats like ARGB16161616. ... And the following error were showing up when running kms_plane@plane-panning-bottom-right*: [drm:vkms_composer_worker [vkms]] *ERROR* Cannot allocate memory for output frame. > > This problem is addessed by allocating the memory using kvzalloc that > circunvents this limitation. With this patch, can you drop these debugging issues in VKMS TO-DO[1], please? Thanks, Reviewed-by: Melissa Wen <mwen@igalia.com> [1] https://dri.freedesktop.org/docs/drm/gpu/vkms.html#igt-better-support > > Signed-off-by: Igor Torrente <igormtorrente@gmail.com> > --- > drivers/gpu/drm/vkms/vkms_composer.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/vkms/vkms_composer.c b/drivers/gpu/drm/vkms/vkms_composer.c > index 9e8204be9a14..82f79e508f81 100644 > --- a/drivers/gpu/drm/vkms/vkms_composer.c > +++ b/drivers/gpu/drm/vkms/vkms_composer.c > @@ -180,7 +180,7 @@ static int compose_active_planes(void **vaddr_out, > int i; > > if (!*vaddr_out) { > - *vaddr_out = kzalloc(gem_obj->size, GFP_KERNEL); > + *vaddr_out = kvzalloc(gem_obj->size, GFP_KERNEL); > if (!*vaddr_out) { > DRM_ERROR("Cannot allocate memory for output frame."); > return -ENOMEM; > @@ -263,7 +263,7 @@ void vkms_composer_worker(struct work_struct *work) > crtc_state); > if (ret) { > if (ret == -EINVAL && !wb_pending) > - kfree(vaddr_out); > + kvfree(vaddr_out); > return; > } > > @@ -275,7 +275,7 @@ void vkms_composer_worker(struct work_struct *work) > crtc_state->wb_pending = false; > spin_unlock_irq(&out->composer_lock); > } else { > - kfree(vaddr_out); > + kvfree(vaddr_out); > } > > /* > -- > 2.30.2 >
diff --git a/drivers/gpu/drm/vkms/vkms_composer.c b/drivers/gpu/drm/vkms/vkms_composer.c index 9e8204be9a14..82f79e508f81 100644 --- a/drivers/gpu/drm/vkms/vkms_composer.c +++ b/drivers/gpu/drm/vkms/vkms_composer.c @@ -180,7 +180,7 @@ static int compose_active_planes(void **vaddr_out, int i; if (!*vaddr_out) { - *vaddr_out = kzalloc(gem_obj->size, GFP_KERNEL); + *vaddr_out = kvzalloc(gem_obj->size, GFP_KERNEL); if (!*vaddr_out) { DRM_ERROR("Cannot allocate memory for output frame."); return -ENOMEM; @@ -263,7 +263,7 @@ void vkms_composer_worker(struct work_struct *work) crtc_state); if (ret) { if (ret == -EINVAL && !wb_pending) - kfree(vaddr_out); + kvfree(vaddr_out); return; } @@ -275,7 +275,7 @@ void vkms_composer_worker(struct work_struct *work) crtc_state->wb_pending = false; spin_unlock_irq(&out->composer_lock); } else { - kfree(vaddr_out); + kvfree(vaddr_out); } /*
Currently, the memory to the composition frame is being allocated using the kzmalloc. This comes with the limitation of maximum size of one page size(which in the x86_64 is 4Kb and 4MB for default and hugepage respectively). Somes test of igt (e.g. kms_plane@pixel-format) uses more than 4MB when testing some pixel formats like ARGB16161616. This problem is addessed by allocating the memory using kvzalloc that circunvents this limitation. Signed-off-by: Igor Torrente <igormtorrente@gmail.com> --- drivers/gpu/drm/vkms/vkms_composer.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)