Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp6777786pxb; Wed, 17 Feb 2021 13:11:25 -0800 (PST) X-Google-Smtp-Source: ABdhPJytSzF/PLzJyp6qRpiuRG5lENFjVoUj8CexicDrIvnqo0fhXzVlaFZLM2rNpLocBhVtzCu/ X-Received: by 2002:aa7:d849:: with SMTP id f9mr753772eds.76.1613596284866; Wed, 17 Feb 2021 13:11:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1613596284; cv=none; d=google.com; s=arc-20160816; b=GXnT8eDh60PE38vDyypQM2GyGMsf3t3xFbUDLZCaeUhooQljIS5RCHiEnyH5iP7END 9zRa4zd48AXQCFYqYzXYO7WXnCswnoG5zLZFsaCYSfxnmWdVk9ZQ/LcTV9NQZZn05T4M fUuQV2cnw/IjwdZyQkX1DHF1A1nZkJl00Jz8M3TRAHjlNMqeKnb7XnIPGEPrXwA5mBgP k67AYBOLDYbiKkpKu/wB2a3oZYrRvqBr9yfLook/QRgdWKEQSwBkNWATK/VOfU/3B+O8 v8JBZ/Nr19u9syCHrpcYPJ/Dyp5aLoJURLtADz7xvD5myKTkj2hOFJmkR9IVf/Qwv9L1 ShsQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=BhNy9LeEwdfaCUcooGQd0L9ztDs5uUbwOVeKYntjrrY=; b=oi3d1eqPOqQez1bwiRidCMJjzLj8auIe/CCBRf3MnK89WtWNmXa9H8V6hmJYpBNZA7 5YU2scs+eSsYSapgMm3mTqfcyHUC0hIPitwEow759ZY7L+eeXjlArO/HJgRNn7GecnGk ZEjMV61gkq9WOrKEulfLmiNuhaDlO7weDf0q9acmKe2Utfkg6WHrCRci0nR+UsXUs9cq wWoEZ4vUODJzm8FhIjIQkxaQkBn9hMcB/p82wubCM/hXcFyOvW2Fxrg+wQghXnsukeya xv2PrG91gOm45iJrIO3sBni7SDfMGf3n2ujdtR4gMKR7Tr88mBWeWsUVS2kuy6HoDbWY eetA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w10si1981875edx.104.2021.02.17.13.10.59; Wed, 17 Feb 2021 13:11:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230473AbhBQTXU (ORCPT + 99 others); Wed, 17 Feb 2021 14:23:20 -0500 Received: from mx2.suse.de ([195.135.220.15]:48094 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229753AbhBQTXI (ORCPT ); Wed, 17 Feb 2021 14:23:08 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id A2703ABA2; Wed, 17 Feb 2021 19:22:26 +0000 (UTC) Subject: Re: [PATCH v2 03/11] drm/qxl: use ttm bo priorities To: Gerd Hoffmann , dri-devel@lists.freedesktop.org Cc: David Airlie , open list , "open list:DRM DRIVER FOR QXL VIRTUAL GPU" , "open list:DRM DRIVER FOR QXL VIRTUAL GPU" , Dave Airlie References: <20210217123213.2199186-1-kraxel@redhat.com> <20210217123213.2199186-4-kraxel@redhat.com> From: Thomas Zimmermann Message-ID: Date: Wed, 17 Feb 2021 20:22:25 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.0 MIME-Version: 1.0 In-Reply-To: <20210217123213.2199186-4-kraxel@redhat.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="hwNu0hQmhLYE8QhoLCuGB5OcFL4qS0xDh" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --hwNu0hQmhLYE8QhoLCuGB5OcFL4qS0xDh Content-Type: multipart/mixed; boundary="fhhaqP4i0zl0iMXywuIAZ51mQsbOFWJUz"; protected-headers="v1" From: Thomas Zimmermann To: Gerd Hoffmann , dri-devel@lists.freedesktop.org Cc: David Airlie , open list , "open list:DRM DRIVER FOR QXL VIRTUAL GPU" , "open list:DRM DRIVER FOR QXL VIRTUAL GPU" , Dave Airlie Message-ID: Subject: Re: [PATCH v2 03/11] drm/qxl: use ttm bo priorities References: <20210217123213.2199186-1-kraxel@redhat.com> <20210217123213.2199186-4-kraxel@redhat.com> In-Reply-To: <20210217123213.2199186-4-kraxel@redhat.com> --fhhaqP4i0zl0iMXywuIAZ51mQsbOFWJUz Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable Am 17.02.21 um 13:32 schrieb Gerd Hoffmann: > Allow to set priorities for buffer objects. Use priority 1 for surface= > and cursor command releases. Use priority 0 for drawing command > releases. That way the short-living drawing commands are first in line= > when it comes to eviction, making it *much* less likely that > ttm_bo_mem_force_space() picks something which can't be evicted and > throws an error after waiting a while without success. >=20 > Signed-off-by: Gerd Hoffmann Acked-by: Thomas Zimmermann > --- > drivers/gpu/drm/qxl/qxl_object.h | 1 + > drivers/gpu/drm/qxl/qxl_cmd.c | 2 +- > drivers/gpu/drm/qxl/qxl_display.c | 4 ++-- > drivers/gpu/drm/qxl/qxl_gem.c | 2 +- > drivers/gpu/drm/qxl/qxl_object.c | 5 +++-- > drivers/gpu/drm/qxl/qxl_release.c | 18 ++++++++++++------ > 6 files changed, 20 insertions(+), 12 deletions(-) >=20 > diff --git a/drivers/gpu/drm/qxl/qxl_object.h b/drivers/gpu/drm/qxl/qxl= _object.h > index e60a8f88e226..dc1659e717f1 100644 > --- a/drivers/gpu/drm/qxl/qxl_object.h > +++ b/drivers/gpu/drm/qxl/qxl_object.h > @@ -61,6 +61,7 @@ static inline u64 qxl_bo_mmap_offset(struct qxl_bo *b= o) > extern int qxl_bo_create(struct qxl_device *qdev, > unsigned long size, > bool kernel, bool pinned, u32 domain, > + u32 priority, > struct qxl_surface *surf, > struct qxl_bo **bo_ptr); > extern int qxl_bo_kmap(struct qxl_bo *bo, struct dma_buf_map *map); > diff --git a/drivers/gpu/drm/qxl/qxl_cmd.c b/drivers/gpu/drm/qxl/qxl_cm= d.c > index 7e22a81bfb36..7b00c955cd82 100644 > --- a/drivers/gpu/drm/qxl/qxl_cmd.c > +++ b/drivers/gpu/drm/qxl/qxl_cmd.c > @@ -269,7 +269,7 @@ int qxl_alloc_bo_reserved(struct qxl_device *qdev, > int ret; > =20 > ret =3D qxl_bo_create(qdev, size, false /* not kernel - device */, > - false, QXL_GEM_DOMAIN_VRAM, NULL, &bo); > + false, QXL_GEM_DOMAIN_VRAM, 0, NULL, &bo); > if (ret) { > DRM_ERROR("failed to allocate VRAM BO\n"); > return ret; > diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qx= l_display.c > index ec50d2cfd4e1..a1b5cc5918bc 100644 > --- a/drivers/gpu/drm/qxl/qxl_display.c > +++ b/drivers/gpu/drm/qxl/qxl_display.c > @@ -799,8 +799,8 @@ static int qxl_plane_prepare_fb(struct drm_plane *p= lane, > qdev->dumb_shadow_bo =3D NULL; > } > qxl_bo_create(qdev, surf.height * surf.stride, > - true, true, QXL_GEM_DOMAIN_SURFACE, &surf, > - &qdev->dumb_shadow_bo); > + true, true, QXL_GEM_DOMAIN_SURFACE, 0, > + &surf, &qdev->dumb_shadow_bo); > } > if (user_bo->shadow !=3D qdev->dumb_shadow_bo) { > if (user_bo->shadow) { > diff --git a/drivers/gpu/drm/qxl/qxl_gem.c b/drivers/gpu/drm/qxl/qxl_ge= m.c > index 48e096285b4c..a08da0bd9098 100644 > --- a/drivers/gpu/drm/qxl/qxl_gem.c > +++ b/drivers/gpu/drm/qxl/qxl_gem.c > @@ -55,7 +55,7 @@ int qxl_gem_object_create(struct qxl_device *qdev, in= t size, > /* At least align on page size */ > if (alignment < PAGE_SIZE) > alignment =3D PAGE_SIZE; > - r =3D qxl_bo_create(qdev, size, kernel, false, initial_domain, surf, = &qbo); > + r =3D qxl_bo_create(qdev, size, kernel, false, initial_domain, 0, sur= f, &qbo); > if (r) { > if (r !=3D -ERESTARTSYS) > DRM_ERROR( > diff --git a/drivers/gpu/drm/qxl/qxl_object.c b/drivers/gpu/drm/qxl/qxl= _object.c > index 705b51535492..7eada4ad217b 100644 > --- a/drivers/gpu/drm/qxl/qxl_object.c > +++ b/drivers/gpu/drm/qxl/qxl_object.c > @@ -103,8 +103,8 @@ static const struct drm_gem_object_funcs qxl_object= _funcs =3D { > .print_info =3D drm_gem_ttm_print_info, > }; > =20 > -int qxl_bo_create(struct qxl_device *qdev, > - unsigned long size, bool kernel, bool pinned, u32 domain, > +int qxl_bo_create(struct qxl_device *qdev, unsigned long size, > + bool kernel, bool pinned, u32 domain, u32 priority, > struct qxl_surface *surf, > struct qxl_bo **bo_ptr) > { > @@ -137,6 +137,7 @@ int qxl_bo_create(struct qxl_device *qdev, > =20 > qxl_ttm_placement_from_domain(bo, domain); > =20 > + bo->tbo.priority =3D priority; > r =3D ttm_bo_init_reserved(&qdev->mman.bdev, &bo->tbo, size, type, > &bo->placement, 0, &ctx, NULL, NULL, > &qxl_ttm_bo_destroy); > diff --git a/drivers/gpu/drm/qxl/qxl_release.c b/drivers/gpu/drm/qxl/qx= l_release.c > index 579c6de10c8e..716d706ca7f0 100644 > --- a/drivers/gpu/drm/qxl/qxl_release.c > +++ b/drivers/gpu/drm/qxl/qxl_release.c > @@ -160,11 +160,12 @@ qxl_release_free(struct qxl_device *qdev, > } > =20 > static int qxl_release_bo_alloc(struct qxl_device *qdev, > - struct qxl_bo **bo) > + struct qxl_bo **bo, > + u32 priority) > { > /* pin releases bo's they are too messy to evict */ > return qxl_bo_create(qdev, PAGE_SIZE, false, true, > - QXL_GEM_DOMAIN_VRAM, NULL, bo); > + QXL_GEM_DOMAIN_VRAM, priority, NULL, bo); > } > =20 > int qxl_release_list_add(struct qxl_release *release, struct qxl_bo *= bo) > @@ -287,13 +288,18 @@ int qxl_alloc_release_reserved(struct qxl_device = *qdev, unsigned long size, > int ret =3D 0; > union qxl_release_info *info; > int cur_idx; > + u32 priority; > =20 > - if (type =3D=3D QXL_RELEASE_DRAWABLE) > + if (type =3D=3D QXL_RELEASE_DRAWABLE) { > cur_idx =3D 0; > - else if (type =3D=3D QXL_RELEASE_SURFACE_CMD) > + priority =3D 0; > + } else if (type =3D=3D QXL_RELEASE_SURFACE_CMD) { > cur_idx =3D 1; > - else if (type =3D=3D QXL_RELEASE_CURSOR_CMD) > + priority =3D 1; > + } else if (type =3D=3D QXL_RELEASE_CURSOR_CMD) { > cur_idx =3D 2; > + priority =3D 1; > + } > else { > DRM_ERROR("got illegal type: %d\n", type); > return -EINVAL; > @@ -315,7 +321,7 @@ int qxl_alloc_release_reserved(struct qxl_device *q= dev, unsigned long size, > qdev->current_release_bo[cur_idx] =3D NULL; > } > if (!qdev->current_release_bo[cur_idx]) { > - ret =3D qxl_release_bo_alloc(qdev, &qdev->current_release_bo[cur_idx= ]); > + ret =3D qxl_release_bo_alloc(qdev, &qdev->current_release_bo[cur_idx= ], priority); > if (ret) { > mutex_unlock(&qdev->release_mutex); > qxl_release_free(qdev, *release); >=20 --=20 Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Maxfeldstr. 5, 90409 N=C3=BCrnberg, Germany (HRB 36809, AG N=C3=BCrnberg) Gesch=C3=A4ftsf=C3=BChrer: Felix Imend=C3=B6rffer --fhhaqP4i0zl0iMXywuIAZ51mQsbOFWJUz-- --hwNu0hQmhLYE8QhoLCuGB5OcFL4qS0xDh Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEExndm/fpuMUdwYFFolh/E3EQov+AFAmAtbPEFAwAAAAAACgkQlh/E3EQov+Ag pw/+OAAQt84RWV+r5A486SoYxbeorXl5BDFuV1OPLQWTf5i9LoxtO3y+yrfOCQA967xM2gjCosKF nc+W4gjQDBx8x4n2dz3WqKjtgosaCC2EfOKuihwme8UK1JoWIKPnHxXR/MfwquxDv+ZYDuziOexK rTZmztb3IGBNgS5r2nDa3Lt9E/8XZ25AwETBM9vKVcZK2r3BOv/dOVr0V3RDzDEp6mIFXWfkzx7x sEh7R8IxSgwad2Y9kXojIFzf/HDi6JeWzycX67DlzHdsyFomJ6DJjmoxah9tnGvlcGj51mi53nyB DYQEMyVnseC9zpZlbpwomOefDWfGprFCEnhS/KriFRgvk90TzFE/lnSj6XfKq93N+ybMo8j20AIA fpahUgoYDmIbsxWfxj3iesDXAt7/2K4CuUJDjApk5lS3YZ/dF7JnvhYPNNg3CJibEH5VsYC1dmsr 9aQPdtosZpZD7xabTaPKHKzq9tLTfXu3wjfj+lrOuS/6RnE8dYiY+oQNji39rOnWxwHnF4aME4+9 GLx1CQXIDBLznjAytBmoqWrblwc1Cjv/pUpUV3XtSTZU6xc2Y/JgckX4mmgdgxi9j9gFeO/eVwZM PjrpWX7y1Pvhr3+Y3p54nTu6/MsZpxGzwAx+i5lFGCsOdKvs9CtRXW9SjDxfK3JWeJ1Sdrv6JFIn rzU= =pmRh -----END PGP SIGNATURE----- --hwNu0hQmhLYE8QhoLCuGB5OcFL4qS0xDh--