Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp1415679ybv; Thu, 6 Feb 2020 03:44:07 -0800 (PST) X-Google-Smtp-Source: APXvYqwYZCvqeFCOopVzxGibkTvgYM1Oyxy/wA4kSK15uKiVeZLOUbqQcDsxj/BFhcWKYJxPkydB X-Received: by 2002:aca:5dc3:: with SMTP id r186mr6667789oib.137.1580989447680; Thu, 06 Feb 2020 03:44:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580989447; cv=none; d=google.com; s=arc-20160816; b=jd82qog30p965lCCHiFf4xAyrbLFnUR8kYWmqJCb5LllBocUqQLaMZ70cav3H1XuLM EJRV41DThiN/y6ozoCNxVB6SnMqRqd7qedf1gAQgn+6q7HyNSDNb9HB1JWIhBfrGX22f r3tpOW2IRQjeIA7ZjRLsB5QMMs6K8/UPwYEV+NPqlHRe3twuiwn0Wuw+AZTAh72ThUQ+ vpY1Ar6fO7E/OlhegC6WQJ2lideZ0JPbkshjKoYxiv5p0akfC/gBb+Yy2JP8MG9MXMvj D4Z4oec6BIKMCHHxDlu6+ZXOGGYZbMRpeQlj4qjb//QwNeudzVOI7Pd3V4LFi9DY4g+h i2Ng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature; bh=DvLLg4UuoGdHXGuG+nzeqHRzHI50bo/L7oKt8I1bkY8=; b=kOnM0E7XvwpMBvstb/4okcsapNy8RspMDdNOThRk/AjoiX5QvZ0tJjFPirrv3uVxQI K8w9chjQq/I6Q0BEFHXscB0O4n9fYvhfuQE1rdmmiFLQt0FqTnNfdma/vrRmEUdcS/4Y 9EWLGvB3ySCUAU/a8uYc8YRiBSCrpJsXlDLH0R1+sU6aRQFq8dewCiu/fy8DHb8fqEFr 6lNwYhmM+uByEBafB8isVocToSdYSGO6F+Zi+ThvEcMVluWAqKh7egxCCUFlAi8AzMVN 5oBVnWZPEmqhrzfajJ+Mt6vBPSCNrq8UglqSd+Z6MDyuEG+wxS02tFFypdXJyLisdlmT q4LQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=J1n8l0ME; 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=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 w5si1677584otq.238.2020.02.06.03.43.53; Thu, 06 Feb 2020 03:44:07 -0800 (PST) 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=@redhat.com header.s=mimecast20190719 header.b=J1n8l0ME; 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=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727615AbgBFLO1 (ORCPT + 99 others); Thu, 6 Feb 2020 06:14:27 -0500 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:36348 "EHLO us-smtp-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727538AbgBFLO0 (ORCPT ); Thu, 6 Feb 2020 06:14:26 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1580987665; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc; bh=DvLLg4UuoGdHXGuG+nzeqHRzHI50bo/L7oKt8I1bkY8=; b=J1n8l0MEAPCFem/tWgy/gxWL9YeWcpjiAoXrUfY/mtq7zXvsIn2qge5fPmglhMa5vGyXMn dH7a7TU8sahJWKflu0MUSGKp9lQvhaT1ImO4c6TNk3YeyrBljct37SVLRcOLzgTjfh/v9i WhMrNXDcv+VSqlSIQrLQnLnlq2uOn8g= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-289-SjDYNnCmM-ibN5OlXFyZpw-1; Thu, 06 Feb 2020 06:14:22 -0500 X-MC-Unique: SjDYNnCmM-ibN5OlXFyZpw-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 861D7DBA5; Thu, 6 Feb 2020 11:14:20 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-116-112.ams2.redhat.com [10.36.116.112]) by smtp.corp.redhat.com (Postfix) with ESMTP id AB34187B09; Thu, 6 Feb 2020 11:14:17 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id E5B9C1747D; Thu, 6 Feb 2020 12:14:16 +0100 (CET) From: Gerd Hoffmann To: dri-devel@lists.freedesktop.org Cc: gurchetansingh@chromium.org, olvaffe@gmail.com, 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] drm/virtio: fix ring free check Date: Thu, 6 Feb 2020 12:14:16 +0100 Message-Id: <20200206111416.31269-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If the virtio device supports indirect ring descriptors we need only one ring entry for the whole command. Take that into account when checking whenever the virtqueue has enough free entries for our command. Signed-off-by: Gerd Hoffmann --- drivers/gpu/drm/virtio/virtgpu_vq.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/virtio/virtgpu_vq.c b/drivers/gpu/drm/virtio/virtgpu_vq.c index 41e475fbd67b..a2ec09dba530 100644 --- a/drivers/gpu/drm/virtio/virtgpu_vq.c +++ b/drivers/gpu/drm/virtio/virtgpu_vq.c @@ -328,7 +328,8 @@ static void virtio_gpu_queue_ctrl_sgs(struct virtio_gpu_device *vgdev, { struct virtqueue *vq = vgdev->ctrlq.vq; bool notify = false; - int ret; + bool indirect; + int vqcnt, ret; again: spin_lock(&vgdev->ctrlq.qlock); @@ -341,9 +342,11 @@ static void virtio_gpu_queue_ctrl_sgs(struct virtio_gpu_device *vgdev, return; } - if (vq->num_free < elemcnt) { + indirect = virtio_has_feature(vgdev->vdev, VIRTIO_RING_F_INDIRECT_DESC); + vqcnt = indirect ? 1 : elemcnt; + if (vq->num_free < vqcnt) { spin_unlock(&vgdev->ctrlq.qlock); - wait_event(vgdev->ctrlq.ack_queue, vq->num_free >= elemcnt); + wait_event(vgdev->ctrlq.ack_queue, vq->num_free >= vqcnt); goto again; } -- 2.18.1