From patchwork Tue Mar 10 01:08:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gurchetan Singh X-Patchwork-Id: 11428269 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E609F14B7 for ; Tue, 10 Mar 2020 01:08:33 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C351324649 for ; Tue, 10 Mar 2020 01:08:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="L7xf6UDP" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C351324649 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 309066E7D0; Tue, 10 Mar 2020 01:08:28 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-pl1-x641.google.com (mail-pl1-x641.google.com [IPv6:2607:f8b0:4864:20::641]) by gabe.freedesktop.org (Postfix) with ESMTPS id 54C4A6E5D5 for ; Tue, 10 Mar 2020 01:08:26 +0000 (UTC) Received: by mail-pl1-x641.google.com with SMTP id w12so4713087pll.13 for ; Mon, 09 Mar 2020 18:08:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tGF/x2kq35mc+6Al+T72cYBqq4y8uuP+kdcqS6HEcAY=; b=L7xf6UDPFRssDQQAU6C24Z+U31oIxPNIA1xTGNbk1PotdKB5V+jET1VfpZQDJ6UTcR /Ifp8iExsL2ZQxsOTIlbBO0oa751rkT8MVryibMYas7dY7QBbQ7+LYScIWgp3DJIm63w FSVDO+ysT3cqLkICLuMhH+CoibQuwEakR4OIs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tGF/x2kq35mc+6Al+T72cYBqq4y8uuP+kdcqS6HEcAY=; b=TrW+koCUV3HT8NYylIL9CONHXcVp8cMmpLxDnt+ES1wOwX+WblDfW97vLZLExPRcJU TmXldhiFzDOiRkVjrKk4z7dkA3WWtGi1q4nQ4OPmfj8jzsYD3sYB7lP/dDBcvOsydPpD AMh1z9uXCbUmUQ4hlRlWe5tneNOsMva457/fqCj1zg0KH+3ZWxvNCK6kcHd7kDIrNyfv GmuwKa53qCrdxUsJW7IhinzUpKE4pu/hTCKsBy6T2jG3QYcTEFIk1B9VT/wYjDE1FID3 3NpB4VW5OUb/WVcfDGpjAcaWrKctSs6etng14loH9vRPcREGnbQXaLPDZvMgRuDF4Xcg xuqw== X-Gm-Message-State: ANhLgQ1XAEkOSR5iFG99MlQKxdrr1T0Owi4n+sz6QsGJYG7lQoYNLFEO 3R7+bZ2bo/WPliQGEgZWjPSXPRIS0Rg= X-Google-Smtp-Source: ADFU+vtYRXtxWkjCoINR/dNKphl59J7VAPRHXGR9+PjOHxzqENKi1lx2ejJCbOnvK6S10dzf8ZrVmQ== X-Received: by 2002:a17:90a:1b6c:: with SMTP id q99mr2149830pjq.115.1583802505522; Mon, 09 Mar 2020 18:08:25 -0700 (PDT) Received: from gurchetansingh0.mtv.corp.google.com ([2620:15c:202:201:bc97:5740:52a7:6875]) by smtp.gmail.com with ESMTPSA id s126sm22864070pfb.143.2020.03.09.18.08.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 09 Mar 2020 18:08:25 -0700 (PDT) From: Gurchetan Singh To: dri-devel@lists.freedesktop.org Subject: [RFC PATCH 1/8] drm/virtio: use fence_id when processing fences Date: Mon, 9 Mar 2020 18:08:11 -0700 Message-Id: <20200310010818.569-2-gurchetansingh@chromium.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200310010818.569-1-gurchetansingh@chromium.org> References: <20200310010818.569-1-gurchetansingh@chromium.org> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: chadversary@chromium.org, Gurchetan Singh , kraxel@redhat.com, jbates@chromium.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Currently, the fence ID, which can be used to identify a virtgpu fence, is the same as the fence sequence number. They could be the same, but not necessarily so. Let's differentiate them. Signed-off-by: Gurchetan Singh --- drivers/gpu/drm/virtio/virtgpu_drv.h | 2 +- drivers/gpu/drm/virtio/virtgpu_fence.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h index c1824bdf2418..9627cd08f5be 100644 --- a/drivers/gpu/drm/virtio/virtgpu_drv.h +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h @@ -360,7 +360,7 @@ void virtio_gpu_fence_emit(struct virtio_gpu_device *vgdev, struct virtio_gpu_ctrl_hdr *cmd_hdr, struct virtio_gpu_fence *fence); void virtio_gpu_fence_event_process(struct virtio_gpu_device *vdev, - u64 last_seq); + u64 fence_id); /* virtio_gpu_object */ void virtio_gpu_cleanup_object(struct virtio_gpu_object *bo); diff --git a/drivers/gpu/drm/virtio/virtgpu_fence.c b/drivers/gpu/drm/virtio/virtgpu_fence.c index 5b2a4146c5bd..2fe9c7ebcbd4 100644 --- a/drivers/gpu/drm/virtio/virtgpu_fence.c +++ b/drivers/gpu/drm/virtio/virtgpu_fence.c @@ -112,16 +112,16 @@ void virtio_gpu_fence_emit(struct virtio_gpu_device *vgdev, } void virtio_gpu_fence_event_process(struct virtio_gpu_device *vgdev, - u64 last_seq) + u64 fence_id) { struct virtio_gpu_fence_driver *drv = &vgdev->fence_drv; struct virtio_gpu_fence *fence, *tmp; unsigned long irq_flags; spin_lock_irqsave(&drv->lock, irq_flags); - atomic64_set(&vgdev->fence_drv.last_seq, last_seq); + atomic64_set(&vgdev->fence_drv.last_seq, fence_id); list_for_each_entry_safe(fence, tmp, &drv->fences, node) { - if (last_seq < fence->f.seqno) + if (fence_id < fence->f.seqno) continue; dma_fence_signal_locked(&fence->f); list_del(&fence->node); From patchwork Tue Mar 10 01:08:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gurchetan Singh X-Patchwork-Id: 11428271 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7109E92A for ; Tue, 10 Mar 2020 01:08:36 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4E65A24649 for ; Tue, 10 Mar 2020 01:08:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="SwJcU+Sm" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4E65A24649 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1D4506E7D1; Tue, 10 Mar 2020 01:08:30 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-pj1-x1042.google.com (mail-pj1-x1042.google.com [IPv6:2607:f8b0:4864:20::1042]) by gabe.freedesktop.org (Postfix) with ESMTPS id 43E4E6E7D1 for ; Tue, 10 Mar 2020 01:08:28 +0000 (UTC) Received: by mail-pj1-x1042.google.com with SMTP id y7so661347pjn.1 for ; Mon, 09 Mar 2020 18:08:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2zPpKA6jW8XOsAaloXfV8S1Q8UJisRuIlG8LKUxrM0w=; b=SwJcU+Sm546IxqIjiVERcpXxzkev+wu4LZxOzFWTZQFoWj7Va6pEVainAntCBIBGbH gHZqxKC1EGsRHIsgcrRePvIZitMW/K02b9PrFTySqRLjcd35zUy9D3UnuvMY+6GAf4yE xE4V1WCfn/cHfO4y/jkr7CuHNi++2bUzn37MA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2zPpKA6jW8XOsAaloXfV8S1Q8UJisRuIlG8LKUxrM0w=; b=KpFLJmWyOvWYIpMIltzaZiYgjNgiPNAzEalnqtGFMvuAHkCtv05LyXuYrSD4B2+QMb zR9lz0twdHAF6Uq2mETkRBZUGSMxD+rkRpzpR76TkM/75UZ7Joz5U3nHYe06RlMGy63d yIpnmoJKYJOwpGh0CV9BScSl8o/5IyW2erqPJ7xNL0sU9p1JB+ong4z21nkuX1Lk1NWu wZO5Kj2nqILva8OHJxLy2FwFicPQTYSMwbGDhb471pN+Zlvyi+fA2vi2O+pv415h6LN3 JlpspgRVOupYhhmoKoWDM+c2uOhhsJo5qxg0tW5vZihdczc5sWjNzTQaJxJAfae2Txp3 F3SA== X-Gm-Message-State: ANhLgQ1XAb3KOdTl8bInVShI2ETiqGunHtntkV8AN+JBHFAe4ZbiX6X4 h7HyVcQ1Iw3s5IkT88ZVWiqmOD3q+3o= X-Google-Smtp-Source: ADFU+vs/b0czPK2Dl6i8gUbedmLYhTobuGGguh8x/mCMmw8BFc6YLcrzMW6O8c7NBu4mqcH4vzldtQ== X-Received: by 2002:a17:902:8608:: with SMTP id f8mr18371785plo.110.1583802507498; Mon, 09 Mar 2020 18:08:27 -0700 (PDT) Received: from gurchetansingh0.mtv.corp.google.com ([2620:15c:202:201:bc97:5740:52a7:6875]) by smtp.gmail.com with ESMTPSA id s126sm22864070pfb.143.2020.03.09.18.08.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 09 Mar 2020 18:08:26 -0700 (PDT) From: Gurchetan Singh To: dri-devel@lists.freedesktop.org Subject: [RFC PATCH 2/8] drm/virtio: allocate a fence context for every 3D context Date: Mon, 9 Mar 2020 18:08:12 -0700 Message-Id: <20200310010818.569-3-gurchetansingh@chromium.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200310010818.569-1-gurchetansingh@chromium.org> References: <20200310010818.569-1-gurchetansingh@chromium.org> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: chadversary@chromium.org, Gurchetan Singh , kraxel@redhat.com, jbates@chromium.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" We don't want fences from different 3D contexts (GL, VK) to be on the same timeline. Signed-off-by: Gurchetan Singh --- drivers/gpu/drm/virtio/virtgpu_drv.h | 1 + drivers/gpu/drm/virtio/virtgpu_kms.c | 1 + 2 files changed, 2 insertions(+) diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h index 9627cd08f5be..b4f85c5fedb9 100644 --- a/drivers/gpu/drm/virtio/virtgpu_drv.h +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h @@ -215,6 +215,7 @@ struct virtio_gpu_device { struct virtio_gpu_fpriv { uint32_t ctx_id; bool context_created; + uint64_t fence_context; struct mutex context_lock; }; diff --git a/drivers/gpu/drm/virtio/virtgpu_kms.c b/drivers/gpu/drm/virtio/virtgpu_kms.c index 023a030ca7b9..76b0f18e6691 100644 --- a/drivers/gpu/drm/virtio/virtgpu_kms.c +++ b/drivers/gpu/drm/virtio/virtgpu_kms.c @@ -267,6 +267,7 @@ int virtio_gpu_driver_open(struct drm_device *dev, struct drm_file *file) } vfpriv->ctx_id = handle + 1; + vfpriv->fence_context = dma_fence_context_alloc(1); file->driver_priv = vfpriv; return 0; } From patchwork Tue Mar 10 01:08:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gurchetan Singh X-Patchwork-Id: 11428273 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6A57A14B7 for ; Tue, 10 Mar 2020 01:08:38 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 478B924649 for ; Tue, 10 Mar 2020 01:08:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="iUYimqIz" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 478B924649 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C5B456E5D3; Tue, 10 Mar 2020 01:08:31 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-pl1-x62e.google.com (mail-pl1-x62e.google.com [IPv6:2607:f8b0:4864:20::62e]) by gabe.freedesktop.org (Postfix) with ESMTPS id BC7906E7D1 for ; Tue, 10 Mar 2020 01:08:29 +0000 (UTC) Received: by mail-pl1-x62e.google.com with SMTP id h11so1534995plk.7 for ; Mon, 09 Mar 2020 18:08:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=x8nNGsydjaAq0xWufBHi6rqeFamTNYnp9RK3lcVtOX4=; b=iUYimqIzizuYu98pvf+d5kkctdN3m5tji+q5idS0gNNLxjdmC3zdT80/d8qyOLBDB2 IjY+a+2djSsk2rzUwDYE+Tqn1dhYSLBIxjTSz0J0NbPzkEXxEp2ORCJqMJ5dvQN27/JU l7JvPCXTpWekNTVYhNziVnO1OlgCWagl0EIgc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=x8nNGsydjaAq0xWufBHi6rqeFamTNYnp9RK3lcVtOX4=; b=ouaYubFudti072L6y6dcd1p6f6XCN0NtYLgraB0/TSO6fbX+PDG1lVMaTNCJgsi7J5 MwVmTxOFnxOCCmXMO3z0hnrAk+iLrOCh4JZvZb8l+MkJJYQh7jPS2ashiX5y2qh2kRFP i78XD/6T9Z5fIMYfL0takcfTi0Zs+gf14VnMOE1Z+3oltOdWsehCbjL77JS/Xq+gXAKC JdcXhA47fQ4WzZTzLPy+pXDP6XGQ4VHfDNnySTPkE5xW/PQr/D7bUoanMqdVcF3UhJ09 TTKDWanbZVx9UM2/eHHM4oV+J23lt49QYeibL46+PttyXKM5n0Fn8Hh7rAUMKM83TPEe 7NpQ== X-Gm-Message-State: ANhLgQ3y2YkJna6r+zOZhzwUvzfypRxMHi5ZXXxss2cHYIYgIg7NLRil xSLb1Kb2DEIBuK/z/WWCxWOKlKW1QE4= X-Google-Smtp-Source: ADFU+vuZ5Y8ca3UUiiXQpaBr34mpG3jOrj7FhyWdMUkCr0cme4LWgTiyV4cJ4NgiHMj8zTe3GkilcQ== X-Received: by 2002:a17:902:a408:: with SMTP id p8mr18754707plq.132.1583802509024; Mon, 09 Mar 2020 18:08:29 -0700 (PDT) Received: from gurchetansingh0.mtv.corp.google.com ([2620:15c:202:201:bc97:5740:52a7:6875]) by smtp.gmail.com with ESMTPSA id s126sm22864070pfb.143.2020.03.09.18.08.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 09 Mar 2020 18:08:28 -0700 (PDT) From: Gurchetan Singh To: dri-devel@lists.freedesktop.org Subject: [RFC PATCH 3/8] drm/virtio: plumb virtio_gpu_fpriv to virtio_gpu_fence_alloc Date: Mon, 9 Mar 2020 18:08:13 -0700 Message-Id: <20200310010818.569-4-gurchetansingh@chromium.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200310010818.569-1-gurchetansingh@chromium.org> References: <20200310010818.569-1-gurchetansingh@chromium.org> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: chadversary@chromium.org, Gurchetan Singh , kraxel@redhat.com, jbates@chromium.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" We'll need it when initiating a dma-fence. Signed-off-by: Gurchetan Singh --- drivers/gpu/drm/virtio/virtgpu_drv.h | 4 ++-- drivers/gpu/drm/virtio/virtgpu_fence.c | 3 ++- drivers/gpu/drm/virtio/virtgpu_ioctl.c | 9 +++++---- drivers/gpu/drm/virtio/virtgpu_plane.c | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h index b4f85c5fedb9..76223e2aa68d 100644 --- a/drivers/gpu/drm/virtio/virtgpu_drv.h +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h @@ -355,8 +355,8 @@ struct drm_plane *virtio_gpu_plane_init(struct virtio_gpu_device *vgdev, int index); /* virtio_gpu_fence.c */ -struct virtio_gpu_fence *virtio_gpu_fence_alloc( - struct virtio_gpu_device *vgdev); +struct virtio_gpu_fence *virtio_gpu_fence_alloc(struct virtio_gpu_device *vgdev, + struct virtio_gpu_fpriv *fpriv); void virtio_gpu_fence_emit(struct virtio_gpu_device *vgdev, struct virtio_gpu_ctrl_hdr *cmd_hdr, struct virtio_gpu_fence *fence); diff --git a/drivers/gpu/drm/virtio/virtgpu_fence.c b/drivers/gpu/drm/virtio/virtgpu_fence.c index 2fe9c7ebcbd4..f0a7ef80e484 100644 --- a/drivers/gpu/drm/virtio/virtgpu_fence.c +++ b/drivers/gpu/drm/virtio/virtgpu_fence.c @@ -73,7 +73,8 @@ static const struct dma_fence_ops virtio_fence_ops = { .timeline_value_str = virtio_timeline_value_str, }; -struct virtio_gpu_fence *virtio_gpu_fence_alloc(struct virtio_gpu_device *vgdev) +struct virtio_gpu_fence *virtio_gpu_fence_alloc(struct virtio_gpu_device *vgdev, + struct virtio_gpu_fpriv *fpriv) { struct virtio_gpu_fence_driver *drv = &vgdev->fence_drv; struct virtio_gpu_fence *fence = kzalloc(sizeof(struct virtio_gpu_fence), diff --git a/drivers/gpu/drm/virtio/virtgpu_ioctl.c b/drivers/gpu/drm/virtio/virtgpu_ioctl.c index 336cc9143205..4860dcb3b3bb 100644 --- a/drivers/gpu/drm/virtio/virtgpu_ioctl.c +++ b/drivers/gpu/drm/virtio/virtgpu_ioctl.c @@ -160,7 +160,7 @@ static int virtio_gpu_execbuffer_ioctl(struct drm_device *dev, void *data, goto out_memdup; } - out_fence = virtio_gpu_fence_alloc(vgdev); + out_fence = virtio_gpu_fence_alloc(vgdev, vfpriv); if(!out_fence) { ret = -ENOMEM; goto out_unresv; @@ -226,6 +226,7 @@ static int virtio_gpu_resource_create_ioctl(struct drm_device *dev, void *data, struct drm_file *file) { struct virtio_gpu_device *vgdev = dev->dev_private; + struct virtio_gpu_fpriv *vfpriv = file->driver_priv; struct drm_virtgpu_resource_create *rc = data; struct virtio_gpu_fence *fence; int ret; @@ -265,7 +266,7 @@ static int virtio_gpu_resource_create_ioctl(struct drm_device *dev, void *data, if (params.size == 0) params.size = PAGE_SIZE; - fence = virtio_gpu_fence_alloc(vgdev); + fence = virtio_gpu_fence_alloc(vgdev, vfpriv); if (!fence) return -ENOMEM; ret = virtio_gpu_object_create(vgdev, ¶ms, &qobj, fence); @@ -329,7 +330,7 @@ static int virtio_gpu_transfer_from_host_ioctl(struct drm_device *dev, if (ret != 0) goto err_put_free; - fence = virtio_gpu_fence_alloc(vgdev); + fence = virtio_gpu_fence_alloc(vgdev, vfpriv); if (!fence) { ret = -ENOMEM; goto err_unlock; @@ -375,7 +376,7 @@ static int virtio_gpu_transfer_to_host_ioctl(struct drm_device *dev, void *data, goto err_put_free; ret = -ENOMEM; - fence = virtio_gpu_fence_alloc(vgdev); + fence = virtio_gpu_fence_alloc(vgdev, vfpriv); if (!fence) goto err_unlock; diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c b/drivers/gpu/drm/virtio/virtgpu_plane.c index 52d24179bcec..0cf43936abb3 100644 --- a/drivers/gpu/drm/virtio/virtgpu_plane.c +++ b/drivers/gpu/drm/virtio/virtgpu_plane.c @@ -202,7 +202,7 @@ static int virtio_gpu_cursor_prepare_fb(struct drm_plane *plane, vgfb = to_virtio_gpu_framebuffer(new_state->fb); bo = gem_to_virtio_gpu_obj(vgfb->base.obj[0]); if (bo && bo->dumb && (plane->state->fb != new_state->fb)) { - vgfb->fence = virtio_gpu_fence_alloc(vgdev); + vgfb->fence = virtio_gpu_fence_alloc(vgdev, NULL); if (!vgfb->fence) return -ENOMEM; } From patchwork Tue Mar 10 01:08:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gurchetan Singh X-Patchwork-Id: 11428275 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5685614B7 for ; Tue, 10 Mar 2020 01:08:40 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 337FC24649 for ; Tue, 10 Mar 2020 01:08:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="UoFrvzBK" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 337FC24649 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id D3B406E7D2; Tue, 10 Mar 2020 01:08:33 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-pf1-x443.google.com (mail-pf1-x443.google.com [IPv6:2607:f8b0:4864:20::443]) by gabe.freedesktop.org (Postfix) with ESMTPS id 646DA6E5D3 for ; Tue, 10 Mar 2020 01:08:31 +0000 (UTC) Received: by mail-pf1-x443.google.com with SMTP id u68so4942310pfb.2 for ; Mon, 09 Mar 2020 18:08:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=d1gir7XHID34j/xNq8rv+e7yfugiCYxyP4ul0n3cDDo=; b=UoFrvzBKYbJDhuC85UgYW7DXhN2Lrd122AVz3NTBGZj3Mj2UkkmAmGjmwelzPc8XVB FvhguscX5HLXubUQIDzSXjPzQIxXLTrk/IxZKGZDkPcmeRSETfcsDrRVzpNSh6TPpXH4 ebxI0z6UuJohi3T3S3v9PVOIdkN/o+kOp0UzU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=d1gir7XHID34j/xNq8rv+e7yfugiCYxyP4ul0n3cDDo=; b=gBDa2SXWmu5YHgmclJhaM+Euce7HQuJoXDaRZ8+cx1kvnnLCCF26K9UB+UWkMARAiW hyXadrSwQWlZQkuA+TfmXAiMhnOO0rgBmxNWXvXtBu+P6OAB3WIA93O5WBIXDPdNoKA9 fkFB0o5tcfB9O9ZByupOq3WCgztAaqXQlgIgfp8ff0o+qa5l/MerKNcQzVl/VV895LbR tj37cVQwHv8Hal6lb1GQilYMlTwiCYulGpdDXUoqr04JqfdqjWVSI4n/QkbiQ4GzBPrg 5+M046vYAoSq4Q6FKC2wHc+edeXiaHihe4/Cz3oVY+oUEglDANZzY8BTbrOz87AhcjP3 In3g== X-Gm-Message-State: ANhLgQ3A3S7TRn5Ra1bGapApxWiuSsVaSOQQI5lmkXbTzyQTjrSG0L76 w5Pn/bOPcBrz3ZSVpDgQHg7TeIuv7e8= X-Google-Smtp-Source: ADFU+vuPIsPQmz5pKGctu79kSP6hj4AW6VpOIcHMYkXjW1nFSMbFhPSMFCjd1oA+zwh7HexVTKUG9g== X-Received: by 2002:a63:fb0c:: with SMTP id o12mr7367077pgh.204.1583802510563; Mon, 09 Mar 2020 18:08:30 -0700 (PDT) Received: from gurchetansingh0.mtv.corp.google.com ([2620:15c:202:201:bc97:5740:52a7:6875]) by smtp.gmail.com with ESMTPSA id s126sm22864070pfb.143.2020.03.09.18.08.29 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 09 Mar 2020 18:08:30 -0700 (PDT) From: Gurchetan Singh To: dri-devel@lists.freedesktop.org Subject: [RFC PATCH 4/8] drm/virtio: rename sync_seq and last_seq Date: Mon, 9 Mar 2020 18:08:14 -0700 Message-Id: <20200310010818.569-5-gurchetansingh@chromium.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200310010818.569-1-gurchetansingh@chromium.org> References: <20200310010818.569-1-gurchetansingh@chromium.org> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: chadversary@chromium.org, Gurchetan Singh , kraxel@redhat.com, jbates@chromium.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To be clearer about our intentions to differentiate per-context sequence numbers and fence IDs, let's rename these variables. Signed-off-by: Gurchetan Singh --- drivers/gpu/drm/virtio/virtgpu_debugfs.c | 4 ++-- drivers/gpu/drm/virtio/virtgpu_drv.h | 4 ++-- drivers/gpu/drm/virtio/virtgpu_fence.c | 9 +++++---- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/virtio/virtgpu_debugfs.c b/drivers/gpu/drm/virtio/virtgpu_debugfs.c index e27120d512b0..807fe7e9e4d9 100644 --- a/drivers/gpu/drm/virtio/virtgpu_debugfs.c +++ b/drivers/gpu/drm/virtio/virtgpu_debugfs.c @@ -60,8 +60,8 @@ virtio_gpu_debugfs_irq_info(struct seq_file *m, void *data) struct virtio_gpu_device *vgdev = node->minor->dev->dev_private; seq_printf(m, "fence %llu %lld\n", - (u64)atomic64_read(&vgdev->fence_drv.last_seq), - vgdev->fence_drv.sync_seq); + (u64)atomic64_read(&vgdev->fence_drv.last_fence_id), + vgdev->fence_drv.current_fence_id); return 0; } diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h index 76223e2aa68d..7d96d0fdcbac 100644 --- a/drivers/gpu/drm/virtio/virtgpu_drv.h +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h @@ -98,8 +98,8 @@ typedef void (*virtio_gpu_resp_cb)(struct virtio_gpu_device *vgdev, struct virtio_gpu_vbuffer *vbuf); struct virtio_gpu_fence_driver { - atomic64_t last_seq; - uint64_t sync_seq; + atomic64_t last_fence_id; + uint64_t current_fence_id; uint64_t context; struct list_head fences; spinlock_t lock; diff --git a/drivers/gpu/drm/virtio/virtgpu_fence.c b/drivers/gpu/drm/virtio/virtgpu_fence.c index f0a7ef80e484..0c32f3f72737 100644 --- a/drivers/gpu/drm/virtio/virtgpu_fence.c +++ b/drivers/gpu/drm/virtio/virtgpu_fence.c @@ -48,7 +48,7 @@ static bool virtio_fence_signaled(struct dma_fence *f) /* leaked fence outside driver before completing * initialization with virtio_gpu_fence_emit */ return false; - if (atomic64_read(&fence->drv->last_seq) >= fence->f.seqno) + if (atomic64_read(&fence->drv->last_fence_id) >= fence->f.seqno) return true; return false; } @@ -62,7 +62,8 @@ static void virtio_timeline_value_str(struct dma_fence *f, char *str, int size) { struct virtio_gpu_fence *fence = to_virtio_fence(f); - snprintf(str, size, "%llu", (u64)atomic64_read(&fence->drv->last_seq)); + snprintf(str, size, "%llu", + (u64)atomic64_read(&fence->drv->last_fence_id)); } static const struct dma_fence_ops virtio_fence_ops = { @@ -101,7 +102,7 @@ void virtio_gpu_fence_emit(struct virtio_gpu_device *vgdev, unsigned long irq_flags; spin_lock_irqsave(&drv->lock, irq_flags); - fence->f.seqno = ++drv->sync_seq; + fence->f.seqno = ++drv->current_fence_id; dma_fence_get(&fence->f); list_add_tail(&fence->node, &drv->fences); spin_unlock_irqrestore(&drv->lock, irq_flags); @@ -120,7 +121,7 @@ void virtio_gpu_fence_event_process(struct virtio_gpu_device *vgdev, unsigned long irq_flags; spin_lock_irqsave(&drv->lock, irq_flags); - atomic64_set(&vgdev->fence_drv.last_seq, fence_id); + atomic64_set(&vgdev->fence_drv.last_fence_id, fence_id); list_for_each_entry_safe(fence, tmp, &drv->fences, node) { if (fence_id < fence->f.seqno) continue; From patchwork Tue Mar 10 01:08:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gurchetan Singh X-Patchwork-Id: 11428277 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id AAC9C92A for ; Tue, 10 Mar 2020 01:08:42 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8805324649 for ; Tue, 10 Mar 2020 01:08:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="BNNE+H+W" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8805324649 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E6E8F6E7D3; Tue, 10 Mar 2020 01:08:33 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-pg1-x541.google.com (mail-pg1-x541.google.com [IPv6:2607:f8b0:4864:20::541]) by gabe.freedesktop.org (Postfix) with ESMTPS id BE0B66E7D3 for ; Tue, 10 Mar 2020 01:08:32 +0000 (UTC) Received: by mail-pg1-x541.google.com with SMTP id z12so5523696pgl.4 for ; Mon, 09 Mar 2020 18:08:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ZpDaE/upXkkrWrhg687reoO9l+UQdJsrn5UcDOmkcwA=; b=BNNE+H+Wj/jTFIYiL3VcCo4YN+abIKzEUC85aKZvlH9M+R9E/s3C9tXLpEebuRNvd9 Bjqe4GebYjPhsAddtCiEQQIZhwpfdGmWgSOswdGBnEX7XbRaRIUjAV4KekU6+3yF3KzU 2pvHkUF7VsIwrUnkuNAjoSbjt2ZL3yBhBYXUQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ZpDaE/upXkkrWrhg687reoO9l+UQdJsrn5UcDOmkcwA=; b=t2d2vKtG1i3lOL0AWsoED0WzKJW6+nkrY4cPvPmBw2SzuB9pQ5rKd4dvYk1HpiQi1V Yp+FfaoLuZB1AipSu1oglJ3Nmva1gi7rM/Lx0gZ4zJAslq6FzmysQbMldp4ab7tkUxUZ p37DQd8W07Yu3ZANFFHpnUq7dHf/uYai4Hj8QaE/G6oVnO73ZtUljUt6tsgI7yOFqWYn hMx0PfUwRHDdj5ISowRQP12eH9O3e5zdjL9mgwZ4y4xboa7GA6aDyvOvC4fP1AEvVwTA In2cbo9k6xQmE9It3tTDuN1YADcuKXaGNP93xN1ZDshnLZG3yI0VPbpX3BDyV+WAxabd 0y1A== X-Gm-Message-State: ANhLgQ1uIVT7nEAqacUruabyo9V+VIloCO1q1doTEK9jSqvLvOkutGeZ eTN66jcAaVgJKI2Cg5T+wIEVXz8/xaY= X-Google-Smtp-Source: ADFU+vuenTcrZ+DYd0PSV7P7dSLWbA0t3Uargzl1sdBGADPwpOlfnPX1cFSZsbW0hk8D9hd1aPJksQ== X-Received: by 2002:a63:c507:: with SMTP id f7mr18140532pgd.278.1583802512043; Mon, 09 Mar 2020 18:08:32 -0700 (PDT) Received: from gurchetansingh0.mtv.corp.google.com ([2620:15c:202:201:bc97:5740:52a7:6875]) by smtp.gmail.com with ESMTPSA id s126sm22864070pfb.143.2020.03.09.18.08.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 09 Mar 2020 18:08:31 -0700 (PDT) From: Gurchetan Singh To: dri-devel@lists.freedesktop.org Subject: [RFC PATCH 5/8] drm/virtio: track fence_id in virtio_gpu_fence Date: Mon, 9 Mar 2020 18:08:15 -0700 Message-Id: <20200310010818.569-6-gurchetansingh@chromium.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200310010818.569-1-gurchetansingh@chromium.org> References: <20200310010818.569-1-gurchetansingh@chromium.org> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: chadversary@chromium.org, Gurchetan Singh , kraxel@redhat.com, jbates@chromium.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Each fence should be associated with a [fence ID, context ID, seqno]. Signed-off-by: Gurchetan Singh --- drivers/gpu/drm/virtio/virtgpu_drv.h | 1 + drivers/gpu/drm/virtio/virtgpu_fence.c | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.h b/drivers/gpu/drm/virtio/virtgpu_drv.h index 7d96d0fdcbac..e98d1a4cbda9 100644 --- a/drivers/gpu/drm/virtio/virtgpu_drv.h +++ b/drivers/gpu/drm/virtio/virtgpu_drv.h @@ -107,6 +107,7 @@ struct virtio_gpu_fence_driver { struct virtio_gpu_fence { struct dma_fence f; + uint64_t fence_id; struct virtio_gpu_fence_driver *drv; struct list_head node; }; diff --git a/drivers/gpu/drm/virtio/virtgpu_fence.c b/drivers/gpu/drm/virtio/virtgpu_fence.c index 0c32f3f72737..d63848178a58 100644 --- a/drivers/gpu/drm/virtio/virtgpu_fence.c +++ b/drivers/gpu/drm/virtio/virtgpu_fence.c @@ -102,7 +102,8 @@ void virtio_gpu_fence_emit(struct virtio_gpu_device *vgdev, unsigned long irq_flags; spin_lock_irqsave(&drv->lock, irq_flags); - fence->f.seqno = ++drv->current_fence_id; + fence->fence_id = ++drv->current_fence_id; + fence->f.seqno = fence->fence_id; dma_fence_get(&fence->f); list_add_tail(&fence->node, &drv->fences); spin_unlock_irqrestore(&drv->lock, irq_flags); @@ -110,7 +111,7 @@ void virtio_gpu_fence_emit(struct virtio_gpu_device *vgdev, trace_dma_fence_emit(&fence->f); cmd_hdr->flags |= cpu_to_le32(VIRTIO_GPU_FLAG_FENCE); - cmd_hdr->fence_id = cpu_to_le64(fence->f.seqno); + cmd_hdr->fence_id = cpu_to_le64(fence->fence_id); } void virtio_gpu_fence_event_process(struct virtio_gpu_device *vgdev, From patchwork Tue Mar 10 01:08:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gurchetan Singh X-Patchwork-Id: 11428283 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B0A6E14B7 for ; Tue, 10 Mar 2020 01:08:46 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8E07F24649 for ; Tue, 10 Mar 2020 01:08:46 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="XFuZgQI6" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8E07F24649 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 64C276E7DA; Tue, 10 Mar 2020 01:08:41 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-pf1-x441.google.com (mail-pf1-x441.google.com [IPv6:2607:f8b0:4864:20::441]) by gabe.freedesktop.org (Postfix) with ESMTPS id 92A436E7D4 for ; Tue, 10 Mar 2020 01:08:34 +0000 (UTC) Received: by mail-pf1-x441.google.com with SMTP id b72so2089882pfb.11 for ; Mon, 09 Mar 2020 18:08:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ZsJUbUNfiESRLuYlVmUT7nhSudXoWYkiShdhs0IArls=; b=XFuZgQI6L8AD8ZC+wJcMMlOpNhRPxKuZmIDUI2Dp7pePszq0+psnLUZcWLxHzhjkLF cqmX4g/KD529guet6IQgap1svMGkP1vVFKGY83mrwc6CIEWa0x8VJCm+SgBiIAIhMRh+ 49uuYA/BnPQCbbsstNRnaqX3Xte/zMhOMxnjs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ZsJUbUNfiESRLuYlVmUT7nhSudXoWYkiShdhs0IArls=; b=HzPoP/i75Tz8TI42eK8tv7lSkB6PpwpW6QVmWB+XSVGSRRikCao+4yYOGDd6p9C9bz 9dyThKLSBMdEcuv0oQ00rgM5yX0S4wbpgXX6Ty8OYGzLtc10Z8nnXTxXalNcIIqW1hOB ZFM4ob1/VYF7b0phQ2wgcaO3Pjov1+nIyCfYtvBglwnE5dDomicOQX1HDLHLNg2XpguL wrCqypUoVxnCRS4NcAhnCsDynIQO6yYd1qf5WrGNlwi8FEVNcC4ANfIlsU36pqBoQd9B 9GTNVJIB+VFBOZOpKuKMqxBF+Fknd+DvpqSQfi3EgVBe9ocsDStkpj5oQ/UH8/KT5+/n usoA== X-Gm-Message-State: ANhLgQ0TQIh0YNc2eBsfUxsXS9ziBnXehSON91qzKC1s6Kix9UT9nvLL ohdj3AmAWuEXwVULVucwriPP9em+ez8= X-Google-Smtp-Source: ADFU+vvmr5q0OOEvFpwogpGPH2Yy12Jt7Uqeh8fQH2kGqEa8LQskkrSPh9Hx6Q3D13gBP58mArOVQA== X-Received: by 2002:a63:7a5a:: with SMTP id j26mr19134630pgn.447.1583802513598; Mon, 09 Mar 2020 18:08:33 -0700 (PDT) Received: from gurchetansingh0.mtv.corp.google.com ([2620:15c:202:201:bc97:5740:52a7:6875]) by smtp.gmail.com with ESMTPSA id s126sm22864070pfb.143.2020.03.09.18.08.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 09 Mar 2020 18:08:33 -0700 (PDT) From: Gurchetan Singh To: dri-devel@lists.freedesktop.org Subject: [RFC PATCH 6/8] virtio/drm: rework virtio_fence_signaled Date: Mon, 9 Mar 2020 18:08:16 -0700 Message-Id: <20200310010818.569-7-gurchetansingh@chromium.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200310010818.569-1-gurchetansingh@chromium.org> References: <20200310010818.569-1-gurchetansingh@chromium.org> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: chadversary@chromium.org, Gurchetan Singh , kraxel@redhat.com, jbates@chromium.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" We signal the fences ourselves in virtio_gpu_fence_event_process, shortly after we set last_fence_id. The window of time is small enough such that it may be possible to return false in this optional callback and rely on DMA_FENCE_FLAG_SIGNALED_BIT. Signed-off-by: Gurchetan Singh --- drivers/gpu/drm/virtio/virtgpu_fence.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/virtio/virtgpu_fence.c b/drivers/gpu/drm/virtio/virtgpu_fence.c index d63848178a58..a63a383347c4 100644 --- a/drivers/gpu/drm/virtio/virtgpu_fence.c +++ b/drivers/gpu/drm/virtio/virtgpu_fence.c @@ -43,13 +43,10 @@ static const char *virtio_get_timeline_name(struct dma_fence *f) static bool virtio_fence_signaled(struct dma_fence *f) { struct virtio_gpu_fence *fence = to_virtio_fence(f); - - if (WARN_ON_ONCE(fence->f.seqno == 0)) - /* leaked fence outside driver before completing - * initialization with virtio_gpu_fence_emit */ - return false; - if (atomic64_read(&fence->drv->last_fence_id) >= fence->f.seqno) - return true; + /* leaked fence outside driver before completing + * initialization with virtio_gpu_fence_emit + */ + WARN_ON_ONCE(fence->fence_id == 0); return false; } From patchwork Tue Mar 10 01:08:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gurchetan Singh X-Patchwork-Id: 11428279 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0DBE492A for ; Tue, 10 Mar 2020 01:08:44 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DECEF24649 for ; Tue, 10 Mar 2020 01:08:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="FmMcxGRi" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DECEF24649 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 85B126E7D4; Tue, 10 Mar 2020 01:08:36 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-pj1-x1042.google.com (mail-pj1-x1042.google.com [IPv6:2607:f8b0:4864:20::1042]) by gabe.freedesktop.org (Postfix) with ESMTPS id C6CA16E7D4 for ; Tue, 10 Mar 2020 01:08:35 +0000 (UTC) Received: by mail-pj1-x1042.google.com with SMTP id l41so694002pjb.1 for ; Mon, 09 Mar 2020 18:08:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=m9rXj+bE+f/lEJO54QQ+k2mkuMCg4xvTuIP4J9XcSu4=; b=FmMcxGRiRX8z+EbrFgcmKx6u+/TelIT6ES3xNNcduHNU9rKLqU+MLSqrjAKbOqEUVe vMVTWHsV5Iq27jMg3n4bRnu7OQeCpP9vriL/TupESKWn6DYFUphQrA1FM3VMFmfumIkU z+Q8xlMJDki41ESEFdzIyQ3cC+d8H4CTC9Bok= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=m9rXj+bE+f/lEJO54QQ+k2mkuMCg4xvTuIP4J9XcSu4=; b=QzveWDxT5FioHFHLd0jXxO7OCX8Hwd4hWfPuF2leWiWQViBIj7mHvOSRANh/PkYqNS 8CTW5Dx5RAR/lk3Ayk642cXWwyUkKZEX8qDgczibs0oLmFLRIENICHOGAWMMADRgpLu2 iPPjVaDkgjMoAGtMBc0R39+rZ9O0VOuNhW9NbfUl/2QMdX8r1TElLiglWpmlVXwn8pav yG2IrxPV2fdSxJb/V3g3B1gPDgXMMH7qynFRx7izT45jjvUgA0Lab7Aa38DZuIbgNMCi J+pcIHaRxcE2SZM2h5R5FDJRIYvYlyHu+/EB7aYcTNyvq+gXQs8pMd4vpspfOi1wuRpC jwEA== X-Gm-Message-State: ANhLgQ3CYdHc3v6aHECg+K/YILd/DCHcq2x3h2ZVGovx2b9TUzw1U83W cFAcLfwTYVd7jEdnsMqYjw4YtDdlXcw= X-Google-Smtp-Source: ADFU+vuZTdkwzipvb5CxKDY+0QhNKXCXyznjC5UmV4yYHEwrjoUorRrAXjF1TesgkdwGvP9RhOjysQ== X-Received: by 2002:a17:902:6ac7:: with SMTP id i7mr17702074plt.314.1583802515166; Mon, 09 Mar 2020 18:08:35 -0700 (PDT) Received: from gurchetansingh0.mtv.corp.google.com ([2620:15c:202:201:bc97:5740:52a7:6875]) by smtp.gmail.com with ESMTPSA id s126sm22864070pfb.143.2020.03.09.18.08.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 09 Mar 2020 18:08:34 -0700 (PDT) From: Gurchetan Singh To: dri-devel@lists.freedesktop.org Subject: [RFC PATCH 7/8] drm/virtio: check context when signaling Date: Mon, 9 Mar 2020 18:08:17 -0700 Message-Id: <20200310010818.569-8-gurchetansingh@chromium.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200310010818.569-1-gurchetansingh@chromium.org> References: <20200310010818.569-1-gurchetansingh@chromium.org> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: chadversary@chromium.org, Gurchetan Singh , kraxel@redhat.com, jbates@chromium.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" This change: - Lookups virtgpu_fence given a fence_id - Signals all prior fences in a given context - Signals current fence No functional changes yet, since all fences are initialized from context 0. Signed-off-by: Gurchetan Singh --- drivers/gpu/drm/virtio/virtgpu_fence.c | 27 ++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/virtio/virtgpu_fence.c b/drivers/gpu/drm/virtio/virtgpu_fence.c index a63a383347c4..a6c6f498e79e 100644 --- a/drivers/gpu/drm/virtio/virtgpu_fence.c +++ b/drivers/gpu/drm/virtio/virtgpu_fence.c @@ -115,17 +115,32 @@ void virtio_gpu_fence_event_process(struct virtio_gpu_device *vgdev, u64 fence_id) { struct virtio_gpu_fence_driver *drv = &vgdev->fence_drv; - struct virtio_gpu_fence *fence, *tmp; + struct virtio_gpu_fence *signaled, *curr, *tmp; unsigned long irq_flags; spin_lock_irqsave(&drv->lock, irq_flags); atomic64_set(&vgdev->fence_drv.last_fence_id, fence_id); - list_for_each_entry_safe(fence, tmp, &drv->fences, node) { - if (fence_id < fence->f.seqno) + list_for_each_entry_safe(curr, tmp, &drv->fences, node) { + if (fence_id != curr->fence_id) continue; - dma_fence_signal_locked(&fence->f); - list_del(&fence->node); - dma_fence_put(&fence->f); + + signaled = curr; + list_for_each_entry_safe(curr, tmp, &drv->fences, node) { + if (signaled->f.context != curr->f.context) + continue; + + if (!dma_fence_is_later(&signaled->f, &curr->f)) + continue; + + dma_fence_signal_locked(&curr->f); + list_del(&curr->node); + dma_fence_put(&curr->f); + } + + dma_fence_signal_locked(&signaled->f); + list_del(&signaled->node); + dma_fence_put(&signaled->f); + break; } spin_unlock_irqrestore(&drv->lock, irq_flags); } From patchwork Tue Mar 10 01:08:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gurchetan Singh X-Patchwork-Id: 11428281 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5A05714B7 for ; Tue, 10 Mar 2020 01:08:45 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 3756024649 for ; Tue, 10 Mar 2020 01:08:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="RHeNH8VT" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3756024649 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 438E16E7D5; Tue, 10 Mar 2020 01:08:39 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-pj1-x1043.google.com (mail-pj1-x1043.google.com [IPv6:2607:f8b0:4864:20::1043]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0B23D6E7D5 for ; Tue, 10 Mar 2020 01:08:38 +0000 (UTC) Received: by mail-pj1-x1043.google.com with SMTP id l36so654443pjb.3 for ; Mon, 09 Mar 2020 18:08:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=lCtBJaSVAsGbad4sHSsx1lF9Q6IZOkOYLdu121iqZz0=; b=RHeNH8VTRNh2Opf5Vv9ZIoCFq7n9kubVtzANHNrhtCidHXpeATevQJeZsQijQshxei 0xz/9ZvG+8Dy8JQnCCmcpTEidgmqQj9rMdiK/HxmGYR/Fds3HolSH4xVhHq7zy/MPWCo w1Qp5OuhnXRyU6Y8taa05hfERL1scCVhGfpyQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=lCtBJaSVAsGbad4sHSsx1lF9Q6IZOkOYLdu121iqZz0=; b=MExBCgMIkB+GaZy9k/uQrsaRnNoBOk+sH8h+g7yWwYxo3UfUJiQO6PmVJMrTD+2WXa PH+gfdnfgfJ5Bx/XPXvpoWH5rJx9Hxxu861Fw5hBkDQpYvpBhcVdFM92xruiusxVBflt 8S5lBub+KjxLn3XeRsKMStr1RTHZYIcVs3j8EQiCqfbfddprLLhdfOj1Uw6tbw6vLici UB/vv3VxR+BN1FAuJADO+SH17i+265nvkzUHEqQ1leJen3gbai3xM2Rhl2YQtpIlF5Zd y/GxvdExd14/e9GX0jLdy8jCLpJ8hfY6ZxWdpS+G1VCFuSFKsm7kwR37Fum50m0/iF74 d4xg== X-Gm-Message-State: ANhLgQ2DckuuyBlBjR59U2Y870IKks3gkuDAS+TtXWTABpOzg39bmcZ8 E5iRXyP2AQcjyfhGiMA5k8z2dbDcp44= X-Google-Smtp-Source: ADFU+vv81A7fcWxqng19jL7brlOHq0/nbRKydjhbZR+RvV5sey9zAE5icFu1Ms567eWoHAyoHOcmrQ== X-Received: by 2002:a17:902:54f:: with SMTP id 73mr18013545plf.255.1583802517275; Mon, 09 Mar 2020 18:08:37 -0700 (PDT) Received: from gurchetansingh0.mtv.corp.google.com ([2620:15c:202:201:bc97:5740:52a7:6875]) by smtp.gmail.com with ESMTPSA id s126sm22864070pfb.143.2020.03.09.18.08.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 09 Mar 2020 18:08:36 -0700 (PDT) From: Gurchetan Singh To: dri-devel@lists.freedesktop.org Subject: [RFC PATCH 8/8] drm/virtio: enable per context fencing Date: Mon, 9 Mar 2020 18:08:18 -0700 Message-Id: <20200310010818.569-9-gurchetansingh@chromium.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200310010818.569-1-gurchetansingh@chromium.org> References: <20200310010818.569-1-gurchetansingh@chromium.org> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: chadversary@chromium.org, Gurchetan Singh , kraxel@redhat.com, jbates@chromium.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" If there's a 3D context available, initialize the fence using the 3D context's fence context. We can't process just the largest fence id anymore, since it's not the same as the sequence number now. Signed-off-by: Gurchetan Singh --- drivers/gpu/drm/virtio/virtgpu_fence.c | 15 ++++++++++++--- drivers/gpu/drm/virtio/virtgpu_vq.c | 4 +--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/virtio/virtgpu_fence.c b/drivers/gpu/drm/virtio/virtgpu_fence.c index a6c6f498e79e..bfcb41bcaa68 100644 --- a/drivers/gpu/drm/virtio/virtgpu_fence.c +++ b/drivers/gpu/drm/virtio/virtgpu_fence.c @@ -30,6 +30,8 @@ #define to_virtio_fence(x) \ container_of(x, struct virtio_gpu_fence, f) +static atomic_t fence_seq = ATOMIC_INIT(0); + static const char *virtio_get_driver_name(struct dma_fence *f) { return "virtio_gpu"; @@ -52,7 +54,7 @@ static bool virtio_fence_signaled(struct dma_fence *f) static void virtio_fence_value_str(struct dma_fence *f, char *str, int size) { - snprintf(str, size, "%llu", f->seqno); + snprintf(str, size, "[%llu, %llu]", f->context, f->seqno); } static void virtio_timeline_value_str(struct dma_fence *f, char *str, int size) @@ -74,9 +76,11 @@ static const struct dma_fence_ops virtio_fence_ops = { struct virtio_gpu_fence *virtio_gpu_fence_alloc(struct virtio_gpu_device *vgdev, struct virtio_gpu_fpriv *fpriv) { + uint64_t context; struct virtio_gpu_fence_driver *drv = &vgdev->fence_drv; struct virtio_gpu_fence *fence = kzalloc(sizeof(struct virtio_gpu_fence), GFP_KERNEL); + if (!fence) return fence; @@ -86,7 +90,13 @@ struct virtio_gpu_fence *virtio_gpu_fence_alloc(struct virtio_gpu_device *vgdev, * unknown yet. The fence must not be used outside of the driver * until virtio_gpu_fence_emit is called. */ - dma_fence_init(&fence->f, &virtio_fence_ops, &drv->lock, drv->context, 0); + if (fpriv) + context = fpriv->fence_context; + else + context = drv->context; + + dma_fence_init(&fence->f, &virtio_fence_ops, &drv->lock, context, + atomic_inc_return(&fence_seq)); return fence; } @@ -100,7 +110,6 @@ void virtio_gpu_fence_emit(struct virtio_gpu_device *vgdev, spin_lock_irqsave(&drv->lock, irq_flags); fence->fence_id = ++drv->current_fence_id; - fence->f.seqno = fence->fence_id; dma_fence_get(&fence->f); list_add_tail(&fence->node, &drv->fences); spin_unlock_irqrestore(&drv->lock, irq_flags); diff --git a/drivers/gpu/drm/virtio/virtgpu_vq.c b/drivers/gpu/drm/virtio/virtgpu_vq.c index 73854915ec34..e7d8b2398628 100644 --- a/drivers/gpu/drm/virtio/virtgpu_vq.c +++ b/drivers/gpu/drm/virtio/virtgpu_vq.c @@ -239,6 +239,7 @@ void virtio_gpu_dequeue_ctrl_func(struct work_struct *work) __func__, fence_id, f); } else { fence_id = f; + virtio_gpu_fence_event_process(vgdev, fence_id); } } if (entry->resp_cb) @@ -246,9 +247,6 @@ void virtio_gpu_dequeue_ctrl_func(struct work_struct *work) } wake_up(&vgdev->ctrlq.ack_queue); - if (fence_id) - virtio_gpu_fence_event_process(vgdev, fence_id); - list_for_each_entry_safe(entry, tmp, &reclaim_list, list) { if (entry->objs) virtio_gpu_array_put_free_delayed(vgdev, entry->objs);