From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bob Paauwe Subject: Re: [PATCH 2/2] igt/pm_rps: Add checks for freq = idle (RPn) in specific cases. Date: Thu, 3 Dec 2015 16:43:58 -0800 Message-ID: <20151203164358.0c1da165@bpaauwe-desk.fm.intel.com> References: <1447277879-4106-1-git-send-email-bob.j.paauwe@intel.com> <1448929399-24498-1-git-send-email-bob.j.paauwe@intel.com> <1448929399-24498-3-git-send-email-bob.j.paauwe@intel.com> <1448978215.14710.30.camel@intel.com> <20151201092208.0fc6724a@bpaauwe-desk.fm.intel.com> <1448991785.14710.49.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 54E566E0E2 for ; Thu, 3 Dec 2015 16:43:47 -0800 (PST) In-Reply-To: <1448991785.14710.49.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Imre Deak Cc: intel-gfx List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAxIERlYyAyMDE1IDE5OjQzOjA1ICswMjAwCkltcmUgRGVhayA8aW1yZS5kZWFrQGlu dGVsLmNvbT4gd3JvdGU6Cgo+IE9uIHRpLCAyMDE1LTEyLTAxIGF0IDA5OjIyIC0wODAwLCBCb2Ig UGFhdXdlIHdyb3RlOgo+ID4gT24gVHVlLCAxIERlYyAyMDE1IDE1OjU2OjU1ICswMjAwCj4gPiBJ bXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+IHdyb3RlOgo+ID4gCj4gPiA+IE9uIG1hLCAy MDE1LTExLTMwIGF0IDE2OjIzIC0wODAwLCBCb2IgUGFhdXdlIHdyb3RlOgo+ID4gPiA+IE5vdyB0 aGF0IHRoZSBmcmVxdWVuY3kgY2FuIGRyb3AgYmVsb3cgdGhlIHVzZXIgc3BlY2lmaWVkIG1pbmlt dW0KPiA+ID4gPiB3aGVuCj4gPiA+ID4gdGhlIGdwdSBpcyBpZGxlLCBhZGQgc29tZSBjaGVja2lu ZyB0byB2ZXJpZnkgdGhhdCBpdCByZWFsbHkgZG9lcwo+ID4gPiA+IGRyb3AKPiA+ID4gPiBkb3du IHRvIHRoZSBSUG4gZnJlcXVlbmN5IGluIHNwZWNpZmljIGNhc2VzLgo+ID4gPiA+IAo+ID4gPiA+ IFRvIGRvIHRoaXMsIG1vZGlmeSB0aGUgbWFpbiB0ZXN0IGZsb3cgdG8gdGFrZSB0d28gJ2NoZWNr Jwo+ID4gPiA+IHJvdXRpbmVzCj4gPiA+ID4gaW5zdGVhZCBvZiBvbmUuIFdoZW4gcnVubmluZyB0 aGUgY29uZmlnLW1pbi1tYXgtaWRsZSBzdWJ0ZXN0IG1ha2UKPiA+ID4gPiB1c2Ugb2YgdGhlIHNl Y29uZCBjaGVjayByb3V0aW5lIHRvIHZlcmlmeSB0aGF0IHRoZSBmcmVxdWVuY3kKPiA+ID4gPiBk cm9wcwo+ID4gPiA+IHRvIFJQbiBpbnN0ZWFkIG9mIHNpbXBseSA8PSB1c2VyIG1pbiBmcmVxdWVu Y3kuwqDCoEZvciBhbGwgb3RoZXIKPiA+ID4gPiBzdWJ0ZXN0cywgdXNlIHRoZSBvcmlnaW5hbCBj aGVjayByb3V0aW5lcyBmb3IgYm90aCBjaGVja3MuCj4gPiA+ID4gCj4gPiA+ID4gU2lnbmVkLW9m Zi1ieTogQm9iIFBhYXV3ZSA8Ym9iLmoucGFhdXdlQGludGVsLmNvbT4KPiA+ID4gCj4gPiA+IEkg ZG9uJ3Qgc2VlIHRoZSBwb2ludC4gVGhlIGZyZXF1ZW5jeSBzaG91bGQgYWx3YXlzIGRyb3AgdG8g dGhlIGlkbGUKPiA+ID4gZnJlcXVlbmN5IGlmIHRoZSBHUFUgaXMgaWRsZSwgaXQncyBub3QgZW5v dWdoIHRoYXQgaXQncyBiZWxvdyBNSU4tCj4gPiA+IGZyZXEuIAo+ID4gPiBTbyB3aHkgZG8gd2Ug bmVlZCBzZXBhcmF0ZSBDVVItZnJlcTw9TUlOLWZyZXEgYW5kIENVUi1mcmVxPT1pZGxlLQo+ID4g PiBmcmVxCj4gPiA+IGNoZWNrcz8KPiA+IAo+ID4gSSBzdGFydGVkIGZyb20gdGhlIHByZW1pc2Ug dGhhdCBpdCBzaG91bGQgYWx3YXlzIGRyb3AgdG8gaWRsZSBidXQKPiA+IHRoYXQncyBqdXN0IG5v dCB0aGUgY2FzZS4KPiAKPiBJdCBpcyB0aGUgY29ycmVjdCBwcmVtaXNlIGFuZCBpZiBpdCBkb2Vz bid0IGhvbGQgdGhlbiB0aGVyZSBpcyBhIHJlYWwKPiBidWcgZWl0aGVyIGluIHRoZSB0ZXN0Y2Fz ZSBvciB0aGUga2VybmVsIHdoaWNoIG5lZWRzIHRvIGJlIGFkZHJlc3NlZAo+IGRpZmZlcmVudGx5 LiBJIGhhdmVuJ3QgZm91bmQgYW55dGhpbmcgY29uY3JldGUgYnV0IG9uZSBzdXNwZWN0IGlzIHRo ZQo+IGxvZ2ljIHRoYXQgd2FpdHMgZm9yIHRoZSBHUFUgaWRsZSBjb25kaXRpb24sIG1heWJlIHRo ZSB0aW1lb3V0Cj4gdmFsdWXCoGlkbGVfY2hlY2soKSBvciB0aGUgaGFyZC1jb2RlZCBkdXJhdGlv biBpbiBkb19sb2FkX2dwdSgpIGlzCj4gaW5jb3JyZWN0LiBJbiBhbnkgY2FzZSBsZXQncyBub3Qg cGFwZXIgb3ZlciB0aGlzIGlzc3VlLCB0aGUgdmVyeSByZWFzb24KPiB3ZSBoYXZlIHRlc3QgY2Fz ZXMgaXMgdG8gdW5jb3ZlciBzdWNoIGJ1Z3MuCj4gCj4gPiBUaGUgbWluX21heF9jb25maWcoKSBm dW5jdGlvbiBpcyB1c2VkIGZvcgo+ID4gYm90aCB0aGUgaWRsZSBhbmQgbG9hZGVkIHN1YnRlc3Rz LsKgwqBJZiB5b3UgdHJ5IHRvIGNoZWNrIGZvciBmcmVxPWlkbGUKPiA+IHdoZW4gZG9pbmcgdGhl IGxvYWRlZCBzdWJ0ZXN0IGl0IHdpbGwgZmFpbCBzaW5jZSBpdCBuZXZlciBnb2VzIGlkbGUuCj4g PiBFdmVuIGluIHRoZSBpZGxlIHN1YnRlc3QgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIGl0IGRvZXNu J3QgZHJvcCBkb3duCj4gPiB0bwo+ID4gaWRsZS4gCj4gCj4gVGhlIG9ubHkgcGxhY2Ugd2Ugc2hv dWxkIGNoZWNrIGZvciBmcmVxPT1pZGxlIGlzIGluIGlkbGVfY2hlY2soKSBhbmQKPiB0aGF0IG9u ZSBpcyBub3QgY2FsbGVkIGR1cmluZyB0aGUgbG9hZGVkIHN1YnRlc3QsIGl0IHdvdWxkbid0IGV2 ZW4gbWFrZQo+IHNlbnNlIHRvIGRvIHNvLiBTbyBJJ20gbm90IHN1cmUgaG93IHRoaXMgc3VidGVz dCBmYWlscyBmb3IgeW91LsKgCj4gCj4gPiBJIHN1cHBvc2UgSSBjb3VsZCBkdXBsaWNhdGUgbWlu X21heF9jb25maWcgYW5kIGhhdmUgYQo+ID4gbWluX21heF9jb25maWdfaWRsZSgpIGFuZCBtaW5f bWF4X2NvbmlmZ19ub3RfaWRsZSgpIGZvciB1c2UgYnkgdGhlCj4gPiBkaWZmZXJlbnQgc3VidGVz dHMuIAo+IAo+IFRoZSBwb2ludCBvZiB0aGUgImNoZWNrIiBhcmd1bWVudCBvZiBtaW5fbWF4X2Nv bmZpZygpIGlzIHRvIGRpc3Rpbmd1aXNoCj4gYmV0d2VlbiB0aGUgaWRsZSBhbmQgbG9hZGVkIGNh c2VzLiBUaGUgY2hlY2sgZnVuY3Rpb25zIHBhc3NlZCBpbiBrbm93Cj4gYWxyZWFkeSBpZiB0aGV5 IGNhbiBleHBlY3QgdGhlIGZyZXF1ZW5jeSB0byByZWFjaCB0aGUgaWRsZSBmcmVxdWVuY3kKPiBv ciBub3QuCj4gCj4gPiBUaGUgcmVhbCBwcm9ibGVtIGlzIHRoYXQgdGhlIHRlc3Qgd2FzIG5vdCBk ZXNpZ25lZCB0byBoYW5kbGUgdGhlIGNhc2UKPiA+IHdoZXJlIHRoZSBmcmVxIGNvdWxkIGRyb3Ag YmVsb3cgbWluIGFuZCBwcm9iYWJseSBuZWVkcyB0byBiZQo+ID4gcmUtZGVzaWduZWQuwqDCoEkn dmUgYmVlbiB0cnlpbmcgdG8gZmluZCBhIHF1aWNrIGZpeCB2cy4gYSBjb21wbGV0ZQo+ID4gb3Zl cmhhdWwgYXMgdGhpcyBpc24ndCByZWFsbHkgYSBwcmlvcml0eSBmb3IgbWUuCj4gCj4gSSB0aGlu ayB3ZSBvbmx5IG5lZWQgeW91ciBmaXJzdCBwYXRjaCBhbmQgaWYgdGhlcmUgaXMgYW55IGZhaWx1 cmUgYWZ0ZXIKPiB0aGF0IHdlIGhhdmUgdG8gcm9vdCBjYXVzZSB0aGF0IGFuZCBmaXggaXQgcHJv cGVybHkuCj4gCj4gLS1JbXJlCgpZb3UncmUgcmlnaHQuICBJJ20gd29ya2luZyB3aXRoIEJYVCBh bmQgaXQgc2VlbXMgbGlrZSBpdCdzIGdvdCBzb21lCnVuaXF1ZSBpc3N1ZXMgd2l0aCBSUFMuICBJ IGp1c3Qgc2VudCBhIG5ldyBwYXRjaCBiYXNlZCBvbiB0aGUgZmlyc3Qgb25lCmJ1dCB3aXRoIHRo ZSBjaGFuZ2VzIHlvdSBzdWdnZXN0ZWQgdG8gY2hlY2sgZm9yID09aWRsZSBpbnN0ZWFkIG9mIDw9 bWluLgoKTWF5YmUgeW91IGhhdmUgc29tZSBpbnNpZ2h0cyBpbnRvIHdoYXQgSSdtIHNlZWluZyB3 aXRoIEJYVD8gIFRoZSBmaXJzdApwcm9ibGVtIEkgaGFkIHdhcyB0aGF0IEkgd291bGQgc2VlIHRo cmVzaG9sZCB1cCBpbnRlcnJ1cHRzIGJ1dCBub3QgYW55CnRocmVzaG9sZCBkb3duIGludGVycnVw dHMuICBUaGUgbWlzc2luZyBkb3duIGludGVycnVwdHMgd2FzIHJlbGF0ZWQgdG8KdGhlIEJJT1Mg c2V0dGluZy4gIEkgaGFkIHJ1bnRpbWUgUE0gZGlzYWJsZWQgc28gaXQgc2VlbXMgc3RyYW5nZSB0 aGF0IEkKd2FzIGdldHRpbmcgdGhlIHVwIGludGVycnVwdHMuIAoKV2l0aCB0aGUgQklPUyBzZXR0 aW5nIGNvcnJlY3RlZCwgdGhlIGRyaXZlciBzdGFydGVkIGRpc2FibGluZyB0aGUgZG93bgppbnRl cnJ1cHRzIG9uY2UgdGhlIGZyZXEgZHJvcHBlZCB0byBtaW4gb3IganVzdCBiZWxvdyBiZWNhdXNl IG9mIHRoZSBtaW4KdnMuIGlkbGUgZGlmZmVyZW5jZS4gIEkgaGF2ZSBhIHBhdGNoIGZvciB0aGlz IHRoYXQgSSdsbCBzZW5kIHNob3J0bHkuCgpUaGUgcmVtYWluaW5nIGlzc3VlIHNlZW1zIHRvIGJl IHNvbWUgdHlwZSBvZiB0aW1pbmcgaXNzdWUuIEkndmUgaGFkIHRvCmFkZCBhIDM1MDAwdXMgc2xl ZXAgYmV0d2VlbiB1cGRhdGluZyB0aGUgaW50ZXJydXB0IGVuYWJsZSByZWdpc3RlcgooMHhBMTY4 KSBhbmQgdGhlIHBvc3RpbmcgcmVhZCBvZiBmcmVxLiByZWdpc3RlciAoMHhBMDA4KSwgb3RoZXJ3 aXNlIGl0CmFjdHMgbGlrZSB0aGUgY2hhbmdlIHRvIHRoZSBpbnRlcnJ1cHQgZW5hYmxlIHJlZ2lz dGVyIG5ldmVyIGhhcHBlbmVkLgpOb25lIG9mIHRoZSBkb2N1bWVudGF0aW9uIEkgaGF2ZSBpbmRp Y2F0ZXMgdGhhdCB0aGlzIGlzIG5lZWRlZC4KCkJvYgoKCj4gCj4gPiAKPiA+ID4gCj4gPiA+ID4g LS0tCj4gPiA+ID4gwqB0ZXN0cy9wbV9ycHMuYyB8IDQ3ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLQo+ID4gPiA+IC0tLS0tCj4gPiA+ID4gwqAxIGZpbGUgY2hhbmdl ZCwgMzQgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCj4gPiA+ID4gCj4gPiA+ID4gZGlm ZiAtLWdpdCBhL3Rlc3RzL3BtX3Jwcy5jIGIvdGVzdHMvcG1fcnBzLmMKPiA+ID4gPiBpbmRleCBm OTE5NjI1Li45NjIyNWNlIDEwMDY0NAo+ID4gPiA+IC0tLSBhL3Rlc3RzL3BtX3Jwcy5jCj4gPiA+ ID4gKysrIGIvdGVzdHMvcG1fcnBzLmMKPiA+ID4gPiBAQCAtMzY0LDcgKzM2NCw3IEBAIHN0YXRp YyBpbnQgZ2V0X2h3X3JvdW5kZWRfZnJlcShpbnQgdGFyZ2V0KQo+ID4gPiA+IMKgCXJldHVybiBy ZXQ7Cj4gPiA+ID4gwqB9Cj4gPiA+ID4gwqAKPiA+ID4gPiAtc3RhdGljIHZvaWQgbWluX21heF9j b25maWcodm9pZCAoKmNoZWNrKSh2b2lkKSwgYm9vbCBsb2FkX2dwdSkKPiA+ID4gPiArc3RhdGlj IHZvaWQgbWluX21heF9jb25maWcodm9pZCAoKmNoZWNrKSh2b2lkKSwgdm9pZAo+ID4gPiA+ICgq Y2hlY2syKSh2b2lkKSwgYm9vbCBsb2FkX2dwdSkKPiA+ID4gPiDCoHsKPiA+ID4gPiDCoAlpbnQg Zm1pZCA9IChvcmlnZnJlcXNbUlBuXSArIG9yaWdmcmVxc1tSUDBdKSAvIDI7Cj4gPiA+ID4gwqAK PiA+ID4gPiBAQCAtMzg0LDcgKzM4NCw3IEBAIHN0YXRpYyB2b2lkIG1pbl9tYXhfY29uZmlnKHZv aWQKPiA+ID4gPiAoKmNoZWNrKSh2b2lkKSwKPiA+ID4gPiBib29sIGxvYWRfZ3B1KQo+ID4gPiA+ IMKgCXdyaXRldmFsKHN0dWZmW01BWF0uZmlscCwgb3JpZ2ZyZXFzW1JQMF0pOwo+ID4gPiA+IMKg CWlmIChsb2FkX2dwdSkKPiA+ID4gPiDCoAkJZG9fbG9hZF9ncHUoKTsKPiA+ID4gPiAtCWNoZWNr KCk7Cj4gPiA+ID4gKwljaGVjazIoKTsKPiA+ID4gPiDCoAo+ID4gPiA+IMKgCWlndF9kZWJ1Zygi XG5JbmNyZWFzZSBtaW4gdG8gbWlkcG9pbnQuLi5cbiIpOwo+ID4gPiA+IMKgCXdyaXRldmFsKHN0 dWZmW01JTl0uZmlscCwgZm1pZCk7Cj4gPiA+ID4gQEAgLTQxMiw3ICs0MTIsNyBAQCBzdGF0aWMg dm9pZCBtaW5fbWF4X2NvbmZpZyh2b2lkCj4gPiA+ID4gKCpjaGVjaykodm9pZCksCj4gPiA+ID4g Ym9vbCBsb2FkX2dwdSkKPiA+ID4gPiDCoAl3cml0ZXZhbChzdHVmZltNSU5dLmZpbHAsIG9yaWdm cmVxc1tSUG5dKTsKPiA+ID4gPiDCoAlpZiAobG9hZF9ncHUpCj4gPiA+ID4gwqAJCWRvX2xvYWRf Z3B1KCk7Cj4gPiA+ID4gLQljaGVjaygpOwo+ID4gPiA+ICsJY2hlY2syKCk7Cj4gPiA+ID4gwqAK PiA+ID4gPiDCoAlpZ3RfZGVidWcoIlxuRGVjcmVhc2UgbWluIGJlbG93IFJQbiAoaW52YWxpZCku Li5cbiIpOwo+ID4gPiA+IMKgCXdyaXRldmFsX2ludmFsKHN0dWZmW01JTl0uZmlscCwgMCk7Cj4g PiA+ID4gQEAgLTQyMCwxMSArNDIwLDExIEBAIHN0YXRpYyB2b2lkIG1pbl9tYXhfY29uZmlnKHZv aWQKPiA+ID4gPiAoKmNoZWNrKSh2b2lkKSwKPiA+ID4gPiBib29sIGxvYWRfZ3B1KQo+ID4gPiA+ IMKgCj4gPiA+ID4gwqAJaWd0X2RlYnVnKCJcbkRlY3JlYXNlIG1heCB0byBtaWRwb2ludC4uLlxu Iik7Cj4gPiA+ID4gwqAJd3JpdGV2YWwoc3R1ZmZbTUFYXS5maWxwLCBmbWlkKTsKPiA+ID4gPiAt CWNoZWNrKCk7Cj4gPiA+ID4gKwljaGVjazIoKTsKPiA+ID4gPiDCoAo+ID4gPiA+IMKgCWlndF9k ZWJ1ZygiXG5EZWNyZWFzZSBtYXggdG8gUlBuLi4uXG4iKTsKPiA+ID4gPiDCoAl3cml0ZXZhbChz dHVmZltNQVhdLmZpbHAsIG9yaWdmcmVxc1tSUG5dKTsKPiA+ID4gPiAtCWNoZWNrKCk7Cj4gPiA+ ID4gKwljaGVjazIoKTsKPiA+ID4gPiDCoAo+ID4gPiA+IMKgCWlndF9kZWJ1ZygiXG5EZWNyZWFz ZSBtYXggYmVsb3cgUlBuIChpbnZhbGlkKS4uLlxuIik7Cj4gPiA+ID4gwqAJd3JpdGV2YWxfaW52 YWwoc3R1ZmZbTUFYXS5maWxwLCAwKTsKPiA+ID4gPiBAQCAtNDM2LDExICs0MzYsMTEgQEAgc3Rh dGljIHZvaWQgbWluX21heF9jb25maWcodm9pZAo+ID4gPiA+ICgqY2hlY2spKHZvaWQpLAo+ID4g PiA+IGJvb2wgbG9hZF9ncHUpCj4gPiA+ID4gwqAKPiA+ID4gPiDCoAlpZ3RfZGVidWcoIlxuSW5j cmVhc2UgbWF4IHRvIG1pZHBvaW50Li4uXG4iKTsKPiA+ID4gPiDCoAl3cml0ZXZhbChzdHVmZltN QVhdLmZpbHAsIGZtaWQpOwo+ID4gPiA+IC0JY2hlY2soKTsKPiA+ID4gPiArCWNoZWNrMigpOwo+ ID4gPiA+IMKgCj4gPiA+ID4gwqAJaWd0X2RlYnVnKCJcbkluY3JlYXNlIG1heCB0byBSUDAuLi5c biIpOwo+ID4gPiA+IMKgCXdyaXRldmFsKHN0dWZmW01BWF0uZmlscCwgb3JpZ2ZyZXFzW1JQMF0p Owo+ID4gPiA+IC0JY2hlY2soKTsKPiA+ID4gPiArCWNoZWNrMigpOwo+ID4gPiA+IMKgCj4gPiA+ ID4gwqAJaWd0X2RlYnVnKCJcbkluY3JlYXNlIG1heCBhYm92ZSBSUDAgKGludmFsaWQpLi4uXG4i KTsKPiA+ID4gPiDCoAl3cml0ZXZhbF9pbnZhbChzdHVmZltNQVhdLmZpbHAsIG9yaWdmcmVxc1tS UDBdICsgMTAwMCk7Cj4gPiA+ID4gQEAgLTQ2MSw3ICs0NjEsNyBAQCBzdGF0aWMgdm9pZCBiYXNp Y19jaGVjayh2b2lkKQo+ID4gPiA+IMKgCj4gPiA+ID4gwqAjZGVmaW5lIElETEVfV0FJVF9USU1F U1RFUF9NU0VDIDEwMAo+ID4gPiA+IMKgI2RlZmluZSBJRExFX1dBSVRfVElNRU9VVF9NU0VDIDEw MDAwCj4gPiA+ID4gLXN0YXRpYyB2b2lkIGlkbGVfY2hlY2sodm9pZCkKPiA+ID4gPiArc3RhdGlj IHZvaWQgaWRsZV9jaGVja19taW4odm9pZCkKPiA+ID4gPiDCoHsKPiA+ID4gPiDCoAlpbnQgZnJl cXNbTlVNRlJFUV07Cj4gPiA+ID4gwqAJaW50IHdhaXQgPSAwOwo+ID4gPiA+IEBAIC00ODIsNiAr NDgyLDI3IEBAIHN0YXRpYyB2b2lkIGlkbGVfY2hlY2sodm9pZCkKPiA+ID4gPiDCoAlpZ3RfZGVi dWcoIlJlcXVpcmVkICVkIG1zZWMgdG8gcmVhY2ggY3VyPD1taW5cbiIsIHdhaXQpOwo+ID4gPiA+ IMKgfQo+ID4gPiA+IMKgCj4gPiA+ID4gK3N0YXRpYyB2b2lkIGlkbGVfY2hlY2tfaWRsZSh2b2lk KQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlpbnQgZnJlcXNbTlVNRlJFUV07Cj4gPiA+ID4gKwlpbnQg d2FpdCA9IDA7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJLyogTW9uaXRvciBmcmVxdWVuY2llcyB1bnRp bCBjdXIgc2V0dGxlcyBkb3duIHRvIG1pbiwKPiA+ID4gPiB3aGljaAo+ID4gPiA+IHNob3VsZAo+ ID4gPiA+ICsJwqAqIGhhcHBlbiB3aXRoaW4gdGhlIGFsbG90dGVkIHRpbWUgKi8KPiA+ID4gPiAr CWRvIHsKPiA+ID4gPiArCQlyZWFkX2ZyZXFzKGZyZXFzKTsKPiA+ID4gPiArCQlkdW1wKGZyZXFz KTsKPiA+ID4gPiArCQljaGVja2l0KGZyZXFzKTsKPiA+ID4gPiArCQlpZiAoZnJlcXNbQ1VSXSA9 PSBmcmVxc1tSUG5dKQo+ID4gPiA+ICsJCQlicmVhazsKPiA+ID4gPiArCQl1c2xlZXAoMTAwMCAq IElETEVfV0FJVF9USU1FU1RFUF9NU0VDKTsKPiA+ID4gPiArCQl3YWl0ICs9IElETEVfV0FJVF9U SU1FU1RFUF9NU0VDOwo+ID4gPiA+ICsJfSB3aGlsZSAod2FpdCA8IElETEVfV0FJVF9USU1FT1VU X01TRUMpOwo+ID4gPiA+ICsKPiA+ID4gPiArCWlndF9hc3NlcnRfZXEoZnJlcXNbQ1VSXSwgZnJl cXNbUlBuXSk7Cj4gPiA+ID4gKwlpZ3RfZGVidWcoIlJlcXVpcmVkICVkIG1zZWMgdG8gcmVhY2gg Y3VyPWlkbGVcbiIsIHdhaXQpOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+IMKgI2RlZmlu ZSBMT0FERURfV0FJVF9USU1FU1RFUF9NU0VDIDEwMAo+ID4gPiA+IMKgI2RlZmluZSBMT0FERURf V0FJVF9USU1FT1VUX01TRUMgMzAwMAo+ID4gPiA+IMKgc3RhdGljIHZvaWQgbG9hZGVkX2NoZWNr KHZvaWQpCj4gPiA+ID4gQEAgLTU3Nyw3ICs1OTgsNyBAQCBzdGF0aWMgdm9pZCByZXNldCh2b2lk KQo+ID4gPiA+IMKgCj4gPiA+ID4gwqAJaWd0X2RlYnVnKCJSZW1vdmluZyBsb2FkLi4uXG4iKTsK PiA+ID4gPiDCoAlsb2FkX2hlbHBlcl9zdG9wKCk7Cj4gPiA+ID4gLQlpZGxlX2NoZWNrKCk7Cj4g PiA+ID4gKwlpZGxlX2NoZWNrX21pbigpOwo+ID4gPiA+IMKgfQo+ID4gPiA+IMKgCj4gPiA+ID4g wqAvKgo+ID4gPiA+IEBAIC02MzUsNyArNjU2LDcgQEAgc3RhdGljIHZvaWQgYmxvY2tpbmcodm9p ZCkKPiA+ID4gPiDCoAltYXRjaGl0KHByZV9mcmVxcywgcG9zdF9mcmVxcyk7Cj4gPiA+ID4gwqAK PiA+ID4gPiDCoAlpZ3RfZGVidWcoIlJlbW92aW5nIGxvYWQuLi5cbiIpOwo+ID4gPiA+IC0JaWRs ZV9jaGVjaygpOwo+ID4gPiA+ICsJaWRsZV9jaGVja19taW4oKTsKPiA+ID4gPiDCoH0KPiA+ID4g PiDCoAo+ID4gPiA+IMKgc3RhdGljIHZvaWQgcG1fcnBzX2V4aXRfaGFuZGxlcihpbnQgc2lnKQo+ ID4gPiA+IEBAIC02ODYsMTQgKzcwNywxNCBAQCBpZ3RfbWFpbgo+ID4gPiA+IMKgCX0KPiA+ID4g PiDCoAo+ID4gPiA+IMKgCWlndF9zdWJ0ZXN0KCJiYXNpYy1hcGkiKQo+ID4gPiA+IC0JCW1pbl9t YXhfY29uZmlnKGJhc2ljX2NoZWNrLCBmYWxzZSk7Cj4gPiA+ID4gKwkJbWluX21heF9jb25maWco YmFzaWNfY2hlY2ssIGJhc2ljX2NoZWNrLCBmYWxzZSk7Cj4gPiA+ID4gwqAKPiA+ID4gPiDCoAlp Z3Rfc3VidGVzdCgibWluLW1heC1jb25maWctaWRsZSIpCj4gPiA+ID4gLQkJbWluX21heF9jb25m aWcoaWRsZV9jaGVjaywgdHJ1ZSk7Cj4gPiA+ID4gKwkJbWluX21heF9jb25maWcoaWRsZV9jaGVj a19taW4sIGlkbGVfY2hlY2tfaWRsZSwKPiA+ID4gPiB0cnVlKTsKPiA+ID4gPiDCoAo+ID4gPiA+ IMKgCWlndF9zdWJ0ZXN0KCJtaW4tbWF4LWNvbmZpZy1sb2FkZWQiKSB7Cj4gPiA+ID4gwqAJCWxv YWRfaGVscGVyX3J1bihISUdIKTsKPiA+ID4gPiAtCQltaW5fbWF4X2NvbmZpZyhsb2FkZWRfY2hl Y2ssIGZhbHNlKTsKPiA+ID4gPiArCQltaW5fbWF4X2NvbmZpZyhsb2FkZWRfY2hlY2ssIGxvYWRl ZF9jaGVjaywKPiA+ID4gPiBmYWxzZSk7Cj4gPiA+ID4gwqAJCWxvYWRfaGVscGVyX3N0b3AoKTsK PiA+ID4gPiDCoAl9Cj4gPiA+ID4gwqAKPiA+IAo+ID4gCj4gPiAKCgoKLS0gCi0tCkJvYiBQYWF1 d2UgICAgICAgICAgICAgICAgICAKQm9iLkouUGFhdXdlQGludGVsLmNvbQpJT1RHIC8gUEVEIFNv ZnR3YXJlIE9yZ2FuaXphdGlvbgpJbnRlbCBDb3JwLiAgRm9sc29tLCBDQQooOTE2KSAzNTYtNjE5 MyAgICAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==