Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp1404284ybl; Wed, 28 Aug 2019 14:15:28 -0700 (PDT) X-Google-Smtp-Source: APXvYqyY4usUTn4ptHuBMlxQNbJtvSX75Pz4m6th4JlFKB6JFrsMmF7tQSR3nHXjOuNjmJFmkQ9X X-Received: by 2002:a17:902:b605:: with SMTP id b5mr6420688pls.103.1567026928340; Wed, 28 Aug 2019 14:15:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1567026928; cv=none; d=google.com; s=arc-20160816; b=VbyfykgazgjbkLxaF1qR2PUc+tWSVXTuQnNTk0IZff66QpeUVALl7MegMRheMxMBjZ B47ld2Wm8YiHHZmoTMWptxJtBoUZX81VA8YoXvAH1y52FtsZeuijugccQ2c9Dc19Dvoa Oy4MLGa+xo6FimxRZhGtzTtDTbm0QtLnWERpCyheNApmSIlVLyIiybO9oQFcXtOwEtxJ 2u09sy/TX/LZedwUyeX2dwDqLkQ9Ml6nlJHYlh8NUtj82Wz5Sv/fd1klYc5KTACbqd3z 1y1ZXSshlNRSsIdRERJDkLXL05qlJLmF9Namu8Ci0qkuhTfOs4IDtzV+/FEcHoIFM9KB 0D3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=n0DnwMkmLDWIJwSrLn8Xo+nBrgU3ut606yiaW7tsLmw=; b=klGroWqg1q8ebMuZzOTY0+niC0mtFm3t0VewuwdX/sgqE3u9+OHVtnpDmWaz9OAzmx FbPeAa0N+ZFLHSGqQ239qelDNePTxJbyhpeYHIgFqwlNC8cucuajt/q39apY74pcEh// zL9Ls6PrVl9y5FBs180J68BHU2Hx/l2MmBIghztLhhiWYDn7EU1ggcDUH/Ejr2bRU36I 7gX+SYD87gZ21hWkdBldxZHS/bP05S5M0xKCyoRFdn43+4O9rmVOcwsfuQwx10FVbS7k CYTBvb+WqgfUslvp7/HMu71EJLhGXWKJlYmMiugq6Th4cLaqWgNqY1X9jHVhsBpYd0Gw Cxmg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=WIWG1PDk; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id co10si53763plb.358.2019.08.28.14.15.11; Wed, 28 Aug 2019 14:15:28 -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; dkim=pass header.i=@gmail.com header.s=20161025 header.b=WIWG1PDk; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726944AbfH1VN4 (ORCPT + 99 others); Wed, 28 Aug 2019 17:13:56 -0400 Received: from mail-io1-f66.google.com ([209.85.166.66]:39880 "EHLO mail-io1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726400AbfH1VN4 (ORCPT ); Wed, 28 Aug 2019 17:13:56 -0400 Received: by mail-io1-f66.google.com with SMTP id l7so2475734ioj.6 for ; Wed, 28 Aug 2019 14:13:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=n0DnwMkmLDWIJwSrLn8Xo+nBrgU3ut606yiaW7tsLmw=; b=WIWG1PDkVbjjjFnFPpFLjjxtVTRsYeL9XpsAkGxaDEIeAhcAamyPp68HluklgS3rQP C/5rt0po7h3H6Gf7/im0mdsHGo5rDctWgkNhkR9SFFcQ2giiCAvnQpbxtThQwkTa2htt hneadVzJncluLhLJBw/BMR67x6jSeSdegdVE2VtCwK/A96Wy7RvcQ6zKIeW4w0MQjz+9 V4TWU2h4v0uKER3nm8/QWp7fJL2RYZHn+WvCAvu+lohvWO3gIKITjl9Bc7jM6BAWZgiU XiXVu9u9PfxR+WU3CUEBQFMiZj6jvaeMqaxYXRE+Q7tKwepQ0RWM3k/Bg5iAWg/1eUIv ihWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=n0DnwMkmLDWIJwSrLn8Xo+nBrgU3ut606yiaW7tsLmw=; b=STl7CzogCoB/LrFwMhSo3JmcktUH95I4Wt96pWxIZoWiXBs0O8SZeayBdjCuJwPBWA JxYqJOwGY2q1yoUluR8UtKxqaNNTyYqQCXxEDmxvRqlJvGxvMSc3sgseQOHk1CMI+PS3 0ay4rtkRamkEylOCv/lwjnwDffMQQ07KfMl5xxqf32EXGTX7CK2lp2/rmQYuh7PNwCo3 n2M4Y7m9yXOCu90LFuw6Q3xVRhoucwkZjylV78O8PaIERYcvFDrxC2eDJkYckGcyX1Gr 4+5QiidVLXwuhPSrcNbvvZz46l2Q6my9ZlkrA56KdaOXp5GGF/tOACp0gZj/WR4d8qhB N+pQ== X-Gm-Message-State: APjAAAVjEUdkM7c/Z3WdVswD2beYBVs2c5PSxiNei0Lamx3g41oD5PWX b3nHWyBNjCalOe8oQhdOH/h4XRh84n4xVZAPPEU= X-Received: by 2002:a6b:6f06:: with SMTP id k6mr1919196ioc.232.1567026835236; Wed, 28 Aug 2019 14:13:55 -0700 (PDT) MIME-Version: 1.0 References: <20190823095503.2261-1-kraxel@redhat.com> <20190823095503.2261-3-kraxel@redhat.com> In-Reply-To: <20190823095503.2261-3-kraxel@redhat.com> From: Chia-I Wu Date: Wed, 28 Aug 2019 14:13:44 -0700 Message-ID: Subject: Re: [PATCH v8 02/18] drm/virtio: switch virtio_gpu_wait_ioctl() to gem helper. To: Gerd Hoffmann Cc: ML dri-devel , Gurchetan Singh , David Airlie , Daniel Vetter , "open list:VIRTIO GPU DRIVER" , open list Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Aug 23, 2019 at 2:55 AM Gerd Hoffmann wrote: > > Use drm_gem_reservation_object_wait() in virtio_gpu_wait_ioctl(). > This also makes the ioctl run lockless. > > v5: handle lookup failure. > 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 | 25 +++++++++++-------------- > 1 file changed, 11 insertions(+), 14 deletions(-) > > diff --git a/drivers/gpu/drm/virtio/virtgpu_ioctl.c b/drivers/gpu/drm/virtio/virtgpu_ioctl.c > index 0a88ef11b9d3..74b6bad01d7f 100644 > --- a/drivers/gpu/drm/virtio/virtgpu_ioctl.c > +++ b/drivers/gpu/drm/virtio/virtgpu_ioctl.c > @@ -466,23 +466,20 @@ 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); > + if (obj == NULL) > + return -ENOENT; > + ret = dma_resv_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_dma_resv_wait(file, args->handle, true, timeout); This changes the return value from -EBUSY to -ETIME when the wait times out. I think we can use dma_resv_wait_timeout_rcu directly here. > } > > static int virtio_gpu_get_caps_ioctl(struct drm_device *dev, > -- > 2.18.1 >