From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH 2/2] igt/pm_rps: Add checks for freq = idle (RPn) in specific cases. Date: Fri, 04 Dec 2015 17:22:11 +0200 Message-ID: <1449242531.14707.25.camel@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> <20151203164358.0c1da165@bpaauwe-desk.fm.intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 64D9D6E229 for ; Fri, 4 Dec 2015 07:22:14 -0800 (PST) In-Reply-To: <20151203164358.0c1da165@bpaauwe-desk.fm.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Bob Paauwe Cc: intel-gfx List-Id: intel-gfx@lists.freedesktop.org T24gdG8sIDIwMTUtMTItMDMgYXQgMTY6NDMgLTA4MDAsIEJvYiBQYWF1d2Ugd3JvdGU6Cj4gT24g VHVlLCAxIERlYyAyMDE1IDE5OjQzOjA1ICswMjAwCj4gSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50 ZWwuY29tPiB3cm90ZToKPiAKPiA+IE9uIHRpLCAyMDE1LTEyLTAxIGF0IDA5OjIyIC0wODAwLCBC b2IgUGFhdXdlIHdyb3RlOgo+ID4gPiBPbiBUdWUsIDEgRGVjIDIwMTUgMTU6NTY6NTUgKzAyMDAK PiA+ID4gSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPiB3cm90ZToKPiA+ID4gCj4gPiA+ ID4gT24gbWEsIDIwMTUtMTEtMzAgYXQgMTY6MjMgLTA4MDAsIEJvYiBQYWF1d2Ugd3JvdGU6Cj4g PiA+ID4gPiBOb3cgdGhhdCB0aGUgZnJlcXVlbmN5IGNhbiBkcm9wIGJlbG93IHRoZSB1c2VyIHNw ZWNpZmllZAo+ID4gPiA+ID4gbWluaW11bQo+ID4gPiA+ID4gd2hlbgo+ID4gPiA+ID4gdGhlIGdw dSBpcyBpZGxlLCBhZGQgc29tZSBjaGVja2luZyB0byB2ZXJpZnkgdGhhdCBpdCByZWFsbHkKPiA+ ID4gPiA+IGRvZXMKPiA+ID4gPiA+IGRyb3AKPiA+ID4gPiA+IGRvd24gdG8gdGhlIFJQbiBmcmVx dWVuY3kgaW4gc3BlY2lmaWMgY2FzZXMuCj4gPiA+ID4gPiAKPiA+ID4gPiA+IFRvIGRvIHRoaXMs IG1vZGlmeSB0aGUgbWFpbiB0ZXN0IGZsb3cgdG8gdGFrZSB0d28gJ2NoZWNrJwo+ID4gPiA+ID4g cm91dGluZXMKPiA+ID4gPiA+IGluc3RlYWQgb2Ygb25lLiBXaGVuIHJ1bm5pbmcgdGhlIGNvbmZp Zy1taW4tbWF4LWlkbGUgc3VidGVzdAo+ID4gPiA+ID4gbWFrZQo+ID4gPiA+ID4gdXNlIG9mIHRo ZSBzZWNvbmQgY2hlY2sgcm91dGluZSB0byB2ZXJpZnkgdGhhdCB0aGUgZnJlcXVlbmN5Cj4gPiA+ ID4gPiBkcm9wcwo+ID4gPiA+ID4gdG8gUlBuIGluc3RlYWQgb2Ygc2ltcGx5IDw9IHVzZXIgbWlu IGZyZXF1ZW5jeS7CoMKgRm9yIGFsbAo+ID4gPiA+ID4gb3RoZXIKPiA+ID4gPiA+IHN1YnRlc3Rz LCB1c2UgdGhlIG9yaWdpbmFsIGNoZWNrIHJvdXRpbmVzIGZvciBib3RoIGNoZWNrcy4KPiA+ID4g PiA+IAo+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogQm9iIFBhYXV3ZSA8Ym9iLmoucGFhdXdlQGlu dGVsLmNvbT4KPiA+ID4gPiAKPiA+ID4gPiBJIGRvbid0IHNlZSB0aGUgcG9pbnQuIFRoZSBmcmVx dWVuY3kgc2hvdWxkIGFsd2F5cyBkcm9wIHRvIHRoZQo+ID4gPiA+IGlkbGUKPiA+ID4gPiBmcmVx dWVuY3kgaWYgdGhlIEdQVSBpcyBpZGxlLCBpdCdzIG5vdCBlbm91Z2ggdGhhdCBpdCdzIGJlbG93 Cj4gPiA+ID4gTUlOLQo+ID4gPiA+IGZyZXEuIAo+ID4gPiA+IFNvIHdoeSBkbyB3ZSBuZWVkIHNl cGFyYXRlIENVUi1mcmVxPD1NSU4tZnJlcSBhbmQgQ1VSLQo+ID4gPiA+IGZyZXE9PWlkbGUtCj4g PiA+ID4gZnJlcQo+ID4gPiA+IGNoZWNrcz8KPiA+ID4gCj4gPiA+IEkgc3RhcnRlZCBmcm9tIHRo ZSBwcmVtaXNlIHRoYXQgaXQgc2hvdWxkIGFsd2F5cyBkcm9wIHRvIGlkbGUgYnV0Cj4gPiA+IHRo YXQncyBqdXN0IG5vdCB0aGUgY2FzZS4KPiA+IAo+ID4gSXQgaXMgdGhlIGNvcnJlY3QgcHJlbWlz ZSBhbmQgaWYgaXQgZG9lc24ndCBob2xkIHRoZW4gdGhlcmUgaXMgYQo+ID4gcmVhbAo+ID4gYnVn IGVpdGhlciBpbiB0aGUgdGVzdGNhc2Ugb3IgdGhlIGtlcm5lbCB3aGljaCBuZWVkcyB0byBiZQo+ ID4gYWRkcmVzc2VkCj4gPiBkaWZmZXJlbnRseS4gSSBoYXZlbid0IGZvdW5kIGFueXRoaW5nIGNv bmNyZXRlIGJ1dCBvbmUgc3VzcGVjdCBpcwo+ID4gdGhlCj4gPiBsb2dpYyB0aGF0IHdhaXRzIGZv ciB0aGUgR1BVIGlkbGUgY29uZGl0aW9uLCBtYXliZSB0aGUgdGltZW91dAo+ID4gdmFsdWXCoGlk bGVfY2hlY2soKSBvciB0aGUgaGFyZC1jb2RlZCBkdXJhdGlvbiBpbiBkb19sb2FkX2dwdSgpIGlz Cj4gPiBpbmNvcnJlY3QuIEluIGFueSBjYXNlIGxldCdzIG5vdCBwYXBlciBvdmVyIHRoaXMgaXNz dWUsIHRoZSB2ZXJ5Cj4gPiByZWFzb24KPiA+IHdlIGhhdmUgdGVzdCBjYXNlcyBpcyB0byB1bmNv dmVyIHN1Y2ggYnVncy4KPiA+IAo+ID4gPiBUaGUgbWluX21heF9jb25maWcoKSBmdW5jdGlvbiBp cyB1c2VkIGZvcgo+ID4gPiBib3RoIHRoZSBpZGxlIGFuZCBsb2FkZWQgc3VidGVzdHMuwqDCoElm IHlvdSB0cnkgdG8gY2hlY2sgZm9yCj4gPiA+IGZyZXE9aWRsZQo+ID4gPiB3aGVuIGRvaW5nIHRo ZSBsb2FkZWQgc3VidGVzdCBpdCB3aWxsIGZhaWwgc2luY2UgaXQgbmV2ZXIgZ29lcwo+ID4gPiBp ZGxlLgo+ID4gPiBFdmVuIGluIHRoZSBpZGxlIHN1YnRlc3QgdGhlcmUgYXJlIGNhc2VzIHdoZXJl IGl0IGRvZXNuJ3QgZHJvcAo+ID4gPiBkb3duCj4gPiA+IHRvCj4gPiA+IGlkbGUuIAo+ID4gCj4g PiBUaGUgb25seSBwbGFjZSB3ZSBzaG91bGQgY2hlY2sgZm9yIGZyZXE9PWlkbGUgaXMgaW4gaWRs ZV9jaGVjaygpCj4gPiBhbmQKPiA+IHRoYXQgb25lIGlzIG5vdCBjYWxsZWQgZHVyaW5nIHRoZSBs b2FkZWQgc3VidGVzdCwgaXQgd291bGRuJ3QgZXZlbgo+ID4gbWFrZQo+ID4gc2Vuc2UgdG8gZG8g c28uIFNvIEknbSBub3Qgc3VyZSBob3cgdGhpcyBzdWJ0ZXN0IGZhaWxzIGZvciB5b3UuwqAKPiA+ IAo+ID4gPiBJIHN1cHBvc2UgSSBjb3VsZCBkdXBsaWNhdGUgbWluX21heF9jb25maWcgYW5kIGhh dmUgYQo+ID4gPiBtaW5fbWF4X2NvbmZpZ19pZGxlKCkgYW5kIG1pbl9tYXhfY29uaWZnX25vdF9p ZGxlKCkgZm9yIHVzZSBieQo+ID4gPiB0aGUKPiA+ID4gZGlmZmVyZW50IHN1YnRlc3RzLiAKPiA+ IAo+ID4gVGhlIHBvaW50IG9mIHRoZSAiY2hlY2siIGFyZ3VtZW50IG9mIG1pbl9tYXhfY29uZmln KCkgaXMgdG8KPiA+IGRpc3Rpbmd1aXNoCj4gPiBiZXR3ZWVuIHRoZSBpZGxlIGFuZCBsb2FkZWQg Y2FzZXMuIFRoZSBjaGVjayBmdW5jdGlvbnMgcGFzc2VkIGluCj4gPiBrbm93Cj4gPiBhbHJlYWR5 IGlmIHRoZXkgY2FuIGV4cGVjdCB0aGUgZnJlcXVlbmN5IHRvIHJlYWNoIHRoZSBpZGxlCj4gPiBm cmVxdWVuY3kKPiA+IG9yIG5vdC4KPiA+IAo+ID4gPiBUaGUgcmVhbCBwcm9ibGVtIGlzIHRoYXQg dGhlIHRlc3Qgd2FzIG5vdCBkZXNpZ25lZCB0byBoYW5kbGUgdGhlCj4gPiA+IGNhc2UKPiA+ID4g d2hlcmUgdGhlIGZyZXEgY291bGQgZHJvcCBiZWxvdyBtaW4gYW5kIHByb2JhYmx5IG5lZWRzIHRv IGJlCj4gPiA+IHJlLWRlc2lnbmVkLsKgwqBJJ3ZlIGJlZW4gdHJ5aW5nIHRvIGZpbmQgYSBxdWlj ayBmaXggdnMuIGEgY29tcGxldGUKPiA+ID4gb3ZlcmhhdWwgYXMgdGhpcyBpc24ndCByZWFsbHkg YSBwcmlvcml0eSBmb3IgbWUuCj4gPiAKPiA+IEkgdGhpbmsgd2Ugb25seSBuZWVkIHlvdXIgZmly c3QgcGF0Y2ggYW5kIGlmIHRoZXJlIGlzIGFueSBmYWlsdXJlCj4gPiBhZnRlcgo+ID4gdGhhdCB3 ZSBoYXZlIHRvIHJvb3QgY2F1c2UgdGhhdCBhbmQgZml4IGl0IHByb3Blcmx5Lgo+ID4gCj4gPiAt LUltcmUKPiAKPiBZb3UncmUgcmlnaHQuwqDCoEknbSB3b3JraW5nIHdpdGggQlhUIGFuZCBpdCBz ZWVtcyBsaWtlIGl0J3MgZ290IHNvbWUKPiB1bmlxdWUgaXNzdWVzIHdpdGggUlBTLsKgwqBJIGp1 c3Qgc2VudCBhIG5ldyBwYXRjaCBiYXNlZCBvbiB0aGUgZmlyc3QKPiBvbmUKPiBidXQgd2l0aCB0 aGUgY2hhbmdlcyB5b3Ugc3VnZ2VzdGVkIHRvIGNoZWNrIGZvciA9PWlkbGUgaW5zdGVhZCBvZgo+ IDw9bWluLgo+IAo+IE1heWJlIHlvdSBoYXZlIHNvbWUgaW5zaWdodHMgaW50byB3aGF0IEknbSBz ZWVpbmcgd2l0aCBCWFQ/wqDCoFRoZSBmaXJzdAo+IHByb2JsZW0gSSBoYWQgd2FzIHRoYXQgSSB3 b3VsZCBzZWUgdGhyZXNob2xkIHVwIGludGVycnVwdHMgYnV0IG5vdCBhbnkKPiB0aHJlc2hvbGQg ZG93biBpbnRlcnJ1cHRzLsKgwqBUaGUgbWlzc2luZyBkb3duIGludGVycnVwdHMgd2FzIHJlbGF0 ZWQgdG8KPiB0aGUgQklPUyBzZXR0aW5nLsKgwqBJIGhhZCBydW50aW1lIFBNIGRpc2FibGVkIHNv IGl0IHNlZW1zIHN0cmFuZ2UgdGhhdCBJCj4gd2FzIGdldHRpbmcgdGhlIHVwIGludGVycnVwdHMu wqAKClllcywgSSBzYXcgdGhpcyB0b28uIEkgd29uZGVyIGlmIHdlIGNvdWxkIGNoZWNrIHRoaXMg c29tZWhvdyBhbmQgbm90CmVuYWJsZSBSUFMgaWYgQklPUyBoYXNuJ3Qgc2V0IHRoaW5ncyB1cCBw cm9wZXJseS4gU2FnYXIgaGFzIGEgcGF0Y2gKdGhhdCBjaGVja3MgdGhlIFJDNiBzZXR1cCBbMV07 IHRoYXQncyBub3QgZXhhY3RseSBSUFMsIGJ1dCBzaW5jZSB0aGV5CmFyZSBzZXR1cCBhdCB0aGUg c2FtZSBwbGFjZSBJIHRoaW5rIHdlIGNvdWxkIHVzZSB0aGF0IGZvciBub3cgZm9yIFJQUwp0b28u Cgo+IFdpdGggdGhlIEJJT1Mgc2V0dGluZyBjb3JyZWN0ZWQsIHRoZSBkcml2ZXIgc3RhcnRlZCBk aXNhYmxpbmcgdGhlIGRvd24KPiBpbnRlcnJ1cHRzIG9uY2UgdGhlIGZyZXEgZHJvcHBlZCB0byBt aW4gb3IganVzdCBiZWxvdyBiZWNhdXNlIG9mIHRoZSBtaW4KPiB2cy4gaWRsZSBkaWZmZXJlbmNl LsKgwqBJIGhhdmUgYSBwYXRjaCBmb3IgdGhpcyB0aGF0IEknbGwgc2VuZCBzaG9ydGx5LgoKSG0s IHRoYXQncyBub3QgbmVjZXNzYXJpbHkgYSBwcm9ibGVtLiBUbyByZWFjaCB0aGUgaWRsZSBmcmVx dWVuY3kgd2UKZG9uJ3QgZGVwZW5kIG9uIHRoZSB1cC9kb3duIGludGVycnVwdHMuIFRoZSBpZGxl IGZyZXF1ZW5jeSBnZXRzIHNldApleHBsaWNpdGx5IGZyb23CoGludGVsX21hcmtfaWRsZSgpLCBz byBpZiB5b3UgZG9uJ3QgcmVhY2ggdGhlIGlkbGUgZnJlcQp0aGVuIHRoaXMgZnVuY3Rpb24gZG9l c24ndCBnZXQgY2FsbGVkIGZvciBzb21lIHJlYXNvbi4gT3IgYXMgSSBzYWlkCmVhcmxpZXIgd2Ug anVzdCBkb24ndCB3YWl0IGVub3VnaCBpbiBkb19sb2FkX2dwdSgpIG9yIGlkbGVfY2hlY2soKSBp bgp0aGUgdGVzdCwgc28gd2UgcmVhZCBvdXQgY3VyLWZyZXEgYmVmb3JlwqBpbnRlbF9tYXJrX2lk bGUoKSB3b3VsZCBnZXQKY2FsbGVkLgoKPiBUaGUgcmVtYWluaW5nIGlzc3VlIHNlZW1zIHRvIGJl IHNvbWUgdHlwZSBvZiB0aW1pbmcgaXNzdWUuIEkndmUgaGFkCj4gdG8KPiBhZGQgYSAzNTAwMHVz IHNsZWVwIGJldHdlZW4gdXBkYXRpbmcgdGhlIGludGVycnVwdCBlbmFibGUgcmVnaXN0ZXIKPiAo MHhBMTY4KSBhbmQgdGhlIHBvc3RpbmcgcmVhZCBvZiBmcmVxLiByZWdpc3RlciAoMHhBMDA4KSwg b3RoZXJ3aXNlCj4gaXQKPiBhY3RzIGxpa2UgdGhlIGNoYW5nZSB0byB0aGUgaW50ZXJydXB0IGVu YWJsZSByZWdpc3RlciBuZXZlciBoYXBwZW5lZC4KPiBOb25lIG9mIHRoZSBkb2N1bWVudGF0aW9u IEkgaGF2ZSBpbmRpY2F0ZXMgdGhhdCB0aGlzIGlzIG5lZWRlZC4KCldoYXQgaGFwcGVucyBleGFj dGx5PyBUaGUgZnJlcXVlbmN5IGdldHMgc3R1Y2sgYWJvdmUgbWluLWZyZXEgYW5kIHlvdQpuZXZl ciBnZXQgYSBkb3duIGludGVycnVwdD8gTm90IHN1cmUgaG93IHRoaXMgY291bGQgaGFwcGVuLCBi dXQgdGhlcmUKaXMgYW4gaW50ZXJlc3RpbmcgY29tbWVudCBpbsKgaW50ZWxfcnBzX2xpbWl0cygp IGFib3V0IHRoaXMgc2NlbmFyaW8uCgotLUltcmUKClsxXcKgaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9hcmNoaXZlcy9pbnRlbC1nZngvMjAxNS1Ob3ZlbWJlci8wNzkzOAo2Lmh0bWwKCgo+ IAo+IEJvYgo+IAo+IAo+ID4gCj4gPiA+IAo+ID4gPiA+IAo+ID4gPiA+ID4gLS0tCj4gPiA+ID4g PiDCoHRlc3RzL3BtX3Jwcy5jIHwgNDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0KPiA+ID4gPiA+IC0tLS0KPiA+ID4gPiA+IC0tLS0tCj4gPiA+ID4gPiDCoDEgZmlsZSBj aGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKPiA+ID4gPiA+IAo+ID4g PiA+ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL3BtX3Jwcy5jIGIvdGVzdHMvcG1fcnBzLmMKPiA+ID4g PiA+IGluZGV4IGY5MTk2MjUuLjk2MjI1Y2UgMTAwNjQ0Cj4gPiA+ID4gPiAtLS0gYS90ZXN0cy9w bV9ycHMuYwo+ID4gPiA+ID4gKysrIGIvdGVzdHMvcG1fcnBzLmMKPiA+ID4gPiA+IEBAIC0zNjQs NyArMzY0LDcgQEAgc3RhdGljIGludCBnZXRfaHdfcm91bmRlZF9mcmVxKGludAo+ID4gPiA+ID4g dGFyZ2V0KQo+ID4gPiA+ID4gwqAJcmV0dXJuIHJldDsKPiA+ID4gPiA+IMKgfQo+ID4gPiA+ID4g wqAKPiA+ID4gPiA+IC1zdGF0aWMgdm9pZCBtaW5fbWF4X2NvbmZpZyh2b2lkICgqY2hlY2spKHZv aWQpLCBib29sCj4gPiA+ID4gPiBsb2FkX2dwdSkKPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBtaW5f bWF4X2NvbmZpZyh2b2lkICgqY2hlY2spKHZvaWQpLCB2b2lkCj4gPiA+ID4gPiAoKmNoZWNrMiko dm9pZCksIGJvb2wgbG9hZF9ncHUpCj4gPiA+ID4gPiDCoHsKPiA+ID4gPiA+IMKgCWludCBmbWlk ID0gKG9yaWdmcmVxc1tSUG5dICsgb3JpZ2ZyZXFzW1JQMF0pIC8gMjsKPiA+ID4gPiA+IMKgCj4g PiA+ID4gPiBAQCAtMzg0LDcgKzM4NCw3IEBAIHN0YXRpYyB2b2lkIG1pbl9tYXhfY29uZmlnKHZv aWQKPiA+ID4gPiA+ICgqY2hlY2spKHZvaWQpLAo+ID4gPiA+ID4gYm9vbCBsb2FkX2dwdSkKPiA+ ID4gPiA+IMKgCXdyaXRldmFsKHN0dWZmW01BWF0uZmlscCwgb3JpZ2ZyZXFzW1JQMF0pOwo+ID4g PiA+ID4gwqAJaWYgKGxvYWRfZ3B1KQo+ID4gPiA+ID4gwqAJCWRvX2xvYWRfZ3B1KCk7Cj4gPiA+ ID4gPiAtCWNoZWNrKCk7Cj4gPiA+ID4gPiArCWNoZWNrMigpOwo+ID4gPiA+ID4gwqAKPiA+ID4g PiA+IMKgCWlndF9kZWJ1ZygiXG5JbmNyZWFzZSBtaW4gdG8gbWlkcG9pbnQuLi5cbiIpOwo+ID4g PiA+ID4gwqAJd3JpdGV2YWwoc3R1ZmZbTUlOXS5maWxwLCBmbWlkKTsKPiA+ID4gPiA+IEBAIC00 MTIsNyArNDEyLDcgQEAgc3RhdGljIHZvaWQgbWluX21heF9jb25maWcodm9pZAo+ID4gPiA+ID4g KCpjaGVjaykodm9pZCksCj4gPiA+ID4gPiBib29sIGxvYWRfZ3B1KQo+ID4gPiA+ID4gwqAJd3Jp dGV2YWwoc3R1ZmZbTUlOXS5maWxwLCBvcmlnZnJlcXNbUlBuXSk7Cj4gPiA+ID4gPiDCoAlpZiAo bG9hZF9ncHUpCj4gPiA+ID4gPiDCoAkJZG9fbG9hZF9ncHUoKTsKPiA+ID4gPiA+IC0JY2hlY2so KTsKPiA+ID4gPiA+ICsJY2hlY2syKCk7Cj4gPiA+ID4gPiDCoAo+ID4gPiA+ID4gwqAJaWd0X2Rl YnVnKCJcbkRlY3JlYXNlIG1pbiBiZWxvdyBSUG4KPiA+ID4gPiA+IChpbnZhbGlkKS4uLlxuIik7 Cj4gPiA+ID4gPiDCoAl3cml0ZXZhbF9pbnZhbChzdHVmZltNSU5dLmZpbHAsIDApOwo+ID4gPiA+ ID4gQEAgLTQyMCwxMSArNDIwLDExIEBAIHN0YXRpYyB2b2lkIG1pbl9tYXhfY29uZmlnKHZvaWQK PiA+ID4gPiA+ICgqY2hlY2spKHZvaWQpLAo+ID4gPiA+ID4gYm9vbCBsb2FkX2dwdSkKPiA+ID4g PiA+IMKgCj4gPiA+ID4gPiDCoAlpZ3RfZGVidWcoIlxuRGVjcmVhc2UgbWF4IHRvIG1pZHBvaW50 Li4uXG4iKTsKPiA+ID4gPiA+IMKgCXdyaXRldmFsKHN0dWZmW01BWF0uZmlscCwgZm1pZCk7Cj4g PiA+ID4gPiAtCWNoZWNrKCk7Cj4gPiA+ID4gPiArCWNoZWNrMigpOwo+ID4gPiA+ID4gwqAKPiA+ ID4gPiA+IMKgCWlndF9kZWJ1ZygiXG5EZWNyZWFzZSBtYXggdG8gUlBuLi4uXG4iKTsKPiA+ID4g PiA+IMKgCXdyaXRldmFsKHN0dWZmW01BWF0uZmlscCwgb3JpZ2ZyZXFzW1JQbl0pOwo+ID4gPiA+ ID4gLQljaGVjaygpOwo+ID4gPiA+ID4gKwljaGVjazIoKTsKPiA+ID4gPiA+IMKgCj4gPiA+ID4g PiDCoAlpZ3RfZGVidWcoIlxuRGVjcmVhc2UgbWF4IGJlbG93IFJQbgo+ID4gPiA+ID4gKGludmFs aWQpLi4uXG4iKTsKPiA+ID4gPiA+IMKgCXdyaXRldmFsX2ludmFsKHN0dWZmW01BWF0uZmlscCwg MCk7Cj4gPiA+ID4gPiBAQCAtNDM2LDExICs0MzYsMTEgQEAgc3RhdGljIHZvaWQgbWluX21heF9j b25maWcodm9pZAo+ID4gPiA+ID4gKCpjaGVjaykodm9pZCksCj4gPiA+ID4gPiBib29sIGxvYWRf Z3B1KQo+ID4gPiA+ID4gwqAKPiA+ID4gPiA+IMKgCWlndF9kZWJ1ZygiXG5JbmNyZWFzZSBtYXgg dG8gbWlkcG9pbnQuLi5cbiIpOwo+ID4gPiA+ID4gwqAJd3JpdGV2YWwoc3R1ZmZbTUFYXS5maWxw LCBmbWlkKTsKPiA+ID4gPiA+IC0JY2hlY2soKTsKPiA+ID4gPiA+ICsJY2hlY2syKCk7Cj4gPiA+ ID4gPiDCoAo+ID4gPiA+ID4gwqAJaWd0X2RlYnVnKCJcbkluY3JlYXNlIG1heCB0byBSUDAuLi5c biIpOwo+ID4gPiA+ID4gwqAJd3JpdGV2YWwoc3R1ZmZbTUFYXS5maWxwLCBvcmlnZnJlcXNbUlAw XSk7Cj4gPiA+ID4gPiAtCWNoZWNrKCk7Cj4gPiA+ID4gPiArCWNoZWNrMigpOwo+ID4gPiA+ID4g wqAKPiA+ID4gPiA+IMKgCWlndF9kZWJ1ZygiXG5JbmNyZWFzZSBtYXggYWJvdmUgUlAwCj4gPiA+ ID4gPiAoaW52YWxpZCkuLi5cbiIpOwo+ID4gPiA+ID4gwqAJd3JpdGV2YWxfaW52YWwoc3R1ZmZb TUFYXS5maWxwLCBvcmlnZnJlcXNbUlAwXSArCj4gPiA+ID4gPiAxMDAwKTsKPiA+ID4gPiA+IEBA IC00NjEsNyArNDYxLDcgQEAgc3RhdGljIHZvaWQgYmFzaWNfY2hlY2sodm9pZCkKPiA+ID4gPiA+ IMKgCj4gPiA+ID4gPiDCoCNkZWZpbmUgSURMRV9XQUlUX1RJTUVTVEVQX01TRUMgMTAwCj4gPiA+ ID4gPiDCoCNkZWZpbmUgSURMRV9XQUlUX1RJTUVPVVRfTVNFQyAxMDAwMAo+ID4gPiA+ID4gLXN0 YXRpYyB2b2lkIGlkbGVfY2hlY2sodm9pZCkKPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBpZGxlX2No ZWNrX21pbih2b2lkKQo+ID4gPiA+ID4gwqB7Cj4gPiA+ID4gPiDCoAlpbnQgZnJlcXNbTlVNRlJF UV07Cj4gPiA+ID4gPiDCoAlpbnQgd2FpdCA9IDA7Cj4gPiA+ID4gPiBAQCAtNDgyLDYgKzQ4Miwy NyBAQCBzdGF0aWMgdm9pZCBpZGxlX2NoZWNrKHZvaWQpCj4gPiA+ID4gPiDCoAlpZ3RfZGVidWco IlJlcXVpcmVkICVkIG1zZWMgdG8gcmVhY2ggY3VyPD1taW5cbiIsCj4gPiA+ID4gPiB3YWl0KTsK PiA+ID4gPiA+IMKgfQo+ID4gPiA+ID4gwqAKPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBpZGxlX2No ZWNrX2lkbGUodm9pZCkKPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiArCWludCBmcmVxc1tOVU1GUkVR XTsKPiA+ID4gPiA+ICsJaW50IHdhaXQgPSAwOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkvKiBN b25pdG9yIGZyZXF1ZW5jaWVzIHVudGlsIGN1ciBzZXR0bGVzIGRvd24gdG8KPiA+ID4gPiA+IG1p biwKPiA+ID4gPiA+IHdoaWNoCj4gPiA+ID4gPiBzaG91bGQKPiA+ID4gPiA+ICsJwqAqIGhhcHBl biB3aXRoaW4gdGhlIGFsbG90dGVkIHRpbWUgKi8KPiA+ID4gPiA+ICsJZG8gewo+ID4gPiA+ID4g KwkJcmVhZF9mcmVxcyhmcmVxcyk7Cj4gPiA+ID4gPiArCQlkdW1wKGZyZXFzKTsKPiA+ID4gPiA+ ICsJCWNoZWNraXQoZnJlcXMpOwo+ID4gPiA+ID4gKwkJaWYgKGZyZXFzW0NVUl0gPT0gZnJlcXNb UlBuXSkKPiA+ID4gPiA+ICsJCQlicmVhazsKPiA+ID4gPiA+ICsJCXVzbGVlcCgxMDAwICogSURM RV9XQUlUX1RJTUVTVEVQX01TRUMpOwo+ID4gPiA+ID4gKwkJd2FpdCArPSBJRExFX1dBSVRfVElN RVNURVBfTVNFQzsKPiA+ID4gPiA+ICsJfSB3aGlsZSAod2FpdCA8IElETEVfV0FJVF9USU1FT1VU X01TRUMpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlpZ3RfYXNzZXJ0X2VxKGZyZXFzW0NVUl0s IGZyZXFzW1JQbl0pOwo+ID4gPiA+ID4gKwlpZ3RfZGVidWcoIlJlcXVpcmVkICVkIG1zZWMgdG8g cmVhY2ggY3VyPWlkbGVcbiIsCj4gPiA+ID4gPiB3YWl0KTsKPiA+ID4gPiA+ICt9Cj4gPiA+ID4g PiArCj4gPiA+ID4gPiDCoCNkZWZpbmUgTE9BREVEX1dBSVRfVElNRVNURVBfTVNFQyAxMDAKPiA+ ID4gPiA+IMKgI2RlZmluZSBMT0FERURfV0FJVF9USU1FT1VUX01TRUMgMzAwMAo+ID4gPiA+ID4g wqBzdGF0aWMgdm9pZCBsb2FkZWRfY2hlY2sodm9pZCkKPiA+ID4gPiA+IEBAIC01NzcsNyArNTk4 LDcgQEAgc3RhdGljIHZvaWQgcmVzZXQodm9pZCkKPiA+ID4gPiA+IMKgCj4gPiA+ID4gPiDCoAlp Z3RfZGVidWcoIlJlbW92aW5nIGxvYWQuLi5cbiIpOwo+ID4gPiA+ID4gwqAJbG9hZF9oZWxwZXJf c3RvcCgpOwo+ID4gPiA+ID4gLQlpZGxlX2NoZWNrKCk7Cj4gPiA+ID4gPiArCWlkbGVfY2hlY2tf bWluKCk7Cj4gPiA+ID4gPiDCoH0KPiA+ID4gPiA+IMKgCj4gPiA+ID4gPiDCoC8qCj4gPiA+ID4g PiBAQCAtNjM1LDcgKzY1Niw3IEBAIHN0YXRpYyB2b2lkIGJsb2NraW5nKHZvaWQpCj4gPiA+ID4g PiDCoAltYXRjaGl0KHByZV9mcmVxcywgcG9zdF9mcmVxcyk7Cj4gPiA+ID4gPiDCoAo+ID4gPiA+ ID4gwqAJaWd0X2RlYnVnKCJSZW1vdmluZyBsb2FkLi4uXG4iKTsKPiA+ID4gPiA+IC0JaWRsZV9j aGVjaygpOwo+ID4gPiA+ID4gKwlpZGxlX2NoZWNrX21pbigpOwo+ID4gPiA+ID4gwqB9Cj4gPiA+ ID4gPiDCoAo+ID4gPiA+ID4gwqBzdGF0aWMgdm9pZCBwbV9ycHNfZXhpdF9oYW5kbGVyKGludCBz aWcpCj4gPiA+ID4gPiBAQCAtNjg2LDE0ICs3MDcsMTQgQEAgaWd0X21haW4KPiA+ID4gPiA+IMKg CX0KPiA+ID4gPiA+IMKgCj4gPiA+ID4gPiDCoAlpZ3Rfc3VidGVzdCgiYmFzaWMtYXBpIikKPiA+ ID4gPiA+IC0JCW1pbl9tYXhfY29uZmlnKGJhc2ljX2NoZWNrLCBmYWxzZSk7Cj4gPiA+ID4gPiAr CQltaW5fbWF4X2NvbmZpZyhiYXNpY19jaGVjaywgYmFzaWNfY2hlY2ssCj4gPiA+ID4gPiBmYWxz ZSk7Cj4gPiA+ID4gPiDCoAo+ID4gPiA+ID4gwqAJaWd0X3N1YnRlc3QoIm1pbi1tYXgtY29uZmln LWlkbGUiKQo+ID4gPiA+ID4gLQkJbWluX21heF9jb25maWcoaWRsZV9jaGVjaywgdHJ1ZSk7Cj4g PiA+ID4gPiArCQltaW5fbWF4X2NvbmZpZyhpZGxlX2NoZWNrX21pbiwKPiA+ID4gPiA+IGlkbGVf Y2hlY2tfaWRsZSwKPiA+ID4gPiA+IHRydWUpOwo+ID4gPiA+ID4gwqAKPiA+ID4gPiA+IMKgCWln dF9zdWJ0ZXN0KCJtaW4tbWF4LWNvbmZpZy1sb2FkZWQiKSB7Cj4gPiA+ID4gPiDCoAkJbG9hZF9o ZWxwZXJfcnVuKEhJR0gpOwo+ID4gPiA+ID4gLQkJbWluX21heF9jb25maWcobG9hZGVkX2NoZWNr LCBmYWxzZSk7Cj4gPiA+ID4gPiArCQltaW5fbWF4X2NvbmZpZyhsb2FkZWRfY2hlY2ssIGxvYWRl ZF9jaGVjaywKPiA+ID4gPiA+IGZhbHNlKTsKPiA+ID4gPiA+IMKgCQlsb2FkX2hlbHBlcl9zdG9w KCk7Cj4gPiA+ID4gPiDCoAl9Cj4gPiA+ID4gPiDCoAo+ID4gPiAKPiA+ID4gCj4gPiA+IAo+IAo+ IAo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=