From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kazlauskas, Nicholas" Subject: Re: [PATCH 3/4] drm/amd/display: In VRR mode, do DRM core vblank handling at end of vblank. Date: Thu, 21 Mar 2019 15:48:03 +0000 Message-ID: References: <20190318171952.24302-1-mario.kleiner.de@gmail.com> <20190318171952.24302-4-mario.kleiner.de@gmail.com> <8ef78169-1893-0aee-9cb1-cce4054ebbcc@amd.com> <82efca66-1100-633f-2285-a9849d1bfc9e@amd.com> <929bad72-fb12-661e-d7e3-ac837d32c01c@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <929bad72-fb12-661e-d7e3-ac837d32c01c-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US Content-ID: <9C5E36FC3622CA44B877C1DACDA5EDB3-asWib9pRmPqcE4WynfumptQqCkab/8FMAL8bYrjMMd8@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "Wentland, Harry" , Mario Kleiner Cc: "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" List-Id: dri-devel@lists.freedesktop.org T24gMy8yMS8xOSAxMTozOCBBTSwgV2VudGxhbmQsIEhhcnJ5IHdyb3RlOg0KPiANCj4gDQo+IE9u IDIwMTktMDMtMjEgNTozOSBhLm0uLCBNYXJpbyBLbGVpbmVyIHdyb3RlOg0KPj4gT24gV2VkLCBN YXIgMjAsIDIwMTkgYXQgMTo1MyBQTSBLYXpsYXVza2FzLCBOaWNob2xhcw0KPj4gPE5pY2hvbGFz LkthemxhdXNrYXNAYW1kLmNvbT4gd3JvdGU6DQo+Pj4NCj4+PiBPbiAzLzIwLzE5IDM6NTEgQU0s IE1hcmlvIEtsZWluZXIgd3JvdGU6DQo+Pj4+IE9rLCBmaXhlZCBhbGwgdGhlIHN0eWxlIGlzc3Vl cyBhbmQgcmFuIGNoZWNrcGF0Y2ggb3ZlciB0aGUgcGF0Y2hlcy4gVGhhbmtzLg0KPj4+Pg0KPj4+ PiBPbiBUdWUsIE1hciAxOSwgMjAxOSBhdCAyOjMyIFBNIEthemxhdXNrYXMsIE5pY2hvbGFzDQo+ Pj4+IDxOaWNob2xhcy5LYXpsYXVza2FzQGFtZC5jb20+IHdyb3RlOg0KPj4+Pj4NCj4+Pj4+IE9u IDMvMTkvMTkgOToyMyBBTSwgS2F6bGF1c2thcywgTmljaG9sYXMgd3JvdGU6DQo+Pj4+Pj4gT24g My8xOC8xOSAxOjE5IFBNLCBNYXJpbyBLbGVpbmVyIHdyb3RlOg0KPiANCj4gLi4uc25pcC4uLg0K PiANCj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9p cnEvZGNuMTAvaXJxX3NlcnZpY2VfZGNuMTAuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxh eS9kYy9pcnEvZGNuMTAvaXJxX3NlcnZpY2VfZGNuMTAuYw0KPj4+Pj4+PiBpbmRleCBlMDRhZTQ5 Li4xMGFjNmRlIDEwMDY0NA0KPj4+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3Bs YXkvZGMvaXJxL2RjbjEwL2lycV9zZXJ2aWNlX2RjbjEwLmMNCj4+Pj4+Pj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2lycS9kY24xMC9pcnFfc2VydmljZV9kY24xMC5jDQo+ Pj4+Pj4+IEBAIC01Niw2ICs1NiwxOCBAQCBlbnVtIGRjX2lycV9zb3VyY2UgdG9fZGFsX2lycV9z b3VyY2VfZGNuMTAoDQo+Pj4+Pj4+ICAgICAgICAgICAgICAgIHJldHVybiBEQ19JUlFfU09VUkNF X1ZCTEFOSzU7DQo+Pj4+Pj4+ICAgICAgICBjYXNlIERDTl8xXzBfX1NSQ0lEX19EQ19ENl9PVEdf VlNUQVJUVVA6DQo+Pj4+Pj4+ICAgICAgICAgICAgICAgIHJldHVybiBEQ19JUlFfU09VUkNFX1ZC TEFOSzY7DQo+Pj4+Pj4+ICsgICAgY2FzZSBEQ05fMV8wX19TUkNJRF9fT1RHMF9JSENfVl9VUERB VEVfTk9fTE9DS19JTlRFUlJVUFQ6DQo+Pj4+Pj4+ICsgICAgICAgICAgICByZXR1cm4gRENfSVJR X1NPVVJDRV9WVVBEQVRFMTsNCj4+Pj4+Pj4gKyAgICBjYXNlIERDTl8xXzBfX1NSQ0lEX19PVEcx X0lIQ19WX1VQREFURV9OT19MT0NLX0lOVEVSUlVQVDoNCj4+Pj4+Pj4gKyAgICAgICAgICAgIHJl dHVybiBEQ19JUlFfU09VUkNFX1ZVUERBVEUyOw0KPj4+Pj4+PiArICAgIGNhc2UgRENOXzFfMF9f U1JDSURfX09URzJfSUhDX1ZfVVBEQVRFX05PX0xPQ0tfSU5URVJSVVBUOg0KPj4+Pj4+PiArICAg ICAgICAgICAgcmV0dXJuIERDX0lSUV9TT1VSQ0VfVlVQREFURTM7DQo+Pj4+Pj4+ICsgICAgY2Fz ZSBEQ05fMV8wX19TUkNJRF9fT1RHM19JSENfVl9VUERBVEVfTk9fTE9DS19JTlRFUlJVUFQ6DQo+ Pj4+Pj4+ICsgICAgICAgICAgICByZXR1cm4gRENfSVJRX1NPVVJDRV9WVVBEQVRFNDsNCj4+Pj4+ Pj4gKyAgICBjYXNlIERDTl8xXzBfX1NSQ0lEX19PVEc0X0lIQ19WX1VQREFURV9OT19MT0NLX0lO VEVSUlVQVDoNCj4+Pj4+Pj4gKyAgICAgICAgICAgIHJldHVybiBEQ19JUlFfU09VUkNFX1ZVUERB VEU1Ow0KPj4+Pj4+PiArICAgIGNhc2UgRENOXzFfMF9fU1JDSURfX09URzVfSUhDX1ZfVVBEQVRF X05PX0xPQ0tfSU5URVJSVVBUOg0KPj4+Pj4+PiArICAgICAgICAgICAgcmV0dXJuIERDX0lSUV9T T1VSQ0VfVlVQREFURTY7DQo+Pj4+Pg0KPj4+Pj4gSSdtIG5vdCBzdXJlIHdlIG5lY2Vzc2FyaWx5 IHdhbnQgdG8gcmV1c2UgdGhlIHNhbWUNCj4+Pj4+IERDX0lSUV9TT1VSQ0VfVlVQREFURTEuLi42 IGRlZmluaXRpb25zIGhlcmUgYWdhaW4gd2hlbiBpdCdzIHJlYWxseQ0KPj4+Pj4gVl9VUERBVEVf Tk9fTE9DSy4NCj4+Pj4+DQo+Pj4+DQo+Pj4+IEhtLiBUaGUgcHJvYmxlbSBpcyB0aGF0IGlmIHdl IHVzZSBkaWZmZXJlbnQgb25lcyBmb3IgRENFIGFuZCBEQ04gd2UNCj4+Pj4gbmVlZCBzcGVjaWFs LWNhc2UgaGFuZGxpbmcgaW4gYW1kZ3B1X2RtLmMsIGUuZy4sIGluDQo+Pj4+IGFtZGdwdV9kbV9z ZXRfdnVwZGF0ZV9pcnFfc3RhdGUoKSBhbmQgZG1fc2V0X3Z1cGRhdGVfaXJxKCkgdG8gZGV0ZWN0 DQo+Pj4+IGlmIGl0IGlzIGNhbGluZyBEQ0Ugb3IgRENOIChob3cgdG8gZGV0ZWN0IHRoaXM/KSB0 byBzZWxlY3QgZGlmZmVyZW50DQo+Pj4+IGlycSBzb3VyY2VzIElSUV9UWVBFX1ZVUERBVEUgdnMg SVJRX1RZUEVfVlVQREFURV9OT19MT0NLIGFuZCBzdWNoPw0KPj4+PiBBbmQgZGVmaW5pdGlvbnMg bGlrZSAic3RydWN0IGFtZGdwdV9pcnFfc3JjIHZ1cGRhdGVfaXJxOyIgc2hvdWxkIHRoZW4NCj4+ Pj4gYWxzbyBleGlzdCB0d2ljZSBhcyB2dXBkYXRlX2lycSBhbmQgdnVwZGF0ZV9pcnFfbm9fbG9j ayBmb3IgY29ycmVjdA0KPj4+PiBuYW1pbmc/DQo+Pj4+DQo+Pj4+IE9yIHdlJ2QgbmFtZSB0aGUg SVJRIHNvdXJjZSBhbmQgYWxsIHJlbGV2YW50IGRhdGEgc3RydWN0dXJlcyBhbmQNCj4+Pj4gZnVu Y3Rpb25zIHNvbWV0aGluZyBsaWtlIERDX0lSUV9TT1VSQ0VfVkJMQU5LX0VORDEuLjYgdG8gZGVz Y3JpYmUgd2hhdA0KPj4+PiBpdCBzaWduYWxzIGluc3RlYWQgb2YgdG8gd2hhdCBpdCBjb3JyZXNw b25kcyBpbiBoYXJkd2FyZT8gVGhhdCB3b3VsZA0KPj4+PiBiZSB3aGF0IHdhcyBkb25lIHdpdGgg dGhlIHJlZ3VsYXIgRENfSVJRX1NPVVJDRV9WQkxBTksxLi42LiBJdCBzaWduYWxzDQo+Pj4+IHN0 YXJ0IG9mIHZibGFuaywgYnV0IHRoZSB1bmRlcmx5aW5nIGh3IGludGVycnVwdHMgYXJlIGFjdHVh bGx5IGENCj4+Pj4gcHJvcGVybHkgcHJvZ3JhbW1lZCBWTElORTAgaXJxIG9uIERDRSBhbmQgYSBW U1RBUlRVUCBpcnEgb24gRENOLg0KPj4+DQo+Pj4NCj4+PiBBaCwgSSBzZWUgd2hhdCB5b3UgbWVh bi4gTWF5YmUgdGhpcyBpcyBmb3IgdGhlIGJldHRlciB0byBzaGFyZSB0aGUgc2FtZQ0KPj4+IG5h bWVzIHRoZW4uIEknbGwgZGVmZXIgdGhpcyB0byBIYXJyeS4NCj4+Pg0KPiANCj4gSSdkIHRlbmQg dG8gYWdyZWUgd2l0aCBNYXJpby4gSSB0aGluayBpdCdzIGJlc3QgdG8ga2VlcCB0aGUgc2FtZSBz ZW1hbnRpYyBmb3IgVlVQREFURS4NCj4gDQo+IFRoZSByZWd1bGFyIFZVUERBVEUgaGFzIHNvbWUg aW50ZXJhY3Rpb24gd2l0aCB0aGUgbWFzdGVyIGxvY2suIEkgaW1hZ2luZSB3ZSB3YW50IHNvbWV0 aGluZyB0aGF0IGZpcmVzIGluZGVwZW5kZW50bHkgb2YgaXQsIHdoaWNoIGxvb2tzIHRvIGJlIHRo ZSBfTk9fTE9DSyB2ZXJzaW9uLg0KPiANCj4gVGhhdCBzYWlkLCBib3RoIFZTVEFSVFVQIGFuZCBW VVBEQVRFIGNhbiBvY2N1ciBiZWZvcmUgVlNZTkMgb24gRENOLiBXaXRoIG1vc3QgdGltaW5ncyB0 aGlzIHByb2JhYmx5IHdvbid0IG9jY3VyIGJ1dCBpZiBvdXIgYmFjayBwb3JjaCBpcyByZWFsbHkg c21hbGwgd2UnZCBzZWUgdGhhdCBoYXBwZW5pbmcuIElmIHdlIG5lZWQgdG8gZ3VhcmFudGVlIHRo YXQgdGhpcyBpbnRlcnJ1cHQgb2NjdXJzIG5vIHNvb25lciB0aGFuIHZsaW5lIDAgd2Ugd2lsbCBu ZWVkIHRvIHJlZ2lzdGVyIGEgdmxpbmUgSVJRLg0KPiANCj4gQXMgZm9yIFZTVEFSVFVQIGFuZCBW VVBEQVRFLCBWU1RBUlRVUCBpcyB0aGUgSVJRIHRoYXQgaGFzIGFuIGltcGFjdCBvbiB0aGUgYmVo YXZpb3Igb2YgcmVuZGVyIGNsaWVudHMgYXMgaXQncyB0aGUgZGVhZGxpbmUgZm9yIGZyYW1lIHN1 Ym1pc3Npb25zLiBBZnRlciBWU1RBUlRVUCBhbnkgbmV3IGZyYW1lYnVmZmVyIGFkZHJlc3MgdXBk YXRlIGlzIHBvc3Rwb25lZCB0byB0aGUgbmV4dCBmcmFtZSAodW5sZXNzIHdlIGRvIGltbWVkaWF0 ZSBmbGlwKS4NCj4gDQo+IFNvIGZvciBub3cgVlVQREFURV9OT19MT0NLIGlzIHByb2JhYmx5IGZp bmUgYW5kIHdpbGwgaW1wcm92ZSBvdXIgc2l0dWF0aW9uIGV4Y2VwdCBmb3IgVlJSIGRpc3BsYXlz IHdpdGggYSByZWFsbHkgc2hvcnQgYmFjayBwb3JjaC4gTm90IHN1cmUgdGhvc2UgZXZlbiBleGlz dC4NCk1hcHBpbmcgdGhlIERDX0lSUV9TT1VSQ0VfVlVQREFURTEuLi42IHRvIHRoZSBfTk9fTE9D SyBpbnRlcnJ1cHQgc2VlbXMgDQpmaW5lIHRvIG1lIHRoZW4uDQoNCkZXSVcgb24gdGhlIGZldyBk aXNwbGF5cyBJIHRlc3RlZCBvbiBSYXZlbiB0aGUgZXZlbnQgd2FzIHVzdWFsbHkgc2VudCANCm91 dCByYXRoZXIgbGF0ZSAtIG5lYXIgb3IgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgYmFjayBwb3JjaC4g SSBkb24ndCB0aGluayANCndlIGhhdmUgdG8gbmVjZXNzYXJpbHkgd29ycnkgdGhhdCBpdCdsbCBo YXBwZW4gYmVmb3JlIHZsaW5lIDAgYXQgbGVhc3QuDQoNCkl0J3MgbW9yZSBhYm91dCBpdCBoYXBw ZW5pbmcgdG9vIGxhdGUgSSBzdXBwb3NlLiBBIHZsaW5lIDAgSVJRIHdvdWxkIA0KcHJvYmFibHkg YmUgaWRlYWwgaGVyZSBJIHRoaW5rLCBidXQgdGhpcyB3b3JrcyBmb3Igbm93Lg0KDQo+IA0KPj4+ Pg0KPj4+PiBPZiBjb3Vyc2UgdGhpcyBhbGwgYXNzdW1lcyB3ZSBuZWVkIHRvIHVzZSB0aGUgTk9f TE9DSyB2YXJpYW50IG9uIERDTj8NCj4+Pj4gV2UgaGF2ZW4ndCB0ZXN0ZWQgd2hhdCB0aGUgcmVn dWxhciBWVVBEQVRFX0lSUSBkb2VzLCBiZWNhdXNlIGkgZG9uJ3QNCj4+Pj4gaGF2ZSBhIHN1aXRh YmxlIHRlc3QgbWFjaGluZSwgYW5kIG15IHVzZSBvZiB0aGUgTk9fTE9DSyB2YXJpYW50IHdhcw0K Pj4+PiBqdXN0IGJhc2VkIG9uIG15IGludGVycHJldGF0aW9uIG9mIHRoaXMgbGl0dGxlIGNvbW1l bnQgaW4gdGhlIERDTg0KPj4+PiBoZWFkZXIgZmlsZToNCj4+Pj4NCj4+Pj4gI2RlZmluZSBEQ05f MV8wX19TUkNJRF9fT1RHMF9JSENfVl9VUERBVEVfTk9fTE9DS19JTlRFUlJVUFQgMHg1NyAvLw0K Pj4+PiAiT1RHMCBWVVBEQVRFIGV2ZW50IHdpdGhvdXQgbG9jayBpbnRlcnJ1cHQsIFZVUERBVEUg aXMgdXBkYXRlIGV2ZW50DQo+Pj4+IGZvciBkb3VibGUgYnVmZmVyZWQgcmVnaXN0ZXJzIg0KPj4+ Pg0KPj4+PiBhbmQgdGhlIGFic2VuY2Ugb2YgYW55IGV4cGxhbmF0b3J5IGNvbW1lbnQgaW4gdGhl IGRlZmluZSBvZiByZWd1bGFyIFZfVVBEQVRFOg0KPj4+Pg0KPj4+PiAjZGVmaW5lIERDTl8xXzBf X1NSQ0lEX19EQ19EMV9PVEdfVl9VUERBVEUgMHgxOCAvLyBEMSA6IE9URyBWX3VwZGF0ZQ0KPj4+ PiBPVEcxX0lIQ19WX1VQREFURV9JTlRFUlJVUFQNCj4+Pj4NCj4+Pj4gSSBhc3N1bWVkIHRoZSBO T19MT0NLIG1lYW5zIG5vdCBhZmZlY3RlZCBieSB0aGUgc3RhdGUgb2YgYW55IG9mIHRoZSBodw0K Pj4+PiBsb2Nrcywgc28gcmVndWxhciBWX1VQREFURSBtaWdodCBiZSBhZmZlY3RlZCBieSB0aGVt LiBZb3UgYWdyZWVkIHdpdGgNCj4+Pj4gdGhhdCwgYnV0IHdlIG5ldmVyIHRlc3RlZCB3aGF0IHJl Z3VsYXIgVl9VUERBVEUgd291bGQgZG8gb24gRENOLiBEbyB3ZQ0KPj4+PiBhY3R1YWxseSBrbm93 IGZvciBzdXJlIGZyb20gaHcgc3BlY3MgdGhhdCBpdCB3b3VsZCBub3Qgd29yaywgaWUuIG5vdA0K Pj4+PiB1bmNvbmRpdGlvbmFsbHkgZmlyZSB0aGUgSVJRIGF0IGV2ZXJ5IGVuZCBvZiBWQkxBTkss IGFzIHdlIG5lZWQ/DQo+Pj4NCj4+PiBGV0lXLCBJIGRpZCB0cnkgeW91ciBvcmlnaW5hbCBwYXRj aGVzIHdpdGggVl9VUERBVEUuIEkgZG9uJ3Qga25vdyBvZmYNCj4+PiB0aGUgdG9wIG9mIG15IGhl YWQgd2hhdCBzcGVjaWZpY2FsbHkgVl9VUERBVEUgZG9lcyB0aGF0IFZfVVBEQVRFX05PX0xPQ0sN Cj4+PiBkb2Vzbid0LCBidXQgYXQgdGhlIHZlcnkgbGVhc3QgdGhlIEhXIHdvbid0IGJlIGZsaXBw aW5nIGFueXRoaW5nIHRvIHRoZQ0KPj4+IHNjcmVlbiBpZiB5b3UncmUgdXNpbmcgdGhlIGZvcm1l ci4gWW91J2xsIGVuZCB1cCB3aXRoIGEgc3RhdGljIHNjcmVlbg0KPj4+IHRoYXQgbG9va3MgbGlr ZSBhIHN5c3RlbSBoYW5nLg0KPj4+DQo+Pg0KPj4gWWVzLCBidXQgdGhhdCB3YXMgYmVjYXVzZSB0 aGF0IGl0ZXJhdGlvbiBvZiB0aGUgcGF0Y2ggaGFkIGEgYnVnLCB3aGVyZQ0KPj4gaSBkZWZpbmVk IHRoZSBpcnEgc291cmNlcyAvIGlycSBodyBzb3VyY2VzIGFzIF9OT19MT0NLIHZhcmlhbnRzIGFz IGkNCj4+IGludGVuZGVkLCBidXQgZm9yZ290IHRvIGFkYXB0IHRoZSBpcnEgZW4vZGlzYWJsZSBy ZWdpc3RlciBtYWNyb3MuIFlvdQ0KPj4gZml4ZWQgbXkgYnVnIGR1cmluZyB5b3VyIHRlc3Rpbmcg YW5kIHNvIHdlIGtub3cgdGhlIF9OT19MT0NLIHZhcmlhbnQNCj4+IHdvcmtzIHBlcmZlY3RseSBm b3Igb3VyIHB1cnBvc2UuIEJ1dCB3ZSBuZXZlciB0ZXNlZCBpZiB0aGUgc3RhbmRhcmQNCj4+IHZh cmlhbnQgd291bGQgaGF2ZSB3b3JrZWQganVzdCBhcyB3ZWxsLg0KPj4NCj4+IEkgd2lsbCB0ZXN0 IHRoaXMgbGF0ZXIgdG9kYXksIGJlY2F1c2Ugc2luY2UgdG9kYXkgaSdtIHRoZSBwcm91ZCBvd25l cg0KPj4gb2YgYSBQQyB3aXRoIFJ5emVuIDUgMjQwMEcgd2l0aCBWZWdhMTEgUmF2ZW4gLyBEQ04t MS4wIDopLiBTbyBpJ2xsDQo+PiBnaXZlIGl0IGEgdHJ5LiBXb3VsZCBiZSBnb29kIHRob3VnaCBp ZiB5b3UgY291bGQgaGF2ZSBhIGxvb2sgYXQgdGhlDQo+PiBoYXJkd2FyZSBkb2NzIGkgYXNzdW1l IHlvdSBoYXZlIGludGVybmFsbHkgdG8gdmVyaWZ5IHdoYXQgdGhlIFZfVVBEQVRFDQo+PiBpcnEg aHcgc291cmNlIGFjdHVhbGx5IGRvZXM/DQo+Pg0KPiANCj4gSSBjb3VsZG4ndCBmaW5kIG11Y2gg cmVnYXJkaW5nIHRoZSBfTk9fTE9DSyBwYXJ0IGluIHRoZSBIVyBkb2NzLCB1bmZvcnR1bmF0ZWx5 LiBUaGUgb3RoZXIgc3R1ZmYgaXMgaW4gbXkgYmx1cmIgdXAgdG9wLg0KPiANCj4gSSB0aGluayB0 aGlzIGNoYW5nZSBpcyBmaW5lLiBXaXRoIHRoZSBjb21tZW50cyBmcm9tIE5pY2sgYW5kIFBhdWwg YWRkcmVzc2VkIHRoaXMgaXMNCj4gQWNrZWQtYnk6IEhhcnJ5IFdlbnRsYW5kIDxoYXJyeS53ZW50 bGFuZEBhbWQuY29tPg0KPiANCj4gSSByZWNvbW1lbmQgdHJ5aW5nIHRoZSBWTElORSBJUlEsIHRo b3VnaC4gTmljayBjYW4geW91IGNyZWF0ZSBhIHRhc2sgZm9yIHVzIHRvIGxvb2sgaW50byB0aGF0 Pw0KPiANCj4gSGFycnkNClN1cmUuDQoNCk5pY2hvbGFzIEthemxhdXNrYXMNCg0KPiANCj4+IC1t YXJpbw0KPj4NCj4+PiBOaWNob2xhcyBLYXpsYXVza2FzDQo+Pj4NCj4+Pj4NCj4+Pj4NCj4+Pj4+ Pj4gICAgICAgIGNhc2UgRENOXzFfMF9fU1JDSURfX0hVQlAwX0ZMSVBfSU5URVJSVVBUOg0KPj4+ Pj4+PiAgICAgICAgICAgICAgICByZXR1cm4gRENfSVJRX1NPVVJDRV9QRkxJUDE7DQo+Pj4+Pj4+ ICAgICAgICBjYXNlIERDTl8xXzBfX1NSQ0lEX19IVUJQMV9GTElQX0lOVEVSUlVQVDoNCj4+Pj4+ Pj4gQEAgLTE1Myw2ICsxNjUsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpcnFfc291cmNlX2lu Zm9fZnVuY3MgdmJsYW5rX2lycV9pbmZvX2Z1bmNzID0gew0KPj4+Pj4+PiAgICAgICAgLmFjayA9 IE5VTEwNCj4+Pj4+Pj4gICAgICB9Ow0KPj4+Pj4+Pg0KPj4+Pj4+PiArc3RhdGljIGNvbnN0IHN0 cnVjdCBpcnFfc291cmNlX2luZm9fZnVuY3MgdnVwZGF0ZV9ub19sb2NrX2lycV9pbmZvX2Z1bmNz ID0gew0KPj4+Pj4+PiArICAgIC5zZXQgPSBOVUxMLA0KPj4+Pj4+PiArICAgIC5hY2sgPSBOVUxM DQo+Pj4+Pj4+ICt9Ow0KPj4+Pj4+PiArDQo+Pj4+Pj4+ICAgICAgI2RlZmluZSBCQVNFX0lOTkVS KHNlZykgXA0KPj4+Pj4+PiAgICAgICAgRENFX0JBU0VfX0lOU1QwX1NFRyAjIyBzZWcNCj4+Pj4+ Pj4NCj4+Pj4+Pj4gQEAgLTIwMywxMiArMjIwLDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJx X3NvdXJjZV9pbmZvX2Z1bmNzIHZibGFua19pcnFfaW5mb19mdW5jcyA9IHsNCj4+Pj4+Pj4gICAg ICAgICAgICAgICAgLmZ1bmNzID0gJnBmbGlwX2lycV9pbmZvX2Z1bmNzXA0KPj4+Pj4+PiAgICAg ICAgfQ0KPj4+Pj4+Pg0KPj4+Pj4+PiAtI2RlZmluZSB2dXBkYXRlX2ludF9lbnRyeShyZWdfbnVt KVwNCj4+Pj4+Pj4gKy8qIHZ1cGRhdGVfbm9fbG9ja19pbnRfZW50cnkgbWFwcyB0byBEQ19JUlFf U09VUkNFX1ZVUERBVEV4LCB0byBtYXRjaCBzZW1hbnRpYw0KPj4+Pj4+PiArICogb2YgRENFJ3Mg RENfSVJRX1NPVVJDRV9WVVBEQVRFeC4NCj4+Pj4+Pj4gKyAqLw0KPj4+Pj4+PiArI2RlZmluZSB2 dXBkYXRlX25vX2xvY2tfaW50X2VudHJ5KHJlZ19udW0pXA0KPj4+Pj4+PiAgICAgICAgW0RDX0lS UV9TT1VSQ0VfVlVQREFURTEgKyByZWdfbnVtXSA9IHtcDQo+Pj4+Pj4+ICAgICAgICAgICAgICAg IElSUV9SRUdfRU5UUlkoT1RHLCByZWdfbnVtLFwNCj4+Pj4+Pj4gLSAgICAgICAgICAgICAgICAg ICAgT1RHX0dMT0JBTF9TWU5DX1NUQVRVUywgVlVQREFURV9JTlRfRU4sXA0KPj4+Pj4+PiAtICAg ICAgICAgICAgICAgICAgICBPVEdfR0xPQkFMX1NZTkNfU1RBVFVTLCBWVVBEQVRFX0VWRU5UX0NM RUFSKSxcDQo+Pj4+Pj4+IC0gICAgICAgICAgICAuZnVuY3MgPSAmdmJsYW5rX2lycV9pbmZvX2Z1 bmNzXA0KPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICBPVEdfR0xPQkFMX1NZTkNfU1RBVFVT LCBWVVBEQVRFX05PX0xPQ0tfSU5UX0VOLFwNCj4+Pj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg T1RHX0dMT0JBTF9TWU5DX1NUQVRVUywgVlVQREFURV9OT19MT0NLX0VWRU5UX0NMRUFSKSxcDQo+ Pj4+Pj4+ICsgICAgICAgICAgICAuZnVuY3MgPSAmdnVwZGF0ZV9ub19sb2NrX2lycV9pbmZvX2Z1 bmNzXA0KPj4+Pj4+PiAgICAgICAgfQ0KPj4+Pj4+Pg0KPj4+Pj4+PiAgICAgICNkZWZpbmUgdmJs YW5rX2ludF9lbnRyeShyZWdfbnVtKVwNCj4+Pj4+Pj4gQEAgLTMxNSwxMiArMzM1LDEyIEBAIGly cV9zb3VyY2VfaW5mb19kY24xMFtEQUxfSVJRX1NPVVJDRVNfTlVNQkVSXSA9IHsNCj4+Pj4+Pj4g ICAgICAgIGRjX3VuZGVyZmxvd19pbnRfZW50cnkoNiksDQo+Pj4+Pj4+ICAgICAgICBbRENfSVJR X1NPVVJDRV9ETUNVX1NDUF0gPSBkdW1teV9pcnFfZW50cnkoKSwNCj4+Pj4+Pj4gICAgICAgIFtE Q19JUlFfU09VUkNFX1ZCSU9TX1NXXSA9IGR1bW15X2lycV9lbnRyeSgpLA0KPj4+Pj4+PiAtICAg IHZ1cGRhdGVfaW50X2VudHJ5KDApLA0KPj4+Pj4+PiAtICAgIHZ1cGRhdGVfaW50X2VudHJ5KDEp LA0KPj4+Pj4+PiAtICAgIHZ1cGRhdGVfaW50X2VudHJ5KDIpLA0KPj4+Pj4+PiAtICAgIHZ1cGRh dGVfaW50X2VudHJ5KDMpLA0KPj4+Pj4+PiAtICAgIHZ1cGRhdGVfaW50X2VudHJ5KDQpLA0KPj4+ Pj4+PiAtICAgIHZ1cGRhdGVfaW50X2VudHJ5KDUpLA0KPj4+Pj4NCj4+Pj4+IEkgZG9uJ3QgdGhp bmsgd2Ugc2hvdWxkIGJlIG5lY2Vzc2FyaWx5IGRyb3BwaW5nIHRoZXNlLCBidXQgSSBndWVzcyBp dA0KPj4+Pj4gY291bGQgZ28gZWl0aGVyIHdheSBzaW5jZSB0aGVzZSBJUlFzIHRlY2huaWNhbGx5 IGFyZW4ndCBkZWZpbmVkLg0KPj4+Pj4NCj4+Pj4NCj4+Pj4gV2UgY291bGQga2VlcCBib3RoIGRl ZmluaXRpb25zIGFyb3VuZCwgb3JpZ2luYWwgdnVwZGF0ZV9pbnRfZW50cnkgKw0KPj4+PiB0aGUg bmV3IHZ1cGRhdGVfbm9fbG9ja19pbnRfZW50cnkuDQo+Pj4+DQo+Pj4+IC1tYXJpbw0KPj4+Pg0K Pj4+Pj4+PiArICAgIHZ1cGRhdGVfbm9fbG9ja19pbnRfZW50cnkoMCksDQo+Pj4+Pj4+ICsgICAg dnVwZGF0ZV9ub19sb2NrX2ludF9lbnRyeSgxKSwNCj4+Pj4+Pj4gKyAgICB2dXBkYXRlX25vX2xv Y2tfaW50X2VudHJ5KDIpLA0KPj4+Pj4+PiArICAgIHZ1cGRhdGVfbm9fbG9ja19pbnRfZW50cnko MyksDQo+Pj4+Pj4+ICsgICAgdnVwZGF0ZV9ub19sb2NrX2ludF9lbnRyeSg0KSwNCj4+Pj4+Pj4g KyAgICB2dXBkYXRlX25vX2xvY2tfaW50X2VudHJ5KDUpLA0KPj4+Pj4+PiAgICAgICAgdmJsYW5r X2ludF9lbnRyeSgwKSwNCj4+Pj4+Pj4gICAgICAgIHZibGFua19pbnRfZW50cnkoMSksDQo+Pj4+ Pj4+ICAgICAgICB2YmxhbmtfaW50X2VudHJ5KDIpLA0KPj4+Pj4+Pg0KPj4+Pj4+DQo+Pj4+Pj4g TmljaG9sYXMgS2F6bGF1c2thcw0KPj4+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fDQo+Pj4+Pj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QNCj4+Pj4+PiBh bWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPj4+Pj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeA0KPj4+Pj4+DQo+Pj4+Pg0KPj4+DQoN Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZngg bWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeA==