From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [PATCH v3 12/37] drm/i915/blt: support copying objects Date: Fri, 9 Aug 2019 23:26:18 +0100 Message-ID: <20190809222643.23142-13-matthew.auld@intel.com> References: <20190809222643.23142-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190809222643.23142-1-matthew.auld@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org V2UgY2FuIGFscmVhZHkgY2xlYXIgYW4gb2JqZWN0IHdpdGggdGhlIGJsdCwgc28gdHJ5IHRvIGRv IHRoZSBzYW1lIHRvCnN1cHBvcnQgY29weWluZyBmcm9tIG9uZSBvYmplY3QgYmFja2luZyBzdG9y ZSB0byBhbm90aGVyLiBSZWFsbHkgdGhpcyBpcwpqdXN0IG9iamVjdCAtPiBvYmplY3QsIHdoaWNo IGlzIG5vdCB0aGF0IHVzZWZ1bCB5ZXQsIHdoYXQgd2UgcmVhbGx5IHdhbnQKaXMgdHdvIGJhY2tp bmcgc3RvcmVzLCBidXQgdGhhdCB3aWxsIHJlcXVpcmUgc29tZSB2bWEgcmV3b3JrIGZpcnN0LApv dGhlcndpc2Ugd2UgYXJlIHN0dWNrIHdpdGggInRtcCIgb2JqZWN0cy4KClNpZ25lZC1vZmYtYnk6 IE1hdHRoZXcgQXVsZCA8bWF0dGhldy5hdWxkQGludGVsLmNvbT4KQ2M6IEpvb25hcyBMYWh0aW5l biA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KQ2M6IEFiZGllbCBKYW51bGd1ZSA8 YWJkaWVsLmphbnVsZ3VlQGxpbnV4LmludGVsLmNvbQotLS0KIC4uLi9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdF9ibHQuYyAgICB8IDIwNyArKysrKysrKysrKysrKysrKysKIC4uLi9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF9ibHQuaCAgICB8ICAgOSArCiAuLi4vaTkx NS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdF9ibHQuYyAgfCAxMDYgKysrKysrKysrCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ncHVfY29tbWFuZHMuaCAgfCAgIDUgKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3JpbmdidWZmZXIuYyAgICB8ICAgMiArLQogNSBm aWxlcyBjaGFuZ2VkLCAzMjYgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X2JsdC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF9ibHQuYwppbmRleCBjMWU1ZWRk MWUzNTkuLjAzNjFiOGM4MGFkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdF9ibHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fb2JqZWN0X2JsdC5jCkBAIC0xNzUsNiArMTc1LDIxMyBAQCBpbnQgaTkxNV9nZW1fb2Jq ZWN0X2ZpbGxfYmx0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJcmV0dXJuIGVy cjsKIH0KIAorc3RydWN0IGk5MTVfdm1hICppbnRlbF9lbWl0X3ZtYV9jb3B5X2JsdChzdHJ1Y3Qg aW50ZWxfZW5naW5lX3Bvb2xfbm9kZSAqKnAsCisJCQkJCSBzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2UsCisJCQkJCSBzdHJ1Y3QgaTkxNV92bWEgKnNyYywKKwkJCQkJIHN0cnVjdCBpOTE1X3ZtYSAq ZHN0KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gY2UtPnZtLT5pOTE1Owor CWNvbnN0IHUzMiBibG9ja19zaXplID0gUzE2X01BWCAqIFBBR0VfU0laRTsKKwlzdHJ1Y3QgaW50 ZWxfZW5naW5lX3Bvb2xfbm9kZSAqcG9vbDsKKwlzdHJ1Y3QgaTkxNV92bWEgKmJhdGNoOworCXU2 NCBzcmNfb2Zmc2V0LCBkc3Rfb2Zmc2V0OworCXU2NCBjb3VudDsKKwl1NjQgcmVtOworCXUzMiBz aXplOworCXUzMiAqY21kOworCWludCBlcnI7CisKKwlHRU1fQlVHX09OKHNyYy0+c2l6ZSAhPSBk c3QtPnNpemUpOworCisJY291bnQgPSBkaXZfdTY0KGRzdC0+c2l6ZSwgYmxvY2tfc2l6ZSk7CisJ c2l6ZSA9ICgxICsgMTEgKiBjb3VudCkgKiBzaXplb2YodTMyKTsKKwlzaXplID0gcm91bmRfdXAo c2l6ZSwgUEFHRV9TSVpFKTsKKwlwb29sID0gaW50ZWxfZW5naW5lX3Bvb2xfZ2V0KCZjZS0+ZW5n aW5lLT5wb29sLCBzaXplKTsKKwlpZiAoSVNfRVJSKHBvb2wpKQorCQlyZXR1cm4gRVJSX0NBU1Qo cG9vbCk7CisKKwljbWQgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChwb29sLT5vYmosIEk5MTVf TUFQX1dDKTsKKwlpZiAoSVNfRVJSKGNtZCkpIHsKKwkJZXJyID0gUFRSX0VSUihjbWQpOworCQln b3RvIG91dF9wdXQ7CisJfQorCisJcmVtID0gc3JjLT5zaXplOworCXNyY19vZmZzZXQgPSBzcmMt Pm5vZGUuc3RhcnQ7CisJZHN0X29mZnNldCA9IGRzdC0+bm9kZS5zdGFydDsKKworCWRvIHsKKwkJ dTMyIHNpemUgPSBtaW5fdCh1NjQsIHJlbSwgYmxvY2tfc2l6ZSk7CisKKwkJR0VNX0JVR19PTihz aXplID4+IFBBR0VfU0hJRlQgPiBTMTZfTUFYKTsKKworCQlpZiAoSU5URUxfR0VOKGk5MTUpID49 IDkpIHsKKwkJCSpjbWQrKyA9IEdFTjlfWFlfRkFTVF9DT1BZX0JMVF9DTUQgfCAoMTAgLSAyKTsK KwkJCSpjbWQrKyA9IEJMVF9ERVBUSF8zMiB8IFBBR0VfU0laRTsKKwkJCSpjbWQrKyA9IDA7CisJ CQkqY21kKysgPSBzaXplID4+IFBBR0VfU0hJRlQgPDwgMTYgfCBQQUdFX1NJWkUgLyA0OworCQkJ KmNtZCsrID0gbG93ZXJfMzJfYml0cyhkc3Rfb2Zmc2V0KTsKKwkJCSpjbWQrKyA9IHVwcGVyXzMy X2JpdHMoZHN0X29mZnNldCk7CisJCQkqY21kKysgPSAwOworCQkJKmNtZCsrID0gUEFHRV9TSVpF OworCQkJKmNtZCsrID0gbG93ZXJfMzJfYml0cyhzcmNfb2Zmc2V0KTsKKwkJCSpjbWQrKyA9IHVw cGVyXzMyX2JpdHMoc3JjX29mZnNldCk7CisJCX0gZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49 IDgpIHsKKwkJCSpjbWQrKyA9IFhZX1NSQ19DT1BZX0JMVF9DTUQgfCBCTFRfV1JJVEVfUkdCQSB8 ICgxMCAtIDIpOworCQkJKmNtZCsrID0gQkxUX0RFUFRIXzMyIHwgQkxUX1JPUF9TUkNfQ09QWSB8 IFBBR0VfU0laRTsKKwkJCSpjbWQrKyA9IDA7CisJCQkqY21kKysgPSBzaXplID4+IFBBR0VfU0hJ RlQgPDwgMTYgfCBQQUdFX1NJWkUgLyA0OworCQkJKmNtZCsrID0gbG93ZXJfMzJfYml0cyhkc3Rf b2Zmc2V0KTsKKwkJCSpjbWQrKyA9IHVwcGVyXzMyX2JpdHMoZHN0X29mZnNldCk7CisJCQkqY21k KysgPSAwOworCQkJKmNtZCsrID0gUEFHRV9TSVpFOworCQkJKmNtZCsrID0gbG93ZXJfMzJfYml0 cyhzcmNfb2Zmc2V0KTsKKwkJCSpjbWQrKyA9IHVwcGVyXzMyX2JpdHMoc3JjX29mZnNldCk7CisJ CX0gZWxzZSB7CisJCQkqY21kKysgPSBTUkNfQ09QWV9CTFRfQ01EIHwgQkxUX1dSSVRFX1JHQkEg fCAoNiAtIDIpOworCQkJKmNtZCsrID0gQkxUX0RFUFRIXzMyIHwgQkxUX1JPUF9TUkNfQ09QWSB8 IFBBR0VfU0laRTsKKwkJCSpjbWQrKyA9IHNpemUgPj4gUEFHRV9TSElGVCA8PCAxNiB8IFBBR0Vf U0laRTsKKwkJCSpjbWQrKyA9IGRzdF9vZmZzZXQ7CisJCQkqY21kKysgPSBQQUdFX1NJWkU7CisJ CQkqY21kKysgPSBzcmNfb2Zmc2V0OworCQl9CisKKwkJLyogQWxsb3cgb3Vyc2VsdmVzIHRvIGJl IHByZWVtcHRlZCBpbiBiZXR3ZWVuIGJsb2Nrcy4gKi8KKwkJKmNtZCsrID0gTUlfQVJCX0NIRUNL OworCisJCXNyY19vZmZzZXQgKz0gc2l6ZTsKKwkJZHN0X29mZnNldCArPSBzaXplOworCQlyZW0g LT0gc2l6ZTsKKwl9IHdoaWxlIChyZW0pOworCisJKmNtZCA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7 CisJaW50ZWxfZ3RfY2hpcHNldF9mbHVzaChjZS0+dm0tPmd0KTsKKworCWk5MTVfZ2VtX29iamVj dF91bnBpbl9tYXAocG9vbC0+b2JqKTsKKworCWJhdGNoID0gaTkxNV92bWFfaW5zdGFuY2UocG9v bC0+b2JqLCBjZS0+dm0sIE5VTEwpOworCWlmIChJU19FUlIoYmF0Y2gpKSB7CisJCWVyciA9IFBU Ul9FUlIoYmF0Y2gpOworCQlnb3RvIG91dF9wdXQ7CisJfQorCisJZXJyID0gaTkxNV92bWFfcGlu KGJhdGNoLCAwLCAwLCBQSU5fVVNFUik7CisJaWYgKHVubGlrZWx5KGVycikpCisJCWdvdG8gb3V0 X3B1dDsKKworCSpwID0gcG9vbDsKKwlyZXR1cm4gYmF0Y2g7CisKK291dF9wdXQ6CisJaW50ZWxf ZW5naW5lX3Bvb2xfcHV0KHBvb2wpOworCXJldHVybiBFUlJfUFRSKGVycik7Cit9CisKK2ludCBp OTE1X2dlbV9vYmplY3RfY29weV9ibHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKnNyYywK KwkJCSAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmRzdCwKKwkJCSAgICAgc3RydWN0 IGludGVsX2NvbnRleHQgKmNlKQoreworCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2Jqc1tdID0g eyAmc3JjLT5iYXNlLCAmZHN0LT5iYXNlIH07CisJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm0gPSBjZS0+dm07CisJc3RydWN0IGludGVsX2VuZ2luZV9wb29sX25vZGUgKnBvb2w7CisJc3Ry dWN0IHd3X2FjcXVpcmVfY3R4IGFjcXVpcmU7CisJc3RydWN0IGk5MTVfdm1hICp2bWFfc3JjLCAq dm1hX2RzdDsKKwlzdHJ1Y3QgaTkxNV92bWEgKmJhdGNoOworCXN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxOworCWludCBlcnI7CisKKwl2bWFfc3JjID0gaTkxNV92bWFfaW5zdGFuY2Uoc3JjLCB2bSwg TlVMTCk7CisJaWYgKElTX0VSUih2bWFfc3JjKSkKKwkJcmV0dXJuIFBUUl9FUlIodm1hX3NyYyk7 CisKKwllcnIgPSBpOTE1X3ZtYV9waW4odm1hX3NyYywgMCwgMCwgUElOX1VTRVIpOworCWlmICh1 bmxpa2VseShlcnIpKQorCQlyZXR1cm4gZXJyOworCisJdm1hX2RzdCA9IGk5MTVfdm1hX2luc3Rh bmNlKGRzdCwgdm0sIE5VTEwpOworCWlmIChJU19FUlIodm1hX2RzdCkpCisJCWdvdG8gb3V0X3Vu cGluX3NyYzsKKworCWVyciA9IGk5MTVfdm1hX3Bpbih2bWFfZHN0LCAwLCAwLCBQSU5fVVNFUik7 CisJaWYgKHVubGlrZWx5KGVycikpCisJCWdvdG8gb3V0X3VucGluX3NyYzsKKworCWludGVsX2Vu Z2luZV9wbV9nZXQoY2UtPmVuZ2luZSk7CisJYmF0Y2ggPSBpbnRlbF9lbWl0X3ZtYV9jb3B5X2Js dCgmcG9vbCwgY2UsIHZtYV9zcmMsIHZtYV9kc3QpOworCWlmIChJU19FUlIoYmF0Y2gpKSB7CisJ CWVyciA9IFBUUl9FUlIoYmF0Y2gpOworCQlnb3RvIG91dF91bnBpbl9kc3Q7CisJfQorCisJcnEg PSBpbnRlbF9jb250ZXh0X2NyZWF0ZV9yZXF1ZXN0KGNlKTsKKwlpZiAoSVNfRVJSKHJxKSkgewor CQllcnIgPSBQVFJfRVJSKHJxKTsKKwkJZ290byBvdXRfYmF0Y2g7CisJfQorCisJaTkxNV92bWFf bG9jayhiYXRjaCk7CisJZXJyID0gaTkxNV92bWFfbW92ZV90b19hY3RpdmUoYmF0Y2gsIHJxLCAw KTsKKwlpOTE1X3ZtYV91bmxvY2soYmF0Y2gpOworCWlmICh1bmxpa2VseShlcnIpKQorCQlnb3Rv IG91dF9yZXF1ZXN0OworCisJZXJyID0gaW50ZWxfZW5naW5lX3Bvb2xfbWFya19hY3RpdmUocG9v bCwgcnEpOworCWlmICh1bmxpa2VseShlcnIpKQorCQlnb3RvIG91dF9yZXF1ZXN0OworCisJZXJy ID0gZHJtX2dlbV9sb2NrX3Jlc2VydmF0aW9ucyhvYmpzLCBBUlJBWV9TSVpFKG9ianMpLCAmYWNx dWlyZSk7CisJaWYgKHVubGlrZWx5KGVycikpCisJCWdvdG8gb3V0X3JlcXVlc3Q7CisKKwlpZiAo c3JjLT5jYWNoZV9kaXJ0eSAmIH5zcmMtPmNhY2hlX2NvaGVyZW50KQorCQlpOTE1X2dlbV9jbGZs dXNoX29iamVjdChzcmMsIDApOworCisJaWYgKGRzdC0+Y2FjaGVfZGlydHkgJiB+ZHN0LT5jYWNo ZV9jb2hlcmVudCkKKwkJaTkxNV9nZW1fY2xmbHVzaF9vYmplY3QoZHN0LCAwKTsKKworCWVyciA9 IGk5MTVfcmVxdWVzdF9hd2FpdF9vYmplY3QocnEsIHNyYywgZmFsc2UpOworCWlmICh1bmxpa2Vs eShlcnIpKQorCQlnb3RvIG91dF91bmxvY2s7CisKKwllcnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2Fj dGl2ZSh2bWFfc3JjLCBycSwgMCk7CisJaWYgKHVubGlrZWx5KGVycikpCisJCWdvdG8gb3V0X3Vu bG9jazsKKworCWVyciA9IGk5MTVfcmVxdWVzdF9hd2FpdF9vYmplY3QocnEsIGRzdCwgdHJ1ZSk7 CisJaWYgKHVubGlrZWx5KGVycikpCisJCWdvdG8gb3V0X3VubG9jazsKKworCWVyciA9IGk5MTVf dm1hX21vdmVfdG9fYWN0aXZlKHZtYV9kc3QsIHJxLCBFWEVDX09CSkVDVF9XUklURSk7CisJaWYg KHVubGlrZWx5KGVycikpCisJCWdvdG8gb3V0X3VubG9jazsKKworCWlmIChjZS0+ZW5naW5lLT5l bWl0X2luaXRfYnJlYWRjcnVtYikgeworCQllcnIgPSBjZS0+ZW5naW5lLT5lbWl0X2luaXRfYnJl YWRjcnVtYihycSk7CisJCWlmICh1bmxpa2VseShlcnIpKQorCQkJZ290byBvdXRfdW5sb2NrOwor CX0KKworCWVyciA9IGNlLT5lbmdpbmUtPmVtaXRfYmJfc3RhcnQocnEsCisJCQkJCWJhdGNoLT5u b2RlLnN0YXJ0LCBiYXRjaC0+bm9kZS5zaXplLAorCQkJCQkwKTsKK291dF91bmxvY2s6CisJZHJt X2dlbV91bmxvY2tfcmVzZXJ2YXRpb25zKG9ianMsIEFSUkFZX1NJWkUob2JqcyksICZhY3F1aXJl KTsKK291dF9yZXF1ZXN0OgorCWlmICh1bmxpa2VseShlcnIpKQorCQlpOTE1X3JlcXVlc3Rfc2tp cChycSwgZXJyKTsKKworCWk5MTVfcmVxdWVzdF9hZGQocnEpOworb3V0X2JhdGNoOgorCWk5MTVf dm1hX3VucGluKGJhdGNoKTsKKwlpbnRlbF9lbmdpbmVfcG9vbF9wdXQocG9vbCk7CitvdXRfdW5w aW5fZHN0OgorCWk5MTVfdm1hX3VucGluKHZtYV9kc3QpOworCWludGVsX2VuZ2luZV9wbV9wdXQo Y2UtPmVuZ2luZSk7CitvdXRfdW5waW5fc3JjOgorCWk5MTVfdm1hX3VucGluKHZtYV9zcmMpOwor CXJldHVybiBlcnI7Cit9CisKICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVT VCkKICNpbmNsdWRlICJzZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0X2JsdC5jIgogI2VuZGlmCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X2JsdC5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF9ibHQuaAppbmRleCBh NzQyNWMyMzRkNTAuLjVkM2U0ZWQ2ZTA2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF9ibHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fb2JqZWN0X2JsdC5oCkBAIC0yMiw0ICsyMiwxMyBAQCBpbnQgaTkxNV9nZW1f b2JqZWN0X2ZpbGxfYmx0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQkgICAg IHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKIAkJCSAgICAgdTMyIHZhbHVlKTsKIAorc3RydWN0 IGk5MTVfdm1hICppbnRlbF9lbWl0X3ZtYV9jb3B5X2JsdChzdHJ1Y3QgaW50ZWxfZW5naW5lX3Bv b2xfbm9kZSAqKnAsCisJCQkJCSBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCQkJCSBzdHJ1 Y3QgaTkxNV92bWEgKnNyYywKKwkJCQkJIHN0cnVjdCBpOTE1X3ZtYSAqZHN0KTsKKworaW50IGk5 MTVfZ2VtX29iamVjdF9jb3B5X2JsdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqc3JjLAor CQkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqZHN0LAorCQkJICAgICBzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UpOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0X2JsdC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3RfYmx0LmMKaW5kZXggYzZlMWVl YmU1M2Y1Li5jMjFkNzQ3ZTdkMDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dl bS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0X2JsdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0X2JsdC5jCkBAIC0xMDMsMTAgKzEwMywx MTYgQEAgc3RhdGljIGludCBpZ3RfZmlsbF9ibHQodm9pZCAqYXJnKQogCXJldHVybiBlcnI7CiB9 CiAKK3N0YXRpYyBpbnQgaWd0X2NvcHlfYmx0KHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBpOTE1 LT5lbmdpbmVbQkNTMF0tPmtlcm5lbF9jb250ZXh0OworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpzcmMsICpkc3Q7CisJc3RydWN0IHJuZF9zdGF0ZSBwcm5nOworCUlHVF9USU1FT1VUKGVu ZCk7CisJdTMyICp2YWRkcjsKKwlpbnQgZXJyID0gMDsKKworCXByYW5kb21fc2VlZF9zdGF0ZSgm cHJuZywgaTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCk7CisKKwlkbyB7CisJCWNvbnN0IHUzMiBt YXhfYmxvY2tfc2l6ZSA9IFMxNl9NQVggKiBQQUdFX1NJWkU7CisJCXUzMiBzeiA9IG1pbl90KHU2 NCwgY2UtPnZtLT50b3RhbCA+PiA0LCBwcmFuZG9tX3UzMl9zdGF0ZSgmcHJuZykpOworCQl1MzIg cGh5c19zeiA9IHN6ICUgKG1heF9ibG9ja19zaXplICsgMSk7CisJCXUzMiB2YWwgPSBwcmFuZG9t X3UzMl9zdGF0ZSgmcHJuZyk7CisJCXUzMiBpOworCisJCXN6ID0gcm91bmRfdXAoc3osIFBBR0Vf U0laRSk7CisJCXBoeXNfc3ogPSByb3VuZF91cChwaHlzX3N6LCBQQUdFX1NJWkUpOworCisJCXBy X2RlYnVnKCIlcyB3aXRoIHBoeXNfc3o9ICV4LCBzej0leCwgdmFsPSV4XG4iLCBfX2Z1bmNfXywK KwkJCSBwaHlzX3N6LCBzeiwgdmFsKTsKKworCQlzcmMgPSBodWdlX2dlbV9vYmplY3QoaTkxNSwg cGh5c19zeiwgc3opOworCQlpZiAoSVNfRVJSKHNyYykpIHsKKwkJCWVyciA9IFBUUl9FUlIoc3Jj KTsKKwkJCWdvdG8gZXJyX2ZsdXNoOworCQl9CisKKwkJdmFkZHIgPSBpOTE1X2dlbV9vYmplY3Rf cGluX21hcChzcmMsIEk5MTVfTUFQX1dCKTsKKwkJaWYgKElTX0VSUih2YWRkcikpIHsKKwkJCWVy ciA9IFBUUl9FUlIodmFkZHIpOworCQkJZ290byBlcnJfcHV0X3NyYzsKKwkJfQorCisJCW1lbXNl dDMyKHZhZGRyLCB2YWwsCisJCQkgaHVnZV9nZW1fb2JqZWN0X3BoeXNfc2l6ZShzcmMpIC8gc2l6 ZW9mKHUzMikpOworCisJCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoc3JjKTsKKworCQlpZiAo IShzcmMtPmNhY2hlX2NvaGVyZW50ICYgSTkxNV9CT19DQUNIRV9DT0hFUkVOVF9GT1JfUkVBRCkp CisJCQlzcmMtPmNhY2hlX2RpcnR5ID0gdHJ1ZTsKKworCQlkc3QgPSBodWdlX2dlbV9vYmplY3Qo aTkxNSwgcGh5c19zeiwgc3opOworCQlpZiAoSVNfRVJSKGRzdCkpIHsKKwkJCWVyciA9IFBUUl9F UlIoZHN0KTsKKwkJCWdvdG8gZXJyX3B1dF9zcmM7CisJCX0KKworCQl2YWRkciA9IGk5MTVfZ2Vt X29iamVjdF9waW5fbWFwKGRzdCwgSTkxNV9NQVBfV0IpOworCQlpZiAoSVNfRVJSKHZhZGRyKSkg eworCQkJZXJyID0gUFRSX0VSUih2YWRkcik7CisJCQlnb3RvIGVycl9wdXRfZHN0OworCQl9CisK KwkJbWVtc2V0MzIodmFkZHIsIHZhbCBeIDB4ZGVhZGJlYWYsCisJCQkgaHVnZV9nZW1fb2JqZWN0 X3BoeXNfc2l6ZShkc3QpIC8gc2l6ZW9mKHUzMikpOworCisJCWlmICghKGRzdC0+Y2FjaGVfY29o ZXJlbnQgJiBJOTE1X0JPX0NBQ0hFX0NPSEVSRU5UX0ZPUl9XUklURSkpCisJCQlkc3QtPmNhY2hl X2RpcnR5ID0gdHJ1ZTsKKworCQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK KwkJZXJyID0gaTkxNV9nZW1fb2JqZWN0X2NvcHlfYmx0KHNyYywgZHN0LCBjZSk7CisJCW11dGV4 X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJCWlmIChlcnIpCisJCQlnb3RvIGVy cl91bnBpbjsKKworCQlpOTE1X2dlbV9vYmplY3RfbG9jayhkc3QpOworCQllcnIgPSBpOTE1X2dl bV9vYmplY3Rfc2V0X3RvX2NwdV9kb21haW4oZHN0LCBmYWxzZSk7CisJCWk5MTVfZ2VtX29iamVj dF91bmxvY2soZHN0KTsKKwkJaWYgKGVycikKKwkJCWdvdG8gZXJyX3VucGluOworCisJCWZvciAo aSA9IDA7IGkgPCBodWdlX2dlbV9vYmplY3RfcGh5c19zaXplKGRzdCkgLyBzaXplb2YodTMyKTsg KytpKSB7CisJCQlpZiAodmFkZHJbaV0gIT0gdmFsKSB7CisJCQkJcHJfZXJyKCJ2YWRkclsldV09 JXgsIGV4cGVjdGVkPSV4XG4iLCBpLAorCQkJCSAgICAgICB2YWRkcltpXSwgdmFsKTsKKwkJCQll cnIgPSAtRUlOVkFMOworCQkJCWdvdG8gZXJyX3VucGluOworCQkJfQorCQl9CisKKwkJaTkxNV9n ZW1fb2JqZWN0X3VucGluX21hcChkc3QpOworCisJCWk5MTVfZ2VtX29iamVjdF9wdXQoc3JjKTsK KwkJaTkxNV9nZW1fb2JqZWN0X3B1dChkc3QpOworCX0gd2hpbGUgKCF0aW1lX2FmdGVyKGppZmZp ZXMsIGVuZCkpOworCisJZ290byBlcnJfZmx1c2g7CisKK2Vycl91bnBpbjoKKwlpOTE1X2dlbV9v YmplY3RfdW5waW5fbWFwKGRzdCk7CitlcnJfcHV0X2RzdDoKKwlpOTE1X2dlbV9vYmplY3RfcHV0 KGRzdCk7CitlcnJfcHV0X3NyYzoKKwlpOTE1X2dlbV9vYmplY3RfcHV0KHNyYyk7CitlcnJfZmx1 c2g6CisJaWYgKGVyciA9PSAtRU5PTUVNKQorCQllcnIgPSAwOworCisJcmV0dXJuIGVycjsKK30K KwogaW50IGk5MTVfZ2VtX29iamVjdF9ibHRfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCiB7CiAJc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3N1YnRlc3QgdGVz dHNbXSA9IHsKIAkJU1VCVEVTVChpZ3RfZmlsbF9ibHQpLAorCQlTVUJURVNUKGlndF9jb3B5X2Js dCksCiAJfTsKIAogCWlmIChpbnRlbF9ndF9pc193ZWRnZWQoJmk5MTUtPmd0KSkKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2dwdV9jb21tYW5kcy5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3B1X2NvbW1hbmRzLmgKaW5kZXggNjlmMzQ3MzczMjVm Li5hZjdiOWQyNzIxNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2dwdV9jb21tYW5kcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2dwdV9j b21tYW5kcy5oCkBAIC0xODgsOCArMTg4LDkgQEAKIAogI2RlZmluZSBDT0xPUl9CTFRfQ01ECQkJ KDI8PDI5IHwgMHg0MDw8MjIgfCAoNS0yKSkKICNkZWZpbmUgWFlfQ09MT1JfQkxUX0NNRAkJKDIg PDwgMjkgfCAweDUwIDw8IDIyKQotI2RlZmluZSBTUkNfQ09QWV9CTFRfQ01ECQkoKDI8PDI5KXwo MHg0Mzw8MjIpfDQpCi0jZGVmaW5lIFhZX1NSQ19DT1BZX0JMVF9DTUQJCSgoMjw8MjkpfCgweDUz PDwyMil8NikKKyNkZWZpbmUgU1JDX0NPUFlfQkxUX0NNRAkJKCgyPDwyOSl8KDB4NDM8PDIyKSkK KyNkZWZpbmUgR0VOOV9YWV9GQVNUX0NPUFlfQkxUX0NNRAkoKDI8PDI5KXwoMHg0Mjw8MjIpKQor I2RlZmluZSBYWV9TUkNfQ09QWV9CTFRfQ01ECQkoKDI8PDI5KXwoMHg1Mzw8MjIpKQogI2RlZmlu ZSBYWV9NT05PX1NSQ19DT1BZX0lNTV9CTFQJKCgyPDwyOSl8KDB4NzE8PDIyKXw1KQogI2RlZmlu ZSAgIEJMVF9XUklURV9BCQkJKDI8PDIwKQogI2RlZmluZSAgIEJMVF9XUklURV9SR0IJCQkoMTw8 MjApCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVy LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMKaW5kZXggNzhi NDIzNWY5YzBmLi5mMTA5YTE3MzZlZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX3JpbmdidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9yaW5nYnVmZmVyLmMKQEAgLTExMzYsNyArMTEzNiw3IEBAIGk4MzBfZW1pdF9iYl9zdGFydChz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKIAkJICogc3RhYmxlIGJhdGNoIHNjcmF0Y2ggYm8gYXJl YSAoc28gdGhhdCB0aGUgQ1MgbmV2ZXIKIAkJICogc3R1bWJsZXMgb3ZlciBpdHMgdGxiIGludmFs aWRhdGlvbiBidWcpIC4uLgogCQkgKi8KLQkJKmNzKysgPSBTUkNfQ09QWV9CTFRfQ01EIHwgQkxU X1dSSVRFX1JHQkE7CisJCSpjcysrID0gU1JDX0NPUFlfQkxUX0NNRCB8IEJMVF9XUklURV9SR0JB IHwgKDYgLSAyKTsKIAkJKmNzKysgPSBCTFRfREVQVEhfMzIgfCBCTFRfUk9QX1NSQ19DT1BZIHwg NDA5NjsKIAkJKmNzKysgPSBESVZfUk9VTkRfVVAobGVuLCA0MDk2KSA8PCAxNiB8IDQwOTY7CiAJ CSpjcysrID0gY3Nfb2Zmc2V0OwotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWw=