[PATCH v4 2/9] drm: vkms: Alloc the compose frame using vzalloc
Melissa Wen
mwen at igalia.com
Tue Feb 8 10:14:35 UTC 2022
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 at pixel-format) uses more than 4MB when
> testing some pixel formats like ARGB16161616.
... And the following error were showing up when running
kms_plane at 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 at igalia.com>
[1] https://dri.freedesktop.org/docs/drm/gpu/vkms.html#igt-better-support
>
> Signed-off-by: Igor Torrente <igormtorrente at 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
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20220208/e184b347/attachment.sig>
More information about the dri-devel
mailing list