From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH i-g-t] i915/gem_exec_balancer: Exercise bonded pairs Date: Wed, 22 May 2019 14:08:37 +0100 Message-ID: <1af7c3bf-a7d6-608f-0a7b-9c21c0adc019@linux.intel.com> References: <20190522113712.23512-10-chris@chris-wilson.co.uk> <20190522125241.7419-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190522125241.7419-1-chris@chris-wilson.co.uk> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDIyLzA1LzIwMTkgMTM6NTIsIENocmlzIFdpbHNvbiB3cm90ZToKPiBUaGUgc3VibWl0LWZl bmNlICsgbG9hZF9iYWxhbmNpbmcgYXBpcyBhbGxvdyBmb3IgdXMgdG8gZXhlY3V0ZSBhIG5hbWVk Cj4gcGFpciBvZiBlbmdpbmVzIGluIHBhcmFsbGVsOyB0aGF0IHRoaXMgYnkgc3VibWl0dGluZyBh IHJlcXVlc3QgdG8gb25lCj4gZW5naW5lLCB3ZSBjYW4gdGhlbiB1c2UgdGhlIGdlbmVyYXRlZCBz dWJtaXQtZmVuY2UgdG8gc3VibWl0IGEgc2Vjb25kCj4gcmVxdWVzdCB0byBhbm90aGVyIGVuZ2lu ZSBhbmQgaGF2ZSBpdCBleGVjdXRlIGF0IHRoZSBzYW1lIHRpbWUuCj4gRnVydGhlcm1vcmUsIGJ5 IHNwZWNpZnlpbmcgYm9uZGVkIHBhaXJzLCB3ZSBjYW4gZGlyZWN0IHRoZSB2aXJ0dWFsCj4gZW5n aW5lIHRvIHVzZSBhIHBhcnRpY3VsYXIgZW5naW5lIGluIHBhcmFsbGVsIHRvIHRoZSBmaXJzdCBy ZXF1ZXN0Lgo+IAo+IHYyOiBNZWFzdXJlIGxvYWQgYWNyb3NzIGFsbCBib25kZWQgc2libGluZ3Mg dG8gY2hlY2sgd2UgZG9uJ3QKPiBtaXNzIGFuIGFjY2lkZW50YWwgZXhlY3V0aW9uIG9uIGFub3Ro ZXIuCj4gdjM6IFRocm93IGluIGEgY2hlY2sgZm9yIG1hc3RlciBhcyB3ZWxsLgo+IAo+IFNpZ25l ZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+ ICAgdGVzdHMvaTkxNS9nZW1fZXhlY19iYWxhbmNlci5jIHwgMjg1ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDI3NyBpbnNlcnRpb25zKCspLCA4 IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9leGVjX2JhbGFu Y2VyLmMgYi90ZXN0cy9pOTE1L2dlbV9leGVjX2JhbGFuY2VyLmMKPiBpbmRleCAxNDc4ZmVkZjEu LjMzYjE3ZmM1MSAxMDA2NDQKPiAtLS0gYS90ZXN0cy9pOTE1L2dlbV9leGVjX2JhbGFuY2VyLmMK PiArKysgYi90ZXN0cy9pOTE1L2dlbV9leGVjX2JhbGFuY2VyLmMKPiBAQCAtODksOSArODksMzUg QEAgbGlzdF9lbmdpbmVzKGludCBpOTE1LCB1aW50MzJfdCBjbGFzc19tYXNrLCB1bnNpZ25lZCBp bnQgKm91dCkKPiAgIAlyZXR1cm4gZW5naW5lczsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgaW50IF9f c2V0X2VuZ2luZXMoaW50IGk5MTUsIHVpbnQzMl90IGN0eCwKPiArCQkJIGNvbnN0IHN0cnVjdCBp OTE1X2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqY2ksCj4gKwkJCSB1bnNpZ25lZCBpbnQgY291bnQp Cj4gK3sKPiArCUk5MTVfREVGSU5FX0NPTlRFWFRfUEFSQU1fRU5HSU5FUyhlbmdpbmVzLCBjb3Vu dCk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gcCA9IHsKPiArCQkuY3R4 X2lkID0gY3R4LAo+ICsJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTLAo+ICsJ CS5zaXplID0gc2l6ZW9mKGVuZ2luZXMpLAo+ICsJCS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigm ZW5naW5lcykKPiArCX07Cj4gKwo+ICsJZW5naW5lcy5leHRlbnNpb25zID0gMDsKPiArCW1lbWNw eShlbmdpbmVzLmVuZ2luZXMsIGNpLCBzaXplb2YoZW5naW5lcy5lbmdpbmVzKSk7Cj4gKwo+ICsJ cmV0dXJuIF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwKTsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgc2V0X2VuZ2luZXMoaW50IGk5MTUsIHVpbnQzMl90IGN0eCwKPiArCQkJY29uc3Qg c3RydWN0IGk5MTVfZW5naW5lX2NsYXNzX2luc3RhbmNlICpjaSwKPiArCQkJdW5zaWduZWQgaW50 IGNvdW50KQo+ICt7Cj4gKwlpZ3RfYXNzZXJ0X2VxKF9fc2V0X2VuZ2luZXMoaTkxNSwgY3R4LCBj aSwgY291bnQpLCAwKTsKPiArfQo+ICsKPiAgIHN0YXRpYyBpbnQgX19zZXRfbG9hZF9iYWxhbmNl cihpbnQgaTkxNSwgdWludDMyX3QgY3R4LAo+ICAgCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1 X2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqY2ksCj4gLQkJCSAgICAgICB1bnNpZ25lZCBpbnQgY291 bnQpCj4gKwkJCSAgICAgICB1bnNpZ25lZCBpbnQgY291bnQsCj4gKwkJCSAgICAgICB2b2lkICpl eHQpCj4gICB7Cj4gICAJSTkxNV9ERUZJTkVfQ09OVEVYVF9FTkdJTkVTX0xPQURfQkFMQU5DRShi YWxhbmNlciwgY291bnQpOwo+ICAgCUk5MTVfREVGSU5FX0NPTlRFWFRfUEFSQU1fRU5HSU5FUyhl bmdpbmVzLCAxICsgY291bnQpOwo+IEBAIC0xMDQsNiArMTMwLDcgQEAgc3RhdGljIGludCBfX3Nl dF9sb2FkX2JhbGFuY2VyKGludCBpOTE1LCB1aW50MzJfdCBjdHgsCj4gICAKPiAgIAltZW1zZXQo JmJhbGFuY2VyLCAwLCBzaXplb2YoYmFsYW5jZXIpKTsKPiAgIAliYWxhbmNlci5iYXNlLm5hbWUg PSBJOTE1X0NPTlRFWFRfRU5HSU5FU19FWFRfTE9BRF9CQUxBTkNFOwo+ICsJYmFsYW5jZXIuYmFz ZS5uZXh0X2V4dGVuc2lvbiA9IHRvX3VzZXJfcG9pbnRlcihleHQpOwo+ICAgCj4gICAJaWd0X2Fz c2VydChjb3VudCk7Cj4gICAJYmFsYW5jZXIubnVtX3NpYmxpbmdzID0gY291bnQ7Cj4gQEAgLTEy Miw5ICsxNDksMTAgQEAgc3RhdGljIGludCBfX3NldF9sb2FkX2JhbGFuY2VyKGludCBpOTE1LCB1 aW50MzJfdCBjdHgsCj4gICAKPiAgIHN0YXRpYyB2b2lkIHNldF9sb2FkX2JhbGFuY2VyKGludCBp OTE1LCB1aW50MzJfdCBjdHgsCj4gICAJCQkgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9lbmdpbmVf Y2xhc3NfaW5zdGFuY2UgKmNpLAo+IC0JCQkgICAgICB1bnNpZ25lZCBpbnQgY291bnQpCj4gKwkJ CSAgICAgIHVuc2lnbmVkIGludCBjb3VudCwKPiArCQkJICAgICAgdm9pZCAqZXh0KQo+ICAgewo+ IC0JaWd0X2Fzc2VydF9lcShfX3NldF9sb2FkX2JhbGFuY2VyKGk5MTUsIGN0eCwgY2ksIGNvdW50 KSwgMCk7Cj4gKwlpZ3RfYXNzZXJ0X2VxKF9fc2V0X2xvYWRfYmFsYW5jZXIoaTkxNSwgY3R4LCBj aSwgY291bnQsIGV4dCksIDApOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdWludDMyX3QgbG9hZF9i YWxhbmNlcl9jcmVhdGUoaW50IGk5MTUsCj4gQEAgLTEzNCw3ICsxNjIsNyBAQCBzdGF0aWMgdWlu dDMyX3QgbG9hZF9iYWxhbmNlcl9jcmVhdGUoaW50IGk5MTUsCj4gICAJdWludDMyX3QgY3R4Owo+ ICAgCj4gICAJY3R4ID0gZ2VtX2NvbnRleHRfY3JlYXRlKGk5MTUpOwo+IC0Jc2V0X2xvYWRfYmFs YW5jZXIoaTkxNSwgY3R4LCBjaSwgY291bnQpOwo+ICsJc2V0X2xvYWRfYmFsYW5jZXIoaTkxNSwg Y3R4LCBjaSwgY291bnQsIE5VTEwpOwo+ICAgCj4gICAJcmV0dXJuIGN0eDsKPiAgIH0KPiBAQCAt Mjc4LDYgKzMwNiw3NCBAQCBzdGF0aWMgdm9pZCBpbnZhbGlkX2JhbGFuY2VyKGludCBpOTE1KQo+ ICAgCX0KPiAgIH0KPiAgIAo+ICtzdGF0aWMgdm9pZCBpbnZhbGlkX2JvbmRzKGludCBpOTE1KQo+ ICt7Cj4gKwlJOTE1X0RFRklORV9DT05URVhUX0VOR0lORVNfQk9ORChib25kc1sxNl0sIDEpOwo+ ICsJSTkxNV9ERUZJTkVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTKGVuZ2luZXMsIDEpOwo+ICsJc3Ry dWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHAgPSB7Cj4gKwkJLmN0eF9pZCA9IGdlbV9j b250ZXh0X2NyZWF0ZShpOTE1KSwKPiArCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5H SU5FUywKPiArCQkudmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJmVuZ2luZXMpLAo+ICsJCS5zaXpl ID0gc2l6ZW9mKGVuZ2luZXMpLAo+ICsJfTsKPiArCXVpbnQzMl90IGhhbmRsZTsKPiArCXZvaWQg KnB0cjsKPiArCj4gKwltZW1zZXQoJmVuZ2luZXMsIDAsIHNpemVvZihlbmdpbmVzKSk7Cj4gKwln ZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnApOwo+ICsKPiArCW1lbXNldChib25kcywgMCwg c2l6ZW9mKGJvbmRzKSk7Cj4gKwlmb3IgKGludCBuID0gMDsgbiA8IEFSUkFZX1NJWkUoYm9uZHMp OyBuKyspIHsKPiArCQlib25kc1tuXS5iYXNlLm5hbWUgPSBJOTE1X0NPTlRFWFRfRU5HSU5FU19F WFRfQk9ORDsKPiArCQlib25kc1tuXS5iYXNlLm5leHRfZXh0ZW5zaW9uID0KPiArCQkJbiA/IHRv X3VzZXJfcG9pbnRlcigmYm9uZHNbbiAtIDFdKSA6IDA7Cj4gKwkJYm9uZHNbbl0ubnVtX2JvbmRz ID0gMTsKPiArCX0KPiArCWVuZ2luZXMuZXh0ZW5zaW9ucyA9IHRvX3VzZXJfcG9pbnRlcigmYm9u ZHMpOwo+ICsJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwKTsKPiArCj4gKwlib25kc1sw XS5iYXNlLm5leHRfZXh0ZW5zaW9uID0gLTF1bGw7Cj4gKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2Nv bnRleHRfc2V0X3BhcmFtKGk5MTUsICZwKSwgLUVGQVVMVCk7Cj4gKwo+ICsJYm9uZHNbMF0uYmFz ZS5uZXh0X2V4dGVuc2lvbiA9IHRvX3VzZXJfcG9pbnRlcigmYm9uZHNbMF0pOwo+ICsJaWd0X2Fz c2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmcCksIC1FMkJJRyk7Cj4gKwo+ ICsJZW5naW5lcy5leHRlbnNpb25zID0gdG9fdXNlcl9wb2ludGVyKCZib25kc1sxXSk7Cj4gKwlp Z3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwKSwgLUUyQklHKTsK PiArCWJvbmRzWzBdLmJhc2UubmV4dF9leHRlbnNpb24gPSAwOwo+ICsJZ2VtX2NvbnRleHRfc2V0 X3BhcmFtKGk5MTUsICZwKTsKPiArCj4gKwloYW5kbGUgPSBnZW1fY3JlYXRlKGk5MTUsIDQwOTYg KiAzKTsKPiArCXB0ciA9IGdlbV9tbWFwX19ndHQoaTkxNSwgaGFuZGxlLCA0MDk2ICogMywgUFJP VF9XUklURSk7Cj4gKwlnZW1fY2xvc2UoaTkxNSwgaGFuZGxlKTsKPiArCj4gKwltZW1jcHkocHRy ICsgNDA5NiwgJmJvbmRzWzBdLCBzaXplb2YoYm9uZHNbMF0pKTsKPiArCWVuZ2luZXMuZXh0ZW5z aW9ucyA9IHRvX3VzZXJfcG9pbnRlcihwdHIpICsgNDA5NjsKPiArCWdlbV9jb250ZXh0X3NldF9w YXJhbShpOTE1LCAmcCk7Cj4gKwo+ICsJbWVtY3B5KHB0ciwgJmJvbmRzWzBdLCBzaXplb2YoYm9u ZHNbMF0pKTsKPiArCWJvbmRzWzBdLmJhc2UubmV4dF9leHRlbnNpb24gPSB0b191c2VyX3BvaW50 ZXIocHRyKTsKPiArCW1lbWNweShwdHIgKyA0MDk2LCAmYm9uZHNbMF0sIHNpemVvZihib25kc1sw XSkpOwo+ICsJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwKTsKPiArCj4gKwltdW5tYXAo cHRyLCA0MDk2KTsKPiArCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oaTkx NSwgJnApLCAtRUZBVUxUKTsKPiArCj4gKwlib25kc1swXS5iYXNlLm5leHRfZXh0ZW5zaW9uID0g MDsKPiArCW1lbWNweShwdHIgKyA4MTkyLCAmYm9uZHNbMF0sIHNpemVvZihib25kc1swXSkpOwo+ ICsJYm9uZHNbMF0uYmFzZS5uZXh0X2V4dGVuc2lvbiA9IHRvX3VzZXJfcG9pbnRlcihwdHIpICsg ODE5MjsKPiArCW1lbWNweShwdHIgKyA0MDk2LCAmYm9uZHNbMF0sIHNpemVvZihib25kc1swXSkp Owo+ICsJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwKTsKPiArCj4gKwltdW5tYXAocHRy ICsgODE5MiwgNDA5Nik7Cj4gKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFt KGk5MTUsICZwKSwgLUVGQVVMVCk7Cj4gKwo+ICsJbXVubWFwKHB0ciArIDQwOTYsIDQwOTYpOwo+ ICsJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmcCksIC1FRkFV TFQpOwo+ICsKPiArCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgcC5jdHhfaWQpOwo+ICt9Cj4g Kwo+ICAgc3RhdGljIHZvaWQga2lja19rdGhyZWFkcyh2b2lkKQo+ICAgewo+ICAgCXVzbGVlcCgy MCAqIDEwMDApOyAvKiAyMG1zIHNob3VsZCBiZSBlbm91Z2ggZm9yIGtzb2Z0aXJxZCEgKi8KPiBA QCAtMzM3LDYgKzQzMywzMSBAQCBzdGF0aWMgZG91YmxlIG1lYXN1cmVfbWluX2xvYWQoaW50IHBt dSwgdW5zaWduZWQgaW50IG51bSwgaW50IHBlcmlvZF91cykKPiAgIAlyZXR1cm4gbWluIC8gKGRv dWJsZSlkX3Q7Cj4gICB9Cj4gICAKPiArc3RhdGljIHZvaWQgbWVhc3VyZV9hbGxfbG9hZChpbnQg cG11LCBkb3VibGUgKnYsIHVuc2lnbmVkIGludCBudW0sIGludCBwZXJpb2RfdXMpCj4gK3sKPiAr CXVpbnQ2NF90IGRhdGFbMiArIG51bV07Cj4gKwl1aW50NjRfdCBkX3QsIGRfdltudW1dOwo+ICsK PiArCWtpY2tfa3RocmVhZHMoKTsKPiArCj4gKwlpZ3RfYXNzZXJ0X2VxKHJlYWQocG11LCBkYXRh LCBzaXplb2YoZGF0YSkpLCBzaXplb2YoZGF0YSkpOwo+ICsJZm9yICh1bnNpZ25lZCBpbnQgbiA9 IDA7IG4gPCBudW07IG4rKykKPiArCQlkX3Zbbl0gPSAtZGF0YVsyICsgbl07Cj4gKwlkX3QgPSAt ZGF0YVsxXTsKPiArCj4gKwl1c2xlZXAocGVyaW9kX3VzKTsKPiArCj4gKwlpZ3RfYXNzZXJ0X2Vx KHJlYWQocG11LCBkYXRhLCBzaXplb2YoZGF0YSkpLCBzaXplb2YoZGF0YSkpOwo+ICsKPiArCWRf dCArPSBkYXRhWzFdOwo+ICsJZm9yICh1bnNpZ25lZCBpbnQgbiA9IDA7IG4gPCBudW07IG4rKykg ewo+ICsJCWRfdltuXSArPSBkYXRhWzIgKyBuXTsKPiArCQlpZ3RfZGVidWcoImVuZ2luZVslZF06 ICUuMWYlJVxuIiwKPiArCQkJICBuLCBkX3Zbbl0gLyAoZG91YmxlKWRfdCAqIDEwMCk7Cj4gKwkJ dltuXSA9IGRfdltuXSAvIChkb3VibGUpZF90Owo+ICsJfQo+ICt9Cj4gKwo+ICAgc3RhdGljIGlu dCBhZGRfcG11KGludCBwbXUsIGNvbnN0IHN0cnVjdCBpOTE1X2VuZ2luZV9jbGFzc19pbnN0YW5j ZSAqY2kpCj4gICB7Cj4gICAJcmV0dXJuIHBlcmZfaTkxNV9vcGVuX2dyb3VwKEk5MTVfUE1VX0VO R0lORV9CVVNZKGNpLT5lbmdpbmVfY2xhc3MsCj4gQEAgLTQwNyw3ICs1MjgsNyBAQCBzdGF0aWMg dm9pZCBpbmRpdmlkdWFsKGludCBpOTE1KQo+ICAgCQlmb3IgKGludCBwYXNzID0gMDsgcGFzcyA8 IGNvdW50OyBwYXNzKyspIHsgLyogYXBwcm94LiBjb3VudCEgKi8KPiAgIAkJCWlndF9hc3NlcnQo c2l6ZW9mKCpjaSkgPT0gc2l6ZW9mKGludCkpOwo+ICAgCQkJaWd0X3Blcm11dGVfYXJyYXkoY2ks IGNvdW50LCBpZ3RfZXhjaGFuZ2VfaW50KTsKPiAtCQkJc2V0X2xvYWRfYmFsYW5jZXIoaTkxNSwg Y3R4LCBjaSwgY291bnQpOwo+ICsJCQlzZXRfbG9hZF9iYWxhbmNlcihpOTE1LCBjdHgsIGNpLCBj b3VudCwgTlVMTCk7Cj4gICAJCQlmb3IgKHVuc2lnbmVkIGludCBuID0gMDsgbiA8IGNvdW50OyBu KyspCj4gICAJCQkJY2hlY2tfaW5kaXZpZHVhbF9lbmdpbmUoaTkxNSwgY3R4LCBjaSwgbik7Cj4g ICAJCX0KPiBAQCAtNDE5LDYgKzU0MCwxNDUgQEAgc3RhdGljIHZvaWQgaW5kaXZpZHVhbChpbnQg aTkxNSkKPiAgIAlnZW1fcXVpZXNjZW50X2dwdShpOTE1KTsKPiAgIH0KPiAgIAo+ICtzdGF0aWMg dm9pZCBib25kZWQoaW50IGk5MTUsIHVuc2lnbmVkIGludCBmbGFncykKPiArI2RlZmluZSBDT1JL IDB4MQo+ICt7Cj4gKwlJOTE1X0RFRklORV9DT05URVhUX0VOR0lORVNfQk9ORChib25kc1sxNl0s IDEpOwo+ICsJc3RydWN0IGk5MTVfZW5naW5lX2NsYXNzX2luc3RhbmNlICptYXN0ZXJfZW5naW5l czsKPiArCXVpbnQzMl90IG1hc3RlcjsKPiArCj4gKwkvKgo+ICsJICogSTkxNV9DT05URVhUX1BB UkFNX0VOR0lORSBwcm92aWRlcyBhbiBleHRlbnNpb24gdGhhdCBhbGxvd3MgdXMKPiArCSAqIHRv IHNwZWNpZnkgd2hpY2ggZW5naW5lKHMpIHRvIHBhaXIgd2l0aCBhIHBhcmFsbGVsIChFWEVDX1NV Qk1JVCkKPiArCSAqIHJlcXVlc3Qgc3VibWl0dGVkIHRvIGFub3RoZXIgZW5naW5lLgo+ICsJICov Cj4gKwo+ICsJbWFzdGVyID0gZ2VtX3F1ZXVlX2NyZWF0ZShpOTE1KTsKPiArCj4gKwltZW1zZXQo Ym9uZHMsIDAsIHNpemVvZihib25kcykpOwo+ICsJZm9yIChpbnQgbiA9IDA7IG4gPCBBUlJBWV9T SVpFKGJvbmRzKTsgbisrKSB7Cj4gKwkJYm9uZHNbbl0uYmFzZS5uYW1lID0gSTkxNV9DT05URVhU X0VOR0lORVNfRVhUX0JPTkQ7Cj4gKwkJYm9uZHNbbl0uYmFzZS5uZXh0X2V4dGVuc2lvbiA9Cj4g KwkJCW4gPyB0b191c2VyX3BvaW50ZXIoJmJvbmRzW24gLSAxXSkgOiAwOwo+ICsJCWJvbmRzW25d Lm51bV9ib25kcyA9IDE7Cj4gKwl9Cj4gKwo+ICsJZm9yIChpbnQgY2xhc3MgPSAwOyBjbGFzcyA8 IDMyOyBjbGFzcysrKSB7Cj4gKwkJc3RydWN0IGk5MTVfZW5naW5lX2NsYXNzX2luc3RhbmNlICpz aWJsaW5nczsKPiArCQl1bnNpZ25lZCBpbnQgY291bnQsIGxpbWl0LCAqb3JkZXI7Cj4gKwkJdWlu dDMyX3QgY3R4Owo+ICsJCWludCBuOwo+ICsKPiArCQlzaWJsaW5ncyA9IGxpc3RfZW5naW5lcyhp OTE1LCAxdSA8PCBjbGFzcywgJmNvdW50KTsKPiArCQlpZiAoIXNpYmxpbmdzKQo+ICsJCQljb250 aW51ZTsKPiArCj4gKwkJaWYgKGNvdW50IDwgMikgewo+ICsJCQlmcmVlKHNpYmxpbmdzKTsKPiAr CQkJY29udGludWU7Cj4gKwkJfQo+ICsKPiArCQltYXN0ZXJfZW5naW5lcyA9IGxpc3RfZW5naW5l cyhpOTE1LCB+KDF1IDw8IGNsYXNzKSwgJmxpbWl0KTsKPiArCQlzZXRfZW5naW5lcyhpOTE1LCBt YXN0ZXIsIG1hc3Rlcl9lbmdpbmVzLCBsaW1pdCk7Cj4gKwo+ICsJCWxpbWl0ID0gbWluKGNvdW50 LCBsaW1pdCk7Cj4gKwkJaWd0X2Fzc2VydChsaW1pdCA8PSBBUlJBWV9TSVpFKGJvbmRzKSk7Cj4g KwkJZm9yIChuID0gMDsgbiA8IGxpbWl0OyBuKyspIHsKPiArCQkJYm9uZHNbbl0ubWFzdGVyID0g bWFzdGVyX2VuZ2luZXNbbl07Cj4gKwkJCWJvbmRzW25dLmVuZ2luZXNbMF0gPSBzaWJsaW5nc1tu XTsKPiArCQl9Cj4gKwo+ICsJCWN0eCA9IGdlbV9jb250ZXh0X2Nsb25lKGk5MTUsCj4gKwkJCQkJ bWFzdGVyLCBJOTE1X0NPTlRFWFRfQ0xPTkVfVk0sCj4gKwkJCQkJSTkxNV9DT05URVhUX0NSRUFU RV9GTEFHU19TSU5HTEVfVElNRUxJTkUpOwo+ICsJCXNldF9sb2FkX2JhbGFuY2VyKGk5MTUsIGN0 eCwgc2libGluZ3MsIGNvdW50LCAmYm9uZHNbbGltaXQgLSAxXSk7Cj4gKwo+ICsJCW9yZGVyID0g bWFsbG9jKHNpemVvZigqb3JkZXIpICogOCAqIGxpbWl0KTsKPiArCQlpZ3RfYXNzZXJ0KG9yZGVy KTsKPiArCQlmb3IgKG4gPSAwOyBuIDwgbGltaXQ7IG4rKykKPiArCQkJb3JkZXJbMiAqIGxpbWl0 IC0gbiAtIDFdID0gb3JkZXJbbl0gPSBuICUgbGltaXQ7Cj4gKwkJbWVtY3B5KG9yZGVyICsgMiAq IGxpbWl0LCBvcmRlciwgMiAqIGxpbWl0ICogc2l6ZW9mKCpvcmRlcikpOwo+ICsJCW1lbWNweShv cmRlciArIDQgKiBsaW1pdCwgb3JkZXIsIDQgKiBsaW1pdCAqIHNpemVvZigqb3JkZXIpKTsKPiAr CQlpZ3RfcGVybXV0ZV9hcnJheShvcmRlciArIDIgKiBsaW1pdCwgNiAqIGxpbWl0LCBpZ3RfZXhj aGFuZ2VfaW50KTsKPiArCj4gKwkJZm9yIChuID0gMDsgbiA8IDggKiBsaW1pdDsgbisrKSB7Cj4g KwkJCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZWI7Cj4gKwkJCWlndF9zcGluX3Qg KnNwaW4sICpwbHVnOwo+ICsJCQlJR1RfQ09SS19IQU5ETEUoY29yayk7Cj4gKwkJCWRvdWJsZSB2 W2xpbWl0XTsKPiArCQkJaW50IHBtdVtsaW1pdCArIDFdOwo+ICsJCQlpbnQgYm9uZCA9IG9yZGVy W25dOwo+ICsKPiArCQkJcG11WzBdID0gLTE7Cj4gKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgbGlt aXQ7IGkrKykKPiArCQkJCXBtdVtpXSA9IGFkZF9wbXUocG11WzBdLCAmc2libGluZ3NbaV0pOwo+ ICsJCQlwbXVbbGltaXRdID0gYWRkX3BtdShwbXVbMF0sICZtYXN0ZXJfZW5naW5lc1tib25kXSk7 Cj4gKwo+ICsJCQlpZ3RfYXNzZXJ0KHNpYmxpbmdzW2JvbmRdLmVuZ2luZV9jbGFzcyAhPQo+ICsJ CQkJICAgbWFzdGVyX2VuZ2luZXNbYm9uZF0uZW5naW5lX2NsYXNzKTsKPiArCj4gKwkJCXBsdWcg PSBOVUxMOwo+ICsJCQlpZiAoZmxhZ3MgJiBDT1JLKSB7Cj4gKwkJCQlwbHVnID0gX19pZ3Rfc3Bp bl9uZXcoaTkxNSwKPiArCQkJCQkJICAgICAgLmN0eCA9IG1hc3RlciwKPiArCQkJCQkJICAgICAg LmVuZ2luZSA9IGJvbmQsCj4gKwkJCQkJCSAgICAgIC5kZXBlbmRlbmN5ID0gaWd0X2NvcmtfcGx1 ZygmY29yaywgaTkxNSkpOwo+ICsJCQl9Cj4gKwo+ICsJCQlzcGluID0gX19pZ3Rfc3Bpbl9uZXco aTkxNSwKPiArCQkJCQkgICAgICAuY3R4ID0gbWFzdGVyLAo+ICsJCQkJCSAgICAgIC5lbmdpbmUg PSBib25kLAo+ICsJCQkJCSAgICAgIC5mbGFncyA9IElHVF9TUElOX0ZFTkNFX09VVCk7Cj4gKwo+ ICsJCQllYiA9IHNwaW4tPmV4ZWNidWY7Cj4gKwkJCWViLnJzdmQxID0gY3R4Owo+ICsJCQllYi5y c3ZkMiA9IHNwaW4tPm91dF9mZW5jZTsKPiArCQkJZWIuZmxhZ3MgPSBJOTE1X0VYRUNfRkVOQ0Vf U1VCTUlUOwo+ICsJCQlnZW1fZXhlY2J1ZihpOTE1LCAmZWIpOwo+ICsKPiArCQkJaWYgKHBsdWcp IHsKPiArCQkJCWlndF9jb3JrX3VucGx1ZygmY29yayk7Cj4gKwkJCQlpZ3Rfc3Bpbl9mcmVlKGk5 MTUsIHBsdWcpOwo+ICsJCQl9Cj4gKwo+ICsJCQltZWFzdXJlX2FsbF9sb2FkKHBtdVswXSwgdiwg bGltaXQgKyAxLCAxMDAwMCk7Cj4gKwkJCWlndF9zcGluX2ZyZWUoaTkxNSwgc3Bpbik7Cj4gKwo+ ICsJCQlpZ3RfYXNzZXJ0X2Yodltib25kXSA+IDAuOTAsCj4gKwkJCQkgICAgICJlbmdpbmUgJWQg KGNsYXNzOmluc3RhbmNlICVzOiVkKSB3YXMgZm91bmQgdG8gYmUgb25seSAlLjFmJSUgYnVzeVxu IiwKPiArCQkJCSAgICAgYm9uZCwKPiArCQkJCSAgICAgY2xhc3NfdG9fc3RyKHNpYmxpbmdzW2Jv bmRdLmVuZ2luZV9jbGFzcyksCj4gKwkJCQkgICAgIHNpYmxpbmdzW2JvbmRdLmVuZ2luZV9pbnN0 YW5jZSwKPiArCQkJCSAgICAgMTAwICogdltib25kXSk7Cj4gKwkJCWZvciAoaW50IG90aGVyID0g MDsgb3RoZXIgPCBsaW1pdDsgb3RoZXIrKykgewo+ICsJCQkJaWYgKG90aGVyID09IGJvbmQpCj4g KwkJCQkJY29udGludWU7Cj4gKwo+ICsJCQkJaWd0X2Fzc2VydF9mKHZbb3RoZXJdID09IDAsCj4g KwkJCQkJICAgICAiZW5naW5lICVkIChjbGFzczppbnN0YW5jZSAlczolZCkgd2FzIG5vdCBpZGxl LCBhbmQgYWN0dWFsbHkgJS4xZiUlIGJ1c3lcbiIsCj4gKwkJCQkJICAgICBvdGhlciwKPiArCQkJ CQkgICAgIGNsYXNzX3RvX3N0cihzaWJsaW5nc1tvdGhlcl0uZW5naW5lX2NsYXNzKSwKPiArCQkJ CQkgICAgIHNpYmxpbmdzW290aGVyXS5lbmdpbmVfaW5zdGFuY2UsCj4gKwkJCQkJICAgICAxMDAg KiB2W290aGVyXSk7Cj4gKwkJCX0KPiArCQkJaWd0X2Fzc2VydF9mKHZbbGltaXRdID4gMC45MCwK PiArCQkJCSAgICAgIm1hc3RlciAoY2xhc3M6aW5zdGFuY2UgJXM6JWQpIHdhcyBmb3VuZCB0byBi ZSBvbmx5ICUuMWYlJSBidXN5XG4iLAo+ICsJCQkJICAgICBjbGFzc190b19zdHIobWFzdGVyX2Vu Z2luZXNbYm9uZF0uZW5naW5lX2NsYXNzKSwKPiArCQkJCSAgICAgbWFzdGVyX2VuZ2luZXNbYm9u ZF0uZW5naW5lX2luc3RhbmNlLAo+ICsJCQkJICAgICAxMDAgKiB2W2xpbWl0XSk7Cj4gKwo+ICsJ CQljbG9zZShwbXVbMF0pOwo+ICsJCX0KPiArCj4gKwkJZnJlZShvcmRlcik7Cj4gKwkJZ2VtX2Nv bnRleHRfZGVzdHJveShpOTE1LCBjdHgpOwo+ICsJCWZyZWUobWFzdGVyX2VuZ2luZXMpOwo+ICsJ CWZyZWUoc2libGluZ3MpOwo+ICsJfQo+ICsKPiArCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwg bWFzdGVyKTsKPiArfQo+ICsKPiAgIHN0YXRpYyB2b2lkIGluZGljZXMoaW50IGk5MTUpCj4gICB7 Cj4gICAJSTkxNV9ERUZJTkVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTKGVuZ2luZXMsIEk5MTVfRVhF Q19SSU5HX01BU0sgKyAxKTsKPiBAQCAtODUxLDcgKzExMTEsNyBAQCBzdGF0aWMgdm9pZCBzZW1h cGhvcmUoaW50IGk5MTUpCj4gICAJCWNvdW50ID0gQVJSQVlfU0laRShibG9jayk7Cj4gICAKPiAg IAkJZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cj4gLQkJCXNldF9sb2FkX2JhbGFu Y2VyKGk5MTUsIGJsb2NrW2ldLCBjaSwgY291bnQpOwo+ICsJCQlzZXRfbG9hZF9iYWxhbmNlcihp OTE1LCBibG9ja1tpXSwgY2ksIGNvdW50LCBOVUxMKTsKPiAgIAkJCXNwaW5baV0gPSBfX2lndF9z cGluX25ldyhpOTE1LAo+ICAgCQkJCQkJIC5jdHggPSBibG9ja1tpXSwKPiAgIAkJCQkJCSAuZGVw ZW5kZW5jeSA9IHNjcmF0Y2gpOwo+IEBAIC04NjIsNyArMTEyMiw3IEBAIHN0YXRpYyB2b2lkIHNl bWFwaG9yZShpbnQgaTkxNSkKPiAgIAkJICogb3Igd2UgbGV0IHRoZSB2aXAgdGhyb3VnaC4gSWYg bm90LCB3ZSBoYW5nLgo+ICAgCQkgKi8KPiAgIAkJdmlwID0gZ2VtX2NvbnRleHRfY3JlYXRlKGk5 MTUpOwo+IC0JCXNldF9sb2FkX2JhbGFuY2VyKGk5MTUsIHZpcCwgY2ksIGNvdW50KTsKPiArCQlz ZXRfbG9hZF9iYWxhbmNlcihpOTE1LCB2aXAsIGNpLCBjb3VudCwgTlVMTCk7Cj4gICAJCXBpbmco aTkxNSwgdmlwLCAwKTsKPiAgIAkJZ2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCB2aXApOwo+ICAg Cj4gQEAgLTk3Nyw3ICsxMjM3LDcgQEAgc3RhdGljIGJvb2wgaGFzX2xvYWRfYmFsYW5jZXIoaW50 IGk5MTUpCj4gICAJaW50IGVycjsKPiAgIAo+ICAgCWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShp OTE1KTsKPiAtCWVyciA9IF9fc2V0X2xvYWRfYmFsYW5jZXIoaTkxNSwgY3R4LCAmY2ksIDEpOwo+ ICsJZXJyID0gX19zZXRfbG9hZF9iYWxhbmNlcihpOTE1LCBjdHgsICZjaSwgMSwgTlVMTCk7Cj4g ICAJZ2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCBjdHgpOwo+ICAgCj4gICAJcmV0dXJuIGVyciA9 PSAwOwo+IEBAIC0xMDAzLDYgKzEyNjMsOSBAQCBpZ3RfbWFpbgo+ICAgCWlndF9zdWJ0ZXN0KCJp bnZhbGlkLWJhbGFuY2VyIikKPiAgIAkJaW52YWxpZF9iYWxhbmNlcihpOTE1KTsKPiAgIAo+ICsJ aWd0X3N1YnRlc3QoImludmFsaWQtYm9uZHMiKQo+ICsJCWludmFsaWRfYm9uZHMoaTkxNSk7Cj4g Kwo+ICAgCWlndF9zdWJ0ZXN0KCJpbmRpdmlkdWFsIikKPiAgIAkJaW5kaXZpZHVhbChpOTE1KTsK PiAgIAo+IEBAIC0xMDM3LDYgKzEzMDAsMTIgQEAgaWd0X21haW4KPiAgIAlpZ3Rfc3VidGVzdCgi c21va2UiKQo+ICAgCQlzbW9rZXRlc3QoaTkxNSwgMjApOwo+ICAgCj4gKwlpZ3Rfc3VidGVzdCgi Ym9uZGVkLWltbSIpCj4gKwkJYm9uZGVkKGk5MTUsIDApOwo+ICsKPiArCWlndF9zdWJ0ZXN0KCJi b25kZWQtY29yayIpCj4gKwkJYm9uZGVkKGk5MTUsIENPUkspOwo+ICsKPiAgIAlpZ3RfZml4dHVy ZSB7Cj4gICAJCWlndF9zdG9wX2hhbmdfZGV0ZWN0b3IoKTsKPiAgIAl9Cj4gCgpSZXZpZXdlZC1i eTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClJlZ2FyZHMsCgpU dnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: References: <20190522113712.23512-10-chris@chris-wilson.co.uk> <20190522125241.7419-1-chris@chris-wilson.co.uk> From: Tvrtko Ursulin Message-ID: <1af7c3bf-a7d6-608f-0a7b-9c21c0adc019@linux.intel.com> Date: Wed, 22 May 2019 14:08:37 +0100 MIME-Version: 1.0 In-Reply-To: <20190522125241.7419-1-chris@chris-wilson.co.uk> Content-Language: en-US Subject: Re: [igt-dev] [Intel-gfx] [PATCH i-g-t] i915/gem_exec_balancer: Exercise bonded pairs 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: Chris Wilson , intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org List-ID: Ck9uIDIyLzA1LzIwMTkgMTM6NTIsIENocmlzIFdpbHNvbiB3cm90ZToKPiBUaGUgc3VibWl0LWZl bmNlICsgbG9hZF9iYWxhbmNpbmcgYXBpcyBhbGxvdyBmb3IgdXMgdG8gZXhlY3V0ZSBhIG5hbWVk Cj4gcGFpciBvZiBlbmdpbmVzIGluIHBhcmFsbGVsOyB0aGF0IHRoaXMgYnkgc3VibWl0dGluZyBh IHJlcXVlc3QgdG8gb25lCj4gZW5naW5lLCB3ZSBjYW4gdGhlbiB1c2UgdGhlIGdlbmVyYXRlZCBz dWJtaXQtZmVuY2UgdG8gc3VibWl0IGEgc2Vjb25kCj4gcmVxdWVzdCB0byBhbm90aGVyIGVuZ2lu ZSBhbmQgaGF2ZSBpdCBleGVjdXRlIGF0IHRoZSBzYW1lIHRpbWUuCj4gRnVydGhlcm1vcmUsIGJ5 IHNwZWNpZnlpbmcgYm9uZGVkIHBhaXJzLCB3ZSBjYW4gZGlyZWN0IHRoZSB2aXJ0dWFsCj4gZW5n aW5lIHRvIHVzZSBhIHBhcnRpY3VsYXIgZW5naW5lIGluIHBhcmFsbGVsIHRvIHRoZSBmaXJzdCBy ZXF1ZXN0Lgo+IAo+IHYyOiBNZWFzdXJlIGxvYWQgYWNyb3NzIGFsbCBib25kZWQgc2libGluZ3Mg dG8gY2hlY2sgd2UgZG9uJ3QKPiBtaXNzIGFuIGFjY2lkZW50YWwgZXhlY3V0aW9uIG9uIGFub3Ro ZXIuCj4gdjM6IFRocm93IGluIGEgY2hlY2sgZm9yIG1hc3RlciBhcyB3ZWxsLgo+IAo+IFNpZ25l ZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+ ICAgdGVzdHMvaTkxNS9nZW1fZXhlY19iYWxhbmNlci5jIHwgMjg1ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDI3NyBpbnNlcnRpb25zKCspLCA4 IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9leGVjX2JhbGFu Y2VyLmMgYi90ZXN0cy9pOTE1L2dlbV9leGVjX2JhbGFuY2VyLmMKPiBpbmRleCAxNDc4ZmVkZjEu LjMzYjE3ZmM1MSAxMDA2NDQKPiAtLS0gYS90ZXN0cy9pOTE1L2dlbV9leGVjX2JhbGFuY2VyLmMK PiArKysgYi90ZXN0cy9pOTE1L2dlbV9leGVjX2JhbGFuY2VyLmMKPiBAQCAtODksOSArODksMzUg QEAgbGlzdF9lbmdpbmVzKGludCBpOTE1LCB1aW50MzJfdCBjbGFzc19tYXNrLCB1bnNpZ25lZCBp bnQgKm91dCkKPiAgIAlyZXR1cm4gZW5naW5lczsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgaW50IF9f c2V0X2VuZ2luZXMoaW50IGk5MTUsIHVpbnQzMl90IGN0eCwKPiArCQkJIGNvbnN0IHN0cnVjdCBp OTE1X2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqY2ksCj4gKwkJCSB1bnNpZ25lZCBpbnQgY291bnQp Cj4gK3sKPiArCUk5MTVfREVGSU5FX0NPTlRFWFRfUEFSQU1fRU5HSU5FUyhlbmdpbmVzLCBjb3Vu dCk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gcCA9IHsKPiArCQkuY3R4 X2lkID0gY3R4LAo+ICsJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTLAo+ICsJ CS5zaXplID0gc2l6ZW9mKGVuZ2luZXMpLAo+ICsJCS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigm ZW5naW5lcykKPiArCX07Cj4gKwo+ICsJZW5naW5lcy5leHRlbnNpb25zID0gMDsKPiArCW1lbWNw eShlbmdpbmVzLmVuZ2luZXMsIGNpLCBzaXplb2YoZW5naW5lcy5lbmdpbmVzKSk7Cj4gKwo+ICsJ cmV0dXJuIF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwKTsKPiArfQo+ICsKPiArc3Rh dGljIHZvaWQgc2V0X2VuZ2luZXMoaW50IGk5MTUsIHVpbnQzMl90IGN0eCwKPiArCQkJY29uc3Qg c3RydWN0IGk5MTVfZW5naW5lX2NsYXNzX2luc3RhbmNlICpjaSwKPiArCQkJdW5zaWduZWQgaW50 IGNvdW50KQo+ICt7Cj4gKwlpZ3RfYXNzZXJ0X2VxKF9fc2V0X2VuZ2luZXMoaTkxNSwgY3R4LCBj aSwgY291bnQpLCAwKTsKPiArfQo+ICsKPiAgIHN0YXRpYyBpbnQgX19zZXRfbG9hZF9iYWxhbmNl cihpbnQgaTkxNSwgdWludDMyX3QgY3R4LAo+ICAgCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1 X2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqY2ksCj4gLQkJCSAgICAgICB1bnNpZ25lZCBpbnQgY291 bnQpCj4gKwkJCSAgICAgICB1bnNpZ25lZCBpbnQgY291bnQsCj4gKwkJCSAgICAgICB2b2lkICpl eHQpCj4gICB7Cj4gICAJSTkxNV9ERUZJTkVfQ09OVEVYVF9FTkdJTkVTX0xPQURfQkFMQU5DRShi YWxhbmNlciwgY291bnQpOwo+ICAgCUk5MTVfREVGSU5FX0NPTlRFWFRfUEFSQU1fRU5HSU5FUyhl bmdpbmVzLCAxICsgY291bnQpOwo+IEBAIC0xMDQsNiArMTMwLDcgQEAgc3RhdGljIGludCBfX3Nl dF9sb2FkX2JhbGFuY2VyKGludCBpOTE1LCB1aW50MzJfdCBjdHgsCj4gICAKPiAgIAltZW1zZXQo JmJhbGFuY2VyLCAwLCBzaXplb2YoYmFsYW5jZXIpKTsKPiAgIAliYWxhbmNlci5iYXNlLm5hbWUg PSBJOTE1X0NPTlRFWFRfRU5HSU5FU19FWFRfTE9BRF9CQUxBTkNFOwo+ICsJYmFsYW5jZXIuYmFz ZS5uZXh0X2V4dGVuc2lvbiA9IHRvX3VzZXJfcG9pbnRlcihleHQpOwo+ICAgCj4gICAJaWd0X2Fz c2VydChjb3VudCk7Cj4gICAJYmFsYW5jZXIubnVtX3NpYmxpbmdzID0gY291bnQ7Cj4gQEAgLTEy Miw5ICsxNDksMTAgQEAgc3RhdGljIGludCBfX3NldF9sb2FkX2JhbGFuY2VyKGludCBpOTE1LCB1 aW50MzJfdCBjdHgsCj4gICAKPiAgIHN0YXRpYyB2b2lkIHNldF9sb2FkX2JhbGFuY2VyKGludCBp OTE1LCB1aW50MzJfdCBjdHgsCj4gICAJCQkgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9lbmdpbmVf Y2xhc3NfaW5zdGFuY2UgKmNpLAo+IC0JCQkgICAgICB1bnNpZ25lZCBpbnQgY291bnQpCj4gKwkJ CSAgICAgIHVuc2lnbmVkIGludCBjb3VudCwKPiArCQkJICAgICAgdm9pZCAqZXh0KQo+ICAgewo+ IC0JaWd0X2Fzc2VydF9lcShfX3NldF9sb2FkX2JhbGFuY2VyKGk5MTUsIGN0eCwgY2ksIGNvdW50 KSwgMCk7Cj4gKwlpZ3RfYXNzZXJ0X2VxKF9fc2V0X2xvYWRfYmFsYW5jZXIoaTkxNSwgY3R4LCBj aSwgY291bnQsIGV4dCksIDApOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdWludDMyX3QgbG9hZF9i YWxhbmNlcl9jcmVhdGUoaW50IGk5MTUsCj4gQEAgLTEzNCw3ICsxNjIsNyBAQCBzdGF0aWMgdWlu dDMyX3QgbG9hZF9iYWxhbmNlcl9jcmVhdGUoaW50IGk5MTUsCj4gICAJdWludDMyX3QgY3R4Owo+ ICAgCj4gICAJY3R4ID0gZ2VtX2NvbnRleHRfY3JlYXRlKGk5MTUpOwo+IC0Jc2V0X2xvYWRfYmFs YW5jZXIoaTkxNSwgY3R4LCBjaSwgY291bnQpOwo+ICsJc2V0X2xvYWRfYmFsYW5jZXIoaTkxNSwg Y3R4LCBjaSwgY291bnQsIE5VTEwpOwo+ICAgCj4gICAJcmV0dXJuIGN0eDsKPiAgIH0KPiBAQCAt Mjc4LDYgKzMwNiw3NCBAQCBzdGF0aWMgdm9pZCBpbnZhbGlkX2JhbGFuY2VyKGludCBpOTE1KQo+ ICAgCX0KPiAgIH0KPiAgIAo+ICtzdGF0aWMgdm9pZCBpbnZhbGlkX2JvbmRzKGludCBpOTE1KQo+ ICt7Cj4gKwlJOTE1X0RFRklORV9DT05URVhUX0VOR0lORVNfQk9ORChib25kc1sxNl0sIDEpOwo+ ICsJSTkxNV9ERUZJTkVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTKGVuZ2luZXMsIDEpOwo+ICsJc3Ry dWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHAgPSB7Cj4gKwkJLmN0eF9pZCA9IGdlbV9j b250ZXh0X2NyZWF0ZShpOTE1KSwKPiArCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5H SU5FUywKPiArCQkudmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJmVuZ2luZXMpLAo+ICsJCS5zaXpl ID0gc2l6ZW9mKGVuZ2luZXMpLAo+ICsJfTsKPiArCXVpbnQzMl90IGhhbmRsZTsKPiArCXZvaWQg KnB0cjsKPiArCj4gKwltZW1zZXQoJmVuZ2luZXMsIDAsIHNpemVvZihlbmdpbmVzKSk7Cj4gKwln ZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnApOwo+ICsKPiArCW1lbXNldChib25kcywgMCwg c2l6ZW9mKGJvbmRzKSk7Cj4gKwlmb3IgKGludCBuID0gMDsgbiA8IEFSUkFZX1NJWkUoYm9uZHMp OyBuKyspIHsKPiArCQlib25kc1tuXS5iYXNlLm5hbWUgPSBJOTE1X0NPTlRFWFRfRU5HSU5FU19F WFRfQk9ORDsKPiArCQlib25kc1tuXS5iYXNlLm5leHRfZXh0ZW5zaW9uID0KPiArCQkJbiA/IHRv X3VzZXJfcG9pbnRlcigmYm9uZHNbbiAtIDFdKSA6IDA7Cj4gKwkJYm9uZHNbbl0ubnVtX2JvbmRz ID0gMTsKPiArCX0KPiArCWVuZ2luZXMuZXh0ZW5zaW9ucyA9IHRvX3VzZXJfcG9pbnRlcigmYm9u ZHMpOwo+ICsJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwKTsKPiArCj4gKwlib25kc1sw XS5iYXNlLm5leHRfZXh0ZW5zaW9uID0gLTF1bGw7Cj4gKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2Nv bnRleHRfc2V0X3BhcmFtKGk5MTUsICZwKSwgLUVGQVVMVCk7Cj4gKwo+ICsJYm9uZHNbMF0uYmFz ZS5uZXh0X2V4dGVuc2lvbiA9IHRvX3VzZXJfcG9pbnRlcigmYm9uZHNbMF0pOwo+ICsJaWd0X2Fz c2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmcCksIC1FMkJJRyk7Cj4gKwo+ ICsJZW5naW5lcy5leHRlbnNpb25zID0gdG9fdXNlcl9wb2ludGVyKCZib25kc1sxXSk7Cj4gKwlp Z3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwKSwgLUUyQklHKTsK PiArCWJvbmRzWzBdLmJhc2UubmV4dF9leHRlbnNpb24gPSAwOwo+ICsJZ2VtX2NvbnRleHRfc2V0 X3BhcmFtKGk5MTUsICZwKTsKPiArCj4gKwloYW5kbGUgPSBnZW1fY3JlYXRlKGk5MTUsIDQwOTYg KiAzKTsKPiArCXB0ciA9IGdlbV9tbWFwX19ndHQoaTkxNSwgaGFuZGxlLCA0MDk2ICogMywgUFJP VF9XUklURSk7Cj4gKwlnZW1fY2xvc2UoaTkxNSwgaGFuZGxlKTsKPiArCj4gKwltZW1jcHkocHRy ICsgNDA5NiwgJmJvbmRzWzBdLCBzaXplb2YoYm9uZHNbMF0pKTsKPiArCWVuZ2luZXMuZXh0ZW5z aW9ucyA9IHRvX3VzZXJfcG9pbnRlcihwdHIpICsgNDA5NjsKPiArCWdlbV9jb250ZXh0X3NldF9w YXJhbShpOTE1LCAmcCk7Cj4gKwo+ICsJbWVtY3B5KHB0ciwgJmJvbmRzWzBdLCBzaXplb2YoYm9u ZHNbMF0pKTsKPiArCWJvbmRzWzBdLmJhc2UubmV4dF9leHRlbnNpb24gPSB0b191c2VyX3BvaW50 ZXIocHRyKTsKPiArCW1lbWNweShwdHIgKyA0MDk2LCAmYm9uZHNbMF0sIHNpemVvZihib25kc1sw XSkpOwo+ICsJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwKTsKPiArCj4gKwltdW5tYXAo cHRyLCA0MDk2KTsKPiArCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oaTkx NSwgJnApLCAtRUZBVUxUKTsKPiArCj4gKwlib25kc1swXS5iYXNlLm5leHRfZXh0ZW5zaW9uID0g MDsKPiArCW1lbWNweShwdHIgKyA4MTkyLCAmYm9uZHNbMF0sIHNpemVvZihib25kc1swXSkpOwo+ ICsJYm9uZHNbMF0uYmFzZS5uZXh0X2V4dGVuc2lvbiA9IHRvX3VzZXJfcG9pbnRlcihwdHIpICsg ODE5MjsKPiArCW1lbWNweShwdHIgKyA0MDk2LCAmYm9uZHNbMF0sIHNpemVvZihib25kc1swXSkp Owo+ICsJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwKTsKPiArCj4gKwltdW5tYXAocHRy ICsgODE5MiwgNDA5Nik7Cj4gKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfc2V0X3BhcmFt KGk5MTUsICZwKSwgLUVGQVVMVCk7Cj4gKwo+ICsJbXVubWFwKHB0ciArIDQwOTYsIDQwOTYpOwo+ ICsJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmcCksIC1FRkFV TFQpOwo+ICsKPiArCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgcC5jdHhfaWQpOwo+ICt9Cj4g Kwo+ICAgc3RhdGljIHZvaWQga2lja19rdGhyZWFkcyh2b2lkKQo+ICAgewo+ICAgCXVzbGVlcCgy MCAqIDEwMDApOyAvKiAyMG1zIHNob3VsZCBiZSBlbm91Z2ggZm9yIGtzb2Z0aXJxZCEgKi8KPiBA QCAtMzM3LDYgKzQzMywzMSBAQCBzdGF0aWMgZG91YmxlIG1lYXN1cmVfbWluX2xvYWQoaW50IHBt dSwgdW5zaWduZWQgaW50IG51bSwgaW50IHBlcmlvZF91cykKPiAgIAlyZXR1cm4gbWluIC8gKGRv dWJsZSlkX3Q7Cj4gICB9Cj4gICAKPiArc3RhdGljIHZvaWQgbWVhc3VyZV9hbGxfbG9hZChpbnQg cG11LCBkb3VibGUgKnYsIHVuc2lnbmVkIGludCBudW0sIGludCBwZXJpb2RfdXMpCj4gK3sKPiAr CXVpbnQ2NF90IGRhdGFbMiArIG51bV07Cj4gKwl1aW50NjRfdCBkX3QsIGRfdltudW1dOwo+ICsK PiArCWtpY2tfa3RocmVhZHMoKTsKPiArCj4gKwlpZ3RfYXNzZXJ0X2VxKHJlYWQocG11LCBkYXRh LCBzaXplb2YoZGF0YSkpLCBzaXplb2YoZGF0YSkpOwo+ICsJZm9yICh1bnNpZ25lZCBpbnQgbiA9 IDA7IG4gPCBudW07IG4rKykKPiArCQlkX3Zbbl0gPSAtZGF0YVsyICsgbl07Cj4gKwlkX3QgPSAt ZGF0YVsxXTsKPiArCj4gKwl1c2xlZXAocGVyaW9kX3VzKTsKPiArCj4gKwlpZ3RfYXNzZXJ0X2Vx KHJlYWQocG11LCBkYXRhLCBzaXplb2YoZGF0YSkpLCBzaXplb2YoZGF0YSkpOwo+ICsKPiArCWRf dCArPSBkYXRhWzFdOwo+ICsJZm9yICh1bnNpZ25lZCBpbnQgbiA9IDA7IG4gPCBudW07IG4rKykg ewo+ICsJCWRfdltuXSArPSBkYXRhWzIgKyBuXTsKPiArCQlpZ3RfZGVidWcoImVuZ2luZVslZF06 ICUuMWYlJVxuIiwKPiArCQkJICBuLCBkX3Zbbl0gLyAoZG91YmxlKWRfdCAqIDEwMCk7Cj4gKwkJ dltuXSA9IGRfdltuXSAvIChkb3VibGUpZF90Owo+ICsJfQo+ICt9Cj4gKwo+ICAgc3RhdGljIGlu dCBhZGRfcG11KGludCBwbXUsIGNvbnN0IHN0cnVjdCBpOTE1X2VuZ2luZV9jbGFzc19pbnN0YW5j ZSAqY2kpCj4gICB7Cj4gICAJcmV0dXJuIHBlcmZfaTkxNV9vcGVuX2dyb3VwKEk5MTVfUE1VX0VO R0lORV9CVVNZKGNpLT5lbmdpbmVfY2xhc3MsCj4gQEAgLTQwNyw3ICs1MjgsNyBAQCBzdGF0aWMg dm9pZCBpbmRpdmlkdWFsKGludCBpOTE1KQo+ICAgCQlmb3IgKGludCBwYXNzID0gMDsgcGFzcyA8 IGNvdW50OyBwYXNzKyspIHsgLyogYXBwcm94LiBjb3VudCEgKi8KPiAgIAkJCWlndF9hc3NlcnQo c2l6ZW9mKCpjaSkgPT0gc2l6ZW9mKGludCkpOwo+ICAgCQkJaWd0X3Blcm11dGVfYXJyYXkoY2ks IGNvdW50LCBpZ3RfZXhjaGFuZ2VfaW50KTsKPiAtCQkJc2V0X2xvYWRfYmFsYW5jZXIoaTkxNSwg Y3R4LCBjaSwgY291bnQpOwo+ICsJCQlzZXRfbG9hZF9iYWxhbmNlcihpOTE1LCBjdHgsIGNpLCBj b3VudCwgTlVMTCk7Cj4gICAJCQlmb3IgKHVuc2lnbmVkIGludCBuID0gMDsgbiA8IGNvdW50OyBu KyspCj4gICAJCQkJY2hlY2tfaW5kaXZpZHVhbF9lbmdpbmUoaTkxNSwgY3R4LCBjaSwgbik7Cj4g ICAJCX0KPiBAQCAtNDE5LDYgKzU0MCwxNDUgQEAgc3RhdGljIHZvaWQgaW5kaXZpZHVhbChpbnQg aTkxNSkKPiAgIAlnZW1fcXVpZXNjZW50X2dwdShpOTE1KTsKPiAgIH0KPiAgIAo+ICtzdGF0aWMg dm9pZCBib25kZWQoaW50IGk5MTUsIHVuc2lnbmVkIGludCBmbGFncykKPiArI2RlZmluZSBDT1JL IDB4MQo+ICt7Cj4gKwlJOTE1X0RFRklORV9DT05URVhUX0VOR0lORVNfQk9ORChib25kc1sxNl0s IDEpOwo+ICsJc3RydWN0IGk5MTVfZW5naW5lX2NsYXNzX2luc3RhbmNlICptYXN0ZXJfZW5naW5l czsKPiArCXVpbnQzMl90IG1hc3RlcjsKPiArCj4gKwkvKgo+ICsJICogSTkxNV9DT05URVhUX1BB UkFNX0VOR0lORSBwcm92aWRlcyBhbiBleHRlbnNpb24gdGhhdCBhbGxvd3MgdXMKPiArCSAqIHRv IHNwZWNpZnkgd2hpY2ggZW5naW5lKHMpIHRvIHBhaXIgd2l0aCBhIHBhcmFsbGVsIChFWEVDX1NV Qk1JVCkKPiArCSAqIHJlcXVlc3Qgc3VibWl0dGVkIHRvIGFub3RoZXIgZW5naW5lLgo+ICsJICov Cj4gKwo+ICsJbWFzdGVyID0gZ2VtX3F1ZXVlX2NyZWF0ZShpOTE1KTsKPiArCj4gKwltZW1zZXQo Ym9uZHMsIDAsIHNpemVvZihib25kcykpOwo+ICsJZm9yIChpbnQgbiA9IDA7IG4gPCBBUlJBWV9T SVpFKGJvbmRzKTsgbisrKSB7Cj4gKwkJYm9uZHNbbl0uYmFzZS5uYW1lID0gSTkxNV9DT05URVhU X0VOR0lORVNfRVhUX0JPTkQ7Cj4gKwkJYm9uZHNbbl0uYmFzZS5uZXh0X2V4dGVuc2lvbiA9Cj4g KwkJCW4gPyB0b191c2VyX3BvaW50ZXIoJmJvbmRzW24gLSAxXSkgOiAwOwo+ICsJCWJvbmRzW25d Lm51bV9ib25kcyA9IDE7Cj4gKwl9Cj4gKwo+ICsJZm9yIChpbnQgY2xhc3MgPSAwOyBjbGFzcyA8 IDMyOyBjbGFzcysrKSB7Cj4gKwkJc3RydWN0IGk5MTVfZW5naW5lX2NsYXNzX2luc3RhbmNlICpz aWJsaW5nczsKPiArCQl1bnNpZ25lZCBpbnQgY291bnQsIGxpbWl0LCAqb3JkZXI7Cj4gKwkJdWlu dDMyX3QgY3R4Owo+ICsJCWludCBuOwo+ICsKPiArCQlzaWJsaW5ncyA9IGxpc3RfZW5naW5lcyhp OTE1LCAxdSA8PCBjbGFzcywgJmNvdW50KTsKPiArCQlpZiAoIXNpYmxpbmdzKQo+ICsJCQljb250 aW51ZTsKPiArCj4gKwkJaWYgKGNvdW50IDwgMikgewo+ICsJCQlmcmVlKHNpYmxpbmdzKTsKPiAr CQkJY29udGludWU7Cj4gKwkJfQo+ICsKPiArCQltYXN0ZXJfZW5naW5lcyA9IGxpc3RfZW5naW5l cyhpOTE1LCB+KDF1IDw8IGNsYXNzKSwgJmxpbWl0KTsKPiArCQlzZXRfZW5naW5lcyhpOTE1LCBt YXN0ZXIsIG1hc3Rlcl9lbmdpbmVzLCBsaW1pdCk7Cj4gKwo+ICsJCWxpbWl0ID0gbWluKGNvdW50 LCBsaW1pdCk7Cj4gKwkJaWd0X2Fzc2VydChsaW1pdCA8PSBBUlJBWV9TSVpFKGJvbmRzKSk7Cj4g KwkJZm9yIChuID0gMDsgbiA8IGxpbWl0OyBuKyspIHsKPiArCQkJYm9uZHNbbl0ubWFzdGVyID0g bWFzdGVyX2VuZ2luZXNbbl07Cj4gKwkJCWJvbmRzW25dLmVuZ2luZXNbMF0gPSBzaWJsaW5nc1tu XTsKPiArCQl9Cj4gKwo+ICsJCWN0eCA9IGdlbV9jb250ZXh0X2Nsb25lKGk5MTUsCj4gKwkJCQkJ bWFzdGVyLCBJOTE1X0NPTlRFWFRfQ0xPTkVfVk0sCj4gKwkJCQkJSTkxNV9DT05URVhUX0NSRUFU RV9GTEFHU19TSU5HTEVfVElNRUxJTkUpOwo+ICsJCXNldF9sb2FkX2JhbGFuY2VyKGk5MTUsIGN0 eCwgc2libGluZ3MsIGNvdW50LCAmYm9uZHNbbGltaXQgLSAxXSk7Cj4gKwo+ICsJCW9yZGVyID0g bWFsbG9jKHNpemVvZigqb3JkZXIpICogOCAqIGxpbWl0KTsKPiArCQlpZ3RfYXNzZXJ0KG9yZGVy KTsKPiArCQlmb3IgKG4gPSAwOyBuIDwgbGltaXQ7IG4rKykKPiArCQkJb3JkZXJbMiAqIGxpbWl0 IC0gbiAtIDFdID0gb3JkZXJbbl0gPSBuICUgbGltaXQ7Cj4gKwkJbWVtY3B5KG9yZGVyICsgMiAq IGxpbWl0LCBvcmRlciwgMiAqIGxpbWl0ICogc2l6ZW9mKCpvcmRlcikpOwo+ICsJCW1lbWNweShv cmRlciArIDQgKiBsaW1pdCwgb3JkZXIsIDQgKiBsaW1pdCAqIHNpemVvZigqb3JkZXIpKTsKPiAr CQlpZ3RfcGVybXV0ZV9hcnJheShvcmRlciArIDIgKiBsaW1pdCwgNiAqIGxpbWl0LCBpZ3RfZXhj aGFuZ2VfaW50KTsKPiArCj4gKwkJZm9yIChuID0gMDsgbiA8IDggKiBsaW1pdDsgbisrKSB7Cj4g KwkJCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZWI7Cj4gKwkJCWlndF9zcGluX3Qg KnNwaW4sICpwbHVnOwo+ICsJCQlJR1RfQ09SS19IQU5ETEUoY29yayk7Cj4gKwkJCWRvdWJsZSB2 W2xpbWl0XTsKPiArCQkJaW50IHBtdVtsaW1pdCArIDFdOwo+ICsJCQlpbnQgYm9uZCA9IG9yZGVy W25dOwo+ICsKPiArCQkJcG11WzBdID0gLTE7Cj4gKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgbGlt aXQ7IGkrKykKPiArCQkJCXBtdVtpXSA9IGFkZF9wbXUocG11WzBdLCAmc2libGluZ3NbaV0pOwo+ ICsJCQlwbXVbbGltaXRdID0gYWRkX3BtdShwbXVbMF0sICZtYXN0ZXJfZW5naW5lc1tib25kXSk7 Cj4gKwo+ICsJCQlpZ3RfYXNzZXJ0KHNpYmxpbmdzW2JvbmRdLmVuZ2luZV9jbGFzcyAhPQo+ICsJ CQkJICAgbWFzdGVyX2VuZ2luZXNbYm9uZF0uZW5naW5lX2NsYXNzKTsKPiArCj4gKwkJCXBsdWcg PSBOVUxMOwo+ICsJCQlpZiAoZmxhZ3MgJiBDT1JLKSB7Cj4gKwkJCQlwbHVnID0gX19pZ3Rfc3Bp bl9uZXcoaTkxNSwKPiArCQkJCQkJICAgICAgLmN0eCA9IG1hc3RlciwKPiArCQkJCQkJICAgICAg LmVuZ2luZSA9IGJvbmQsCj4gKwkJCQkJCSAgICAgIC5kZXBlbmRlbmN5ID0gaWd0X2NvcmtfcGx1 ZygmY29yaywgaTkxNSkpOwo+ICsJCQl9Cj4gKwo+ICsJCQlzcGluID0gX19pZ3Rfc3Bpbl9uZXco aTkxNSwKPiArCQkJCQkgICAgICAuY3R4ID0gbWFzdGVyLAo+ICsJCQkJCSAgICAgIC5lbmdpbmUg PSBib25kLAo+ICsJCQkJCSAgICAgIC5mbGFncyA9IElHVF9TUElOX0ZFTkNFX09VVCk7Cj4gKwo+ ICsJCQllYiA9IHNwaW4tPmV4ZWNidWY7Cj4gKwkJCWViLnJzdmQxID0gY3R4Owo+ICsJCQllYi5y c3ZkMiA9IHNwaW4tPm91dF9mZW5jZTsKPiArCQkJZWIuZmxhZ3MgPSBJOTE1X0VYRUNfRkVOQ0Vf U1VCTUlUOwo+ICsJCQlnZW1fZXhlY2J1ZihpOTE1LCAmZWIpOwo+ICsKPiArCQkJaWYgKHBsdWcp IHsKPiArCQkJCWlndF9jb3JrX3VucGx1ZygmY29yayk7Cj4gKwkJCQlpZ3Rfc3Bpbl9mcmVlKGk5 MTUsIHBsdWcpOwo+ICsJCQl9Cj4gKwo+ICsJCQltZWFzdXJlX2FsbF9sb2FkKHBtdVswXSwgdiwg bGltaXQgKyAxLCAxMDAwMCk7Cj4gKwkJCWlndF9zcGluX2ZyZWUoaTkxNSwgc3Bpbik7Cj4gKwo+ ICsJCQlpZ3RfYXNzZXJ0X2Yodltib25kXSA+IDAuOTAsCj4gKwkJCQkgICAgICJlbmdpbmUgJWQg KGNsYXNzOmluc3RhbmNlICVzOiVkKSB3YXMgZm91bmQgdG8gYmUgb25seSAlLjFmJSUgYnVzeVxu IiwKPiArCQkJCSAgICAgYm9uZCwKPiArCQkJCSAgICAgY2xhc3NfdG9fc3RyKHNpYmxpbmdzW2Jv bmRdLmVuZ2luZV9jbGFzcyksCj4gKwkJCQkgICAgIHNpYmxpbmdzW2JvbmRdLmVuZ2luZV9pbnN0 YW5jZSwKPiArCQkJCSAgICAgMTAwICogdltib25kXSk7Cj4gKwkJCWZvciAoaW50IG90aGVyID0g MDsgb3RoZXIgPCBsaW1pdDsgb3RoZXIrKykgewo+ICsJCQkJaWYgKG90aGVyID09IGJvbmQpCj4g KwkJCQkJY29udGludWU7Cj4gKwo+ICsJCQkJaWd0X2Fzc2VydF9mKHZbb3RoZXJdID09IDAsCj4g KwkJCQkJICAgICAiZW5naW5lICVkIChjbGFzczppbnN0YW5jZSAlczolZCkgd2FzIG5vdCBpZGxl LCBhbmQgYWN0dWFsbHkgJS4xZiUlIGJ1c3lcbiIsCj4gKwkJCQkJICAgICBvdGhlciwKPiArCQkJ CQkgICAgIGNsYXNzX3RvX3N0cihzaWJsaW5nc1tvdGhlcl0uZW5naW5lX2NsYXNzKSwKPiArCQkJ CQkgICAgIHNpYmxpbmdzW290aGVyXS5lbmdpbmVfaW5zdGFuY2UsCj4gKwkJCQkJICAgICAxMDAg KiB2W290aGVyXSk7Cj4gKwkJCX0KPiArCQkJaWd0X2Fzc2VydF9mKHZbbGltaXRdID4gMC45MCwK PiArCQkJCSAgICAgIm1hc3RlciAoY2xhc3M6aW5zdGFuY2UgJXM6JWQpIHdhcyBmb3VuZCB0byBi ZSBvbmx5ICUuMWYlJSBidXN5XG4iLAo+ICsJCQkJICAgICBjbGFzc190b19zdHIobWFzdGVyX2Vu Z2luZXNbYm9uZF0uZW5naW5lX2NsYXNzKSwKPiArCQkJCSAgICAgbWFzdGVyX2VuZ2luZXNbYm9u ZF0uZW5naW5lX2luc3RhbmNlLAo+ICsJCQkJICAgICAxMDAgKiB2W2xpbWl0XSk7Cj4gKwo+ICsJ CQljbG9zZShwbXVbMF0pOwo+ICsJCX0KPiArCj4gKwkJZnJlZShvcmRlcik7Cj4gKwkJZ2VtX2Nv bnRleHRfZGVzdHJveShpOTE1LCBjdHgpOwo+ICsJCWZyZWUobWFzdGVyX2VuZ2luZXMpOwo+ICsJ CWZyZWUoc2libGluZ3MpOwo+ICsJfQo+ICsKPiArCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwg bWFzdGVyKTsKPiArfQo+ICsKPiAgIHN0YXRpYyB2b2lkIGluZGljZXMoaW50IGk5MTUpCj4gICB7 Cj4gICAJSTkxNV9ERUZJTkVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTKGVuZ2luZXMsIEk5MTVfRVhF Q19SSU5HX01BU0sgKyAxKTsKPiBAQCAtODUxLDcgKzExMTEsNyBAQCBzdGF0aWMgdm9pZCBzZW1h cGhvcmUoaW50IGk5MTUpCj4gICAJCWNvdW50ID0gQVJSQVlfU0laRShibG9jayk7Cj4gICAKPiAg IAkJZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cj4gLQkJCXNldF9sb2FkX2JhbGFu Y2VyKGk5MTUsIGJsb2NrW2ldLCBjaSwgY291bnQpOwo+ICsJCQlzZXRfbG9hZF9iYWxhbmNlcihp OTE1LCBibG9ja1tpXSwgY2ksIGNvdW50LCBOVUxMKTsKPiAgIAkJCXNwaW5baV0gPSBfX2lndF9z cGluX25ldyhpOTE1LAo+ICAgCQkJCQkJIC5jdHggPSBibG9ja1tpXSwKPiAgIAkJCQkJCSAuZGVw ZW5kZW5jeSA9IHNjcmF0Y2gpOwo+IEBAIC04NjIsNyArMTEyMiw3IEBAIHN0YXRpYyB2b2lkIHNl bWFwaG9yZShpbnQgaTkxNSkKPiAgIAkJICogb3Igd2UgbGV0IHRoZSB2aXAgdGhyb3VnaC4gSWYg bm90LCB3ZSBoYW5nLgo+ICAgCQkgKi8KPiAgIAkJdmlwID0gZ2VtX2NvbnRleHRfY3JlYXRlKGk5 MTUpOwo+IC0JCXNldF9sb2FkX2JhbGFuY2VyKGk5MTUsIHZpcCwgY2ksIGNvdW50KTsKPiArCQlz ZXRfbG9hZF9iYWxhbmNlcihpOTE1LCB2aXAsIGNpLCBjb3VudCwgTlVMTCk7Cj4gICAJCXBpbmco aTkxNSwgdmlwLCAwKTsKPiAgIAkJZ2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCB2aXApOwo+ICAg Cj4gQEAgLTk3Nyw3ICsxMjM3LDcgQEAgc3RhdGljIGJvb2wgaGFzX2xvYWRfYmFsYW5jZXIoaW50 IGk5MTUpCj4gICAJaW50IGVycjsKPiAgIAo+ICAgCWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShp OTE1KTsKPiAtCWVyciA9IF9fc2V0X2xvYWRfYmFsYW5jZXIoaTkxNSwgY3R4LCAmY2ksIDEpOwo+ ICsJZXJyID0gX19zZXRfbG9hZF9iYWxhbmNlcihpOTE1LCBjdHgsICZjaSwgMSwgTlVMTCk7Cj4g ICAJZ2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCBjdHgpOwo+ICAgCj4gICAJcmV0dXJuIGVyciA9 PSAwOwo+IEBAIC0xMDAzLDYgKzEyNjMsOSBAQCBpZ3RfbWFpbgo+ICAgCWlndF9zdWJ0ZXN0KCJp bnZhbGlkLWJhbGFuY2VyIikKPiAgIAkJaW52YWxpZF9iYWxhbmNlcihpOTE1KTsKPiAgIAo+ICsJ aWd0X3N1YnRlc3QoImludmFsaWQtYm9uZHMiKQo+ICsJCWludmFsaWRfYm9uZHMoaTkxNSk7Cj4g Kwo+ICAgCWlndF9zdWJ0ZXN0KCJpbmRpdmlkdWFsIikKPiAgIAkJaW5kaXZpZHVhbChpOTE1KTsK PiAgIAo+IEBAIC0xMDM3LDYgKzEzMDAsMTIgQEAgaWd0X21haW4KPiAgIAlpZ3Rfc3VidGVzdCgi c21va2UiKQo+ICAgCQlzbW9rZXRlc3QoaTkxNSwgMjApOwo+ICAgCj4gKwlpZ3Rfc3VidGVzdCgi Ym9uZGVkLWltbSIpCj4gKwkJYm9uZGVkKGk5MTUsIDApOwo+ICsKPiArCWlndF9zdWJ0ZXN0KCJi b25kZWQtY29yayIpCj4gKwkJYm9uZGVkKGk5MTUsIENPUkspOwo+ICsKPiAgIAlpZ3RfZml4dHVy ZSB7Cj4gICAJCWlndF9zdG9wX2hhbmdfZGV0ZWN0b3IoKTsKPiAgIAl9Cj4gCgpSZXZpZXdlZC1i eTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClJlZ2FyZHMsCgpU dnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0 LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2