Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp1545476ybi; Wed, 19 Jun 2019 23:10:16 -0700 (PDT) X-Google-Smtp-Source: APXvYqwz9t23fOpd5Zg+1oWz//s04iZns7GyyXZSOrULc53snQORyeYZCtVl8cMtCVIzo5Z+voBD X-Received: by 2002:a63:b24:: with SMTP id 36mr11503449pgl.439.1561011016525; Wed, 19 Jun 2019 23:10:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561011016; cv=none; d=google.com; s=arc-20160816; b=EdKYGSt7ktQUnQ5ijM93wyeduDKFG4X2iCCTvFg+jJSN3m7ygfcW+22PX7rbjnIN7A aR5nTGyIeYBzl61bbLwJ4Lx0ErYbOGIqjp1B3VYvBQGV6wQ6eit5+RBjkjZ60l58AJ4l ujL5Dp4r4Wgdiq8nNU+hcFJtCfazHbhSMxX63v83wUKV8qEZ0V7yums+z+8HFyHFdgPA RDfGo7fDxcSdtrNlw5tR4UAqOs4Joyiq1DbyWw3w6PZth64bcr6jOVFfmZD06wFB0ckm QELXKRi+ZlVdOiKZIA3yrUxfROMQmBA4P04GCZPbM07Jim6j2cppj6eGGtlTYRXLrBAa mG0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=VESCQlThAmV4JEU+X/jJzdXQV8K5hl9M1nVpwpWZTOg=; b=TEH2pvbihtE5fMXO5WoQ9wtlNPBwp3KNogSnt81wWBcjW4RxTPy3MEezagyhVEdLfX WcYyKSE3TMa17CFmx3PWMZpOOx9drfrABXyuRF8jgSI2dbSDFTz6TECxolN6Hrjgs4IS P3hqmpu4+5yTUpm2R3AuhWph4OOztWSBg7fR7kFc2/Z9sOs0bM39JW8Rbu0l9q6hlsvq aXhwhWI55f15hyI0LeAGz7oHJBOOmSJvp81gKj+KZxW8TNtpHi77scVNBbjpeq4HyQOd +1mcZtppm2haOBVapPmIEEQujccySNWU5X/zwh0sn84NoukJRPnonlS/ZFgc2acNJ0T9 auvQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f89si3511647pje.50.2019.06.19.23.09.59; Wed, 19 Jun 2019 23:10:16 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726140AbfFTGHd (ORCPT + 99 others); Thu, 20 Jun 2019 02:07:33 -0400 Received: from mx1.redhat.com ([209.132.183.28]:33204 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725871AbfFTGHd (ORCPT ); Thu, 20 Jun 2019 02:07:33 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 328B4307D910; Thu, 20 Jun 2019 06:07:32 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-116-212.ams2.redhat.com [10.36.116.212]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9839C5C21E; Thu, 20 Jun 2019 06:07:27 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 5DA7917510; Thu, 20 Jun 2019 08:07:26 +0200 (CEST) From: Gerd Hoffmann To: dri-devel@lists.freedesktop.org Cc: Gerd Hoffmann , David Airlie , Daniel Vetter , virtualization@lists.linux-foundation.org (open list:VIRTIO GPU DRIVER), linux-kernel@vger.kernel.org (open list) Subject: [PATCH v4 02/12] drm/virtio: switch virtio_gpu_wait_ioctl() to gem helper. Date: Thu, 20 Jun 2019 08:07:16 +0200 Message-Id: <20190620060726.926-3-kraxel@redhat.com> In-Reply-To: <20190620060726.926-1-kraxel@redhat.com> References: <20190620060726.926-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.48]); Thu, 20 Jun 2019 06:07:33 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Use drm_gem_reservation_object_wait() in virtio_gpu_wait_ioctl(). This also makes the ioctl run lockless. v2: use reservation_object_test_signaled_rcu for VIRTGPU_WAIT_NOWAIT. Signed-off-by: Gerd Hoffmann Reviewed-by: Daniel Vetter --- drivers/gpu/drm/virtio/virtgpu_ioctl.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/virtio/virtgpu_ioctl.c b/drivers/gpu/drm/virtio/virtgpu_ioctl.c index ac60be9b5c19..313c770ea2c5 100644 --- a/drivers/gpu/drm/virtio/virtgpu_ioctl.c +++ b/drivers/gpu/drm/virtio/virtgpu_ioctl.c @@ -464,23 +464,19 @@ static int virtio_gpu_wait_ioctl(struct drm_device *dev, void *data, struct drm_file *file) { struct drm_virtgpu_3d_wait *args = data; - struct drm_gem_object *gobj = NULL; - struct virtio_gpu_object *qobj = NULL; + struct drm_gem_object *obj; + long timeout = 15 * HZ; int ret; - bool nowait = false; - gobj = drm_gem_object_lookup(file, args->handle); - if (gobj == NULL) - return -ENOENT; + if (args->flags & VIRTGPU_WAIT_NOWAIT) { + obj = drm_gem_object_lookup(file, args->handle); + ret = reservation_object_test_signaled_rcu(obj->resv, true); + drm_gem_object_put_unlocked(obj); + return ret ? 0 : -EBUSY; + } - qobj = gem_to_virtio_gpu_obj(gobj); - - if (args->flags & VIRTGPU_WAIT_NOWAIT) - nowait = true; - ret = virtio_gpu_object_wait(qobj, nowait); - - drm_gem_object_put_unlocked(gobj); - return ret; + return drm_gem_reservation_object_wait(file, args->handle, + true, timeout); } static int virtio_gpu_get_caps_ioctl(struct drm_device *dev, -- 2.18.1