From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [igt-dev] [PATCH igt] test/gem_exec_schedule: Check each engine is an independent timeline Date: Mon, 23 Apr 2018 17:52:54 +0100 Message-ID: <75cdee31-3068-9c32-c1c5-0e08fce57112@linux.intel.com> References: <20180423134345.28153-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: <20180423134345.28153-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 Ck9uIDIzLzA0LzIwMTggMTQ6NDMsIENocmlzIFdpbHNvbiB3cm90ZToKPiBJbiB0aGUgZXhpc3Rp bmcgQUJJLCBlYWNoIGVuZ2luZSBvcGVyYXRlcyBpdHMgb3duIHRpbWVsaW5lCj4gKGZlbmNlLmNv bnRleHQpIGFuZCBzbyBzaG91bGQgZXhlY3V0ZSBpbmRlcGVuZGVudGx5IG9mIGFueSBvdGhlci4g SWYgd2UKPiBpbnN0YWxsIGEgYmxvY2tlciBvbiBhbGwgb3RoZXIgZW5naW5lcywgdGhhdCBzaG91 bGQgbm90IGFmZmVjdCBleGVjdXRpb24KPiBvbiB0aGUgbG9jYWwgZW5naW5lLgo+IAo+IFNpZ25l ZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBU dnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IC0tLQo+ICAgdGVzdHMv Z2VtX2V4ZWNfc2NoZWR1bGUuYyB8IDkwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDgyIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25z KC0pCj4gCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2dlbV9leGVjX3NjaGVkdWxlLmMgYi90ZXN0cy9n ZW1fZXhlY19zY2hlZHVsZS5jCj4gaW5kZXggNWQwZjIxNWIyLi40NzEyNzUxNjkgMTAwNjQ0Cj4g LS0tIGEvdGVzdHMvZ2VtX2V4ZWNfc2NoZWR1bGUuYwo+ICsrKyBiL3Rlc3RzL2dlbV9leGVjX3Nj aGVkdWxlLmMKPiBAQCAtNDksOSArNDksOSBAQAo+ICAgCj4gICBJR1RfVEVTVF9ERVNDUklQVElP TigiQ2hlY2sgdGhhdCB3ZSBjYW4gY29udHJvbCB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uIik7Cj4g ICAKPiAtc3RhdGljIHZvaWQgc3RvcmVfZHdvcmQoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2ln bmVkIHJpbmcsCj4gLQkJCXVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qgb2Zmc2V0LCB1aW50MzJf dCB2YWx1ZSwKPiAtCQkJdWludDMyX3QgY29yaywgdW5zaWduZWQgd3JpdGVfZG9tYWluKQo+ICtz dGF0aWMgdWludDMyX3QgX19zdG9yZV9kd29yZChpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWdu ZWQgcmluZywKPiArCQkJICAgICAgdWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBvZmZzZXQsIHVp bnQzMl90IHZhbHVlLAo+ICsJCQkgICAgICB1aW50MzJfdCBjb3JrLCB1bnNpZ25lZCB3cml0ZV9k b21haW4pCj4gICB7Cj4gICAJY29uc3QgaW50IGdlbiA9IGludGVsX2dlbihpbnRlbF9nZXRfZHJt X2RldmlkKGZkKSk7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqWzNd Owo+IEBAIC0xMDAsNyArMTAwLDE3IEBAIHN0YXRpYyB2b2lkIHN0b3JlX2R3b3JkKGludCBmZCwg dWludDMyX3QgY3R4LCB1bnNpZ25lZCByaW5nLAo+ICAgCWJhdGNoWysraV0gPSBNSV9CQVRDSF9C VUZGRVJfRU5EOwo+ICAgCWdlbV93cml0ZShmZCwgb2JqWzJdLmhhbmRsZSwgMCwgYmF0Y2gsIHNp emVvZihiYXRjaCkpOwo+ICAgCWdlbV9leGVjYnVmKGZkLCAmZXhlY2J1Zik7Cj4gLQlnZW1fY2xv c2UoZmQsIG9ialsyXS5oYW5kbGUpOwo+ICsKPiArCXJldHVybiBvYmpbMl0uaGFuZGxlOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCBzdG9yZV9kd29yZChpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5z aWduZWQgcmluZywKPiArCQkJdWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBvZmZzZXQsIHVpbnQz Ml90IHZhbHVlLAo+ICsJCQl1aW50MzJfdCBjb3JrLCB1bnNpZ25lZCB3cml0ZV9kb21haW4pCj4g K3sKPiArCWdlbV9jbG9zZShmZCwgX19zdG9yZV9kd29yZChmZCwgY3R4LCByaW5nLAo+ICsJCQkJ ICAgIHRhcmdldCwgb2Zmc2V0LCB2YWx1ZSwKPiArCQkJCSAgICBjb3JrLCB3cml0ZV9kb21haW4p KTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHVpbnQzMl90IGNyZWF0ZV9oaWdoZXN0X3ByaW9yaXR5 KGludCBmZCkKPiBAQCAtMTYxLDYgKzE3MSw2NCBAQCBzdGF0aWMgdm9pZCBmaWZvKGludCBmZCwg dW5zaWduZWQgcmluZykKPiAgIAltdW5tYXAocHRyLCA0MDk2KTsKPiAgIH0KPiAgIAo+ICtzdGF0 aWMgdm9pZCBpbmRlcGVuZGVudChpbnQgZmQsIHVuc2lnbmVkIGludCBlbmdpbmUpCj4gK3sKPiAr CUlHVF9DT1JLX0hBTkRMRShjb3JrKTsKPiArCXVpbnQzMl90IHNjcmF0Y2gsIHBsdWcsIGJhdGNo Owo+ICsJaWd0X3NwaW5fdCAqc3BpbiA9IE5VTEw7Cj4gKwl1bnNpZ25lZCBpbnQgb3RoZXI7Cj4g Kwl1aW50MzJfdCAqcHRyOwo+ICsKPiArCWlndF9yZXF1aXJlKGVuZ2luZSAhPSAwKTsKPiArCj4g KwlzY3JhdGNoID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7Cj4gKwlwbHVnID0gaWd0X2NvcmtfcGx1 ZygmY29yaywgZmQpOwo+ICsKPiArCS8qIENoZWNrIHRoYXQgd2UgY2FuIHN1Ym1pdCB0byBlbmdp bmUgd2hpbGUgYWxsIG90aGVycyBhcmUgYmxvY2tlZCAqLwo+ICsJZm9yX2VhY2hfcGh5c2ljYWxf ZW5naW5lKGZkLCBvdGhlcikgewo+ICsJCWlmIChvdGhlciA9PSBlbmdpbmUpCj4gKwkJCWNvbnRp bnVlOwo+ICsKPiArCQlpZiAoc3BpbiA9PSBOVUxMKSB7Cj4gKwkJCXNwaW4gPSBfX2lndF9zcGlu X2JhdGNoX25ldyhmZCwgMCwgb3RoZXIsIDApOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCXN0cnVjdCBk cm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9iaiA9IHsKPiArCQkJCS5oYW5kbGUgPSBzcGluLT5o YW5kbGUsCj4gKwkJCX07Cj4gKwkJCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZWIg PSB7Cj4gKwkJCQkuYnVmZmVyX2NvdW50ID0gMSwKPiArCQkJCS5idWZmZXJzX3B0ciA9IHRvX3Vz ZXJfcG9pbnRlcigmb2JqKSwKPiArCQkJCS5mbGFncyA9IG90aGVyLAo+ICsJCQl9Owo+ICsJCQln ZW1fZXhlY2J1ZihmZCwgJmViKTsKPiArCQl9Cj4gKwo+ICsJCXN0b3JlX2R3b3JkKGZkLCAwLCBv dGhlciwgc2NyYXRjaCwgMCwgb3RoZXIsIHBsdWcsIDApOwo+ICsJfQo+ICsJaWd0X3JlcXVpcmUo c3Bpbik7Cj4gKwo+ICsJLyogU2FtZSBwcmlvcml0eSwgYnV0IGRpZmZlcmVudCB0aW1lbGluZSAo YXMgZGlmZmVyZW50IGVuZ2luZSkgKi8KPiArCWJhdGNoID0gX19zdG9yZV9kd29yZChmZCwgMCwg ZW5naW5lLCBzY3JhdGNoLCAwLCBlbmdpbmUsIHBsdWcsIDApOwo+ICsKPiArCXVucGx1Z19zaG93 X3F1ZXVlKGZkLCAmY29yaywgZW5naW5lKTsKPiArCWdlbV9jbG9zZShmZCwgcGx1Zyk7Cj4gKwo+ ICsJZ2VtX3N5bmMoZmQsIGJhdGNoKTsKPiArCWdlbV9jbG9zZShmZCwgYmF0Y2gpOwoKU3RyaWN0 bHkgc3BlYWtpbmcgSSB0aGluayB5b3UgbmVlZCB0byB1c2UgdGhlIHBvbGwtYWJsZSBzcGlubmVy IGFuZCB3YWl0IApvbiBpdCBoZXJlLCBiZWZvcmUgdGhlIGJ1c3kgYXNzZXJ0LiBJdCdzIHVubGlr ZWx5LCBidXQgc3Bpbm5lcnMgb24gCidvdGhlcicgZW5naW5lcyBhcmUgZ2V0dGluZyBzdWJtaXR0 ZWQgYXN5bmMgdG8gdGhlIHN0b3JlIGR3b3JkIGJhdGNoIG9uIAonZW5naW5lJy4KCj4gKwlpZ3Rf YXNzZXJ0KGdlbV9ib19idXN5KGZkLCBzcGluLT5oYW5kbGUpKTsKPiArCj4gKwlwdHIgPSBnZW1f bW1hcF9fZ3R0KGZkLCBzY3JhdGNoLCA0MDk2LCBQUk9UX1JFQUQpOwo+ICsJZ2VtX2Nsb3NlKGZk LCBzY3JhdGNoKTsKPiArCWlndF9hc3NlcnRfZXEocHRyWzBdLCBlbmdpbmUpOwo+ICsKPiArCWln dF9zcGluX2JhdGNoX2ZyZWUoZmQsIHNwaW4pOwo+ICsJZ2VtX3F1aWVzY2VudF9ncHUoZmQpOwo+ ICsKPiArCS8qIEFuZCB3ZSBleHBlY3QgdGhlIG90aGVycyB0byBoYXZlIG92ZXJ3cml0dGVuIHVz LCBvcmRlciB1bnNwZWNpZmllZCAqLwo+ICsJaWd0X2Fzc2VydF9uZXEocHRyWzBdLCBlbmdpbmUp Owo+ICsJbXVubWFwKHB0ciwgNDA5Nik7Cj4gK30KPiArCj4gICBzdGF0aWMgdm9pZCBzbW9rZXRl c3QoaW50IGZkLCB1bnNpZ25lZCByaW5nLCB1bnNpZ25lZCB0aW1lb3V0KQo+ICAgewo+ICAgCWNv bnN0IGludCBuY3B1cyA9IHN5c2NvbmYoX1NDX05QUk9DRVNTT1JTX09OTE4pOwo+IEBAIC0xMDcw LDEwICsxMTM4LDE2IEBAIGlndF9tYWluCj4gICAJCQlpZiAoZS0+ZXhlY19pZCA9PSAwKQo+ICAg CQkJCWNvbnRpbnVlOwo+ICAgCj4gLQkJCWlndF9zdWJ0ZXN0X2YoImZpZm8tJXMiLCBlLT5uYW1l KSB7Cj4gLQkJCQlpZ3RfcmVxdWlyZShnZW1fcmluZ19oYXNfcGh5c2ljYWxfZW5naW5lKGZkLCBl LT5leGVjX2lkIHwgZS0+ZmxhZ3MpKTsKPiAtCQkJCWlndF9yZXF1aXJlKGdlbV9jYW5fc3RvcmVf ZHdvcmQoZmQsIGUtPmV4ZWNfaWQpIHwgZS0+ZmxhZ3MpOwo+IC0JCQkJZmlmbyhmZCwgZS0+ZXhl Y19pZCB8IGUtPmZsYWdzKTsKPiArCQkJaWd0X3N1YnRlc3RfZ3JvdXAgewo+ICsJCQkJaWd0X2Zp eHR1cmUgewo+ICsJCQkJCWlndF9yZXF1aXJlKGdlbV9yaW5nX2hhc19waHlzaWNhbF9lbmdpbmUo ZmQsIGUtPmV4ZWNfaWQgfCBlLT5mbGFncykpOwo+ICsJCQkJCWlndF9yZXF1aXJlKGdlbV9jYW5f c3RvcmVfZHdvcmQoZmQsIGUtPmV4ZWNfaWQpIHwgZS0+ZmxhZ3MpOwo+ICsJCQkJfQo+ICsKPiAr CQkJCWlndF9zdWJ0ZXN0X2YoImZpZm8tJXMiLCBlLT5uYW1lKQo+ICsJCQkJCWZpZm8oZmQsIGUt PmV4ZWNfaWQgfCBlLT5mbGFncyk7Cj4gKwkJCQlpZ3Rfc3VidGVzdF9mKCJpbmRlcGVuZGVudC0l cyIsIGUtPm5hbWUpCj4gKwkJCQkJaW5kZXBlbmRlbnQoZmQsIGUtPmV4ZWNfaWQgfCBlLT5mbGFn cyk7Cj4gICAJCQl9Cj4gICAJCX0KPiAgIAl9Cj4gCgpBcGFydCBmcm9tIHdoYXQgQW50b25pbyBh bHJlYWR5IGNvbW1lbnRlZCwgYW5kIHdhaXRpbmcgb24gc3Bpbm5lciwgbG9va3MgCk9LIHRvIG1l LgoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: References: <20180423134345.28153-1-chris@chris-wilson.co.uk> From: Tvrtko Ursulin Message-ID: <75cdee31-3068-9c32-c1c5-0e08fce57112@linux.intel.com> Date: Mon, 23 Apr 2018 17:52:54 +0100 MIME-Version: 1.0 In-Reply-To: <20180423134345.28153-1-chris@chris-wilson.co.uk> Content-Language: en-GB Subject: Re: [igt-dev] [PATCH igt] test/gem_exec_schedule: Check each engine is an independent timeline 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, Tvrtko Ursulin List-ID: Ck9uIDIzLzA0LzIwMTggMTQ6NDMsIENocmlzIFdpbHNvbiB3cm90ZToKPiBJbiB0aGUgZXhpc3Rp bmcgQUJJLCBlYWNoIGVuZ2luZSBvcGVyYXRlcyBpdHMgb3duIHRpbWVsaW5lCj4gKGZlbmNlLmNv bnRleHQpIGFuZCBzbyBzaG91bGQgZXhlY3V0ZSBpbmRlcGVuZGVudGx5IG9mIGFueSBvdGhlci4g SWYgd2UKPiBpbnN0YWxsIGEgYmxvY2tlciBvbiBhbGwgb3RoZXIgZW5naW5lcywgdGhhdCBzaG91 bGQgbm90IGFmZmVjdCBleGVjdXRpb24KPiBvbiB0aGUgbG9jYWwgZW5naW5lLgo+IAo+IFNpZ25l ZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBU dnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IC0tLQo+ICAgdGVzdHMv Z2VtX2V4ZWNfc2NoZWR1bGUuYyB8IDkwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDgyIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25z KC0pCj4gCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2dlbV9leGVjX3NjaGVkdWxlLmMgYi90ZXN0cy9n ZW1fZXhlY19zY2hlZHVsZS5jCj4gaW5kZXggNWQwZjIxNWIyLi40NzEyNzUxNjkgMTAwNjQ0Cj4g LS0tIGEvdGVzdHMvZ2VtX2V4ZWNfc2NoZWR1bGUuYwo+ICsrKyBiL3Rlc3RzL2dlbV9leGVjX3Nj aGVkdWxlLmMKPiBAQCAtNDksOSArNDksOSBAQAo+ICAgCj4gICBJR1RfVEVTVF9ERVNDUklQVElP TigiQ2hlY2sgdGhhdCB3ZSBjYW4gY29udHJvbCB0aGUgb3JkZXIgb2YgZXhlY3V0aW9uIik7Cj4g ICAKPiAtc3RhdGljIHZvaWQgc3RvcmVfZHdvcmQoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2ln bmVkIHJpbmcsCj4gLQkJCXVpbnQzMl90IHRhcmdldCwgdWludDMyX3Qgb2Zmc2V0LCB1aW50MzJf dCB2YWx1ZSwKPiAtCQkJdWludDMyX3QgY29yaywgdW5zaWduZWQgd3JpdGVfZG9tYWluKQo+ICtz dGF0aWMgdWludDMyX3QgX19zdG9yZV9kd29yZChpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5zaWdu ZWQgcmluZywKPiArCQkJICAgICAgdWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBvZmZzZXQsIHVp bnQzMl90IHZhbHVlLAo+ICsJCQkgICAgICB1aW50MzJfdCBjb3JrLCB1bnNpZ25lZCB3cml0ZV9k b21haW4pCj4gICB7Cj4gICAJY29uc3QgaW50IGdlbiA9IGludGVsX2dlbihpbnRlbF9nZXRfZHJt X2RldmlkKGZkKSk7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqWzNd Owo+IEBAIC0xMDAsNyArMTAwLDE3IEBAIHN0YXRpYyB2b2lkIHN0b3JlX2R3b3JkKGludCBmZCwg dWludDMyX3QgY3R4LCB1bnNpZ25lZCByaW5nLAo+ICAgCWJhdGNoWysraV0gPSBNSV9CQVRDSF9C VUZGRVJfRU5EOwo+ICAgCWdlbV93cml0ZShmZCwgb2JqWzJdLmhhbmRsZSwgMCwgYmF0Y2gsIHNp emVvZihiYXRjaCkpOwo+ICAgCWdlbV9leGVjYnVmKGZkLCAmZXhlY2J1Zik7Cj4gLQlnZW1fY2xv c2UoZmQsIG9ialsyXS5oYW5kbGUpOwo+ICsKPiArCXJldHVybiBvYmpbMl0uaGFuZGxlOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCBzdG9yZV9kd29yZChpbnQgZmQsIHVpbnQzMl90IGN0eCwgdW5z aWduZWQgcmluZywKPiArCQkJdWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCBvZmZzZXQsIHVpbnQz Ml90IHZhbHVlLAo+ICsJCQl1aW50MzJfdCBjb3JrLCB1bnNpZ25lZCB3cml0ZV9kb21haW4pCj4g K3sKPiArCWdlbV9jbG9zZShmZCwgX19zdG9yZV9kd29yZChmZCwgY3R4LCByaW5nLAo+ICsJCQkJ ICAgIHRhcmdldCwgb2Zmc2V0LCB2YWx1ZSwKPiArCQkJCSAgICBjb3JrLCB3cml0ZV9kb21haW4p KTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHVpbnQzMl90IGNyZWF0ZV9oaWdoZXN0X3ByaW9yaXR5 KGludCBmZCkKPiBAQCAtMTYxLDYgKzE3MSw2NCBAQCBzdGF0aWMgdm9pZCBmaWZvKGludCBmZCwg dW5zaWduZWQgcmluZykKPiAgIAltdW5tYXAocHRyLCA0MDk2KTsKPiAgIH0KPiAgIAo+ICtzdGF0 aWMgdm9pZCBpbmRlcGVuZGVudChpbnQgZmQsIHVuc2lnbmVkIGludCBlbmdpbmUpCj4gK3sKPiAr CUlHVF9DT1JLX0hBTkRMRShjb3JrKTsKPiArCXVpbnQzMl90IHNjcmF0Y2gsIHBsdWcsIGJhdGNo Owo+ICsJaWd0X3NwaW5fdCAqc3BpbiA9IE5VTEw7Cj4gKwl1bnNpZ25lZCBpbnQgb3RoZXI7Cj4g Kwl1aW50MzJfdCAqcHRyOwo+ICsKPiArCWlndF9yZXF1aXJlKGVuZ2luZSAhPSAwKTsKPiArCj4g KwlzY3JhdGNoID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7Cj4gKwlwbHVnID0gaWd0X2NvcmtfcGx1 ZygmY29yaywgZmQpOwo+ICsKPiArCS8qIENoZWNrIHRoYXQgd2UgY2FuIHN1Ym1pdCB0byBlbmdp bmUgd2hpbGUgYWxsIG90aGVycyBhcmUgYmxvY2tlZCAqLwo+ICsJZm9yX2VhY2hfcGh5c2ljYWxf ZW5naW5lKGZkLCBvdGhlcikgewo+ICsJCWlmIChvdGhlciA9PSBlbmdpbmUpCj4gKwkJCWNvbnRp bnVlOwo+ICsKPiArCQlpZiAoc3BpbiA9PSBOVUxMKSB7Cj4gKwkJCXNwaW4gPSBfX2lndF9zcGlu X2JhdGNoX25ldyhmZCwgMCwgb3RoZXIsIDApOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCXN0cnVjdCBk cm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9iaiA9IHsKPiArCQkJCS5oYW5kbGUgPSBzcGluLT5o YW5kbGUsCj4gKwkJCX07Cj4gKwkJCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZWIg PSB7Cj4gKwkJCQkuYnVmZmVyX2NvdW50ID0gMSwKPiArCQkJCS5idWZmZXJzX3B0ciA9IHRvX3Vz ZXJfcG9pbnRlcigmb2JqKSwKPiArCQkJCS5mbGFncyA9IG90aGVyLAo+ICsJCQl9Owo+ICsJCQln ZW1fZXhlY2J1ZihmZCwgJmViKTsKPiArCQl9Cj4gKwo+ICsJCXN0b3JlX2R3b3JkKGZkLCAwLCBv dGhlciwgc2NyYXRjaCwgMCwgb3RoZXIsIHBsdWcsIDApOwo+ICsJfQo+ICsJaWd0X3JlcXVpcmUo c3Bpbik7Cj4gKwo+ICsJLyogU2FtZSBwcmlvcml0eSwgYnV0IGRpZmZlcmVudCB0aW1lbGluZSAo YXMgZGlmZmVyZW50IGVuZ2luZSkgKi8KPiArCWJhdGNoID0gX19zdG9yZV9kd29yZChmZCwgMCwg ZW5naW5lLCBzY3JhdGNoLCAwLCBlbmdpbmUsIHBsdWcsIDApOwo+ICsKPiArCXVucGx1Z19zaG93 X3F1ZXVlKGZkLCAmY29yaywgZW5naW5lKTsKPiArCWdlbV9jbG9zZShmZCwgcGx1Zyk7Cj4gKwo+ ICsJZ2VtX3N5bmMoZmQsIGJhdGNoKTsKPiArCWdlbV9jbG9zZShmZCwgYmF0Y2gpOwoKU3RyaWN0 bHkgc3BlYWtpbmcgSSB0aGluayB5b3UgbmVlZCB0byB1c2UgdGhlIHBvbGwtYWJsZSBzcGlubmVy IGFuZCB3YWl0IApvbiBpdCBoZXJlLCBiZWZvcmUgdGhlIGJ1c3kgYXNzZXJ0LiBJdCdzIHVubGlr ZWx5LCBidXQgc3Bpbm5lcnMgb24gCidvdGhlcicgZW5naW5lcyBhcmUgZ2V0dGluZyBzdWJtaXR0 ZWQgYXN5bmMgdG8gdGhlIHN0b3JlIGR3b3JkIGJhdGNoIG9uIAonZW5naW5lJy4KCj4gKwlpZ3Rf YXNzZXJ0KGdlbV9ib19idXN5KGZkLCBzcGluLT5oYW5kbGUpKTsKPiArCj4gKwlwdHIgPSBnZW1f bW1hcF9fZ3R0KGZkLCBzY3JhdGNoLCA0MDk2LCBQUk9UX1JFQUQpOwo+ICsJZ2VtX2Nsb3NlKGZk LCBzY3JhdGNoKTsKPiArCWlndF9hc3NlcnRfZXEocHRyWzBdLCBlbmdpbmUpOwo+ICsKPiArCWln dF9zcGluX2JhdGNoX2ZyZWUoZmQsIHNwaW4pOwo+ICsJZ2VtX3F1aWVzY2VudF9ncHUoZmQpOwo+ ICsKPiArCS8qIEFuZCB3ZSBleHBlY3QgdGhlIG90aGVycyB0byBoYXZlIG92ZXJ3cml0dGVuIHVz LCBvcmRlciB1bnNwZWNpZmllZCAqLwo+ICsJaWd0X2Fzc2VydF9uZXEocHRyWzBdLCBlbmdpbmUp Owo+ICsJbXVubWFwKHB0ciwgNDA5Nik7Cj4gK30KPiArCj4gICBzdGF0aWMgdm9pZCBzbW9rZXRl c3QoaW50IGZkLCB1bnNpZ25lZCByaW5nLCB1bnNpZ25lZCB0aW1lb3V0KQo+ICAgewo+ICAgCWNv bnN0IGludCBuY3B1cyA9IHN5c2NvbmYoX1NDX05QUk9DRVNTT1JTX09OTE4pOwo+IEBAIC0xMDcw LDEwICsxMTM4LDE2IEBAIGlndF9tYWluCj4gICAJCQlpZiAoZS0+ZXhlY19pZCA9PSAwKQo+ICAg CQkJCWNvbnRpbnVlOwo+ICAgCj4gLQkJCWlndF9zdWJ0ZXN0X2YoImZpZm8tJXMiLCBlLT5uYW1l KSB7Cj4gLQkJCQlpZ3RfcmVxdWlyZShnZW1fcmluZ19oYXNfcGh5c2ljYWxfZW5naW5lKGZkLCBl LT5leGVjX2lkIHwgZS0+ZmxhZ3MpKTsKPiAtCQkJCWlndF9yZXF1aXJlKGdlbV9jYW5fc3RvcmVf ZHdvcmQoZmQsIGUtPmV4ZWNfaWQpIHwgZS0+ZmxhZ3MpOwo+IC0JCQkJZmlmbyhmZCwgZS0+ZXhl Y19pZCB8IGUtPmZsYWdzKTsKPiArCQkJaWd0X3N1YnRlc3RfZ3JvdXAgewo+ICsJCQkJaWd0X2Zp eHR1cmUgewo+ICsJCQkJCWlndF9yZXF1aXJlKGdlbV9yaW5nX2hhc19waHlzaWNhbF9lbmdpbmUo ZmQsIGUtPmV4ZWNfaWQgfCBlLT5mbGFncykpOwo+ICsJCQkJCWlndF9yZXF1aXJlKGdlbV9jYW5f c3RvcmVfZHdvcmQoZmQsIGUtPmV4ZWNfaWQpIHwgZS0+ZmxhZ3MpOwo+ICsJCQkJfQo+ICsKPiAr CQkJCWlndF9zdWJ0ZXN0X2YoImZpZm8tJXMiLCBlLT5uYW1lKQo+ICsJCQkJCWZpZm8oZmQsIGUt PmV4ZWNfaWQgfCBlLT5mbGFncyk7Cj4gKwkJCQlpZ3Rfc3VidGVzdF9mKCJpbmRlcGVuZGVudC0l cyIsIGUtPm5hbWUpCj4gKwkJCQkJaW5kZXBlbmRlbnQoZmQsIGUtPmV4ZWNfaWQgfCBlLT5mbGFn cyk7Cj4gICAJCQl9Cj4gICAJCX0KPiAgIAl9Cj4gCgpBcGFydCBmcm9tIHdoYXQgQW50b25pbyBh bHJlYWR5IGNvbW1lbnRlZCwgYW5kIHdhaXRpbmcgb24gc3Bpbm5lciwgbG9va3MgCk9LIHRvIG1l LgoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1k ZXYK