From mboxrd@z Thu Jan 1 00:00:00 1970 From: daniel@ffwll.ch (Daniel Vetter) Date: Thu, 9 Jun 2016 14:26:31 +0200 Subject: [PATCH 03/27] drm/arc: Actually bother with handling atomic events. In-Reply-To: <1465469639.3203.57.camel@synopsys.com> References: <1465388359-8070-1-git-send-email-daniel.vetter@ffwll.ch> <1465388359-8070-3-git-send-email-daniel.vetter@ffwll.ch> <20160608143004.GE3363@phenom.ffwll.local> <1465469639.3203.57.camel@synopsys.com> List-ID: Message-ID: <20160609122631.GO3363@phenom.ffwll.local> To: linux-snps-arc@lists.infradead.org On Thu, Jun 09, 2016@10:54:45AM +0000, Alexey Brodkin wrote: > Hi Daniel, > > On Wed, 2016-06-08@16:30 +0200, Daniel Vetter wrote: > > On Wed, Jun 08, 2016@04:14:38PM +0200, Maarten Lankhorst wrote: > > > > > > Op 08-06-16 om 14:18 schreef Daniel Vetter: > > > > > > > > The drm core has a nice ready-made helper for exactly the simple case > > > > where it should fire on the next vblank. > > > > > > > > Note that arming the vblank event in _begin is probably too early, and > > > > might easily result in the vblank firing too early, before the new set > > > > of planes are actually disabled. But that's kinda a minor issue > > > > compared to just outright hanging userspace. > > > > > > > > v2: Be more robust and either arm, when the CRTC is on, or just send > > > > the event out right away. > > > > > > > > Cc: Carlos Palminha > > > > Cc: Alexey Brodkin > > > > Cc: linux-snps-arc at lists.infradead.org > > > > Signed-off-by: Daniel Vetter > > > Wouldn't it be better to do this in atomic_flush then? > > I'm not going to fix up other people's drivers completely, just enough to > > hopefully not break them. If arc also blocks vblank interrupts with the go > > bit, then doing this in _begin is correct. Either way it needs hw-specific > > knowledge to asses whether it's correct, since doing the vblank event > > stuff in _flush is also racy without some prevention. > > Actually in ARC PGU driver that was one of many other copy-pastes from > other drivers. I.e. for me this is another boilerplate and if that's the > same for other drivers as well probably that's a good candidate for > generalization into something like?drm_helper_crtc_atomic_check(). I checked them all, you are special with your code here. And this can't be generalized since you must send out vblank events in a race-free manner against the actual hw update. This requires deep knowledge of the actual hw, and it's not something the helpers can take care of you. It is very much not boilerplate, but crucial for a correct implementation. And most likely arcpgu is wrong, but since I don't have that hw knowledge I'm not going to change it more than absolutely required. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 03/27] drm/arc: Actually bother with handling atomic events. Date: Thu, 9 Jun 2016 14:26:31 +0200 Message-ID: <20160609122631.GO3363@phenom.ffwll.local> References: <1465388359-8070-1-git-send-email-daniel.vetter@ffwll.ch> <1465388359-8070-3-git-send-email-daniel.vetter@ffwll.ch> <20160608143004.GE3363@phenom.ffwll.local> <1465469639.3203.57.camel@synopsys.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id AC82C6EB80 for ; Thu, 9 Jun 2016 12:26:36 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id m124so10253400wme.3 for ; Thu, 09 Jun 2016 05:26:36 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1465469639.3203.57.camel@synopsys.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Alexey Brodkin Cc: "daniel.vetter@ffwll.ch" , "CARLOS.PALMINHA@synopsys.com" , "dri-devel@lists.freedesktop.org" , "daniel.vetter@intel.com" , "linux-snps-arc@lists.infradead.org" List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBKdW4gMDksIDIwMTYgYXQgMTA6NTQ6NDVBTSArMDAwMCwgQWxleGV5IEJyb2RraW4g d3JvdGU6Cj4gSGkgRGFuaWVsLAo+IAo+IE9uIFdlZCwgMjAxNi0wNi0wOCBhdCAxNjozMCArMDIw MCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+IE9uIFdlZCwgSnVuIDA4LCAyMDE2IGF0IDA0OjE0 OjM4UE0gKzAyMDAsIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+ID4gPiAKPiA+ID4gT3AgMDgt MDYtMTYgb20gMTQ6MTggc2NocmVlZiBEYW5pZWwgVmV0dGVyOgo+ID4gPiA+IAo+ID4gPiA+IFRo ZSBkcm0gY29yZSBoYXMgYSBuaWNlIHJlYWR5LW1hZGUgaGVscGVyIGZvciBleGFjdGx5IHRoZSBz aW1wbGUgY2FzZQo+ID4gPiA+IHdoZXJlIGl0IHNob3VsZCBmaXJlIG9uIHRoZSBuZXh0IHZibGFu ay4KPiA+ID4gPiAKPiA+ID4gPiBOb3RlIHRoYXQgYXJtaW5nIHRoZSB2YmxhbmsgZXZlbnQgaW4g X2JlZ2luIGlzIHByb2JhYmx5IHRvbyBlYXJseSwgYW5kCj4gPiA+ID4gbWlnaHQgZWFzaWx5IHJl c3VsdCBpbiB0aGUgdmJsYW5rIGZpcmluZyB0b28gZWFybHksIGJlZm9yZSB0aGUgbmV3IHNldAo+ ID4gPiA+IG9mIHBsYW5lcyBhcmUgYWN0dWFsbHkgZGlzYWJsZWQuIEJ1dCB0aGF0J3Mga2luZGEg YSBtaW5vciBpc3N1ZQo+ID4gPiA+IGNvbXBhcmVkIHRvIGp1c3Qgb3V0cmlnaHQgaGFuZ2luZyB1 c2Vyc3BhY2UuCj4gPiA+ID4gCj4gPiA+ID4gdjI6IEJlIG1vcmUgcm9idXN0IGFuZCBlaXRoZXIg YXJtLCB3aGVuIHRoZSBDUlRDIGlzIG9uLCBvciBqdXN0IHNlbmQKPiA+ID4gPiB0aGUgZXZlbnQg b3V0IHJpZ2h0IGF3YXkuCj4gPiA+ID4gCj4gPiA+ID4gQ2M6IENhcmxvcyBQYWxtaW5oYSA8cGFs bWluaGFAc3lub3BzeXMuY29tPgo+ID4gPiA+IENjOiBBbGV4ZXkgQnJvZGtpbiA8YWJyb2RraW5A c3lub3BzeXMuY29tPgo+ID4gPiA+IENjOiBsaW51eC1zbnBzLWFyY0BsaXN0cy5pbmZyYWRlYWQu b3JnCj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBp bnRlbC5jb20+Cj4gPiA+IFdvdWxkbid0IGl0IGJlIGJldHRlciB0byBkbyB0aGlzIGluIGF0b21p Y19mbHVzaCB0aGVuPwo+ID4gSSdtIG5vdCBnb2luZyB0byBmaXggdXAgb3RoZXIgcGVvcGxlJ3Mg ZHJpdmVycyBjb21wbGV0ZWx5LCBqdXN0IGVub3VnaCB0bwo+ID4gaG9wZWZ1bGx5IG5vdCBicmVh ayB0aGVtLiBJZiBhcmMgYWxzbyBibG9ja3MgdmJsYW5rIGludGVycnVwdHMgd2l0aCB0aGUgZ28K PiA+IGJpdCwgdGhlbiBkb2luZyB0aGlzIGluIF9iZWdpbiBpcyBjb3JyZWN0LiBFaXRoZXIgd2F5 IGl0IG5lZWRzIGh3LXNwZWNpZmljCj4gPiBrbm93bGVkZ2UgdG8gYXNzZXMgd2hldGhlciBpdCdz IGNvcnJlY3QsIHNpbmNlIGRvaW5nIHRoZSB2YmxhbmsgZXZlbnQKPiA+IHN0dWZmIGluIF9mbHVz aCBpcyBhbHNvIHJhY3kgd2l0aG91dCBzb21lIHByZXZlbnRpb24uCj4gCj4gQWN0dWFsbHkgaW4g QVJDIFBHVSBkcml2ZXIgdGhhdCB3YXMgb25lIG9mIG1hbnkgb3RoZXIgY29weS1wYXN0ZXMgZnJv bQo+IG90aGVyIGRyaXZlcnMuIEkuZS4gZm9yIG1lIHRoaXMgaXMgYW5vdGhlciBib2lsZXJwbGF0 ZSBhbmQgaWYgdGhhdCdzIHRoZQo+IHNhbWUgZm9yIG90aGVyIGRyaXZlcnMgYXMgd2VsbCBwcm9i YWJseSB0aGF0J3MgYSBnb29kIGNhbmRpZGF0ZSBmb3IKPiBnZW5lcmFsaXphdGlvbiBpbnRvIHNv bWV0aGluZyBsaWtlwqBkcm1faGVscGVyX2NydGNfYXRvbWljX2NoZWNrKCkuCgpJIGNoZWNrZWQg dGhlbSBhbGwsIHlvdSBhcmUgc3BlY2lhbCB3aXRoIHlvdXIgY29kZSBoZXJlLiBBbmQgdGhpcyBj YW4ndCBiZQpnZW5lcmFsaXplZCBzaW5jZSB5b3UgbXVzdCBzZW5kIG91dCB2YmxhbmsgZXZlbnRz IGluIGEgcmFjZS1mcmVlIG1hbm5lcgphZ2FpbnN0IHRoZSBhY3R1YWwgaHcgdXBkYXRlLiBUaGlz IHJlcXVpcmVzIGRlZXAga25vd2xlZGdlIG9mIHRoZSBhY3R1YWwKaHcsIGFuZCBpdCdzIG5vdCBz b21ldGhpbmcgdGhlIGhlbHBlcnMgY2FuIHRha2UgY2FyZSBvZiB5b3UuIEl0IGlzIHZlcnkKbXVj aCBub3QgYm9pbGVycGxhdGUsIGJ1dCBjcnVjaWFsIGZvciBhIGNvcnJlY3QgaW1wbGVtZW50YXRp b24uIEFuZCBtb3N0Cmxpa2VseSBhcmNwZ3UgaXMgd3JvbmcsIGJ1dCBzaW5jZSBJIGRvbid0IGhh dmUgdGhhdCBodyBrbm93bGVkZ2UgSSdtIG5vdApnb2luZyB0byBjaGFuZ2UgaXQgbW9yZSB0aGFu IGFic29sdXRlbHkgcmVxdWlyZWQuCi1EYW5pZWwKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUg RW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=