[PATCH] nouveau: find the smallest page allocation to cover a buffer alloc.

Faith Ekstrand faith at gfxstrand.net
Sat Aug 12 14:53:58 UTC 2023


On Thu, Aug 10, 2023 at 10:15 PM Dave Airlie <airlied at gmail.com> wrote:

> From: Dave Airlie <airlied at redhat.com>
>
> With the new uapi we don't have the comp flags on the allocation,
> so we shouldn't be using the first size that works, we should be
> iterating until we get the correct one.
>
> This reduces allocations from 2MB to 64k in lots of places.
>
> Fixes dEQP-VK.memory.allocation.basic.size_8KiB.forward.count_4000
> on my ampere/gsp system.
>
> Signed-off-by: Dave Airlie <airlied at redhat.com>
>

Reviewed-by: Faith Ekstrand <faith.ekstrand at collabora.com>


> ---
>  drivers/gpu/drm/nouveau/nouveau_bo.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c
> b/drivers/gpu/drm/nouveau/nouveau_bo.c
> index 949195d5d782..a6993c7807b6 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_bo.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
> @@ -318,8 +318,9 @@ nouveau_bo_alloc(struct nouveau_cli *cli, u64 *size,
> int *align, u32 domain,
>                             (!vmm->page[i].host || vmm->page[i].shift >
> PAGE_SHIFT))
>                                 continue;
>
> -                       if (pi < 0)
> -                               pi = i;
> +                       /* pick the last one as it will be smallest. */
> +                       pi = i;
> +
>                         /* Stop once the buffer is larger than the current
> page size. */
>                         if (*size >= 1ULL << vmm->page[i].shift)
>                                 break;
> --
> 2.41.0
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20230812/ee6a11af/attachment.htm>


More information about the dri-devel mailing list