From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0C2B58992E for ; Mon, 13 May 2019 10:42:52 +0000 (UTC) References: <20190513004508.8042-1-andi@etezian.org> <20190513004508.8042-8-andi@etezian.org> From: Tvrtko Ursulin Message-ID: <861032b3-864a-b51f-d246-60132487697c@linux.intel.com> Date: Mon, 13 May 2019 11:42:49 +0100 MIME-Version: 1.0 In-Reply-To: <20190513004508.8042-8-andi@etezian.org> Content-Language: en-US Subject: Re: [igt-dev] [PATCH v23 07/14] test/i915: gem_busy: 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 List-ID: Ck9uIDEzLzA1LzIwMTkgMDE6NDUsIEFuZGkgU2h5dGkgd3JvdGU6Cj4gRnJvbTogQW5kaSBTaHl0 aSA8YW5kaS5zaHl0aUBpbnRlbC5jb20+Cj4gCj4gUmVwbGFjZSB0aGUgbGVnYWN5IGZvcl9lYWNo X2VuZ2luZSogZGVmaW5lcyB3aXRoIHRoZSBvbmVzCj4gaW1wbGVtZW50ZWQgaW4gdGhlIGdlbV9l bmdpbmVfdG9wb2xvZ3kgbGlicmFyeS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbmRpIFNoeXRpIDxh bmRpLnNoeXRpQGludGVsLmNvbT4KPiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxz b24uY28udWs+Cj4gLS0tCj4gICB0ZXN0cy9pOTE1L2dlbV9idXN5LmMgfCAxMzMgKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gICAxIGZpbGUgY2hhbmdlZCwgNTEg aW5zZXJ0aW9ucygrKSwgODIgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5 MTUvZ2VtX2J1c3kuYyBiL3Rlc3RzL2k5MTUvZ2VtX2J1c3kuYwo+IGluZGV4IGMxMjBmYWYxMDk4 My4uZGYyOWQ1MDYyMDFhIDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX2J1c3kuYwo+ICsr KyBiL3Rlc3RzL2k5MTUvZ2VtX2J1c3kuYwo+IEBAIC02NiwyMiArNjYsOSBAQCBzdGF0aWMgdm9p ZCBfX2dlbV9idXN5KGludCBmZCwKPiAgIAkqcmVhZCA9IGJ1c3kuYnVzeSA+PiAxNjsKPiAgIH0K PiAgIAo+IC1zdGF0aWMgdWludDMyX3QgcmluZ190b19jbGFzcyh1bnNpZ25lZCBpbnQgcmluZykK PiAtewo+IC0JdWludDMyX3QgY2xhc3NbXSA9IHsKPiAtCQlbSTkxNV9FWEVDX0RFRkFVTFRdID0g STkxNV9FTkdJTkVfQ0xBU1NfUkVOREVSLAo+IC0JCVtJOTE1X0VYRUNfUkVOREVSXSAgPSBJOTE1 X0VOR0lORV9DTEFTU19SRU5ERVIsCj4gLQkJW0k5MTVfRVhFQ19CTFRdICAgICA9IEk5MTVfRU5H SU5FX0NMQVNTX0NPUFksCj4gLQkJW0k5MTVfRVhFQ19CU0RdICAgICA9IEk5MTVfRU5HSU5FX0NM QVNTX1ZJREVPLAo+IC0JCVtJOTE1X0VYRUNfVkVCT1hdICAgPSBJOTE1X0VOR0lORV9DTEFTU19W SURFT19FTkhBTkNFLAo+IC0JfTsKPiAtCWlndF9hc3NlcnQocmluZyA8IEFSUkFZX1NJWkUoY2xh c3MpKTsKPiAtCXJldHVybiBjbGFzc1tyaW5nXTsKPiAtfQo+IC0KPiAgIHN0YXRpYyBib29sIGV4 ZWNfbm9vcChpbnQgZmQsCj4gICAJCSAgICAgIHVpbnQzMl90ICpoYW5kbGVzLAo+IC0JCSAgICAg IHVuc2lnbmVkIHJpbmcsCj4gKwkJICAgICAgdW5zaWduZWQgZmxhZ3MsCj4gICAJCSAgICAgIGJv b2wgd3JpdGUpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVj YnVmOwo+IEBAIC05Nyw5ICs4NCw5IEBAIHN0YXRpYyBib29sIGV4ZWNfbm9vcChpbnQgZmQsCj4g ICAJbWVtc2V0KCZleGVjYnVmLCAwLCBzaXplb2YoZXhlY2J1ZikpOwo+ICAgCWV4ZWNidWYuYnVm ZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoZXhlYyk7Cj4gICAJZXhlY2J1Zi5idWZmZXJfY291 bnQgPSAzOwo+IC0JZXhlY2J1Zi5mbGFncyA9IHJpbmc7Cj4gLQlpZ3RfZGVidWcoIlF1ZXVpbmcg aGFuZGxlIGZvciAlcyBvbiByaW5nICVkXG4iLAo+IC0JCSAgd3JpdGUgPyAid3JpdGluZyIgOiAi cmVhZGluZyIsIHJpbmcgJiAweDcpOwo+ICsJZXhlY2J1Zi5mbGFncyA9IGZsYWdzOwo+ICsJaWd0 X2RlYnVnKCJRdWV1aW5nIGhhbmRsZSBmb3IgJXMgb24gZW5naW5lICVkXG4iLAo+ICsJCSAgd3Jp dGUgPyAid3JpdGluZyIgOiAicmVhZGluZyIsIGZsYWdzKTsKPiAgIAlyZXR1cm4gX19nZW1fZXhl Y2J1ZihmZCwgJmV4ZWNidWYpID09IDA7Cj4gICB9Cj4gICAKPiBAQCAtMTEwLDE3ICs5NywxNiBA QCBzdGF0aWMgYm9vbCBzdGlsbF9idXN5KGludCBmZCwgdWludDMyX3QgaGFuZGxlKQo+ICAgCXJl dHVybiB3cml0ZTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBzZW1hcGhvcmUoaW50IGZkLCB1 bnNpZ25lZCByaW5nLCB1aW50MzJfdCBmbGFncykKPiArc3RhdGljIHZvaWQgc2VtYXBob3JlKGlu dCBmZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQo+ICAgewo+ICAg CXVpbnQzMl90IGJiZSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Cj4gLQljb25zdCB1bnNpZ25lZCB1 YWJpID0gcmluZ190b19jbGFzcyhyaW5nICYgNjMpOwo+ICsJY29uc3QgdW5zaWduZWQgdWFiaSA9 IGUtPmNsYXNzOwo+ICAgCWlndF9zcGluX3QgKnNwaW47Cj4gICAJdWludDMyX3QgaGFuZGxlWzNd Owo+ICAgCXVpbnQzMl90IHJlYWQsIHdyaXRlOwo+ICAgCXVpbnQzMl90IGFjdGl2ZTsKPiAgIAl1 bnNpZ25lZCBpOwo+IC0KPiAtCWdlbV9yZXF1aXJlX3JpbmcoZmQsIHJpbmcgfCBmbGFncyk7Cj4g KwlzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKl9fZTsKCk5pdHBpY2sgLSB3aWRlc3Qg YXQgdGhlIGJvdHRvbSByZWFkcyB1bnRpZHkuCgo+ICAgCj4gICAJaGFuZGxlW1RFU1RdID0gZ2Vt X2NyZWF0ZShmZCwgNDA5Nik7Cj4gICAJaGFuZGxlW0JBVENIXSA9IGdlbV9jcmVhdGUoZmQsIDQw OTYpOwo+IEBAIC0xMjksMTggKzExNSwxOCBAQCBzdGF0aWMgdm9pZCBzZW1hcGhvcmUoaW50IGZk LCB1bnNpZ25lZCByaW5nLCB1aW50MzJfdCBmbGFncykKPiAgIAkvKiBDcmVhdGUgYSBsb25nIHJ1 bm5pbmcgYmF0Y2ggd2hpY2ggd2UgY2FuIHVzZSB0byBob2cgdGhlIEdQVSAqLwo+ICAgCWhhbmRs ZVtCVVNZXSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwo+ICAgCXNwaW4gPSBpZ3Rfc3Bpbl9uZXco ZmQsCj4gLQkJCSAgICAuZW5naW5lID0gcmluZywKPiArCQkJICAgIC5lbmdpbmUgPSBlLT5mbGFn cywKPiAgIAkJCSAgICAuZGVwZW5kZW5jeSA9IGhhbmRsZVtCVVNZXSk7Cj4gICAKPiAgIAkvKiBR dWV1ZSBhIGJhdGNoIGFmdGVyIHRoZSBidXN5LCBpdCBzaG91bGQgYmxvY2sgYW5kIHJlbWFpbiAi YnVzeSIgKi8KPiAtCWlndF9hc3NlcnQoZXhlY19ub29wKGZkLCBoYW5kbGUsIHJpbmcgfCBmbGFn cywgZmFsc2UpKTsKPiArCWlndF9hc3NlcnQoZXhlY19ub29wKGZkLCBoYW5kbGUsIGUtPmZsYWdz LCBmYWxzZSkpOwo+ICAgCWlndF9hc3NlcnQoc3RpbGxfYnVzeShmZCwgaGFuZGxlW0JVU1ldKSk7 Cj4gICAJX19nZW1fYnVzeShmZCwgaGFuZGxlW1RFU1RdLCAmcmVhZCwgJndyaXRlKTsKPiAgIAlp Z3RfYXNzZXJ0X2VxKHJlYWQsIDEgPDwgdWFiaSk7Cj4gICAJaWd0X2Fzc2VydF9lcSh3cml0ZSwg MCk7Cj4gICAKPiAgIAkvKiBSZXF1ZXVlIHdpdGggYSB3cml0ZSAqLwo+IC0JaWd0X2Fzc2VydChl eGVjX25vb3AoZmQsIGhhbmRsZSwgcmluZyB8IGZsYWdzLCB0cnVlKSk7Cj4gKwlpZ3RfYXNzZXJ0 KGV4ZWNfbm9vcChmZCwgaGFuZGxlLCBlLT5mbGFncywgdHJ1ZSkpOwo+ICAgCWlndF9hc3NlcnQo c3RpbGxfYnVzeShmZCwgaGFuZGxlW0JVU1ldKSk7Cj4gICAJX19nZW1fYnVzeShmZCwgaGFuZGxl W1RFU1RdLCAmcmVhZCwgJndyaXRlKTsKPiAgIAlpZ3RfYXNzZXJ0X2VxKHJlYWQsIDEgPDwgdWFi aSk7Cj4gQEAgLTE0OCwxMiArMTM0LDEzIEBAIHN0YXRpYyB2b2lkIHNlbWFwaG9yZShpbnQgZmQs IHVuc2lnbmVkIHJpbmcsIHVpbnQzMl90IGZsYWdzKQo+ICAgCj4gICAJLyogTm93IHF1ZXVlIGl0 IGZvciBhIHJlYWQgYWNyb3NzIGFsbCBhdmFpbGFibGUgcmluZ3MgKi8KPiAgIAlhY3RpdmUgPSAw Owo+IC0JZm9yIChpID0gSTkxNV9FWEVDX1JFTkRFUjsgaSA8PSBJOTE1X0VYRUNfVkVCT1g7IGkr Kykgewo+IC0JCWlmIChleGVjX25vb3AoZmQsIGhhbmRsZSwgaSB8IGZsYWdzLCBmYWxzZSkpCj4g LQkJCWFjdGl2ZSB8PSAxIDw8IHJpbmdfdG9fY2xhc3MoaSk7Cj4gKwlfX2Zvcl9lYWNoX3BoeXNp Y2FsX2VuZ2luZShmZCwgX19lKSB7Cj4gKwkJaWYgKGV4ZWNfbm9vcChmZCwgaGFuZGxlLCBfX2Ut PmZsYWdzLCBmYWxzZSkpCj4gKwkJCWFjdGl2ZSB8PSAxIDw8IF9fZS0+Y2xhc3M7Cj4gICAJfQo+ ICAgCWlndF9hc3NlcnQoc3RpbGxfYnVzeShmZCwgaGFuZGxlW0JVU1ldKSk7Cj4gICAJX19nZW1f YnVzeShmZCwgaGFuZGxlW1RFU1RdLCAmcmVhZCwgJndyaXRlKTsKPiArCXByaW50ZigiQU5ESUlJ STogcmVhZCA9IDB4JXgsIGFjdGl2ZSA9IDB4JXhcbiIsIHJlYWQsIGFjdGl2ZSk7CgpTbmlwLiA6 KQoKPiAgIAlpZ3RfYXNzZXJ0X2VxKHJlYWQsIGFjdGl2ZSk7Cj4gICAJaWd0X2Fzc2VydF9lcSh3 cml0ZSwgMSArIHVhYmkpOyAvKiBmcm9tIHRoZSBlYXJsaWVyIHdyaXRlICovCj4gICAKPiBAQCAt MTczLDcgKzE2MCw3IEBAIHN0YXRpYyB2b2lkIHNlbWFwaG9yZShpbnQgZmQsIHVuc2lnbmVkIHJp bmcsIHVpbnQzMl90IGZsYWdzKQo+ICAgCj4gICAjZGVmaW5lIFBBUkFMTEVMIDEKPiAgICNkZWZp bmUgSEFORyAyCj4gLXN0YXRpYyB2b2lkIG9uZShpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIHVuc2ln bmVkIHRlc3RfZmxhZ3MpCj4gK3N0YXRpYyB2b2lkIG9uZShpbnQgZmQsIGNvbnN0IHN0cnVjdCBp bnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwgdW5zaWduZWQgdGVzdF9mbGFncykKPiAgIHsKPiAg IAljb25zdCBpbnQgZ2VuID0gaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKTsKPiAg IAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmpbMl07Cj4gQEAgLTE4Miw3ICsx NjksNyBAQCBzdGF0aWMgdm9pZCBvbmUoaW50IGZkLCB1bnNpZ25lZCByaW5nLCB1bnNpZ25lZCB0 ZXN0X2ZsYWdzKQo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSBzdG9y ZVsxMDI0KzFdOwo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsK PiAgIAl1bnNpZ25lZCBzaXplID0gQUxJR04oQVJSQVlfU0laRShzdG9yZSkqMTYgKyA0LCA0MDk2 KTsKPiAtCWNvbnN0IHVuc2lnbmVkIHVhYmkgPSByaW5nX3RvX2NsYXNzKHJpbmcgJiA2Myk7Cj4g Kwljb25zdCB1bnNpZ25lZCB1YWJpID0gZS0+Y2xhc3M7Cj4gICAJdWludDMyX3QgcmVhZFsyXSwg d3JpdGVbMl07Cj4gICAJc3RydWN0IHRpbWVzcGVjIHR2Owo+ICAgCXVpbnQzMl90ICpiYXRjaCwg KmJiZTsKPiBAQCAtMTkxLDcgKzE3OCw3IEBAIHN0YXRpYyB2b2lkIG9uZShpbnQgZmQsIHVuc2ln bmVkIHJpbmcsIHVuc2lnbmVkIHRlc3RfZmxhZ3MpCj4gICAJbWVtc2V0KCZleGVjYnVmLCAwLCBz aXplb2YoZXhlY2J1ZikpOwo+ICAgCWV4ZWNidWYuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50 ZXIob2JqKTsKPiAgIAlleGVjYnVmLmJ1ZmZlcl9jb3VudCA9IDI7Cj4gLQlleGVjYnVmLmZsYWdz ID0gcmluZzsKPiArCWV4ZWNidWYuZmxhZ3MgPSBlLT5mbGFnczsKPiAgIAlpZiAoZ2VuIDwgNikK PiAgIAkJZXhlY2J1Zi5mbGFncyB8PSBJOTE1X0VYRUNfU0VDVVJFOwo+ICAgCj4gQEAgLTI2Mywx NyArMjUwLDE4IEBAIHN0YXRpYyB2b2lkIG9uZShpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIHVuc2ln bmVkIHRlc3RfZmxhZ3MpCj4gICAJX19nZW1fYnVzeShmZCwgb2JqW0JBVENIXS5oYW5kbGUsICZy ZWFkW0JBVENIXSwgJndyaXRlW0JBVENIXSk7Cj4gICAKPiAgIAlpZiAodGVzdF9mbGFncyAmIFBB UkFMTEVMKSB7Cj4gLQkJdW5zaWduZWQgb3RoZXI7Cj4gKwkJc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplMjsKPiAgIAo+IC0JCWZvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShmZCwgb3Ro ZXIpIHsKPiAtCQkJaWYgKG90aGVyID09IHJpbmcpCj4gKwkJX19mb3JfZWFjaF9waHlzaWNhbF9l bmdpbmUoZmQsIGUyKSB7Cj4gKwkJCWlmIChlMi0+Y2xhc3MgPT0gZS0+Y2xhc3MgJiYKPiArCQkJ ICAgIGUyLT5pbnN0YW5jZSA9PSBlLT5pbnN0YW5jZSkKPiAgIAkJCQljb250aW51ZTsKPiAgIAo+ IC0JCQlpZiAoIWdlbV9jYW5fc3RvcmVfZHdvcmQoZmQsIG90aGVyKSkKPiArCQkJaWYgKCFnZW1f Y2xhc3NfY2FuX3N0b3JlX2R3b3JkKGZkLCBlLT5jbGFzcykpCj4gICAJCQkJY29udGludWU7Cj4g ICAKPiAtCQkJaWd0X2RlYnVnKCJUZXN0aW5nICVzIGluIHBhcmFsbGVsXG4iLCBlX18tPm5hbWUp Owo+IC0JCQlvbmUoZmQsIG90aGVyLCAwKTsKPiArCQkJaWd0X2RlYnVnKCJUZXN0aW5nICVzIGlu IHBhcmFsbGVsXG4iLCBlMi0+bmFtZSk7Cj4gKwkJCW9uZShmZCwgZTIsIDApOwo+ICAgCQl9Cj4g ICAJfQo+ICAgCj4gQEAgLTQzOSwxMSArNDI3LDExIEBAIHN0YXRpYyBib29sIGhhc19leHRlbmRl ZF9idXN5X2lvY3RsKGludCBmZCkKPiAgIAlyZXR1cm4gcmVhZCAhPSAwOwo+ICAgfQo+ICAgCj4g LXN0YXRpYyB2b2lkIGJhc2ljKGludCBmZCwgdW5zaWduZWQgcmluZywgdW5zaWduZWQgZmxhZ3Mp Cj4gK3N0YXRpYyB2b2lkIGJhc2ljKGludCBmZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlv bl9lbmdpbmUyICplLCBib29sIGhhbmcpCgpJIHdvdWxkIGhhdmUgbGVmdCB0aGUgZmxhZ3MgZm9y IGEgc21hbGxlciBkaWZmIGJ1dCBva2F5LgoKPiAgIHsKPiAgIAlpZ3Rfc3Bpbl90ICpzcGluID0K PiAgIAkJaWd0X3NwaW5fbmV3KGZkLAo+IC0JCQkgICAgIC5lbmdpbmUgPSByaW5nLAo+ICsJCQkg ICAgIC5lbmdpbmUgPSBlLT5mbGFncywKPiAgIAkJCSAgICAgLmZsYWdzID0gSUdUX1NQSU5fTk9f UFJFRU1QVElPTik7Cj4gICAJc3RydWN0IHRpbWVzcGVjIHR2Owo+ICAgCWludCB0aW1lb3V0Owo+ IEBAIC00NTIsNyArNDQwLDcgQEAgc3RhdGljIHZvaWQgYmFzaWMoaW50IGZkLCB1bnNpZ25lZCBy aW5nLCB1bnNpZ25lZCBmbGFncykKPiAgIAlidXN5ID0gZ2VtX2JvX2J1c3koZmQsIHNwaW4tPmhh bmRsZSk7Cj4gICAKPiAgIAl0aW1lb3V0ID0gMTIwOwo+IC0JaWYgKChmbGFncyAmIEhBTkcpID09 IDApIHsKPiArCWlmICghaGFuZykgewo+ICAgCQlpZ3Rfc3Bpbl9lbmQoc3Bpbik7Cj4gICAJCXRp bWVvdXQgPSAxOwo+ICAgCX0KPiBAQCAtNDY1LDcgKzQ1Myw3IEBAIHN0YXRpYyB2b2lkIGJhc2lj KGludCBmZCwgdW5zaWduZWQgcmluZywgdW5zaWduZWQgZmxhZ3MpCj4gICAJCQlpZ3RfZGVidWdm c19kdW1wKGZkLCAiaTkxNV9oYW5nY2hlY2tfaW5mbyIpOwo+ICAgCQkJaWd0X2Fzc2VydF9mKGln dF9zZWNvbmRzX2VsYXBzZWQoJnR2KSA8IHRpbWVvdXQsCj4gICAJCQkJICAgICAiJXMgYmF0Y2gg ZGlkIG5vdCBjb21wbGV0ZSB3aXRoaW4gJWRzXG4iLAo+IC0JCQkJICAgICBmbGFncyAmIEhBTkcg PyAiSGFuZ2luZyIgOiAiTm9ybWFsIiwKPiArCQkJCSAgICAgaGFuZyA/ICJIYW5naW5nIiA6ICJO b3JtYWwiLAo+ICAgCQkJCSAgICAgdGltZW91dCk7Cj4gICAJCX0KPiAgIAl9Cj4gQEAgLTQ3NSwx MyArNDYzLDE0IEBAIHN0YXRpYyB2b2lkIGJhc2ljKGludCBmZCwgdW5zaWduZWQgcmluZywgdW5z aWduZWQgZmxhZ3MpCj4gICAKPiAgIGlndF9tYWluCj4gICB7Cj4gLQljb25zdCBzdHJ1Y3QgaW50 ZWxfZXhlY3V0aW9uX2VuZ2luZSAqZTsKPiArCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25f ZW5naW5lMiAqZTsKPiAgIAlpbnQgZmQgPSAtMTsKPiAgIAo+ICAgCWlndF9maXh0dXJlIHsKPiAg IAkJZmQgPSBkcm1fb3Blbl9kcml2ZXJfbWFzdGVyKERSSVZFUl9JTlRFTCk7Cj4gICAJCWlndF9y ZXF1aXJlX2dlbShmZCk7Cj4gLQkJaWd0X3JlcXVpcmUoZ2VtX2Nhbl9zdG9yZV9kd29yZChmZCwg MCkpOwo+ICsJCWlndF9yZXF1aXJlKGdlbV9jbGFzc19jYW5fc3RvcmVfZHdvcmQoZmQsCj4gKwkJ CQkJCSAgICAgSTkxNV9FTkdJTkVfQ0xBU1NfUkVOREVSKSk7Cj4gICAJfQo+ICAgCj4gICAJaWd0 X3N1YnRlc3RfZ3JvdXAgewo+IEBAIC00ODksMTQgKzQ3OCwxMyBAQCBpZ3RfbWFpbgo+ICAgCQkJ aWd0X2ZvcmtfaGFuZ19kZXRlY3RvcihmZCk7Cj4gICAJCX0KPiAgIAo+IC0JCWZvciAoZSA9IGlu dGVsX2V4ZWN1dGlvbl9lbmdpbmVzOyBlLT5uYW1lOyBlKyspIHsKPiArCQlfX2Zvcl9lYWNoX3Bo eXNpY2FsX2VuZ2luZShmZCwgZSkgewo+ICAgCQkJaWd0X3N1YnRlc3RfZ3JvdXAgewo+ICAgCQkJ CWlndF9zdWJ0ZXN0X2YoIiVzYnVzeS0lcyIsCj4gLQkJCQkJICAgICAgZS0+ZXhlY19pZCA9PSAw ID8gImJhc2ljLSIgOiAiIiwKPiAtCQkJCQkgICAgICBlLT5uYW1lKSB7Cj4gLQkJCQkJaWd0X3Jl cXVpcmUoZ2VtX2hhc19yaW5nKGZkLCBlLT5leGVjX2lkIHwgZS0+ZmxhZ3MpKTsKPiArCQkJCQkg ICAgICBlLT5jbGFzcyA9PSBJOTE1X0VOR0lORV9DTEFTU19SRU5ERVIKPiArCQkJCQkgICAgICA/ ICJiYXNpYy0iIDogIiIsIGUtPm5hbWUpIHsKPiAgIAkJCQkJZ2VtX3F1aWVzY2VudF9ncHUoZmQp Owo+IC0JCQkJCWJhc2ljKGZkLCBlLT5leGVjX2lkIHwgZS0+ZmxhZ3MsIDApOwo+ICsJCQkJCWJh c2ljKGZkLCBlLCBmYWxzZSk7Cj4gICAJCQkJfQo+ICAgCQkJfQo+ICAgCQl9Cj4gQEAgLTUwNywz MSArNDk1LDIyIEBAIGlndF9tYWluCj4gICAJCQkJZ2VtX3JlcXVpcmVfbW1hcF93YyhmZCk7Cj4g ICAJCQl9Cj4gICAKPiAtCQkJZm9yIChlID0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXM7IGUtPm5h bWU7IGUrKykgewo+IC0JCQkJLyogZGVmYXVsdCBleGVjLWlkIGlzIHB1cmVseSBzeW1ib2xpYyAq Lwo+IC0JCQkJaWYgKGUtPmV4ZWNfaWQgPT0gMCkKPiAtCQkJCQljb250aW51ZTsKPiAtCj4gKwkJ CV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlKSB7Cj4gICAJCQkJaWd0X3N1YnRlc3Rf ZigiZXh0ZW5kZWQtJXMiLCBlLT5uYW1lKSB7Cj4gLQkJCQkJaWd0X3JlcXVpcmUoZ2VtX3Jpbmdf aGFzX3BoeXNpY2FsX2VuZ2luZShmZCwgZS0+ZXhlY19pZCB8IGUtPmZsYWdzKSk7Cj4gLQkJCQkJ aWd0X3JlcXVpcmUoZ2VtX2Nhbl9zdG9yZV9kd29yZChmZCwgZS0+ZXhlY19pZCB8IGUtPmZsYWdz KSk7Cj4gKwkJCQkJaWd0X3JlcXVpcmUoZ2VtX2NsYXNzX2Nhbl9zdG9yZV9kd29yZChmZCwKPiAr CQkJCQkJICAgICBlLT5jbGFzcykpOwo+ICAgCQkJCQlnZW1fcXVpZXNjZW50X2dwdShmZCk7Cj4g LQkJCQkJb25lKGZkLCBlLT5leGVjX2lkIHwgZS0+ZmxhZ3MsIDApOwo+ICsJCQkJCW9uZShmZCwg ZSwgMCk7Cj4gICAJCQkJCWdlbV9xdWllc2NlbnRfZ3B1KGZkKTsKPiAgIAkJCQl9Cj4gICAJCQl9 Cj4gICAKPiAtCQkJZm9yIChlID0gaW50ZWxfZXhlY3V0aW9uX2VuZ2luZXM7IGUtPm5hbWU7IGUr Kykgewo+IC0JCQkJLyogZGVmYXVsdCBleGVjLWlkIGlzIHB1cmVseSBzeW1ib2xpYyAqLwo+IC0J CQkJaWYgKGUtPmV4ZWNfaWQgPT0gMCkKPiAtCQkJCQljb250aW51ZTsKPiAtCj4gKwkJCV9fZm9y X2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlKSB7Cj4gICAJCQkJaWd0X3N1YnRlc3RfZigiZXh0 ZW5kZWQtcGFyYWxsZWwtJXMiLCBlLT5uYW1lKSB7Cj4gLQkJCQkJaWd0X3JlcXVpcmUoZ2VtX3Jp bmdfaGFzX3BoeXNpY2FsX2VuZ2luZShmZCwgZS0+ZXhlY19pZCB8IGUtPmZsYWdzKSk7Cj4gLQkJ CQkJaWd0X3JlcXVpcmUoZ2VtX2Nhbl9zdG9yZV9kd29yZChmZCwgZS0+ZXhlY19pZCB8IGUtPmZs YWdzKSk7Cj4gKwkJCQkJaWd0X3JlcXVpcmUoZ2VtX2NsYXNzX2Nhbl9zdG9yZV9kd29yZChmZCwg ZS0+Y2xhc3MpKTsKPiAgIAo+ICAgCQkJCQlnZW1fcXVpZXNjZW50X2dwdShmZCk7Cj4gLQkJCQkJ b25lKGZkLCBlLT5leGVjX2lkIHwgZS0+ZmxhZ3MsIFBBUkFMTEVMKTsKPiArCQkJCQlvbmUoZmQs IGUsIFBBUkFMTEVMKTsKPiAgIAkJCQkJZ2VtX3F1aWVzY2VudF9ncHUoZmQpOwo+ICAgCQkJCX0K PiAgIAkJCX0KPiBAQCAtNTQzLDEzICs1MjIsOSBAQCBpZ3RfbWFpbgo+ICAgCQkJCWlndF9yZXF1 aXJlKGhhc19zZW1hcGhvcmVzKGZkKSk7Cj4gICAJCQl9Cj4gICAKPiAtCQkJZm9yIChlID0gaW50 ZWxfZXhlY3V0aW9uX2VuZ2luZXM7IGUtPm5hbWU7IGUrKykgewo+IC0JCQkJLyogZGVmYXVsdCBl eGVjLWlkIGlzIHB1cmVseSBzeW1ib2xpYyAqLwo+IC0JCQkJaWYgKGUtPmV4ZWNfaWQgPT0gMCkK PiAtCQkJCQljb250aW51ZTsKPiAtCj4gKwkJCV9fZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZk LCBlKSB7Cj4gICAJCQkJaWd0X3N1YnRlc3RfZigiZXh0ZW5kZWQtc2VtYXBob3JlLSVzIiwgZS0+ bmFtZSkKPiAtCQkJCQlzZW1hcGhvcmUoZmQsIGUtPmV4ZWNfaWQsIGUtPmZsYWdzKTsKPiArCQkJ CQlzZW1hcGhvcmUoZmQsIGUpOwo+ICAgCQkJfQo+ICAgCQl9Cj4gICAKPiBAQCAtNTY4LDE0ICs1 NDMsMTMgQEAgaWd0X21haW4KPiAgIAkJCWhhbmcgPSBpZ3RfYWxsb3dfaGFuZyhmZCwgMCwgMCk7 Cj4gICAJCX0KPiAgIAo+IC0JCWZvciAoZSA9IGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzOyBlLT5u YW1lOyBlKyspIHsKPiArCQlfX2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShmZCwgZSkgewo+ICAg CQkJaWd0X3N1YnRlc3RfZigiJXNoYW5nLSVzIiwKPiAtCQkJCSAgICAgIGUtPmV4ZWNfaWQgPT0g MCA/ICJiYXNpYy0iIDogIiIsCj4gLQkJCQkgICAgICBlLT5uYW1lKSB7Cj4gKwkJCQkgICAgICBl LT5jbGFzcyA9PSBJOTE1X0VOR0lORV9DTEFTU19SRU5ERVIKPiArCQkJCSAgICAgID8gImJhc2lj LSIgOiAiIiwgZS0+bmFtZSkgewo+ICAgCQkJCWlndF9za2lwX29uX3NpbXVsYXRpb24oKTsKPiAt CQkJCWlndF9yZXF1aXJlKGdlbV9oYXNfcmluZyhmZCwgZS0+ZXhlY19pZCB8IGUtPmZsYWdzKSk7 Cj4gICAJCQkJZ2VtX3F1aWVzY2VudF9ncHUoZmQpOwo+IC0JCQkJYmFzaWMoZmQsIGUtPmV4ZWNf aWQgfCBlLT5mbGFncywgSEFORyk7Cj4gKwkJCQliYXNpYyhmZCwgZSwgdHJ1ZSk7Cj4gICAJCQl9 Cj4gICAJCX0KPiAgIAo+IEBAIC01ODUsMTggKzU1OSwxMyBAQCBpZ3RfbWFpbgo+ICAgCQkJCWdl bV9yZXF1aXJlX21tYXBfd2MoZmQpOwo+ICAgCQkJfQo+ICAgCj4gLQkJCWZvciAoZSA9IGludGVs X2V4ZWN1dGlvbl9lbmdpbmVzOyBlLT5uYW1lOyBlKyspIHsKPiAtCQkJCS8qIGRlZmF1bHQgZXhl Yy1pZCBpcyBwdXJlbHkgc3ltYm9saWMgKi8KPiAtCQkJCWlmIChlLT5leGVjX2lkID09IDApCj4g LQkJCQkJY29udGludWU7Cj4gLQo+ICsJCQlfX2Zvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShmZCwg ZSkgewo+ICAgCQkJCWlndF9zdWJ0ZXN0X2YoImV4dGVuZGVkLWhhbmctJXMiLCBlLT5uYW1lKSB7 Cj4gICAJCQkJCWlndF9za2lwX29uX3NpbXVsYXRpb24oKTsKPiAtCQkJCQlpZ3RfcmVxdWlyZShn ZW1fcmluZ19oYXNfcGh5c2ljYWxfZW5naW5lKGZkLCBlLT5leGVjX2lkIHwgZS0+ZmxhZ3MpKTsK PiAtCQkJCQlpZ3RfcmVxdWlyZShnZW1fY2FuX3N0b3JlX2R3b3JkKGZkLCBlLT5leGVjX2lkIHwg ZS0+ZmxhZ3MpKTsKPiArCQkJCQlpZ3RfcmVxdWlyZShnZW1fY2xhc3NfY2FuX3N0b3JlX2R3b3Jk KGZkLCBlLT5jbGFzcykpOwo+ICAgCj4gICAJCQkJCWdlbV9xdWllc2NlbnRfZ3B1KGZkKTsKPiAt CQkJCQlvbmUoZmQsIGUtPmV4ZWNfaWQgfCBlLT5mbGFncywgSEFORyk7Cj4gKwkJCQkJb25lKGZk LCBlLCBIQU5HKTsKPiAgIAkJCQkJZ2VtX3F1aWVzY2VudF9ncHUoZmQpOwo+ICAgCQkJCX0KPiAg IAkJCX0KPiAKCkxvb2tzIG9rYXkuIFdpdGggdGhlIGRlYnVnIHByaW50ZiBvdXQ6CgpSZXZpZXdl ZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClJlZ2FyZHMs CgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K aWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2