From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey.Brodkin@synopsys.com (Alexey Brodkin) Date: Thu, 9 Jun 2016 13:27:55 +0000 Subject: [PATCH 03/27] drm/arc: Actually bother with handling atomic events. In-Reply-To: <20160609132327.GQ3363@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> <20160609122631.GO3363@phenom.ffwll.local> <1465476465.3203.66.camel@synopsys.com> <20160609132327.GQ3363@phenom.ffwll.local> List-ID: Message-ID: <1465478829.3203.68.camel@synopsys.com> To: linux-snps-arc@lists.infradead.org Hi Daniel, On Thu, 2016-06-09@15:23 +0200, Daniel Vetter wrote: > On Thu, Jun 09, 2016@12:48:31PM +0000, Alexey Brodkin wrote: > > > > Hi Daniel, > > > > On Thu, 2016-06-09@14:26 +0200, Daniel Vetter wrote: > > > > > > 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. > > Well I meant as of today we don't support vblank interrupts and so > > arc_pgu_crtc_atomic_begin() barely makes any sense. > > > > Still in the future we do plan to add support of interrupts. > > > If you don't support vblank interrupts you're driver isn't compliant with > atomic. You need to at least fake them. Indeed. So my assumption was there are (or could appear) other simple drivers of the same kind and that fake implementation might be generic. -Alexey From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexey Brodkin Subject: Re: [PATCH 03/27] drm/arc: Actually bother with handling atomic events. Date: Thu, 9 Jun 2016 13:27:55 +0000 Message-ID: <1465478829.3203.68.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> <20160609122631.GO3363@phenom.ffwll.local> <1465476465.3203.66.camel@synopsys.com> <20160609132327.GQ3363@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-7" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160609132327.GQ3363@phenom.ffwll.local> Content-Language: en-US Content-ID: <135D22D0753A5B46917C6294617B613C@internal.synopsys.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-snps-arc" Errors-To: linux-snps-arc-bounces+gla-linux-snps-arc=m.gmane.org@lists.infradead.org To: "daniel@ffwll.ch" Cc: "daniel.vetter@ffwll.ch" , "maarten.lankhorst@linux.intel.com" , "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 SGkgRGFuaWVsLAoKT24gVGh1LCAyMDE2LTA2LTA5IGF0IDE1OjIzICstMDIwMCwgRGFuaWVsIFZl dHRlciB3cm90ZToKPiBPbiBUaHUsIEp1biAwOSwgMjAxNiBhdCAxMjo0ODozMVBNICstMDAwMCwg QWxleGV5IEJyb2RraW4gd3JvdGU6Cj4gPiAKPiA+IEhpIERhbmllbCwKPiA+IAo+ID4gT24gVGh1 LCAyMDE2LTA2LTA5IGF0IDE0OjI2ICstMDIwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ID4g Cj4gPiA+IE9uIFRodSwgSnVuIDA5LCAyMDE2IGF0IDEwOjU0OjQ1QU0gKy0wMDAwLCBBbGV4ZXkg QnJvZGtpbiB3cm90ZToKPiA+ID4gPiAKPiA+ID4gPiAKPiA+ID4gPiBIaSBEYW5pZWwsCj4gPiA+ ID4gCj4gPiA+ID4gT24gV2VkLCAyMDE2LTA2LTA4IGF0IDE2OjMwICstMDIwMCwgRGFuaWVsIFZl dHRlciB3cm90ZToKPiA+ID4gPiA+IAo+ID4gPiA+ID4gCj4gPiA+ID4gPiBPbiBXZWQsIEp1biAw OCwgMjAxNiBhdCAwNDoxNDozOFBNICstMDIwMCwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6Cj4g PiA+ID4gPiA+IAo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IE9wIDA4LTA2 LTE2IG9tIDE0OjE4IHNjaHJlZWYgRGFuaWVsIFZldHRlcjoKPiA+ID4gPiA+ID4gPiAKPiA+ID4g PiA+ID4gPiAKPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBUaGUgZHJtIGNvcmUgaGFzIGEg bmljZSByZWFkeS1tYWRlIGhlbHBlciBmb3IgZXhhY3RseSB0aGUgc2ltcGxlIGNhc2UKPiA+ID4g PiA+ID4gPiB3aGVyZSBpdCBzaG91bGQgZmlyZSBvbiB0aGUgbmV4dCB2YmxhbmsuCj4gPiA+ID4g PiA+ID4gCj4gPiA+ID4gPiA+ID4gTm90ZSB0aGF0IGFybWluZyB0aGUgdmJsYW5rIGV2ZW50IGlu IF9iZWdpbiBpcyBwcm9iYWJseSB0b28gZWFybHksIGFuZAo+ID4gPiA+ID4gPiA+IG1pZ2h0IGVh c2lseSByZXN1bHQgaW4gdGhlIHZibGFuayBmaXJpbmcgdG9vIGVhcmx5LCBiZWZvcmUgdGhlIG5l dyBzZXQKPiA+ID4gPiA+ID4gPiBvZiBwbGFuZXMgYXJlIGFjdHVhbGx5IGRpc2FibGVkLiBCdXQg dGhhdCdzIGtpbmRhIGEgbWlub3IgaXNzdWUKPiA+ID4gPiA+ID4gPiBjb21wYXJlZCB0byBqdXN0 IG91dHJpZ2h0IGhhbmdpbmcgdXNlcnNwYWNlLgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ IHYyOiBCZSBtb3JlIHJvYnVzdCBhbmQgZWl0aGVyIGFybSwgd2hlbiB0aGUgQ1JUQyBpcyBvbiwg b3IganVzdCBzZW5kCj4gPiA+ID4gPiA+ID4gdGhlIGV2ZW50IG91dCByaWdodCBhd2F5Lgo+ID4g PiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IENjOiBDYXJsb3MgUGFsbWluaGEgPHBhbG1pbmhhQHN5 bm9wc3lzLmNvbT4KPiA+ID4gPiA+ID4gPiBDYzogQWxleGV5IEJyb2RraW4gPGFicm9ka2luQHN5 bm9wc3lzLmNvbT4KPiA+ID4gPiA+ID4gPiBDYzogbGludXgtc25wcy1hcmNAbGlzdHMuaW5mcmFk ZWFkLm9yZwo+ID4gPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmll bC52ZXR0ZXJAaW50ZWwuY29tPgo+ID4gPiA+ID4gPiBXb3VsZG4ndCBpdCBiZSBiZXR0ZXIgdG8g ZG8gdGhpcyBpbiBhdG9taWNfZmx1c2ggdGhlbj8KPiA+ID4gPiA+IEknbSBub3QgZ29pbmcgdG8g Zml4IHVwIG90aGVyIHBlb3BsZSdzIGRyaXZlcnMgY29tcGxldGVseSwganVzdCBlbm91Z2ggdG8K PiA+ID4gPiA+IGhvcGVmdWxseSBub3QgYnJlYWsgdGhlbS4gSWYgYXJjIGFsc28gYmxvY2tzIHZi bGFuayBpbnRlcnJ1cHRzIHdpdGggdGhlIGdvCj4gPiA+ID4gPiBiaXQsIHRoZW4gZG9pbmcgdGhp cyBpbiBfYmVnaW4gaXMgY29ycmVjdC4gRWl0aGVyIHdheSBpdCBuZWVkcyBody1zcGVjaWZpYwo+ ID4gPiA+ID4ga25vd2xlZGdlIHRvIGFzc2VzIHdoZXRoZXIgaXQncyBjb3JyZWN0LCBzaW5jZSBk b2luZyB0aGUgdmJsYW5rIGV2ZW50Cj4gPiA+ID4gPiBzdHVmZiBpbiBfZmx1c2ggaXMgYWxzbyBy YWN5IHdpdGhvdXQgc29tZSBwcmV2ZW50aW9uLgo+ID4gPiA+IEFjdHVhbGx5IGluIEFSQyBQR1Ug ZHJpdmVyIHRoYXQgd2FzIG9uZSBvZiBtYW55IG90aGVyIGNvcHktcGFzdGVzIGZyb20KPiA+ID4g PiBvdGhlciBkcml2ZXJzLiBJLmUuIGZvciBtZSB0aGlzIGlzIGFub3RoZXIgYm9pbGVycGxhdGUg YW5kIGlmIHRoYXQncyB0aGUKPiA+ID4gPiBzYW1lIGZvciBvdGhlciBkcml2ZXJzIGFzIHdlbGwg cHJvYmFibHkgdGhhdCdzIGEgZ29vZCBjYW5kaWRhdGUgZm9yCj4gPiA+ID4gZ2VuZXJhbGl6YXRp b24gaW50byBzb21ldGhpbmcgbGlrZStBS0EtZHJtX2hlbHBlcl9jcnRjX2F0b21pY19jaGVjaygp Lgo+ID4gPiBJIGNoZWNrZWQgdGhlbSBhbGwsIHlvdSBhcmUgc3BlY2lhbCB3aXRoIHlvdXIgY29k ZSBoZXJlLiBBbmQgdGhpcyBjYW4ndCBiZQo+ID4gPiBnZW5lcmFsaXplZCBzaW5jZSB5b3UgbXVz dCBzZW5kIG91dCB2YmxhbmsgZXZlbnRzIGluIGEgcmFjZS1mcmVlIG1hbm5lcgo+ID4gPiBhZ2Fp bnN0IHRoZSBhY3R1YWwgaHcgdXBkYXRlLiBUaGlzIHJlcXVpcmVzIGRlZXAga25vd2xlZGdlIG9m IHRoZSBhY3R1YWwKPiA+ID4gaHcsIGFuZCBpdCdzIG5vdCBzb21ldGhpbmcgdGhlIGhlbHBlcnMg Y2FuIHRha2UgY2FyZSBvZiB5b3UuIEl0IGlzIHZlcnkKPiA+ID4gbXVjaCBub3QgYm9pbGVycGxh dGUsIGJ1dCBjcnVjaWFsIGZvciBhIGNvcnJlY3QgaW1wbGVtZW50YXRpb24uIEFuZCBtb3N0Cj4g PiA+IGxpa2VseSBhcmNwZ3UgaXMgd3JvbmcsIGJ1dCBzaW5jZSBJIGRvbid0IGhhdmUgdGhhdCBo dyBrbm93bGVkZ2UgSSdtIG5vdAo+ID4gPiBnb2luZyB0byBjaGFuZ2UgaXQgbW9yZSB0aGFuIGFi c29sdXRlbHkgcmVxdWlyZWQuCj4gPiBXZWxsIEkgbWVhbnQgYXMgb2YgdG9kYXkgd2UgZG9uJ3Qg c3VwcG9ydCB2YmxhbmsgaW50ZXJydXB0cyBhbmQgc28KPiA+IGFyY19wZ3VfY3J0Y19hdG9taWNf YmVnaW4oKSBiYXJlbHkgbWFrZXMgYW55IHNlbnNlLgo+ID4gCj4gPiBTdGlsbCBpbiB0aGUgZnV0 dXJlIHdlIGRvIHBsYW4gdG8gYWRkIHN1cHBvcnQgb2YgaW50ZXJydXB0cy4KPiAKPgo+IElmIHlv dSBkb24ndCBzdXBwb3J0IHZibGFuayBpbnRlcnJ1cHRzIHlvdSdyZSBkcml2ZXIgaXNuJ3QgY29t cGxpYW50IHdpdGgKPiBhdG9taWMuIFlvdSBuZWVkIHRvIGF0IGxlYXN0IGZha2UgdGhlbS4KCklu ZGVlZC4gU28gbXkgYXNzdW1wdGlvbiB3YXMgdGhlcmUgYXJlIChvciBjb3VsZCBhcHBlYXIpIG90 aGVyIHNpbXBsZSBkcml2ZXJzCm9mIHRoZSBzYW1lIGtpbmQgYW5kIHRoYXQgZmFrZSBpbXBsZW1l bnRhdGlvbiBtaWdodCBiZSBnZW5lcmljLgoKLUFsZXhleQpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1zbnBzLWFyYyBtYWlsaW5nIGxpc3QKbGlu dXgtc25wcy1hcmNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXNucHMtYXJj