From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH i-g-t v2] lib/igt_pm: Restore runtime pm state on test exit Date: Fri, 2 Mar 2018 14:29:13 +0200 Message-ID: <20180302122913.oc3ccbrhcrwexmrj@ideak-desk.fi.intel.com> References: <20180228110829.12126-1-tvrtko.ursulin@linux.intel.com> <20180228153506.13035-1-tvrtko.ursulin@linux.intel.com> <20180302092950.2cybveeu5py5hkzc@ideak-desk.fi.intel.com> <658a7650-6351-f56b-c9db-2cf44d6b8bcb@linux.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: Content-Disposition: inline In-Reply-To: <658a7650-6351-f56b-c9db-2cf44d6b8bcb@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin Cc: igt-dev@lists.freedesktop.org, Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBNYXIgMDIsIDIwMTggYXQgMDk6NTY6MjZBTSArMDAwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gCj4gT24gMDIvMDMvMjAxOCAwOToyOSwgSW1yZSBEZWFrIHdyb3RlOgo+ID4gT24g V2VkLCBGZWIgMjgsIDIwMTggYXQgMDM6MzU6MDZQTSArMDAwMCwgVHZydGtvIFVyc3VsaW4gd3Jv dGU6Cj4gPiA+IEZyb206IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ Cj4gPiA+IAo+ID4gPiBTb21lIHRlc3RzICh0aGUgb25lcyB3aGljaCBjYWxsIGlndF9zZXR1cF9y dW50aW1lX3BtIGFuZAo+ID4gPiBpZ3RfcG1fZW5hYmxlX2F1ZGlvX3J1bnRpbWVfcG0pIGNoYW5n ZSBkZWZhdWx0IHN5c3RlbSBjb25maWd1cmF0aW9uIGFuZAo+ID4gPiBuZXZlciByZXN0b3JlIGl0 Lgo+ID4gPiAKPiA+ID4gVGhlIGNvbmZpZ3VyZWQgcnVudGltZSBzdXNwZW5kIGlzIGFnZ3Jlc3Np dmUgYW5kIG1heSBpbmZsdWVuY2UgYmVoYXZpb3VyCj4gPiA+IG9mIHN1YnNlcXVlbnQgdGVzdHMs IHNvIGl0IGlzIGJldHRlciB0byByZXN0b3JlIHRvIHByZXZpb3VzIHZhbHVlcyBvbiB0ZXN0Cj4g PiA+IGV4aXQuCj4gPiA+IAo+ID4gPiBUaGlzIHdheSBzeXN0ZW0gYmVoYXZpb3VyLCB3aXRoIHJl Z2FyZHMgdG8gYSByYW5kb20gc2VxdWVuY2Ugb2YgZXhlY3V0ZWQKPiA+ID4gdGVzdHMsIHdpbGwg YmUgbW9yZSBjb25zaXN0ZW50IGZyb20gb25lIHJ1biB0byBhbm90aGVyLgo+ID4gPiAKPiA+ID4g djI6IFJlYWQgZmFpbHVyZSBtZWFucyBubyBydW50aW1lIHBtIHN1cHBvcnQgc28gZG9uJ3QgYXNz ZXJ0IG9uIGl0Lgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2 cnRrby51cnN1bGluQGludGVsLmNvbT4KPiA+ID4gQ2M6IEltcmUgRGVhayA8aW1yZS5kZWFrQGlu dGVsLmNvbT4KPiA+ID4gUmV2aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2ls c29uLmNvLnVrPiAjIHYxCj4gPiAKPiA+IEFncmVlZCBhYm91dCBoYXZpbmcgYSBjb25zaXN0ZW50 IGV4cGVjdGVkIHN0YXRlIGZvciBlYWNoIHRlc3QsIG5vdCBzdXJlCj4gPiB3aHkgd2UgZGlkbid0 IHJlc3RvcmUgdGhlc2Ugc2V0dGluZ3MgOi8gQnR3LCBJIGZlZWwgc29tZXdoYXQgdGhlIHNhbWUK PiA+IGFib3V0IHRlc3QgcmVzdWx0cyBiZWluZyBhZmZlY3RlZCBieSBwcmV2aW91cyB0ZXN0cywg YnV0IG5vdCBzdXJlIGlmCj4gPiBhbnl0aGluZyBzaG91bGQvY2FuIGJlIGRvbmUgYWJvdXQgdGhh dC4KPiA+IAo+ID4gQWNrZWQtYnk6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPiA+ IAo+ID4gU29tZSBuaXRzIGJlbG93Lgo+ID4gCj4gPiA+IC0tLQo+ID4gPiAgIGxpYi9pZ3RfcG0u YyB8IDEyMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLQo+ID4gPiAgIDEgZmlsZSBjaGFuZ2VkLCAxMTcgaW5zZXJ0aW9ucygrKSwgNSBk ZWxldGlvbnMoLSkKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9saWIvaWd0X3BtLmMgYi9saWIv aWd0X3BtLmMKPiA+ID4gaW5kZXggNWJmNWIyZTIzY2RjLi4wNGUyYjg5Y2NhOTUgMTAwNjQ0Cj4g PiA+IC0tLSBhL2xpYi9pZ3RfcG0uYwo+ID4gPiArKysgYi9saWIvaWd0X3BtLmMKPiA+ID4gQEAg LTYzLDYgKzYzLDQ2IEBAIGVudW0gewo+ID4gPiAgIC8qIFJlbWVtYmVyIHRvIGZpeCB0aGlzIGlm IGFkZGluZyBsb25nZXIgc3RyaW5ncyAqLwo+ID4gPiAgICNkZWZpbmUgTUFYX1BPTElDWV9TVFJM RU4Jc3RybGVuKE1BWF9QRVJGT1JNQU5DRV9TVFIpCj4gPiA+ICtzdGF0aWMgY2hhciBfX2lndF9w bV9hdWRpb19ydW50aW1lX3Bvd2VyX3NhdmVbNjRdOwo+ID4gPiArc3RhdGljIGNoYXIgX19pZ3Rf cG1fYXVkaW9fcnVudGltZV9jb250cm9sWzY0XTsKPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQg X19pZ3RfcG1fYXVkaW9fcnVudGltZV9leGl0X2hhbmRsZXIoaW50IHNpZykKPiA+ID4gK3sKPiA+ ID4gKwlpbnQgZmQ7Cj4gPiA+ICsKPiA+ID4gKwlpZ3RfZGVidWcoIlJlc3RvcmluZyBhdWRpbyBw b3dlciBtYW5hZ2VtZW50IHRvICclcycgYW5kICclcydcbiIsCj4gPiA+ICsJCSAgX19pZ3RfcG1f YXVkaW9fcnVudGltZV9wb3dlcl9zYXZlLAo+ID4gPiArCQkgIF9faWd0X3BtX2F1ZGlvX3J1bnRp bWVfY29udHJvbCk7Cj4gPiA+ICsKPiA+ID4gKwlmZCA9IG9wZW4oIi9zeXMvbW9kdWxlL3NuZF9o ZGFfaW50ZWwvcGFyYW1ldGVycy9wb3dlcl9zYXZlIiwgT19XUk9OTFkpOwo+ID4gPiArCWlmIChm ZCA8IDApCj4gPiA+ICsJCXJldHVybjsKPiA+ID4gKwlpZiAod3JpdGUoZmQsIF9faWd0X3BtX2F1 ZGlvX3J1bnRpbWVfcG93ZXJfc2F2ZSwKPiA+ID4gKwkJICBzdHJsZW4oX19pZ3RfcG1fYXVkaW9f cnVudGltZV9wb3dlcl9zYXZlKSkgIT0KPiA+ID4gKwkgICAgc3RybGVuKF9faWd0X3BtX2F1ZGlv X3J1bnRpbWVfcG93ZXJfc2F2ZSkpCj4gPiA+ICsJCWlndF93YXJuKCJGYWlsZWQgdG8gcmVzdG9y ZSBhdWRpbyBwb3dlcl9zYXZlIHRvICclcydcbiIsCj4gPiA+ICsJCQkgX19pZ3RfcG1fYXVkaW9f cnVudGltZV9wb3dlcl9zYXZlKTsKPiA+ID4gKwljbG9zZShmZCk7Cj4gPiA+ICsKPiA+ID4gKwlm ZCA9IG9wZW4oIi9zeXMvYnVzL3BjaS9kZXZpY2VzLzAwMDA6MDA6MDMuMC9wb3dlci9jb250cm9s IiwgT19XUk9OTFkpOwo+ID4gPiArCWlmIChmZCA8IDApCj4gPiA+ICsJCXJldHVybjsKPiA+ID4g KwlpZiAod3JpdGUoZmQsIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCwKPiA+ID4gKwkJ ICBzdHJsZW4oX19pZ3RfcG1fYXVkaW9fcnVudGltZV9jb250cm9sKSkgIT0KPiA+ID4gKwkgICAg c3RybGVuKF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCkpCj4gPiA+ICsJCWlndF93YXJu KCJGYWlsZWQgdG8gcmVzdG9yZSBhdWRpbyBjb250cm9sIHRvICclcydcbiIsCj4gPiA+ICsJCQkg X19pZ3RfcG1fYXVkaW9fcnVudGltZV9jb250cm9sKTsKPiA+ID4gKwljbG9zZShmZCk7Cj4gPiA+ ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyB2b2lkIHN0cmNob21wKGNoYXIgKnN0cikKPiA+ID4g K3sKPiA+ID4gKwlpbnQgbGVuID0gc3RybGVuKHN0cik7Cj4gPiA+ICsKPiA+ID4gKwlpZiAobGVu ICYmIHN0cltsZW4gLSAxXSA9PSAnXG4nKQo+ID4gPiArCQlzdHJbbGVuIC0gMV0gPSAwOwo+ID4g PiArfQo+ID4gPiArCj4gPiA+ICAgLyoqCj4gPiA+ICAgICogaWd0X3BtX2VuYWJsZV9hdWRpb19y dW50aW1lX3BtOgo+ID4gPiAgICAqCj4gPiA+IEBAIC03OCwxNiArMTE4LDMyIEBAIHZvaWQgaWd0 X3BtX2VuYWJsZV9hdWRpb19ydW50aW1lX3BtKHZvaWQpCj4gPiA+ICAgewo+ID4gPiAgIAlpbnQg ZmQ7Cj4gPiA+IC0JZmQgPSBvcGVuKCIvc3lzL21vZHVsZS9zbmRfaGRhX2ludGVsL3BhcmFtZXRl cnMvcG93ZXJfc2F2ZSIsIE9fV1JPTkxZKTsKPiA+ID4gKwkvKiBDaGVjayBpZiBhbHJlYWR5IGVu YWJsZWQuICovCj4gPiA+ICsJaWYgKF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfcG93ZXJfc2F2ZVsw XSkKPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiArCj4gPiA+ICsJZmQgPSBvcGVuKCIvc3lzL21vZHVs ZS9zbmRfaGRhX2ludGVsL3BhcmFtZXRlcnMvcG93ZXJfc2F2ZSIsIE9fUkRXUik7Cj4gPiA+ICAg CWlmIChmZCA+PSAwKSB7Cj4gPiA+ICsJCWlndF9hc3NlcnQocmVhZChmZCwgX19pZ3RfcG1fYXVk aW9fcnVudGltZV9wb3dlcl9zYXZlLAo+ID4gPiArCQkJCXNpemVvZihfX2lndF9wbV9hdWRpb19y dW50aW1lX3Bvd2VyX3NhdmUpKSA+IDApOwo+ID4gPiArCQlzdHJjaG9tcChfX2lndF9wbV9hdWRp b19ydW50aW1lX3Bvd2VyX3NhdmUpOwo+ID4gPiAgIAkJaWd0X2Fzc2VydF9lcSh3cml0ZShmZCwg IjFcbiIsIDIpLCAyKTsKPiA+ID4gKwkJaWd0X2luc3RhbGxfZXhpdF9oYW5kbGVyKF9faWd0X3Bt X2F1ZGlvX3J1bnRpbWVfZXhpdF9oYW5kbGVyKTsKPiA+IAo+ID4gUmVhZC9pbnN0YWxsX2hhbmRs ZXIvd3JpdGUgd291bGQgYXZvaWQgYSBwb3RlbnRpYWwgcmFjZSB3aXRoIF5DLiBUaGVyZSdzIGFs c28KPiAKPiBXZWxsIHNwb3R0ZWQsIGRvbmUgaW4gdjMuCgpPaywgZm9yIHRoYXQgb25lOgpSZXZp ZXdlZC1ieTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgoKPiAKPiA+IGxpbmtfcG93 ZXJfbWFuYWdlbWVudF9wb2xpY3kgd2hpY2ggaXMgb25seSByZXN0b3JlZCBkdXJpbmcgbm9ybWFs IGV4aXQuCj4gCj4gVGhpcyBvbmUgYWxyZWFkeSBoYXMgY29kZSB0byByZXN0b3JlCj4gKGlndF9w bV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KSBzbyBtYXliZSBiZXN0IHRvIGRl Y2lkZSB3aGVyZSB0bwo+IHB1dCB0aGUgcmVzcG9uc2liaWxpdHkgb2YgaW5zdGFsbGluZyB0aGUg ZXhpdCBoYW5kbGVyIGluIGEgZm9sbG93IHVwIHBhdGNoPwo+IE1ha2UgaWd0X3BtX2VuYWJsZV9z YXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCBkbyBpdCwgb3IgaGF2ZSB0aGUgY2FsbGVyIGRvCj4g aXQ/IEZvcm1lciB3b3VsZCBiZSBpbmxpbmUgd2l0aCB0aGlzIHBhdGNoLCBhbmQgdGhlbiBwcm9i YWJseSB3ZSBjYW4KPiB1bmV4cG9ydCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFu YWdlbWVudC4gT3IgZG9lcyBpdCBhbHJlYWR5Cj4gaGFuZGxlIHRoaXMgZm9yIG5vcm1hbCBleGl0 IHNpbmNlIGl0IGlzIGNhbGxpbmcgaXQgZnJvbSBpZ3RfZml4dHVyZT8KClllcywgaXQncyBoYW5k bGVkIGZvciBub3JtYWwgZXhpdCB2aWEgaWd0X2ZpeHR1cmUsIGJ1dCBJIHRoaW5rIGl0IHNob3Vs ZApiZSByZXN0b3JlZCB0aGUgc2FtZSB3YXkgYXMgeW91IGRpZCBoZXJlLiBCdXQgeWVhLCBpdCdz IGZpbmUgdG8gZG8gdGhhdAphcyBhIGZvbGxvdy11cC4KCj4gCj4gUmVnYXJkcywKPiAKPiBUdnJ0 a28KPiAKPiA+IAo+ID4gPiAgIAkJY2xvc2UoZmQpOwo+ID4gPiAgIAl9Cj4gPiA+IC0JZmQgPSBv cGVuKCIvc3lzL2J1cy9wY2kvZGV2aWNlcy8wMDAwOjAwOjAzLjAvcG93ZXIvY29udHJvbCIsIE9f V1JPTkxZKTsKPiA+ID4gKwlmZCA9IG9wZW4oIi9zeXMvYnVzL3BjaS9kZXZpY2VzLzAwMDA6MDA6 MDMuMC9wb3dlci9jb250cm9sIiwgT19SRFdSKTsKPiA+ID4gICAJaWYgKGZkID49IDApIHsKPiA+ ID4gKwkJaWd0X2Fzc2VydChyZWFkKGZkLCBfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRyb2ws Cj4gPiA+ICsJCQkJc2l6ZW9mKF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCkpID4gMCk7 Cj4gPiA+ICsJCXN0cmNob21wKF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCk7Cj4gPiA+ ICAgCQlpZ3RfYXNzZXJ0X2VxKHdyaXRlKGZkLCAiYXV0b1xuIiwgNSksIDUpOwo+ID4gPiAgIAkJ Y2xvc2UoZmQpOwo+ID4gPiAgIAl9Cj4gPiA+ICsKPiA+ID4gKwlpZ3RfZGVidWcoIlNhdmVkIGF1 ZGlvIHBvd2VyIG1hbmFnZW1lbnQgYXMgJyVzJyBhbmQgJyVzJ1xuIiwKPiA+ID4gKwkJICBfX2ln dF9wbV9hdWRpb19ydW50aW1lX3Bvd2VyX3NhdmUsCj4gPiA+ICsJCSAgX19pZ3RfcG1fYXVkaW9f cnVudGltZV9jb250cm9sKTsKPiA+ID4gKwo+ID4gPiAgIAkvKiBHaXZlIHNvbWUgdGltZSBmb3Ig aXQgdG8gcmVhY3QuICovCj4gPiA+ICAgCXNsZWVwKDEpOwo+ID4gPiAgIH0KPiA+ID4gQEAgLTIz OCw2ICsyOTQsMzggQEAgdm9pZCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdl bWVudChpbnQ4X3QgKnBtX2RhdGEpCj4gPiA+ICAgLyogV2UganVzdCBsZWFrIHRoaXMgb24gZXhp dCAuLi4gKi8KPiA+ID4gICBpbnQgcG1fc3RhdHVzX2ZkID0gLTE7Cj4gPiA+ICtzdGF0aWMgY2hh ciBfX2lndF9wbV9ydW50aW1lX2F1dG9zdXNwZW5kWzY0XTsKPiA+ID4gK3N0YXRpYyBjaGFyIF9f aWd0X3BtX3J1bnRpbWVfY29udHJvbFs2NF07Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyB2b2lkIF9f aWd0X3BtX3J1bnRpbWVfZXhpdF9oYW5kbGVyKGludCBzaWcpCj4gPiA+ICt7Cj4gPiA+ICsJaW50 IGZkOwo+ID4gPiArCj4gPiA+ICsJaWd0X2RlYnVnKCJSZXN0b3JpbmcgcnVudGltZSBtYW5hZ2Vt ZW50IHRvICclcycgYW5kICclcydcbiIsCj4gPiA+ICsJCSAgX19pZ3RfcG1fcnVudGltZV9hdXRv c3VzcGVuZCwKPiA+ID4gKwkJICBfX2lndF9wbV9ydW50aW1lX2NvbnRyb2wpOwo+ID4gPiArCj4g PiA+ICsJZmQgPSBvcGVuKFBPV0VSX0RJUiAiL2F1dG9zdXNwZW5kX2RlbGF5X21zIiwgT19XUk9O TFkpOwo+ID4gPiArCWlmIChmZCA8IDApCj4gPiA+ICsJCXJldHVybjsKPiA+ID4gKwlpZiAod3Jp dGUoZmQsIF9faWd0X3BtX3J1bnRpbWVfYXV0b3N1c3BlbmQsCj4gPiA+ICsJCSAgc3RybGVuKF9f aWd0X3BtX3J1bnRpbWVfYXV0b3N1c3BlbmQpKSAhPQo+ID4gPiArCSAgICBzdHJsZW4oX19pZ3Rf cG1fcnVudGltZV9hdXRvc3VzcGVuZCkpCj4gPiA+ICsJCWlndF93YXJuKCJGYWlsZWQgdG8gcmVz dG9yZSBydW50aW1lIHBtIGF1dG9zdXNwZW5kIGRlbGF5IHRvICclcydcbiIsCj4gPiA+ICsJCQkg X19pZ3RfcG1fcnVudGltZV9hdXRvc3VzcGVuZCk7Cj4gPiA+ICsJY2xvc2UoZmQpOwo+ID4gPiAr Cj4gPiA+ICsJZmQgPSBvcGVuKFBPV0VSX0RJUiAiL2NvbnRyb2wiLCBPX1dST05MWSk7Cj4gPiA+ ICsJaWYgKGZkIDwgMCkKPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiArCWlmICh3cml0ZShmZCwgX19p Z3RfcG1fcnVudGltZV9jb250cm9sLAo+ID4gPiArCQkgIHN0cmxlbihfX2lndF9wbV9ydW50aW1l X2NvbnRyb2wpKSAhPQo+ID4gPiArCSAgICBzdHJsZW4oX19pZ3RfcG1fcnVudGltZV9jb250cm9s KSkKPiA+ID4gKwkJaWd0X3dhcm4oIkZhaWxlZCB0byByZXN0b3JlIHJ1bnRpbWUgcG0gY29udHJv bCB0byAnJXMnXG4iLAo+ID4gPiArCQkJIF9faWd0X3BtX3J1bnRpbWVfY29udHJvbCk7Cj4gPiA+ ICsJY2xvc2UoZmQpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICAgLyoqCj4gPiA+ICAgICogaWd0 X3NldHVwX3J1bnRpbWVfcG06Cj4gPiA+ICAgICoKPiA+ID4gQEAgLTI2MSwxMiArMzQ5LDI2IEBA IGJvb2wgaWd0X3NldHVwX3J1bnRpbWVfcG0odm9pZCkKPiA+ID4gICAJLyogT3VyIGltcGxlbWVu dGF0aW9uIHVzZXMgYXV0b3N1c3BlbmQuIFRyeSB0byBzZXQgaXQgdG8gMG1zIHNvIHRoZSB0ZXN0 Cj4gPiA+ICAgCSAqIHN1aXRlIGdvZXMgZmFzdGVyIGFuZCB3ZSBoYXZlIGEgaGlnaGVyIHByb2Jh YmlsaXR5IG9mIHRyaWdnZXJpbmcgcmFjZQo+ID4gPiAgIAkgKiBjb25kaXRpb25zLiAqLwo+ID4g PiAtCWZkID0gb3BlbihQT1dFUl9ESVIgIi9hdXRvc3VzcGVuZF9kZWxheV9tcyIsIE9fV1JPTkxZ KTsKPiA+ID4gKwlmZCA9IG9wZW4oUE9XRVJfRElSICIvYXV0b3N1c3BlbmRfZGVsYXlfbXMiLCBP X1JEV1IpOwo+ID4gPiAgIAlpZ3RfYXNzZXJ0X2YoZmQgPj0gMCwKPiA+ID4gICAJCSAgICAgIkNh bid0IG9wZW4gIiBQT1dFUl9ESVIgIi9hdXRvc3VzcGVuZF9kZWxheV9tc1xuIik7Cj4gPiA+IC0J LyogSWYgd2UgZmFpbCB0byB3cml0ZSB0byB0aGUgZmlsZSwgaXQgbWVhbnMgdGhpcyBzeXN0ZW0g ZG9lc24ndCBzdXBwb3J0Cj4gPiA+IC0JICogcnVudGltZSBQTS4gKi8KPiA+ID4gKwkvKgo+ID4g PiArCSAqIFNhdmUgcHJldmlvdXMgdmFsdWVzIHRvIGJlIGFibGUgdG8gIGluc3RhbGwgZXhpdCBo YW5kbGVyIHRvIHJlc3RvcmUKPiA+ID4gKwkgKiB0aGVtIG9uIHRlc3QgZXhpdC4KPiA+ID4gKwkg Ki8KPiA+ID4gKwlzaXplID0gcmVhZChmZCwgX19pZ3RfcG1fcnVudGltZV9hdXRvc3VzcGVuZCwK PiA+ID4gKwkJICAgIHNpemVvZihfX2lndF9wbV9ydW50aW1lX2F1dG9zdXNwZW5kKSk7Cj4gPiA+ ICsKPiA+ID4gKwkvKgo+ID4gPiArCSAqIElmIHdlIGZhaWwgdG8gcmVhZCBmcm9tIHRoZSBmaWxl LCBpdCBtZWFucyB0aGlzIHN5c3RlbSBkb2Vzbid0Cj4gPiA+ICsJICogc3VwcG9ydCBydW50aW1l IFBNLgo+ID4gPiArCSAqLwo+ID4gPiArCWlmIChzaXplIDw9IDApIHsKPiA+ID4gKwkJY2xvc2Uo ZmQpOwo+ID4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICAgCXNp emUgPSB3cml0ZShmZCwgIjBcbiIsIDIpOwo+ID4gPiAgIAljbG9zZShmZCk7Cj4gPiA+IEBAIC0y NzQsMTAgKzM3NiwyMCBAQCBib29sIGlndF9zZXR1cF9ydW50aW1lX3BtKHZvaWQpCj4gPiA+ICAg CWlmIChzaXplICE9IDIpCj4gPiA+ICAgCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICsJc3RyY2hvbXAo X19pZ3RfcG1fcnVudGltZV9hdXRvc3VzcGVuZCk7Cj4gPiA+ICsJaWd0X2luc3RhbGxfZXhpdF9o YW5kbGVyKF9faWd0X3BtX3J1bnRpbWVfZXhpdF9oYW5kbGVyKTsKPiA+ID4gKwo+ID4gPiAgIAkv KiBXZSBrbm93IHdlIHN1cHBvcnQgcnVudGltZSBQTSwgbGV0J3MgdHJ5IHRvIGVuYWJsZSBpdCBu b3cuICovCj4gPiA+ICAgCWZkID0gb3BlbihQT1dFUl9ESVIgIi9jb250cm9sIiwgT19SRFdSKTsK PiA+ID4gICAJaWd0X2Fzc2VydF9mKGZkID49IDAsICJDYW4ndCBvcGVuICIgUE9XRVJfRElSICIv Y29udHJvbFxuIik7Cj4gPiA+ICsJaWd0X2Fzc2VydChyZWFkKGZkLCBfX2lndF9wbV9ydW50aW1l X2NvbnRyb2wsCj4gPiA+ICsJCQlzaXplb2YoX19pZ3RfcG1fcnVudGltZV9jb250cm9sKSkgPiAw KTsKPiA+ID4gKwlzdHJjaG9tcChfX2lndF9wbV9ydW50aW1lX2NvbnRyb2wpOwo+ID4gPiArCj4g PiA+ICsJaWd0X2RlYnVnKCJTYXZlZCBydW50aW1lIHBvd2VyIG1hbmFnZW1lbnQgYXMgJyVzJyBh bmQgJyVzJ1xuIiwKPiA+ID4gKwkJICBfX2lndF9wbV9ydW50aW1lX2F1dG9zdXNwZW5kLCBfX2ln dF9wbV9ydW50aW1lX2NvbnRyb2wpOwo+ID4gPiArCj4gPiA+ICAgCXNpemUgPSB3cml0ZShmZCwg ImF1dG9cbiIsIDUpOwo+ID4gPiAgIAlpZ3RfYXNzZXJ0KHNpemUgPT0gNSk7Cj4gPiA+IC0tIAo+ ID4gPiAyLjE0LjEKPiA+ID4gCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4gSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiA+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Fri, 2 Mar 2018 14:29:13 +0200 From: Imre Deak Message-ID: <20180302122913.oc3ccbrhcrwexmrj@ideak-desk.fi.intel.com> References: <20180228110829.12126-1-tvrtko.ursulin@linux.intel.com> <20180228153506.13035-1-tvrtko.ursulin@linux.intel.com> <20180302092950.2cybveeu5py5hkzc@ideak-desk.fi.intel.com> <658a7650-6351-f56b-c9db-2cf44d6b8bcb@linux.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <658a7650-6351-f56b-c9db-2cf44d6b8bcb@linux.intel.com> Subject: Re: [igt-dev] [Intel-gfx] [PATCH i-g-t v2] lib/igt_pm: Restore runtime pm state on test exit List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: imre.deak@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Tvrtko Ursulin Cc: igt-dev@lists.freedesktop.org, Intel-gfx@lists.freedesktop.org List-ID: T24gRnJpLCBNYXIgMDIsIDIwMTggYXQgMDk6NTY6MjZBTSArMDAwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gCj4gT24gMDIvMDMvMjAxOCAwOToyOSwgSW1yZSBEZWFrIHdyb3RlOgo+ID4gT24g V2VkLCBGZWIgMjgsIDIwMTggYXQgMDM6MzU6MDZQTSArMDAwMCwgVHZydGtvIFVyc3VsaW4gd3Jv dGU6Cj4gPiA+IEZyb206IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ Cj4gPiA+IAo+ID4gPiBTb21lIHRlc3RzICh0aGUgb25lcyB3aGljaCBjYWxsIGlndF9zZXR1cF9y dW50aW1lX3BtIGFuZAo+ID4gPiBpZ3RfcG1fZW5hYmxlX2F1ZGlvX3J1bnRpbWVfcG0pIGNoYW5n ZSBkZWZhdWx0IHN5c3RlbSBjb25maWd1cmF0aW9uIGFuZAo+ID4gPiBuZXZlciByZXN0b3JlIGl0 Lgo+ID4gPiAKPiA+ID4gVGhlIGNvbmZpZ3VyZWQgcnVudGltZSBzdXNwZW5kIGlzIGFnZ3Jlc3Np dmUgYW5kIG1heSBpbmZsdWVuY2UgYmVoYXZpb3VyCj4gPiA+IG9mIHN1YnNlcXVlbnQgdGVzdHMs IHNvIGl0IGlzIGJldHRlciB0byByZXN0b3JlIHRvIHByZXZpb3VzIHZhbHVlcyBvbiB0ZXN0Cj4g PiA+IGV4aXQuCj4gPiA+IAo+ID4gPiBUaGlzIHdheSBzeXN0ZW0gYmVoYXZpb3VyLCB3aXRoIHJl Z2FyZHMgdG8gYSByYW5kb20gc2VxdWVuY2Ugb2YgZXhlY3V0ZWQKPiA+ID4gdGVzdHMsIHdpbGwg YmUgbW9yZSBjb25zaXN0ZW50IGZyb20gb25lIHJ1biB0byBhbm90aGVyLgo+ID4gPiAKPiA+ID4g djI6IFJlYWQgZmFpbHVyZSBtZWFucyBubyBydW50aW1lIHBtIHN1cHBvcnQgc28gZG9uJ3QgYXNz ZXJ0IG9uIGl0Lgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2 cnRrby51cnN1bGluQGludGVsLmNvbT4KPiA+ID4gQ2M6IEltcmUgRGVhayA8aW1yZS5kZWFrQGlu dGVsLmNvbT4KPiA+ID4gUmV2aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2ls c29uLmNvLnVrPiAjIHYxCj4gPiAKPiA+IEFncmVlZCBhYm91dCBoYXZpbmcgYSBjb25zaXN0ZW50 IGV4cGVjdGVkIHN0YXRlIGZvciBlYWNoIHRlc3QsIG5vdCBzdXJlCj4gPiB3aHkgd2UgZGlkbid0 IHJlc3RvcmUgdGhlc2Ugc2V0dGluZ3MgOi8gQnR3LCBJIGZlZWwgc29tZXdoYXQgdGhlIHNhbWUK PiA+IGFib3V0IHRlc3QgcmVzdWx0cyBiZWluZyBhZmZlY3RlZCBieSBwcmV2aW91cyB0ZXN0cywg YnV0IG5vdCBzdXJlIGlmCj4gPiBhbnl0aGluZyBzaG91bGQvY2FuIGJlIGRvbmUgYWJvdXQgdGhh dC4KPiA+IAo+ID4gQWNrZWQtYnk6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KPiA+ IAo+ID4gU29tZSBuaXRzIGJlbG93Lgo+ID4gCj4gPiA+IC0tLQo+ID4gPiAgIGxpYi9pZ3RfcG0u YyB8IDEyMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLQo+ID4gPiAgIDEgZmlsZSBjaGFuZ2VkLCAxMTcgaW5zZXJ0aW9ucygrKSwgNSBk ZWxldGlvbnMoLSkKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9saWIvaWd0X3BtLmMgYi9saWIv aWd0X3BtLmMKPiA+ID4gaW5kZXggNWJmNWIyZTIzY2RjLi4wNGUyYjg5Y2NhOTUgMTAwNjQ0Cj4g PiA+IC0tLSBhL2xpYi9pZ3RfcG0uYwo+ID4gPiArKysgYi9saWIvaWd0X3BtLmMKPiA+ID4gQEAg LTYzLDYgKzYzLDQ2IEBAIGVudW0gewo+ID4gPiAgIC8qIFJlbWVtYmVyIHRvIGZpeCB0aGlzIGlm IGFkZGluZyBsb25nZXIgc3RyaW5ncyAqLwo+ID4gPiAgICNkZWZpbmUgTUFYX1BPTElDWV9TVFJM RU4Jc3RybGVuKE1BWF9QRVJGT1JNQU5DRV9TVFIpCj4gPiA+ICtzdGF0aWMgY2hhciBfX2lndF9w bV9hdWRpb19ydW50aW1lX3Bvd2VyX3NhdmVbNjRdOwo+ID4gPiArc3RhdGljIGNoYXIgX19pZ3Rf cG1fYXVkaW9fcnVudGltZV9jb250cm9sWzY0XTsKPiA+ID4gKwo+ID4gPiArc3RhdGljIHZvaWQg X19pZ3RfcG1fYXVkaW9fcnVudGltZV9leGl0X2hhbmRsZXIoaW50IHNpZykKPiA+ID4gK3sKPiA+ ID4gKwlpbnQgZmQ7Cj4gPiA+ICsKPiA+ID4gKwlpZ3RfZGVidWcoIlJlc3RvcmluZyBhdWRpbyBw b3dlciBtYW5hZ2VtZW50IHRvICclcycgYW5kICclcydcbiIsCj4gPiA+ICsJCSAgX19pZ3RfcG1f YXVkaW9fcnVudGltZV9wb3dlcl9zYXZlLAo+ID4gPiArCQkgIF9faWd0X3BtX2F1ZGlvX3J1bnRp bWVfY29udHJvbCk7Cj4gPiA+ICsKPiA+ID4gKwlmZCA9IG9wZW4oIi9zeXMvbW9kdWxlL3NuZF9o ZGFfaW50ZWwvcGFyYW1ldGVycy9wb3dlcl9zYXZlIiwgT19XUk9OTFkpOwo+ID4gPiArCWlmIChm ZCA8IDApCj4gPiA+ICsJCXJldHVybjsKPiA+ID4gKwlpZiAod3JpdGUoZmQsIF9faWd0X3BtX2F1 ZGlvX3J1bnRpbWVfcG93ZXJfc2F2ZSwKPiA+ID4gKwkJICBzdHJsZW4oX19pZ3RfcG1fYXVkaW9f cnVudGltZV9wb3dlcl9zYXZlKSkgIT0KPiA+ID4gKwkgICAgc3RybGVuKF9faWd0X3BtX2F1ZGlv X3J1bnRpbWVfcG93ZXJfc2F2ZSkpCj4gPiA+ICsJCWlndF93YXJuKCJGYWlsZWQgdG8gcmVzdG9y ZSBhdWRpbyBwb3dlcl9zYXZlIHRvICclcydcbiIsCj4gPiA+ICsJCQkgX19pZ3RfcG1fYXVkaW9f cnVudGltZV9wb3dlcl9zYXZlKTsKPiA+ID4gKwljbG9zZShmZCk7Cj4gPiA+ICsKPiA+ID4gKwlm ZCA9IG9wZW4oIi9zeXMvYnVzL3BjaS9kZXZpY2VzLzAwMDA6MDA6MDMuMC9wb3dlci9jb250cm9s IiwgT19XUk9OTFkpOwo+ID4gPiArCWlmIChmZCA8IDApCj4gPiA+ICsJCXJldHVybjsKPiA+ID4g KwlpZiAod3JpdGUoZmQsIF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCwKPiA+ID4gKwkJ ICBzdHJsZW4oX19pZ3RfcG1fYXVkaW9fcnVudGltZV9jb250cm9sKSkgIT0KPiA+ID4gKwkgICAg c3RybGVuKF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCkpCj4gPiA+ICsJCWlndF93YXJu KCJGYWlsZWQgdG8gcmVzdG9yZSBhdWRpbyBjb250cm9sIHRvICclcydcbiIsCj4gPiA+ICsJCQkg X19pZ3RfcG1fYXVkaW9fcnVudGltZV9jb250cm9sKTsKPiA+ID4gKwljbG9zZShmZCk7Cj4gPiA+ ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyB2b2lkIHN0cmNob21wKGNoYXIgKnN0cikKPiA+ID4g K3sKPiA+ID4gKwlpbnQgbGVuID0gc3RybGVuKHN0cik7Cj4gPiA+ICsKPiA+ID4gKwlpZiAobGVu ICYmIHN0cltsZW4gLSAxXSA9PSAnXG4nKQo+ID4gPiArCQlzdHJbbGVuIC0gMV0gPSAwOwo+ID4g PiArfQo+ID4gPiArCj4gPiA+ICAgLyoqCj4gPiA+ICAgICogaWd0X3BtX2VuYWJsZV9hdWRpb19y dW50aW1lX3BtOgo+ID4gPiAgICAqCj4gPiA+IEBAIC03OCwxNiArMTE4LDMyIEBAIHZvaWQgaWd0 X3BtX2VuYWJsZV9hdWRpb19ydW50aW1lX3BtKHZvaWQpCj4gPiA+ICAgewo+ID4gPiAgIAlpbnQg ZmQ7Cj4gPiA+IC0JZmQgPSBvcGVuKCIvc3lzL21vZHVsZS9zbmRfaGRhX2ludGVsL3BhcmFtZXRl cnMvcG93ZXJfc2F2ZSIsIE9fV1JPTkxZKTsKPiA+ID4gKwkvKiBDaGVjayBpZiBhbHJlYWR5IGVu YWJsZWQuICovCj4gPiA+ICsJaWYgKF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfcG93ZXJfc2F2ZVsw XSkKPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiArCj4gPiA+ICsJZmQgPSBvcGVuKCIvc3lzL21vZHVs ZS9zbmRfaGRhX2ludGVsL3BhcmFtZXRlcnMvcG93ZXJfc2F2ZSIsIE9fUkRXUik7Cj4gPiA+ICAg CWlmIChmZCA+PSAwKSB7Cj4gPiA+ICsJCWlndF9hc3NlcnQocmVhZChmZCwgX19pZ3RfcG1fYXVk aW9fcnVudGltZV9wb3dlcl9zYXZlLAo+ID4gPiArCQkJCXNpemVvZihfX2lndF9wbV9hdWRpb19y dW50aW1lX3Bvd2VyX3NhdmUpKSA+IDApOwo+ID4gPiArCQlzdHJjaG9tcChfX2lndF9wbV9hdWRp b19ydW50aW1lX3Bvd2VyX3NhdmUpOwo+ID4gPiAgIAkJaWd0X2Fzc2VydF9lcSh3cml0ZShmZCwg IjFcbiIsIDIpLCAyKTsKPiA+ID4gKwkJaWd0X2luc3RhbGxfZXhpdF9oYW5kbGVyKF9faWd0X3Bt X2F1ZGlvX3J1bnRpbWVfZXhpdF9oYW5kbGVyKTsKPiA+IAo+ID4gUmVhZC9pbnN0YWxsX2hhbmRs ZXIvd3JpdGUgd291bGQgYXZvaWQgYSBwb3RlbnRpYWwgcmFjZSB3aXRoIF5DLiBUaGVyZSdzIGFs c28KPiAKPiBXZWxsIHNwb3R0ZWQsIGRvbmUgaW4gdjMuCgpPaywgZm9yIHRoYXQgb25lOgpSZXZp ZXdlZC1ieTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgoKPiAKPiA+IGxpbmtfcG93 ZXJfbWFuYWdlbWVudF9wb2xpY3kgd2hpY2ggaXMgb25seSByZXN0b3JlZCBkdXJpbmcgbm9ybWFs IGV4aXQuCj4gCj4gVGhpcyBvbmUgYWxyZWFkeSBoYXMgY29kZSB0byByZXN0b3JlCj4gKGlndF9w bV9yZXN0b3JlX3NhdGFfbGlua19wb3dlcl9tYW5hZ2VtZW50KSBzbyBtYXliZSBiZXN0IHRvIGRl Y2lkZSB3aGVyZSB0bwo+IHB1dCB0aGUgcmVzcG9uc2liaWxpdHkgb2YgaW5zdGFsbGluZyB0aGUg ZXhpdCBoYW5kbGVyIGluIGEgZm9sbG93IHVwIHBhdGNoPwo+IE1ha2UgaWd0X3BtX2VuYWJsZV9z YXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCBkbyBpdCwgb3IgaGF2ZSB0aGUgY2FsbGVyIGRvCj4g aXQ/IEZvcm1lciB3b3VsZCBiZSBpbmxpbmUgd2l0aCB0aGlzIHBhdGNoLCBhbmQgdGhlbiBwcm9i YWJseSB3ZSBjYW4KPiB1bmV4cG9ydCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFu YWdlbWVudC4gT3IgZG9lcyBpdCBhbHJlYWR5Cj4gaGFuZGxlIHRoaXMgZm9yIG5vcm1hbCBleGl0 IHNpbmNlIGl0IGlzIGNhbGxpbmcgaXQgZnJvbSBpZ3RfZml4dHVyZT8KClllcywgaXQncyBoYW5k bGVkIGZvciBub3JtYWwgZXhpdCB2aWEgaWd0X2ZpeHR1cmUsIGJ1dCBJIHRoaW5rIGl0IHNob3Vs ZApiZSByZXN0b3JlZCB0aGUgc2FtZSB3YXkgYXMgeW91IGRpZCBoZXJlLiBCdXQgeWVhLCBpdCdz IGZpbmUgdG8gZG8gdGhhdAphcyBhIGZvbGxvdy11cC4KCj4gCj4gUmVnYXJkcywKPiAKPiBUdnJ0 a28KPiAKPiA+IAo+ID4gPiAgIAkJY2xvc2UoZmQpOwo+ID4gPiAgIAl9Cj4gPiA+IC0JZmQgPSBv cGVuKCIvc3lzL2J1cy9wY2kvZGV2aWNlcy8wMDAwOjAwOjAzLjAvcG93ZXIvY29udHJvbCIsIE9f V1JPTkxZKTsKPiA+ID4gKwlmZCA9IG9wZW4oIi9zeXMvYnVzL3BjaS9kZXZpY2VzLzAwMDA6MDA6 MDMuMC9wb3dlci9jb250cm9sIiwgT19SRFdSKTsKPiA+ID4gICAJaWYgKGZkID49IDApIHsKPiA+ ID4gKwkJaWd0X2Fzc2VydChyZWFkKGZkLCBfX2lndF9wbV9hdWRpb19ydW50aW1lX2NvbnRyb2ws Cj4gPiA+ICsJCQkJc2l6ZW9mKF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCkpID4gMCk7 Cj4gPiA+ICsJCXN0cmNob21wKF9faWd0X3BtX2F1ZGlvX3J1bnRpbWVfY29udHJvbCk7Cj4gPiA+ ICAgCQlpZ3RfYXNzZXJ0X2VxKHdyaXRlKGZkLCAiYXV0b1xuIiwgNSksIDUpOwo+ID4gPiAgIAkJ Y2xvc2UoZmQpOwo+ID4gPiAgIAl9Cj4gPiA+ICsKPiA+ID4gKwlpZ3RfZGVidWcoIlNhdmVkIGF1 ZGlvIHBvd2VyIG1hbmFnZW1lbnQgYXMgJyVzJyBhbmQgJyVzJ1xuIiwKPiA+ID4gKwkJICBfX2ln dF9wbV9hdWRpb19ydW50aW1lX3Bvd2VyX3NhdmUsCj4gPiA+ICsJCSAgX19pZ3RfcG1fYXVkaW9f cnVudGltZV9jb250cm9sKTsKPiA+ID4gKwo+ID4gPiAgIAkvKiBHaXZlIHNvbWUgdGltZSBmb3Ig aXQgdG8gcmVhY3QuICovCj4gPiA+ICAgCXNsZWVwKDEpOwo+ID4gPiAgIH0KPiA+ID4gQEAgLTIz OCw2ICsyOTQsMzggQEAgdm9pZCBpZ3RfcG1fcmVzdG9yZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdl bWVudChpbnQ4X3QgKnBtX2RhdGEpCj4gPiA+ICAgLyogV2UganVzdCBsZWFrIHRoaXMgb24gZXhp dCAuLi4gKi8KPiA+ID4gICBpbnQgcG1fc3RhdHVzX2ZkID0gLTE7Cj4gPiA+ICtzdGF0aWMgY2hh ciBfX2lndF9wbV9ydW50aW1lX2F1dG9zdXNwZW5kWzY0XTsKPiA+ID4gK3N0YXRpYyBjaGFyIF9f aWd0X3BtX3J1bnRpbWVfY29udHJvbFs2NF07Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyB2b2lkIF9f aWd0X3BtX3J1bnRpbWVfZXhpdF9oYW5kbGVyKGludCBzaWcpCj4gPiA+ICt7Cj4gPiA+ICsJaW50 IGZkOwo+ID4gPiArCj4gPiA+ICsJaWd0X2RlYnVnKCJSZXN0b3JpbmcgcnVudGltZSBtYW5hZ2Vt ZW50IHRvICclcycgYW5kICclcydcbiIsCj4gPiA+ICsJCSAgX19pZ3RfcG1fcnVudGltZV9hdXRv c3VzcGVuZCwKPiA+ID4gKwkJICBfX2lndF9wbV9ydW50aW1lX2NvbnRyb2wpOwo+ID4gPiArCj4g PiA+ICsJZmQgPSBvcGVuKFBPV0VSX0RJUiAiL2F1dG9zdXNwZW5kX2RlbGF5X21zIiwgT19XUk9O TFkpOwo+ID4gPiArCWlmIChmZCA8IDApCj4gPiA+ICsJCXJldHVybjsKPiA+ID4gKwlpZiAod3Jp dGUoZmQsIF9faWd0X3BtX3J1bnRpbWVfYXV0b3N1c3BlbmQsCj4gPiA+ICsJCSAgc3RybGVuKF9f aWd0X3BtX3J1bnRpbWVfYXV0b3N1c3BlbmQpKSAhPQo+ID4gPiArCSAgICBzdHJsZW4oX19pZ3Rf cG1fcnVudGltZV9hdXRvc3VzcGVuZCkpCj4gPiA+ICsJCWlndF93YXJuKCJGYWlsZWQgdG8gcmVz dG9yZSBydW50aW1lIHBtIGF1dG9zdXNwZW5kIGRlbGF5IHRvICclcydcbiIsCj4gPiA+ICsJCQkg X19pZ3RfcG1fcnVudGltZV9hdXRvc3VzcGVuZCk7Cj4gPiA+ICsJY2xvc2UoZmQpOwo+ID4gPiAr Cj4gPiA+ICsJZmQgPSBvcGVuKFBPV0VSX0RJUiAiL2NvbnRyb2wiLCBPX1dST05MWSk7Cj4gPiA+ ICsJaWYgKGZkIDwgMCkKPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiArCWlmICh3cml0ZShmZCwgX19p Z3RfcG1fcnVudGltZV9jb250cm9sLAo+ID4gPiArCQkgIHN0cmxlbihfX2lndF9wbV9ydW50aW1l X2NvbnRyb2wpKSAhPQo+ID4gPiArCSAgICBzdHJsZW4oX19pZ3RfcG1fcnVudGltZV9jb250cm9s KSkKPiA+ID4gKwkJaWd0X3dhcm4oIkZhaWxlZCB0byByZXN0b3JlIHJ1bnRpbWUgcG0gY29udHJv bCB0byAnJXMnXG4iLAo+ID4gPiArCQkJIF9faWd0X3BtX3J1bnRpbWVfY29udHJvbCk7Cj4gPiA+ ICsJY2xvc2UoZmQpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICAgLyoqCj4gPiA+ICAgICogaWd0 X3NldHVwX3J1bnRpbWVfcG06Cj4gPiA+ICAgICoKPiA+ID4gQEAgLTI2MSwxMiArMzQ5LDI2IEBA IGJvb2wgaWd0X3NldHVwX3J1bnRpbWVfcG0odm9pZCkKPiA+ID4gICAJLyogT3VyIGltcGxlbWVu dGF0aW9uIHVzZXMgYXV0b3N1c3BlbmQuIFRyeSB0byBzZXQgaXQgdG8gMG1zIHNvIHRoZSB0ZXN0 Cj4gPiA+ICAgCSAqIHN1aXRlIGdvZXMgZmFzdGVyIGFuZCB3ZSBoYXZlIGEgaGlnaGVyIHByb2Jh YmlsaXR5IG9mIHRyaWdnZXJpbmcgcmFjZQo+ID4gPiAgIAkgKiBjb25kaXRpb25zLiAqLwo+ID4g PiAtCWZkID0gb3BlbihQT1dFUl9ESVIgIi9hdXRvc3VzcGVuZF9kZWxheV9tcyIsIE9fV1JPTkxZ KTsKPiA+ID4gKwlmZCA9IG9wZW4oUE9XRVJfRElSICIvYXV0b3N1c3BlbmRfZGVsYXlfbXMiLCBP X1JEV1IpOwo+ID4gPiAgIAlpZ3RfYXNzZXJ0X2YoZmQgPj0gMCwKPiA+ID4gICAJCSAgICAgIkNh bid0IG9wZW4gIiBQT1dFUl9ESVIgIi9hdXRvc3VzcGVuZF9kZWxheV9tc1xuIik7Cj4gPiA+IC0J LyogSWYgd2UgZmFpbCB0byB3cml0ZSB0byB0aGUgZmlsZSwgaXQgbWVhbnMgdGhpcyBzeXN0ZW0g ZG9lc24ndCBzdXBwb3J0Cj4gPiA+IC0JICogcnVudGltZSBQTS4gKi8KPiA+ID4gKwkvKgo+ID4g PiArCSAqIFNhdmUgcHJldmlvdXMgdmFsdWVzIHRvIGJlIGFibGUgdG8gIGluc3RhbGwgZXhpdCBo YW5kbGVyIHRvIHJlc3RvcmUKPiA+ID4gKwkgKiB0aGVtIG9uIHRlc3QgZXhpdC4KPiA+ID4gKwkg Ki8KPiA+ID4gKwlzaXplID0gcmVhZChmZCwgX19pZ3RfcG1fcnVudGltZV9hdXRvc3VzcGVuZCwK PiA+ID4gKwkJICAgIHNpemVvZihfX2lndF9wbV9ydW50aW1lX2F1dG9zdXNwZW5kKSk7Cj4gPiA+ ICsKPiA+ID4gKwkvKgo+ID4gPiArCSAqIElmIHdlIGZhaWwgdG8gcmVhZCBmcm9tIHRoZSBmaWxl LCBpdCBtZWFucyB0aGlzIHN5c3RlbSBkb2Vzbid0Cj4gPiA+ICsJICogc3VwcG9ydCBydW50aW1l IFBNLgo+ID4gPiArCSAqLwo+ID4gPiArCWlmIChzaXplIDw9IDApIHsKPiA+ID4gKwkJY2xvc2Uo ZmQpOwo+ID4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICAgCXNp emUgPSB3cml0ZShmZCwgIjBcbiIsIDIpOwo+ID4gPiAgIAljbG9zZShmZCk7Cj4gPiA+IEBAIC0y NzQsMTAgKzM3NiwyMCBAQCBib29sIGlndF9zZXR1cF9ydW50aW1lX3BtKHZvaWQpCj4gPiA+ICAg CWlmIChzaXplICE9IDIpCj4gPiA+ICAgCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICsJc3RyY2hvbXAo X19pZ3RfcG1fcnVudGltZV9hdXRvc3VzcGVuZCk7Cj4gPiA+ICsJaWd0X2luc3RhbGxfZXhpdF9o YW5kbGVyKF9faWd0X3BtX3J1bnRpbWVfZXhpdF9oYW5kbGVyKTsKPiA+ID4gKwo+ID4gPiAgIAkv KiBXZSBrbm93IHdlIHN1cHBvcnQgcnVudGltZSBQTSwgbGV0J3MgdHJ5IHRvIGVuYWJsZSBpdCBu b3cuICovCj4gPiA+ICAgCWZkID0gb3BlbihQT1dFUl9ESVIgIi9jb250cm9sIiwgT19SRFdSKTsK PiA+ID4gICAJaWd0X2Fzc2VydF9mKGZkID49IDAsICJDYW4ndCBvcGVuICIgUE9XRVJfRElSICIv Y29udHJvbFxuIik7Cj4gPiA+ICsJaWd0X2Fzc2VydChyZWFkKGZkLCBfX2lndF9wbV9ydW50aW1l X2NvbnRyb2wsCj4gPiA+ICsJCQlzaXplb2YoX19pZ3RfcG1fcnVudGltZV9jb250cm9sKSkgPiAw KTsKPiA+ID4gKwlzdHJjaG9tcChfX2lndF9wbV9ydW50aW1lX2NvbnRyb2wpOwo+ID4gPiArCj4g PiA+ICsJaWd0X2RlYnVnKCJTYXZlZCBydW50aW1lIHBvd2VyIG1hbmFnZW1lbnQgYXMgJyVzJyBh bmQgJyVzJ1xuIiwKPiA+ID4gKwkJICBfX2lndF9wbV9ydW50aW1lX2F1dG9zdXNwZW5kLCBfX2ln dF9wbV9ydW50aW1lX2NvbnRyb2wpOwo+ID4gPiArCj4gPiA+ICAgCXNpemUgPSB3cml0ZShmZCwg ImF1dG9cbiIsIDUpOwo+ID4gPiAgIAlpZ3RfYXNzZXJ0KHNpemUgPT0gNSk7Cj4gPiA+IC0tIAo+ ID4gPiAyLjE0LjEKPiA+ID4gCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4gSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiA+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2lndC1kZXYK