From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [RFC PATCH 13/42] drm/i915: support object clearing via blitter engine Date: Thu, 14 Feb 2019 14:57:11 +0000 Message-ID: <20190214145740.14521-14-matthew.auld@intel.com> References: <20190214145740.14521-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id A97336E917 for ; Thu, 14 Feb 2019 14:58:00 +0000 (UTC) In-Reply-To: <20190214145740.14521-1-matthew.auld@intel.com> 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 U3VwcG9ydCBjbGVhcmluZyBvYmplY3RzIHZpYSB0aGUgYmxpdHRlciBlbmdpbmUuIFRoaXMgaXMg bmVlZGVkIGZvciBMTUVNCndoZXJlIHdlIG5lZWQgdG8gY2xlYXIgdGhlIGJhY2tpbmcgc3RvcmUg YmVmb3JlIGhhbmRpbmcgdGhlIG9iamVjdCB0bwp1c2Vyc3BhY2UuCgpTaWduZWQtb2ZmLWJ5OiBN YXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+CkNjOiBKb29uYXMgTGFodGluZW4g PGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+CkNjOiBBYmRpZWwgSmFudWxndWUgPGFi ZGllbC5qYW51bGd1ZUBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMgICAgICAgICAgICAgICB8IDE1MSArKysrKysrKysrKysrKysrKysKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2dwdV9jb21tYW5kcy5oICAgICB8ICAgMSArCiAuLi4vZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3QuYyAgfCAgNzAgKysrKysrKysKIDQgZmls ZXMgY2hhbmdlZCwgMjI0IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRl eCBhMGVkMDAwZDUyYWEuLmZlZWMzYmFiMGY1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBA IC0yODA3LDYgKzI4MDcsOCBAQCB2b2lkICppOTE1X2dlbV9vYmplY3RfYWxsb2Moc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2ZyZWUoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7CiB2b2lkIGk5MTVfZ2VtX29iamVjdF9pbml0 KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQkgY29uc3Qgc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3Rfb3BzICpvcHMpOworaW50IGk5MTVfZ2VtX29iamVjdF9jbGVhcl9ibHQo c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJCSAgICAgIHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopOwogc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgogaTkxNV9nZW1f b2JqZWN0X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBzaXpl KTsKIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmlu ZGV4IDdmMDQ0YjY0M2E3NS4uMDMyZDQzMzRjMGYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK QEAgLTQyODgsNiArNDI4OCwxNTcgQEAgc3RhdGljIGJvb2wgZGlzY2FyZF9iYWNraW5nX3N0b3Jh Z2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAlyZXR1cm4gYXRvbWljX2xvbmdf cmVhZCgmb2JqLT5iYXNlLmZpbHAtPmZfY291bnQpID09IDE7CiB9CiAKK3N0YXRpYyBzdHJ1Y3Qg aTkxNV92bWEgKgorX19pOTE1X2dlbV9maWxsX2JsdChzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgdTMy IHZhbHVlKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNSh2bWEt Pm9iai0+YmFzZS5kZXYpOworCWNvbnN0IGludCBnZW4gPSBJTlRFTF9HRU4oaTkxNSk7CisJc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwlzdHJ1Y3QgaTkxNV92bWEgKmJhdGNoOwor CXUzMiAqY21kOworCWludCBlcnI7CisKKwlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2lu dGVybmFsKGk5MTUsIFBBR0VfU0laRSk7CisJaWYgKElTX0VSUihvYmopKQorCQlyZXR1cm4gRVJS X0NBU1Qob2JqKTsKKworCWNtZCA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKG9iaiwgSTkxNV9N QVBfV0IpOworCWlmIChJU19FUlIoY21kKSkgeworCQllcnIgPSBQVFJfRVJSKGNtZCk7CisJCWdv dG8gZXJyOworCX0KKworCWlmIChnZW4gPj0gOCkgeworCQkqY21kKysgPSBYWV9DT0xPUl9CTFRf Q01EIHwgQkxUX1dSSVRFX1JHQkE7CisJCSpjbWQrKyA9IEJMVF9ERVBUSF8zMiB8IEJMVF9ST1Bf Q09MT1JfQ09QWSB8IFBBR0VfU0laRTsKKwkJKmNtZCsrID0gMDsKKwkJKmNtZCsrID0gdm1hLT5v YmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUIDw8IDE2IHwgUEFHRV9TSVpFIC8gNDsKKwkJKmNt ZCsrID0gbG93ZXJfMzJfYml0cyh2bWEtPm5vZGUuc3RhcnQpOworCQkqY21kKysgPSB1cHBlcl8z Ml9iaXRzKHZtYS0+bm9kZS5zdGFydCk7CisJCSpjbWQrKyA9IHZhbHVlOworCQkqY21kKysgPSBN SV9OT09QOworCX0gZWxzZSB7CisJCSpjbWQrKyA9IENPTE9SX0JMVF9DTUQgfCBCTFRfV1JJVEVf UkdCQTsKKwkJKmNtZCsrID0gQkxUX0RFUFRIXzMyIHwgQkxUX1JPUF9DT0xPUl9DT1BZIHwgUEFH RV9TSVpFOworCQkqY21kKysgPSB2bWEtPm9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQgPDwg MTYgfCBQQUdFX1NJWkU7CisJCSpjbWQrKyA9IHZtYS0+bm9kZS5zdGFydDsKKwkJKmNtZCsrID0g dmFsdWU7CisJCSpjbWQrKyA9IE1JX05PT1A7CisJfQorCisJKmNtZCA9IE1JX0JBVENIX0JVRkZF Ul9FTkQ7CisKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKG9iaik7CisKKwllcnIgPSBpOTE1 X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxzZSk7CisJaWYgKGVycikKKwkJ Z290byBlcnI7CisKKwliYXRjaCA9IGk5MTVfdm1hX2luc3RhbmNlKG9iaiwgdm1hLT52bSwgTlVM TCk7CisJaWYgKElTX0VSUihiYXRjaCkpIHsKKwkJZXJyID0gUFRSX0VSUihiYXRjaCk7CisJCWdv dG8gZXJyOworCX0KKworCWVyciA9IGk5MTVfdm1hX3BpbihiYXRjaCwgMCwgMCwgUElOX1VTRVIp OworCWlmIChlcnIpCisJCWdvdG8gZXJyOworCisJcmV0dXJuIGJhdGNoOworCitlcnI6CisJaTkx NV9nZW1fb2JqZWN0X3B1dChvYmopOworCXJldHVybiBFUlJfUFRSKGVycik7Cit9CisKK3N0YXRp YyBpbnQgaTkxNV9nZW1fZmlsbF9ibHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJ CSAgICAgc3RydWN0IGk5MTVfdm1hICp2bWEsCisJCQkgICAgIHUzMiB2YWx1ZSkKK3sKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUodm1hLT5vYmotPmJhc2UuZGV2KTsK KwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBpOTE1LT5lbmdpbmVbQkNTXTsKKwlz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKKwlzdHJ1Y3QgaTkxNV92bWEgKmJhdGNoOworCWludCBm bGFncyA9IDA7CisJaW50IGVycjsKKworCWVyciA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0 X2RvbWFpbih2bWEtPm9iaiwgdHJ1ZSk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCXJx ID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4KTsKKwlpZiAoSVNfRVJSKHJxKSkKKwkJ cmV0dXJuIFBUUl9FUlIocnEpOworCisJYmF0Y2ggPSBfX2k5MTVfZ2VtX2ZpbGxfYmx0KHZtYSwg dmFsdWUpOworCWlmIChJU19FUlIoYmF0Y2gpKSB7CisJCWVyciA9IFBUUl9FUlIoYmF0Y2gpOwor CQlnb3RvIGVycl9yZXF1ZXN0OworCX0KKworCWVyciA9IGk5MTVfdm1hX21vdmVfdG9fYWN0aXZl KGJhdGNoLCBycSwgMCk7CisJaTkxNV92bWFfdW5waW4oYmF0Y2gpOworCWk5MTVfdm1hX2Nsb3Nl KGJhdGNoKTsKKwlpZiAoZXJyKSB7CisJCWk5MTVfZ2VtX29iamVjdF9wdXQoYmF0Y2gtPm9iaik7 CisJCWdvdG8gZXJyX3JlcXVlc3Q7CisJfQorCisJaTkxNV9nZW1fb2JqZWN0X3NldF9hY3RpdmVf cmVmZXJlbmNlKGJhdGNoLT5vYmopOworCisJZXJyID0gZW5naW5lLT5lbWl0X2JiX3N0YXJ0KHJx LAorCQkJCSAgICBiYXRjaC0+bm9kZS5zdGFydCwgYmF0Y2gtPm5vZGUuc2l6ZSwKKwkJCQkgICAg ZmxhZ3MpOworCWlmIChlcnIpCisJCWdvdG8gZXJyX3JlcXVlc3Q7CisKKwllcnIgPSBpOTE1X3Zt YV9tb3ZlX3RvX2FjdGl2ZSh2bWEsIHJxLCBFWEVDX09CSkVDVF9XUklURSk7CisJaWYgKGVycikK KwkJaTkxNV9yZXF1ZXN0X3NraXAocnEsIGVycik7CisKK2Vycl9yZXF1ZXN0OgorCWk5MTVfcmVx dWVzdF9hZGQocnEpOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgaTkxNV9nZW1fb2Jq ZWN0X2ZpbGxfYmx0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJCQkJICAgIHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkJICAgIHUzMiB2YWx1ZSkKK3sKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqLT5iYXNlLmRldik7CisJc3Ry dWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0gPSBjdHgtPnBwZ3R0ID8gJmN0eC0+cHBndHQtPnZt IDogJmk5MTUtPmdndHQudm07CisJc3RydWN0IGk5MTVfdm1hICp2bWE7CisJaW50IGVycjsKKwor CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJdm1hID0g aTkxNV92bWFfaW5zdGFuY2Uob2JqLCB2bSwgTlVMTCk7CisJaWYgKElTX0VSUih2bWEpKQorCQly ZXR1cm4gUFRSX0VSUih2bWEpOworCisJZXJyID0gaTkxNV92bWFfcGluKHZtYSwgMCwgMCwgUElO X1VTRVIpOworCWlmIChlcnIpIHsKKwkJaTkxNV92bWFfY2xvc2Uodm1hKTsKKwkJcmV0dXJuIGVy cjsKKwl9CisKKwllcnIgPSBpOTE1X2dlbV9maWxsX2JsdChjdHgsIHZtYSwgdmFsdWUpOworCWk5 MTVfdm1hX3VucGluKHZtYSk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCXJldHVybiBp OTE1X2dlbV9vYmplY3Rfd2FpdChvYmosCisJCQkJICAgIEk5MTVfV0FJVF9MT0NLRUQgfAorCQkJ CSAgICBJOTE1X1dBSVRfQUxMLAorCQkJCSAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cit9CisK K2ludCBpOTE1X2dlbV9vYmplY3RfY2xlYXJfYmx0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgsCisJCQkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQoreworCXJldHVy biBpOTE1X2dlbV9vYmplY3RfZmlsbF9ibHQoY3R4LCBvYmosIDApOworfQorCiBzdGF0aWMgdm9p ZCBfX2k5MTVfZ2VtX2ZyZWVfb2JqZWN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwK IAkJCQkgICAgc3RydWN0IGxsaXN0X25vZGUgKmZyZWVkKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3B1X2NvbW1hbmRzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ncHVfY29tbWFuZHMuaAppbmRleCBiOTZhMzFiYzEwODAuLmY3NGZmMWQwOTVjMiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3B1X2NvbW1hbmRzLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3B1X2NvbW1hbmRzLmgKQEAgLTE3NSw2ICsx NzUsNyBAQAogI2RlZmluZSBHRlhfT1BfRFJBV1JFQ1RfSU5GT19JOTY1ICAoKDB4NzkwMDw8MTYp fDB4MikKIAogI2RlZmluZSBDT0xPUl9CTFRfQ01ECQkJKDI8PDI5IHwgMHg0MDw8MjIgfCAoNS0y KSkKKyNkZWZpbmUgWFlfQ09MT1JfQkxUX0NNRCAgICAgICAgICAgICAgCSgyPDwyOSB8IDB4NTA8 PDIyIHwgKDctMikpCiAjZGVmaW5lIFNSQ19DT1BZX0JMVF9DTUQJCSgoMjw8MjkpfCgweDQzPDwy Mil8NCkKICNkZWZpbmUgWFlfU1JDX0NPUFlfQkxUX0NNRAkJKCgyPDwyOSl8KDB4NTM8PDIyKXw2 KQogI2RlZmluZSBYWV9NT05PX1NSQ19DT1BZX0lNTV9CTFQJKCgyPDwyOSl8KDB4NzE8PDIyKXw1 KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX29i amVjdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdC5j CmluZGV4IDM5NWFlODc4ZTBmNy4uYzgzZGM1ZTJmMjE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdC5jCkBAIC02MjgsNiArNjI4LDc1IEBA IHN0YXRpYyBpbnQgaWd0X21tYXBfb2Zmc2V0X2V4aGF1c3Rpb24odm9pZCAqYXJnKQogCWdvdG8g b3V0OwogfQogCitzdGF0aWMgaW50IGlndF9maWxsX2JsdCh2b2lkICphcmcpCit7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iajsKKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OworCXN0cnVjdCBkcm1fZmls ZSAqZmlsZTsKKwlzdHJ1Y3Qgcm5kX3N0YXRlIHBybmc7CisJSUdUX1RJTUVPVVQoZW5kKTsKKwl1 MzIgKnZhZGRyOworCWludCBlcnI7CisKKwlmaWxlID0gbW9ja19maWxlKGk5MTUpOworCWlmIChJ U19FUlIoZmlsZSkpCisJCXJldHVybiBQVFJfRVJSKGZpbGUpOworCisJY3R4ID0gbGl2ZV9jb250 ZXh0KGk5MTUsIGZpbGUpOworCWlmIChJU19FUlIoY3R4KSkgeworCQllcnIgPSBQVFJfRVJSKGN0 eCk7CisJCWdvdG8gZXJyX2ZpbGU7CisJfQorCisJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0 ZV9pbnRlcm5hbChpOTE1LCBTWl8yTSk7CisJaWYgKElTX0VSUihvYmopKSB7CisJCWVyciA9IFBU Ul9FUlIob2JqKTsKKwkJZ290byBlcnJfZmlsZTsKKwl9CisKKwl2YWRkciA9IGk5MTVfZ2VtX29i amVjdF9waW5fbWFwKG9iaiwgSTkxNV9NQVBfV0IpOworCWlmIChJU19FUlIodmFkZHIpKSB7CisJ CWVyciA9IFBUUl9FUlIodmFkZHIpOworCQlnb3RvIGVycl9wdXQ7CisJfQorCisJcHJhbmRvbV9z ZWVkX3N0YXRlKCZwcm5nLCBpOTE1X3NlbGZ0ZXN0LnJhbmRvbV9zZWVkKTsKKworCW11dGV4X2xv Y2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJZG8geworCQl1MzIgdmFsID0gcHJhbmRv bV91MzJfc3RhdGUoJnBybmcpOworCQl1MzIgaTsKKworCQllcnIgPSBpOTE1X2dlbV9vYmplY3Rf ZmlsbF9ibHQoY3R4LCBvYmosIHZhbCk7CisJCWlmIChlcnIpCisJCQlicmVhazsKKworCQllcnIg PSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2NwdV9kb21haW4ob2JqLCBmYWxzZSk7CisJCWlmIChl cnIpCisJCQlicmVhazsKKworCQlmb3IgKGkgPSAwOyBpIDwgb2JqLT5iYXNlLnNpemUgLyBzaXpl b2YodTMyKTsgKytpKSB7CisJCQlpZiAodmFkZHJbaV0gIT0gdmFsKSB7CisJCQkJcHJfZXJyKCJ2 YWRkclslZF09JXUsIGV4cGVjdGVkPSV1XG4iLCBpLAorCQkJCSAgICAgICB2YWwsIHZhZGRyW2ld KTsKKwkJCQllcnIgPSAtRUlOVkFMOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJfSB3aGlsZSAo IXRpbWVfYWZ0ZXIoamlmZmllcywgZW5kKSk7CisKKwltdXRleF91bmxvY2soJmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOworCisJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChvYmopOworZXJyX3B1 dDoKKwlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CitlcnJfZmlsZToKKwltb2NrX2ZpbGVfZnJl ZShpOTE1LCBmaWxlKTsKKwlyZXR1cm4gZXJyOworfQorCiBpbnQgaTkxNV9nZW1fb2JqZWN0X21v Y2tfc2VsZnRlc3RzKHZvaWQpCiB7CiAJc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3N1YnRlc3Qg dGVzdHNbXSA9IHsKQEAgLTY1Myw2ICs3MjIsNyBAQCBpbnQgaTkxNV9nZW1fb2JqZWN0X2xpdmVf c2VsZnRlc3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCQlTVUJURVNUKGlndF9n ZW1faHVnZSksCiAJCVNVQlRFU1QoaWd0X3BhcnRpYWxfdGlsaW5nKSwKIAkJU1VCVEVTVChpZ3Rf bW1hcF9vZmZzZXRfZXhoYXVzdGlvbiksCisJCVNVQlRFU1QoaWd0X2ZpbGxfYmx0KSwKIAl9Owog CiAJcmV0dXJuIGk5MTVfc3VidGVzdHModGVzdHMsIGk5MTUpOwotLSAKMi4yMC4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=