From mboxrd@z Thu Jan 1 00:00:00 1970 From: kbeldan@baylibre.com (Karl Beldan) Date: Fri, 26 Aug 2016 16:54:57 +0000 Subject: [PATCH 0/3] drm/tilcdc: Some fixes for LCDC rev1 In-Reply-To: References: <20160823125701.25700-1-kbeldan@baylibre.com> Message-ID: <20160826165457.GA20752@gobelin> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi, On Tue, Aug 23, 2016 at 07:24:42PM +0300, Jyri Sarha wrote: > Thanks a lot! > This is very helpful as I do not have LCDC rev1 HW my self, but only > am335x based boards. > > On 08/23/16 15:56, Karl Beldan wrote: > > Hi, > > > > I found some missing bits for rev1 of the LCDC and here are some of the > > changes I am using to use the DRM driver on an LCDCK (which has a rev1). > > 1/3 seems required by rev1 of the IP and without it my the LCDC on my > > LCDK keeps can't sync, 2/3 is required by the driver logic, while 3/3 > > is less of a requirement. > > I'll drop 3/3, because my recent patches should take care of that: > http://www.spinics.net/lists/devicetree/msg138885.html > They do indeed. > However, there will be v2 round of those patches. Only the DT binding > and its default value should change. > > > Although 1,2/3 would have fitted drm-fixes I based them on drm-next as > > 2/3 would conflict with the recent changes in drm-next. > > > > I'll pick these two up for my next pull request. Thanks! > > > Another thing which is also an absolute requirement for the rev1 but > > with which rev2 seems to cope fine is the palette loading (even if the DRM > > uses >= 16bpp formats), dixit the TRM: > > "12-, 16-, and 24-BPP modes do not need a palette; i.e., the pixel data is > > the desired RGB value. However, the first 32 bytes are still considered a > > palette. The first entry should be 4000h (bit 14 is 1) while the remaining > > entries must be filled with 0.". > > ATM I am using a local crude way of loading the palette to verify the > > missing bits to get the DRM driver properly working on the LCDK (as I > > haven't seen how things work in the DRM subsystem I can't post any proper > > change for that). > > > > I see. Reading from the TRM, that should be done for rev2 too. I'll try > to come up with a patch for that at some point, unless you send me one > first. > That would be nice. I didn't look at how to integrate my local changes but instead I tried to see what prevented modetest to work, (with the posted changes and the palette loading the framebuffer was operational but not modetest). It appears that when modetesting the LCDC loses its sync, and I guess that's because the framebuffer addresses are changed while the raster is still on, which seems inappropriate. Since the v2s seem to cope with framebuffer ceiling boundaries that are off, my first guess would be they don't use it and directly use the raster timings and the bpp format for the boundary and sees the framebuffer addresses changes (base + ceiling) as atomic. My local changes try to cope with that by handling the sync loss irq and it gives me a working modetest, however it is not enough to get modetest -v (ie. with vsynced page flipping) working. My impression would be that to work with v1, the following would be in order (in addition to the palette): - make changes to the controller with the raster disabled - handle FRAME_DONE and SYNC_LOST with v1 as well (the driver assumes it is only valid for v2, which is false) > > The posted changes and the above mentioned palette loading missing bit > > are specific to the DRM driver. > > > > However there are other shortcomings to the proper functioning of the > > LCDC on some platforms (I am currently focusing on the LCDK but I guess > > it should be true for all da850 based systems), which are not inherent to > > the DRM driver driver but which strongly relate to it: > > > > - The pixel clock rate setting (eg. currently the davinci clk can't cope > > properly with the DRM driver way of setting the clock and doesn't use > > the common clock framework) > > - The memory bandwidth/latency requirements for the LCDC are not met > > with the default priority settings (apparently there is a fix in > > da850_lcd_hw_init of: http://arago-project.org/git/projects/linux-davinci.git?p=projects/linux-davinci.git;a=blob;f=arch/arm/mach-davinci/board-omapl138-lcdk.c;h=689b4f304011e09e262782cf8c4b96eba00ac28b;hb=HEAD). > > Of course this one affects both the DRM and framebuffer systems. > > > > There is also memory bandwidth issues on am335x and we are still looking > for a proper system level fix. > > > Hence to test the LCDK my crude local changes include (ie. on top of the > > posted changes and some dts or sync_lost recovery bits): > > - palette loading > > - tweak of the pixel clock to cope with davinci clk > > If you have proper a fixes for these, please send a patch. The palette > loading is something I can probably do myself too, but the clock thing > is something that I at least can not test. > Why not behave as da8xx-fb ? It doesn't touch the fck clock rate but only adjusts the clkdiv of the LCDC for pixel clock, plus it seems to fit well with cpufreq. > > - adjustment of the memory master priorities > > > > That would be a system level fix and I can not say whether or not to > take such a fix. > > > > > BTW, with the recent changes of tilcdc from drm-next, I see this warning > > when loading the module: > > "drm:drm_helper_disable_unused_functions [drm_kms_helper]] *ERROR* Called for atomic driver, this is not what you want." > > > > That is also fixed in my latest patch series above. > Ok, I checked that out, I am currently using your latest series, thanks. Best regards, Karl > Best regards, > Jyri > > > > > Regards, > > Karl > > > > > > Karl Beldan (3): > > drm/tilcdc: Adjust the FB_CEILING address > > drm/tilcdc: Enable EOF interrupts for v1 LCDC > > drm/tilcdc: Advertise the DRM_FORMATs according to the IP revision > > > > drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 4 +++- > > drivers/gpu/drm/tilcdc/tilcdc_plane.c | 7 ++++++- > > 2 files changed, 9 insertions(+), 2 deletions(-) > > > From mboxrd@z Thu Jan 1 00:00:00 1970 From: Karl Beldan Subject: Re: [PATCH 0/3] drm/tilcdc: Some fixes for LCDC rev1 Date: Fri, 26 Aug 2016 16:54:57 +0000 Message-ID: <20160826165457.GA20752@gobelin> References: <20160823125701.25700-1-kbeldan@baylibre.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x229.google.com (mail-wm0-x229.google.com [IPv6:2a00:1450:400c:c09::229]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8DB616EB2B for ; Fri, 26 Aug 2016 16:54:10 +0000 (UTC) Received: by mail-wm0-x229.google.com with SMTP id i5so746597wmg.0 for ; Fri, 26 Aug 2016 09:54:10 -0700 (PDT) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jyri Sarha Cc: Karl Beldan , Kevin Hilman , Sekhar Nori , dri-devel@lists.freedesktop.org, Tomi Valkeinen , linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org SGksCgpPbiBUdWUsIEF1ZyAyMywgMjAxNiBhdCAwNzoyNDo0MlBNICswMzAwLCBKeXJpIFNhcmhh IHdyb3RlOgo+IFRoYW5rcyBhIGxvdCEKPiBUaGlzIGlzIHZlcnkgaGVscGZ1bCBhcyBJIGRvIG5v dCBoYXZlIExDREMgcmV2MSBIVyBteSBzZWxmLCBidXQgb25seQo+IGFtMzM1eCBiYXNlZCBib2Fy ZHMuCj4gCj4gT24gMDgvMjMvMTYgMTU6NTYsIEthcmwgQmVsZGFuIHdyb3RlOgo+ID4gSGksCj4g PiAKPiA+IEkgZm91bmQgc29tZSBtaXNzaW5nIGJpdHMgZm9yIHJldjEgb2YgdGhlIExDREMgYW5k IGhlcmUgYXJlIHNvbWUgb2YgdGhlCj4gPiBjaGFuZ2VzIEkgYW0gdXNpbmcgdG8gdXNlIHRoZSBE Uk0gZHJpdmVyIG9uIGFuIExDRENLICh3aGljaCBoYXMgYSByZXYxKS4KPiA+IDEvMyBzZWVtcyBy ZXF1aXJlZCBieSByZXYxIG9mIHRoZSBJUCBhbmQgd2l0aG91dCBpdCBteSB0aGUgTENEQyBvbiBt eQo+ID4gTENESyBrZWVwcyBjYW4ndCBzeW5jLCAyLzMgaXMgcmVxdWlyZWQgYnkgdGhlIGRyaXZl ciBsb2dpYywgd2hpbGUgMy8zCj4gPiBpcyBsZXNzIG9mIGEgcmVxdWlyZW1lbnQuCj4gCj4gSSds bCBkcm9wIDMvMywgYmVjYXVzZSBteSByZWNlbnQgcGF0Y2hlcyBzaG91bGQgdGFrZSBjYXJlIG9m IHRoYXQ6Cj4gaHR0cDovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9kZXZpY2V0cmVlL21zZzEzODg4 NS5odG1sCj4gCgpUaGV5IGRvIGluZGVlZC4KCj4gSG93ZXZlciwgdGhlcmUgd2lsbCBiZSB2MiBy b3VuZCBvZiB0aG9zZSBwYXRjaGVzLiBPbmx5IHRoZSBEVCBiaW5kaW5nCj4gYW5kIGl0cyBkZWZh dWx0IHZhbHVlIHNob3VsZCBjaGFuZ2UuCj4gCj4gPiBBbHRob3VnaCAxLDIvMyB3b3VsZCBoYXZl IGZpdHRlZCBkcm0tZml4ZXMgSSBiYXNlZCB0aGVtIG9uIGRybS1uZXh0IGFzCj4gPiAyLzMgd291 bGQgY29uZmxpY3Qgd2l0aCB0aGUgcmVjZW50IGNoYW5nZXMgaW4gZHJtLW5leHQuCj4gPiAKPiAK PiBJJ2xsIHBpY2sgdGhlc2UgdHdvIHVwIGZvciBteSBuZXh0IHB1bGwgcmVxdWVzdC4gVGhhbmtz IQo+IAo+ID4gQW5vdGhlciB0aGluZyB3aGljaCBpcyBhbHNvIGFuIGFic29sdXRlIHJlcXVpcmVt ZW50IGZvciB0aGUgcmV2MSBidXQgCj4gPiB3aXRoIHdoaWNoIHJldjIgc2VlbXMgdG8gY29wZSBm aW5lIGlzIHRoZSBwYWxldHRlIGxvYWRpbmcgKGV2ZW4gaWYgdGhlIERSTQo+ID4gdXNlcyA+PSAx NmJwcCBmb3JtYXRzKSwgZGl4aXQgdGhlIFRSTToKPiA+ICIxMi0sIDE2LSwgYW5kIDI0LUJQUCBt b2RlcyBkbyBub3QgbmVlZCBhIHBhbGV0dGU7IGkuZS4sIHRoZSBwaXhlbCBkYXRhIGlzCj4gPiB0 aGUgZGVzaXJlZCBSR0IgdmFsdWUuIEhvd2V2ZXIsIHRoZSBmaXJzdCAzMiBieXRlcyBhcmUgc3Rp bGwgY29uc2lkZXJlZCBhCj4gPiBwYWxldHRlLiBUaGUgZmlyc3QgZW50cnkgc2hvdWxkIGJlIDQw MDBoIChiaXQgMTQgaXMgMSkgd2hpbGUgdGhlIHJlbWFpbmluZwo+ID4gZW50cmllcyBtdXN0IGJl IGZpbGxlZCB3aXRoIDAuIi4KPiA+IEFUTSBJIGFtIHVzaW5nIGEgbG9jYWwgY3J1ZGUgd2F5IG9m IGxvYWRpbmcgdGhlIHBhbGV0dGUgdG8gdmVyaWZ5IHRoZQo+ID4gbWlzc2luZyBiaXRzIHRvIGdl dCB0aGUgRFJNIGRyaXZlciBwcm9wZXJseSB3b3JraW5nIG9uIHRoZSBMQ0RLIChhcyBJCj4gPiBo YXZlbid0IHNlZW4gaG93IHRoaW5ncyB3b3JrIGluIHRoZSBEUk0gc3Vic3lzdGVtIEkgY2FuJ3Qg cG9zdCBhbnkgcHJvcGVyCj4gPiBjaGFuZ2UgZm9yIHRoYXQpLgo+ID4gCj4gCj4gSSBzZWUuIFJl YWRpbmcgZnJvbSB0aGUgVFJNLCB0aGF0IHNob3VsZCBiZSBkb25lIGZvciByZXYyIHRvby4gSSds bCB0cnkKPiB0byBjb21lIHVwIHdpdGggYSBwYXRjaCBmb3IgdGhhdCBhdCBzb21lIHBvaW50LCB1 bmxlc3MgeW91IHNlbmQgbWUgb25lCj4gZmlyc3QuCj4gCgpUaGF0IHdvdWxkIGJlIG5pY2UuIEkg ZGlkbid0IGxvb2sgYXQgaG93IHRvIGludGVncmF0ZSBteSBsb2NhbCBjaGFuZ2VzCmJ1dCBpbnN0 ZWFkIEkgdHJpZWQgdG8gc2VlIHdoYXQgcHJldmVudGVkIG1vZGV0ZXN0IHRvIHdvcmssICh3aXRo IHRoZQpwb3N0ZWQgY2hhbmdlcyBhbmQgdGhlIHBhbGV0dGUgbG9hZGluZyB0aGUgZnJhbWVidWZm ZXIgd2FzIG9wZXJhdGlvbmFsCmJ1dCBub3QgbW9kZXRlc3QpLiBJdCBhcHBlYXJzIHRoYXQgd2hl biBtb2RldGVzdGluZyB0aGUgTENEQyBsb3NlcyBpdHMKc3luYywgYW5kIEkgZ3Vlc3MgdGhhdCdz IGJlY2F1c2UgdGhlIGZyYW1lYnVmZmVyIGFkZHJlc3NlcyBhcmUgY2hhbmdlZAp3aGlsZSB0aGUg cmFzdGVyIGlzIHN0aWxsIG9uLCB3aGljaCBzZWVtcyBpbmFwcHJvcHJpYXRlLiBTaW5jZSB0aGUg djJzCnNlZW0gdG8gY29wZSB3aXRoIGZyYW1lYnVmZmVyIGNlaWxpbmcgYm91bmRhcmllcyB0aGF0 IGFyZSBvZmYsIG15IGZpcnN0Cmd1ZXNzIHdvdWxkIGJlIHRoZXkgZG9uJ3QgdXNlIGl0IGFuZCBk aXJlY3RseSB1c2UgdGhlIHJhc3RlciB0aW1pbmdzCmFuZCB0aGUgYnBwIGZvcm1hdCBmb3IgdGhl IGJvdW5kYXJ5IGFuZCBzZWVzIHRoZSBmcmFtZWJ1ZmZlciBhZGRyZXNzZXMKY2hhbmdlcyAoYmFz ZSArIGNlaWxpbmcpIGFzIGF0b21pYy4gTXkgbG9jYWwgY2hhbmdlcyB0cnkgdG8gY29wZSB3aXRo CnRoYXQgYnkgaGFuZGxpbmcgdGhlIHN5bmMgbG9zcyBpcnEgYW5kIGl0IGdpdmVzIG1lIGEgd29y a2luZyBtb2RldGVzdCwKaG93ZXZlciBpdCBpcyBub3QgZW5vdWdoIHRvIGdldCBtb2RldGVzdCAt diAoaWUuIHdpdGggdnN5bmNlZCBwYWdlCmZsaXBwaW5nKSB3b3JraW5nLgpNeSBpbXByZXNzaW9u IHdvdWxkIGJlIHRoYXQgdG8gd29yayB3aXRoIHYxLCB0aGUgZm9sbG93aW5nIHdvdWxkIGJlIGlu Cm9yZGVyIChpbiBhZGRpdGlvbiB0byB0aGUgcGFsZXR0ZSk6Ci0gbWFrZSBjaGFuZ2VzIHRvIHRo ZSBjb250cm9sbGVyIHdpdGggdGhlIHJhc3RlciBkaXNhYmxlZAotIGhhbmRsZSBGUkFNRV9ET05F IGFuZCBTWU5DX0xPU1Qgd2l0aCB2MSBhcyB3ZWxsICh0aGUgZHJpdmVyIGFzc3VtZXMgaXQKICBp cyBvbmx5IHZhbGlkIGZvciB2Miwgd2hpY2ggaXMgZmFsc2UpCgo+ID4gVGhlIHBvc3RlZCBjaGFu Z2VzIGFuZCB0aGUgYWJvdmUgbWVudGlvbmVkIHBhbGV0dGUgbG9hZGluZyBtaXNzaW5nIGJpdCAK PiA+IGFyZSBzcGVjaWZpYyB0byB0aGUgRFJNIGRyaXZlci4KPiA+IAo+ID4gSG93ZXZlciB0aGVy ZSBhcmUgb3RoZXIgc2hvcnRjb21pbmdzIHRvIHRoZSBwcm9wZXIgZnVuY3Rpb25pbmcgb2YgdGhl IAo+ID4gTENEQyBvbiBzb21lIHBsYXRmb3JtcyAoSSBhbSBjdXJyZW50bHkgZm9jdXNpbmcgb24g dGhlIExDREsgYnV0IEkgZ3Vlc3MgCj4gPiBpdCBzaG91bGQgYmUgdHJ1ZSBmb3IgYWxsIGRhODUw IGJhc2VkIHN5c3RlbXMpLCB3aGljaCBhcmUgbm90IGluaGVyZW50IHRvCj4gPiB0aGUgRFJNIGRy aXZlciBkcml2ZXIgYnV0IHdoaWNoIHN0cm9uZ2x5IHJlbGF0ZSB0byBpdDoKPiA+IAo+ID4gLSBU aGUgcGl4ZWwgY2xvY2sgcmF0ZSBzZXR0aW5nIChlZy4gY3VycmVudGx5IHRoZSBkYXZpbmNpIGNs ayBjYW4ndCBjb3BlCj4gPiBwcm9wZXJseSB3aXRoIHRoZSBEUk0gZHJpdmVyIHdheSBvZiBzZXR0 aW5nIHRoZSBjbG9jayBhbmQgZG9lc24ndCB1c2UKPiA+IHRoZSBjb21tb24gY2xvY2sgZnJhbWV3 b3JrKQo+ID4gLSBUaGUgbWVtb3J5IGJhbmR3aWR0aC9sYXRlbmN5IHJlcXVpcmVtZW50cyBmb3Ig dGhlIExDREMgYXJlIG5vdCBtZXQgCj4gPiB3aXRoIHRoZSBkZWZhdWx0IHByaW9yaXR5IHNldHRp bmdzIChhcHBhcmVudGx5IHRoZXJlIGlzIGEgZml4IGluCj4gPiBkYTg1MF9sY2RfaHdfaW5pdCBv ZjogaHR0cDovL2FyYWdvLXByb2plY3Qub3JnL2dpdC9wcm9qZWN0cy9saW51eC1kYXZpbmNpLmdp dD9wPXByb2plY3RzL2xpbnV4LWRhdmluY2kuZ2l0O2E9YmxvYjtmPWFyY2gvYXJtL21hY2gtZGF2 aW5jaS9ib2FyZC1vbWFwbDEzOC1sY2RrLmM7aD02ODliNGYzMDQwMTFlMDllMjYyNzgyY2Y4YzRi OTZlYmEwMGFjMjhiO2hiPUhFQUQpLgo+ID4gT2YgY291cnNlIHRoaXMgb25lIGFmZmVjdHMgYm90 aCB0aGUgRFJNIGFuZCBmcmFtZWJ1ZmZlciBzeXN0ZW1zLgo+ID4gCj4gCj4gVGhlcmUgaXMgYWxz byBtZW1vcnkgYmFuZHdpZHRoIGlzc3VlcyBvbiBhbTMzNXggYW5kIHdlIGFyZSBzdGlsbCBsb29r aW5nCj4gZm9yIGEgcHJvcGVyIHN5c3RlbSBsZXZlbCBmaXguCj4gCj4gPiBIZW5jZSB0byB0ZXN0 IHRoZSBMQ0RLIG15IGNydWRlIGxvY2FsIGNoYW5nZXMgaW5jbHVkZSAoaWUuIG9uIHRvcCBvZiB0 aGUKPiA+IHBvc3RlZCBjaGFuZ2VzIGFuZCBzb21lIGR0cyBvciBzeW5jX2xvc3QgcmVjb3Zlcnkg Yml0cyk6Cj4gPiAtIHBhbGV0dGUgbG9hZGluZwo+ID4gLSB0d2VhayBvZiB0aGUgcGl4ZWwgY2xv Y2sgdG8gY29wZSB3aXRoIGRhdmluY2kgY2xrCj4gCj4gSWYgeW91IGhhdmUgcHJvcGVyIGEgZml4 ZXMgZm9yIHRoZXNlLCBwbGVhc2Ugc2VuZCBhIHBhdGNoLiBUaGUgcGFsZXR0ZQo+IGxvYWRpbmcg aXMgc29tZXRoaW5nIEkgY2FuIHByb2JhYmx5IGRvIG15c2VsZiB0b28sIGJ1dCB0aGUgY2xvY2sg dGhpbmcKPiBpcyBzb21ldGhpbmcgdGhhdCBJIGF0IGxlYXN0IGNhbiBub3QgdGVzdC4KPiAKCldo eSBub3QgYmVoYXZlIGFzIGRhOHh4LWZiID8gSXQgZG9lc24ndCB0b3VjaCB0aGUgZmNrIGNsb2Nr IHJhdGUgYnV0Cm9ubHkgYWRqdXN0cyB0aGUgY2xrZGl2IG9mIHRoZSBMQ0RDIGZvciBwaXhlbCBj bG9jaywgcGx1cyBpdCBzZWVtcyB0bwpmaXQgd2VsbCB3aXRoIGNwdWZyZXEuCgo+ID4gLSBhZGp1 c3RtZW50IG9mIHRoZSBtZW1vcnkgbWFzdGVyIHByaW9yaXRpZXMKPiA+IAo+IAo+IFRoYXQgd291 bGQgYmUgYSBzeXN0ZW0gbGV2ZWwgZml4IGFuZCBJIGNhbiBub3Qgc2F5IHdoZXRoZXIgb3Igbm90 IHRvCj4gdGFrZSBzdWNoIGEgZml4Lgo+IAo+ID4gCj4gPiBCVFcsIHdpdGggdGhlIHJlY2VudCBj aGFuZ2VzIG9mIHRpbGNkYyBmcm9tIGRybS1uZXh0LCBJIHNlZSB0aGlzIHdhcm5pbmcKPiA+IHdo ZW4gbG9hZGluZyB0aGUgbW9kdWxlOgo+ID4gImRybTpkcm1faGVscGVyX2Rpc2FibGVfdW51c2Vk X2Z1bmN0aW9ucyBbZHJtX2ttc19oZWxwZXJdXSAqRVJST1IqIENhbGxlZCBmb3IgYXRvbWljIGRy aXZlciwgdGhpcyBpcyBub3Qgd2hhdCB5b3Ugd2FudC4iCj4gPiAKPiAKPiBUaGF0IGlzIGFsc28g Zml4ZWQgaW4gbXkgbGF0ZXN0IHBhdGNoIHNlcmllcyBhYm92ZS4KPiAKCk9rLCBJIGNoZWNrZWQg dGhhdCBvdXQsIEkgYW0gY3VycmVudGx5IHVzaW5nIHlvdXIgbGF0ZXN0IHNlcmllcywgdGhhbmtz LgoKQmVzdCByZWdhcmRzLCAKS2FybAoKCgoKPiBCZXN0IHJlZ2FyZHMsCj4gSnlyaQo+IAo+ID4g Cj4gPiBSZWdhcmRzLCAKPiA+IEthcmwKPiA+IAo+ID4gCj4gPiBLYXJsIEJlbGRhbiAoMyk6Cj4g PiAgIGRybS90aWxjZGM6IEFkanVzdCB0aGUgRkJfQ0VJTElORyBhZGRyZXNzCj4gPiAgIGRybS90 aWxjZGM6IEVuYWJsZSBFT0YgaW50ZXJydXB0cyBmb3IgdjEgTENEQwo+ID4gICBkcm0vdGlsY2Rj OiBBZHZlcnRpc2UgdGhlIERSTV9GT1JNQVRzIGFjY29yZGluZyB0byB0aGUgSVAgcmV2aXNpb24K PiA+IAo+ID4gIGRyaXZlcnMvZ3B1L2RybS90aWxjZGMvdGlsY2RjX2NydGMuYyAgfCA0ICsrKy0K PiA+ICBkcml2ZXJzL2dwdS9kcm0vdGlsY2RjL3RpbGNkY19wbGFuZS5jIHwgNyArKysrKystCj4g PiAgMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4gPiAK PiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==