From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark yao Subject: Re: [PATCH] drm/rockchip: Return -EBUSY if there's already a pending flip event v2 Date: Fri, 01 Apr 2016 19:54:47 +0800 Message-ID: <56FE6187.1010004@rock-chips.com> References: <1459411680-6176-1-git-send-email-tomeu.vizoso@collabora.com> <56FE5AE9.40806@rock-chips.com> <56FE5FD2.2050106@collabora.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <56FE5FD2.2050106@collabora.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Tomeu Vizoso , linux-kernel@vger.kernel.org Cc: linux-rockchip@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org List-Id: linux-rockchip.vger.kernel.org T24gMjAxNuW5tDA05pyIMDHml6UgMTk6NDcsIFRvbWV1IFZpem9zbyB3cm90ZToKPiBPbiAwNC8w MS8yMDE2IDAxOjI2IFBNLCBNYXJrIHlhbyB3cm90ZToKPj4gT24gMjAxNuW5tDAz5pyIMzHml6Ug MTY6MDgsIFRvbWV1IFZpem9zbyB3cm90ZToKPj4+IEFzIHBlciB0aGUgZG9jcywgYXRvbWljX2Nv bW1pdCBzaG91bGQgcmV0dXJuIC1FQlVTWSAiaWYgYW4gYXN5Y25ocm9ub3VzCj4+PiB1cGRhdGVk IGlzIHJlcXVlc3RlZCBhbmQgdGhlcmUgaXMgYW4gZWFybGllciB1cGRhdGVkIHBlbmRpbmciLgo+ Pj4KPj4+IHYyOiBVc2UgdGhlIHN0YXR1cyBvZiB0aGUgd29ya3F1ZXVlIGluc3RlYWQgb2Ygdm9w LT5ldmVudCwgYW5kIGRvbid0IGFkZAo+Pj4gYSBzdXBlcmZsdW91cyB3YWl0IG9uIHRoZSB3b3Jr cXVldWUuCj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogVG9tZXUgVml6b3NvIDx0b21ldS52aXpvc29A Y29sbGFib3JhLmNvbT4KPj4+IC0tLQo+Pj4gICBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9j a2NoaXBfZHJtX2ZiLmMgfCAzICsrKwo+Pj4gICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25z KCspCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hp cF9kcm1fZmIuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZmIuYwo+ Pj4gaW5kZXggM2I4ZjY1MjY5OGY4Li4yODVmOGNkNWFmZTEgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2ZiLmMKPj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZmIuYwo+Pj4gQEAgLTI4Miw2ICsyODIsOSBA QCBpbnQgcm9ja2NoaXBfZHJtX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK Pj4+ICAgCXN0cnVjdCByb2NrY2hpcF9hdG9taWNfY29tbWl0ICpjb21taXQgPSAmcHJpdmF0ZS0+ Y29tbWl0Owo+Pj4gICAJaW50IHJldDsKPj4+ICAgCj4+PiArCWlmIChhc3luYyAmJiB3b3JrX2J1 c3koJmNvbW1pdC0+d29yaykpCj4+PiArCQlyZXR1cm4gLUVCVVNZOwo+Pj4gKwo+PiBTb3JyeSBm b3IgcmVwbHkgbGF0ZS4KPj4KPj4gVGhlcmUgaXMgYSBjb21tZW50IG9uIHdvcmtfYnVzeSBmdW5j dGlvbiBkZXNjcmliZSA6Cj4+Cj4+ICAgICAgInRoZSB0ZXN0IHJlc3VsdCBpcyAgdW5yZWxpYWJs ZSBhbmQgb25seSB1c2VmdWwgYXMgYWR2aXNvcnkgaGludHMgb3IKPj4gZm9yIGRlYnVnZ2luZy4i Cj4+Cj4+IEkgZG9uJ3Qga25vdyBpZiBpdCdzIHN1aXRhYmxlIHRvIHVzZSBpdCBoZXJlLCBkb2Vz IHNvbWUgZ3V5cyBrbm93IGl0Pwo+IEknbSBub3Qgc3VyZSwgYnV0IGlmIHRoZSByZWFzb24gaXMg dGhlIGNhdmVhdCBleHBsYWluZWQgaW4KPiBmaW5kX3dvcmtlcl9leGVjdXRpbmdfd29yaygpLCB0 aGVuIGl0J3MgcHJvYmFibHkgc2FmZSAoYW5kIHdvdWxkIGV4cGxhaW4KPiBob3cgdGhlIGZ1bmN0 aW9uIGlzIHVzZWQgaW4gb3RoZXIgcGFydHMgaW4gdGhlIGtlcm5lbCkuCj4KPj4gQW5kIHRoZW4s IHRoZSAiZmx1c2hfd29yaygmY29tbWl0LT53b3JrKTsiIGlzIG5vIG5lZWRlZCBpZiByZXR1cm4g LUVCVVNZCj4+IGhlcmUuCj4+IHlvdSBjYW4gcmVtb3ZlIGl0IGF0IHRoaXMgcGF0Y2guCj4gV2Ug c3RpbGwgbmVlZCB0byB3YWl0IGlmIGl0J3MgYmVpbmcgY2FsbGVkIGluIHN5bmMgbW9kZS4KPgo+ IFJlZ2FyZHMsCj4KPiBUb21ldQpIaSBUb21lde+8qO+9iQoKb24gc3luYyBtb2RlLCBmbHVzaCBp cyBubyBuZWVkZWQsIGJlY2F1c2UgdGhhdDoKMSwgdGhlcmUgaXMgbXV0ZXhfbG9jay9tdXRleF91 bmxvY2sgb24gdGhpcyBjb250ZXh0LCBTbyBvbmx5IHNpbmdsZSAKcHJvY2VzcyBydW4gaW50byBj b21taXQgd29yazsKCjIsIHN5bmMgbW9kZSB3aWxsIGJsb2NrIG9uOgpyb2NrY2hpcF9hdG9taWNf Y29tbWl0X2NvbXBsZXRlLS0+cm9ja2NoaXBfYXRvbWljX3dhaXRfZm9yX2NvbXBsZXRlLAoKVGhh bmtzLgoKPgo+Pj4gICAJcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfcHJlcGFyZV9wbGFuZXMoZGV2 LCBzdGF0ZSk7Cj4+PiAgIAlpZiAocmV0KQo+Pj4gICAJCXJldHVybiByZXQ7Cj4+Cj4+Cj4+IC0t IAo+PiDvvK1hcmsgWWFvCj4+Cj4KPgo+CgoKLS0gCu+8rWFyayBZYW8KCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: mark.yao@rock-chips.com (Mark yao) Date: Fri, 01 Apr 2016 19:54:47 +0800 Subject: [PATCH] drm/rockchip: Return -EBUSY if there's already a pending flip event v2 In-Reply-To: <56FE5FD2.2050106@collabora.com> References: <1459411680-6176-1-git-send-email-tomeu.vizoso@collabora.com> <56FE5AE9.40806@rock-chips.com> <56FE5FD2.2050106@collabora.com> Message-ID: <56FE6187.1010004@rock-chips.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 2016?04?01? 19:47, Tomeu Vizoso wrote: > On 04/01/2016 01:26 PM, Mark yao wrote: >> On 2016?03?31? 16:08, Tomeu Vizoso wrote: >>> As per the docs, atomic_commit should return -EBUSY "if an asycnhronous >>> updated is requested and there is an earlier updated pending". >>> >>> v2: Use the status of the workqueue instead of vop->event, and don't add >>> a superfluous wait on the workqueue. >>> >>> Signed-off-by: Tomeu Vizoso >>> --- >>> drivers/gpu/drm/rockchip/rockchip_drm_fb.c | 3 +++ >>> 1 file changed, 3 insertions(+) >>> >>> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c >>> index 3b8f652698f8..285f8cd5afe1 100644 >>> --- a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c >>> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c >>> @@ -282,6 +282,9 @@ int rockchip_drm_atomic_commit(struct drm_device *dev, >>> struct rockchip_atomic_commit *commit = &private->commit; >>> int ret; >>> >>> + if (async && work_busy(&commit->work)) >>> + return -EBUSY; >>> + >> Sorry for reply late. >> >> There is a comment on work_busy function describe : >> >> "the test result is unreliable and only useful as advisory hints or >> for debugging." >> >> I don't know if it's suitable to use it here, does some guys know it? > I'm not sure, but if the reason is the caveat explained in > find_worker_executing_work(), then it's probably safe (and would explain > how the function is used in other parts in the kernel). > >> And then, the "flush_work(&commit->work);" is no needed if return -EBUSY >> here. >> you can remove it at this patch. > We still need to wait if it's being called in sync mode. > > Regards, > > Tomeu Hi Tomeu?? on sync mode, flush is no needed, because that: 1, there is mutex_lock/mutex_unlock on this context, So only single process run into commit work; 2, sync mode will block on: rockchip_atomic_commit_complete-->rockchip_atomic_wait_for_complete, Thanks. > >>> ret = drm_atomic_helper_prepare_planes(dev, state); >>> if (ret) >>> return ret; >> >> >> -- >> ?ark Yao >> > > > -- ?ark Yao From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754398AbcDALzB (ORCPT ); Fri, 1 Apr 2016 07:55:01 -0400 Received: from regular1.263xmail.com ([211.150.99.139]:35242 "EHLO regular1.263xmail.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752492AbcDALy7 (ORCPT ); Fri, 1 Apr 2016 07:54:59 -0400 X-263anti-spam: BIG:0;ABS:1;DNS:0;ATT:0;SPF:S;KSV:0; X-MAIL-GRAY: 0 X-MAIL-DELIVERY: 1 X-ABS-CHECKED: 1 X-SKE-CHECKED: 1 X-ADDR-CHECKED: 0 X-KSVirus-check: 0 X-RL-SENDER: mark.yao@rock-chips.com X-FST-TO: linux-rockchip@lists.infradead.org X-SENDER-IP: 58.22.7.114 X-LOGIN-NAME: mark.yao@rock-chips.com X-UNIQUE-TAG: X-ATTACHMENT-NUM: 0 X-DNS-TYPE: 0 Message-ID: <56FE6187.1010004@rock-chips.com> Date: Fri, 01 Apr 2016 19:54:47 +0800 From: Mark yao User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 MIME-Version: 1.0 To: Tomeu Vizoso , linux-kernel@vger.kernel.org CC: David Airlie , Heiko Stuebner , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org Subject: Re: [PATCH] drm/rockchip: Return -EBUSY if there's already a pending flip event v2 References: <1459411680-6176-1-git-send-email-tomeu.vizoso@collabora.com> <56FE5AE9.40806@rock-chips.com> <56FE5FD2.2050106@collabora.com> In-Reply-To: <56FE5FD2.2050106@collabora.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2016年04月01日 19:47, Tomeu Vizoso wrote: > On 04/01/2016 01:26 PM, Mark yao wrote: >> On 2016年03月31日 16:08, Tomeu Vizoso wrote: >>> As per the docs, atomic_commit should return -EBUSY "if an asycnhronous >>> updated is requested and there is an earlier updated pending". >>> >>> v2: Use the status of the workqueue instead of vop->event, and don't add >>> a superfluous wait on the workqueue. >>> >>> Signed-off-by: Tomeu Vizoso >>> --- >>> drivers/gpu/drm/rockchip/rockchip_drm_fb.c | 3 +++ >>> 1 file changed, 3 insertions(+) >>> >>> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c >>> index 3b8f652698f8..285f8cd5afe1 100644 >>> --- a/drivers/gpu/drm/rockchip/rockchip_drm_fb.c >>> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_fb.c >>> @@ -282,6 +282,9 @@ int rockchip_drm_atomic_commit(struct drm_device *dev, >>> struct rockchip_atomic_commit *commit = &private->commit; >>> int ret; >>> >>> + if (async && work_busy(&commit->work)) >>> + return -EBUSY; >>> + >> Sorry for reply late. >> >> There is a comment on work_busy function describe : >> >> "the test result is unreliable and only useful as advisory hints or >> for debugging." >> >> I don't know if it's suitable to use it here, does some guys know it? > I'm not sure, but if the reason is the caveat explained in > find_worker_executing_work(), then it's probably safe (and would explain > how the function is used in other parts in the kernel). > >> And then, the "flush_work(&commit->work);" is no needed if return -EBUSY >> here. >> you can remove it at this patch. > We still need to wait if it's being called in sync mode. > > Regards, > > Tomeu Hi TomeuHi on sync mode, flush is no needed, because that: 1, there is mutex_lock/mutex_unlock on this context, So only single process run into commit work; 2, sync mode will block on: rockchip_atomic_commit_complete-->rockchip_atomic_wait_for_complete, Thanks. > >>> ret = drm_atomic_helper_prepare_planes(dev, state); >>> if (ret) >>> return ret; >> >> >> -- >> Mark Yao >> > > > -- Mark Yao