From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932090AbcAOO5g (ORCPT ); Fri, 15 Jan 2016 09:57:36 -0500 Received: from mail-yk0-f181.google.com ([209.85.160.181]:33595 "EHLO mail-yk0-f181.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755141AbcAOO5c (ORCPT ); Fri, 15 Jan 2016 09:57:32 -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 28/29] staging/android: use .cleanup() to interrupt any sync_fence waiter Date: Fri, 15 Jan 2016 12:55:38 -0200 Message-Id: <1452869739-3304-29-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 When the timeline is being destroyed all the waiters waiting for the sync_fence to signal need to be woken up and finished as well. Signed-off-by: Gustavo Padovan --- drivers/staging/android/sw_sync.c | 8 ++++++++ drivers/staging/android/sync.c | 9 +++++++++ drivers/staging/android/sync.h | 2 ++ 3 files changed, 19 insertions(+) diff --git a/drivers/staging/android/sw_sync.c b/drivers/staging/android/sw_sync.c index ee7a942..8c83bad 100644 --- a/drivers/staging/android/sw_sync.c +++ b/drivers/staging/android/sw_sync.c @@ -25,6 +25,13 @@ #include "sw_sync.h" +static void sw_sync_cleanup(struct fence *fence, void *user_data) +{ + struct sync_fence *sync_fence = user_data; + + sync_fence_cleanup(sync_fence); +} + static const struct fence_ops sw_sync_fence_ops = { .get_driver_name = fence_default_get_driver_name, .get_timeline_name = fence_default_get_timeline_name, @@ -32,6 +39,7 @@ static const struct fence_ops sw_sync_fence_ops = { .signaled = fence_default_signaled, .wait = fence_default_wait, .release = fence_default_release, + .cleanup = sw_sync_cleanup, .fill_driver_data = fence_default_fill_driver_data, .fence_value_str = fence_default_value_str, .timeline_value_str = fence_default_timeline_value_str, diff --git a/drivers/staging/android/sync.c b/drivers/staging/android/sync.c index 956b4e9..aafecf4 100644 --- a/drivers/staging/android/sync.c +++ b/drivers/staging/android/sync.c @@ -91,6 +91,8 @@ struct sync_fence *sync_fence_create_dma(const char *name, struct fence *fence) sync_fence_debug_add(sync_fence); + fence_add_user_data(fence, sync_fence); + return sync_fence; } EXPORT_SYMBOL(sync_fence_create_dma); @@ -101,6 +103,13 @@ struct sync_fence *sync_fence_create(const char *name, struct fence *fence) } EXPORT_SYMBOL(sync_fence_create); +void sync_fence_cleanup(struct sync_fence *sync_fence) +{ + atomic_set(&sync_fence->status, -ENOENT); + wake_up_all(&sync_fence->wq); +} +EXPORT_SYMBOL(sync_fence_cleanup); + struct sync_fence *sync_fence_fdget(int fd) { struct file *file = fget(fd); diff --git a/drivers/staging/android/sync.h b/drivers/staging/android/sync.h index 8e6827b..d60d9c2 100644 --- a/drivers/staging/android/sync.h +++ b/drivers/staging/android/sync.h @@ -98,6 +98,8 @@ struct sync_fence *sync_fence_create(const char *name, struct fence *fence); */ struct sync_fence *sync_fence_create_dma(const char *name, struct fence *pt); +void sync_fence_cleanup(struct sync_fence *sync_fence); + /* * API for sync_fence consumers */ -- 2.5.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gustavo Padovan Subject: [RFC 28/29] staging/android: use .cleanup() to interrupt any sync_fence waiter Date: Fri, 15 Jan 2016 12:55:38 -0200 Message-ID: <1452869739-3304-29-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-f175.google.com (mail-yk0-f175.google.com [209.85.160.175]) by gabe.freedesktop.org (Postfix) with ESMTPS id 404F27A0FF for ; Fri, 15 Jan 2016 06:57:32 -0800 (PST) Received: by mail-yk0-f175.google.com with SMTP id x67so546642324ykd.2 for ; Fri, 15 Jan 2016 06:57:32 -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 V2hlbiB0aGUgdGltZWxpbmUgaXMgYmVpbmcgZGVzdHJveWVkIGFsbCB0aGUgd2FpdGVycyB3YWl0 aW5nIGZvciB0aGUKc3luY19mZW5jZSB0byBzaWduYWwgbmVlZCB0byBiZSB3b2tlbiB1cCBhbmQg ZmluaXNoZWQgYXMgd2VsbC4KClNpZ25lZC1vZmYtYnk6IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2 by5wYWRvdmFuQGNvbGxhYm9yYS5jby51az4KLS0tCiBkcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9z d19zeW5jLmMgfCA4ICsrKysrKysrCiBkcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9zeW5jLmMgICAg fCA5ICsrKysrKysrKwogZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3luYy5oICAgIHwgMiArKwog MyBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9z dGFnaW5nL2FuZHJvaWQvc3dfc3luYy5jIGIvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3dfc3lu Yy5jCmluZGV4IGVlN2E5NDIuLjhjODNiYWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9h bmRyb2lkL3N3X3N5bmMuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9zd19zeW5jLmMK QEAgLTI1LDYgKzI1LDEzIEBACiAKICNpbmNsdWRlICJzd19zeW5jLmgiCiAKK3N0YXRpYyB2b2lk IHN3X3N5bmNfY2xlYW51cChzdHJ1Y3QgZmVuY2UgKmZlbmNlLCB2b2lkICp1c2VyX2RhdGEpCit7 CisJc3RydWN0IHN5bmNfZmVuY2UgKnN5bmNfZmVuY2UgPSB1c2VyX2RhdGE7CisKKwlzeW5jX2Zl bmNlX2NsZWFudXAoc3luY19mZW5jZSk7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVuY2Vf b3BzIHN3X3N5bmNfZmVuY2Vfb3BzID0gewogCS5nZXRfZHJpdmVyX25hbWUgPSBmZW5jZV9kZWZh dWx0X2dldF9kcml2ZXJfbmFtZSwKIAkuZ2V0X3RpbWVsaW5lX25hbWUgPSBmZW5jZV9kZWZhdWx0 X2dldF90aW1lbGluZV9uYW1lLApAQCAtMzIsNiArMzksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IGZlbmNlX29wcyBzd19zeW5jX2ZlbmNlX29wcyA9IHsKIAkuc2lnbmFsZWQgPSBmZW5jZV9kZWZh dWx0X3NpZ25hbGVkLAogCS53YWl0ID0gZmVuY2VfZGVmYXVsdF93YWl0LAogCS5yZWxlYXNlID0g ZmVuY2VfZGVmYXVsdF9yZWxlYXNlLAorCS5jbGVhbnVwID0gc3dfc3luY19jbGVhbnVwLAogCS5m aWxsX2RyaXZlcl9kYXRhID0gZmVuY2VfZGVmYXVsdF9maWxsX2RyaXZlcl9kYXRhLAogCS5mZW5j ZV92YWx1ZV9zdHIgPSBmZW5jZV9kZWZhdWx0X3ZhbHVlX3N0ciwKIAkudGltZWxpbmVfdmFsdWVf c3RyID0gZmVuY2VfZGVmYXVsdF90aW1lbGluZV92YWx1ZV9zdHIsCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3N0YWdpbmcvYW5kcm9pZC9zeW5jLmMgYi9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9zeW5j LmMKaW5kZXggOTU2YjRlOS4uYWFmZWNmNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2Fu ZHJvaWQvc3luYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL3N5bmMuYwpAQCAtOTEs NiArOTEsOCBAQCBzdHJ1Y3Qgc3luY19mZW5jZSAqc3luY19mZW5jZV9jcmVhdGVfZG1hKGNvbnN0 IGNoYXIgKm5hbWUsIHN0cnVjdCBmZW5jZSAqZmVuY2UpCiAKIAlzeW5jX2ZlbmNlX2RlYnVnX2Fk ZChzeW5jX2ZlbmNlKTsKIAorCWZlbmNlX2FkZF91c2VyX2RhdGEoZmVuY2UsIHN5bmNfZmVuY2Up OworCiAJcmV0dXJuIHN5bmNfZmVuY2U7CiB9CiBFWFBPUlRfU1lNQk9MKHN5bmNfZmVuY2VfY3Jl YXRlX2RtYSk7CkBAIC0xMDEsNiArMTAzLDEzIEBAIHN0cnVjdCBzeW5jX2ZlbmNlICpzeW5jX2Zl bmNlX2NyZWF0ZShjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgZmVuY2UgKmZlbmNlKQogfQogRVhQ T1JUX1NZTUJPTChzeW5jX2ZlbmNlX2NyZWF0ZSk7CiAKK3ZvaWQgc3luY19mZW5jZV9jbGVhbnVw KHN0cnVjdCBzeW5jX2ZlbmNlICpzeW5jX2ZlbmNlKQoreworCWF0b21pY19zZXQoJnN5bmNfZmVu Y2UtPnN0YXR1cywgLUVOT0VOVCk7CisJd2FrZV91cF9hbGwoJnN5bmNfZmVuY2UtPndxKTsKK30K K0VYUE9SVF9TWU1CT0woc3luY19mZW5jZV9jbGVhbnVwKTsKKwogc3RydWN0IHN5bmNfZmVuY2Ug KnN5bmNfZmVuY2VfZmRnZXQoaW50IGZkKQogewogCXN0cnVjdCBmaWxlICpmaWxlID0gZmdldChm ZCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYW5kcm9pZC9zeW5jLmggYi9kcml2ZXJz L3N0YWdpbmcvYW5kcm9pZC9zeW5jLmgKaW5kZXggOGU2ODI3Yi4uZDYwZDljMiAxMDA2NDQKLS0t IGEvZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvc3luYy5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9h bmRyb2lkL3N5bmMuaApAQCAtOTgsNiArOTgsOCBAQCBzdHJ1Y3Qgc3luY19mZW5jZSAqc3luY19m ZW5jZV9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGZlbmNlICpmZW5jZSk7CiAgKi8K IHN0cnVjdCBzeW5jX2ZlbmNlICpzeW5jX2ZlbmNlX2NyZWF0ZV9kbWEoY29uc3QgY2hhciAqbmFt ZSwgc3RydWN0IGZlbmNlICpwdCk7CiAKK3ZvaWQgc3luY19mZW5jZV9jbGVhbnVwKHN0cnVjdCBz eW5jX2ZlbmNlICpzeW5jX2ZlbmNlKTsKKwogLyoKICAqIEFQSSBmb3Igc3luY19mZW5jZSBjb25z dW1lcnMKICAqLwotLSAKMi41LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v ZHJpLWRldmVsCg==