From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gerd Hoffmann Subject: Re: [RFC 1/5] drm/virtio: add virtio_gpu_alloc_fence() Date: Tue, 13 Dec 2016 07:47:25 +0100 Message-ID: <1481611645.27088.56.camel@redhat.com> References: <1481575710-12535-1-git-send-email-gustavo@padovan.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id 819876E36F for ; Tue, 13 Dec 2016 09:14:40 +0000 (UTC) In-Reply-To: <1481575710-12535-1-git-send-email-gustavo@padovan.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Gustavo Padovan Cc: open list , dri-devel@lists.freedesktop.org, "open list:VIRTIO GPU DRIVER" , Gustavo Padovan List-Id: dri-devel@lists.freedesktop.org ICBIaSwKCj4gK3N0cnVjdCB2aXJ0aW9fZ3B1X2ZlbmNlICp2aXJ0aW9fZ3B1X2ZlbmNlX2FsbG9j KHN0cnVjdCB2aXJ0aW9fZ3B1X2RldmljZSAqdmdkZXYpCj4gK3sKPiArCXN0cnVjdCB2aXJ0aW9f Z3B1X2ZlbmNlX2RyaXZlciAqZHJ2ID0gJnZnZGV2LT5mZW5jZV9kcnY7Cj4gKwlzdHJ1Y3Qgdmly dGlvX2dwdV9mZW5jZSAqZmVuY2U7Cj4gKwl1bnNpZ25lZCBsb25nIGlycV9mbGFnczsKPiArCj4g KwlmZW5jZSA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCB2aXJ0aW9fZ3B1X2ZlbmNlKSwgR0ZQX0FU T01JQyk7Cj4gKwlpZiAoIWZlbmNlKQo+ICsJCXJldHVybiBOVUxMOwo+ICsKCj4gKwlzcGluX2xv Y2tfaXJxc2F2ZSgmZHJ2LT5sb2NrLCBpcnFfZmxhZ3MpOwo+ICsJZmVuY2UtPmRydiA9IGRydjsK PiArCWZlbmNlLT5zZXEgPSArK2Rydi0+c3luY19zZXE7Cj4gKwlkbWFfZmVuY2VfaW5pdCgmZmVu Y2UtPmYsICZ2aXJ0aW9fZmVuY2Vfb3BzLCAmZHJ2LT5sb2NrLAo+ICsJCSAgICAgICBkcnYtPmNv bnRleHQsIGZlbmNlLT5zZXEpOwo+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZHJ2LT5sb2Nr LCBpcnFfZmxhZ3MpOwoKc2VxIGFzc2lnbm1lbnQgLi4uCgo+ICsKPiArCXJldHVybiBmZW5jZTsK PiArfQo+ICsKPiAgaW50IHZpcnRpb19ncHVfZmVuY2VfZW1pdChzdHJ1Y3QgdmlydGlvX2dwdV9k ZXZpY2UgKnZnZGV2LAo+ICAJCQkgIHN0cnVjdCB2aXJ0aW9fZ3B1X2N0cmxfaGRyICpjbWRfaGRy LAo+IC0JCQkgIHN0cnVjdCB2aXJ0aW9fZ3B1X2ZlbmNlICoqZmVuY2UpCj4gKwkJCSAgc3RydWN0 IHZpcnRpb19ncHVfZmVuY2UgKmZlbmNlKQo+ICB7Cj4gIAlzdHJ1Y3QgdmlydGlvX2dwdV9mZW5j ZV9kcml2ZXIgKmRydiA9ICZ2Z2Rldi0+ZmVuY2VfZHJ2Owo+ICAJdW5zaWduZWQgbG9uZyBpcnFf ZmxhZ3M7Cj4gIAo+IC0JKmZlbmNlID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IHZpcnRpb19ncHVf ZmVuY2UpLCBHRlBfQVRPTUlDKTsKPiAtCWlmICgoKmZlbmNlKSA9PSBOVUxMKQo+IC0JCXJldHVy biAtRU5PTUVNOwo+IC0KPiAgCXNwaW5fbG9ja19pcnFzYXZlKCZkcnYtPmxvY2ssIGlycV9mbGFn cyk7Cj4gLQkoKmZlbmNlKS0+ZHJ2ID0gZHJ2Owo+IC0JKCpmZW5jZSktPnNlcSA9ICsrZHJ2LT5z eW5jX3NlcTsKPiAtCWRtYV9mZW5jZV9pbml0KCYoKmZlbmNlKS0+ZiwgJnZpcnRpb19mZW5jZV9v cHMsICZkcnYtPmxvY2ssCj4gLQkJICAgICAgIGRydi0+Y29udGV4dCwgKCpmZW5jZSktPnNlcSk7 CgouLi4gbXVzdCBzdGF5IGhlcmUuICBPdGhlcndpc2UgcmVxdWVzdHMgY2FuIGJlIHN1Ym1pdHRl ZCB0byB0aGUgdmlydApxdWV1ZSB3aXRoIGZlbmNlIHNlcXVlbmNlIG51bWJlcnMgb3V0IG9mIG9y ZGVyLgoKY2hlZXJzLAogIEdlcmQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932561AbcLMJOo convert rfc822-to-8bit (ORCPT ); Tue, 13 Dec 2016 04:14:44 -0500 Received: from mx1.redhat.com ([209.132.183.28]:45916 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752456AbcLMJOk (ORCPT ); Tue, 13 Dec 2016 04:14:40 -0500 Message-ID: <1481611645.27088.56.camel@redhat.com> Subject: Re: [RFC 1/5] drm/virtio: add virtio_gpu_alloc_fence() From: Gerd Hoffmann To: Gustavo Padovan Cc: dri-devel@lists.freedesktop.org, robdclark@gmail.com, Gustavo Padovan , David Airlie , "open list:VIRTIO GPU DRIVER" , open list Date: Tue, 13 Dec 2016 07:47:25 +0100 In-Reply-To: <1481575710-12535-1-git-send-email-gustavo@padovan.org> References: <1481575710-12535-1-git-send-email-gustavo@padovan.org> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT Mime-Version: 1.0 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Tue, 13 Dec 2016 09:14:40 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, > +struct virtio_gpu_fence *virtio_gpu_fence_alloc(struct virtio_gpu_device *vgdev) > +{ > + struct virtio_gpu_fence_driver *drv = &vgdev->fence_drv; > + struct virtio_gpu_fence *fence; > + unsigned long irq_flags; > + > + fence = kmalloc(sizeof(struct virtio_gpu_fence), GFP_ATOMIC); > + if (!fence) > + return NULL; > + > + spin_lock_irqsave(&drv->lock, irq_flags); > + fence->drv = drv; > + fence->seq = ++drv->sync_seq; > + dma_fence_init(&fence->f, &virtio_fence_ops, &drv->lock, > + drv->context, fence->seq); > + spin_unlock_irqrestore(&drv->lock, irq_flags); seq assignment ... > + > + return fence; > +} > + > int virtio_gpu_fence_emit(struct virtio_gpu_device *vgdev, > struct virtio_gpu_ctrl_hdr *cmd_hdr, > - struct virtio_gpu_fence **fence) > + struct virtio_gpu_fence *fence) > { > struct virtio_gpu_fence_driver *drv = &vgdev->fence_drv; > unsigned long irq_flags; > > - *fence = kmalloc(sizeof(struct virtio_gpu_fence), GFP_ATOMIC); > - if ((*fence) == NULL) > - return -ENOMEM; > - > spin_lock_irqsave(&drv->lock, irq_flags); > - (*fence)->drv = drv; > - (*fence)->seq = ++drv->sync_seq; > - dma_fence_init(&(*fence)->f, &virtio_fence_ops, &drv->lock, > - drv->context, (*fence)->seq); ... must stay here. Otherwise requests can be submitted to the virt queue with fence sequence numbers out of order. cheers, Gerd