From mboxrd@z Thu Jan 1 00:00:00 1970 From: sonika Subject: Re: [PATCH] drm/i915/skl: Enabling PSR on Skylake Date: Wed, 21 Jan 2015 10:23:26 +0530 Message-ID: <54BF30C6.9020807@intel.com> References: <1421397446-25212-1-git-send-email-sonika.jindal@intel.com> <54BCED4A.6040805@intel.com> <20150120095024.GO10113@phenom.ffwll.local> <000C66961D35964B9714611E548C10AD0C160E6D@BGSMSX104.gar.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id EB1D96E236 for ; Tue, 20 Jan 2015 21:00:28 -0800 (PST) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi Cc: intel-gfx , "Vivi, Rodrigo" List-Id: intel-gfx@lists.freedesktop.org Ck9uIFdlZG5lc2RheSAyMSBKYW51YXJ5IDIwMTUgMDM6MzEgQU0sIFJvZHJpZ28gVml2aSB3cm90 ZToKPiBIaSBTb25pa2EsIGZvciB0aGUgbG9naW4gc2NyZWVuIG15IGd1ZXNzIGlzIHRoYXQgYmxp bmtpbmcgY3Vyc29yCj4gd2FpdGluZyBmb3IgcGFzc3dvcmQgYmxvY2tzIHBzciBlbnRyeS4KQnV0 IEkgdGhvdWdodCBpdCBpcyB0aGUgcHNyIGV4aXQgd2hpY2ggaXMgdGFraW5nIHRpbWUgd2hpY2gg aXMgd2h5IGl0IAp0YWtlcyB0aW1lCnRvIGFjdHVhbGx5IHNob3cgdXAgdGhlIGNoYXJhY3RlcnMK PiBGb3IgdGVzdCBjYXNlcyBJIHN0YXJ0ZWQgdGhlIHRlc3QgY2FzZSBlbmhhbmNlbWVudCBidXQg bXkgcHNyIHdvcmsgaXMKPiBwYXVzZWQgdGhpcyBtb250aCBmb3IgYnVnIG1haW50YWluYW5jZS4g QW55IGhlbHAgaXMgd2VsY29tZS4KPiBJIHdhcyBwbGFuaW5nIGFsc28gdG8gdGFrZSBhIGxvb2sg b24gbmV3IFBhdWxvJ3MgZmJjIHRlc3RzIGNhc2VzIHRvCj4gc2VlIGlmIHdlIGNvdWxkIHVzZSBz b21lIHBpZWNlcyBvbiBQU1IgdmFsaWRhdGlvbi4gbWlnaHQgYmUgd29ydGggdG8KPiB0YWtlIGEg bG9vay4KQ2FuIHdlIHRlc3Qgc2NlbmFyaW9zIGxpa2UgZGVsYXllZCBwc3IgZXhpdHMgKGxpa2Ug dGhlIG9uZSBJIG1lbnRpb25lZCkgCndpdGggdGVzdCBjYXNlPwpJZiB5ZXMsIEkgY2FuIHdvcmsg d2l0aCB5b3Ugb2ZmbGluZSB0byBlbmhhbmNlIHRoZSBpZ3QuCj4gQnV0IGFueXdheSwgZm9yIEhX IHRyYWNraW5nIEkgd291bGQgb25seSBjb25zaWRlciB3aGVuIEkgdXNlIGEgS0RFIGZvcgo+IGEg d2hpbGUgd2l0aG91dCBtaXNzaW5nIGFueSBzY3JlZW4gdXBkYXRlcyBhbmQgc2VlaW5nIHBlcmYg Y291bnRlcgo+IGluY3JlYXNpbmcuIEJ1dCBpZiB5b3UgdGVsbCB0aGlzIGlzIHdoYXQgaGFwcGVu aW5nIEkgdHJ1c3QgeW91IGFuZCB3ZQo+IGNhbiBhZGQgc3VwcG9ydCBmb3IgdGhhdCBzaW5jZSBp dCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0IGFuZCB2YWxpZGF0ZQo+IHRoYXQgY2FyZWZ1bGx5IGFs c28gb24gU0tMIHdoZW4gdHJ5aW5nIHRvIGVuYWJsZSBpdCBieSBkZWZhdWx0Cj4gZXZlcnl3aGVy ZS4KSG1tLCBJIGhhdmUgbm90IHRlc3RlZCB3aXRoIEtERSB5ZXQuIEkgaGF2ZSBiZWVuIHRlc3Rp bmcgd2l0aCB1YnVudHUgCndpdGggZ25vbWUuCkFuZCBpdCB3b3JrcyB2ZXJ5IHNtb290aCB0aGVy ZS4gSSB3aWxsIGRvIG1vcmUgZXhwZXJpbWVudHMgd2l0aCBLREUgdG9vLgo+Cj4gSSdtIGdvaW5n IHRvIHJldmlldyB0aGUgY29kZSBtb3JlIGNhcmVmdWxseSBsYXRlci4uLgo+Cj4gT24gVHVlLCBK YW4gMjAsIDIwMTUgYXQgMzo0OSBBTSwgSmluZGFsLCBTb25pa2EgPHNvbmlrYS5qaW5kYWxAaW50 ZWwuY29tPiB3cm90ZToKPj4gSXMgc29tZWJvZHkgd29ya2luZyBvbiBlbmhhbmNpbmcgdGhlIHBz ciB0ZXN0Y2FzZT8KPj4gLVNvbmlrYQo+Pgo+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ PiBGcm9tOiBEYW5pZWwgVmV0dGVyIFttYWlsdG86ZGFuaWVsLnZldHRlckBmZndsbC5jaF0gT24g QmVoYWxmIE9mIERhbmllbCBWZXR0ZXIKPj4gU2VudDogVHVlc2RheSwgSmFudWFyeSAyMCwgMjAx NSAzOjIwIFBNCj4+IFRvOiBKaW5kYWwsIFNvbmlrYQo+PiBDYzogRGFuaWVsIFZldHRlcjsgaW50 ZWwtZ2Z4OyBWaXZpLCBSb2RyaWdvCj4+IFN1YmplY3Q6IFJlOiBbSW50ZWwtZ2Z4XSBbUEFUQ0hd IGRybS9pOTE1L3NrbDogRW5hYmxpbmcgUFNSIG9uIFNreWxha2UKPj4KPj4gT24gTW9uLCBKYW4g MTksIDIwMTUgYXQgMDU6MTA6NThQTSArMDUzMCwgc29uaWthIHdyb3RlOgo+Pj4gT24gU2F0dXJk YXkgMTcgSmFudWFyeSAyMDE1IDA5OjU0IEFNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+Pj4+IE9u IEZyaSwgSmFuIDE2LCAyMDE1IGF0IDAyOjA3OjI2UE0gKzA1MzAsIFNvbmlrYSBKaW5kYWwgd3Jv dGU6Cj4+Pj4+IE1haW5seSB0YWtpbmcgY2FyZSBvZiBzb21lIHJlZ2lzdGVyIG9mZnNldHMsIG90 aGVyd2lzZSB0aGluZ3MgYXJlCj4+Pj4+IHNpbWlsYXIgdG8gaHN3LiBBbHNvLCBwcm9ncmFtbWlu ZyBkZGkgYXV4IHRvIHVzZSBoYXJkY29kZWQgdmFsdWVzIGZvciBwc3IgZGF0YSBzZWxlY3QuCj4+ Pj4+Cj4+Pj4+IHYyOiBpbnRyb2R1Y2UgIEVEUF9QU1JfQVVYX0JBU0UgbWFjcm8gKENocmlzKQo+ Pj4+PiB2MzogTW92aW5nIHRvIEhXIHRyYWNraW5nIGZvciBTS0wrIHBsYXRmb3Jtcywgc28gYWN0 aXZhdGluZyBzb3VyY2UKPj4+Pj4gcHNyIGR1cmluZyBwc3JfZW5hYmxpbmcgYW5kIHRoZW4gYXZv aWRpbmcgcHNyIGVudHJpZXMgYW5kIGV4aXRzIGZvcgo+Pj4+PiBlYWNoIGZyb250YnVmZmVyIHVw ZGF0ZXMuCj4+Pj4+Cj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFNvbmlrYSBKaW5kYWwgPHNvbmlrYS5q aW5kYWxAaW50ZWwuY29tPgo+Pj4+PiAtLS0KPj4+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oICAgICAgICAgIHwgICAgMyArKy0KPj4+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oICAgICAgICAgIHwgICAxOSArKysrKysrKysrKysrLS0tLS0tCj4+Pj4+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZnJvbnRidWZmZXIuYyB8ICAgIDcgKysrKystLQo+ Pj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jICAgICAgICAgfCAgIDE4ICsr KysrKysrKysrKysrKysrLQo+Pj4+PiAgIDQgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygr KSwgMTAgZGVsZXRpb25zKC0pCj4+Pj4+Cj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCBpbmRleCA0MmM2OWNhLi5lZTVjZDNiIDEwMDY0NAo+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPj4+Pj4gQEAgLTIzNTUsNyArMjM1NSw4IEBAIHN0cnVjdCBkcm1faTkxNV9jbWRfdGFi bGUgewo+Pj4+PiAgICNkZWZpbmUgSEFTX0RESShkZXYpIChJTlRFTF9JTkZPKGRldiktPmhhc19k ZGkpCj4+Pj4+ICAgI2RlZmluZSBIQVNfRlBHQV9EQkdfVU5DTEFJTUVEKGRldikKPj4+Pj4gKElO VEVMX0lORk8oZGV2KS0+aGFzX2ZwZ2FfZGJnKQo+Pj4+PiAgICNkZWZpbmUgSEFTX1BTUihkZXYp IChJU19IQVNXRUxMKGRldikgfHwgSVNfQlJPQURXRUxMKGRldikgfHwgXAo+Pj4+PiAtIElTX1ZB TExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpCj4+Pj4+ICsgSVNfVkFMTEVZVklF VyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSB8fCBcCj4+Pj4+ICsgSVNfU0tZTEFLRShkZXYp KQo+Pj4+PiAgICNkZWZpbmUgSEFTX1JVTlRJTUVfUE0oZGV2KSAoSVNfR0VONihkZXYpIHx8IElT X0hBU1dFTEwoZGV2KSB8fCBcCj4+Pj4+ICAgIElTX0JST0FEV0VMTChkZXYpIHx8IElTX1ZBTExF WVZJRVcoZGV2KSkKPj4+Pj4gICAjZGVmaW5lIEhBU19SQzYoZGV2KSAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPj0gNikgZGlmZiAtLWdpdAo+Pj4+PiBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+Pj4+IGluZGV4IGE4Mjhj ZjUuLjA2OGM4ZGEgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmgKPj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+Pj4+PiBA QCAtMjYxOSwxMiArMjYxOSwxNCBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPj4+Pj4g ICAjZGVmaW5lICAgRURQX1BTUl9UUDFfVElNRV8wdXMgKDM8PDQpCj4+Pj4+ICAgI2RlZmluZSAg IEVEUF9QU1JfSURMRV9GUkFNRV9TSElGVCAwCj4+Pj4+Cj4+Pj4+IC0jZGVmaW5lIEVEUF9QU1Jf QVVYX0NUTChkZXYpIChFRFBfUFNSX0JBU0UoZGV2KSArIDB4MTApIC0jZGVmaW5lCj4+Pj4+IEVE UF9QU1JfQVVYX0RBVEExKGRldikgKEVEUF9QU1JfQkFTRShkZXYpICsgMHgxNCkgLSNkZWZpbmUK Pj4+Pj4gRURQX1BTUl9BVVhfREFUQTIoZGV2KSAoRURQX1BTUl9CQVNFKGRldikgKyAweDE4KSAt I2RlZmluZQo+Pj4+PiBFRFBfUFNSX0FVWF9EQVRBMyhkZXYpIChFRFBfUFNSX0JBU0UoZGV2KSAr IDB4MWMpIC0jZGVmaW5lCj4+Pj4+IEVEUF9QU1JfQVVYX0RBVEE0KGRldikgKEVEUF9QU1JfQkFT RShkZXYpICsgMHgyMCkgLSNkZWZpbmUKPj4+Pj4gRURQX1BTUl9BVVhfREFUQTUoZGV2KSAoRURQ X1BTUl9CQVNFKGRldikgKyAweDI0KQo+Pj4+PiArI2RlZmluZSBFRFBfUFNSX0FVWF9CQVNFKGRl dikgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkgPyBcCj4+Pj4+ICsgMHg2NDAwMCA6IEVEUF9Q U1JfQkFTRShkZXYpKQo+Pj4+PiArI2RlZmluZSBFRFBfUFNSX0FVWF9DVEwoZGV2KSAoRURQX1BT Ul9BVVhfQkFTRShkZXYpICsgMHgxMCkgI2RlZmluZQo+Pj4+PiArRURQX1BTUl9BVVhfREFUQTEo ZGV2KSAoRURQX1BTUl9BVVhfQkFTRShkZXYpICsgMHgxNCkgI2RlZmluZQo+Pj4+PiArRURQX1BT Ul9BVVhfREFUQTIoZGV2KSAoRURQX1BTUl9BVVhfQkFTRShkZXYpICsgMHgxOCkgI2RlZmluZQo+ Pj4+PiArRURQX1BTUl9BVVhfREFUQTMoZGV2KSAoRURQX1BTUl9BVVhfQkFTRShkZXYpICsgMHgx YykgI2RlZmluZQo+Pj4+PiArRURQX1BTUl9BVVhfREFUQTQoZGV2KSAoRURQX1BTUl9BVVhfQkFT RShkZXYpICsgMHgyMCkgI2RlZmluZQo+Pj4+PiArRURQX1BTUl9BVVhfREFUQTUoZGV2KSAoRURQ X1BTUl9BVVhfQkFTRShkZXYpICsgMHgyNCkKPj4+Pj4KPj4+Pj4gICAjZGVmaW5lIEVEUF9QU1Jf U1RBVFVTX0NUTChkZXYpIChFRFBfUFNSX0JBU0UoZGV2KSArIDB4NDApCj4+Pj4+ICAgI2RlZmlu ZSAgIEVEUF9QU1JfU1RBVFVTX1NUQVRFX01BU0sgKDc8PDI5KQo+Pj4+PiBAQCAtMzc3MSw2ICsz NzczLDExIEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+Pj4+PiAgICNkZWZpbmUgICBE UF9BVVhfQ0hfQ1RMX1BSRUNIQVJHRV9URVNUICAgICgxIDw8IDExKQo+Pj4+PiAgICNkZWZpbmUg ICBEUF9BVVhfQ0hfQ1RMX0JJVF9DTE9DS18yWF9NQVNLICAgICgweDdmZikKPj4+Pj4gICAjZGVm aW5lICAgRFBfQVVYX0NIX0NUTF9CSVRfQ0xPQ0tfMlhfU0hJRlQgICAwCj4+Pj4+ICsjZGVmaW5l ICAgRFBfQVVYX0NIX0NUTF9QU1JfREFUQV9BVVhfUkVHX1NLTCAoMSA8PCAxNCkKPj4+Pj4gKyNk ZWZpbmUgICBEUF9BVVhfQ0hfQ1RMX0ZTX0RBVEFfQVVYX1JFR19TS0wgKDEgPDwgMTMpCj4+Pj4+ ICsjZGVmaW5lICAgRFBfQVVYX0NIX0NUTF9HVENfREFUQV9BVVhfUkVHX1NLTCAoMSA8PCAxMikK Pj4+Pj4gKyNkZWZpbmUgICBEUF9BVVhfQ0hfQ1RMX0ZXX1NZTkNfUFVMU0VfU0tMX01BU0sgKDFm IDw8IDUpCj4+Pj4+ICsjZGVmaW5lICAgRFBfQVVYX0NIX0NUTF9GV19TWU5DX1BVTFNFX1NLTChj KSAoKChjKSAtIDEpIDw8IDUpCj4+Pj4+ICAgI2RlZmluZSAgIERQX0FVWF9DSF9DVExfU1lOQ19Q VUxTRV9TS0woYykgICAoKGMpIC0gMSkKPj4+Pj4KPj4+Pj4gICAvKgo+Pj4+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZnJvbnRidWZmZXIuYwo+Pj4+PiBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Zyb250YnVmZmVyLmMKPj4+Pj4gaW5kZXggNzlmNmQ3Mi4u MDEwZDU1MCAxMDA2NDQKPj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZnJv bnRidWZmZXIuYwo+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mcm9udGJ1 ZmZlci5jCj4+Pj4+IEBAIC0xNTYsNyArMTU2LDkgQEAgdm9pZCBpbnRlbF9mYl9vYmpfaW52YWxp ZGF0ZShzdHJ1Y3QKPj4+Pj4gZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+Pj4+Pgo+Pj4+PiAg ICBpbnRlbF9tYXJrX2ZiX2J1c3koZGV2LCBvYmotPmZyb250YnVmZmVyX2JpdHMsIHJpbmcpOwo+ Pj4+Pgo+Pj4+PiAtIGludGVsX3Bzcl9pbnZhbGlkYXRlKGRldiwgb2JqLT5mcm9udGJ1ZmZlcl9i aXRzKTsKPj4+Pj4gKwo+Pj4+PiArIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkpCj4+Pj4+ ICsgaW50ZWxfcHNyX2ludmFsaWRhdGUoZGV2LCBvYmotPmZyb250YnVmZmVyX2JpdHMpOwo+Pj4+ PiAgIH0KPj4+Pj4KPj4+Pj4gICAvKioKPj4+Pj4gQEAgLTE4Miw3ICsxODQsOCBAQCB2b2lkIGlu dGVsX2Zyb250YnVmZmVyX2ZsdXNoKHN0cnVjdCBkcm1fZGV2aWNlCj4+Pj4+ICpkZXYsCj4+Pj4+ Cj4+Pj4+ICAgIGludGVsX21hcmtfZmJfYnVzeShkZXYsIGZyb250YnVmZmVyX2JpdHMsIE5VTEwp Owo+Pj4+Pgo+Pj4+PiAtIGludGVsX3Bzcl9mbHVzaChkZXYsIGZyb250YnVmZmVyX2JpdHMpOwo+ Pj4+PiArIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkpCj4+Pj4+ICsgaW50ZWxfcHNyX2Zs dXNoKGRldiwgZnJvbnRidWZmZXJfYml0cyk7Cj4+Pj4gSSdtIHByZXR0eSBzdXJlIHRoZSBodyBp c24ndCBnb29kIGVub3VnaCB5ZXQgdG8gZGV0ZWN0IGV2ZXJ5dGhpbmcsCj4+Pj4gdW5mb3J0dW5h dGVseSB0aGUgdGVzdGNhc2UgaXMgYWxzbyBub3QgcXVpdGUgcmVhZHkgeWV0LiBJbiBhbnkgY2Fz ZQo+Pj4+IHRoZXNlIGNoYW5nZXMgc2hvdWxkIGJlIG1vdmVkIGludG8gdGhlIGluZWxfcHNyXyog ZnVuY3Rpb25zIGFuZCBpbiBhCj4+Pj4gc2VwYXJhdGUgcGF0Y2guCj4+PiBXaGVuIHVidW50dSBi b290cyB1cCBhbmQgc3RvcHMgYXQgdGhlIGxvZ2luIHNjcmVlbiwgdGhlIHRleHQgSSBlbnRlcgo+ Pj4gY29tZXMgc2xvd2x5LCBsb29rcyBsaWtlIHBzciBleGl0IGFuZCBlbnRyeSBpcyBub3QgdmVy eSBwcm9tcHQgYXQgdGhhdCB0aW1lLgo+Pj4gQnV0IHdoZW4gSSB0cnkgd2l0aCBTVyB0cmFja2lu ZywgSSBzZWUgdGhhdCBQU1IgZG9lc24ndCBnZXQgZW5hYmxlZCBhdAo+Pj4gYWxsIGF0IHRoYXQg cG9pbnQhCj4+PiBBbHNvLCBJIGRvbid0IHNlZSBjYWxscyB0byBmcm9udGJ1ZmZlciBpbnZhbGlk YXRlIGFuZCBmbHVzaCBhdCB0aGF0IHBvaW50Lgo+Pj4gU28sIHdpdGggU1cgdHJhY2tpbmcgdG9v IHdlIHdpbGwgaGF2ZSBjYXNlcyB3aGVyZSB3ZSBkb24ndCBlbnRlciBwc3IuCj4+PiBBbnkgaW5w dXRzIG9uIHdoeSBmcm9udGJ1ZmZlciBjYWxscyBhcmUgbm90IHJlY2VpdmVkIGR1cmluZyBsb2dp biBzY3JlZW4/Cj4+Pgo+Pj4gUGxlYXNlIG5vdGUgdGhhdCBhZnRlciBsb2dpbiwgaXQgd29ya3Mg ZmluZSBpZiBJIHR5cGUgc29tZXRoaW5nIG9uIHRoZQo+Pj4gdGVybWluYWwgb3IgZG8gc29tZSBv dGhlciB0aGluZ3MuCj4+IEkgaGF2ZSBubyBpZGVhIHdoeSBvciB3aGF0IGV4YWN0bHkgdGhlIHVi dW50dSBzY3JlZW4gZG9lcyBpbiBpdCdzIGxvZ2luIGZ1bmN0aW9uLiBKdXN0IHBsZWFzZSBub3Rl IHRoYXQgdGhlcmUgYXJlIF9sb3RzXyBtb3JlIGRlc2t0b3AgZW52aXJvbm1lbnRzIG9uIGxpbnV4 IHRoYW4ganVzdCB1YnVudXQncyBmbGF2b3VyIG9mIGdub21lLCBzbyB3ZSByZWFsbHkgbmVlZCB0 byBoYXZlIHRoYXQgcHNyIHRlc3RjYXNlIHdvcmtpbmcgKHdoaWNoIGNvdmVycyB0aGVtIGFsbCkg aW5zdGVhZCBvZiBtYW51YWwgdGVzdGluZy4KPj4gLURhbmllbAo+Pgo+Pj4+IEFsc28gc29tZW9u ZSBuZWVkcyB0byByZS1yZXZpZXcgdGhlIHBzciBpZ3QgdGVzdGNhc2UgdG8gbWFrZSBzdXJlIGl0 Cj4+Pj4gY292ZXJzIGV2ZXJ5dGhpbmcuIFZpbGxlIGNvdWxkIGRvIHRoYXQgdG9vIHNpbmNlIGhl J3MgZG9uZSB0aGUgZmJjCj4+Pj4gdGVzdGNhc2UuCj4+Pj4gLURhbmllbAo+Pj4+Cj4+Pj4+ICAg IC8qCj4+Pj4+ICAgICogRklYTUU6IFVuY29uZGl0aW9uYWwgZmJjIGZsdXNoaW5nIGhlcmUgaXMg YSByYXRoZXIgZ3Jvc3MgaGFjawo+Pj4+PiBhbmQgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3Bzci5jCj4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNy LmMKPj4+Pj4gaW5kZXggZGQwZTZlMC4uNmQyY2RiOCAxMDA2NDQKPj4+Pj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcHNyLmMKPj4+Pj4gQEAgLTE3MywxMSArMTczLDI0IEBAIHN0YXRpYyB2b2lkIGhz d19wc3JfZW5hYmxlX3Npbmsoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPj4+Pj4gICAgSTkx NV9XUklURShFRFBfUFNSX0FVWF9EQVRBMShkZXYpICsgaSwKPj4+Pj4gICAgICBpbnRlbF9kcF9w YWNrX2F1eCgmYXV4X21zZ1tpXSwgc2l6ZW9mKGF1eF9tc2cpIC0gaSkpOwo+Pj4+Pgo+Pj4+PiAt IEk5MTVfV1JJVEUoRURQX1BTUl9BVVhfQ1RMKGRldiksCj4+Pj4+ICsgaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDkpIHsKPj4+Pj4gKyB1aW50MzJfdCB2YWw7Cj4+Pj4+ICsKPj4+Pj4gKyB2 YWwgPSBJOTE1X1JFQUQoRURQX1BTUl9BVVhfQ1RMKGRldikpOyB2YWwgJj0KPj4+Pj4gKyB+RFBf QVVYX0NIX0NUTF9USU1FX09VVF9NQVNLOyB2YWwgfD0KPj4+Pj4gKyBEUF9BVVhfQ0hfQ1RMX1RJ TUVfT1VUXzE2MDB1czsgdmFsICY9Cj4+Pj4+ICsgfkRQX0FVWF9DSF9DVExfTUVTU0FHRV9TSVpF X01BU0s7IHZhbCB8PSAoc2l6ZW9mKGF1eF9tc2cpIDw8Cj4+Pj4+ICsgRFBfQVVYX0NIX0NUTF9N RVNTQUdFX1NJWkVfU0hJRlQpOwo+Pj4+PiArIC8qIFVzZSBoYXJkY29kZWQgZGF0YSB2YWx1ZXMg Zm9yIFBTUiAqLyB2YWwgJj0KPj4+Pj4gKyB+RFBfQVVYX0NIX0NUTF9QU1JfREFUQV9BVVhfUkVH X1NLTDsKPj4+Pj4gKyBJOTE1X1dSSVRFKEVEUF9QU1JfQVVYX0NUTChkZXYpLCB2YWwpOyB9IGVs c2Ugewo+Pj4+PiArIEk5MTVfV1JJVEUoRURQX1BTUl9BVVhfQ1RMKGRldiksCj4+Pj4+ICAgICAg RFBfQVVYX0NIX0NUTF9USU1FX09VVF80MDB1cyB8Cj4+Pj4+ICAgICAgKHNpemVvZihhdXhfbXNn KSA8PCBEUF9BVVhfQ0hfQ1RMX01FU1NBR0VfU0laRV9TSElGVCkgfAo+Pj4+PiAgICAgIChwcmVj aGFyZ2UgPDwgRFBfQVVYX0NIX0NUTF9QUkVDSEFSR0VfMlVTX1NISUZUKSB8Cj4+Pj4+ICAgICAg KGF1eF9jbG9ja19kaXZpZGVyIDw8IERQX0FVWF9DSF9DVExfQklUX0NMT0NLXzJYX1NISUZUKSk7 Cj4+Pj4+ICsgfQo+Pj4+PiAgIH0KPj4+Pj4KPj4+Pj4gICBzdGF0aWMgdm9pZCB2bHZfcHNyX2Vu YWJsZV9zb3VyY2Uoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkgQEAKPj4+Pj4gLTM1NSw2ICsz NjgsOSBAQCB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK Pj4+Pj4KPj4+Pj4gICAgLyogRW5hYmxlIFBTUiBvbiB0aGUgcGFuZWwgKi8KPj4+Pj4gICAgaHN3 X3Bzcl9lbmFibGVfc2luayhpbnRlbF9kcCk7Cj4+Pj4+ICsKPj4+Pj4gKyBpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPj0gOSkKPj4+Pj4gKyBpbnRlbF9wc3JfYWN0aXZhdGUoaW50ZWxfZHApOwo+ Pj4+PiAgICB9IGVsc2Ugewo+Pj4+PiAgICB2bHZfcHNyX3NldHVwX3ZzYyhpbnRlbF9kcCk7Cj4+ Pj4+Cj4+Pj4+IC0tCj4+Pj4+IDEuNy4xMC40Cj4+Pj4+Cj4+Pj4+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+Pj4+IEludGVsLWdmeCBtYWlsaW5nIGxp c3QKPj4+Pj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+PiBodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4+IC0tCj4+IERh bmllbCBWZXR0ZXIKPj4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4+ICs0 MSAoMCkgNzkgMzY1IDU3IDQ4IC0gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKPj4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdAo+PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+IGh0dHA6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPgo+CgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=