From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Kocialkowski Subject: Re: [PATCH i-g-t v3 3/3] Make igtrc configuration common, with configurable suspend/resume delay Date: Mon, 03 Jul 2017 17:58:52 +0300 Message-ID: <1499093932.3543.2.camel@linux.intel.com> References: <20170703120113.4506-1-paul.kocialkowski@linux.intel.com> <20170703120113.4506-3-paul.kocialkowski@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2BD3789C9B for ; Mon, 3 Jul 2017 14:58:57 +0000 (UTC) In-Reply-To: <20170703120113.4506-3-paul.kocialkowski@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: intel-gfx@lists.freedesktop.org Cc: Lyude List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAyMDE3LTA3LTAzIGF0IDE1OjAxICswMzAwLCBQYXVsIEtvY2lhbGtvd3NraSB3cm90 ZToKPiBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgY29uZmlndXJhYmxlIHN1c3BlbmQvcmVzdW1lIGRl bGF5IGFuZCB0YWtlcyB0aGUKPiBvY2Nhc2lvbiB0byBtb3ZlIGlndHJjIGNvbmZpZ3VhdGlvbiBm cm9tIGlndF9jaGFtZWxpdW0gdG8gaWd0X2NvcmUuCj4gVGhpcyB3YXksIHN1c3BlbmQvcmVzdW1l IGRlbGF5IGNvbmZpZ3VyYXRpb24gY2FuIGJlIHVzZWQgZm9yIGFsbCB0ZXN0cy4KPiAKPiBTaWdu ZWQtb2ZmLWJ5OiBQYXVsIEtvY2lhbGtvd3NraSA8cGF1bC5rb2NpYWxrb3dza2lAbGludXguaW50 ZWwuY29tPgo+IC0tLQo+ICBsaWIvTWFrZWZpbGUuYW0gICAgIHwgIDIgKysKPiAgbGliL2lndF9h dXguYyAgICAgICB8IDI3ICsrKysrKysrKysrKysrKysrLS0tLQo+ICBsaWIvaWd0X2F1eC5oICAg ICAgIHwgIDEgKwo+ICBsaWIvaWd0X2NoYW1lbGl1bS5jIHwgNDkgKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBsaWIvaWd0X2NvcmUuYyAgICAgIHwgNjkKPiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBsaWIvaWd0 X2NvcmUuaCAgICAgIHwgIDIgKysKPiAgdGVzdHMvTWFrZWZpbGUuYW0gICB8ICA0ICsrLS0KPiAg dGVzdHMvY2hhbWVsaXVtLmMgICB8IDExICsrKystLS0tLQo+ICB0b29scy9NYWtlZmlsZS5hbSAg IHwgIDQgKystLQo+ICA5IGZpbGVzIGNoYW5nZWQsIDExNyBpbnNlcnRpb25zKCspLCA1MiBkZWxl dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLmFtIGIvbGliL01ha2VmaWxl LmFtCj4gaW5kZXggOTFlNzJjNDQuLmQ0ZjQxMTI4IDEwMDY0NAo+IC0tLSBhL2xpYi9NYWtlZmls ZS5hbQo+ICsrKyBiL2xpYi9NYWtlZmlsZS5hbQo+IEBAIC00MSw2ICs0MSw3IEBAIEFNX0NGTEFH UyA9IFwKPiAgCSAgICAkKFhNTFJQQ19DRkxBR1MpIFwKPiAgCSAgICAkKExJQlVERVZfQ0ZMQUdT KSBcCj4gIAkgICAgJChQSVhNQU5fQ0ZMQUdTKSBcCj4gKwkgICAgJChHTElCX0NGTEFHUykgXAo+ ICAJICAgICQoVkFMR1JJTkRfQ0ZMQUdTKSBcCj4gIAkgICAgLURJR1RfU1JDRElSPVwiIiQoYWJz X3RvcF9zcmNkaXIpL3Rlc3RzIlwiIFwKPiAgCSAgICAtRElHVF9EQVRBRElSPVwiIiQocGtnZGF0 YWRpcikiXCIgXAo+IEBAIC02MSw1ICs2Miw2IEBAIGxpYmludGVsX3Rvb2xzX2xhX0xJQkFERCA9 IFwKPiAgCSQoWE1MUlBDX0xJQlMpIFwKPiAgCSQoTElCVURFVl9MSUJTKSBcCj4gIAkkKFBJWE1B Tl9MSUJTKSBcCj4gKwkkKEdMSUJfTElCUykgXAo+ICAJLWxtCj4gIAo+IGRpZmYgLS1naXQgYS9s aWIvaWd0X2F1eC5jIGIvbGliL2lndF9hdXguYwo+IGluZGV4IDg4MmRiYTA2Li44NmEyMTNjMiAx MDA2NDQKPiAtLS0gYS9saWIvaWd0X2F1eC5jCj4gKysrIGIvbGliL2lndF9hdXguYwo+IEBAIC03 NDgsMTAgKzc0OCw3IEBAIHN0YXRpYyB2b2lkIHN1c3BlbmRfdmlhX3J0Y3dha2UoZW51bSBpZ3Rf c3VzcGVuZF9zdGF0ZQo+IHN0YXRlKQo+ICAKPiAgCWlndF9hc3NlcnQoc3RhdGUgPCBTVVNQRU5E X1NUQVRFX05VTSk7Cj4gIAo+IC0JaWYgKGF1dG9yZXN1bWVfZGVsYXkpCj4gLQkJZGVsYXkgPSBh dXRvcmVzdW1lX2RlbGF5Owo+IC0JZWxzZQo+IC0JCWRlbGF5ID0gc3RhdGUgPT0gU1VTUEVORF9T VEFURV9ESVNLID8gMzAgOiAxNTsKPiArCWRlbGF5ID0gaWd0X2dldF9hdXRvcmVzdW1lX2RlbGF5 KHN0YXRlKTsKPiAgCj4gIAkvKgo+ICAJICogU2tpcCBpZiBydGN3YWtlIHdvdWxkIGZhaWwgZm9y IGEgcmVhc29uIG5vdCByZWxhdGVkIHRvIHRoZQo+IGtlcm5lbCdzCj4gQEAgLTg5OSw2ICs4OTYs MjggQEAgdm9pZCBpZ3Rfc2V0X2F1dG9yZXN1bWVfZGVsYXkoaW50IGRlbGF5X3NlY3MpCj4gIH0K PiAgCj4gIC8qKgo+ICsgKiBpZ3RfZ2V0X2F1dG9yZXN1bWVfZGVsYXk6Cj4gKyAqIEBzdGF0ZTog YW4gI2lndF9zdXNwZW5kX3N0YXRlLCB0aGUgdGFyZ2V0IHN1c3BlbmQgc3RhdGUKPiArICoKPiAr ICogUmV0cmlldmVzIGhvdyBsb25nIHdlIHdhaXQgdG8gcmVzdW1lIHRoZSBzeXN0ZW0gYWZ0ZXIg c3VzcGVuZGluZyBpdC4KPiArICogVGhpcyBjYW4gZWl0aGVyIGJlIHNldCB0aHJvdWdoIGlndF9z ZXRfYXV0b3Jlc3VtZV9kZWxheSBvciBiZSBhIGRlZmF1bHQKPiArICogdmFsdWUgdGhhdCBkZXBl bmRzIG9uIHRoZSBzdXNwZW5kIHN0YXRlLgo+ICsgKgo+ICsgKiBSZXR1cm5zOiBUaGUgYXV0b3Jl c3VtZSBkZWxheSwgaW4gc2Vjb25kcy4KPiArICovCj4gK2ludCBpZ3RfZ2V0X2F1dG9yZXN1bWVf ZGVsYXkoZW51bSBpZ3Rfc3VzcGVuZF9zdGF0ZSBzdGF0ZSkKPiArewo+ICsJaW50IGRlbGF5Owo+ ICsKPiArCWlmIChhdXRvcmVzdW1lX2RlbGF5KQo+ICsJCWRlbGF5ID0gYXV0b3Jlc3VtZV9kZWxh eTsKPiArCWVsc2UKPiArCQlkZWxheSA9IHN0YXRlID09IFNVU1BFTkRfU1RBVEVfRElTSyA/IDMw IDogMTU7Cj4gKwo+ICsJcmV0dXJuIGRlbGF5Owo+ICt9Cj4gKwo+ICsvKioKPiAgICogaWd0X2Ry b3Bfcm9vdDoKPiAgICoKPiAgICogRHJvcCByb290IHByaXZpbGVnZXMgYW5kIG1ha2Ugc3VyZSBp dCBhY3R1YWxseSB3b3JrZWQuIFVzZWZ1bCBmb3IgdGVzdHMKPiBkaWZmIC0tZ2l0IGEvbGliL2ln dF9hdXguaCBiL2xpYi9pZ3RfYXV4LmgKPiBpbmRleCA1NGI5NzE2NC4uNDk5YTE2NzkgMTAwNjQ0 Cj4gLS0tIGEvbGliL2lndF9hdXguaAo+ICsrKyBiL2xpYi9pZ3RfYXV4LmgKPiBAQCAtMTkyLDYg KzE5Miw3IEBAIGVudW0gaWd0X3N1c3BlbmRfdGVzdCB7Cj4gIHZvaWQgaWd0X3N5c3RlbV9zdXNw ZW5kX2F1dG9yZXN1bWUoZW51bSBpZ3Rfc3VzcGVuZF9zdGF0ZSBzdGF0ZSwKPiAgCQkJCSAgIGVu dW0gaWd0X3N1c3BlbmRfdGVzdCB0ZXN0KTsKPiAgdm9pZCBpZ3Rfc2V0X2F1dG9yZXN1bWVfZGVs YXkoaW50IGRlbGF5X3NlY3MpOwo+ICtpbnQgaWd0X2dldF9hdXRvcmVzdW1lX2RlbGF5KGVudW0g aWd0X3N1c3BlbmRfc3RhdGUgc3RhdGUpOwo+ICAKPiAgLyogZHJvcHBpbmcgcHJpdmlsZWRnZXMg Ki8KPiAgdm9pZCBpZ3RfZHJvcF9yb290KHZvaWQpOwo+IGRpZmYgLS1naXQgYS9saWIvaWd0X2No YW1lbGl1bS5jIGIvbGliL2lndF9jaGFtZWxpdW0uYwo+IGluZGV4IDYyNGY0NDhiLi5iZmYwOGMw ZSAxMDA2NDQKPiAtLS0gYS9saWIvaWd0X2NoYW1lbGl1bS5jCj4gKysrIGIvbGliL2lndF9jaGFt ZWxpdW0uYwo+IEBAIC01MSw4ICs1MSw4IEBACj4gICAqIFtvbiB0aGUgQ2hyb21lT1MgcHJvamVj dCBwYWdlXShodHRwczovL3d3dy5jaHJvbWl1bS5vcmcvY2hyb21pdW0tb3MvdGVzdGluCj4gZy9j aGFtZWxpdW0pLgo+ICAgKgo+ICAgKiBJbiBvcmRlciB0byBydW4gdGVzdHMgdXNpbmcgdGhlIENo YW1lbGl1bSwgYSB2YWxpZCBjb25maWd1cmF0aW9uIGZpbGUgbXVzdAo+IGJlCj4gLSAqIHByZXNl bnQuICBUaGUgY29uZmlndXJhdGlvbiBmaWxlIGlzIGEgbm9ybWFsIEdsaWIga2V5ZmlsZSAoc2lt aWxhciB0bwo+IFdpbmRvd3MKPiAtICogSU5JKSBzdHJ1Y3R1cmVkIGxpa2Ugc286Cj4gKyAqIHBy ZXNlbnQuIEl0IG11c3QgY29udGFpbiBDaGFtZWxpdW0tc3BlY2lmaWMga2V5cyBhcyBzaG93biB3 aXRoIHRoZQo+IGZvbGxvd2luZwo+ICsgKiBleGFtcGxlOgo+ICAgKgo+ICAgKiB8WzwhLS0gbGFu Z3VhZ2U9InBsYWluIiAtLT4KPiAgICoJW0NoYW1lbGl1bV0KPiBAQCAtNzIsOCArNzIsNiBAQAo+ ICAgKglDaGFtZWxpdW1Qb3J0SUQ9Mwo+ICAgKiBdfAo+ICAgKgo+IC0gKiBCeSBkZWZhdWx0LCB0 aGlzIGZpbGUgaXMgZXhwZWN0ZWQgdG8gZXhpc3QgaW4gfi8uaWd0cmMgLiBUaGUgZGlyZWN0b3J5 IGZvcgo+IC0gKiB0aGlzIGNhbiBiZSBvdmVycmlkZW4gYnkgc2V0dGluZyB0aGUgZW52aXJvbm1l bnQgdmFyaWFibGUKPiAlSUdUX0NPTkZJR19QQVRILgo+ICAgKi8KPiAgCj4gIHN0cnVjdCBjaGFt ZWxpdW1fZWRpZCB7Cj4gQEAgLTEwMzQsNyArMTAzMiw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQg Y2hhbWVsaXVtX2dldF9wb3J0X3R5cGUoc3RydWN0Cj4gY2hhbWVsaXVtICpjaGFtZWxpdW0sCj4g IH0KPiAgCj4gIHN0YXRpYyBib29sIGNoYW1lbGl1bV9yZWFkX3BvcnRfbWFwcGluZ3Moc3RydWN0 IGNoYW1lbGl1bSAqY2hhbWVsaXVtLAo+IC0JCQkJCSBpbnQgZHJtX2ZkLCBHS2V5RmlsZSAqa2V5 X2ZpbGUpCj4gKwkJCQkJIGludCBkcm1fZmQpCj4gIHsKPiAgCWRybU1vZGVSZXMgKnJlczsKPiAg CWRybU1vZGVDb25uZWN0b3IgKmNvbm5lY3RvcjsKPiBAQCAtMTA0NSw3ICsxMDQzLDcgQEAgc3Rh dGljIGJvb2wgY2hhbWVsaXVtX3JlYWRfcG9ydF9tYXBwaW5ncyhzdHJ1Y3QKPiBjaGFtZWxpdW0g KmNoYW1lbGl1bSwKPiAgCWludCBwb3J0X2ksIGksIGo7Cj4gIAlib29sIHJldCA9IHRydWU7Cj4g IAo+IC0JZ3JvdXBfbGlzdCA9IGdfa2V5X2ZpbGVfZ2V0X2dyb3VwcyhrZXlfZmlsZSwgTlVMTCk7 Cj4gKwlncm91cF9saXN0ID0gZ19rZXlfZmlsZV9nZXRfZ3JvdXBzKGlndF9rZXlfZmlsZSwgTlVM TCk7Cj4gIAo+ICAJLyogQ291bnQgaG93IG1hbnkgY29ubmVjdG9yIG1hcHBpbmdzIGFyZSBzcGVj aWZpZWQgaW4gdGhlIGNvbmZpZyAqLwo+ICAJZm9yIChpID0gMDsgZ3JvdXBfbGlzdFtpXSAhPSBO VUxMOyBpKyspIHsKPiBAQCAtMTA2OCw3ICsxMDY2LDcgQEAgc3RhdGljIGJvb2wgY2hhbWVsaXVt X3JlYWRfcG9ydF9tYXBwaW5ncyhzdHJ1Y3QKPiBjaGFtZWxpdW0gKmNoYW1lbGl1bSwKPiAgCj4g IAkJcG9ydCA9ICZjaGFtZWxpdW0tPnBvcnRzW3BvcnRfaSsrXTsKPiAgCQlwb3J0LT5uYW1lID0g c3RyZHVwKG1hcF9uYW1lKTsKPiAtCQlwb3J0LT5pZCA9IGdfa2V5X2ZpbGVfZ2V0X2ludGVnZXIo a2V5X2ZpbGUsIGdyb3VwLAo+ICsJCXBvcnQtPmlkID0gZ19rZXlfZmlsZV9nZXRfaW50ZWdlcihp Z3Rfa2V5X2ZpbGUsIGdyb3VwLAo+ICAJCQkJCQkgICJDaGFtZWxpdW1Qb3J0SUQiLAo+ICAJCQkJ CQkgICZlcnJvcik7Cj4gIAkJaWYgKCFwb3J0LT5pZCkgewo+IEBAIC0xMTI1LDQ3ICsxMTIzLDIy IEBAIG91dDoKPiAgCj4gIHN0YXRpYyBib29sIGNoYW1lbGl1bV9yZWFkX2NvbmZpZyhzdHJ1Y3Qg Y2hhbWVsaXVtICpjaGFtZWxpdW0sIGludCBkcm1fZmQpCj4gIHsKPiAtCUdLZXlGaWxlICprZXlf ZmlsZSA9IGdfa2V5X2ZpbGVfbmV3KCk7Cj4gIAlHRXJyb3IgKmVycm9yID0gTlVMTDsKPiAtCWNo YXIgKmtleV9maWxlX2xvYywgKmtleV9maWxlX2VudjsKPiAtCWludCByYzsKPiAtCWJvb2wgcmV0 ID0gdHJ1ZTsKPiAgCj4gLQlrZXlfZmlsZV9lbnYgPSBnZXRlbnYoIklHVF9DT05GSUdfUEFUSCIp Owo+IC0JaWYgKGtleV9maWxlX2Vudikgewo+IC0JCWtleV9maWxlX2xvYyA9IGtleV9maWxlX2Vu djsKPiAtCX0gZWxzZSB7Cj4gLQkJa2V5X2ZpbGVfbG9jID0gbWFsbG9jKDEwMCk7Cj4gLQkJc25w cmludGYoa2V5X2ZpbGVfbG9jLCAxMDAsICIlcy8uaWd0cmMiLCBnX2dldF9ob21lX2RpcigpKTsK PiArCWlmICghaWd0X2tleV9maWxlKSB7Cj4gKwkJaWd0X3dhcm4oIk5vIGNvbmZpZ3VyYXRpb24g ZmlsZSBhdmFpbGFibGUgZm9yIGNoYW1lbGl1bVxuIik7Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICAJ fQo+ICAKPiAtCXJjID0gZ19rZXlfZmlsZV9sb2FkX2Zyb21fZmlsZShrZXlfZmlsZSwga2V5X2Zp bGVfbG9jLAo+IC0JCQkJICAgICAgIEdfS0VZX0ZJTEVfTk9ORSwgJmVycm9yKTsKPiAtCWlmICgh cmMpIHsKPiAtCQlpZ3Rfd2FybigiRmFpbGVkIHRvIHJlYWQgY2hhbWVsaXVtIGNvbmZpZ3VyYXRp b24gZmlsZTogJXNcbiIsCj4gLQkJCSBlcnJvci0+bWVzc2FnZSk7Cj4gLQkJcmV0ID0gZmFsc2U7 Cj4gLQkJZ290byBvdXQ7Cj4gLQl9Cj4gLQo+IC0JY2hhbWVsaXVtLT51cmwgPSBnX2tleV9maWxl X2dldF9zdHJpbmcoa2V5X2ZpbGUsICJDaGFtZWxpdW0iLCAiVVJMIiwKPiArCWNoYW1lbGl1bS0+ dXJsID0gZ19rZXlfZmlsZV9nZXRfc3RyaW5nKGlndF9rZXlfZmlsZSwgIkNoYW1lbGl1bSIsCj4g IlVSTCIsCj4gIAkJCQkJICAgICAgICZlcnJvcik7Cj4gIAlpZiAoIWNoYW1lbGl1bS0+dXJsKSB7 Cj4gIAkJaWd0X3dhcm4oIkNvdWxkbid0IHJlYWQgY2hhbWVsaXVtIFVSTCBmcm9tIGNvbmZpZyBm aWxlOgo+ICVzXG4iLAo+ICAJCQkgZXJyb3ItPm1lc3NhZ2UpOwo+IC0JCXJldCA9IGZhbHNlOwo+ IC0JCWdvdG8gb3V0Owo+ICsJCXJldHVybiBmYWxzZTsKPiAgCX0KPiAgCj4gLQlyZXQgPSBjaGFt ZWxpdW1fcmVhZF9wb3J0X21hcHBpbmdzKGNoYW1lbGl1bSwgZHJtX2ZkLCBrZXlfZmlsZSk7Cj4g LQo+IC1vdXQ6Cj4gLQlnX2tleV9maWxlX2ZyZWUoa2V5X2ZpbGUpOwo+IC0KPiAtCWlmICgha2V5 X2ZpbGVfZW52KQo+IC0JCWZyZWUoa2V5X2ZpbGVfbG9jKTsKPiAtCj4gLQlyZXR1cm4gcmV0Owo+ ICsJcmV0dXJuIGNoYW1lbGl1bV9yZWFkX3BvcnRfbWFwcGluZ3MoY2hhbWVsaXVtLCBkcm1fZmQp Owo+ICB9Cj4gIAo+ICAvKioKPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9jb3JlLmMgYi9saWIvaWd0 X2NvcmUuYwo+IGluZGV4IDlhNWVkNDBlLi43NjA3Mjg0NSAxMDA2NDQKPiAtLS0gYS9saWIvaWd0 X2NvcmUuYwo+ICsrKyBiL2xpYi9pZ3RfY29yZS5jCj4gQEAgLTU3LDYgKzU3LDcgQEAKPiAgI2lu Y2x1ZGUgPGxpbWl0cy5oPgo+ICAjaW5jbHVkZSA8bG9jYWxlLmg+Cj4gICNpbmNsdWRlIDx1d2ls ZG1hdC91d2lsZG1hdC5oPgo+ICsjaW5jbHVkZSA8Z2xpYi5oPgo+ICAKPiAgI2luY2x1ZGUgImRy bXRlc3QuaCIKPiAgI2luY2x1ZGUgImludGVsX2NoaXBzZXQuaCIKPiBAQCAtMjI1LDYgKzIyNiwy MyBAQAo+ICAgKiAtICdiYXNpYyosYWR2YW5jZWQqJyBtYXRjaCBhbnkgc3VidGVzdCBzdGFydGlu ZyBiYXNpYyBvciBhZHZhbmNlZAo+ICAgKiAtICcqLCFiYXNpYyonIG1hdGNoIGFueSBzdWJ0ZXN0 IG5vdCBzdGFydGluZyBiYXNpYwo+ICAgKiAtICdiYXNpYyosIWJhc2ljLXJlbmRlcionIG1hdGNo IGFueSBzdWJ0ZXN0IHN0YXJ0aW5nIGJhc2ljIGJ1dCBub3QKPiBzdGFydGluZyBiYXNpYy1yZW5k ZXIKPiArICoKPiArICogIyBDb25maWd1cmF0aW9uCj4gKyAqCj4gKyAqIFNvbWUgb2YgSUdUJ3Mg YmVoYXZpb3IgY2FuIGJlIGNvbmZpZ3VyZWQgdGhyb3VnaCBhIGNvbmZpZ3VyYXRpb24gZmlsZS4K PiArICogQnkgZGVmYXVsdCwgdGhpcyBmaWxlIGlzIGV4cGVjdGVkIHRvIGV4aXN0IGluIH4vLmln dHJjIC4gVGhlIGRpcmVjdG9yeSBmb3IKPiArICogdGhpcyBjYW4gYmUgb3ZlcnJpZGVuIGJ5IHNl dHRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCj4gJUlHVF9DT05GSUdfUEFUSC4KPiArICog QW4gZXhhbXBsZSBjb25maWd1cmF0aW9uIGZvbGxvd3M6Cj4gKyAqCj4gKyAqIHxbPCEtLSBsYW5n dWFnZT0icGxhaW4iIC0tPgo+ICsgKgkjIFRoZSBmb2xsb3dpbmcgc2VjdGlvbiBpcyB1c2VkIGZv ciBjb25maWd1cmluZyB0aGUgRGV2aWNlIFVuZGVyCj4gVGVzdC4KPiArICoJIyBJdCBpcyBub3Qg bWFuZGF0b3J5IGFuZCBhbGxvd3Mgb3ZlcnJpZGluZyBkZWZhdWx0IHZhbHVlcy4KPiArICoJW0RV VF0KPiArICoJU3VzcGVuZFJlc3VtZURlbGF5PTEwCj4gKyAqIF18Cj4gKyAqCj4gKyAqIFNvbWUg c3BlY2lmaWMgY29uZmlndXJhdGlvbiBvcHRpb25zIG1heSBiZSB1c2VkIGJ5IHNwZWNpZmljIHBh cnRzIG9mIElHVCwKPiArICogc3VjaCBhcyB0aG9zZSByZWxhdGVkIHRvIENoYW1lbGl1bSBzdXBw b3J0Lgo+ICAgKi8KPiAgCj4gIHN0YXRpYyB1bnNpZ25lZCBpbnQgZXhpdF9oYW5kbGVyX2NvdW50 Owo+IEBAIC0yNzEsNiArMjg5LDggQEAgc3RhdGljIHN0cnVjdCB7Cj4gIH0gbG9nX2J1ZmZlcjsK PiAgc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBsb2dfYnVmZmVyX211dGV4ID0gUFRIUkVBRF9NVVRF WF9JTklUSUFMSVpFUjsKPiAgCj4gK0dLZXlGaWxlICppZ3Rfa2V5X2ZpbGU7Cj4gKwo+ICBjb25z dCBjaGFyICppZ3RfdGVzdF9uYW1lKHZvaWQpCj4gIHsKPiAgCXJldHVybiBjb21tYW5kX3N0cjsK PiBAQCAtNTkzLDYgKzYxMywyNSBAQCBzdGF0aWMgdm9pZCBvb21fYWRqdXN0X2Zvcl9kb29tKHZv aWQpCj4gIAo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50IGNvbmZpZ19wYXJzZSh2b2lkKQo+ICt7Cj4g KwlHRXJyb3IgKmVycm9yID0gTlVMTDsKPiArCWludCByYzsKPiArCj4gKwlpZiAoIWlndF9rZXlf ZmlsZSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlyYyA9IGdfa2V5X2ZpbGVfZ2V0X2ludGVnZXIo aWd0X2tleV9maWxlLCAiRFVUIiwKPiAiU3VzcGVuZFJlc3VtZURlbGF5IiwKPiArCQkJCSAgICAm ZXJyb3IpOwo+ICsJaWYgKGVycm9yID09IEdfS0VZX0ZJTEVfRVJST1JfSU5WQUxJRF9WQUxVRSkK ClRoYXQgZmVsdCB2ZXJ5IHdlaXJkIHRvIHR5cGUgb3V0IGFuZCBJIHRob3VnaHQgdGhhdCBlcnJv ciB3YXMsIGZvciBzb21lIHJlYXNvbiwKYSBwb2ludGVyIHVzZWQgYXMgaW50ZWdlci4gSSBkb3Vi bGUtY2hlY2tlZCB0aGF0IGFuZCBpdCB0dXJucyBvdXQgdGhhdCwKdW5zdXJwcmlzaW5nbHksIGl0 IGlzIG5vdC4KClBsZWFzZSBob2xkIG9mZiB0aGF0IHBhdGNoLCBJIHdpbGwgcmV2aXNpdCBpdCB0 b21vcnJvdyB0byBwcm9wZXJseSBoYW5kbGUgdGhlCmVycm9yLgoKPiArCQlyZXR1cm4gLTI7Cj4g Kwo+ICsJaWYgKHJjICE9IDApCj4gKwkJaWd0X3NldF9hdXRvcmVzdW1lX2RlbGF5KHJjKTsKPiAr Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgc3RhdGljIGludCBjb21tb25faW5pdChpbnQgKmFy Z2MsIGNoYXIgKiphcmd2LAo+ICAJCSAgICAgICBjb25zdCBjaGFyICpleHRyYV9zaG9ydF9vcHRz LAo+ICAJCSAgICAgICBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpleHRyYV9sb25nX29wdHMsCj4gQEAg LTYxNiw2ICs2NTUsOSBAQCBzdGF0aWMgaW50IGNvbW1vbl9pbml0KGludCAqYXJnYywgY2hhciAq KmFyZ3YsCj4gIAlpbnQgZXh0cmFfb3B0X2NvdW50Owo+ICAJaW50IGFsbF9vcHRfY291bnQ7Cj4g IAlpbnQgcmV0ID0gMDsKPiArCWNoYXIgKmtleV9maWxlX2xvYyA9IE5VTEw7Cj4gKwljaGFyICpr ZXlfZmlsZV9lbnYgPSBOVUxMOwo+ICsJR0Vycm9yICplcnJvciA9IE5VTEw7Cj4gIAljb25zdCBj aGFyICplbnY7Cj4gIAo+ICAJaWYgKCFpc2F0dHkoU1RET1VUX0ZJTEVOTykgfHwgZ2V0ZW52KCJJ R1RfUExBSU5fT1VUUFVUIikpCj4gQEAgLTczNyw3ICs3NzksMzEgQEAgc3RhdGljIGludCBjb21t b25faW5pdChpbnQgKmFyZ2MsIGNoYXIgKiphcmd2LAo+ICAJCX0KPiAgCX0KPiAgCj4gKwlrZXlf ZmlsZV9lbnYgPSBnZXRlbnYoIklHVF9DT05GSUdfUEFUSCIpOwo+ICsJaWYgKGtleV9maWxlX2Vu dikgewo+ICsJCWtleV9maWxlX2xvYyA9IGtleV9maWxlX2VudjsKPiArCX0gZWxzZSB7Cj4gKwkJ a2V5X2ZpbGVfbG9jID0gbWFsbG9jKDEwMCk7Cj4gKwkJc25wcmludGYoa2V5X2ZpbGVfbG9jLCAx MDAsICIlcy8uaWd0cmMiLCBnX2dldF9ob21lX2RpcigpKTsKPiArCX0KPiArCj4gKwlpZ3Rfa2V5 X2ZpbGUgPSBnX2tleV9maWxlX25ldygpOwo+ICsJcmV0ID0gZ19rZXlfZmlsZV9sb2FkX2Zyb21f ZmlsZShpZ3Rfa2V5X2ZpbGUsIGtleV9maWxlX2xvYywKPiArCQkJCQlHX0tFWV9GSUxFX05PTkUs ICZlcnJvcik7Cj4gKwlpZiAoZXJyb3IgPT0gR19LRVlfRklMRV9FUlJPUikgewoKU2FtZSB0aGlu ZyBoZXJlLgoKPiArCQlnX2tleV9maWxlX2ZyZWUoaWd0X2tleV9maWxlKTsKPiArCQlpZ3Rfa2V5 X2ZpbGUgPSBOVUxMOwo+ICsJCXJldCA9IC0yOwo+ICsKPiArCQlnb3RvIG91dDsKPiArCX0KPiAr Cj4gKwlyZXQgPSBjb25maWdfcGFyc2UoKTsKPiArCj4gIG91dDoKPiArCWlmICgha2V5X2ZpbGVf ZW52ICYmIGtleV9maWxlX2xvYykKPiArCQlmcmVlKGtleV9maWxlX2xvYyk7Cj4gKwo+ICAJZnJl ZShzaG9ydF9vcHRzKTsKPiAgCWZyZWUoY29tYmluZWRfb3B0cyk7Cj4gIAo+IEBAIC0xMzQ1LDYg KzE0MTEsOSBAQCB2b2lkIGlndF9leGl0KHZvaWQpCj4gIHsKPiAgCWlndF9leGl0X2NhbGxlZCA9 IHRydWU7Cj4gIAo+ICsJaWYgKGlndF9rZXlfZmlsZSkKPiArCQlnX2tleV9maWxlX2ZyZWUoaWd0 X2tleV9maWxlKTsKPiArCj4gIAlpZiAocnVuX3NpbmdsZV9zdWJ0ZXN0ICYmICFydW5fc2luZ2xl X3N1YnRlc3RfZm91bmQpIHsKPiAgCQlpZ3Rfd2FybigiVW5rbm93biBzdWJ0ZXN0OiAlc1xuIiwg cnVuX3NpbmdsZV9zdWJ0ZXN0KTsKPiAgCQlleGl0KElHVF9FWElUX0lOVkFMSUQpOwo+IGRpZmYg LS1naXQgYS9saWIvaWd0X2NvcmUuaCBiL2xpYi9pZ3RfY29yZS5oCj4gaW5kZXggYTJlZDk3MjAu LjA3MzljYTgzIDEwMDY0NAo+IC0tLSBhL2xpYi9pZ3RfY29yZS5oCj4gKysrIGIvbGliL2lndF9j b3JlLmgKPiBAQCAtNDAsNiArNDAsNyBAQAo+ICAjaW5jbHVkZSA8c3RkYXJnLmg+Cj4gICNpbmNs dWRlIDxnZXRvcHQuaD4KPiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ICsjaW5jbHVkZSA8Z2xpYi5o Pgo+ICAKPiAgI2lmbmRlZiBJR1RfTE9HX0RPTUFJTgo+ICAjZGVmaW5lIElHVF9MT0dfRE9NQUlO IChOVUxMKQo+IEBAIC00OCw2ICs0OSw3IEBACj4gIAo+ICBleHRlcm4gY29uc3QgY2hhciogX19p Z3RfdGVzdF9kZXNjcmlwdGlvbiBfX2F0dHJpYnV0ZV9fKCh3ZWFrKSk7Cj4gIGV4dGVybiBib29s IF9faWd0X3BsYWluX291dHB1dDsKPiArZXh0ZXJuIEdLZXlGaWxlICppZ3Rfa2V5X2ZpbGU7Cj4g IAo+ICAKPiAgLyoqCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFr ZWZpbGUuYW0KPiBpbmRleCBiMDUxMzY0Yy4uZjlkMTFlNmMgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMv TWFrZWZpbGUuYW0KPiArKysgYi90ZXN0cy9NYWtlZmlsZS5hbQo+IEBAIC03Miw5ICs3Miw5IEBA IEFNX0NGTEFHUyA9ICQoRFJNX0NGTEFHUykgJChDV0FSTkZMQUdTKSAtV25vLXVudXNlZC1yZXN1 bHQKPiAkKERFQlVHX0NGTEFHUylcCj4gIAkkKExJQlVOV0lORF9DRkxBR1MpICQoV0VSUk9SX0NG TEFHUykgXAo+ICAJJChOVUxMKQo+ICAKPiAtTERBREQgPSAuLi9saWIvbGliaW50ZWxfdG9vbHMu bGEgJChHTElCX0xJQlMpICQoWE1MUlBDX0xJQlMpCj4gK0xEQUREID0gLi4vbGliL2xpYmludGVs X3Rvb2xzLmxhICQoWE1MUlBDX0xJQlMpCj4gIAo+IC1BTV9DRkxBR1MgKz0gJChDQUlST19DRkxB R1MpICQoTElCVURFVl9DRkxBR1MpICQoR0xJQl9DRkxBR1MpCj4gK0FNX0NGTEFHUyArPSAkKENB SVJPX0NGTEFHUykgJChMSUJVREVWX0NGTEFHUykKPiAgQU1fTERGTEFHUyA9IC1XbCwtLWFzLW5l ZWRlZAo+ICAKPiAgZHJtX2ltcG9ydF9leHBvcnRfQ0ZMQUdTID0gJChBTV9DRkxBR1MpICQoVEhS RUFEX0NGTEFHUykKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvY2hhbWVsaXVtLmMgYi90ZXN0cy9jaGFt ZWxpdW0uYwo+IGluZGV4IDYyNDdkNTM3Li5lMzA2NzY2NCAxMDA2NDQKPiAtLS0gYS90ZXN0cy9j aGFtZWxpdW0uYwo+ICsrKyBiL3Rlc3RzL2NoYW1lbGl1bS5jCj4gQEAgLTQyLDcgKzQyLDYgQEAg dHlwZWRlZiBzdHJ1Y3Qgewo+ICB9IGRhdGFfdDsKPiAgCj4gICNkZWZpbmUgSE9UUExVR19USU1F T1VUIDIwIC8qIHNlY29uZHMgKi8KPiAtI2RlZmluZSBTVVNQRU5EX1JFU1VNRV9ERUxBWSAyMCAv KiBzZWNvbmRzICovCj4gIAo+ICAjZGVmaW5lIEhQRF9TVE9STV9QVUxTRV9JTlRFUlZBTF9EUCAx MDAgLyogbXMgKi8KPiAgI2RlZmluZSBIUERfU1RPUk1fUFVMU0VfSU5URVJWQUxfSERNSSAyMDAg LyogbXMgKi8KPiBAQCAtMjI1LDIxICsyMjQsMjEgQEAgdHJ5X3N1c3BlbmRfcmVzdW1lX2hwZChk YXRhX3QgKmRhdGEsIHN0cnVjdAo+IGNoYW1lbGl1bV9wb3J0ICpwb3J0LAo+ICAJCSAgICAgICBl bnVtIGlndF9zdXNwZW5kX3N0YXRlIHN0YXRlLCBlbnVtIGlndF9zdXNwZW5kX3Rlc3QKPiB0ZXN0 LAo+ICAJCSAgICAgICBzdHJ1Y3QgdWRldl9tb25pdG9yICptb24sIGJvb2wgY29ubmVjdGVkKQo+ ICB7Cj4gKwlpbnQgZGVsYXk7Cj4gIAlpbnQgcDsKPiAgCj4gLQlpZ3Rfc2V0X2F1dG9yZXN1bWVf ZGVsYXkoU1VTUEVORF9SRVNVTUVfREVMQVkpOwo+ICAJaWd0X2ZsdXNoX2hvdHBsdWdzKG1vbik7 Cj4gIAo+ICsJZGVsYXkgPSBpZ3RfZ2V0X2F1dG9yZXN1bWVfZGVsYXkoc3RhdGUpICogMTAwMCAv IDI7Cj4gKwo+ICAJaWYgKHBvcnQpIHsKPiAtCQljaGFtZWxpdW1fc2NoZWR1bGVfaHBkX3RvZ2ds ZShkYXRhLT5jaGFtZWxpdW0sIHBvcnQsCj4gLQkJCQkJICAgICAgU1VTUEVORF9SRVNVTUVfREVM QVkgKiAxMDAwIC8KPiAyLAo+ICsJCWNoYW1lbGl1bV9zY2hlZHVsZV9ocGRfdG9nZ2xlKGRhdGEt PmNoYW1lbGl1bSwgcG9ydCwgZGVsYXksCj4gIAkJCQkJICAgICAgIWNvbm5lY3RlZCk7Cj4gIAl9 IGVsc2Ugewo+ICAJCWZvciAocCA9IDA7IHAgPCBkYXRhLT5wb3J0X2NvdW50OyBwKyspIHsKPiAg CQkJcG9ydCA9IGRhdGEtPnBvcnRzW3BdOwo+ICAJCQljaGFtZWxpdW1fc2NoZWR1bGVfaHBkX3Rv Z2dsZShkYXRhLT5jaGFtZWxpdW0sIHBvcnQsCj4gLQkJCQkJCSAgICAgIFNVU1BFTkRfUkVTVU1F X0RFTEFZICoKPiAxMDAwIC8gMiwKPiAtCQkJCQkJICAgICAgIWNvbm5lY3RlZCk7Cj4gKwkJCQkJ CSAgICAgIGRlbGF5LCAhY29ubmVjdGVkKTsKPiAgCQl9Cj4gIAo+ICAJCXBvcnQgPSBOVUxMOwo+ IGRpZmYgLS1naXQgYS90b29scy9NYWtlZmlsZS5hbSBiL3Rvb2xzL01ha2VmaWxlLmFtCj4gaW5k ZXggMThhNjdlZmIuLmM0MGU3NWM3IDEwMDY0NAo+IC0tLSBhL3Rvb2xzL01ha2VmaWxlLmFtCj4g KysrIGIvdG9vbHMvTWFrZWZpbGUuYW0KPiBAQCAtOSw4ICs5LDggQEAgZW5kaWYKPiAgCj4gIGlm IEhBVkVfVURFVgo+ICBiaW5fUFJPR1JBTVMgKz0gaW50ZWxfZHBfY29tcGxpYW5jZQo+IC1pbnRl bF9kcF9jb21wbGlhbmNlX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAkKEdMSUJfQ0ZMQUdTKQo+IC1p bnRlbF9kcF9jb21wbGlhbmNlX0xEQUREID0gJCh0b3BfYnVpbGRkaXIpL2xpYi9saWJpbnRlbF90 b29scy5sYQo+ICQoR0xJQl9MSUJTKQo+ICtpbnRlbF9kcF9jb21wbGlhbmNlX0NGTEFHUyA9ICQo QU1fQ0ZMQUdTKQo+ICtpbnRlbF9kcF9jb21wbGlhbmNlX0xEQUREID0gJCh0b3BfYnVpbGRkaXIp L2xpYi9saWJpbnRlbF90b29scy5sYQo+ICBlbmRpZgo+ICAKPiAgU1VCRElSUyA9IG51bGxfc3Rh dGVfZ2VuIHJlZ2lzdGVycwotLSAKUGF1bCBLb2NpYWxrb3dza2kgPHBhdWwua29jaWFsa293c2tp QGxpbnV4LmludGVsLmNvbT4KSW50ZWwgRmlubGFuZCBPeSAtIEJJQyAwMzU3NjA2LTQgLSBXZXN0 ZW5kaW5rYXR1IDcsIDAyMTYwIEVzcG9vCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=