From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: References: <20190508100958.32637-1-chris@chris-wilson.co.uk> <20190508100958.32637-14-chris@chris-wilson.co.uk> From: Tvrtko Ursulin Message-ID: <02a9bce5-7c1d-3af4-f283-e59355b18f70@linux.intel.com> Date: Wed, 15 May 2019 11:58:20 +0100 MIME-Version: 1.0 In-Reply-To: <20190508100958.32637-14-chris@chris-wilson.co.uk> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t 14/16] 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: Ck9uIDA4LzA1LzIwMTkgMTE6MDksIENocmlzIFdpbHNvbiB3cm90ZToKPiBUaGUgc3VibWl0LWZl bmNlICsgbG9hZF9iYWxhbmNpbmcgYXBpcyBhbGxvdyBmb3IgdXMgdG8gZXhlY3V0ZSBhIG5hbWVk Cj4gcGFpciBvZiBlbmdpbmVzIGluIHBhcmFsbGVsOyB0aGF0IHRoaXMgYnkgc3VibWl0dGluZyBh IHJlcXVlc3QgdG8gb25lCj4gZW5naW5lLCB3ZSBjYW4gdGhlbiB1c2UgdGhlIGdlbmVyYXRlZCBz dWJtaXQtZmVuY2UgdG8gc3VibWl0IGEgc2Vjb25kCj4gcmVxdWVzdCB0byBhbm90aGVyIGVuZ2lu ZSBhbmQgaGF2ZSBpdCBleGVjdXRlIGF0IHRoZSBzYW1lIHRpbWUuCj4gRnVydGhlcm1vcmUsIGJ5 IHNwZWNpZnlpbmcgYm9uZGVkIHBhaXJzLCB3ZSBjYW4gZGlyZWN0IHRoZSB2aXJ0dWFsCj4gZW5n aW5lIHRvIHVzZSBhIHBhcnRpY3VsYXIgZW5naW5lIGluIHBhcmFsbGVsIHRvIHRoZSBmaXJzdCBy ZXF1ZXN0Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2ls c29uLmNvLnVrPgo+IC0tLQo+ICAgdGVzdHMvaTkxNS9nZW1fZXhlY19iYWxhbmNlci5jIHwgMjM0 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDIy NCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvdGVzdHMv aTkxNS9nZW1fZXhlY19iYWxhbmNlci5jIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19iYWxhbmNlci5j Cj4gaW5kZXggMjUxOTVkNDc4Li4yMGFkNjY3MjcgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9n ZW1fZXhlY19iYWxhbmNlci5jCj4gKysrIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19iYWxhbmNlci5j Cj4gQEAgLTk4LDkgKzk4LDM1IEBAIGxpc3RfZW5naW5lcyhpbnQgaTkxNSwgdWludDMyX3QgY2xh c3NfbWFzaywgdW5zaWduZWQgaW50ICpvdXQpCj4gICAJcmV0dXJuIGVuZ2luZXM7Cj4gICB9Cj4g ICAKPiArc3RhdGljIGludCBfX3NldF9lbmdpbmVzKGludCBpOTE1LCB1aW50MzJfdCBjdHgsCj4g KwkJCSBjb25zdCBzdHJ1Y3QgaTkxNV9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgKmNpLAo+ICsJCQkg dW5zaWduZWQgaW50IGNvdW50KQo+ICt7Cj4gKwlJOTE1X0RFRklORV9DT05URVhUX1BBUkFNX0VO R0lORVMoZW5naW5lcywgY291bnQpOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3Bh cmFtIHAgPSB7Cj4gKwkJLmN0eF9pZCA9IGN0eCwKPiArCQkucGFyYW0gPSBJOTE1X0NPTlRFWFRf UEFSQU1fRU5HSU5FUywKPiArCQkuc2l6ZSA9IHNpemVvZihlbmdpbmVzKSwKPiArCQkudmFsdWUg PSB0b191c2VyX3BvaW50ZXIoJmVuZ2luZXMpCj4gKwl9Owo+ICsKPiArCWVuZ2luZXMuZXh0ZW5z aW9ucyA9IDA7Cj4gKwltZW1jcHkoZW5naW5lcy5lbmdpbmVzLCBjaSwgc2l6ZW9mKGVuZ2luZXMu ZW5naW5lcykpOwo+ICsKPiArCXJldHVybiBfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAm cCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHNldF9lbmdpbmVzKGludCBpOTE1LCB1aW50MzJf dCBjdHgsCj4gKwkJCWNvbnN0IHN0cnVjdCBpOTE1X2VuZ2luZV9jbGFzc19pbnN0YW5jZSAqY2ks Cj4gKwkJCXVuc2lnbmVkIGludCBjb3VudCkKPiArewo+ICsJaWd0X2Fzc2VydF9lcShfX3NldF9l bmdpbmVzKGk5MTUsIGN0eCwgY2ksIGNvdW50KSwgMCk7Cj4gK30KPiArCj4gICBzdGF0aWMgaW50 IF9fc2V0X2xvYWRfYmFsYW5jZXIoaW50IGk5MTUsIHVpbnQzMl90IGN0eCwKPiAgIAkJCSAgICAg ICBjb25zdCBzdHJ1Y3QgaTkxNV9lbmdpbmVfY2xhc3NfaW5zdGFuY2UgKmNpLAo+IC0JCQkgICAg ICAgdW5zaWduZWQgaW50IGNvdW50KQo+ICsJCQkgICAgICAgdW5zaWduZWQgaW50IGNvdW50LAo+ ICsJCQkgICAgICAgdm9pZCAqZXh0KQo+ICAgewo+ICAgCUk5MTVfREVGSU5FX0NPTlRFWFRfRU5H SU5FU19MT0FEX0JBTEFOQ0UoYmFsYW5jZXIsIGNvdW50KTsKPiAgIAlJOTE1X0RFRklORV9DT05U RVhUX1BBUkFNX0VOR0lORVMoZW5naW5lcywgMSArIGNvdW50KTsKPiBAQCAtMTEzLDYgKzEzOSw3 IEBAIHN0YXRpYyBpbnQgX19zZXRfbG9hZF9iYWxhbmNlcihpbnQgaTkxNSwgdWludDMyX3QgY3R4 LAo+ICAgCj4gICAJbWVtc2V0KCZiYWxhbmNlciwgMCwgc2l6ZW9mKGJhbGFuY2VyKSk7Cj4gICAJ YmFsYW5jZXIuYmFzZS5uYW1lID0gSTkxNV9DT05URVhUX0VOR0lORVNfRVhUX0xPQURfQkFMQU5D RTsKPiArCWJhbGFuY2VyLmJhc2UubmV4dF9leHRlbnNpb24gPSB0b191c2VyX3BvaW50ZXIoZXh0 KTsKPiAgIAo+ICAgCWlndF9hc3NlcnQoY291bnQpOwo+ICAgCWJhbGFuY2VyLm51bV9zaWJsaW5n cyA9IGNvdW50Owo+IEBAIC0xMzEsOSArMTU4LDEwIEBAIHN0YXRpYyBpbnQgX19zZXRfbG9hZF9i YWxhbmNlcihpbnQgaTkxNSwgdWludDMyX3QgY3R4LAo+ICAgCj4gICBzdGF0aWMgdm9pZCBzZXRf bG9hZF9iYWxhbmNlcihpbnQgaTkxNSwgdWludDMyX3QgY3R4LAo+ICAgCQkJICAgICAgY29uc3Qg c3RydWN0IGk5MTVfZW5naW5lX2NsYXNzX2luc3RhbmNlICpjaSwKPiAtCQkJICAgICAgdW5zaWdu ZWQgaW50IGNvdW50KQo+ICsJCQkgICAgICB1bnNpZ25lZCBpbnQgY291bnQsCj4gKwkJCSAgICAg IHZvaWQgKmV4dCkKPiAgIHsKPiAtCWlndF9hc3NlcnRfZXEoX19zZXRfbG9hZF9iYWxhbmNlcihp OTE1LCBjdHgsIGNpLCBjb3VudCksIDApOwo+ICsJaWd0X2Fzc2VydF9lcShfX3NldF9sb2FkX2Jh bGFuY2VyKGk5MTUsIGN0eCwgY2ksIGNvdW50LCBleHQpLCAwKTsKPiAgIH0KPiAgIAo+ICAgc3Rh dGljIHVpbnQzMl90IGxvYWRfYmFsYW5jZXJfY3JlYXRlKGludCBpOTE1LAo+IEBAIC0xNDMsNyAr MTcxLDcgQEAgc3RhdGljIHVpbnQzMl90IGxvYWRfYmFsYW5jZXJfY3JlYXRlKGludCBpOTE1LAo+ ICAgCXVpbnQzMl90IGN0eDsKPiAgIAo+ICAgCWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShpOTE1 KTsKPiAtCXNldF9sb2FkX2JhbGFuY2VyKGk5MTUsIGN0eCwgY2ksIGNvdW50KTsKPiArCXNldF9s b2FkX2JhbGFuY2VyKGk5MTUsIGN0eCwgY2ksIGNvdW50LCBOVUxMKTsKPiAgIAo+ICAgCXJldHVy biBjdHg7Cj4gICB9Cj4gQEAgLTI4OCw2ICszMTYsNzQgQEAgc3RhdGljIHZvaWQgaW52YWxpZF9i YWxhbmNlcihpbnQgaTkxNSkKPiAgIAl9Cj4gICB9Cj4gICAKPiArc3RhdGljIHZvaWQgaW52YWxp ZF9ib25kcyhpbnQgaTkxNSkKPiArewo+ICsJSTkxNV9ERUZJTkVfQ09OVEVYVF9FTkdJTkVTX0JP TkQoYm9uZHNbMTZdLCAxKTsKPiArCUk5MTVfREVGSU5FX0NPTlRFWFRfUEFSQU1fRU5HSU5FUyhl bmdpbmVzLCAxKTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBwID0gewo+ ICsJCS5jdHhfaWQgPSBnZW1fY29udGV4dF9jcmVhdGUoaTkxNSksCj4gKwkJLnBhcmFtID0gSTkx NV9DT05URVhUX1BBUkFNX0VOR0lORVMsCj4gKwkJLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZl bmdpbmVzKSwKPiArCQkuc2l6ZSA9IHNpemVvZihlbmdpbmVzKSwKPiArCX07Cj4gKwl1aW50MzJf dCBoYW5kbGU7Cj4gKwl2b2lkICpwdHI7Cj4gKwo+ICsJbWVtc2V0KCZlbmdpbmVzLCAwLCBzaXpl b2YoZW5naW5lcykpOwo+ICsJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGk5MTUsICZwKTsKPiArCj4g KwltZW1zZXQoYm9uZHMsIDAsIHNpemVvZihib25kcykpOwo+ICsJZm9yIChpbnQgbiA9IDA7IG4g PCBBUlJBWV9TSVpFKGJvbmRzKTsgbisrKSB7Cj4gKwkJYm9uZHNbbl0uYmFzZS5uYW1lID0gSTkx NV9DT05URVhUX0VOR0lORVNfRVhUX0JPTkQ7Cj4gKwkJYm9uZHNbbl0uYmFzZS5uZXh0X2V4dGVu c2lvbiA9Cj4gKwkJCW4gPyB0b191c2VyX3BvaW50ZXIoJmJvbmRzW24gLSAxXSkgOiAwOwo+ICsJ CWJvbmRzW25dLm51bV9ib25kcyA9IDE7Cj4gKwl9Cj4gKwllbmdpbmVzLmV4dGVuc2lvbnMgPSB0 b191c2VyX3BvaW50ZXIoJmJvbmRzKTsKPiArCWdlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAm cCk7Cj4gKwo+ICsJYm9uZHNbMF0uYmFzZS5uZXh0X2V4dGVuc2lvbiA9IC0xdWxsOwo+ICsJaWd0 X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmcCksIC1FRkFVTFQpOwo+ ICsKPiArCWJvbmRzWzBdLmJhc2UubmV4dF9leHRlbnNpb24gPSB0b191c2VyX3BvaW50ZXIoJmJv bmRzWzBdKTsKPiArCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwg JnApLCAtRTJCSUcpOwo+ICsKPiArCWVuZ2luZXMuZXh0ZW5zaW9ucyA9IHRvX3VzZXJfcG9pbnRl cigmYm9uZHNbMV0pOwo+ICsJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X3NldF9wYXJhbShp OTE1LCAmcCksIC1FMkJJRyk7Cj4gKwlib25kc1swXS5iYXNlLm5leHRfZXh0ZW5zaW9uID0gMDsK PiArCWdlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmcCk7Cj4gKwo+ICsJaGFuZGxlID0gZ2Vt X2NyZWF0ZShpOTE1LCA0MDk2ICogMyk7Cj4gKwlwdHIgPSBnZW1fbW1hcF9fZ3R0KGk5MTUsIGhh bmRsZSwgNDA5NiAqIDMsIFBST1RfV1JJVEUpOwo+ICsJZ2VtX2Nsb3NlKGk5MTUsIGhhbmRsZSk7 Cj4gKwo+ICsJbWVtY3B5KHB0ciArIDQwOTYsICZib25kc1swXSwgc2l6ZW9mKGJvbmRzWzBdKSk7 Cj4gKwllbmdpbmVzLmV4dGVuc2lvbnMgPSB0b191c2VyX3BvaW50ZXIocHRyKSArIDQwOTY7Cj4g KwlnZW1fY29udGV4dF9zZXRfcGFyYW0oaTkxNSwgJnApOwo+ICsKPiArCW1lbWNweShwdHIsICZi b25kc1swXSwgc2l6ZW9mKGJvbmRzWzBdKSk7Cj4gKwlib25kc1swXS5iYXNlLm5leHRfZXh0ZW5z aW9uID0gdG9fdXNlcl9wb2ludGVyKHB0cik7Cj4gKwltZW1jcHkocHRyICsgNDA5NiwgJmJvbmRz WzBdLCBzaXplb2YoYm9uZHNbMF0pKTsKPiArCWdlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAm cCk7Cj4gKwo+ICsJbXVubWFwKHB0ciwgNDA5Nik7Cj4gKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2Nv bnRleHRfc2V0X3BhcmFtKGk5MTUsICZwKSwgLUVGQVVMVCk7Cj4gKwo+ICsJYm9uZHNbMF0uYmFz ZS5uZXh0X2V4dGVuc2lvbiA9IDA7Cj4gKwltZW1jcHkocHRyICsgODE5MiwgJmJvbmRzWzBdLCBz aXplb2YoYm9uZHNbMF0pKTsKPiArCWJvbmRzWzBdLmJhc2UubmV4dF9leHRlbnNpb24gPSB0b191 c2VyX3BvaW50ZXIocHRyKSArIDgxOTI7Cj4gKwltZW1jcHkocHRyICsgNDA5NiwgJmJvbmRzWzBd LCBzaXplb2YoYm9uZHNbMF0pKTsKPiArCWdlbV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmcCk7 Cj4gKwo+ICsJbXVubWFwKHB0ciArIDgxOTIsIDQwOTYpOwo+ICsJaWd0X2Fzc2VydF9lcShfX2dl bV9jb250ZXh0X3NldF9wYXJhbShpOTE1LCAmcCksIC1FRkFVTFQpOwo+ICsKPiArCW11bm1hcChw dHIgKyA0MDk2LCA0MDk2KTsKPiArCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9zZXRfcGFy YW0oaTkxNSwgJnApLCAtRUZBVUxUKTsKPiArCj4gKwlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUs IHAuY3R4X2lkKTsKPiArfQo+ICsKPiAgIHN0YXRpYyB2b2lkIGtpY2tfa3RocmVhZHMoaW50IHBl cmlvZF91cykKPiAgIHsKPiAgIAlzY2hlZF95aWVsZCgpOwo+IEBAIC0zOTcsNyArNDkzLDcgQEAg c3RhdGljIHZvaWQgaW5kaXZpZHVhbChpbnQgaTkxNSkKPiAgIAo+ICAgCQlmb3IgKGludCBwYXNz ID0gMDsgcGFzcyA8IGNvdW50OyBwYXNzKyspIHsgLyogYXBwcm94LiBjb3VudCEgKi8KPiAgIAkJ CWlndF9wZXJtdXRlX2FycmF5KGNpLCBjb3VudCwgaWd0X2V4Y2hhbmdlX2ludDY0KTsKPiAtCQkJ c2V0X2xvYWRfYmFsYW5jZXIoaTkxNSwgY3R4LCBjaSwgY291bnQpOwo+ICsJCQlzZXRfbG9hZF9i YWxhbmNlcihpOTE1LCBjdHgsIGNpLCBjb3VudCwgTlVMTCk7Cj4gICAJCQlmb3IgKHVuc2lnbmVk IGludCBuID0gMDsgbiA8IGNvdW50OyBuKyspCj4gICAJCQkJY2hlY2tfaW5kaXZpZHVhbF9lbmdp bmUoaTkxNSwgY3R4LCBjaSwgbik7Cj4gICAJCX0KPiBAQCAtNDA5LDYgKzUwNSwxMTUgQEAgc3Rh dGljIHZvaWQgaW5kaXZpZHVhbChpbnQgaTkxNSkKPiAgIAlnZW1fcXVpZXNjZW50X2dwdShpOTE1 KTsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgdm9pZCBib25kZWQoaW50IGk5MTUsIHVuc2lnbmVkIGlu dCBmbGFncykKPiArI2RlZmluZSBDT1JLIDB4MQo+ICt7Cj4gKwlJOTE1X0RFRklORV9DT05URVhU X0VOR0lORVNfQk9ORChib25kc1sxNl0sIDEpOwo+ICsJc3RydWN0IGk5MTVfZW5naW5lX2NsYXNz X2luc3RhbmNlICptYXN0ZXJfZW5naW5lczsKPiArCXVpbnQzMl90IG1hc3RlcjsKPiArCj4gKwkv Kgo+ICsJICogSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORSBwcm92aWRlcyBhbiBleHRlbnNpb24g dGhhdCBhbGxvd3MgdXMKPiArCSAqIHRvIHNwZWNpZnkgd2hpY2ggZW5naW5lKHMpIHRvIHBhaXIg d2l0aCBhIHBhcmFsbGVsIChFWEVDX1NVQk1JVCkKPiArCSAqIHJlcXVlc3Qgc3VibWl0dGVkIHRv IGFub3RoZXIgZW5naW5lLgo+ICsJICovCj4gKwo+ICsJbWFzdGVyID0gZ2VtX3F1ZXVlX2NyZWF0 ZShpOTE1KTsKPiArCj4gKwltZW1zZXQoYm9uZHMsIDAsIHNpemVvZihib25kcykpOwo+ICsJZm9y IChpbnQgbiA9IDA7IG4gPCBBUlJBWV9TSVpFKGJvbmRzKTsgbisrKSB7Cj4gKwkJYm9uZHNbbl0u YmFzZS5uYW1lID0gSTkxNV9DT05URVhUX0VOR0lORVNfRVhUX0JPTkQ7Cj4gKwkJYm9uZHNbbl0u YmFzZS5uZXh0X2V4dGVuc2lvbiA9Cj4gKwkJCW4gPyB0b191c2VyX3BvaW50ZXIoJmJvbmRzW24g LSAxXSkgOiAwOwo+ICsJCWJvbmRzW25dLm51bV9ib25kcyA9IDE7Cj4gKwl9Cj4gKwo+ICsJZm9y IChpbnQgbWFzayA9IDA7IG1hc2sgPCAzMjsgbWFzaysrKSB7CgpzL21hc2svY2xhc3MvCgo+ICsJ CXVuc2lnbmVkIGludCBjb3VudCwgbGltaXQ7Cj4gKwkJc3RydWN0IGk5MTVfZW5naW5lX2NsYXNz X2luc3RhbmNlICpzaWJsaW5nczsKPiArCQl1aW50MzJfdCBjdHg7Cj4gKwkJaW50IG47Cj4gKwo+ ICsJCXNpYmxpbmdzID0gbGlzdF9lbmdpbmVzKGk5MTUsIDF1IDw8IG1hc2ssICZjb3VudCk7Cj4g KwkJaWYgKCFzaWJsaW5ncykKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWlmIChjb3VudCA8IDIp IHsKPiArCQkJZnJlZShzaWJsaW5ncyk7Cj4gKwkJCWNvbnRpbnVlOwo+ICsJCX0KPiArCj4gKwkJ aWd0X2RlYnVnKCJGb3VuZCAlZCBlbmdpbmVzIG9mIGNsYXNzICVkXG4iLCBjb3VudCwgbWFzayk7 Cj4gKwo+ICsJCW1hc3Rlcl9lbmdpbmVzID0gbGlzdF9lbmdpbmVzKGk5MTUsIH4oMXUgPDwgbWFz ayksICZsaW1pdCk7Cj4gKwkJc2V0X2VuZ2luZXMoaTkxNSwgbWFzdGVyLCBtYXN0ZXJfZW5naW5l cywgbGltaXQpOwo+ICsKPiArCQlsaW1pdCA9IG1pbihjb3VudCwgbGltaXQpOwoKaWd0X2Fzc2Vy dChsaW1pdCA8PSBBUlJBWV9TSVpFKGJvbmRzKTsKCj4gKwkJZm9yIChuID0gMDsgbiA8IGxpbWl0 OyBuKyspIHsKPiArCQkJYm9uZHNbbl0ubWFzdGVyID0gbWFzdGVyX2VuZ2luZXNbbl07Cj4gKwkJ CWJvbmRzW25dLmVuZ2luZXNbMF0gPSBzaWJsaW5nc1tuXTsKPiArCQl9Cj4gKwo+ICsJCWN0eCA9 IGdlbV9jb250ZXh0X2Nsb25lKGk5MTUsCj4gKwkJCQkgICAgICAgCW1hc3RlciwgSTkxNV9DT05U RVhUX0NMT05FX1ZNLAo+ICsJCQkJCUk5MTVfQ09OVEVYVF9DUkVBVEVfRkxBR1NfU0lOR0xFX1RJ TUVMSU5FKTsKPiArCQlzZXRfbG9hZF9iYWxhbmNlcihpOTE1LCBjdHgsIHNpYmxpbmdzLCBjb3Vu dCwgJmJvbmRzW2xpbWl0IC0gMV0pOwo+ICsKPiArCQlmb3IgKG4gPSAwOyBuIDwgbGltaXQ7IG4r Kykgewo+ICsJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGViOwo+ICsJCQlJR1Rf Q09SS19IQU5ETEUoY29yayk7Cj4gKwkJCWlndF9zcGluX3QgKnNwaW4sICpwbHVnOwo+ICsJCQlk b3VibGUgbG9hZDsKPiArCQkJaW50IHBtdTsKPiArCj4gKwkJCWlndF9hc3NlcnQoc2libGluZ3Nb bl0uZW5naW5lX2NsYXNzICE9IG1hc3Rlcl9lbmdpbmVzW25dLmVuZ2luZV9jbGFzcyk7Cj4gKwo+ ICsJCQlwbXUgPSBwZXJmX2k5MTVfb3BlbihJOTE1X1BNVV9FTkdJTkVfQlVTWShzaWJsaW5nc1tu XS5lbmdpbmVfY2xhc3MsCj4gKwkJCQkJCQkJICBzaWJsaW5nc1tuXS5lbmdpbmVfaW5zdGFuY2Up KTsKPiArCj4gKwkJCXBsdWcgPSBOVUxMOwo+ICsJCQlpZiAoZmxhZ3MgJiBDT1JLKSB7Cj4gKwkJ CQlwbHVnID0gX19pZ3Rfc3Bpbl9uZXcoaTkxNSwKPiArCQkJCQkJICAgICAgLmN0eCA9IG1hc3Rl ciwKPiArCQkJCQkJICAgICAgLmVuZ2luZSA9IG4sCj4gKwkJCQkJCSAgICAgIC5kZXBlbmRlbmN5 ID0gaWd0X2NvcmtfcGx1ZygmY29yaywgaTkxNSkpOwo+ICsJCQl9Cj4gKwo+ICsJCQlzcGluID0g X19pZ3Rfc3Bpbl9uZXcoaTkxNSwKPiArCQkJCQkgICAgICAuY3R4ID0gbWFzdGVyLAo+ICsJCQkJ CSAgICAgIC5lbmdpbmUgPSBuLAo+ICsJCQkJCSAgICAgIC5mbGFncyA9IElHVF9TUElOX0ZFTkNF X09VVCk7Cj4gKwo+ICsJCQllYiA9IHNwaW4tPmV4ZWNidWY7Cj4gKwkJCWViLnJzdmQxID0gY3R4 Owo+ICsJCQllYi5yc3ZkMiA9IHNwaW4tPm91dF9mZW5jZTsKPiArCQkJZWIuZmxhZ3MgPSBJOTE1 X0VYRUNfRkVOQ0VfU1VCTUlUOwo+ICsJCQlnZW1fZXhlY2J1ZihpOTE1LCAmZWIpOwo+ICsKPiAr CQkJaWYgKHBsdWcpIHsKPiArCQkJCWlndF9jb3JrX3VucGx1ZygmY29yayk7Cj4gKwkJCQlpZ3Rf c3Bpbl9mcmVlKGk5MTUsIHBsdWcpOwo+ICsJCQl9Cj4gKwo+ICsJCQlsb2FkID0gbWVhc3VyZV9s b2FkKHBtdSwgMTAwMDApOwo+ICsJCQlpZ3Rfc3Bpbl9mcmVlKGk5MTUsIHNwaW4pOwo+ICsKPiAr CQkJY2xvc2UocG11KTsKPiArCj4gKwkJCWlndF9hc3NlcnRfZihsb2FkID4gMC45MCwKPiArCQkJ CSAgICAgImVuZ2luZSAlZCAoY2xhc3M6aW5zdGFuY2UgJWQ6JWQpIHdhcyBmb3VuZCB0byBiZSBv bmx5ICUuMWYlJSBidXN5XG4iLAo+ICsJCQkJICAgICBuLCBzaWJsaW5nc1tuXS5lbmdpbmVfY2xh c3MsIHNpYmxpbmdzW25dLmVuZ2luZV9pbnN0YW5jZSwKPiArCQkJCSAgICAgbG9hZCoxMDApOwoK TWFzdGVyIGFsc28gbmVlZHMgdG8gYmUgY2hlY2tlZCBJIHRoaW5rLiBZb3UgaGF2ZSB0aGUgaW5m cmFzdHJ1Y3R1cmUgdG8gCm9wZW4gdHdvIHBtdXMgaW4gdGhlIHByZXZpb3VzIHBhdGNoIHNvIHNo b3VsZCBiZSBlYXN5LgoKPiArCQl9Cj4gKwo+ICsJCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwg Y3R4KTsKPiArCQlmcmVlKG1hc3Rlcl9lbmdpbmVzKTsKPiArCQlmcmVlKHNpYmxpbmdzKTsKPiAr CX0KPiArCj4gKwlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIG1hc3Rlcik7Cj4gK30KPiArCj4g ICBzdGF0aWMgdm9pZCBpbmRpY2llcyhpbnQgaTkxNSkKPiAgIHsKPiAgIAlJOTE1X0RFRklORV9D T05URVhUX1BBUkFNX0VOR0lORVMoZW5naW5lcywgSTkxNV9FWEVDX1JJTkdfTUFTSyArIDEpOwo+ IEBAIC04NTYsMTAgKzEwNjEsMTAgQEAgc3RhdGljIHZvaWQgc2VtYXBob3JlKGludCBpOTE1KQo+ ICAgCQljb3VudCA9IEFSUkFZX1NJWkUoYmxvY2spOwo+ICAgCj4gICAJCWZvciAoaW50IGkgPSAw OyBpIDwgY291bnQ7IGkrKykgewo+IC0JCQlzZXRfbG9hZF9iYWxhbmNlcihpOTE1LCBibG9ja1tp XSwgY2ksIGNvdW50KTsKPiArCQkJc2V0X2xvYWRfYmFsYW5jZXIoaTkxNSwgYmxvY2tbaV0sIGNp LCBjb3VudCwgTlVMTCk7Cj4gICAJCQlzcGluW2ldID0gX19pZ3Rfc3Bpbl9uZXcoaTkxNSwKPiAt CQkJCQkJICAgICAgIC5jdHggPSBibG9ja1tpXSwKPiAtCQkJCQkJICAgICAgIC5kZXBlbmRlbmN5 ID0gc2NyYXRjaCk7Cj4gKwkJCQkJCSAuY3R4ID0gYmxvY2tbaV0sCj4gKwkJCQkJCSAuZGVwZW5k ZW5jeSA9IHNjcmF0Y2gpOwo+ICAgCQl9Cj4gICAKPiAgIAkJLyoKPiBAQCAtODY3LDcgKzEwNzIs NyBAQCBzdGF0aWMgdm9pZCBzZW1hcGhvcmUoaW50IGk5MTUpCj4gICAJCSAqIG9yIHdlIGxldCB0 aGUgdmlwIHRocm91Z2guIElmIG5vdCwgd2UgaGFuZy4KPiAgIAkJICovCj4gICAJCXZpcCA9IGdl bV9jb250ZXh0X2NyZWF0ZShpOTE1KTsKPiAtCQlzZXRfbG9hZF9iYWxhbmNlcihpOTE1LCB2aXAs IGNpLCBjb3VudCk7Cj4gKwkJc2V0X2xvYWRfYmFsYW5jZXIoaTkxNSwgdmlwLCBjaSwgY291bnQs IE5VTEwpOwo+ICAgCQlwaW5nKGk5MTUsIHZpcCwgMCk7Cj4gICAJCWdlbV9jb250ZXh0X2Rlc3Ry b3koaTkxNSwgdmlwKTsKPiAgIAo+IEBAIC05ODQsNyArMTE4OSw3IEBAIHN0YXRpYyBib29sIGhh c19sb2FkX2JhbGFuY2VyKGludCBpOTE1KQo+ICAgCWludCBlcnI7Cj4gICAKPiAgIAljdHggPSBn ZW1fY29udGV4dF9jcmVhdGUoaTkxNSk7Cj4gLQllcnIgPSBfX3NldF9sb2FkX2JhbGFuY2VyKGk5 MTUsIGN0eCwgJmNpLCAxKTsKPiArCWVyciA9IF9fc2V0X2xvYWRfYmFsYW5jZXIoaTkxNSwgY3R4 LCAmY2ksIDEsIE5VTEwpOwo+ICAgCWdlbV9jb250ZXh0X2Rlc3Ryb3koaTkxNSwgY3R4KTsKPiAg IAo+ICAgCXJldHVybiBlcnIgPT0gMDsKPiBAQCAtMTAxMCw2ICsxMjE1LDkgQEAgaWd0X21haW4K PiAgIAlpZ3Rfc3VidGVzdCgiaW52YWxpZC1iYWxhbmNlciIpCj4gICAJCWludmFsaWRfYmFsYW5j ZXIoaTkxNSk7Cj4gICAKPiArCWlndF9zdWJ0ZXN0KCJpbnZhbGlkLWJvbmRzIikKPiArCQlpbnZh bGlkX2JvbmRzKGk5MTUpOwo+ICsKPiAgIAlpZ3Rfc3VidGVzdCgiaW5kaXZpZHVhbCIpCj4gICAJ CWluZGl2aWR1YWwoaTkxNSk7Cj4gICAKPiBAQCAtMTA0NCw2ICsxMjUyLDEyIEBAIGlndF9tYWlu Cj4gICAJaWd0X3N1YnRlc3QoInNtb2tlIikKPiAgIAkJc21va2V0ZXN0KGk5MTUsIDIwKTsKPiAg IAo+ICsJaWd0X3N1YnRlc3QoImJvbmRlZC1pbW0iKQo+ICsJCWJvbmRlZChpOTE1LCAwKTsKPiAr Cj4gKwlpZ3Rfc3VidGVzdCgiYm9uZGVkLWNvcmsiKQo+ICsJCWJvbmRlZChpOTE1LCBDT1JLKTsK PiArCj4gICAJaWd0X2ZpeHR1cmUgewo+ICAgCQlpZ3Rfc3RvcF9oYW5nX2RldGVjdG9yKCk7Cj4g ICAJfQo+IAoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2lndC1kZXY=