From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: References: <20180628213532.22008-1-chris@chris-wilson.co.uk> From: Tvrtko Ursulin Message-ID: <38d6c3ce-cb2a-bb4e-bf2e-5859ea689207@linux.intel.com> Date: Fri, 29 Jun 2018 16:15:04 +0100 MIME-Version: 1.0 In-Reply-To: <20180628213532.22008-1-chris@chris-wilson.co.uk> Content-Language: en-GB Subject: Re: [igt-dev] [Intel-gfx] [PATCH i-g-t] igt/gem_exec_gttfill: Avoid pwrite into busy handle 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: Ck9uIDI4LzA2LzIwMTggMjI6MzUsIENocmlzIFdpbHNvbiB3cm90ZToKPiBUaGUgZ29hbCBvZiBn ZW1fZXhlY19ndHRmaWxsIGlzIHRvIGV4ZXJjaXNlIGV4ZWNidWYgdW5kZXIgaGVhdnkgR1RUCj4g cHJlc3N1cmUgKGJ5IHRyeWluZyB0byBleGVjdXRlIG1vcmUgb2JqZWN0cyB0aGFuIG1heSBmaXQg aW50byB0aGUgR1RUKS4KPiBXZSBzcHJlYWQgdGhlIHNhbWUgc2V0IG9mIGhhbmRsZXMgYWNyb3Nz IGRpZmZlcmVudCBwcm9jZXNzZXMsIHdpdGggdGhlCj4gcmVzdWx0IHRoYXQgZWFjaCB3b3VsZCBv Y2Nhc2lvbmFsbHkgc3RhbGwgd2FpdGluZyBmb3IgZXhlY3V0aW9uIG9mIGFuCj4gdW5yZWxhdGVk IGJhdGNoLCBsaW1pdGluZyB0aGUgcHJlc3N1cmUgd2Ugd2VyZSBhcHBseWluZy4gSWYgd2UgdXNp bmcgYQo+IHN0ZWFtaW5nIHdyaXRlIHZpYSBhIFdDIHBvaW50ZXIsIHdlIGNhbiBhdm9pZCB0aGUg c2VyaWFsaXNhdGlvbiBwZW5hbHR5Cj4gYW5kIHNvIHN1Ym1pdCBmYXN0ZXIuCj4gCj4gU2lnbmVk LW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4g ICB0ZXN0cy9nZW1fZXhlY19ndHRmaWxsLmMgfCA2NiArKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tCj4gICAxIGZpbGUgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMjQg ZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2dlbV9leGVjX2d0dGZpbGwuYyBi L3Rlc3RzL2dlbV9leGVjX2d0dGZpbGwuYwo+IGluZGV4IDQwOTdlNDA3Ny4uZWZkNjEyYmI2IDEw MDY0NAo+IC0tLSBhL3Rlc3RzL2dlbV9leGVjX2d0dGZpbGwuYwo+ICsrKyBiL3Rlc3RzL2dlbV9l eGVjX2d0dGZpbGwuYwo+IEBAIC0yOCwxOCArMjgsMjUgQEAgSUdUX1RFU1RfREVTQ1JJUFRJT04o IkZpbGwgdGhlIEdUVCB3aXRoIGJhdGNoZXMuIik7Cj4gICAKPiAgICNkZWZpbmUgQkFUQ0hfU0la RSAoNDA5Njw8MTApCj4gICAKPiAtc3RhdGljIHZvaWQgeGNoZ191MzIodm9pZCAqYXJyYXksIHVu c2lnbmVkIGksIHVuc2lnbmVkIGopCj4gK3N0cnVjdCBiYXRjaCB7Cj4gKwl1aW50MzJfdCBoYW5k bGU7Cj4gKwl2b2lkICpwdHI7Cj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZCB4Y2hnX2JhdGNoKHZv aWQgKmFycmF5LCB1bnNpZ25lZCBpbnQgaSwgdW5zaWduZWQgaW50IGopCj4gICB7Cj4gLQl1aW50 MzJfdCAqdTMyID0gYXJyYXk7Cj4gLQl1aW50MzJfdCB0bXAgPSB1MzJbaV07Cj4gLQl1MzJbaV0g PSB1MzJbal07Cj4gLQl1MzJbal0gPSB0bXA7Cj4gKwlzdHJ1Y3QgYmF0Y2ggKmJhdGNoZXMgPSBh cnJheTsKPiArCXN0cnVjdCBiYXRjaCB0bXA7Cj4gKwo+ICsJdG1wID0gYmF0Y2hlc1tpXTsKPiAr CWJhdGNoZXNbaV0gPSBiYXRjaGVzW2pdOwo+ICsJYmF0Y2hlc1tqXSA9IHRtcDsKPiAgIH0KPiAg IAo+ICAgc3RhdGljIHZvaWQgc3VibWl0KGludCBmZCwgaW50IGdlbiwKPiAgIAkJICAgc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiAqZWIsCj4gICAJCSAgIHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2MsCj4gLQkJICAgdWludDMyX3QgKmhhbmRsZXMsIHVu c2lnbmVkIGNvdW50KQo+ICsJCSAgIHN0cnVjdCBiYXRjaCAqYmF0Y2hlcywgdW5zaWduZWQgaW50 IGNvdW50KQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9iajsK PiAgIAl1aW50MzJfdCBiYXRjaFsxNl07Cj4gQEAgLTgwLDcgKzg3LDcgQEAgc3RhdGljIHZvaWQg c3VibWl0KGludCBmZCwgaW50IGdlbiwKPiAgIAo+ICAgCWViLT5idWZmZXJzX3B0ciA9IHRvX3Vz ZXJfcG9pbnRlcigmb2JqKTsKPiAgIAlmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7IGkr Kykgewo+IC0JCW9iai5oYW5kbGUgPSBoYW5kbGVzW2ldOwo+ICsJCW9iai5oYW5kbGUgPSBiYXRj aGVzW2ldLmhhbmRsZTsKPiAgIAkJcmVsb2NbMF0udGFyZ2V0X2hhbmRsZSA9IG9iai5oYW5kbGU7 Cj4gICAJCXJlbG9jWzFdLnRhcmdldF9oYW5kbGUgPSBvYmouaGFuZGxlOwo+ICAgCj4gQEAgLTg4 LDggKzk1LDggQEAgc3RhdGljIHZvaWQgc3VibWl0KGludCBmZCwgaW50IGdlbiwKPiAgIAkJcmVs b2NbMF0ucHJlc3VtZWRfb2Zmc2V0ID0gb2JqLm9mZnNldDsKPiAgIAkJcmVsb2NbMV0ucHJlc3Vt ZWRfb2Zmc2V0ID0gb2JqLm9mZnNldDsKPiAgIAo+IC0JCWdlbV93cml0ZShmZCwgb2JqLmhhbmRs ZSwgZWItPmJhdGNoX3N0YXJ0X29mZnNldCwKPiAtCQkJICBiYXRjaCwgc2l6ZW9mKGJhdGNoKSk7 Cj4gKwkJbWVtY3B5KGJhdGNoZXNbaV0ucHRyICsgZWItPmJhdGNoX3N0YXJ0X29mZnNldCwKPiAr CQkgICAgICAgYmF0Y2gsIHNpemVvZihiYXRjaCkpOwo+ICAgCj4gICAJCWdlbV9leGVjYnVmKGZk LCBlYik7Cj4gICAJfQo+IEBAIC0xMDMsNyArMTEwLDcgQEAgc3RhdGljIHZvaWQgZmlsbGd0dChp bnQgZmQsIHVuc2lnbmVkIHJpbmcsIGludCB0aW1lb3V0KQo+ICAgCXN0cnVjdCBkcm1faTkxNV9n ZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRp b25fZW50cnkgcmVsb2NbMl07Cj4gICAJdm9sYXRpbGUgdWludDY0X3QgKnNoYXJlZDsKPiAtCXVu c2lnbmVkICpoYW5kbGVzOwo+ICsJc3RydWN0IGJhdGNoICpiYXRjaGVzOwo+ICAgCXVuc2lnbmVk IGVuZ2luZXNbMTZdOwo+ICAgCXVuc2lnbmVkIG5lbmdpbmU7Cj4gICAJdW5zaWduZWQgZW5naW5l Owo+IEBAIC0xNDUsMjkgKzE1MiwzOCBAQCBzdGF0aWMgdm9pZCBmaWxsZ3R0KGludCBmZCwgdW5z aWduZWQgcmluZywgaW50IHRpbWVvdXQpCj4gICAJaWYgKGdlbiA8IDYpCj4gICAJCWV4ZWNidWYu ZmxhZ3MgfD0gSTkxNV9FWEVDX1NFQ1VSRTsKPiAgIAo+IC0JaGFuZGxlcyA9IGNhbGxvYyhjb3Vu dCwgc2l6ZW9mKGhhbmRsZXMpKTsKPiAtCWlndF9hc3NlcnQoaGFuZGxlcyk7Cj4gLQlmb3IgKHVu c2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7IGkrKykKPiAtCQloYW5kbGVzW2ldID0gZ2VtX2NyZWF0 ZShmZCwgQkFUQ0hfU0laRSk7Cj4gKwliYXRjaGVzID0gY2FsbG9jKGNvdW50LCBzaXplb2YoKmJh dGNoZXMpKTsKPiArCWlndF9hc3NlcnQoYmF0Y2hlcyk7Cj4gKwlmb3IgKHVuc2lnbmVkIGkgPSAw OyBpIDwgY291bnQ7IGkrKykgewo+ICsJCWJhdGNoZXNbaV0uaGFuZGxlID0gZ2VtX2NyZWF0ZShm ZCwgQkFUQ0hfU0laRSk7Cj4gKwkJYmF0Y2hlc1tpXS5wdHIgPQo+ICsJCQlfX2dlbV9tbWFwX193 YyhmZCwgYmF0Y2hlc1tpXS5oYW5kbGUsCj4gKwkJCQkgICAgICAgMCwgQkFUQ0hfU0laRSwgUFJP VF9XUklURSk7Cj4gKwkJaWYgKCFiYXRjaGVzW2ldLnB0cikgewo+ICsJCQliYXRjaGVzW2ldLnB0 ciA9Cj4gKwkJCQlfX2dlbV9tbWFwX19ndHQoZmQsIGJhdGNoZXNbaV0uaGFuZGxlLAo+ICsJCQkJ CQlCQVRDSF9TSVpFLCBQUk9UX1dSSVRFKTsKPiArCQl9Cj4gKwkJaWd0X3JlcXVpcmUoYmF0Y2hl c1tpXS5wdHIpOwoKTm90IGFzc2VydD8KCj4gKwl9Cj4gICAKPiAgIAkvKiBGbHVzaCBhbGwgbWVt b3J5IGJlZm9yZSB3ZSBzdGFydCB0aGUgdGltZXIgKi8KPiAtCXN1Ym1pdChmZCwgZ2VuLCAmZXhl Y2J1ZiwgcmVsb2MsIGhhbmRsZXMsIGNvdW50KTsKPiArCXN1Ym1pdChmZCwgZ2VuLCAmZXhlY2J1 ZiwgcmVsb2MsIGJhdGNoZXMsIGNvdW50KTsKPiAgIAo+ICAgCWlndF9mb3JrKGNoaWxkLCBuZW5n aW5lKSB7Cj4gICAJCXVpbnQ2NF90IGN5Y2xlcyA9IDA7Cj4gICAJCWhhcnNfcGV0cnVza2FfZjU0 XzFfcmFuZG9tX3BlcnR1cmIoY2hpbGQpOwo+IC0JCWlndF9wZXJtdXRlX2FycmF5KGhhbmRsZXMs IGNvdW50LCB4Y2hnX3UzMik7Cj4gKwkJaWd0X3Blcm11dGVfYXJyYXkoYmF0Y2hlcywgY291bnQs IHhjaGdfYmF0Y2gpOwo+ICAgCQlleGVjYnVmLmJhdGNoX3N0YXJ0X29mZnNldCA9IGNoaWxkKjY0 Owo+ICAgCQlleGVjYnVmLmZsYWdzIHw9IGVuZ2luZXNbY2hpbGRdOwo+ICAgCQlpZ3RfdW50aWxf dGltZW91dCh0aW1lb3V0KSB7Cj4gLQkJCXN1Ym1pdChmZCwgZ2VuLCAmZXhlY2J1ZiwgcmVsb2Ms IGhhbmRsZXMsIGNvdW50KTsKPiArCQkJc3VibWl0KGZkLCBnZW4sICZleGVjYnVmLCByZWxvYywg YmF0Y2hlcywgY291bnQpOwo+ICAgCQkJZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyBp KyspIHsKPiAtCQkJCXVpbnQzMl90IGhhbmRsZSA9IGhhbmRsZXNbaV07Cj4gLQkJCQl1aW50NjRf dCBidWZbMl07Cj4gKwkJCQl1aW50NjRfdCBvZmZzZXQsIGRlbHRhOwo+ICAgCj4gLQkJCQlnZW1f cmVhZChmZCwgaGFuZGxlLCByZWxvY1sxXS5vZmZzZXQsICZidWZbMF0sIHNpemVvZihidWZbMF0p KTsKPiAtCQkJCWdlbV9yZWFkKGZkLCBoYW5kbGUsIHJlbG9jWzBdLmRlbHRhLCAmYnVmWzFdLCBz aXplb2YoYnVmWzFdKSk7Cj4gLQkJCQlpZ3RfYXNzZXJ0X2VxX3U2NChidWZbMF0sIGJ1ZlsxXSk7 CgpObyBmbHVzaGluZyBvciBkb21haW4gbWFuYWdlbWVudCBuZWVkZWQsIGVzcGVjaWFsbHkgc2lu Y2UgaXQgY2FuIGJlIAplaXRoZXIgd2Mgb3IgZ3R0IG1tYXA/Cgo+ICsJCQkJb2Zmc2V0ID0gKih1 aW50NjRfdCAqKShiYXRjaGVzW2ldLnB0ciArIHJlbG9jWzFdLm9mZnNldCk7Cj4gKwkJCQlkZWx0 YSA9ICoodWludDY0X3QgKikoYmF0Y2hlc1tpXS5wdHIgKyByZWxvY1swXS5kZWx0YSk7Cj4gKwkJ CQlpZ3RfYXNzZXJ0X2VxX3U2NChvZmZzZXQsIGRlbHRhKTsKPiAgIAkJCX0KPiAgIAkJCWN5Y2xl cysrOwo+ICAgCQl9Cj4gQEAgLTE3Niw4ICsxOTIsMTAgQEAgc3RhdGljIHZvaWQgZmlsbGd0dChp bnQgZmQsIHVuc2lnbmVkIHJpbmcsIGludCB0aW1lb3V0KQo+ICAgCX0KPiAgIAlpZ3Rfd2FpdGNo aWxkcmVuKCk7Cj4gICAKPiAtCWZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQo+ IC0JCWdlbV9jbG9zZShmZCwgaGFuZGxlc1tpXSk7Cj4gKwlmb3IgKHVuc2lnbmVkIGkgPSAwOyBp IDwgY291bnQ7IGkrKykgewo+ICsJCW11bm1hcChiYXRjaGVzW2ldLnB0ciwgQkFUQ0hfU0laRSk7 Cj4gKwkJZ2VtX2Nsb3NlKGZkLCBiYXRjaGVzW2ldLmhhbmRsZSk7Cj4gKwl9Cj4gICAKPiAgIAlz aGFyZWRbbmVuZ2luZV0gPSAwOwo+ICAgCWZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuZW5naW5l OyBpKyspCj4gClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pZ3QtZGV2Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH i-g-t] igt/gem_exec_gttfill: Avoid pwrite into busy handle Date: Fri, 29 Jun 2018 16:15:04 +0100 Message-ID: <38d6c3ce-cb2a-bb4e-bf2e-5859ea689207@linux.intel.com> References: <20180628213532.22008-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: <20180628213532.22008-1-chris@chris-wilson.co.uk> Content-Language: en-GB 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 Ck9uIDI4LzA2LzIwMTggMjI6MzUsIENocmlzIFdpbHNvbiB3cm90ZToKPiBUaGUgZ29hbCBvZiBn ZW1fZXhlY19ndHRmaWxsIGlzIHRvIGV4ZXJjaXNlIGV4ZWNidWYgdW5kZXIgaGVhdnkgR1RUCj4g cHJlc3N1cmUgKGJ5IHRyeWluZyB0byBleGVjdXRlIG1vcmUgb2JqZWN0cyB0aGFuIG1heSBmaXQg aW50byB0aGUgR1RUKS4KPiBXZSBzcHJlYWQgdGhlIHNhbWUgc2V0IG9mIGhhbmRsZXMgYWNyb3Nz IGRpZmZlcmVudCBwcm9jZXNzZXMsIHdpdGggdGhlCj4gcmVzdWx0IHRoYXQgZWFjaCB3b3VsZCBv Y2Nhc2lvbmFsbHkgc3RhbGwgd2FpdGluZyBmb3IgZXhlY3V0aW9uIG9mIGFuCj4gdW5yZWxhdGVk IGJhdGNoLCBsaW1pdGluZyB0aGUgcHJlc3N1cmUgd2Ugd2VyZSBhcHBseWluZy4gSWYgd2UgdXNp bmcgYQo+IHN0ZWFtaW5nIHdyaXRlIHZpYSBhIFdDIHBvaW50ZXIsIHdlIGNhbiBhdm9pZCB0aGUg c2VyaWFsaXNhdGlvbiBwZW5hbHR5Cj4gYW5kIHNvIHN1Ym1pdCBmYXN0ZXIuCj4gCj4gU2lnbmVk LW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4g ICB0ZXN0cy9nZW1fZXhlY19ndHRmaWxsLmMgfCA2NiArKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tCj4gICAxIGZpbGUgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMjQg ZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2dlbV9leGVjX2d0dGZpbGwuYyBi L3Rlc3RzL2dlbV9leGVjX2d0dGZpbGwuYwo+IGluZGV4IDQwOTdlNDA3Ny4uZWZkNjEyYmI2IDEw MDY0NAo+IC0tLSBhL3Rlc3RzL2dlbV9leGVjX2d0dGZpbGwuYwo+ICsrKyBiL3Rlc3RzL2dlbV9l eGVjX2d0dGZpbGwuYwo+IEBAIC0yOCwxOCArMjgsMjUgQEAgSUdUX1RFU1RfREVTQ1JJUFRJT04o IkZpbGwgdGhlIEdUVCB3aXRoIGJhdGNoZXMuIik7Cj4gICAKPiAgICNkZWZpbmUgQkFUQ0hfU0la RSAoNDA5Njw8MTApCj4gICAKPiAtc3RhdGljIHZvaWQgeGNoZ191MzIodm9pZCAqYXJyYXksIHVu c2lnbmVkIGksIHVuc2lnbmVkIGopCj4gK3N0cnVjdCBiYXRjaCB7Cj4gKwl1aW50MzJfdCBoYW5k bGU7Cj4gKwl2b2lkICpwdHI7Cj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZCB4Y2hnX2JhdGNoKHZv aWQgKmFycmF5LCB1bnNpZ25lZCBpbnQgaSwgdW5zaWduZWQgaW50IGopCj4gICB7Cj4gLQl1aW50 MzJfdCAqdTMyID0gYXJyYXk7Cj4gLQl1aW50MzJfdCB0bXAgPSB1MzJbaV07Cj4gLQl1MzJbaV0g PSB1MzJbal07Cj4gLQl1MzJbal0gPSB0bXA7Cj4gKwlzdHJ1Y3QgYmF0Y2ggKmJhdGNoZXMgPSBh cnJheTsKPiArCXN0cnVjdCBiYXRjaCB0bXA7Cj4gKwo+ICsJdG1wID0gYmF0Y2hlc1tpXTsKPiAr CWJhdGNoZXNbaV0gPSBiYXRjaGVzW2pdOwo+ICsJYmF0Y2hlc1tqXSA9IHRtcDsKPiAgIH0KPiAg IAo+ICAgc3RhdGljIHZvaWQgc3VibWl0KGludCBmZCwgaW50IGdlbiwKPiAgIAkJICAgc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiAqZWIsCj4gICAJCSAgIHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2MsCj4gLQkJICAgdWludDMyX3QgKmhhbmRsZXMsIHVu c2lnbmVkIGNvdW50KQo+ICsJCSAgIHN0cnVjdCBiYXRjaCAqYmF0Y2hlcywgdW5zaWduZWQgaW50 IGNvdW50KQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9iajsK PiAgIAl1aW50MzJfdCBiYXRjaFsxNl07Cj4gQEAgLTgwLDcgKzg3LDcgQEAgc3RhdGljIHZvaWQg c3VibWl0KGludCBmZCwgaW50IGdlbiwKPiAgIAo+ICAgCWViLT5idWZmZXJzX3B0ciA9IHRvX3Vz ZXJfcG9pbnRlcigmb2JqKTsKPiAgIAlmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7IGkr Kykgewo+IC0JCW9iai5oYW5kbGUgPSBoYW5kbGVzW2ldOwo+ICsJCW9iai5oYW5kbGUgPSBiYXRj aGVzW2ldLmhhbmRsZTsKPiAgIAkJcmVsb2NbMF0udGFyZ2V0X2hhbmRsZSA9IG9iai5oYW5kbGU7 Cj4gICAJCXJlbG9jWzFdLnRhcmdldF9oYW5kbGUgPSBvYmouaGFuZGxlOwo+ICAgCj4gQEAgLTg4 LDggKzk1LDggQEAgc3RhdGljIHZvaWQgc3VibWl0KGludCBmZCwgaW50IGdlbiwKPiAgIAkJcmVs b2NbMF0ucHJlc3VtZWRfb2Zmc2V0ID0gb2JqLm9mZnNldDsKPiAgIAkJcmVsb2NbMV0ucHJlc3Vt ZWRfb2Zmc2V0ID0gb2JqLm9mZnNldDsKPiAgIAo+IC0JCWdlbV93cml0ZShmZCwgb2JqLmhhbmRs ZSwgZWItPmJhdGNoX3N0YXJ0X29mZnNldCwKPiAtCQkJICBiYXRjaCwgc2l6ZW9mKGJhdGNoKSk7 Cj4gKwkJbWVtY3B5KGJhdGNoZXNbaV0ucHRyICsgZWItPmJhdGNoX3N0YXJ0X29mZnNldCwKPiAr CQkgICAgICAgYmF0Y2gsIHNpemVvZihiYXRjaCkpOwo+ICAgCj4gICAJCWdlbV9leGVjYnVmKGZk LCBlYik7Cj4gICAJfQo+IEBAIC0xMDMsNyArMTEwLDcgQEAgc3RhdGljIHZvaWQgZmlsbGd0dChp bnQgZmQsIHVuc2lnbmVkIHJpbmcsIGludCB0aW1lb3V0KQo+ICAgCXN0cnVjdCBkcm1faTkxNV9n ZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRp b25fZW50cnkgcmVsb2NbMl07Cj4gICAJdm9sYXRpbGUgdWludDY0X3QgKnNoYXJlZDsKPiAtCXVu c2lnbmVkICpoYW5kbGVzOwo+ICsJc3RydWN0IGJhdGNoICpiYXRjaGVzOwo+ICAgCXVuc2lnbmVk IGVuZ2luZXNbMTZdOwo+ICAgCXVuc2lnbmVkIG5lbmdpbmU7Cj4gICAJdW5zaWduZWQgZW5naW5l Owo+IEBAIC0xNDUsMjkgKzE1MiwzOCBAQCBzdGF0aWMgdm9pZCBmaWxsZ3R0KGludCBmZCwgdW5z aWduZWQgcmluZywgaW50IHRpbWVvdXQpCj4gICAJaWYgKGdlbiA8IDYpCj4gICAJCWV4ZWNidWYu ZmxhZ3MgfD0gSTkxNV9FWEVDX1NFQ1VSRTsKPiAgIAo+IC0JaGFuZGxlcyA9IGNhbGxvYyhjb3Vu dCwgc2l6ZW9mKGhhbmRsZXMpKTsKPiAtCWlndF9hc3NlcnQoaGFuZGxlcyk7Cj4gLQlmb3IgKHVu c2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7IGkrKykKPiAtCQloYW5kbGVzW2ldID0gZ2VtX2NyZWF0 ZShmZCwgQkFUQ0hfU0laRSk7Cj4gKwliYXRjaGVzID0gY2FsbG9jKGNvdW50LCBzaXplb2YoKmJh dGNoZXMpKTsKPiArCWlndF9hc3NlcnQoYmF0Y2hlcyk7Cj4gKwlmb3IgKHVuc2lnbmVkIGkgPSAw OyBpIDwgY291bnQ7IGkrKykgewo+ICsJCWJhdGNoZXNbaV0uaGFuZGxlID0gZ2VtX2NyZWF0ZShm ZCwgQkFUQ0hfU0laRSk7Cj4gKwkJYmF0Y2hlc1tpXS5wdHIgPQo+ICsJCQlfX2dlbV9tbWFwX193 YyhmZCwgYmF0Y2hlc1tpXS5oYW5kbGUsCj4gKwkJCQkgICAgICAgMCwgQkFUQ0hfU0laRSwgUFJP VF9XUklURSk7Cj4gKwkJaWYgKCFiYXRjaGVzW2ldLnB0cikgewo+ICsJCQliYXRjaGVzW2ldLnB0 ciA9Cj4gKwkJCQlfX2dlbV9tbWFwX19ndHQoZmQsIGJhdGNoZXNbaV0uaGFuZGxlLAo+ICsJCQkJ CQlCQVRDSF9TSVpFLCBQUk9UX1dSSVRFKTsKPiArCQl9Cj4gKwkJaWd0X3JlcXVpcmUoYmF0Y2hl c1tpXS5wdHIpOwoKTm90IGFzc2VydD8KCj4gKwl9Cj4gICAKPiAgIAkvKiBGbHVzaCBhbGwgbWVt b3J5IGJlZm9yZSB3ZSBzdGFydCB0aGUgdGltZXIgKi8KPiAtCXN1Ym1pdChmZCwgZ2VuLCAmZXhl Y2J1ZiwgcmVsb2MsIGhhbmRsZXMsIGNvdW50KTsKPiArCXN1Ym1pdChmZCwgZ2VuLCAmZXhlY2J1 ZiwgcmVsb2MsIGJhdGNoZXMsIGNvdW50KTsKPiAgIAo+ICAgCWlndF9mb3JrKGNoaWxkLCBuZW5n aW5lKSB7Cj4gICAJCXVpbnQ2NF90IGN5Y2xlcyA9IDA7Cj4gICAJCWhhcnNfcGV0cnVza2FfZjU0 XzFfcmFuZG9tX3BlcnR1cmIoY2hpbGQpOwo+IC0JCWlndF9wZXJtdXRlX2FycmF5KGhhbmRsZXMs IGNvdW50LCB4Y2hnX3UzMik7Cj4gKwkJaWd0X3Blcm11dGVfYXJyYXkoYmF0Y2hlcywgY291bnQs IHhjaGdfYmF0Y2gpOwo+ICAgCQlleGVjYnVmLmJhdGNoX3N0YXJ0X29mZnNldCA9IGNoaWxkKjY0 Owo+ICAgCQlleGVjYnVmLmZsYWdzIHw9IGVuZ2luZXNbY2hpbGRdOwo+ICAgCQlpZ3RfdW50aWxf dGltZW91dCh0aW1lb3V0KSB7Cj4gLQkJCXN1Ym1pdChmZCwgZ2VuLCAmZXhlY2J1ZiwgcmVsb2Ms IGhhbmRsZXMsIGNvdW50KTsKPiArCQkJc3VibWl0KGZkLCBnZW4sICZleGVjYnVmLCByZWxvYywg YmF0Y2hlcywgY291bnQpOwo+ICAgCQkJZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyBp KyspIHsKPiAtCQkJCXVpbnQzMl90IGhhbmRsZSA9IGhhbmRsZXNbaV07Cj4gLQkJCQl1aW50NjRf dCBidWZbMl07Cj4gKwkJCQl1aW50NjRfdCBvZmZzZXQsIGRlbHRhOwo+ICAgCj4gLQkJCQlnZW1f cmVhZChmZCwgaGFuZGxlLCByZWxvY1sxXS5vZmZzZXQsICZidWZbMF0sIHNpemVvZihidWZbMF0p KTsKPiAtCQkJCWdlbV9yZWFkKGZkLCBoYW5kbGUsIHJlbG9jWzBdLmRlbHRhLCAmYnVmWzFdLCBz aXplb2YoYnVmWzFdKSk7Cj4gLQkJCQlpZ3RfYXNzZXJ0X2VxX3U2NChidWZbMF0sIGJ1ZlsxXSk7 CgpObyBmbHVzaGluZyBvciBkb21haW4gbWFuYWdlbWVudCBuZWVkZWQsIGVzcGVjaWFsbHkgc2lu Y2UgaXQgY2FuIGJlIAplaXRoZXIgd2Mgb3IgZ3R0IG1tYXA/Cgo+ICsJCQkJb2Zmc2V0ID0gKih1 aW50NjRfdCAqKShiYXRjaGVzW2ldLnB0ciArIHJlbG9jWzFdLm9mZnNldCk7Cj4gKwkJCQlkZWx0 YSA9ICoodWludDY0X3QgKikoYmF0Y2hlc1tpXS5wdHIgKyByZWxvY1swXS5kZWx0YSk7Cj4gKwkJ CQlpZ3RfYXNzZXJ0X2VxX3U2NChvZmZzZXQsIGRlbHRhKTsKPiAgIAkJCX0KPiAgIAkJCWN5Y2xl cysrOwo+ICAgCQl9Cj4gQEAgLTE3Niw4ICsxOTIsMTAgQEAgc3RhdGljIHZvaWQgZmlsbGd0dChp bnQgZmQsIHVuc2lnbmVkIHJpbmcsIGludCB0aW1lb3V0KQo+ICAgCX0KPiAgIAlpZ3Rfd2FpdGNo aWxkcmVuKCk7Cj4gICAKPiAtCWZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQo+ IC0JCWdlbV9jbG9zZShmZCwgaGFuZGxlc1tpXSk7Cj4gKwlmb3IgKHVuc2lnbmVkIGkgPSAwOyBp IDwgY291bnQ7IGkrKykgewo+ICsJCW11bm1hcChiYXRjaGVzW2ldLnB0ciwgQkFUQ0hfU0laRSk7 Cj4gKwkJZ2VtX2Nsb3NlKGZkLCBiYXRjaGVzW2ldLmhhbmRsZSk7Cj4gKwl9Cj4gICAKPiAgIAlz aGFyZWRbbmVuZ2luZV0gPSAwOwo+ICAgCWZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuZW5naW5l OyBpKyspCj4gClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==