From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-qt0-f193.google.com ([209.85.216.193]:40033 "EHLO mail-qt0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965426AbeEIWmT (ORCPT ); Wed, 9 May 2018 18:42:19 -0400 Received: by mail-qt0-f193.google.com with SMTP id h2-v6so203893qtp.7 for ; Wed, 09 May 2018 15:42:19 -0700 (PDT) Message-ID: <1525905732.3381.6.camel@padovan.org> Subject: Re: [PATCH] dma-fence: Make dma_fence_add_callback() fail if signaled with error From: Gustavo Padovan To: Ezequiel Garcia , Sumit Semwal Cc: linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, kernel@collabora.com Date: Wed, 09 May 2018 19:42:12 -0300 In-Reply-To: <20180509201449.27452-1-ezequiel@collabora.com> References: <20180509201449.27452-1-ezequiel@collabora.com> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-media-owner@vger.kernel.org List-ID: Hi Ezequiel, On Wed, 2018-05-09 at 17:14 -0300, Ezequiel Garcia wrote: > Change how dma_fence_add_callback() behaves, when the fence > has error-signaled by the time it is being add. After this commit, > dma_fence_add_callback() returns the fence error, if it > has error-signaled before dma_fence_add_callback() is called. > > Signed-off-by: Ezequiel Garcia > --- > drivers/dma-buf/dma-fence.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma- > fence.c > index 4edb9fd3cf47..298b440c5b68 100644 > --- a/drivers/dma-buf/dma-fence.c > +++ b/drivers/dma-buf/dma-fence.c > @@ -226,7 +226,8 @@ EXPORT_SYMBOL(dma_fence_enable_sw_signaling); > * > * Note that the callback can be called from an atomic context. If > * fence is already signaled, this function will return -ENOENT (and > - * *not* call the callback) > + * *not* call the callback). If the fence is error-signaled, this > + * function returns the fence error. > * > * Add a software callback to the fence. Same restrictions apply to > * refcount as it does to dma_fence_wait, however the caller doesn't > need to > @@ -235,8 +236,8 @@ EXPORT_SYMBOL(dma_fence_enable_sw_signaling); > * after it signals with dma_fence_signal. The callback itself can > be called > * from irq context. > * > - * Returns 0 in case of success, -ENOENT if the fence is already > signaled > - * and -EINVAL in case of error. > + * Returns 0 in case of success, -ENOENT (or the error value) if the > fence is > + * already signaled and -EINVAL in case of error. > */ > int dma_fence_add_callback(struct dma_fence *fence, struct > dma_fence_cb *cb, > dma_fence_func_t func) > @@ -250,7 +251,8 @@ int dma_fence_add_callback(struct dma_fence > *fence, struct dma_fence_cb *cb, > > if (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) { > INIT_LIST_HEAD(&cb->node); > - return -ENOENT; > + ret = (fence->error < 0) ? fence->error : -ENOENT; > + return ret; > } It looks good to me, but I'd first go check all place we call it in the kernel because I have some memory of callers relying on the -ENOENT return code for some decision. I might be wrong though. Regards, Gustavo From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gustavo Padovan Subject: Re: [PATCH] dma-fence: Make dma_fence_add_callback() fail if signaled with error Date: Wed, 09 May 2018 19:42:12 -0300 Message-ID: <1525905732.3381.6.camel@padovan.org> References: <20180509201449.27452-1-ezequiel@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt0-f196.google.com (mail-qt0-f196.google.com [209.85.216.196]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9D7BF6E94B for ; Wed, 9 May 2018 22:42:19 +0000 (UTC) Received: by mail-qt0-f196.google.com with SMTP id m5-v6so225255qti.1 for ; Wed, 09 May 2018 15:42:19 -0700 (PDT) In-Reply-To: <20180509201449.27452-1-ezequiel@collabora.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ezequiel Garcia , Sumit Semwal Cc: kernel@collabora.com, dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org SGkgRXplcXVpZWwsCgpPbiBXZWQsIDIwMTgtMDUtMDkgYXQgMTc6MTQgLTAzMDAsIEV6ZXF1aWVs IEdhcmNpYSB3cm90ZToKPiBDaGFuZ2UgaG93IGRtYV9mZW5jZV9hZGRfY2FsbGJhY2soKSBiZWhh dmVzLCB3aGVuIHRoZSBmZW5jZQo+IGhhcyBlcnJvci1zaWduYWxlZCBieSB0aGUgdGltZSBpdCBp cyBiZWluZyBhZGQuIEFmdGVyIHRoaXMgY29tbWl0LAo+IGRtYV9mZW5jZV9hZGRfY2FsbGJhY2so KSByZXR1cm5zIHRoZSBmZW5jZSBlcnJvciwgaWYgaXQKPiBoYXMgZXJyb3Itc2lnbmFsZWQgYmVm b3JlIGRtYV9mZW5jZV9hZGRfY2FsbGJhY2soKSBpcyBjYWxsZWQuCj4gCj4gU2lnbmVkLW9mZi1i eTogRXplcXVpZWwgR2FyY2lhIDxlemVxdWllbEBjb2xsYWJvcmEuY29tPgo+IC0tLQo+ICBkcml2 ZXJzL2RtYS1idWYvZG1hLWZlbmNlLmMgfCAxMCArKysrKystLS0tCj4gIDEgZmlsZSBjaGFuZ2Vk LCA2IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZG1hLWJ1Zi9kbWEtZmVuY2UuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtCj4gZmVuY2UuYwo+ IGluZGV4IDRlZGI5ZmQzY2Y0Ny4uMjk4YjQ0MGM1YjY4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv ZG1hLWJ1Zi9kbWEtZmVuY2UuYwo+ICsrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UuYwo+ IEBAIC0yMjYsNyArMjI2LDggQEAgRVhQT1JUX1NZTUJPTChkbWFfZmVuY2VfZW5hYmxlX3N3X3Np Z25hbGluZyk7Cj4gICAqCj4gICAqIE5vdGUgdGhhdCB0aGUgY2FsbGJhY2sgY2FuIGJlIGNhbGxl ZCBmcm9tIGFuIGF0b21pYyBjb250ZXh0LiAgSWYKPiAgICogZmVuY2UgaXMgYWxyZWFkeSBzaWdu YWxlZCwgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiAtRU5PRU5UIChhbmQKPiAtICogKm5vdCog Y2FsbCB0aGUgY2FsbGJhY2spCj4gKyAqICpub3QqIGNhbGwgdGhlIGNhbGxiYWNrKS4gSWYgdGhl IGZlbmNlIGlzIGVycm9yLXNpZ25hbGVkLCB0aGlzCj4gKyAqIGZ1bmN0aW9uIHJldHVybnMgdGhl IGZlbmNlIGVycm9yLgo+ICAgKgo+ICAgKiBBZGQgYSBzb2Z0d2FyZSBjYWxsYmFjayB0byB0aGUg ZmVuY2UuIFNhbWUgcmVzdHJpY3Rpb25zIGFwcGx5IHRvCj4gICAqIHJlZmNvdW50IGFzIGl0IGRv ZXMgdG8gZG1hX2ZlbmNlX3dhaXQsIGhvd2V2ZXIgdGhlIGNhbGxlciBkb2Vzbid0Cj4gbmVlZCB0 bwo+IEBAIC0yMzUsOCArMjM2LDggQEAgRVhQT1JUX1NZTUJPTChkbWFfZmVuY2VfZW5hYmxlX3N3 X3NpZ25hbGluZyk7Cj4gICAqIGFmdGVyIGl0IHNpZ25hbHMgd2l0aCBkbWFfZmVuY2Vfc2lnbmFs LiBUaGUgY2FsbGJhY2sgaXRzZWxmIGNhbgo+IGJlIGNhbGxlZAo+ICAgKiBmcm9tIGlycSBjb250 ZXh0Lgo+ICAgKgo+IC0gKiBSZXR1cm5zIDAgaW4gY2FzZSBvZiBzdWNjZXNzLCAtRU5PRU5UIGlm IHRoZSBmZW5jZSBpcyBhbHJlYWR5Cj4gc2lnbmFsZWQKPiAtICogYW5kIC1FSU5WQUwgaW4gY2Fz ZSBvZiBlcnJvci4KPiArICogUmV0dXJucyAwIGluIGNhc2Ugb2Ygc3VjY2VzcywgLUVOT0VOVCAo b3IgdGhlIGVycm9yIHZhbHVlKSBpZiB0aGUKPiBmZW5jZSBpcwo+ICsgKiBhbHJlYWR5IHNpZ25h bGVkIGFuZCAtRUlOVkFMIGluIGNhc2Ugb2YgZXJyb3IuCj4gICAqLwo+ICBpbnQgZG1hX2ZlbmNl X2FkZF9jYWxsYmFjayhzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSwgc3RydWN0Cj4gZG1hX2ZlbmNl X2NiICpjYiwKPiAgCQkJICAgZG1hX2ZlbmNlX2Z1bmNfdCBmdW5jKQo+IEBAIC0yNTAsNyArMjUx LDggQEAgaW50IGRtYV9mZW5jZV9hZGRfY2FsbGJhY2soc3RydWN0IGRtYV9mZW5jZQo+ICpmZW5j ZSwgc3RydWN0IGRtYV9mZW5jZV9jYiAqY2IsCj4gIAo+ICAJaWYgKHRlc3RfYml0KERNQV9GRU5D RV9GTEFHX1NJR05BTEVEX0JJVCwgJmZlbmNlLT5mbGFncykpIHsKPiAgCQlJTklUX0xJU1RfSEVB RCgmY2ItPm5vZGUpOwo+IC0JCXJldHVybiAtRU5PRU5UOwo+ICsJCXJldCA9IChmZW5jZS0+ZXJy b3IgPCAwKSA/IGZlbmNlLT5lcnJvciA6IC1FTk9FTlQ7Cj4gKwkJcmV0dXJuIHJldDsKPiAgCX0K Ckl0IGxvb2tzIGdvb2QgdG8gbWUsIGJ1dCBJJ2QgZmlyc3QgZ28gY2hlY2sgYWxsIHBsYWNlIHdl IGNhbGwgaXQgaW4gdGhlCmtlcm5lbCBiZWNhdXNlIEkgaGF2ZSBzb21lIG1lbW9yeSBvZiBjYWxs ZXJzIHJlbHlpbmcgb24gdGhlIC1FTk9FTlQKcmV0dXJuIGNvZGUgZm9yIHNvbWUgZGVjaXNpb24u IEkgbWlnaHQgYmUgd3JvbmcgdGhvdWdoLgoKUmVnYXJkcywKCkd1c3Rhdm8KX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==