From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 89F2C89919 for ; Mon, 13 May 2019 09:03:16 +0000 (UTC) References: <20190513004508.8042-1-andi@etezian.org> <20190513004508.8042-7-andi@etezian.org> From: Tvrtko Ursulin Message-ID: Date: Mon, 13 May 2019 10:03:12 +0100 MIME-Version: 1.0 In-Reply-To: <20190513004508.8042-7-andi@etezian.org> Content-Language: en-US Subject: Re: [igt-dev] [PATCH v23 06/14] test: perf_pmu: use the gem_engine_topology library List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Andi Shyti , IGT dev Cc: Tvrtko Ursulin List-ID: CkhpIEFuZGksCgpDb3VsZCB5b3UgcmVtb3ZlIGNvbnRleHQgY3JlYXRpb24gZm9yIGNwdS1ob3Rw bHVnLCBmcmVxdWVuY3kgYW5kIAppbnRlcnJ1cHRzKiBzdWJ0ZXN0cyBzbyB0aGF0IHRoZWlyIHBs YXRmb3JtIGNvdmVyYWdlIGlzIG5vdCByZWR1Y2VkPyBUaGUgCnBsYW4gd2FzIHRvIHMvSTkxNV9F WEVDX1JFTkRFUi9JOTE1X0VYRUNfREVGQVVMVC8gaW4gdGhvc2UgdGVzdHMgYW5kIApyZWx5IG9u IHJjczAgYWx3YXlzIGJlaW5nIGZpcnN0IGluIHRoZSBlbmdpbmUgbWFwLiAoTWlnaHQgaGVscCB0 byBhZGQgYW4gCmFzc2VydCBpbnRvIHRoZSB0b3BvbG9neSBsaWJyYXJ5IHRvIHRoYXQgZWZmZWN0 IC0gc28gdGhhdCBwb3RlbnRpYWwgCmZ1dHVyZSBmYWlsdXJlcyBhcmUgYXZvaWRlZCBhbmQgZWFz eSB0byBkZWJ1Zy4pCgpSZWdhcmRzLAoKVHZydGtvCgpPbiAxMy8wNS8yMDE5IDAxOjQ1LCBBbmRp IFNoeXRpIHdyb3RlOgo+IEZyb206IEFuZGkgU2h5dGkgPGFuZGkuc2h5dGlAaW50ZWwuY29tPgo+ IAo+IFJlcGxhY2UgdGhlIGxlZ2FjeSBmb3JfZWFjaF9lbmdpbmUqIGRlZmluZXMgd2l0aCB0aGUg b25lcwo+IGltcGxlbWVudGVkIGluIHRoZSBnZW1fZW5naW5lX3RvcG9sb2d5IGxpYnJhcnkuCj4g Cj4gVXNlIHdoZW5ldmVyIHBvc3NpYmxlIGdlbV9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKCkgdGhh dCBjaGVja3MKPiBjbGFzcyBpbnN0ZWFkIG9mIGZsYWdzLgo+IAo+IE5vdyB0aGUgX19mb3JfZWFj aF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgYW5kCj4gZm9yX2VhY2hfZW5naW5lX2NsYXNzX2luc3Rh bmNlIGFyZSB1bnVzZWQsIHJlbW92ZSB0aGVtLgo+IAo+IFN1Z2dlc3RlZC1ieTogVHZydGtvIFVy c3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBBbmRpIFNo eXRpIDxhbmRpLnNoeXRpQGludGVsLmNvbT4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51 cnN1bGluQGxpbnV4LmludGVsLmNvbT4KPiBSZXZpZXdlZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2 cnRrby51cnN1bGluQGludGVsLmNvbT4KPiAtLS0KPiAgIGxpYi9pZ3RfZ3QuaCAgICAgfCAgIDcg LS0tCj4gICB0ZXN0cy9wZXJmX3BtdS5jIHwgMTUxICsrKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0tLS0tCj4gICAyIGZpbGVzIGNoYW5nZWQsIDkxIGluc2VydGlvbnMo KyksIDY3IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9saWIvaWd0X2d0LmggYi9saWIv aWd0X2d0LmgKPiBpbmRleCAwYjVjN2ZjYjRjM2MuLjc3MzE4ZTJhODJiOCAxMDA2NDQKPiAtLS0g YS9saWIvaWd0X2d0LmgKPiArKysgYi9saWIvaWd0X2d0LmgKPiBAQCAtMTE5LDExICsxMTksNCBA QCB2b2lkIGdlbV9yZXF1aXJlX2VuZ2luZShpbnQgZ2VtX2ZkLAo+ICAgCWlndF9yZXF1aXJlKGdl bV9oYXNfZW5naW5lKGdlbV9mZCwgY2xhc3MsIGluc3RhbmNlKSk7Cj4gICB9Cj4gICAKPiAtI2Rl ZmluZSBfX2Zvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShlX18pIFwKPiAtCWZvciAoKGVf XykgPSBpbnRlbF9leGVjdXRpb25fZW5naW5lczI7IChlX18pLT5uYW1lOyAoZV9fKSsrKQo+IC0K PiAtI2RlZmluZSBmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZmRfXywgZV9fKSBcCj4g LQlmb3IgKChlX18pID0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXMyOyAoZV9fKS0+bmFtZTsgKGVf XykrKykgXAo+IC0JCWZvcl9pZiAoZ2VtX2hhc19lbmdpbmUoKGZkX18pLCAoZV9fKS0+Y2xhc3Ms IChlX18pLT5pbnN0YW5jZSkpCj4gLQo+ICAgI2VuZGlmIC8qIElHVF9HVF9IICovCj4gZGlmZiAt LWdpdCBhL3Rlc3RzL3BlcmZfcG11LmMgYi90ZXN0cy9wZXJmX3BtdS5jCj4gaW5kZXggZTcxOWEy OTJhM2QxLi43MmNlZTUzYTRlZmMgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvcGVyZl9wbXUuYwo+ICsr KyBiL3Rlc3RzL3BlcmZfcG11LmMKPiBAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgaW50IG9wZW5f Z3JvdXAodWludDY0X3QgY29uZmlnLCBpbnQgZ3JvdXApCj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2 b2lkCj4gLWluaXQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdp bmUyICplLCB1aW50OF90IHNhbXBsZSkKPiAraW5pdChpbnQgZ2VtX2ZkLCBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVpbnQ4X3Qgc2FtcGxlKQo+ICAgewo+ICAgCWludCBmZCwg ZXJyID0gMDsKPiAgIAlib29sIGV4aXN0czsKPiBAQCAtODIsNyArODIsNyBAQCBpbml0KGludCBn ZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwgdWludDhfdCBz YW1wbGUpCj4gICAJaWYgKGZkIDwgMCkKPiAgIAkJZXJyID0gZXJybm87Cj4gICAKPiAtCWV4aXN0 cyA9IGdlbV9oYXNfZW5naW5lKGdlbV9mZCwgZS0+Y2xhc3MsIGUtPmluc3RhbmNlKTsKPiArCWV4 aXN0cyA9IGdlbV9jb250ZXh0X2hhc19lbmdpbmUoZ2VtX2ZkLCAwLCBlLT5mbGFncyk7Cj4gICAJ aWYgKGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGdlbV9mZCkpIDwgNiAmJgo+ICAgCSAg ICBzYW1wbGUgPT0gSTkxNV9TQU1QTEVfU0VNQSkKPiAgIAkJZXhpc3RzID0gZmFsc2U7Cj4gQEAg LTE1OCwxMSArMTU4LDYgQEAgc3RhdGljIHVuc2lnbmVkIGludCBtZWFzdXJlZF91c2xlZXAodW5z aWduZWQgaW50IHVzZWMpCj4gICAJcmV0dXJuIGlndF9uc2VjX2VsYXBzZWQoJnRzKTsKPiAgIH0K PiAgIAo+IC1zdGF0aWMgdW5zaWduZWQgaW50IGUycmluZyhpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1 Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCj4gLXsKPiAtCXJldHVybiBnZW1fY2xhc3Nf aW5zdGFuY2VfdG9fZWJfZmxhZ3MoZ2VtX2ZkLCBlLT5jbGFzcywgZS0+aW5zdGFuY2UpOwo+IC19 Cj4gLQo+ICAgI2RlZmluZSBURVNUX0JVU1kgKDEpCj4gICAjZGVmaW5lIEZMQUdfU1lOQyAoMikK PiAgICNkZWZpbmUgVEVTVF9UUkFJTElOR19JRExFICg0KQo+IEBAIC0xNzAsMTQgKzE2NSwxNSBA QCBzdGF0aWMgdW5zaWduZWQgaW50IGUycmluZyhpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50 ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCj4gICAjZGVmaW5lIEZMQUdfTE9ORyAoMTYpCj4gICAj ZGVmaW5lIEZMQUdfSEFORyAoMzIpCj4gICAKPiAtc3RhdGljIGlndF9zcGluX3QgKiBfX3NwaW5f cG9sbChpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWduZWQgbG9uZyBmbGFncykKPiArc3RhdGlj IGlndF9zcGluX3QgKiBfX3NwaW5fcG9sbChpbnQgZmQsIHVpbnQzMl90IGN0eCwKPiArCQkJCXN0 cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgaWd0X3Nw aW5fZmFjdG9yeSBvcHRzID0gewo+ICAgCQkuY3R4ID0gY3R4LAo+IC0JCS5lbmdpbmUgPSBmbGFn cywKPiArCQkuZW5naW5lID0gZS0+ZmxhZ3MsCj4gICAJfTsKPiAgIAo+IC0JaWYgKGdlbV9jYW5f c3RvcmVfZHdvcmQoZmQsIGZsYWdzKSkKPiArCWlmIChnZW1fY2xhc3NfY2FuX3N0b3JlX2R3b3Jk KGZkLCBlLT5jbGFzcykpCj4gICAJCW9wdHMuZmxhZ3MgfD0gSUdUX1NQSU5fUE9MTF9SVU47Cj4g ICAKPiAgIAlyZXR1cm4gX19pZ3Rfc3Bpbl9mYWN0b3J5KGZkLCAmb3B0cyk7Cj4gQEAgLTIwOSwy MCArMjA1LDM0IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIF9fc3Bpbl93YWl0KGludCBmZCwgaWd0 X3NwaW5fdCAqc3BpbikKPiAgIAlyZXR1cm4gaWd0X25zZWNfZWxhcHNlZCgmc3RhcnQpOwo+ICAg fQo+ICAgCj4gLXN0YXRpYyBpZ3Rfc3Bpbl90ICogX19zcGluX3N5bmMoaW50IGZkLCB1aW50MzJf dCBjdHgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCj4gK3N0YXRpYyBpZ3Rfc3Bpbl90ICogX19zcGlu X3N5bmMoaW50IGZkLCB1aW50MzJfdCBjdHgsCj4gKwkJCQlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9u X2VuZ2luZTIgKmUpCj4gICB7Cj4gLQlpZ3Rfc3Bpbl90ICpzcGluID0gX19zcGluX3BvbGwoZmQs IGN0eCwgZmxhZ3MpOwo+ICsJaWd0X3NwaW5fdCAqc3BpbiA9IF9fc3Bpbl9wb2xsKGZkLCBjdHgs IGUpOwo+ICAgCj4gICAJX19zcGluX3dhaXQoZmQsIHNwaW4pOwo+ICAgCj4gICAJcmV0dXJuIHNw aW47Cj4gICB9Cj4gICAKPiAtc3RhdGljIGlndF9zcGluX3QgKiBzcGluX3N5bmMoaW50IGZkLCB1 aW50MzJfdCBjdHgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCj4gK3N0YXRpYyBpZ3Rfc3Bpbl90ICog c3Bpbl9zeW5jKGludCBmZCwgdWludDMyX3QgY3R4LAo+ICsJCQkgICAgICBzdHJ1Y3QgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZTIgKmUpCj4gICB7Cj4gICAJaWd0X3JlcXVpcmVfZ2VtKGZkKTsKPiAg IAo+IC0JcmV0dXJuIF9fc3Bpbl9zeW5jKGZkLCBjdHgsIGZsYWdzKTsKPiArCXJldHVybiBfX3Nw aW5fc3luYyhmZCwgY3R4LCBlKTsKPiArfQo+ICsKPiArc3RhdGljIGlndF9zcGluX3QgKiBzcGlu X3N5bmNfZmxhZ3MoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGludCBmbGFncykKPiAr ewo+ICsJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyIGUgPSB7IH07Cj4gKwo+ICsJZS5j bGFzcyA9IGdlbV9leGVjYnVmX2ZsYWdzX3RvX2VuZ2luZV9jbGFzcyhmbGFncyk7Cj4gKwllLmlu c3RhbmNlID0gKGZsYWdzICYgKEk5MTVfRVhFQ19CU0RfTUFTSyB8IEk5MTVfRVhFQ19SSU5HX01B U0spKSA9PQo+ICsJCSAgICAgKEk5MTVfRVhFQ19CU0QgfCBJOTE1X0VYRUNfQlNEX1JJTkcyKSA/ IDEgOiAwOwo+ICsJZS5mbGFncyA9IGZsYWdzOwo+ICsKPiArCXJldHVybiBzcGluX3N5bmMoZmQs IGN0eCwgJmUpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBlbmRfc3BpbihpbnQgZmQsIGln dF9zcGluX3QgKnNwaW4sIHVuc2lnbmVkIGludCBmbGFncykKPiBAQCAtMjU3LDcgKzI2Nyw3IEBA IHN0YXRpYyB2b2lkIGVuZF9zcGluKGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbiwgdW5zaWduZWQg aW50IGZsYWdzKQo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZAo+IC1zaW5nbGUoaW50IGdlbV9m ZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNpZ25lZCBpbnQg ZmxhZ3MpCj4gK3NpbmdsZShpbnQgZ2VtX2ZkLCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgKmUsIHVuc2lnbmVkIGludCBmbGFncykKPiAgIHsKPiAgIAl1bnNpZ25lZCBsb25nIHNsZXB0 Owo+ICAgCWlndF9zcGluX3QgKnNwaW47Cj4gQEAgLTI2Nyw3ICsyNzcsNyBAQCBzaW5nbGUoaW50 IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNpZ25l ZCBpbnQgZmxhZ3MpCj4gICAJZmQgPSBvcGVuX3BtdShJOTE1X1BNVV9FTkdJTkVfQlVTWShlLT5j bGFzcywgZS0+aW5zdGFuY2UpKTsKPiAgIAo+ICAgCWlmIChmbGFncyAmIFRFU1RfQlVTWSkKPiAt CQlzcGluID0gc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkpOwo+ICsJCXNw aW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBlKTsKPiAgIAllbHNlCj4gICAJCXNwaW4gPSBOVUxM Owo+ICAgCj4gQEAgLTMwMyw3ICszMTMsNyBAQCBzaW5nbGUoaW50IGdlbV9mZCwgY29uc3Qgc3Ry dWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gICB9 Cj4gICAKPiAgIHN0YXRpYyB2b2lkCj4gLWJ1c3lfc3RhcnQoaW50IGdlbV9mZCwgY29uc3Qgc3Ry dWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQo+ICtidXN5X3N0YXJ0KGludCBnZW1fZmQs IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKPiAgIHsKPiAgIAl1bnNpZ25lZCBs b25nIHNsZXB0Owo+ICAgCXVpbnQ2NF90IHZhbCwgdHNbMl07Cj4gQEAgLTMxNiw3ICszMjYsNyBA QCBidXN5X3N0YXJ0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5n aW5lMiAqZSkKPiAgIAkgKi8KPiAgIAlzbGVlcCgyKTsKPiAgIAo+IC0Jc3BpbiA9IF9fc3Bpbl9z eW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkpOwo+ICsJc3BpbiA9IF9fc3Bpbl9zeW5j KGdlbV9mZCwgMCwgZSk7Cj4gICAKPiAgIAlmZCA9IG9wZW5fcG11KEk5MTVfUE1VX0VOR0lORV9C VVNZKGUtPmNsYXNzLCBlLT5pbnN0YW5jZSkpOwo+ICAgCj4gQEAgLTMzOCw3ICszNDgsNyBAQCBi dXN5X3N0YXJ0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5l MiAqZSkKPiAgICAqIHdpbGwgZGVwZW5kIG9uIHRoZSBDSSBzeXN0ZW1zIHJ1bm5pbmcgaXQgYSBs b3QgdG8gZGV0ZWN0IGlzc3Vlcy4KPiAgICAqLwo+ICAgc3RhdGljIHZvaWQKPiAtYnVzeV9kb3Vi bGVfc3RhcnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy ICplKQo+ICtidXN5X2RvdWJsZV9zdGFydChpbnQgZ2VtX2ZkLCBzdHJ1Y3QgaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZTIgKmUpCj4gICB7Cj4gICAJdW5zaWduZWQgbG9uZyBzbGVwdDsKPiAgIAl1aW50 NjRfdCB2YWwsIHZhbDIsIHRzWzJdOwo+IEBAIC0zNDcsNiArMzU3LDcgQEAgYnVzeV9kb3VibGVf c3RhcnQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICpl KQo+ICAgCWludCBmZDsKPiAgIAo+ICAgCWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShnZW1fZmQp Owo+ICsJZ2VtX2NvbnRleHRfc2V0X2FsbF9lbmdpbmVzKGdlbV9mZCwgY3R4KTsKPiAgIAo+ICAg CS8qCj4gICAJICogRGVmZWF0IHRoZSBidXN5IHN0YXRzIGRlbGF5ZWQgZGlzYWJsZSwgd2UgbmVl ZCB0byBndWFyYW50ZWUgd2UgYXJlCj4gQEAgLTM1OSwxMSArMzcwLDExIEBAIGJ1c3lfZG91Ymxl X3N0YXJ0KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAq ZSkKPiAgIAkgKiByZS1zdWJtaXNzaW9uIGluIGV4ZWNsaXN0cyBtb2RlLiBNYWtlIHN1cmUgYnVz eW5lc3MgaXMgY29ycmVjdGx5Cj4gICAJICogcmVwb3J0ZWQgd2l0aCB0aGUgZW5naW5lIGJ1c3ks IGFuZCBhZnRlciB0aGUgZW5naW5lIHdlbnQgaWRsZS4KPiAgIAkgKi8KPiAtCXNwaW5bMF0gPSBf X3NwaW5fc3luYyhnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKPiArCXNwaW5bMF0gPSBf X3NwaW5fc3luYyhnZW1fZmQsIDAsIGUpOwo+ICAgCXVzbGVlcCg1MDBlMyk7Cj4gICAJc3Bpblsx XSA9IF9faWd0X3NwaW5fbmV3KGdlbV9mZCwKPiAgIAkJCQkgLmN0eCA9IGN0eCwKPiAtCQkJCSAu ZW5naW5lID0gZTJyaW5nKGdlbV9mZCwgZSkpOwo+ICsJCQkJIC5lbmdpbmUgPSBlLT5mbGFncyk7 Cj4gICAKPiAgIAkvKgo+ICAgCSAqIE9wZW4gUE1VIGFzIGZhc3QgYXMgcG9zc2libGUgYWZ0ZXIg dGhlIHNlY29uZCBzcGluIGJhdGNoIGluIGF0dGVtcHQKPiBAQCAtNDIxLDEwICs0MzIsMTAgQEAg c3RhdGljIHZvaWQgbG9nX2J1c3kodW5zaWduZWQgaW50IG51bV9lbmdpbmVzLCB1aW50NjRfdCAq dmFsKQo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZAo+IC1idXN5X2NoZWNrX2FsbChpbnQgZ2Vt X2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCj4gK2J1c3lfY2hl Y2tfYWxsKGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKPiAg IAkgICAgICAgY29uc3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVzLCB1bnNpZ25lZCBpbnQgZmxh Z3MpCj4gICB7Cj4gLQljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmVfOwo+ ICsJc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplXzsKPiAgIAl1aW50NjRfdCB0dmFs WzJdW251bV9lbmdpbmVzXTsKPiAgIAl1bnNpZ25lZCBpbnQgYnVzeV9pZHggPSAwLCBpOwo+ICAg CXVpbnQ2NF90IHZhbFtudW1fZW5naW5lc107Cj4gQEAgLTQzNCw4ICs0NDUsOCBAQCBidXN5X2No ZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIg KmUsCj4gICAKPiAgIAlpID0gMDsKPiAgIAlmZFswXSA9IC0xOwo+IC0JZm9yX2VhY2hfZW5naW5l X2NsYXNzX2luc3RhbmNlKGdlbV9mZCwgZV8pIHsKPiAtCQlpZiAoZSA9PSBlXykKPiArCV9fZm9y X2VhY2hfcGh5c2ljYWxfZW5naW5lKGdlbV9mZCwgZV8pIHsKPiArCQlpZiAoZS0+Y2xhc3MgPT0g ZV8tPmNsYXNzICYmIGUtPmluc3RhbmNlID09IGVfLT5pbnN0YW5jZSkKPiAgIAkJCWJ1c3lfaWR4 ID0gaTsKPiAgIAo+ICAgCQlmZFtpKytdID0gb3Blbl9ncm91cChJOTE1X1BNVV9FTkdJTkVfQlVT WShlXy0+Y2xhc3MsCj4gQEAgLTQ0NSw3ICs0NTYsNyBAQCBidXN5X2NoZWNrX2FsbChpbnQgZ2Vt X2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCj4gICAKPiAgIAlp Z3RfYXNzZXJ0X2VxKGksIG51bV9lbmdpbmVzKTsKPiAgIAo+IC0Jc3BpbiA9IHNwaW5fc3luYyhn ZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKPiArCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2Zk LCAwLCBlKTsKPiAgIAlwbXVfcmVhZF9tdWx0aShmZFswXSwgbnVtX2VuZ2luZXMsIHR2YWxbMF0p Owo+ICAgCXNsZXB0ID0gbWVhc3VyZWRfdXNsZWVwKGJhdGNoX2R1cmF0aW9uX25zIC8gMTAwMCk7 Cj4gICAJaWYgKGZsYWdzICYgVEVTVF9UUkFJTElOR19JRExFKQo+IEBAIC00NzgsMTcgKzQ4OSwx NyBAQCBfX3N1Ym1pdF9zcGluKGludCBnZW1fZmQsIGlndF9zcGluX3QgKnNwaW4sCj4gICAJc3Ry dWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBlYiA9IHNwaW4tPmV4ZWNidWY7Cj4gICAKPiAg IAllYi5mbGFncyAmPSB+KDB4M2YgfCBJOTE1X0VYRUNfQlNEX01BU0spOwo+IC0JZWIuZmxhZ3Mg fD0gZTJyaW5nKGdlbV9mZCwgZSkgfCBJOTE1X0VYRUNfTk9fUkVMT0M7Cj4gKwllYi5mbGFncyB8 PSBlLT5mbGFncyB8IEk5MTVfRVhFQ19OT19SRUxPQzsKPiAgIAllYi5iYXRjaF9zdGFydF9vZmZz ZXQgKz0gb2Zmc2V0Owo+ICAgCj4gICAJZ2VtX2V4ZWNidWYoZ2VtX2ZkLCAmZWIpOwo+ICAgfQo+ ICAgCj4gICBzdGF0aWMgdm9pZAo+IC1tb3N0X2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNv bnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKPiArbW9zdF9idXN5X2NoZWNr X2FsbChpbnQgZ2VtX2ZkLCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCj4gICAJ CSAgICBjb25zdCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsIHVuc2lnbmVkIGludCBmbGFncykK PiAgIHsKPiAtCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZV87Cj4gKwlz dHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmVfOwo+ICAgCXVpbnQ2NF90IHR2YWxbMl1b bnVtX2VuZ2luZXNdOwo+ICAgCXVpbnQ2NF90IHZhbFtudW1fZW5naW5lc107Cj4gICAJaW50IGZk W251bV9lbmdpbmVzXTsKPiBAQCAtNDk3LDEzICs1MDgsMTMgQEAgbW9zdF9idXN5X2NoZWNrX2Fs bChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCj4g ICAJdW5zaWduZWQgaW50IGlkbGVfaWR4LCBpOwo+ICAgCj4gICAJaSA9IDA7Cj4gLQlmb3JfZWFj aF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZ2VtX2ZkLCBlXykgewo+IC0JCWlmIChlID09IGVfKQo+ ICsJX19mb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUoZ2VtX2ZkLCBlXykgewo+ICsJCWlmIChlLT5j bGFzcyA9PSBlXy0+Y2xhc3MgJiYgZS0+aW5zdGFuY2UgPT0gZV8tPmluc3RhbmNlKQo+ICAgCQkJ aWRsZV9pZHggPSBpOwo+ICAgCQllbHNlIGlmIChzcGluKQo+ICAgCQkJX19zdWJtaXRfc3Bpbihn ZW1fZmQsIHNwaW4sIGVfLCA2NCk7Cj4gICAJCWVsc2UKPiAtCQkJc3BpbiA9IF9fc3Bpbl9wb2xs KGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZV8pKTsKPiArCQkJc3BpbiA9IF9fc3Bpbl9wb2xs KGdlbV9mZCwgMCwgZV8pOwo+ICAgCj4gICAJCXZhbFtpKytdID0gSTkxNV9QTVVfRU5HSU5FX0JV U1koZV8tPmNsYXNzLCBlXy0+aW5zdGFuY2UpOwo+ICAgCX0KPiBAQCAtNTQ1LDcgKzU1Niw3IEBA IHN0YXRpYyB2b2lkCj4gICBhbGxfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29uc3QgdW5z aWduZWQgaW50IG51bV9lbmdpbmVzLAo+ICAgCQkgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gICB7 Cj4gLQljb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmU7Cj4gKwlzdHJ1Y3Qg aW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmU7Cj4gICAJdWludDY0X3QgdHZhbFsyXVtudW1fZW5n aW5lc107Cj4gICAJdWludDY0X3QgdmFsW251bV9lbmdpbmVzXTsKPiAgIAlpbnQgZmRbbnVtX2Vu Z2luZXNdOwo+IEBAIC01NTQsMTEgKzU2NSwxMSBAQCBhbGxfYnVzeV9jaGVja19hbGwoaW50IGdl bV9mZCwgY29uc3QgdW5zaWduZWQgaW50IG51bV9lbmdpbmVzLAo+ICAgCXVuc2lnbmVkIGludCBp Owo+ICAgCj4gICAJaSA9IDA7Cj4gLQlmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZ2Vt X2ZkLCBlKSB7Cj4gKwlfX2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShnZW1fZmQsIGUpIHsKPiAg IAkJaWYgKHNwaW4pCj4gICAJCQlfX3N1Ym1pdF9zcGluKGdlbV9mZCwgc3BpbiwgZSwgNjQpOwo+ ICAgCQllbHNlCj4gLQkJCXNwaW4gPSBfX3NwaW5fcG9sbChnZW1fZmQsIDAsIGUycmluZyhnZW1f ZmQsIGUpKTsKPiArCQkJc3BpbiA9IF9fc3Bpbl9wb2xsKGdlbV9mZCwgMCwgZSk7Cj4gICAKPiAg IAkJdmFsW2krK10gPSBJOTE1X1BNVV9FTkdJTkVfQlVTWShlLT5jbGFzcywgZS0+aW5zdGFuY2Up Owo+ICAgCX0KPiBAQCAtNTkyLDcgKzYwMyw3IEBAIGFsbF9idXN5X2NoZWNrX2FsbChpbnQgZ2Vt X2ZkLCBjb25zdCB1bnNpZ25lZCBpbnQgbnVtX2VuZ2luZXMsCj4gICB9Cj4gICAKPiAgIHN0YXRp YyB2b2lkCj4gLW5vX3NlbWEoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gK25vX3NlbWEoaW50IGdlbV9mZCwg c3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4g ICB7Cj4gICAJaWd0X3NwaW5fdCAqc3BpbjsKPiAgIAl1aW50NjRfdCB2YWxbMl1bMl07Cj4gQEAg LTYwMiw3ICs2MTMsNyBAQCBub19zZW1hKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9l eGVjdXRpb25fZW5naW5lMiAqZSwgdW5zaWduZWQgaW50IGZsYWdzKQo+ICAgCW9wZW5fZ3JvdXAo STkxNV9QTVVfRU5HSU5FX1dBSVQoZS0+Y2xhc3MsIGUtPmluc3RhbmNlKSwgZmQpOwo+ICAgCj4g ICAJaWYgKGZsYWdzICYgVEVTVF9CVVNZKQo+IC0JCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAw LCBlMnJpbmcoZ2VtX2ZkLCBlKSk7Cj4gKwkJc3BpbiA9IHNwaW5fc3luYyhnZW1fZmQsIDAsIGUp Owo+ICAgCWVsc2UKPiAgIAkJc3BpbiA9IE5VTEw7Cj4gICAKPiBAQCAtNjMxLDcgKzY0Miw3IEBA IG5vX3NlbWEoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy ICplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gICAjZGVmaW5lICAgTUlfU0VNQVBIT1JFX1NBRF9H VEVfU0RECSgxPDwxMikKPiAgIAo+ICAgc3RhdGljIHZvaWQKPiAtc2VtYV93YWl0KGludCBnZW1f ZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKPiArc2VtYV93YWl0 KGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKPiAgIAkgIHVu c2lnbmVkIGludCBmbGFncykKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRp b25fZW50cnkgcmVsb2NbMl0gPSB7fTsKPiBAQCAtNjg5LDcgKzcwMCw3IEBAIHNlbWFfd2FpdChp bnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCj4gICAK PiAgIAllYi5idWZmZXJfY291bnQgPSAyOwo+ICAgCWViLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9w b2ludGVyKG9iaik7Cj4gLQllYi5mbGFncyA9IGUycmluZyhnZW1fZmQsIGUpOwo+ICsJZWIuZmxh Z3MgPSBlLT5mbGFnczsKPiAgIAo+ICAgCS8qKgo+ICAgCSAqIFN0YXJ0IHRoZSBzZW1hcGhvcmUg d2FpdCBQTVUgYW5kIGFmdGVyIHNvbWUga25vd24gdGltZSBsZXQgdGhlIGFib3ZlCj4gQEAgLTc5 Miw3ICs4MDMsNyBAQCBzdGF0aWMgaW50IHdhaXRfdmJsYW5rKGludCBmZCwgdW5pb24gZHJtX3dh aXRfdmJsYW5rICp2YmwpCj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkCj4gLWV2ZW50X3dhaXQo aW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQo+ICtl dmVudF93YWl0KGludCBnZW1fZmQsIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkK PiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmogPSB7IH07Cj4g ICAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBlYiA9IHsgfTsKPiBAQCAtODQ1LDcg Kzg1Niw3IEBAIGV2ZW50X3dhaXQoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1 dGlvbl9lbmdpbmUyICplKQo+ICAgCj4gICAJZWIuYnVmZmVyX2NvdW50ID0gMTsKPiAgIAllYi5i dWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigmb2JqKTsKPiAtCWViLmZsYWdzID0gZTJyaW5n KGdlbV9mZCwgZSkgfCBJOTE1X0VYRUNfU0VDVVJFOwo+ICsJZWIuZmxhZ3MgPSBlLT5mbGFncyB8 IEk5MTVfRVhFQ19TRUNVUkU7Cj4gICAKPiAgIAlmb3JfZWFjaF9waXBlX3dpdGhfdmFsaWRfb3V0 cHV0KCZkYXRhLmRpc3BsYXksIHAsIG91dHB1dCkgewo+ICAgCQlzdHJ1Y3QgaWd0X2hlbHBlcl9w cm9jZXNzIHdhaXRlciA9IHsgfTsKPiBAQCAtOTE3LDcgKzkyOCw3IEBAIGV2ZW50X3dhaXQoaW50 IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQo+ICAgfQo+ ICAgCj4gICBzdGF0aWMgdm9pZAo+IC1tdWx0aV9jbGllbnQoaW50IGdlbV9mZCwgY29uc3Qgc3Ry dWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQo+ICttdWx0aV9jbGllbnQoaW50IGdlbV9m ZCwgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQo+ICAgewo+ICAgCXVpbnQ2NF90 IGNvbmZpZyA9IEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNsYXNzLCBlLT5pbnN0YW5jZSk7Cj4g ICAJdW5zaWduZWQgbG9uZyBzbGVwdFsyXTsKPiBAQCAtOTM2LDcgKzk0Nyw3IEBAIG11bHRpX2Ns aWVudChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUp Cj4gICAJICovCj4gICAJZmRbMV0gPSBvcGVuX3BtdShjb25maWcpOwo+ICAgCj4gLQlzcGluID0g c3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdlbV9mZCwgZSkpOwo+ICsJc3BpbiA9IHNwaW5f c3luYyhnZW1fZmQsIDAsIGUpOwo+ICAgCj4gICAJdmFsWzBdID0gdmFsWzFdID0gX19wbXVfcmVh ZF9zaW5nbGUoZmRbMF0sICZ0c1swXSk7Cj4gICAJc2xlcHRbMV0gPSBtZWFzdXJlZF91c2xlZXAo YmF0Y2hfZHVyYXRpb25fbnMgLyAxMDAwKTsKPiBAQCAtMTAzOSw2ICsxMDUwLDcgQEAgc3RhdGlj IHZvaWQgY3B1X2hvdHBsdWcoaW50IGdlbV9mZCkKPiAgIAlpZ3Rfc3Bpbl90ICpzcGluWzJdOwo+ ICAgCXVpbnQ2NF90IHRzWzJdOwo+ICAgCXVpbnQ2NF90IHZhbDsKPiArCXVpbnQzMl90IGN0eDsK PiAgIAlpbnQgbGlua1syXTsKPiAgIAlpbnQgZmQsIHJldDsKPiAgIAlpbnQgY3VyID0gMDsKPiBA QCAtMTA0NiwxNCArMTA1OCwxNyBAQCBzdGF0aWMgdm9pZCBjcHVfaG90cGx1ZyhpbnQgZ2VtX2Zk KQo+ICAgCj4gICAJaWd0X3JlcXVpcmUoY3B1MF9ob3RwbHVnX3N1cHBvcnQoKSk7Cj4gICAKPiAr CWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShnZW1fZmQpOwo+ICsKPiAgIAlmZCA9IG9wZW5fcG11 KEk5MTVfUE1VX0VOR0lORV9CVVNZKEk5MTVfRU5HSU5FX0NMQVNTX1JFTkRFUiwgMCkpOwo+ICAg Cj4gICAJLyoKPiAgIAkgKiBDcmVhdGUgdHdvIHNwaW5uZXJzIHNvIHRlc3QgY2FuIGVuc3VyZSBz aG9ydGVyIGdhcHMgaW4gZW5naW5lCj4gICAJICogYnVzeW5lc3MgYXMgaXQgaXMgdGVybWluYXRp bmcgb25lIGFuZCByZS1zdGFydGluZyB0aGUgb3RoZXIuCj4gICAJICovCj4gLQlzcGluWzBdID0g aWd0X3NwaW5fbmV3KGdlbV9mZCwgLmVuZ2luZSA9IEk5MTVfRVhFQ19SRU5ERVIpOwo+IC0Jc3Bp blsxXSA9IF9faWd0X3NwaW5fbmV3KGdlbV9mZCwgLmVuZ2luZSA9IEk5MTVfRVhFQ19SRU5ERVIp Owo+ICsJc3BpblswXSA9IGlndF9zcGluX25ldyhnZW1fZmQsIC5lbmdpbmUgPSBJOTE1X0VYRUNf UkVOREVSLCAuY3R4ID0gY3R4KTsKPiArCXNwaW5bMV0gPSBfX2lndF9zcGluX25ldyhnZW1fZmQs IC5lbmdpbmUgPSBJOTE1X0VYRUNfUkVOREVSLAo+ICsJCQkJIC5jdHggPSBjdHgpOwo+ICAgCj4g ICAJdmFsID0gX19wbXVfcmVhZF9zaW5nbGUoZmQsICZ0c1swXSk7Cj4gICAKPiBAQCAtMTEzNyw2 ICsxMTUyLDcgQEAgc3RhdGljIHZvaWQgY3B1X2hvdHBsdWcoaW50IGdlbV9mZCkKPiAgIAo+ICAg CQlpZ3Rfc3Bpbl9mcmVlKGdlbV9mZCwgc3BpbltjdXJdKTsKPiAgIAkJc3BpbltjdXJdID0gX19p Z3Rfc3Bpbl9uZXcoZ2VtX2ZkLAo+ICsJCQkJCSAgIC5jdHggPSBjdHgsCj4gICAJCQkJCSAgIC5l bmdpbmUgPSBJOTE1X0VYRUNfUkVOREVSKTsKPiAgIAkJY3VyIF49IDE7Cj4gICAJfQo+IEBAIC0x MTUwLDYgKzExNjYsNyBAQCBzdGF0aWMgdm9pZCBjcHVfaG90cGx1ZyhpbnQgZ2VtX2ZkKQo+ICAg CWlndF93YWl0Y2hpbGRyZW4oKTsKPiAgIAljbG9zZShmZCk7Cj4gICAJY2xvc2UobGlua1swXSk7 Cj4gKwlnZW1fY29udGV4dF9kZXN0cm95KGdlbV9mZCwgY3R4KTsKPiAgIAo+ICAgCS8qIFNraXAg aWYgY2hpbGQgc2lnbmFscyBhIHByb2JsZW0gd2l0aCBvZmZsaW5pbmcgYSBDUFUuICovCj4gICAJ aWd0X3NraXBfb24oYnVmID09ICdzJyk7Cj4gQEAgLTExNjUsMTcgKzExODIsMjEgQEAgdGVzdF9p bnRlcnJ1cHRzKGludCBnZW1fZmQpCj4gICAJaWd0X3NwaW5fdCAqc3Bpblt0YXJnZXRdOwo+ICAg CXN0cnVjdCBwb2xsZmQgcGZkOwo+ICAgCXVpbnQ2NF90IGlkbGUsIGJ1c3k7Cj4gKwl1aW50MzJf dCBjdHg7Cj4gICAJaW50IGZlbmNlX2ZkOwo+ICAgCWludCBmZDsKPiAgIAo+ICAgCWdlbV9xdWll c2NlbnRfZ3B1KGdlbV9mZCk7Cj4gICAKPiArCWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShnZW1f ZmQpOwo+ICsKPiAgIAlmZCA9IG9wZW5fcG11KEk5MTVfUE1VX0lOVEVSUlVQVFMpOwo+ICAgCj4g ICAJLyogUXVldWUgc3Bpbm5pbmcgYmF0Y2hlcy4gKi8KPiAgIAlmb3IgKGludCBpID0gMDsgaSA8 IHRhcmdldDsgaSsrKSB7Cj4gICAJCXNwaW5baV0gPSBfX2lndF9zcGluX25ldyhnZW1fZmQsCj4g ICAJCQkJCSAuZW5naW5lID0gSTkxNV9FWEVDX1JFTkRFUiwKPiArCQkJCQkgLmN0eCA9IGN0eCwK PiAgIAkJCQkJIC5mbGFncyA9IElHVF9TUElOX0ZFTkNFX09VVCk7Cj4gICAJCWlmIChpID09IDAp IHsKPiAgIAkJCWZlbmNlX2ZkID0gc3BpbltpXS0+b3V0X2ZlbmNlOwo+IEBAIC0xMjE3LDYgKzEy MzgsNyBAQCB0ZXN0X2ludGVycnVwdHMoaW50IGdlbV9mZCkKPiAgIAkvKiBDaGVjayBhdCBsZWFz dCBhcyBtYW55IGludGVycnVwdHMgaGFzIGJlZW4gZ2VuZXJhdGVkLiAqLwo+ICAgCWJ1c3kgPSBw bXVfcmVhZF9zaW5nbGUoZmQpIC0gaWRsZTsKPiAgIAljbG9zZShmZCk7Cj4gKwlnZW1fY29udGV4 dF9kZXN0cm95KGdlbV9mZCwgY3R4KTsKPiAgIAo+ICAgCWlndF9hc3NlcnRfbHRlKHRhcmdldCwg YnVzeSk7Cj4gICB9Cj4gQEAgLTEyMjksMTUgKzEyNTEsMTkgQEAgdGVzdF9pbnRlcnJ1cHRzX3N5 bmMoaW50IGdlbV9mZCkKPiAgIAlpZ3Rfc3Bpbl90ICpzcGluW3RhcmdldF07Cj4gICAJc3RydWN0 IHBvbGxmZCBwZmQ7Cj4gICAJdWludDY0X3QgaWRsZSwgYnVzeTsKPiArCXVpbnQzMl90IGN0eDsK PiAgIAlpbnQgZmQ7Cj4gICAKPiAgIAlnZW1fcXVpZXNjZW50X2dwdShnZW1fZmQpOwo+ICAgCj4g KwljdHggPSBnZW1fY29udGV4dF9jcmVhdGUoZ2VtX2ZkKTsKPiArCj4gICAJZmQgPSBvcGVuX3Bt dShJOTE1X1BNVV9JTlRFUlJVUFRTKTsKPiAgIAo+ICAgCS8qIFF1ZXVlIHNwaW5uaW5nIGJhdGNo ZXMuICovCj4gICAJZm9yIChpbnQgaSA9IDA7IGkgPCB0YXJnZXQ7IGkrKykKPiAgIAkJc3Bpbltp XSA9IF9faWd0X3NwaW5fbmV3KGdlbV9mZCwKPiArCQkJCQkgLmN0eCA9IGN0eCwKPiAgIAkJCQkJ IC5mbGFncyA9IElHVF9TUElOX0ZFTkNFX09VVCk7Cj4gICAKPiAgIAkvKiBXYWl0IGZvciBpZGxl IHN0YXRlLiAqLwo+IEBAIC0xMjYyLDYgKzEyODgsNyBAQCB0ZXN0X2ludGVycnVwdHNfc3luYyhp bnQgZ2VtX2ZkKQo+ICAgCS8qIENoZWNrIGF0IGxlYXN0IGFzIG1hbnkgaW50ZXJydXB0cyBoYXMg YmVlbiBnZW5lcmF0ZWQuICovCj4gICAJYnVzeSA9IHBtdV9yZWFkX3NpbmdsZShmZCkgLSBpZGxl Owo+ICAgCWNsb3NlKGZkKTsKPiArCWdlbV9jb250ZXh0X2Rlc3Ryb3koZ2VtX2ZkLCBjdHgpOwo+ ICAgCj4gICAJaWd0X2Fzc2VydF9sdGUodGFyZ2V0LCBidXN5KTsKPiAgIH0KPiBAQCAtMTI3NCw2 ICsxMzAxLDkgQEAgdGVzdF9mcmVxdWVuY3koaW50IGdlbV9mZCkKPiAgIAlkb3VibGUgbWluWzJd LCBtYXhbMl07Cj4gICAJaWd0X3NwaW5fdCAqc3BpbjsKPiAgIAlpbnQgZmQsIHN5c2ZzOwo+ICsJ dWludDMyX3QgY3R4Owo+ICsKPiArCWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShnZW1fZmQpOwo+ ICAgCj4gICAJc3lzZnMgPSBpZ3Rfc3lzZnNfb3BlbihnZW1fZmQpOwo+ICAgCWlndF9yZXF1aXJl KHN5c2ZzID49IDApOwo+IEBAIC0xMzAxLDcgKzEzMzEsNyBAQCB0ZXN0X2ZyZXF1ZW5jeShpbnQg Z2VtX2ZkKQo+ICAgCWlndF9yZXF1aXJlKGlndF9zeXNmc19nZXRfdTMyKHN5c2ZzLCAiZ3RfYm9v c3RfZnJlcV9taHoiKSA9PSBtaW5fZnJlcSk7Cj4gICAKPiAgIAlnZW1fcXVpZXNjZW50X2dwdShn ZW1fZmQpOyAvKiBJZGxlIHRvIGJlIHN1cmUgdGhlIGNoYW5nZSB0YWtlcyBlZmZlY3QgKi8KPiAt CXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBJOTE1X0VYRUNfUkVOREVSKTsKPiArCXNwaW4g PSBzcGluX3N5bmNfZmxhZ3MoZ2VtX2ZkLCBjdHgsIEk5MTVfRVhFQ19SRU5ERVIpOwo+ICAgCj4g ICAJc2xlcHQgPSBwbXVfcmVhZF9tdWx0aShmZCwgMiwgc3RhcnQpOwo+ICAgCW1lYXN1cmVkX3Vz bGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDApOwo+IEBAIC0xMzI3LDcgKzEzNTcsNyBAQCB0 ZXN0X2ZyZXF1ZW5jeShpbnQgZ2VtX2ZkKQo+ICAgCWlndF9yZXF1aXJlKGlndF9zeXNmc19nZXRf dTMyKHN5c2ZzLCAiZ3RfbWluX2ZyZXFfbWh6IikgPT0gbWF4X2ZyZXEpOwo+ICAgCj4gICAJZ2Vt X3F1aWVzY2VudF9ncHUoZ2VtX2ZkKTsKPiAtCXNwaW4gPSBzcGluX3N5bmMoZ2VtX2ZkLCAwLCBJ OTE1X0VYRUNfUkVOREVSKTsKPiArCXNwaW4gPSBzcGluX3N5bmNfZmxhZ3MoZ2VtX2ZkLCBjdHgs IEk5MTVfRVhFQ19SRU5ERVIpOwo+ICAgCj4gICAJc2xlcHQgPSBwbXVfcmVhZF9tdWx0aShmZCwg Miwgc3RhcnQpOwo+ICAgCW1lYXN1cmVkX3VzbGVlcChiYXRjaF9kdXJhdGlvbl9ucyAvIDEwMDAp Owo+IEBAIC0xMzQ4LDYgKzEzNzgsOCBAQCB0ZXN0X2ZyZXF1ZW5jeShpbnQgZ2VtX2ZkKQo+ICAg CQkJIG1pbl9mcmVxLCBpZ3Rfc3lzZnNfZ2V0X3UzMihzeXNmcywgImd0X21pbl9mcmVxX21oeiIp KTsKPiAgIAljbG9zZShmZCk7Cj4gICAKPiArCWdlbV9jb250ZXh0X2Rlc3Ryb3koZ2VtX2ZkLCBj dHgpOwo+ICsKPiAgIAlpZ3RfaW5mbygiTWluIGZyZXF1ZW5jeTogcmVxdWVzdGVkICUuMWYsIGFj dHVhbCAlLjFmXG4iLAo+ICAgCQkgbWluWzBdLCBtaW5bMV0pOwo+ICAgCWlndF9pbmZvKCJNYXgg ZnJlcXVlbmN5OiByZXF1ZXN0ZWQgJS4xZiwgYWN0dWFsICUuMWZcbiIsCj4gQEAgLTE0NDgsNyAr MTQ4MCw3IEBAIHRlc3RfcmM2KGludCBnZW1fZmQsIHVuc2lnbmVkIGludCBmbGFncykKPiAgIH0K PiAgIAo+ICAgc3RhdGljIHZvaWQKPiAtdGVzdF9lbmFibGVfcmFjZShpbnQgZ2VtX2ZkLCBjb25z dCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUpCj4gK3Rlc3RfZW5hYmxlX3JhY2Uo aW50IGdlbV9mZCwgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQo+ICAgewo+ICAg CXVpbnQ2NF90IGNvbmZpZyA9IEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNsYXNzLCBlLT5pbnN0 YW5jZSk7Cj4gICAJc3RydWN0IGlndF9oZWxwZXJfcHJvY2VzcyBlbmdpbmVfbG9hZCA9IHsgfTsK PiBAQCAtMTQ1OCwxNCArMTQ5MCwxNCBAQCB0ZXN0X2VuYWJsZV9yYWNlKGludCBnZW1fZmQsIGNv bnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKPiAgIAlpbnQgZmQ7Cj4gICAK PiAgIAlpZ3RfcmVxdWlyZShnZW1faGFzX2V4ZWNsaXN0cyhnZW1fZmQpKTsKPiAtCWlndF9yZXF1 aXJlKGdlbV9oYXNfZW5naW5lKGdlbV9mZCwgZS0+Y2xhc3MsIGUtPmluc3RhbmNlKSk7Cj4gKwlp Z3RfcmVxdWlyZShnZW1fY29udGV4dF9oYXNfZW5naW5lKGdlbV9mZCwgMCwgZS0+ZmxhZ3MpKTsK PiAgIAo+ICAgCW9iai5oYW5kbGUgPSBnZW1fY3JlYXRlKGdlbV9mZCwgNDA5Nik7Cj4gICAJZ2Vt X3dyaXRlKGdlbV9mZCwgb2JqLmhhbmRsZSwgMCwgJmJiZW5kLCBzaXplb2YoYmJlbmQpKTsKPiAg IAo+ICAgCWViLmJ1ZmZlcl9jb3VudCA9IDE7Cj4gICAJZWIuYnVmZmVyc19wdHIgPSB0b191c2Vy X3BvaW50ZXIoJm9iaik7Cj4gLQllYi5mbGFncyA9IGUycmluZyhnZW1fZmQsIGUpOwo+ICsJZWIu ZmxhZ3MgPSBlLT5mbGFnczsKPiAgIAo+ICAgCS8qCj4gICAJICogVGhpcyB0ZXN0IGlzIHByb2Jh YmlsaXN0aWMgc28gcnVuIGluIGEgZmV3IHRpbWVzIHRvIGluY3JlYXNlIHRoZQo+IEBAIC0xNTEy LDcgKzE1NDQsNyBAQCB0ZXN0X2VuYWJsZV9yYWNlKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBp bnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKPiAgIAlfX2Fzc2VydF93aXRoaW4oeCwgcmVmLCB0 b2xlcmFuY2UsIHRvbGVyYW5jZSkKPiAgIAo+ICAgc3RhdGljIHZvaWQKPiAtYWNjdXJhY3koaW50 IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAo+ICthY2N1 cmFjeShpbnQgZ2VtX2ZkLCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCj4gICAJ IHVuc2lnbmVkIGxvbmcgdGFyZ2V0X2J1c3lfcGN0LAo+ICAgCSB1bnNpZ25lZCBsb25nIHRhcmdl dF9pdGVycykKPiAgIHsKPiBAQCAtMTU2Miw3ICsxNTk0LDcgQEAgYWNjdXJhY3koaW50IGdlbV9m ZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAo+ICAgCQlpZ3Rfc3Bp bl90ICpzcGluOwo+ICAgCj4gICAJCS8qIEFsbG9jYXRlIG91ciBzcGluIGJhdGNoIGFuZCBpZGxl IGl0LiAqLwo+IC0JCXNwaW4gPSBpZ3Rfc3Bpbl9uZXcoZ2VtX2ZkLCAuZW5naW5lID0gZTJyaW5n KGdlbV9mZCwgZSkpOwo+ICsJCXNwaW4gPSBpZ3Rfc3Bpbl9uZXcoZ2VtX2ZkLCAuZW5naW5lID0g ZS0+ZmxhZ3MpOwo+ICAgCQlpZ3Rfc3Bpbl9lbmQoc3Bpbik7Cj4gICAJCWdlbV9zeW5jKGdlbV9m ZCwgc3Bpbi0+aGFuZGxlKTsKPiAgIAo+IEBAIC0xNjY2LDcgKzE2OTgsNyBAQCBpZ3RfbWFpbgo+ ICAgCQkJCUk5MTVfUE1VX0xBU1QgLSBfX0k5MTVfUE1VX09USEVSKDApICsgMTsKPiAgIAl1bnNp Z25lZCBpbnQgbnVtX2VuZ2luZXMgPSAwOwo+ICAgCWludCBmZCA9IC0xOwo+IC0JY29uc3Qgc3Ry dWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplOwo+ICsJc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplOwo+ICAgCXVuc2lnbmVkIGludCBpOwo+ICAgCj4gICAJaWd0X2ZpeHR1cmUg ewo+IEBAIC0xNjc1LDcgKzE3MDcsNyBAQCBpZ3RfbWFpbgo+ICAgCQlpZ3RfcmVxdWlyZV9nZW0o ZmQpOwo+ICAgCQlpZ3RfcmVxdWlyZShpOTE1X3R5cGVfaWQoKSA+IDApOwo+ICAgCj4gLQkJZm9y X2VhY2hfZW5naW5lX2NsYXNzX2luc3RhbmNlKGZkLCBlKQo+ICsJCV9fZm9yX2VhY2hfcGh5c2lj YWxfZW5naW5lKGZkLCBlKQo+ICAgCQkJbnVtX2VuZ2luZXMrKzsKPiAgIAl9Cj4gICAKPiBAQCAt MTY4NSw3ICsxNzE3LDcgQEAgaWd0X21haW4KPiAgIAlpZ3Rfc3VidGVzdCgiaW52YWxpZC1pbml0 IikKPiAgIAkJaW52YWxpZF9pbml0KCk7Cj4gICAKPiAtCV9fZm9yX2VhY2hfZW5naW5lX2NsYXNz X2luc3RhbmNlKGUpIHsKPiArCV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlKSB7Cj4g ICAJCWNvbnN0IHVuc2lnbmVkIGludCBwY3RbXSA9IHsgMiwgNTAsIDk4IH07Cj4gICAKPiAgIAkJ LyoqCj4gQEAgLTE3MDMsNyArMTczNSw3IEBAIGlndF9tYWluCj4gICAKPiAgIAkJaWd0X3N1YnRl c3RfZ3JvdXAgewo+ICAgCQkJaWd0X2ZpeHR1cmUgewo+IC0JCQkJZ2VtX3JlcXVpcmVfZW5naW5l KGZkLCBlLT5jbGFzcywgZS0+aW5zdGFuY2UpOwo+ICsJCQkJZ2VtX2NvbnRleHRfaGFzX2VuZ2lu ZShmZCwgMCwgZS0+ZmxhZ3MpOwo+ICAgCQkJfQo+ICAgCj4gICAJCQkvKioKPiBAQCAtMTg4OSwx MiArMTkyMSwxMSBAQCBpZ3RfbWFpbgo+ICAgCQkJZ2VtX3F1aWVzY2VudF9ncHUoZmQpOwo+ICAg CQl9Cj4gICAKPiAtCQlfX2Zvcl9lYWNoX2VuZ2luZV9jbGFzc19pbnN0YW5jZShlKSB7Cj4gKwkJ X19mb3JfZWFjaF9waHlzaWNhbF9lbmdpbmUocmVuZGVyX2ZkLCBlKSB7Cj4gICAJCQlpZ3Rfc3Vi dGVzdF9ncm91cCB7Cj4gICAJCQkJaWd0X2ZpeHR1cmUgewo+IC0JCQkJCWdlbV9yZXF1aXJlX2Vu Z2luZShyZW5kZXJfZmQsCj4gLQkJCQkJCQkgICBlLT5jbGFzcywKPiAtCQkJCQkJCSAgIGUtPmlu c3RhbmNlKTsKPiArCQkJCQlnZW1fY29udGV4dF9oYXNfZW5naW5lKHJlbmRlcl9mZCwKPiArCQkJ CQkJCSAgIDAsIGUtPmZsYWdzKTsKPiAgIAkJCQl9Cj4gICAKPiAgIAkJCQlpZ3Rfc3VidGVzdF9m KCJyZW5kZXItbm9kZS1idXN5LSVzIiwgZS0+bmFtZSkKPiAKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pZ3QtZGV2