From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Kocialkowski Subject: Re: [PATCH i-g-t v2 7/7] Make igtrc configuration common, with configurable suspend/resume delay Date: Wed, 28 Jun 2017 10:27:56 +0300 Message-ID: <1498634876.1392.1.camel@linux.intel.com> References: <20170627105311.28975-1-paul.kocialkowski@linux.intel.com> <20170627105311.28975-7-paul.kocialkowski@linux.intel.com> <1498597901.14811.1.camel@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id C3B4D6E4F1 for ; Wed, 28 Jun 2017 07:35:09 +0000 (UTC) In-Reply-To: <1498597901.14811.1.camel@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lyude Paul , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAyMDE3LTA2LTI3IGF0IDE3OjExIC0wNDAwLCBMeXVkZSBQYXVsIHdyb3RlOgo+IAo+ IAo+IE9uIFR1ZSwgMjAxNy0wNi0yNyBhdCAxMzo1MyArMDMwMCwgUGF1bCBLb2NpYWxrb3dza2kg d3JvdGU6Cj4gPiBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgY29uZmlndXJhYmxlIHN1c3BlbmQvcmVz dW1lIGRlbGF5IGFuZCB0YWtlcyB0aGUKPiA+IG9jY2FzaW9uIHRvIG1vdmUgaWd0cmMgY29uZmln dWF0aW9uIGZyb20gaWd0X2NoYW1lbGl1bSB0byBpZ3RfY29yZS4KPiA+IFRoaXMgd2F5LCBzdXNw ZW5kL3Jlc3VtZSBkZWxheSBjb25maWd1cmF0aW9uIGNhbiBiZSB1c2VkIGZvciBhbGwKPiA+IHRl c3RzLgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBQYXVsIEtvY2lhbGtvd3NraSA8cGF1bC5rb2Np YWxrb3dza2lAbGludXguaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgbGliL01ha2VmaWxlLmFtICAg ICB8ICAyICsrCj4gPiAgbGliL2lndF9hdXguYyAgICAgICB8IDI3ICsrKysrKysrKysrKysrKysr Ky0tLS0KPiA+ICBsaWIvaWd0X2F1eC5oICAgICAgIHwgIDEgKwo+ID4gIGxpYi9pZ3RfY2hhbWVs aXVtLmMgfCA0OSArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiAg bGliL2lndF9jb3JlLmMgICAgICB8IDY0Cj4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gIGxpYi9pZ3RfY29yZS5oICAgICAgfCAgMiAr Kwo+ID4gIHRlc3RzL01ha2VmaWxlLmFtICAgfCAgNCArKy0tCj4gPiAgdGVzdHMvY2hhbWVsaXVt LmMgICB8IDExICsrKysrLS0tLQo+ID4gIHRvb2xzL01ha2VmaWxlLmFtICAgfCAgNCArKy0tCj4g PiAgOSBmaWxlcyBjaGFuZ2VkLCAxMTIgaW5zZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCj4g PiAKPiA+IGRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuYW0gYi9saWIvTWFrZWZpbGUuYW0KPiA+ IGluZGV4IDkxZTcyYzQ0Li5kNGY0MTEyOCAxMDA2NDQKPiA+IC0tLSBhL2xpYi9NYWtlZmlsZS5h bQo+ID4gKysrIGIvbGliL01ha2VmaWxlLmFtCj4gPiBAQCAtNDEsNiArNDEsNyBAQCBBTV9DRkxB R1MgPSBcCj4gPiAgCSAgICAkKFhNTFJQQ19DRkxBR1MpIFwKPiA+ICAJICAgICQoTElCVURFVl9D RkxBR1MpIFwKPiA+ICAJICAgICQoUElYTUFOX0NGTEFHUykgXAo+ID4gKwkgICAgJChHTElCX0NG TEFHUykgXAo+ID4gIAkgICAgJChWQUxHUklORF9DRkxBR1MpIFwKPiA+ICAJICAgIC1ESUdUX1NS Q0RJUj1cIiIkKGFic190b3Bfc3JjZGlyKS90ZXN0cyJcIiBcCj4gPiAgCSAgICAtRElHVF9EQVRB RElSPVwiIiQocGtnZGF0YWRpcikiXCIgXAo+ID4gQEAgLTYxLDUgKzYyLDYgQEAgbGliaW50ZWxf dG9vbHNfbGFfTElCQUREID0gXAo+ID4gIAkkKFhNTFJQQ19MSUJTKSBcCj4gPiAgCSQoTElCVURF Vl9MSUJTKSBcCj4gPiAgCSQoUElYTUFOX0xJQlMpIFwKPiA+ICsJJChHTElCX0xJQlMpIFwKPiA+ ICAJLWxtCj4gPiAgCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9hdXguYyBiL2xpYi9pZ3RfYXV4 LmMKPiA+IGluZGV4IDg4MmRiYTA2Li44NmEyMTNjMiAxMDA2NDQKPiA+IC0tLSBhL2xpYi9pZ3Rf YXV4LmMKPiA+ICsrKyBiL2xpYi9pZ3RfYXV4LmMKPiA+IEBAIC03NDgsMTAgKzc0OCw3IEBAIHN0 YXRpYyB2b2lkIHN1c3BlbmRfdmlhX3J0Y3dha2UoZW51bQo+ID4gaWd0X3N1c3BlbmRfc3RhdGUg c3RhdGUpCj4gPiAgCj4gPiAgCWlndF9hc3NlcnQoc3RhdGUgPCBTVVNQRU5EX1NUQVRFX05VTSk7 Cj4gPiAgCj4gPiAtCWlmIChhdXRvcmVzdW1lX2RlbGF5KQo+ID4gLQkJZGVsYXkgPSBhdXRvcmVz dW1lX2RlbGF5Owo+ID4gLQllbHNlCj4gPiAtCQlkZWxheSA9IHN0YXRlID09IFNVU1BFTkRfU1RB VEVfRElTSyA/IDMwIDogMTU7Cj4gPiArCWRlbGF5ID0gaWd0X2dldF9hdXRvcmVzdW1lX2RlbGF5 KHN0YXRlKTsKPiA+ICAKPiA+ICAJLyoKPiA+ICAJICogU2tpcCBpZiBydGN3YWtlIHdvdWxkIGZh aWwgZm9yIGEgcmVhc29uIG5vdCByZWxhdGVkIHRvCj4gPiB0aGUga2VybmVsJ3MKPiA+IEBAIC04 OTksNiArODk2LDI4IEBAIHZvaWQgaWd0X3NldF9hdXRvcmVzdW1lX2RlbGF5KGludCBkZWxheV9z ZWNzKQo+ID4gIH0KPiA+ICAKPiA+ICAvKioKPiA+ICsgKiBpZ3RfZ2V0X2F1dG9yZXN1bWVfZGVs YXk6Cj4gPiArICogQHN0YXRlOiBhbiAjaWd0X3N1c3BlbmRfc3RhdGUsIHRoZSB0YXJnZXQgc3Vz cGVuZCBzdGF0ZQo+ID4gKyAqCj4gPiArICogUmV0cmlldmVzIGhvdyBsb25nIHdlIHdhaXQgdG8g cmVzdW1lIHRoZSBzeXN0ZW0gYWZ0ZXIgc3VzcGVuZGluZwo+ID4gaXQuCj4gPiArICogVGhpcyBj YW4gZWl0aGVyIGJlIHNldCB0aHJvdWdoIGlndF9zZXRfYXV0b3Jlc3VtZV9kZWxheSBvciBiZSBh Cj4gPiBkZWZhdWx0Cj4gPiArICogdmFsdWUgdGhhdCBkZXBlbmRzIG9uIHRoZSBzdXNwZW5kIHN0 YXRlLgo+ID4gKyAqCj4gPiArICogUmV0dXJuczogVGhlIGF1dG9yZXN1bWUgZGVsYXksIGluIHNl Y29uZHMuCj4gPiArICovCj4gPiAraW50IGlndF9nZXRfYXV0b3Jlc3VtZV9kZWxheShlbnVtIGln dF9zdXNwZW5kX3N0YXRlIHN0YXRlKQo+ID4gK3sKPiA+ICsJaW50IGRlbGF5Owo+ID4gKwo+ID4g KwlpZiAoYXV0b3Jlc3VtZV9kZWxheSkKPiA+ICsJCWRlbGF5ID0gYXV0b3Jlc3VtZV9kZWxheTsK PiA+ICsJZWxzZQo+ID4gKwkJZGVsYXkgPSBzdGF0ZSA9PSBTVVNQRU5EX1NUQVRFX0RJU0sgPyAz MCA6IDE1Owo+ID4gKwo+ID4gKwlyZXR1cm4gZGVsYXk7Cj4gPiArfQo+ID4gKwo+ID4gKy8qKgo+ ID4gICAqIGlndF9kcm9wX3Jvb3Q6Cj4gPiAgICoKPiA+ICAgKiBEcm9wIHJvb3QgcHJpdmlsZWdl cyBhbmQgbWFrZSBzdXJlIGl0IGFjdHVhbGx5IHdvcmtlZC4gVXNlZnVsIGZvcgo+ID4gdGVzdHMK PiA+IGRpZmYgLS1naXQgYS9saWIvaWd0X2F1eC5oIGIvbGliL2lndF9hdXguaAo+ID4gaW5kZXgg NTRiOTcxNjQuLjQ5OWExNjc5IDEwMDY0NAo+ID4gLS0tIGEvbGliL2lndF9hdXguaAo+ID4gKysr IGIvbGliL2lndF9hdXguaAo+ID4gQEAgLTE5Miw2ICsxOTIsNyBAQCBlbnVtIGlndF9zdXNwZW5k X3Rlc3Qgewo+ID4gIHZvaWQgaWd0X3N5c3RlbV9zdXNwZW5kX2F1dG9yZXN1bWUoZW51bSBpZ3Rf c3VzcGVuZF9zdGF0ZSBzdGF0ZSwKPiA+ICAJCQkJICAgZW51bSBpZ3Rfc3VzcGVuZF90ZXN0IHRl c3QpOwo+ID4gIHZvaWQgaWd0X3NldF9hdXRvcmVzdW1lX2RlbGF5KGludCBkZWxheV9zZWNzKTsK PiA+ICtpbnQgaWd0X2dldF9hdXRvcmVzdW1lX2RlbGF5KGVudW0gaWd0X3N1c3BlbmRfc3RhdGUg c3RhdGUpOwo+ID4gIAo+ID4gIC8qIGRyb3BwaW5nIHByaXZpbGVkZ2VzICovCj4gPiAgdm9pZCBp Z3RfZHJvcF9yb290KHZvaWQpOwo+ID4gZGlmZiAtLWdpdCBhL2xpYi9pZ3RfY2hhbWVsaXVtLmMg Yi9saWIvaWd0X2NoYW1lbGl1bS5jCj4gPiBpbmRleCAyMjVmOThjMy4uMzQ1YzQ0ZDYgMTAwNjQ0 Cj4gPiAtLS0gYS9saWIvaWd0X2NoYW1lbGl1bS5jCj4gPiArKysgYi9saWIvaWd0X2NoYW1lbGl1 bS5jCj4gPiBAQCAtNTEsOCArNTEsOCBAQAo+ID4gICAqIFtvbiB0aGUgQ2hyb21lT1MgcHJvamVj dCBwYWdlXShodHRwczovL3d3dy5jaHJvbWl1bS5vcmcvY2hyb21pdW0tCj4gPiBvcy90ZXN0aW5n L2NoYW1lbGl1bSkuCj4gPiAgICoKPiA+ICAgKiBJbiBvcmRlciB0byBydW4gdGVzdHMgdXNpbmcg dGhlIENoYW1lbGl1bSwgYSB2YWxpZCBjb25maWd1cmF0aW9uCj4gPiBmaWxlIG11c3QgYmUKPiA+ IC0gKiBwcmVzZW50LiAgVGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBhIG5vcm1hbCBHbGliIGtl eWZpbGUKPiA+IChzaW1pbGFyIHRvIFdpbmRvd3MKPiA+IC0gKiBJTkkpIHN0cnVjdHVyZWQgbGlr ZSBzbzoKPiA+ICsgKiBwcmVzZW50LiBJdCBtdXN0IGNvbnRhaW4gQ2hhbWVsaXVtLXNwZWNpZmlj IGtleXMgYXMgc2hvd24gd2l0aAo+ID4gdGhlIGZvbGxvd2luZwo+ID4gKyAqIGV4YW1wbGU6Cj4g PiAgICoKPiA+ICAgKiB8WzwhLS0gbGFuZ3VhZ2U9InBsYWluIiAtLT4KPiA+ICAgKglbQ2hhbWVs aXVtXQo+ID4gQEAgLTcyLDggKzcyLDYgQEAKPiA+ICAgKglDaGFtZWxpdW1Qb3J0SUQ9Mwo+ID4g ICAqIF18Cj4gPiAgICoKPiA+IC0gKiBCeSBkZWZhdWx0LCB0aGlzIGZpbGUgaXMgZXhwZWN0ZWQg dG8gZXhpc3QgaW4gfi8uaWd0cmMgLiBUaGUKPiA+IGRpcmVjdG9yeSBmb3IKPiA+IC0gKiB0aGlz IGNhbiBiZSBvdmVycmlkZW4gYnkgc2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKPiA+ ICVJR1RfQ09ORklHX1BBVEguCj4gPiAgICovCj4gPiAgCj4gPiAgc3RydWN0IGNoYW1lbGl1bV9l ZGlkIHsKPiA+IEBAIC0xMDM0LDcgKzEwMzIsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50Cj4gPiBj aGFtZWxpdW1fZ2V0X3BvcnRfdHlwZShzdHJ1Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW0sCj4gPiAg fQo+ID4gIAo+ID4gIHN0YXRpYyBib29sIGNoYW1lbGl1bV9yZWFkX3BvcnRfbWFwcGluZ3Moc3Ry dWN0IGNoYW1lbGl1bQo+ID4gKmNoYW1lbGl1bSwKPiA+IC0JCQkJCSBpbnQgZHJtX2ZkLCBHS2V5 RmlsZQo+ID4gKmtleV9maWxlKQo+ID4gKwkJCQkJIGludCBkcm1fZmQpCj4gPiAgewo+ID4gIAlk cm1Nb2RlUmVzICpyZXM7Cj4gPiAgCWRybU1vZGVDb25uZWN0b3IgKmNvbm5lY3RvcjsKPiA+IEBA IC0xMDQ1LDcgKzEwNDMsNyBAQCBzdGF0aWMgYm9vbCBjaGFtZWxpdW1fcmVhZF9wb3J0X21hcHBp bmdzKHN0cnVjdAo+ID4gY2hhbWVsaXVtICpjaGFtZWxpdW0sCj4gPiAgCWludCBwb3J0X2ksIGks IGo7Cj4gPiAgCWJvb2wgcmV0ID0gdHJ1ZTsKPiA+ICAKPiA+IC0JZ3JvdXBfbGlzdCA9IGdfa2V5 X2ZpbGVfZ2V0X2dyb3VwcyhrZXlfZmlsZSwgTlVMTCk7Cj4gPiArCWdyb3VwX2xpc3QgPSBnX2tl eV9maWxlX2dldF9ncm91cHMoaWd0X2tleV9maWxlLCBOVUxMKTsKPiA+ICAKPiA+ICAJLyogQ291 bnQgaG93IG1hbnkgY29ubmVjdG9yIG1hcHBpbmdzIGFyZSBzcGVjaWZpZWQgaW4gdGhlCj4gPiBj b25maWcgKi8KPiA+ICAJZm9yIChpID0gMDsgZ3JvdXBfbGlzdFtpXSAhPSBOVUxMOyBpKyspIHsK PiA+IEBAIC0xMDY4LDcgKzEwNjYsNyBAQCBzdGF0aWMgYm9vbCBjaGFtZWxpdW1fcmVhZF9wb3J0 X21hcHBpbmdzKHN0cnVjdAo+ID4gY2hhbWVsaXVtICpjaGFtZWxpdW0sCj4gPiAgCj4gPiAgCQlw b3J0ID0gJmNoYW1lbGl1bS0+cG9ydHNbcG9ydF9pKytdOwo+ID4gIAkJcG9ydC0+bmFtZSA9IHN0 cmR1cChtYXBfbmFtZSk7Cj4gPiAtCQlwb3J0LT5pZCA9IGdfa2V5X2ZpbGVfZ2V0X2ludGVnZXIo a2V5X2ZpbGUsIGdyb3VwLAo+ID4gKwkJcG9ydC0+aWQgPSBnX2tleV9maWxlX2dldF9pbnRlZ2Vy KGlndF9rZXlfZmlsZSwKPiA+IGdyb3VwLAo+ID4gIAkJCQkJCSAgIkNoYW1lbGl1bVBvcnRJRCIs Cj4gPiAgCQkJCQkJICAmZXJyb3IpOwo+ID4gIAkJaWYgKCFwb3J0LT5pZCkgewo+ID4gQEAgLTEx MjUsNDcgKzExMjMsMjIgQEAgb3V0Ogo+ID4gIAo+ID4gIHN0YXRpYyBib29sIGNoYW1lbGl1bV9y ZWFkX2NvbmZpZyhzdHJ1Y3QgY2hhbWVsaXVtICpjaGFtZWxpdW0sIGludAo+ID4gZHJtX2ZkKQo+ ID4gIHsKPiA+IC0JR0tleUZpbGUgKmtleV9maWxlID0gZ19rZXlfZmlsZV9uZXcoKTsKPiA+ICAJ R0Vycm9yICplcnJvciA9IE5VTEw7Cj4gPiAtCWNoYXIgKmtleV9maWxlX2xvYywgKmtleV9maWxl X2VudjsKPiA+IC0JaW50IHJjOwo+ID4gLQlib29sIHJldCA9IHRydWU7Cj4gPiAgCj4gPiAtCWtl eV9maWxlX2VudiA9IGdldGVudigiSUdUX0NPTkZJR19QQVRIIik7Cj4gPiAtCWlmIChrZXlfZmls ZV9lbnYpIHsKPiA+IC0JCWtleV9maWxlX2xvYyA9IGtleV9maWxlX2VudjsKPiA+IC0JfSBlbHNl IHsKPiA+IC0JCWtleV9maWxlX2xvYyA9IG1hbGxvYygxMDApOwo+ID4gLQkJc25wcmludGYoa2V5 X2ZpbGVfbG9jLCAxMDAsICIlcy8uaWd0cmMiLAo+ID4gZ19nZXRfaG9tZV9kaXIoKSk7Cj4gPiAr CWlmICghaWd0X2tleV9maWxlKSB7Cj4gPiArCQlpZ3Rfd2FybigiTm8gY29uZmlndXJhdGlvbiBm aWxlIGF2YWlsYWJsZSBmb3IKPiA+IGNoYW1lbGl1bVxuIik7Cj4gPiArCQlyZXR1cm4gZmFsc2U7 Cj4gPiAgCX0KPiA+ICAKPiA+IC0JcmMgPSBnX2tleV9maWxlX2xvYWRfZnJvbV9maWxlKGtleV9m aWxlLCBrZXlfZmlsZV9sb2MsCj4gPiAtCQkJCSAgICAgICBHX0tFWV9GSUxFX05PTkUsICZlcnJv cik7Cj4gPiAtCWlmICghcmMpIHsKPiA+IC0JCWlndF93YXJuKCJGYWlsZWQgdG8gcmVhZCBjaGFt ZWxpdW0gY29uZmlndXJhdGlvbgo+ID4gZmlsZTogJXNcbiIsCj4gPiAtCQkJIGVycm9yLT5tZXNz YWdlKTsKPiA+IC0JCXJldCA9IGZhbHNlOwo+ID4gLQkJZ290byBvdXQ7Cj4gPiAtCX0KPiA+IC0K PiA+IC0JY2hhbWVsaXVtLT51cmwgPSBnX2tleV9maWxlX2dldF9zdHJpbmcoa2V5X2ZpbGUsCj4g PiAiQ2hhbWVsaXVtIiwgIlVSTCIsCj4gPiArCWNoYW1lbGl1bS0+dXJsID0gZ19rZXlfZmlsZV9n ZXRfc3RyaW5nKGlndF9rZXlfZmlsZSwKPiA+ICJDaGFtZWxpdW0iLCAiVVJMIiwKPiA+ICAJCQkJ CSAgICAgICAmZXJyb3IpOwo+ID4gIAlpZiAoIWNoYW1lbGl1bS0+dXJsKSB7Cj4gPiAgCQlpZ3Rf d2FybigiQ291bGRuJ3QgcmVhZCBjaGFtZWxpdW0gVVJMIGZyb20gY29uZmlnCj4gPiBmaWxlOiAl c1xuIiwKPiA+ICAJCQkgZXJyb3ItPm1lc3NhZ2UpOwo+ID4gLQkJcmV0ID0gZmFsc2U7Cj4gPiAt CQlnb3RvIG91dDsKPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ICAJfQo+ID4gIAo+ID4gLQlyZXQg PSBjaGFtZWxpdW1fcmVhZF9wb3J0X21hcHBpbmdzKGNoYW1lbGl1bSwgZHJtX2ZkLAo+ID4ga2V5 X2ZpbGUpOwo+ID4gLQo+ID4gLW91dDoKPiA+IC0JZ19rZXlfZmlsZV9mcmVlKGtleV9maWxlKTsK PiA+IC0KPiA+IC0JaWYgKCFrZXlfZmlsZV9lbnYpCj4gPiAtCQlmcmVlKGtleV9maWxlX2xvYyk7 Cj4gPiAtCj4gPiAtCXJldHVybiByZXQ7Cj4gPiArCXJldHVybiBjaGFtZWxpdW1fcmVhZF9wb3J0 X21hcHBpbmdzKGNoYW1lbGl1bSwgZHJtX2ZkKTsKPiA+ICB9Cj4gPiAgCj4gPiAgLyoqCj4gPiBk aWZmIC0tZ2l0IGEvbGliL2lndF9jb3JlLmMgYi9saWIvaWd0X2NvcmUuYwo+ID4gaW5kZXggOWE1 ZWQ0MGUuLmIzZDFjNjA4IDEwMDY0NAo+ID4gLS0tIGEvbGliL2lndF9jb3JlLmMKPiA+ICsrKyBi L2xpYi9pZ3RfY29yZS5jCj4gPiBAQCAtNTcsNiArNTcsNyBAQAo+ID4gICNpbmNsdWRlIDxsaW1p dHMuaD4KPiA+ICAjaW5jbHVkZSA8bG9jYWxlLmg+Cj4gPiAgI2luY2x1ZGUgPHV3aWxkbWF0L3V3 aWxkbWF0Lmg+Cj4gPiArI2luY2x1ZGUgPGdsaWIuaD4KPiA+ICAKPiA+ICAjaW5jbHVkZSAiZHJt dGVzdC5oIgo+ID4gICNpbmNsdWRlICJpbnRlbF9jaGlwc2V0LmgiCj4gPiBAQCAtMjI1LDYgKzIy NiwyMyBAQAo+ID4gICAqIC0gJ2Jhc2ljKixhZHZhbmNlZConIG1hdGNoIGFueSBzdWJ0ZXN0IHN0 YXJ0aW5nIGJhc2ljIG9yIGFkdmFuY2VkCj4gPiAgICogLSAnKiwhYmFzaWMqJyBtYXRjaCBhbnkg c3VidGVzdCBub3Qgc3RhcnRpbmcgYmFzaWMKPiA+ICAgKiAtICdiYXNpYyosIWJhc2ljLXJlbmRl cionIG1hdGNoIGFueSBzdWJ0ZXN0IHN0YXJ0aW5nIGJhc2ljIGJ1dAo+ID4gbm90IHN0YXJ0aW5n IGJhc2ljLXJlbmRlcgo+ID4gKyAqCj4gPiArICogIyBDb25maWd1cmF0aW9uCj4gPiArICoKPiA+ ICsgKiBTb21lIG9mIElHVCdzIGJlaGF2aW9yIGNhbiBiZSBjb25maWd1cmVkIHRocm91Z2ggYSBj b25maWd1cmF0aW9uCj4gPiBmaWxlLgo+ID4gKyAqIEJ5IGRlZmF1bHQsIHRoaXMgZmlsZSBpcyBl eHBlY3RlZCB0byBleGlzdCBpbiB+Ly5pZ3RyYyAuIFRoZQo+ID4gZGlyZWN0b3J5IGZvcgo+ID4g KyAqIHRoaXMgY2FuIGJlIG92ZXJyaWRlbiBieSBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJp YWJsZQo+ID4gJUlHVF9DT05GSUdfUEFUSC4KPiA+ICsgKiBBbiBleGFtcGxlIGNvbmZpZ3VyYXRp b24gZm9sbG93czoKPiA+ICsgKgo+ID4gKyAqIHxbPCEtLSBsYW5ndWFnZT0icGxhaW4iIC0tPgo+ ID4gKyAqCSMgVGhlIGZvbGxvd2luZyBzZWN0aW9uIGlzIHVzZWQgZm9yIGNvbmZpZ3VyaW5nIHRo ZSBEZXZpY2UKPiA+IFVuZGVyIFRlc3QuCj4gPiArICoJIyBJdCBpcyBub3QgbWFuZGF0b3J5IGFu ZCBhbGxvd3Mgb3ZlcnJpZGluZyBkZWZhdWx0Cj4gPiB2YWx1ZXMuCj4gPiArICoJW0RVVF0KPiA+ ICsgKglTdXNwZW5kUmVzdW1lRGVsYXk9MTAKPiA+ICsgKiBdfAo+ID4gKyAqCj4gPiArICogU29t ZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgbWF5IGJlIHVzZWQgYnkgc3BlY2lmaWMg cGFydHMKPiA+IG9mIElHVCwKPiA+ICsgKiBzdWNoIGFzIHRob3NlIHJlbGF0ZWQgdG8gQ2hhbWVs aXVtIHN1cHBvcnQuCj4gPiAgICovCj4gPiAgCj4gPiAgc3RhdGljIHVuc2lnbmVkIGludCBleGl0 X2hhbmRsZXJfY291bnQ7Cj4gPiBAQCAtMjcxLDYgKzI4OSw4IEBAIHN0YXRpYyBzdHJ1Y3Qgewo+ ID4gIH0gbG9nX2J1ZmZlcjsKPiA+ICBzdGF0aWMgcHRocmVhZF9tdXRleF90IGxvZ19idWZmZXJf bXV0ZXggPSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSOwo+ID4gIAo+ID4gK0dLZXlGaWxlICpp Z3Rfa2V5X2ZpbGU7Cj4gPiArCj4gPiAgY29uc3QgY2hhciAqaWd0X3Rlc3RfbmFtZSh2b2lkKQo+ ID4gIHsKPiA+ICAJcmV0dXJuIGNvbW1hbmRfc3RyOwo+ID4gQEAgLTU5Myw2ICs2MTMsMjAgQEAg c3RhdGljIHZvaWQgb29tX2FkanVzdF9mb3JfZG9vbSh2b2lkKQo+ID4gIAo+ID4gIH0KPiA+ICAK PiA+ICtzdGF0aWMgdm9pZCBjb25maWdfcGFyc2Uodm9pZCkKPiA+ICt7Cj4gPiArCUdFcnJvciAq ZXJyb3IgPSBOVUxMOwo+ID4gKwlpbnQgcmM7Cj4gPiArCj4gPiArCWlmICghaWd0X2tleV9maWxl KQo+ID4gKwkJcmV0dXJuOwo+ID4gKwo+ID4gKwlyYyA9IGdfa2V5X2ZpbGVfZ2V0X2ludGVnZXIo aWd0X2tleV9maWxlLCAiRFVUIiwKPiA+ICJTdXNwZW5kUmVzdW1lRGVsYXkiLAo+ID4gKwkJCQkg ICAgJmVycm9yKTsKPiAKPiBXZSBzaG91bGQgcHJvYmFibHkgYXQgbGVhc3QgdGhyb3cgYW4gZXJy b3IgaWYgdGhlIGtleSB2YWx1ZSBoYXBwZW5zIHRvCj4gYmUgdGhlcmUsIGJ1dCB0aGUgdmFsdWUg aXMgaW52YWxpZCAoc3VjaCBhcyBzb21lb25lIHNwZWNpZnlpbmcgImZvbyIgYXMKPiB0aGUgU3Vz cGVuZFJlc3VtZURlbGF5IHZhbHVlKS4gTWF5YmUgYWRkIGEgZnVuY3Rpb24gbGlrZQo+IAo+IHN0 YXRpYyBpbnQKPiBpZ3RfY29uZmlnX2dldF9pbnRlZ2VyKGNvbnN0IGNoYXIgKnNlY3Rpb24sIGNv bnN0IGNoYXIgKmtleV9uYW1lLCBpbnQgKnZhbHVlLAo+IGludCBkZWZhdWx0KQo+IAo+IFRoYXQg Y2FsbHMgdGhlIGFwcHJvcHJpYXRlIGdsaWIgZnVuY3Rpb25zLCBhbmQgZmFpbHMgdGhlIGN1cnJl bnQgdGVzdAo+IGlmIGFueSBpbnZhbGlkIG5vbi1kZWZhdWx0IHZhbHVlcyBhcmUgZ2l2ZW4KCkZh aXIgZW5vdWdoLCBidXQgaG93IGFib3V0IHNpbXBseSB0ZXN0aW5nIGVycm9yID09CkdfS0VZX0ZJ TEVfRVJST1JfSU5WQUxJRF9WQUxVRSAobWVhbmluZyB0aGUgdmFsdWUgd2FzIGRlZmluZWQgYnV0 IGNvdWxkIG5vdCBiZQpjb3JyZWN0bHkgaW50ZXJwcmV0ZWQpIGlubGluZT8gSXQgc2VlbXMgYSBi aXQgb3ZlcmtpbGwgdG8gYWRkIGEgc3BlY2lmaWMgaGVscGVyCmZ1bmN0aW9uIGZvciB0aGF0LgoK PiA+ICsJaWYgKHJjICE9IDApCj4gPiArCQlpZ3Rfc2V0X2F1dG9yZXN1bWVfZGVsYXkocmMpOwo+ ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgaW50IGNvbW1vbl9pbml0KGludCAqYXJnYywgY2hhciAq KmFyZ3YsCj4gPiAgCQkgICAgICAgY29uc3QgY2hhciAqZXh0cmFfc2hvcnRfb3B0cywKPiA+ICAJ CSAgICAgICBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpleHRyYV9sb25nX29wdHMsCj4gPiBAQCAtNjE2 LDYgKzY1MCw5IEBAIHN0YXRpYyBpbnQgY29tbW9uX2luaXQoaW50ICphcmdjLCBjaGFyICoqYXJn diwKPiA+ICAJaW50IGV4dHJhX29wdF9jb3VudDsKPiA+ICAJaW50IGFsbF9vcHRfY291bnQ7Cj4g PiAgCWludCByZXQgPSAwOwo+ID4gKwljaGFyICprZXlfZmlsZV9sb2MgPSBOVUxMOwo+ID4gKwlj aGFyICprZXlfZmlsZV9lbnYgPSBOVUxMOwo+ID4gKwlHRXJyb3IgKmVycm9yID0gTlVMTDsKPiA+ ICAJY29uc3QgY2hhciAqZW52Owo+ID4gIAo+ID4gIAlpZiAoIWlzYXR0eShTVERPVVRfRklMRU5P KSB8fCBnZXRlbnYoIklHVF9QTEFJTl9PVVRQVVQiKSkKPiA+IEBAIC03MzcsNyArNzc0LDMxIEBA IHN0YXRpYyBpbnQgY29tbW9uX2luaXQoaW50ICphcmdjLCBjaGFyICoqYXJndiwKPiA+ICAJCX0K PiA+ICAJfQo+ID4gIAo+ID4gKwlrZXlfZmlsZV9lbnYgPSBnZXRlbnYoIklHVF9DT05GSUdfUEFU SCIpOwo+ID4gKwlpZiAoa2V5X2ZpbGVfZW52KSB7Cj4gPiArCQlrZXlfZmlsZV9sb2MgPSBrZXlf ZmlsZV9lbnY7Cj4gPiArCX0gZWxzZSB7Cj4gPiArCQlrZXlfZmlsZV9sb2MgPSBtYWxsb2MoMTAw KTsKPiA+ICsJCXNucHJpbnRmKGtleV9maWxlX2xvYywgMTAwLCAiJXMvLmlndHJjIiwKPiA+IGdf Z2V0X2hvbWVfZGlyKCkpOwo+ID4gKwl9Cj4gPiArCj4gPiArCWlndF9rZXlfZmlsZSA9IGdfa2V5 X2ZpbGVfbmV3KCk7Cj4gPiArCXJldCA9IGdfa2V5X2ZpbGVfbG9hZF9mcm9tX2ZpbGUoaWd0X2tl eV9maWxlLCBrZXlfZmlsZV9sb2MsCj4gPiArCQkJCQlHX0tFWV9GSUxFX05PTkUsICZlcnJvcik7 Cj4gPiArCWlmICghcmV0KSB7Cj4gPiArCQlnX2tleV9maWxlX2ZyZWUoaWd0X2tleV9maWxlKTsK PiA+ICsJCWlndF9rZXlfZmlsZSA9IE5VTEw7Cj4gPiArCQlyZXQgPSAtMTsKPiA+ICsKPiA+ICsJ CWdvdG8gb3V0Owo+ID4gKwl9Cj4gPiArCj4gPiArCWNvbmZpZ19wYXJzZSgpOwo+ID4gKwo+ID4g IG91dDoKPiA+ICsJaWYgKCFrZXlfZmlsZV9lbnYgJiYga2V5X2ZpbGVfbG9jKQo+ID4gKwkJZnJl ZShrZXlfZmlsZV9sb2MpOwo+ID4gKwo+ID4gIAlmcmVlKHNob3J0X29wdHMpOwo+ID4gIAlmcmVl KGNvbWJpbmVkX29wdHMpOwo+ID4gIAo+ID4gQEAgLTEzNDUsNiArMTQwNiw5IEBAIHZvaWQgaWd0 X2V4aXQodm9pZCkKPiA+ICB7Cj4gPiAgCWlndF9leGl0X2NhbGxlZCA9IHRydWU7Cj4gPiAgCj4g PiArCWlmIChpZ3Rfa2V5X2ZpbGUpCj4gPiArCQlnX2tleV9maWxlX2ZyZWUoaWd0X2tleV9maWxl KTsKPiA+ICsKPiA+ICAJaWYgKHJ1bl9zaW5nbGVfc3VidGVzdCAmJiAhcnVuX3NpbmdsZV9zdWJ0 ZXN0X2ZvdW5kKSB7Cj4gPiAgCQlpZ3Rfd2FybigiVW5rbm93biBzdWJ0ZXN0OiAlc1xuIiwKPiA+ IHJ1bl9zaW5nbGVfc3VidGVzdCk7Cj4gPiAgCQlleGl0KElHVF9FWElUX0lOVkFMSUQpOwo+ID4g ZGlmZiAtLWdpdCBhL2xpYi9pZ3RfY29yZS5oIGIvbGliL2lndF9jb3JlLmgKPiA+IGluZGV4IGEy ZWQ5NzIwLi4wNzM5Y2E4MyAxMDA2NDQKPiA+IC0tLSBhL2xpYi9pZ3RfY29yZS5oCj4gPiArKysg Yi9saWIvaWd0X2NvcmUuaAo+ID4gQEAgLTQwLDYgKzQwLDcgQEAKPiA+ICAjaW5jbHVkZSA8c3Rk YXJnLmg+Cj4gPiAgI2luY2x1ZGUgPGdldG9wdC5oPgo+ID4gICNpbmNsdWRlIDx1bmlzdGQuaD4K PiA+ICsjaW5jbHVkZSA8Z2xpYi5oPgo+ID4gIAo+ID4gICNpZm5kZWYgSUdUX0xPR19ET01BSU4K PiA+ICAjZGVmaW5lIElHVF9MT0dfRE9NQUlOIChOVUxMKQo+ID4gQEAgLTQ4LDYgKzQ5LDcgQEAK PiA+ICAKPiA+ICBleHRlcm4gY29uc3QgY2hhciogX19pZ3RfdGVzdF9kZXNjcmlwdGlvbiBfX2F0 dHJpYnV0ZV9fKCh3ZWFrKSk7Cj4gPiAgZXh0ZXJuIGJvb2wgX19pZ3RfcGxhaW5fb3V0cHV0Owo+ ID4gK2V4dGVybiBHS2V5RmlsZSAqaWd0X2tleV9maWxlOwo+ID4gIAo+ID4gIAo+ID4gIC8qKgo+ ID4gZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KPiA+ IGluZGV4IGIwNTEzNjRjLi5mOWQxMWU2YyAxMDA2NDQKPiA+IC0tLSBhL3Rlc3RzL01ha2VmaWxl LmFtCj4gPiArKysgYi90ZXN0cy9NYWtlZmlsZS5hbQo+ID4gQEAgLTcyLDkgKzcyLDkgQEAgQU1f Q0ZMQUdTID0gJChEUk1fQ0ZMQUdTKSAkKENXQVJORkxBR1MpIC1Xbm8tCj4gPiB1bnVzZWQtcmVz dWx0ICQoREVCVUdfQ0ZMQUdTKVwKPiA+ICAJJChMSUJVTldJTkRfQ0ZMQUdTKSAkKFdFUlJPUl9D RkxBR1MpIFwKPiA+ICAJJChOVUxMKQo+ID4gIAo+ID4gLUxEQUREID0gLi4vbGliL2xpYmludGVs X3Rvb2xzLmxhICQoR0xJQl9MSUJTKSAkKFhNTFJQQ19MSUJTKQo+ID4gK0xEQUREID0gLi4vbGli L2xpYmludGVsX3Rvb2xzLmxhICQoWE1MUlBDX0xJQlMpCj4gPiAgCj4gPiAtQU1fQ0ZMQUdTICs9 ICQoQ0FJUk9fQ0ZMQUdTKSAkKExJQlVERVZfQ0ZMQUdTKSAkKEdMSUJfQ0ZMQUdTKQo+ID4gK0FN X0NGTEFHUyArPSAkKENBSVJPX0NGTEFHUykgJChMSUJVREVWX0NGTEFHUykKPiA+ICBBTV9MREZM QUdTID0gLVdsLC0tYXMtbmVlZGVkCj4gPiAgCj4gPiAgZHJtX2ltcG9ydF9leHBvcnRfQ0ZMQUdT ID0gJChBTV9DRkxBR1MpICQoVEhSRUFEX0NGTEFHUykKPiA+IGRpZmYgLS1naXQgYS90ZXN0cy9j aGFtZWxpdW0uYyBiL3Rlc3RzL2NoYW1lbGl1bS5jCj4gPiBpbmRleCA0MWUwZTg5Yi4uODhiMGE5 NGMgMTAwNjQ0Cj4gPiAtLS0gYS90ZXN0cy9jaGFtZWxpdW0uYwo+ID4gKysrIGIvdGVzdHMvY2hh bWVsaXVtLmMKPiA+IEBAIC00Miw3ICs0Miw2IEBAIHR5cGVkZWYgc3RydWN0IHsKPiA+ICB9IGRh dGFfdDsKPiA+ICAKPiA+ICAjZGVmaW5lIEhPVFBMVUdfVElNRU9VVCAyMCAvKiBzZWNvbmRzICov Cj4gPiAtI2RlZmluZSBTVVNQRU5EX1JFU1VNRV9ERUxBWSAyMCAvKiBzZWNvbmRzICovCj4gPiAg Cj4gPiAgI2RlZmluZSBIUERfU1RPUk1fUFVMU0VfSU5URVJWQUxfRFAgMTAwIC8qIG1zICovCj4g PiAgI2RlZmluZSBIUERfU1RPUk1fUFVMU0VfSU5URVJWQUxfSERNSSAyMDAgLyogbXMgKi8KPiA+ IEBAIC0yMjUsMjEgKzIyNCwyMSBAQCB0cnlfc3VzcGVuZF9yZXN1bWVfaHBkKGRhdGFfdCAqZGF0 YSwgc3RydWN0Cj4gPiBjaGFtZWxpdW1fcG9ydCAqcG9ydCwKPiA+ICAJCSAgICAgICBlbnVtIGln dF9zdXNwZW5kX3N0YXRlIHN0YXRlLCBlbnVtCj4gPiBpZ3Rfc3VzcGVuZF90ZXN0IHRlc3QsCj4g PiAgCQkgICAgICAgc3RydWN0IHVkZXZfbW9uaXRvciAqbW9uLCBib29sIGNvbm5lY3RlZCkKPiA+ ICB7Cj4gPiArCWludCBkZWxheTsKPiA+ICAJaW50IHA7Cj4gPiAgCj4gPiAtCWlndF9zZXRfYXV0 b3Jlc3VtZV9kZWxheShTVVNQRU5EX1JFU1VNRV9ERUxBWSk7Cj4gPiAgCWlndF9mbHVzaF9ob3Rw bHVncyhtb24pOwo+ID4gIAo+ID4gKwlkZWxheSA9IGlndF9nZXRfYXV0b3Jlc3VtZV9kZWxheShz dGF0ZSkgKiAxMDAwIC8gMjsKPiA+ICsKPiA+ICAJaWYgKHBvcnQpIHsKPiA+IC0JCWNoYW1lbGl1 bV9zY2hlZHVsZV9ocGRfdG9nZ2xlKGRhdGEtPmNoYW1lbGl1bSwgcG9ydCwKPiA+IC0JCQkJCSAg ICAgIFNVU1BFTkRfUkVTVU1FX0RFTEFZICoKPiA+IDEwMDAgLyAyLAo+ID4gKwkJY2hhbWVsaXVt X3NjaGVkdWxlX2hwZF90b2dnbGUoZGF0YS0+Y2hhbWVsaXVtLCBwb3J0LAo+ID4gZGVsYXksCj4g PiAgCQkJCQkgICAgICAhY29ubmVjdGVkKTsKPiA+ICAJfSBlbHNlIHsKPiA+ICAJCWZvciAocCA9 IDA7IHAgPCBkYXRhLT5wb3J0X2NvdW50OyBwKyspIHsKPiA+ICAJCQlwb3J0ID0gZGF0YS0+cG9y dHNbcF07Cj4gPiAgCQkJY2hhbWVsaXVtX3NjaGVkdWxlX2hwZF90b2dnbGUoZGF0YS0KPiA+ID4g Y2hhbWVsaXVtLCBwb3J0LAo+ID4gCj4gPiAtCQkJCQkJICAgICAgU1VTUEVORF9SRVNVTUUKPiA+ IF9ERUxBWSAqIDEwMDAgLyAyLAo+ID4gLQkJCQkJCSAgICAgICFjb25uZWN0ZWQpOwo+ID4gKwkJ CQkJCSAgICAgIGRlbGF5LAo+ID4gIWNvbm5lY3RlZCk7Cj4gPiAgCQl9Cj4gPiAgCj4gPiAgCQlw b3J0ID0gTlVMTDsKPiA+IGRpZmYgLS1naXQgYS90b29scy9NYWtlZmlsZS5hbSBiL3Rvb2xzL01h a2VmaWxlLmFtCj4gPiBpbmRleCAxOGE2N2VmYi4uYzQwZTc1YzcgMTAwNjQ0Cj4gPiAtLS0gYS90 b29scy9NYWtlZmlsZS5hbQo+ID4gKysrIGIvdG9vbHMvTWFrZWZpbGUuYW0KPiA+IEBAIC05LDgg KzksOCBAQCBlbmRpZgo+ID4gIAo+ID4gIGlmIEhBVkVfVURFVgo+ID4gIGJpbl9QUk9HUkFNUyAr PSBpbnRlbF9kcF9jb21wbGlhbmNlCj4gPiAtaW50ZWxfZHBfY29tcGxpYW5jZV9DRkxBR1MgPSAk KEFNX0NGTEFHUykgJChHTElCX0NGTEFHUykKPiA+IC1pbnRlbF9kcF9jb21wbGlhbmNlX0xEQURE ID0gJCh0b3BfYnVpbGRkaXIpL2xpYi9saWJpbnRlbF90b29scy5sYQo+ID4gJChHTElCX0xJQlMp Cj4gPiAraW50ZWxfZHBfY29tcGxpYW5jZV9DRkxBR1MgPSAkKEFNX0NGTEFHUykKPiA+ICtpbnRl bF9kcF9jb21wbGlhbmNlX0xEQUREID0gJCh0b3BfYnVpbGRkaXIpL2xpYi9saWJpbnRlbF90b29s cy5sYQo+ID4gIGVuZGlmCj4gPiAgCj4gPiAgU1VCRElSUyA9IG51bGxfc3RhdGVfZ2VuIHJlZ2lz dGVycwotLSAKUGF1bCBLb2NpYWxrb3dza2kgPHBhdWwua29jaWFsa293c2tpQGxpbnV4LmludGVs LmNvbT4KSW50ZWwgRmlubGFuZCBPeSAtIEJJQyAwMzU3NjA2LTQgLSBXZXN0ZW5kaW5rYXR1IDcs IDAyMTYwIEVzcG9vCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=