From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932169AbcAOO7d (ORCPT ); Fri, 15 Jan 2016 09:59:33 -0500 Received: from mail-yk0-f175.google.com ([209.85.160.175]:35594 "EHLO mail-yk0-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755061AbcAOO5G (ORCPT ); Fri, 15 Jan 2016 09:57:06 -0500 From: Gustavo Padovan To: Greg Kroah-Hartman Cc: linux-kernel@vger.kernel.org, devel@driverdev.osuosl.org, dri-devel@lists.freedesktop.org, daniels@collabora.com, =?UTF-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= , Riley Andrews , Daniel Vetter , Rob Clark , Greg Hackmann , John Harrison , Maarten Lankhorst , Gustavo Padovan Subject: [RFC 21/29] dma-buf/fence: add fence_create_on_timeline() Date: Fri, 15 Jan 2016 12:55:31 -0200 Message-Id: <1452869739-3304-22-git-send-email-gustavo@padovan.org> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1452869739-3304-1-git-send-email-gustavo@padovan.org> References: <1452869739-3304-1-git-send-email-gustavo@padovan.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Gustavo Padovan This functions in intended to replace sync_pt_create() and it does exactly the same thing sync_pt_create() did. Signed-off-by: Gustavo Padovan --- drivers/dma-buf/fence.c | 38 ++++++++++++++++++++++++++++++++++++++ drivers/staging/android/sync.c | 20 ++------------------ include/linux/fence.h | 3 +++ 3 files changed, 43 insertions(+), 18 deletions(-) diff --git a/drivers/dma-buf/fence.c b/drivers/dma-buf/fence.c index ec51146..0a07fcb 100644 --- a/drivers/dma-buf/fence.c +++ b/drivers/dma-buf/fence.c @@ -768,6 +768,44 @@ err_free_cb: EXPORT_SYMBOL(fence_wait_any_timeout); /** + * fence_create_on_timeline - create a fence and add it to the timeline + * or until timeout elapses + * @obj: [in] timeline object + * @ops: [in] fence_ops to use + * @size: [in] size to allocate struct fence + * @value: [in] value of this fence + * + * This function allocates a new fence and initialize it as a child of the + * fence_timeline provided. The value received is the seqno used to know + * when the fence is signaled. + * + * Returns NULL if fails to allocate memory or size is too small. + */ +struct fence *fence_create_on_timeline(struct fence_timeline *obj, + const struct fence_ops *ops, int size, + unsigned int value) +{ + unsigned long flags; + struct fence *fence; + + if (size < sizeof(*fence)) + return NULL; + + fence = kzalloc(size, GFP_KERNEL); + if (!fence) + return NULL; + + spin_lock_irqsave(&obj->lock, flags); + fence_timeline_get(obj); + fence_init(fence, ops, &obj->lock, obj->context, value); + list_add_tail(&fence->child_list, &obj->child_list_head); + INIT_LIST_HEAD(&fence->active_list); + spin_unlock_irqrestore(&obj->lock, flags); + return fence; +} +EXPORT_SYMBOL(fence_create_on_timeline); + +/** * fence_init - Initialize a custom fence. * @fence: [in] the fence to initialize * @ops: [in] the fence_ops for operations on this fence diff --git a/drivers/staging/android/sync.c b/drivers/staging/android/sync.c index a275108..2365db7 100644 --- a/drivers/staging/android/sync.c +++ b/drivers/staging/android/sync.c @@ -36,24 +36,8 @@ static const struct file_operations sync_fence_fops; struct fence *sync_pt_create(struct fence_timeline *obj, int size, u32 value) { - unsigned long flags; - struct fence *fence; - - if (size < sizeof(*fence)) - return NULL; - - fence = kzalloc(size, GFP_KERNEL); - if (!fence) - return NULL; - - spin_lock_irqsave(&obj->lock, flags); - fence_timeline_get(obj); - fence_init(fence, &sync_fence_ops, &obj->lock, - obj->context, value); - list_add_tail(&fence->child_list, &obj->child_list_head); - INIT_LIST_HEAD(&fence->active_list); - spin_unlock_irqrestore(&obj->lock, flags); - return fence; + return fence_create_on_timeline(obj, &sync_fence_ops, + sizeof(struct fence), value); } EXPORT_SYMBOL(sync_pt_create); diff --git a/include/linux/fence.h b/include/linux/fence.h index 8908433..adece43 100644 --- a/include/linux/fence.h +++ b/include/linux/fence.h @@ -212,6 +212,9 @@ struct fence_ops { void (*timeline_value_str)(struct fence *fence, char *str, int size); }; +struct fence *fence_create_on_timeline(struct fence_timeline *obj, + const struct fence_ops *ops, int size, + unsigned int value); void fence_init(struct fence *fence, const struct fence_ops *ops, spinlock_t *lock, unsigned context, unsigned seqno); -- 2.5.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gustavo Padovan Subject: [RFC 21/29] dma-buf/fence: add fence_create_on_timeline() Date: Fri, 15 Jan 2016 12:55:31 -0200 Message-ID: <1452869739-3304-22-git-send-email-gustavo@padovan.org> References: <1452869739-3304-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 mail-yk0-f182.google.com (mail-yk0-f182.google.com [209.85.160.182]) by gabe.freedesktop.org (Postfix) with ESMTPS id C97EE7A0FB for ; Fri, 15 Jan 2016 06:57:06 -0800 (PST) Received: by mail-yk0-f182.google.com with SMTP id k129so522534159yke.0 for ; Fri, 15 Jan 2016 06:57:06 -0800 (PST) In-Reply-To: <1452869739-3304-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: Greg Kroah-Hartman Cc: devel@driverdev.osuosl.org, daniels@collabora.com, Daniel Vetter , Riley Andrews , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= , Maarten Lankhorst , Gustavo Padovan , John Harrison List-Id: dri-devel@lists.freedesktop.org RnJvbTogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvLnVrPgoK VGhpcyBmdW5jdGlvbnMgaW4gaW50ZW5kZWQgdG8gcmVwbGFjZSBzeW5jX3B0X2NyZWF0ZSgpIGFu ZCBpdCBkb2VzCmV4YWN0bHkgdGhlIHNhbWUgdGhpbmcgc3luY19wdF9jcmVhdGUoKSBkaWQuCgpT aWduZWQtb2ZmLWJ5OiBHdXN0YXZvIFBhZG92YW4gPGd1c3Rhdm8ucGFkb3ZhbkBjb2xsYWJvcmEu Y28udWs+Ci0tLQogZHJpdmVycy9kbWEtYnVmL2ZlbmNlLmMgICAgICAgIHwgMzggKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3N5 bmMuYyB8IDIwICsrLS0tLS0tLS0tLS0tLS0tLS0tCiBpbmNsdWRlL2xpbnV4L2ZlbmNlLmggICAg ICAgICAgfCAgMyArKysKIDMgZmlsZXMgY2hhbmdlZCwgNDMgaW5zZXJ0aW9ucygrKSwgMTggZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL2ZlbmNlLmMgYi9kcml2ZXJz L2RtYS1idWYvZmVuY2UuYwppbmRleCBlYzUxMTQ2Li4wYTA3ZmNiIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2RtYS1idWYvZmVuY2UuYworKysgYi9kcml2ZXJzL2RtYS1idWYvZmVuY2UuYwpAQCAtNzY4 LDYgKzc2OCw0NCBAQCBlcnJfZnJlZV9jYjoKIEVYUE9SVF9TWU1CT0woZmVuY2Vfd2FpdF9hbnlf dGltZW91dCk7CiAKIC8qKgorICogZmVuY2VfY3JlYXRlX29uX3RpbWVsaW5lIC0gY3JlYXRlIGEg ZmVuY2UgYW5kIGFkZCBpdCB0byB0aGUgdGltZWxpbmUKKyAqIG9yIHVudGlsIHRpbWVvdXQgZWxh cHNlcworICogQG9iajoJW2luXQl0aW1lbGluZSBvYmplY3QKKyAqIEBvcHM6CVtpbl0JZmVuY2Vf b3BzIHRvIHVzZQorICogQHNpemU6CVtpbl0Jc2l6ZSB0byBhbGxvY2F0ZSBzdHJ1Y3QgZmVuY2UK KyAqIEB2YWx1ZToJW2luXQl2YWx1ZSBvZiB0aGlzIGZlbmNlCisgKgorICogVGhpcyBmdW5jdGlv biBhbGxvY2F0ZXMgYSBuZXcgZmVuY2UgYW5kIGluaXRpYWxpemUgaXQgYXMgYSBjaGlsZCBvZiB0 aGUKKyAqIGZlbmNlX3RpbWVsaW5lIHByb3ZpZGVkLiBUaGUgdmFsdWUgcmVjZWl2ZWQgaXMgdGhl IHNlcW5vIHVzZWQgdG8ga25vdworICogd2hlbiB0aGUgZmVuY2UgaXMgc2lnbmFsZWQuCisgKgor ICogUmV0dXJucyBOVUxMIGlmIGZhaWxzIHRvIGFsbG9jYXRlIG1lbW9yeSBvciBzaXplIGlzIHRv byBzbWFsbC4KKyAqLworc3RydWN0IGZlbmNlICpmZW5jZV9jcmVhdGVfb25fdGltZWxpbmUoc3Ry dWN0IGZlbmNlX3RpbWVsaW5lICpvYmosCisJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBmZW5jZV9v cHMgKm9wcywgaW50IHNpemUsCisJCQkJICAgICAgIHVuc2lnbmVkIGludCB2YWx1ZSkKK3sKKwl1 bnNpZ25lZCBsb25nIGZsYWdzOworCXN0cnVjdCBmZW5jZSAqZmVuY2U7CisKKwlpZiAoc2l6ZSA8 IHNpemVvZigqZmVuY2UpKQorCQlyZXR1cm4gTlVMTDsKKworCWZlbmNlID0ga3phbGxvYyhzaXpl LCBHRlBfS0VSTkVMKTsKKwlpZiAoIWZlbmNlKQorCQlyZXR1cm4gTlVMTDsKKworCXNwaW5fbG9j a19pcnFzYXZlKCZvYmotPmxvY2ssIGZsYWdzKTsKKwlmZW5jZV90aW1lbGluZV9nZXQob2JqKTsK KwlmZW5jZV9pbml0KGZlbmNlLCBvcHMsICZvYmotPmxvY2ssIG9iai0+Y29udGV4dCwgdmFsdWUp OworCWxpc3RfYWRkX3RhaWwoJmZlbmNlLT5jaGlsZF9saXN0LCAmb2JqLT5jaGlsZF9saXN0X2hl YWQpOworCUlOSVRfTElTVF9IRUFEKCZmZW5jZS0+YWN0aXZlX2xpc3QpOworCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJm9iai0+bG9jaywgZmxhZ3MpOworCXJldHVybiBmZW5jZTsKK30KK0VYUE9S VF9TWU1CT0woZmVuY2VfY3JlYXRlX29uX3RpbWVsaW5lKTsKKworLyoqCiAgKiBmZW5jZV9pbml0 IC0gSW5pdGlhbGl6ZSBhIGN1c3RvbSBmZW5jZS4KICAqIEBmZW5jZToJW2luXQl0aGUgZmVuY2Ug dG8gaW5pdGlhbGl6ZQogICogQG9wczoJW2luXQl0aGUgZmVuY2Vfb3BzIGZvciBvcGVyYXRpb25z IG9uIHRoaXMgZmVuY2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3N5bmMu YyBiL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3N5bmMuYwppbmRleCBhMjc1MTA4Li4yMzY1ZGI3 IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9zeW5jLmMKKysrIGIvZHJpdmVy cy9zdGFnaW5nL2FuZHJvaWQvc3luYy5jCkBAIC0zNiwyNCArMzYsOCBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IGZpbGVfb3BlcmF0aW9ucyBzeW5jX2ZlbmNlX2ZvcHM7CiAKIHN0cnVjdCBmZW5jZSAq c3luY19wdF9jcmVhdGUoc3RydWN0IGZlbmNlX3RpbWVsaW5lICpvYmosIGludCBzaXplLCB1MzIg dmFsdWUpCiB7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKLQlzdHJ1Y3QgZmVuY2UgKmZlbmNlOwot Ci0JaWYgKHNpemUgPCBzaXplb2YoKmZlbmNlKSkKLQkJcmV0dXJuIE5VTEw7Ci0KLQlmZW5jZSA9 IGt6YWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFmZW5jZSkKLQkJcmV0dXJuIE5VTEw7 Ci0KLQlzcGluX2xvY2tfaXJxc2F2ZSgmb2JqLT5sb2NrLCBmbGFncyk7Ci0JZmVuY2VfdGltZWxp bmVfZ2V0KG9iaik7Ci0JZmVuY2VfaW5pdChmZW5jZSwgJnN5bmNfZmVuY2Vfb3BzLCAmb2JqLT5s b2NrLAotCQkgICBvYmotPmNvbnRleHQsIHZhbHVlKTsKLQlsaXN0X2FkZF90YWlsKCZmZW5jZS0+ Y2hpbGRfbGlzdCwgJm9iai0+Y2hpbGRfbGlzdF9oZWFkKTsKLQlJTklUX0xJU1RfSEVBRCgmZmVu Y2UtPmFjdGl2ZV9saXN0KTsKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZvYmotPmxvY2ssIGZs YWdzKTsKLQlyZXR1cm4gZmVuY2U7CisJcmV0dXJuIGZlbmNlX2NyZWF0ZV9vbl90aW1lbGluZShv YmosICZzeW5jX2ZlbmNlX29wcywKKwkJCQkJc2l6ZW9mKHN0cnVjdCBmZW5jZSksIHZhbHVlKTsK IH0KIEVYUE9SVF9TWU1CT0woc3luY19wdF9jcmVhdGUpOwogCmRpZmYgLS1naXQgYS9pbmNsdWRl L2xpbnV4L2ZlbmNlLmggYi9pbmNsdWRlL2xpbnV4L2ZlbmNlLmgKaW5kZXggODkwODQzMy4uYWRl Y2U0MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9mZW5jZS5oCisrKyBiL2luY2x1ZGUvbGlu dXgvZmVuY2UuaApAQCAtMjEyLDYgKzIxMiw5IEBAIHN0cnVjdCBmZW5jZV9vcHMgewogCXZvaWQg KCp0aW1lbGluZV92YWx1ZV9zdHIpKHN0cnVjdCBmZW5jZSAqZmVuY2UsIGNoYXIgKnN0ciwgaW50 IHNpemUpOwogfTsKIAorc3RydWN0IGZlbmNlICpmZW5jZV9jcmVhdGVfb25fdGltZWxpbmUoc3Ry dWN0IGZlbmNlX3RpbWVsaW5lICpvYmosCisJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBmZW5jZV9v cHMgKm9wcywgaW50IHNpemUsCisJCQkJICAgICAgIHVuc2lnbmVkIGludCB2YWx1ZSk7CiB2b2lk IGZlbmNlX2luaXQoc3RydWN0IGZlbmNlICpmZW5jZSwgY29uc3Qgc3RydWN0IGZlbmNlX29wcyAq b3BzLAogCQlzcGlubG9ja190ICpsb2NrLCB1bnNpZ25lZCBjb250ZXh0LCB1bnNpZ25lZCBzZXFu byk7CiAKLS0gCjIuNS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo=