From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 40/46] drm/i915: Live testing for context execution Date: Thu, 2 Feb 2017 09:08:59 +0000 Message-ID: <20170202090905.29028-41-chris@chris-wilson.co.uk> References: <20170202090905.29028-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id EDA8B6E9BA for ; Thu, 2 Feb 2017 09:09:51 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id r18so11764600wmd.3 for ; Thu, 02 Feb 2017 01:09:51 -0800 (PST) In-Reply-To: <20170202090905.29028-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q2hlY2sgd2UgY2FuIGNyZWF0ZSBhbmQgZXhlY3V0aW9uIHdpdGhpbiBhIGNvbnRleHQuCgp2Mjog V3JpdGUgb25lIHNldCBvZiBkd29yZHMgdGhyb3VnaCBlYWNoIGNvbnRleHQvZW5naW5lIHRvIGV4 ZXJjaXNlIG1vcmUKY29udGV4dHMgd2l0aGluIHRoZSBzYW1lIHRpbWUgcGVyaW9kLgoKU2lnbmVk LW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jICAgICAgICAgICAgfCAgIDEgKwog ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyAgfCA0MDAg KysrKysrKysrKysrKysrKysrKysrCiAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xp dmVfc2VsZnRlc3RzLmggICB8ICAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDQwMiBpbnNlcnRpb25z KCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfZ2VtX2NvbnRleHQuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwpp bmRleCBlNjIwOGUzNjEzNTYuLmJhZWM0YmJkZmZhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuYwpAQCAtMTE5MSw0ICsxMTkxLDUgQEAgaW50IGk5MTVfZ2VtX2NvbnRl eHRfcmVzZXRfc3RhdHNfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAogI2lmIElTX0VO QUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQogI2luY2x1ZGUgInNlbGZ0ZXN0cy9tb2Nr X2NvbnRleHQuYyIKKyNpbmNsdWRlICJzZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jIgogI2Vu ZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1f Y29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRl eHQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBlNmFkMWIzZDNh YQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X2dlbV9jb250ZXh0LmMKQEAgLTAsMCArMSw0MDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAx NyBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHks IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQv b3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g d2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFy YWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAq IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBD T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF UgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBT T0ZUV0FSRS4KKyAqCisgKi8KKworI2luY2x1ZGUgIi4uL2k5MTVfc2VsZnRlc3QuaCIKKworI2lu Y2x1ZGUgIm1vY2tfZHJtLmgiCisjaW5jbHVkZSAiaHVnZV9nZW1fb2JqZWN0LmgiCisKKyNkZWZp bmUgRFdfUEVSX1BBR0UgKFBBR0VfU0laRSAvIHNpemVvZih1MzIpKQorCitzdGF0aWMgc3RydWN0 IGk5MTVfdm1hICoKK2dwdV9maWxsX2R3KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1NjQgb2Zmc2V0 LCB1bnNpZ25lZCBsb25nIGNvdW50LCB1MzIgdmFsdWUpCit7CisJc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iajsKKwljb25zdCBpbnQgZ2VuID0gSU5URUxfR0VOKHZtYS0+dm0tPmk5MTUp OworCXVuc2lnbmVkIGxvbmcgbjsKKwl1MzIgKmNtZDsKKwlpbnQgZXJyOworCisJbiA9ICg0KmNv dW50ICsgMSkqc2l6ZW9mKHUzMik7CisJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRl cm5hbCh2bWEtPnZtLT5pOTE1LAorCQkJCQkgICAgICByb3VuZF91cChuLCBQQUdFX1NJWkUpKTsK KwlpZiAoSVNfRVJSKG9iaikpCisJCXJldHVybiBFUlJfQ0FTVChvYmopOworCisJY21kID0gaTkx NV9nZW1fb2JqZWN0X3Bpbl9tYXAob2JqLCBJOTE1X01BUF9XQik7CisJaWYgKElTX0VSUihjbWQp KSB7CisJCWVyciA9IFBUUl9FUlIoY21kKTsKKwkJZ290byBlcnI7CisJfQorCisJR0VNX0JVR19P TihvZmZzZXQgKyAoY291bnQgLSAxKSAqIFBBR0VfU0laRSA+IHZtYS0+bm9kZS5zaXplKTsKKwlv ZmZzZXQgKz0gdm1hLT5ub2RlLnN0YXJ0OworCisJZm9yIChuID0gMDsgbiA8IGNvdW50OyBuKysp IHsKKwkJaWYgKGdlbiA+PSA4KSB7CisJCQkqY21kKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VO NDsKKwkJCSpjbWQrKyA9IGxvd2VyXzMyX2JpdHMob2Zmc2V0KTsKKwkJCSpjbWQrKyA9IHVwcGVy XzMyX2JpdHMob2Zmc2V0KTsKKwkJCSpjbWQrKyA9IHZhbHVlOworCQl9IGVsc2UgaWYgKGdlbiA+ PSA0KSB7CisJCQkqY21kKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONCB8CisJCQkJKGdlbiA8 IDYgPyAxIDw8IDIyIDogMCk7CisJCQkqY21kKysgPSAwOworCQkJKmNtZCsrID0gb2Zmc2V0Owor CQkJKmNtZCsrID0gdmFsdWU7CisJCX0gZWxzZSB7CisJCQkqY21kKysgPSBNSV9TVE9SRV9EV09S RF9JTU0gfCAxIDw8IDIyOworCQkJKmNtZCsrID0gb2Zmc2V0OworCQkJKmNtZCsrID0gdmFsdWU7 CisJCX0KKwkJb2Zmc2V0ICs9IFBBR0VfU0laRTsKKwl9CisJKmNtZCA9IE1JX0JBVENIX0JVRkZF Ul9FTkQ7CisJd21iKCk7CisJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChvYmopOworCisJZXJy ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKG9iaiwgZmFsc2UpOworCWlmIChl cnIpCisJCWdvdG8gZXJyOworCisJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCB2bWEtPnZt LCBOVUxMKTsKKwlpZiAoSVNfRVJSKHZtYSkpIHsKKwkJZXJyID0gUFRSX0VSUih2bWEpOworCQln b3RvIGVycjsKKwl9CisKKwllcnIgPSBpOTE1X3ZtYV9waW4odm1hLCAwLCAwLCBQSU5fVVNFUik7 CisJaWYgKGVycikKKwkJZ290byBlcnI7CisKKwlyZXR1cm4gdm1hOworCitlcnI6CisJaTkxNV9n ZW1fb2JqZWN0X3B1dChvYmopOworCXJldHVybiBFUlJfUFRSKGVycik7Cit9CisKK3N0YXRpYyB1 bnNpZ25lZCBsb25nIHJlYWxfcGFnZV9jb3VudChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQoreworCXJldHVybiBodWdlX2dlbV9vYmplY3RfcGh5c19zaXplKG9iaikgPj4gUEFHRV9T SElGVDsKK30KKworc3RhdGljIHVuc2lnbmVkIGxvbmcgZmFrZV9wYWdlX2NvdW50KHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCit7CisJcmV0dXJuIGh1Z2VfZ2VtX29iamVjdF9kbWFf c2l6ZShvYmopID4+IFBBR0VfU0hJRlQ7Cit9CisKK3N0YXRpYyBpbnQgZ3B1X2ZpbGwoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKKwkJICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHgsCisJCSAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJCSAgICB1bnNp Z25lZCBpbnQgZHcpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1 KG9iai0+YmFzZS5kZXYpOworCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0KKwkJY3R4 LT5wcGd0dCA/ICZjdHgtPnBwZ3R0LT5iYXNlIDogJmk5MTUtPmdndHQuYmFzZTsKKwlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxOworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOworCXN0cnVj dCBpOTE1X3ZtYSAqYmF0Y2g7CisJdW5zaWduZWQgaW50IGZsYWdzOworCWludCBlcnI7CisKKwl2 bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosIHZtLCBOVUxMKTsKKwlpZiAoSVNfRVJSKHZtYSkp CisJCXJldHVybiBQVFJfRVJSKHZtYSk7CisKKwllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3Rv X2d0dF9kb21haW4ob2JqLCBmYWxzZSk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCWVy ciA9IGk5MTVfdm1hX3Bpbih2bWEsIDAsIDAsIFBJTl9VU0VSKTsKKwlpZiAoZXJyKQorCQlyZXR1 cm4gZXJyOworCisJLyogV2l0aGluIHRoZSBHVFQgdGhlIGh1Z2Ugb2JqZWN0cyBtYXBzIGV2ZXJ5 IHBhZ2Ugb250bworCSAqIGl0cyAxMDI0IHJlYWwgcGFnZXMgKHVzaW5nIHBoeXNfcGZuID0gZG1h X3BmbiAlIDEwMjQpLgorCSAqIFdlIHNldCB0aGUgbnRoIGR3b3JkIHdpdGhpbiB0aGUgcGFnZSB1 c2luZyB0aGUgbnRoCisJICogbWFwcGluZyB2aWEgdGhlIEdUVCAtIHRoaXMgc2hvdWxkIGV4ZXJj aXNlIHRoZSBHVFQgbWFwcGluZworCSAqIHdoaWxzdCBjaGVja2luZyB0aGF0IGVhY2ggY29udGV4 dCBwcm92aWRlcyBhIHVuaXF1ZSB2aWV3CisJICogaW50byB0aGUgb2JqZWN0LgorCSAqLworCWJh dGNoID0gZ3B1X2ZpbGxfZHcodm1hLAorCQkJICAgIChkdyAqIHJlYWxfcGFnZV9jb3VudChvYmop KSA8PCBQQUdFX1NISUZUIHwKKwkJCSAgICAoZHcgKiBzaXplb2YodTMyKSksCisJCQkgICAgcmVh bF9wYWdlX2NvdW50KG9iaiksCisJCQkgICAgZHcpOworCWlmIChJU19FUlIoYmF0Y2gpKSB7CisJ CWVyciA9IFBUUl9FUlIoYmF0Y2gpOworCQlnb3RvIGVycl92bWE7CisJfQorCisJcnEgPSBpOTE1 X2dlbV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4KTsKKwlpZiAoSVNfRVJSKHJxKSkgeworCQll cnIgPSBQVFJfRVJSKHJxKTsKKwkJZ290byBlcnJfYmF0Y2g7CisJfQorCisJZXJyID0gZW5naW5l LT5lbWl0X2ZsdXNoKHJxLCBFTUlUX0lOVkFMSURBVEUpOworCWlmIChlcnIpCisJCWdvdG8gZXJy X3JlcXVlc3Q7CisKKwllcnIgPSBpOTE1X3N3aXRjaF9jb250ZXh0KHJxKTsKKwlpZiAoZXJyKQor CQlnb3RvIGVycl9yZXF1ZXN0OworCisJZmxhZ3MgPSAwOworCWlmIChJTlRFTF9HRU4odm0tPmk5 MTUpIDw9IDUpCisJCWZsYWdzIHw9IEk5MTVfRElTUEFUQ0hfU0VDVVJFOworCisJZXJyID0gZW5n aW5lLT5lbWl0X2JiX3N0YXJ0KHJxLAorCQkJCSAgICBiYXRjaC0+bm9kZS5zdGFydCwgYmF0Y2gt Pm5vZGUuc2l6ZSwKKwkJCQkgICAgZmxhZ3MpOworCWlmIChlcnIpCisJCWdvdG8gZXJyX3JlcXVl c3Q7CisKKwlpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShiYXRjaCwgcnEsIDApOworCWk5MTVfZ2Vt X29iamVjdF9zZXRfYWN0aXZlX3JlZmVyZW5jZShiYXRjaC0+b2JqKTsKKwlpOTE1X3ZtYV91bnBp bihiYXRjaCk7CisJaTkxNV92bWFfY2xvc2UoYmF0Y2gpOworCisJaTkxNV92bWFfbW92ZV90b19h Y3RpdmUodm1hLCBycSwgMCk7CisJaTkxNV92bWFfdW5waW4odm1hKTsKKworCXJlc2VydmF0aW9u X29iamVjdF9sb2NrKG9iai0+cmVzdiwgTlVMTCk7CisJcmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9l eGNsX2ZlbmNlKG9iai0+cmVzdiwgJnJxLT5mZW5jZSk7CisJcmVzZXJ2YXRpb25fb2JqZWN0X3Vu bG9jayhvYmotPnJlc3YpOworCisJX19pOTE1X2FkZF9yZXF1ZXN0KHJxLCB0cnVlKTsKKworCXJl dHVybiAwOworCitlcnJfcmVxdWVzdDoKKwlfX2k5MTVfYWRkX3JlcXVlc3QocnEsIGZhbHNlKTsK K2Vycl9iYXRjaDoKKwlpOTE1X3ZtYV91bnBpbihiYXRjaCk7CitlcnJfdm1hOgorCWk5MTVfdm1h X3VucGluKHZtYSk7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCBjcHVfZmlsbChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCB1MzIgdmFsdWUpCit7CisJY29uc3QgYm9vbCBo YXNfbGxjID0gSEFTX0xMQyh0b19pOTE1KG9iai0+YmFzZS5kZXYpKTsKKwl1bnNpZ25lZCBpbnQg biwgbSwgbmVlZF9mbHVzaDsKKwlpbnQgZXJyOworCisJZXJyID0gaTkxNV9nZW1fb2JqX3ByZXBh cmVfc2htZW1fd3JpdGUob2JqLCAmbmVlZF9mbHVzaCk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVy cjsKKworCWZvciAobiA9IDA7IG4gPCByZWFsX3BhZ2VfY291bnQob2JqKTsgbisrKSB7CisJCXUz MiAqbWFwOworCisJCW1hcCA9IGttYXBfYXRvbWljKGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShv YmosIG4pKTsKKwkJZm9yIChtID0gMDsgbSA8IERXX1BFUl9QQUdFOyBtKyspCisJCQltYXBbbV0g PSB2YWx1ZTsKKwkJaWYgKCFoYXNfbGxjKQorCQkJZHJtX2NsZmx1c2hfdmlydF9yYW5nZShtYXAs IFBBR0VfU0laRSk7CisJCWt1bm1hcF9hdG9taWMobWFwKTsKKwl9CisKKwlpOTE1X2dlbV9vYmpf ZmluaXNoX3NobWVtX2FjY2VzcyhvYmopOworCW9iai0+YmFzZS5yZWFkX2RvbWFpbnMgPSBJOTE1 X0dFTV9ET01BSU5fR1RUIHwgSTkxNV9HRU1fRE9NQUlOX0NQVTsKKwlvYmotPmJhc2Uud3JpdGVf ZG9tYWluID0gMDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjcHVfY2hlY2soc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgdW5zaWduZWQgaW50IG1heCkKK3sKKwl1bnNpZ25l ZCBpbnQgbiwgbSwgbmVlZHNfZmx1c2g7CisJaW50IGVycjsKKworCWVyciA9IGk5MTVfZ2VtX29i al9wcmVwYXJlX3NobWVtX3JlYWQob2JqLCAmbmVlZHNfZmx1c2gpOworCWlmIChlcnIpCisJCXJl dHVybiBlcnI7CisKKwlmb3IgKG4gPSAwOyAhZXJyICYmIG4gPCByZWFsX3BhZ2VfY291bnQob2Jq KTsgbisrKSB7CisJCXUzMiAqbWFwOworCisJCW1hcCA9IGttYXBfYXRvbWljKGk5MTVfZ2VtX29i amVjdF9nZXRfcGFnZShvYmosIG4pKTsKKwkJaWYgKG5lZWRzX2ZsdXNoICYgQ0xGTFVTSF9CRUZP UkUpCisJCQlkcm1fY2xmbHVzaF92aXJ0X3JhbmdlKG1hcCwgUEFHRV9TSVpFKTsKKworCQlmb3Ig KG0gPSAwOyAhZXJyICYmIG0gPCBtYXg7IG0rKykgeworCQkJaWYgKG1hcFttXSAhPSBtKSB7CisJ CQkJcHJfZXJyKCJJbnZhbGlkIHZhbHVlIGF0IHBhZ2UgJWQsIG9mZnNldCAlZDogZm91bmQgJXgg ZXhwZWN0ZWQgJXhcbiIsCisJCQkJICAgICAgIG4sIG0sIG1hcFttXSwgbSk7CisJCQkJZXJyID0g LUVJTlZBTDsKKwkJCX0KKwkJfQorCisJCWZvciAoOyAhZXJyICYmIG0gPCBEV19QRVJfUEFHRTsg bSsrKSB7CisJCQlpZiAobWFwW21dICE9IDB4ZGVhZGJlZWYpIHsKKwkJCQlwcl9lcnIoIkludmFs aWQgdmFsdWUgYXQgcGFnZSAlZCwgb2Zmc2V0ICVkOiBmb3VuZCAleCBleHBlY3RlZCAleFxuIiwK KwkJCQkgICAgICAgbiwgbSwgbWFwW21dLCAweGRlYWRiZWVmKTsKKwkJCQllcnIgPSAtRUlOVkFM OworCQkJfQorCQl9CisKKwkJa3VubWFwX2F0b21pYyhtYXApOworCX0KKworCWk5MTVfZ2VtX29i al9maW5pc2hfc2htZW1fYWNjZXNzKG9iaik7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKK2NyZWF0ZV90ZXN0X29iamVjdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkJICAgc3RydWN0IGRybV9maWxlICpmaWxlLAorCQkgICBz dHJ1Y3QgbGlzdF9oZWFkICpvYmplY3RzKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmo7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKKwlzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bTsKKwl1NjQgbnBhZ2VzOworCXUzMiBoYW5kbGU7CisJaW50IGVycjsKKwor CWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGUtPmRyaXZlcl9wcml2KTsK KwlpZiAoSVNfRVJSKGN0eCkpCisJCXJldHVybiBFUlJfQ0FTVChjdHgpOworCisJdm0gPSBjdHgt PnBwZ3R0ID8gJmN0eC0+cHBndHQtPmJhc2UgOiAmaTkxNS0+Z2d0dC5iYXNlOworCW5wYWdlcyA9 IG1pbih2bS0+dG90YWwgLyAyLAorCQkgICAgIDEwMjR1bGwgKiBEV19QRVJfUEFHRSAqIFBBR0Vf U0laRSk7CisJbnBhZ2VzID0gcm91bmRfZG93bihucGFnZXMsIERXX1BFUl9QQUdFICogUEFHRV9T SVpFKTsKKworCW9iaiA9IGh1Z2VfZ2VtX29iamVjdChpOTE1LCBEV19QRVJfUEFHRSAqIFBBR0Vf U0laRSwgbnBhZ2VzKTsKKwlpZiAoSVNfRVJSKG9iaikpCisJCXJldHVybiBvYmo7CisKKwkvKiB0 aWUgdGhlIGhhbmRsZSB0byB0aGUgZHJtX2ZpbGUgZm9yIGVhc3kgcmVhcGluZyAqLworCWVyciA9 IGRybV9nZW1faGFuZGxlX2NyZWF0ZShmaWxlLCAmb2JqLT5iYXNlLCAmaGFuZGxlKTsKKwlpOTE1 X2dlbV9vYmplY3RfcHV0KG9iaik7CisJaWYgKGVycikKKwkJcmV0dXJuIEVSUl9QVFIoZXJyKTsK KworCWVyciA9IGNwdV9maWxsKG9iaiwgMHhkZWFkYmVlZik7CisJaWYgKGVycikgeworCQlwcl9l cnIoIkZhaWxlZCB0byBmaWxsIG9iamVjdCB3aXRoIGNwdSwgZXJyPSVkXG4iLAorCQkgICAgICAg ZXJyKTsKKwkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKKwl9CisKKwlsaXN0X2FkZF90YWlsKCZvYmot PmJhdGNoX3Bvb2xfbGluaywgb2JqZWN0cyk7CisJcmV0dXJuIG9iajsKK30KKworc3RhdGljIHVu c2lnbmVkIGxvbmcgbWF4X2R3b3JkcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQor eworCXVuc2lnbmVkIGxvbmcgbnBhZ2VzID0gZmFrZV9wYWdlX2NvdW50KG9iaik7CisKKwlHRU1f QlVHX09OKCFJU19BTElHTkVEKG5wYWdlcywgRFdfUEVSX1BBR0UpKTsKKwlyZXR1cm4gbnBhZ2Vz IC8gRFdfUEVSX1BBR0U7Cit9CisKK3N0YXRpYyBpbnQgaWd0X2N0eF9leGVjKHZvaWQgKmFyZykK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKKwlzdHJ1Y3QgZHJtX2Zp bGUgKmZpbGUgPSBtb2NrX2ZpbGUoaTkxNSk7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iajsKKwlJR1RfVElNRU9VVChlbmRfdGltZSk7CisJTElTVF9IRUFEKG9iamVjdHMpOworCXVu c2lnbmVkIGludCBjb3VudCwgZHc7CisJaW50IGVycjsKKworCS8qIENyZWF0ZSBhIGZldyBkaWZm ZXJlbnQgY29udGV4dHMgKHdpdGggZGlmZmVyZW50IG1tKSBhbmQgd3JpdGUKKwkgKiB0aHJvdWdo IGVhY2ggY3R4L21tIHVzaW5nIHRoZSBHUFUgbWFraW5nIHN1cmUgdGhvc2Ugd3JpdGVzIGVuZAor CSAqIHVwIGluIHRoZSBleHBlY3RlZCBwYWdlcyBvZiBvdXIgb2JqLgorCSAqLworCisJbXV0ZXhf bG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJb2JqID0gY3JlYXRlX3Rlc3Rfb2JqZWN0 KGk5MTUsIGZpbGUsICZvYmplY3RzKTsKKwlpZiAoSVNfRVJSKG9iaikpIHsKKwkJZXJyID0gUFRS X0VSUihvYmopOworCQlnb3RvIG91dF91bmxvY2s7CisJfQorCisJY291bnQgPSAwOworCWR3ID0g MDsKKwl3aGlsZSAoIXRpbWVfYWZ0ZXIoamlmZmllcywgZW5kX3RpbWUpKSB7CisJCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwkJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsK KwkJdW5zaWduZWQgaW50IGlkOworCisJCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5 MTUsIGZpbGUtPmRyaXZlcl9wcml2KTsKKwkJaWYgKElTX0VSUihjdHgpKSB7CisJCQllcnIgPSBQ VFJfRVJSKGN0eCk7CisJCQlnb3RvIG91dF91bmxvY2s7CisJCX0KKworCQlmb3JfZWFjaF9lbmdp bmUoZW5naW5lLCBpOTE1LCBpZCkgeworCQkJZXJyID0gZ3B1X2ZpbGwob2JqLCBjdHgsIGVuZ2lu ZSwgZHcgJSBtYXhfZHdvcmRzKG9iaikpOworCQkJaWYgKGVycikgeworCQkJCXByX2VycigiRmFp bGVkIHRvIGZpbGwgZHdvcmQgJXUgd2l0aCBncHUgKCVzKSwgZXJyPSVkXG4iLAorCQkJCSAgICAg ICBkdywgZW5naW5lLT5uYW1lLCBlcnIpOworCQkJCWdvdG8gb3V0X3VubG9jazsKKwkJCX0KKwor CQkJaWYgKCgrK2R3ICUgbWF4X2R3b3JkcyhvYmopKSA9PSAwKSB7CisJCQkJb2JqID0gY3JlYXRl X3Rlc3Rfb2JqZWN0KGk5MTUsIGZpbGUsICZvYmplY3RzKTsKKwkJCQlpZiAoSVNfRVJSKG9iaikp IHsKKwkJCQkJZXJyID0gUFRSX0VSUihvYmopOworCQkJCQlnb3RvIG91dF91bmxvY2s7CisJCQkJ fQorCQkJfQorCQl9CisJCWNvdW50Kys7CisJfQorCXByX2luZm8oIlN1Ym1pdHRlZCAlZCBjb250 ZXh0cyAoYWNyb3NzICV1IGVuZ2luZXMpLCBmaWxsaW5nICV1IGR3b3Jkc1xuIiwKKwkJY291bnQs IElOVEVMX0lORk8oaTkxNSktPm51bV9yaW5ncywgZHcpOworCisJY291bnQgPSAwOworCWxpc3Rf Zm9yX2VhY2hfZW50cnkob2JqLCAmb2JqZWN0cywgYmF0Y2hfcG9vbF9saW5rKSB7CisJCXVuc2ln bmVkIGludCByZW0gPQorCQkJbWluX3QodW5zaWduZWQgaW50LCBkdyAtIGNvdW50LCBtYXhfZHdv cmRzKG9iaikpOworCisJCWVyciA9IGNwdV9jaGVjayhvYmosIHJlbSk7CisJCWlmIChlcnIpCisJ CQlicmVhazsKKworCQljb3VudCArPSBtYXhfZHdvcmRzKG9iaik7CisJfQorCitvdXRfdW5sb2Nr OgorCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwltb2NrX2ZpbGVf ZnJlZShpOTE1LCBmaWxlKTsKKwlyZXR1cm4gZXJyOworfQorCitpbnQgaTkxNV9nZW1fY29udGV4 dF9saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3sKKwlzdGF0 aWMgY29uc3Qgc3RydWN0IGk5MTVfc3VidGVzdCB0ZXN0c1tdID0geworCQlTVUJURVNUKGlndF9j dHhfZXhlYyksCisJfTsKKworCXJldHVybiBpOTE1X3N1YnRlc3RzKHRlc3RzLCBpOTE1KTsKK30K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2Vs ZnRlc3RzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0 ZXN0cy5oCmluZGV4IDE2ZDZkZGUyOWZjYS4uMTVmYjRlMGRkNTAzIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0ZXN0cy5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRlc3RzLmgKQEAgLTE1 LDMgKzE1LDQgQEAgc2VsZnRlc3Qob2JqZWN0LCBpOTE1X2dlbV9vYmplY3RfbGl2ZV9zZWxmdGVz dHMpCiBzZWxmdGVzdChkbWFidWYsIGk5MTVfZ2VtX2RtYWJ1Zl9saXZlX3NlbGZ0ZXN0cykKIHNl bGZ0ZXN0KGNvaGVyZW5jeSwgaTkxNV9nZW1fY29oZXJlbmN5X2xpdmVfc2VsZnRlc3RzKQogc2Vs ZnRlc3QoZ3R0LCBpOTE1X2dlbV9ndHRfbGl2ZV9zZWxmdGVzdHMpCitzZWxmdGVzdChjb250ZXh0 LCBpOTE1X2dlbV9jb250ZXh0X2xpdmVfc2VsZnRlc3RzKQotLSAKMi4xMS4wCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK