From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 28046C28CC0 for ; Wed, 29 May 2019 21:54:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E739024245 for ; Wed, 29 May 2019 21:54:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=onstation.org header.i=@onstation.org header.b="f+ScQg9n" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726476AbfE2VyX (ORCPT ); Wed, 29 May 2019 17:54:23 -0400 Received: from onstation.org ([52.200.56.107]:44478 "EHLO onstation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726250AbfE2VyX (ORCPT ); Wed, 29 May 2019 17:54:23 -0400 Received: from localhost (c-98-239-145-235.hsd1.wv.comcast.net [98.239.145.235]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: masneyb) by onstation.org (Postfix) with ESMTPSA id 4E7603E93F; Wed, 29 May 2019 21:54:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=onstation.org; s=default; t=1559166861; bh=tIAy2GIEYuNFrX/uboRVUaQFApaBDfrKHODIjF4ZzsY=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=f+ScQg9nH5BPsj0L/L9Pa5xMLgJuRWLyNAdh6g8x1q7BuhrDpRaPl+RkGQ21g7SyY R3BKA8lT8S5AS73Wb7sjxnACIfi+ejE5m4rfW7XJW9+TS9avwbBeX05ysQyCH2fT17 Trm/LM+RDTvci7VHkavslpvmltPUrECo6Wpb/35Y= Date: Wed, 29 May 2019 17:54:21 -0400 From: Brian Masney To: Jeffrey Hugo Cc: Jeffrey Hugo , Linus Walleij , Sean Paul , Rob Herring , Jonathan Marek , Dave Airlie , MSM , "linux-kernel@vger.kernel.org" , "open list:DRM PANEL DRIVERS" , Rob Clark , Daniel Vetter , freedreno Subject: Re: [Freedreno] [PATCH RFC v2 0/6] ARM: qcom: initial Nexus 5 display support Message-ID: <20190529215421.GA20611@basecamp> References: <20190529011705.GA12977@basecamp> <20190529013713.GA13245@basecamp> <20190529024648.GA13436@basecamp> <20190529102822.GA15027@basecamp> <20190529193046.GA19876@basecamp> <26c535af-9853-c8c9-3138-04f5d9ee11b0@codeaurora.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <26c535af-9853-c8c9-3138-04f5d9ee11b0@codeaurora.org> Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org On Wed, May 29, 2019 at 01:58:16PM -0600, Jeffrey Hugo wrote: > On 5/29/2019 1:30 PM, Brian Masney wrote: > > On Wed, May 29, 2019 at 08:41:31AM -0600, Jeffrey Hugo wrote: > > > On Wed, May 29, 2019 at 4:28 AM Brian Masney wrote: > > > > > > > > On Tue, May 28, 2019 at 08:53:49PM -0600, Jeffrey Hugo wrote: > > > > > On Tue, May 28, 2019 at 8:46 PM Brian Masney wrote: > > > > > > > > > > > > On Tue, May 28, 2019 at 07:42:19PM -0600, Jeffrey Hugo wrote: > > > > > > > > > Do you know if the nexus 5 has a video or command mode panel? There > > > > > > > > > is some glitchyness with vblanks and command mode panels. > > > > > > > > > > > > > > > > Its in command mode. I know this because I see two 'pp done time out' > > > > > > > > messages, even on 4.17. Based on my understanding, the ping pong code is > > > > > > > > only applicable for command mode panels. > > > > > > > > > > > > > > Actually, the ping pong element exists in both modes, but 'pp done > > > > > > > time out' is a good indicator that it is command mode. > > > > > > > > > > > > > > Are you also seeing vblank timeouts? > > > > > > > > > > > > Yes, here's a snippet of the first one. > > > > > > > > > > > > [ 2.556014] WARNING: CPU: 0 PID: 5 at drivers/gpu/drm/drm_atomic_helper.c:1429 drm_atomic_helper_wait_for_vblanks.part.1+0x288/0x290 > > > > > > [ 2.556020] [CRTC:49:crtc-0] vblank wait timed out > > > > > > [ 2.556023] Modules linked in: > > > > > > [ 2.556034] CPU: 0 PID: 5 Comm: kworker/0:0 Not tainted 5.2.0-rc1-00178-g72c3c1fd5f86-dirty #426 > > > > > > [ 2.556038] Hardware name: Generic DT based system > > > > > > [ 2.556056] Workqueue: events deferred_probe_work_func > > > > > > ... > > > > > > > > > > > > > Do you have busybox? > > > > > > > > > > > > > > Can you run - > > > > > > > sudo busybox devmem 0xFD900614 > > > > > > > sudo busybox devmem 0xFD900714 > > > > > > > sudo busybox devmem 0xFD900814 > > > > > > > sudo busybox devmem 0xFD900914 > > > > > > > sudo busybox devmem 0xFD900A14 > > > > > > > > > > > > # busybox devmem 0xFD900614 > > > > > > 0x00020020 > > > > > > > > > > Ok, so CTL_0 path, command mode, ping pong 0, with the output going to DSI 1. > > > > > > > > > > Next one please: > > > > > > > > > > busybox devmem 0xFD912D30 > > > > > > > > It's 0x00000000 on mainline and 4.17. I used the following script to > > > > dump the entire mdp5 memory region and attached the dump from 4.17 and > > > > 5.2rc1. > > > > > > > > > > ok, 0 means autorefresh is not on. Which is fine. My next guess > > > would be the vblank code checking the hardware vblank counter, which > > > doesn't exist. > > > In video mode, there is a frame counter which increments, which can be > > > used as the vblank counter. Unfortunately, that hardware isn't active > > > in command mode, and there isn't an equivalent. > > > > > > So, the vblank code is going to read the register, and look for an > > > update, which will never happen, thus it will timeout. There is a > > > backup path which uses timestamps (no hardware), which you can > > > activate with a quick hack - make max_vblank_count = 0 at the > > > following line > > > https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c#L753 > > > > That fixed the issue! > > Awesome. I'm glad it was something simple. > > > > > I previously observed that mdp5_get_vblank_counter, specifically > > mdp5_encoder_get_framecount, would always return 0. > > > > What's the best way to fix this in mainline? Set that to zero if any > > of the interface modes is MDP5_INTF_DSI_MODE_COMMAND? > > > > Short version, yes. Long version: > > I still have that hack in my tree and haven't come back to formulating > a proper fix yet. Feel free to run with it. > > Thinking about it briefly, we could do two things. We could fake a > hardware counter by just increment an int every time the vblank irq is > processed, but that seems clunky. Otherwise, we could force a > fallback onto the timestamp solution, which seems less invasive. > > In theory, we could service multiple displays, with different > properties (ie a combination of command and video mode). The hack > then, is not good, because it would break video mode (at-least we > wouldn't be using the register when we could). It would be great if > the use of the hardware register could be done per display. > > Luckily, it looks like someone just made that possible - > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/gpu/drm/drm_vblank.c?h=v5.2-rc2&id=ed20151a7699bb2c77eba3610199789a126940c4 I'll work on this for the msm driver. Thanks for the info! Brian From mboxrd@z Thu Jan 1 00:00:00 1970 From: Brian Masney Subject: Re: [PATCH RFC v2 0/6] ARM: qcom: initial Nexus 5 display support Date: Wed, 29 May 2019 17:54:21 -0400 Message-ID: <20190529215421.GA20611@basecamp> References: <20190529011705.GA12977@basecamp> <20190529013713.GA13245@basecamp> <20190529024648.GA13436@basecamp> <20190529102822.GA15027@basecamp> <20190529193046.GA19876@basecamp> <26c535af-9853-c8c9-3138-04f5d9ee11b0@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <26c535af-9853-c8c9-3138-04f5d9ee11b0-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Jeffrey Hugo Cc: Rob Herring , Jonathan Marek , Jeffrey Hugo , Dave Airlie , MSM , Linus Walleij , "linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , "open list:DRM PANEL DRIVERS" , Rob Clark , Daniel Vetter , freedreno , Sean Paul List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBNYXkgMjksIDIwMTkgYXQgMDE6NTg6MTZQTSAtMDYwMCwgSmVmZnJleSBIdWdvIHdy b3RlOgo+IE9uIDUvMjkvMjAxOSAxOjMwIFBNLCBCcmlhbiBNYXNuZXkgd3JvdGU6Cj4gPiBPbiBX ZWQsIE1heSAyOSwgMjAxOSBhdCAwODo0MTozMUFNIC0wNjAwLCBKZWZmcmV5IEh1Z28gd3JvdGU6 Cj4gPiA+IE9uIFdlZCwgTWF5IDI5LCAyMDE5IGF0IDQ6MjggQU0gQnJpYW4gTWFzbmV5IDxtYXNu ZXliQG9uc3RhdGlvbi5vcmc+IHdyb3RlOgo+ID4gPiA+IAo+ID4gPiA+IE9uIFR1ZSwgTWF5IDI4 LCAyMDE5IGF0IDA4OjUzOjQ5UE0gLTA2MDAsIEplZmZyZXkgSHVnbyB3cm90ZToKPiA+ID4gPiA+ IE9uIFR1ZSwgTWF5IDI4LCAyMDE5IGF0IDg6NDYgUE0gQnJpYW4gTWFzbmV5IDxtYXNuZXliQG9u c3RhdGlvbi5vcmc+IHdyb3RlOgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gT24gVHVlLCBNYXkg MjgsIDIwMTkgYXQgMDc6NDI6MTlQTSAtMDYwMCwgSmVmZnJleSBIdWdvIHdyb3RlOgo+ID4gPiA+ ID4gPiA+ID4gPiBEbyB5b3Uga25vdyBpZiB0aGUgbmV4dXMgNSBoYXMgYSB2aWRlbyBvciBjb21t YW5kIG1vZGUgcGFuZWw/ICBUaGVyZQo+ID4gPiA+ID4gPiA+ID4gPiBpcyBzb21lIGdsaXRjaHlu ZXNzIHdpdGggdmJsYW5rcyBhbmQgY29tbWFuZCBtb2RlIHBhbmVscy4KPiA+ID4gPiA+ID4gPiA+ IAo+ID4gPiA+ID4gPiA+ID4gSXRzIGluIGNvbW1hbmQgbW9kZS4gSSBrbm93IHRoaXMgYmVjYXVz ZSBJIHNlZSB0d28gJ3BwIGRvbmUgdGltZSBvdXQnCj4gPiA+ID4gPiA+ID4gPiBtZXNzYWdlcywg ZXZlbiBvbiA0LjE3LiBCYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nLCB0aGUgcGluZyBwb25nIGNv ZGUgaXMKPiA+ID4gPiA+ID4gPiA+IG9ubHkgYXBwbGljYWJsZSBmb3IgY29tbWFuZCBtb2RlIHBh bmVscy4KPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBBY3R1YWxseSwgdGhlIHBpbmcgcG9u ZyBlbGVtZW50IGV4aXN0cyBpbiBib3RoIG1vZGVzLCBidXQgJ3BwIGRvbmUKPiA+ID4gPiA+ID4g PiB0aW1lIG91dCcgaXMgYSBnb29kIGluZGljYXRvciB0aGF0IGl0IGlzIGNvbW1hbmQgbW9kZS4K PiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBBcmUgeW91IGFsc28gc2VlaW5nIHZibGFuayB0 aW1lb3V0cz8KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IFllcywgaGVyZSdzIGEgc25pcHBldCBv ZiB0aGUgZmlyc3Qgb25lLgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gWyAgICAyLjU1NjAxNF0g V0FSTklORzogQ1BVOiAwIFBJRDogNSBhdCBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxw ZXIuYzoxNDI5IGRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3MucGFydC4xKzB4Mjg4 LzB4MjkwCj4gPiA+ID4gPiA+IFsgICAgMi41NTYwMjBdIFtDUlRDOjQ5OmNydGMtMF0gdmJsYW5r IHdhaXQgdGltZWQgb3V0Cj4gPiA+ID4gPiA+IFsgICAgMi41NTYwMjNdIE1vZHVsZXMgbGlua2Vk IGluOgo+ID4gPiA+ID4gPiBbICAgIDIuNTU2MDM0XSBDUFU6IDAgUElEOiA1IENvbW06IGt3b3Jr ZXIvMDowIE5vdCB0YWludGVkIDUuMi4wLXJjMS0wMDE3OC1nNzJjM2MxZmQ1Zjg2LWRpcnR5ICM0 MjYKPiA+ID4gPiA+ID4gWyAgICAyLjU1NjAzOF0gSGFyZHdhcmUgbmFtZTogR2VuZXJpYyBEVCBi YXNlZCBzeXN0ZW0KPiA+ID4gPiA+ID4gWyAgICAyLjU1NjA1Nl0gV29ya3F1ZXVlOiBldmVudHMg ZGVmZXJyZWRfcHJvYmVfd29ya19mdW5jCj4gPiA+ID4gPiA+IC4uLgo+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gPiBEbyB5b3UgaGF2ZSBidXN5Ym94Pwo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4g PiA+IENhbiB5b3UgcnVuIC0KPiA+ID4gPiA+ID4gPiBzdWRvIGJ1c3lib3ggZGV2bWVtIDB4RkQ5 MDA2MTQKPiA+ID4gPiA+ID4gPiBzdWRvIGJ1c3lib3ggZGV2bWVtIDB4RkQ5MDA3MTQKPiA+ID4g PiA+ID4gPiBzdWRvIGJ1c3lib3ggZGV2bWVtIDB4RkQ5MDA4MTQKPiA+ID4gPiA+ID4gPiBzdWRv IGJ1c3lib3ggZGV2bWVtIDB4RkQ5MDA5MTQKPiA+ID4gPiA+ID4gPiBzdWRvIGJ1c3lib3ggZGV2 bWVtIDB4RkQ5MDBBMTQKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ICMgYnVzeWJveCBkZXZtZW0g MHhGRDkwMDYxNAo+ID4gPiA+ID4gPiAweDAwMDIwMDIwCj4gPiA+ID4gPiAKPiA+ID4gPiA+IE9r LCBzbyBDVExfMCBwYXRoLCBjb21tYW5kIG1vZGUsIHBpbmcgcG9uZyAwLCB3aXRoIHRoZSBvdXRw dXQgZ29pbmcgdG8gRFNJIDEuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IE5leHQgb25lIHBsZWFzZToK PiA+ID4gPiA+IAo+ID4gPiA+ID4gYnVzeWJveCBkZXZtZW0gMHhGRDkxMkQzMAo+ID4gPiA+IAo+ ID4gPiA+IEl0J3MgMHgwMDAwMDAwMCBvbiBtYWlubGluZSBhbmQgNC4xNy4gSSB1c2VkIHRoZSBm b2xsb3dpbmcgc2NyaXB0IHRvCj4gPiA+ID4gZHVtcCB0aGUgZW50aXJlIG1kcDUgbWVtb3J5IHJl Z2lvbiBhbmQgYXR0YWNoZWQgdGhlIGR1bXAgZnJvbSA0LjE3IGFuZAo+ID4gPiA+IDUuMnJjMS4K PiA+ID4gPiAKPiA+ID4gCj4gPiA+IG9rLCAwIG1lYW5zIGF1dG9yZWZyZXNoIGlzIG5vdCBvbi4g IFdoaWNoIGlzIGZpbmUuICBNeSBuZXh0IGd1ZXNzCj4gPiA+IHdvdWxkIGJlIHRoZSB2Ymxhbmsg Y29kZSBjaGVja2luZyB0aGUgaGFyZHdhcmUgdmJsYW5rIGNvdW50ZXIsIHdoaWNoCj4gPiA+IGRv ZXNuJ3QgZXhpc3QuCj4gPiA+IEluIHZpZGVvIG1vZGUsIHRoZXJlIGlzIGEgZnJhbWUgY291bnRl ciB3aGljaCBpbmNyZW1lbnRzLCB3aGljaCBjYW4gYmUKPiA+ID4gdXNlZCBhcyB0aGUgdmJsYW5r IGNvdW50ZXIuICBVbmZvcnR1bmF0ZWx5LCB0aGF0IGhhcmR3YXJlIGlzbid0IGFjdGl2ZQo+ID4g PiBpbiBjb21tYW5kIG1vZGUsIGFuZCB0aGVyZSBpc24ndCBhbiBlcXVpdmFsZW50Lgo+ID4gPiAK PiA+ID4gU28sIHRoZSB2YmxhbmsgY29kZSBpcyBnb2luZyB0byByZWFkIHRoZSByZWdpc3Rlciwg YW5kIGxvb2sgZm9yIGFuCj4gPiA+IHVwZGF0ZSwgd2hpY2ggd2lsbCBuZXZlciBoYXBwZW4sIHRo dXMgaXQgd2lsbCB0aW1lb3V0LiAgVGhlcmUgaXMgYQo+ID4gPiBiYWNrdXAgcGF0aCB3aGljaCB1 c2VzIHRpbWVzdGFtcHMgKG5vIGhhcmR3YXJlKSwgd2hpY2ggeW91IGNhbgo+ID4gPiBhY3RpdmF0 ZSB3aXRoIGEgcXVpY2sgaGFjayAtIG1ha2UgbWF4X3ZibGFua19jb3VudCA9IDAgYXQgdGhlCj4g PiA+IGZvbGxvd2luZyBsaW5lCj4gPiA+IGh0dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL2xpbnV4 L2xhdGVzdC9zb3VyY2UvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL21kcDUvbWRwNV9rbXMuYyNM NzUzCj4gPiAKPiA+IFRoYXQgZml4ZWQgdGhlIGlzc3VlIQo+IAo+IEF3ZXNvbWUuICBJJ20gZ2xh ZCBpdCB3YXMgc29tZXRoaW5nIHNpbXBsZS4KPiAKPiA+IAo+ID4gSSBwcmV2aW91c2x5IG9ic2Vy dmVkIHRoYXQgbWRwNV9nZXRfdmJsYW5rX2NvdW50ZXIsIHNwZWNpZmljYWxseQo+ID4gbWRwNV9l bmNvZGVyX2dldF9mcmFtZWNvdW50LCB3b3VsZCBhbHdheXMgcmV0dXJuIDAuCj4gPiAKPiA+IFdo YXQncyB0aGUgYmVzdCB3YXkgdG8gZml4IHRoaXMgaW4gbWFpbmxpbmU/IFNldCB0aGF0IHRvIHpl cm8gaWYgYW55Cj4gPiBvZiB0aGUgaW50ZXJmYWNlIG1vZGVzIGlzIE1EUDVfSU5URl9EU0lfTU9E RV9DT01NQU5EPwo+ID4gCj4gCj4gU2hvcnQgdmVyc2lvbiwgeWVzLiAgTG9uZyB2ZXJzaW9uOgo+ IAo+IEkgc3RpbGwgaGF2ZSB0aGF0IGhhY2sgaW4gbXkgdHJlZSBhbmQgaGF2ZW4ndCBjb21lIGJh Y2sgdG8gZm9ybXVsYXRpbmcKPiBhIHByb3BlciBmaXggeWV0LiAgRmVlbCBmcmVlIHRvIHJ1biB3 aXRoIGl0Lgo+IAo+IFRoaW5raW5nIGFib3V0IGl0IGJyaWVmbHksIHdlIGNvdWxkIGRvIHR3byB0 aGluZ3MuICBXZSBjb3VsZCBmYWtlIGEKPiBoYXJkd2FyZSBjb3VudGVyIGJ5IGp1c3QgaW5jcmVt ZW50IGFuIGludCBldmVyeSB0aW1lIHRoZSB2YmxhbmsgaXJxIGlzCj4gcHJvY2Vzc2VkLCBidXQg dGhhdCBzZWVtcyBjbHVua3kuICBPdGhlcndpc2UsIHdlIGNvdWxkIGZvcmNlIGEKPiBmYWxsYmFj ayBvbnRvIHRoZSB0aW1lc3RhbXAgc29sdXRpb24sIHdoaWNoIHNlZW1zIGxlc3MgaW52YXNpdmUu Cj4gCj4gSW4gdGhlb3J5LCB3ZSBjb3VsZCBzZXJ2aWNlIG11bHRpcGxlIGRpc3BsYXlzLCB3aXRo IGRpZmZlcmVudAo+IHByb3BlcnRpZXMgKGllIGEgY29tYmluYXRpb24gb2YgY29tbWFuZCBhbmQg dmlkZW8gbW9kZSkuICBUaGUgaGFjawo+IHRoZW4sIGlzIG5vdCBnb29kLCBiZWNhdXNlIGl0IHdv dWxkIGJyZWFrIHZpZGVvIG1vZGUgKGF0LWxlYXN0IHdlCj4gd291bGRuJ3QgYmUgdXNpbmcgdGhl IHJlZ2lzdGVyIHdoZW4gd2UgY291bGQpLiAgSXQgd291bGQgYmUgZ3JlYXQgaWYKPiB0aGUgdXNl IG9mIHRoZSBoYXJkd2FyZSByZWdpc3RlciBjb3VsZCBiZSBkb25lIHBlciBkaXNwbGF5Lgo+IAo+ IEx1Y2tpbHksIGl0IGxvb2tzIGxpa2Ugc29tZW9uZSBqdXN0IG1hZGUgdGhhdCBwb3NzaWJsZSAt Cj4gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFs ZHMvbGludXguZ2l0L2NvbW1pdC9kcml2ZXJzL2dwdS9kcm0vZHJtX3ZibGFuay5jP2g9djUuMi1y YzImaWQ9ZWQyMDE1MWE3Njk5YmIyYzc3ZWJhMzYxMDE5OTc4OWExMjY5NDBjNAoKSSdsbCB3b3Jr IG9uIHRoaXMgZm9yIHRoZSBtc20gZHJpdmVyLgoKVGhhbmtzIGZvciB0aGUgaW5mbyEKCkJyaWFu Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVu byBtYWlsaW5nIGxpc3QKRnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubw==