From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id BB68D6E8D6 for ; Fri, 29 Nov 2019 10:38:58 +0000 (UTC) From: Imre Deak Date: Fri, 29 Nov 2019 12:38:42 +0200 Message-Id: <20191129103843.5765-6-imre.deak@intel.com> In-Reply-To: <20191129103843.5765-1-imre.deak@intel.com> References: <20191129103843.5765-1-imre.deak@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 5/6] lib: Add vebox copy support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Brian Welty List-ID: VG8gcHJvZHVjZSBzdXJmYWNlcyB0aGF0IGFyZSBjb21wcmVzc2VkIHVzaW5nIHRoZSBtZWRpYSBj b21wcmVzc2lvbgpmb3JtYXQgd2UgbmVlZCB0byB1c2Ugb25lIG9mIHRoZSBtZWRpYSBlbmdpbmVz LiBUaGUgc2ltcGxlc3Qgd2F5IGZvcgp0aGlzIGlzIHRvIHVzZSB0aGUgdmVib3ggZW5naW5lJ3Mg dGlsaW5nIGNvbnZlcnQgY29tbWFuZCwgc28gYWRkIHN1cHBvcnQKZm9yIHRoaXMuCgpDYzogTWlr YSBLYWhvbGEgPG1pa2Eua2Fob2xhQGludGVsLmNvbT4KQ2M6IEJyaWFuIFdlbHR5IDxicmlhbi53 ZWx0eUBpbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51 az4KQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ClNp Z25lZC1vZmYtYnk6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KLS0tCiBsaWIvTWFr ZWZpbGUuc291cmNlcyAgICAgICAgIHwgICAxICsKIGxpYi9pZ3RfZmIuYyAgICAgICAgICAgICAg ICAgfCAgNzQgKysrKysrKy0tLQogbGliL2ludGVsX2F1eF9wZ3RhYmxlLmMgICAgICB8ICAxMCAr LQogbGliL2ludGVsX2F1eF9wZ3RhYmxlLmggICAgICB8ICAgMyArLQogbGliL2ludGVsX2JhdGNo YnVmZmVyLmMgICAgICB8ICAxMSArKwogbGliL2ludGVsX2JhdGNoYnVmZmVyLmggICAgICB8ICAz MCArKystCiBsaWIvaW50ZWxfcmVnLmggICAgICAgICAgICAgIHwgICAxICsKIGxpYi9pb2N0bF93 cmFwcGVycy5oICAgICAgICAgfCAgIDEgKwogbGliL21lc29uLmJ1aWxkICAgICAgICAgICAgICB8 ICAgMSArCiBsaWIvcmVuZGVyY29weV9nZW45LmMgICAgICAgIHwgICAyICstCiBsaWIvdmVib3hj b3B5LmggICAgICAgICAgICAgIHwgICA5ICsrCiBsaWIvdmVib3hjb3B5X2dlbjEyLmMgICAgICAg IHwgMjY5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy9pOTE1L2dl bV9yZW5kZXJfY29weS5jIHwgICAxICsKIDEzIGZpbGVzIGNoYW5nZWQsIDM4NyBpbnNlcnRpb25z KCspLCAyNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdmVib3hjb3B5LmgK IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdmVib3hjb3B5X2dlbjEyLmMKCmRpZmYgLS1naXQgYS9s aWIvTWFrZWZpbGUuc291cmNlcyBiL2xpYi9NYWtlZmlsZS5zb3VyY2VzCmluZGV4IDlkMWE0ZTA2 Li4wZWZhZWExYiAxMDA2NDQKLS0tIGEvbGliL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvbGliL01h a2VmaWxlLnNvdXJjZXMKQEAgLTEyOSw2ICsxMjksNyBAQCBsaWJfc291cmNlX2xpc3QgPQkgCVwK IAlpZ3RfdmM0LmgJCVwKIAlpZ3RfYW1kLmMJCVwKIAlpZ3RfYW1kLmgJCVwKKwl2ZWJveGNvcHlf Z2VuMTIuYwlcCiAJJChOVUxMKQogCiAuUEhPTlk6IHZlcnNpb24uaC50bXAKZGlmZiAtLWdpdCBh L2xpYi9pZ3RfZmIuYyBiL2xpYi9pZ3RfZmIuYwppbmRleCAxZDFlMGQyMi4uM2JiNGU1YTEgMTAw NjQ0Ci0tLSBhL2xpYi9pZ3RfZmIuYworKysgYi9saWIvaWd0X2ZiLmMKQEAgLTQwMiw2ICs0MDIs NyBAQCB2b2lkIGlndF9nZXRfZmJfdGlsZV9zaXplKGludCBmZCwgdWludDY0X3QgbW9kaWZpZXIs IGludCBmYl9icHAsCiAJY2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRDoKIAljYXNl IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUzoKIAljYXNlIExPQ0FMX0k5MTVfRk9S TUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDUzoKKwljYXNlIExPQ0FMX0k5MTVfRk9STUFUX01P RF9ZX1RJTEVEX0dFTjEyX01DX0NDUzoKIAkJaWd0X3JlcXVpcmVfaW50ZWwoZmQpOwogCQlpZiAo aW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKSA9PSAyKSB7CiAJCQkqd2lkdGhfcmV0 ID0gMTI4OwpAQCAtNDY2LDE0ICs0NjcsMTkgQEAgdm9pZCBpZ3RfZ2V0X2ZiX3RpbGVfc2l6ZShp bnQgZmQsIHVpbnQ2NF90IG1vZGlmaWVyLCBpbnQgZmJfYnBwLAogCX0KIH0KIAorc3RhdGljIGJv b2wgaXNfZ2VuMTJfbWNfY2NzX21vZGlmaWVyKHVpbnQ2NF90IG1vZGlmaWVyKQoreworCXJldHVy biBtb2RpZmllciA9PSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1M7 Cit9CisKIHN0YXRpYyBib29sIGlzX2dlbjEyX2Njc19tb2RpZmllcih1aW50NjRfdCBtb2RpZmll cikKIHsKLQlyZXR1cm4gbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJf UkNfQ0NTOworCXJldHVybiBpc19nZW4xMl9tY19jY3NfbW9kaWZpZXIobW9kaWZpZXIpIHx8CisJ CW1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDUzsKIH0KIAog c3RhdGljIGJvb2wgaXNfY2NzX21vZGlmaWVyKHVpbnQ2NF90IG1vZGlmaWVyKQogewotCiAJcmV0 dXJuIGlzX2dlbjEyX2Njc19tb2RpZmllcihtb2RpZmllcikgfHwKIAkJbW9kaWZpZXIgPT0gSTkx NV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTIHx8CiAJCW1vZGlmaWVyID09IEk5MTVfRk9STUFUX01P RF9ZZl9USUxFRF9DQ1M7CkBAIC03MTksNiArNzI1LDcgQEAgdWludDY0X3QgaWd0X2ZiX21vZF90 b190aWxpbmcodWludDY0X3QgbW9kaWZpZXIpCiAJY2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0Rf WV9USUxFRDoKIAljYXNlIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUzoKIAljYXNl IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDUzoKKwljYXNlIExPQ0FM X0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX01DX0NDUzoKIAkJcmV0dXJuIEk5MTVfVElM SU5HX1k7CiAJY2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ6CiAJY2FzZSBMT0NB TF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTOgpAQCAtMTg5Nyw3ICsxOTA0LDcgQEAgc3Rh dGljIGJvb2wgYmxpdHRlcl9vayhjb25zdCBzdHJ1Y3QgaWd0X2ZiICpmYikKIAlyZXR1cm4gdHJ1 ZTsKIH0KIAotc3RhdGljIGJvb2wgdXNlX3JlbmRlcmNvcHkoY29uc3Qgc3RydWN0IGlndF9mYiAq ZmIpCitzdGF0aWMgYm9vbCB1c2VfZW5naW5lY29weShjb25zdCBzdHJ1Y3QgaWd0X2ZiICpmYikK IHsKIAlyZXR1cm4gaXNfY2NzX21vZGlmaWVyKGZiLT5tb2RpZmllcikgfHwKIAkJKGZiLT5tb2Rp ZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQgJiYKQEAgLTE5NDMsMjUgKzE5NTAsNTIg QEAgc3RhdGljIHZvaWQgZmluaV9idWYoc3RydWN0IGlndF9idWYgKmJ1ZikKIAlkcm1faW50ZWxf Ym9fdW5yZWZlcmVuY2UoYnVmLT5ibyk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlbmRlcmNvcHkoc3Ry dWN0IGZiX2JsaXRfdXBsb2FkICpibGl0LAotCQkgICAgICAgY29uc3Qgc3RydWN0IGlndF9mYiAq ZHN0X2ZiLAotCQkgICAgICAgY29uc3Qgc3RydWN0IGlndF9mYiAqc3JjX2ZiKQorLyoqCisgKiBj b3B5X3dpdGhfZW5naW5lOgorICogQGJsaXQ6IGNvbnRleHQgZm9yIHRoZSBjb3B5IG9wZXJhdGlv bgorICogQGRzdF9mYjogZGVzdGluYXRpb24gYnVmZmVyCisgKiBAc3JjX2ZiOiBzb3VyY2UgYnVm ZmVyCisgKgorICogQ29weSBAc3JjX2ZiIHRvIEBkc3RfZmIgdXNpbmcgZWl0aGVyIHRoZSByZW5k ZXIgb3IgdmVib3ggZW5naW5lLiBUaGUgZW5naW5lCisgKiBpcyBzZWxlY3RlZCBiYXNlZCBvbiB0 aGUgY29tcHJlc3Npb24gc3VyZmFjZSBmb3JtYXQgcmVxdWlyZWQgYnkgdGhlIEBkc3RfZmIKKyAq IEZCIG1vZGlmaWVyLiBPbiBHRU4xMisgYSBnaXZlbiBjb21wcmVzc2lvbiBmb3JtYXQgKHJlbmRl ciBvciBtZWRpYSkgY2FuIGJlCisgKiBwcm9kdWNlZCBvbmx5IGJ5IHRoZSBzZWxlY3RlZCBlbmdp bmU6CisgKiAtIEZvciBHRU4xMiBtZWRpYSBjb21wcmVzc2VkOiB2ZWJveCBlbmdpbmUKKyAqIC0g Rm9yIHVuY29tcHJlc3NlZCwgcHJlLUdFTjEyIGNvbXByZXNzZWQsIEdFTjEyKyByZW5kZXIgY29t cHJlc3NlZDogcmVuZGVyIGVuZ2luZQorICogTm90ZSB0aGF0IGJvdGggR0VOMTIgZW5naW5lIGlz IGNhcGFibGUgb2YgcmVhZGluZyBlaXRoZXIgY29tcHJlc3Npb24gZm9ybWF0cy4KKyAqLworc3Rh dGljIHZvaWQgY29weV93aXRoX2VuZ2luZShzdHJ1Y3QgZmJfYmxpdF91cGxvYWQgKmJsaXQsCisJ CQkgICAgIGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmRzdF9mYiwKKwkJCSAgICAgY29uc3Qgc3RydWN0 IGlndF9mYiAqc3JjX2ZiKQogewogCXN0cnVjdCBpZ3RfYnVmIHNyYyA9IHt9LCBkc3QgPSB7fTsK LQlpZ3RfcmVuZGVyX2NvcHlmdW5jX3QgcmVuZGVyX2NvcHkgPQotCQlpZ3RfZ2V0X3JlbmRlcl9j b3B5ZnVuYyhpbnRlbF9nZXRfZHJtX2RldmlkKGJsaXQtPmZkKSk7CisJaWd0X3JlbmRlcl9jb3B5 ZnVuY190IHJlbmRlcl9jb3B5ID0gTlVMTDsKKwlpZ3RfdmVib3hfY29weWZ1bmNfdCB2ZWJveF9j b3B5ID0gTlVMTDsKKworCWlmIChpc19nZW4xMl9tY19jY3NfbW9kaWZpZXIoZHN0X2ZiLT5tb2Rp ZmllcikpCisJCXZlYm94X2NvcHkgPSBpZ3RfZ2V0X3ZlYm94X2NvcHlmdW5jKGludGVsX2dldF9k cm1fZGV2aWQoYmxpdC0+ZmQpKTsKKwllbHNlCisJCXJlbmRlcl9jb3B5ID0gaWd0X2dldF9yZW5k ZXJfY29weWZ1bmMoaW50ZWxfZ2V0X2RybV9kZXZpZChibGl0LT5mZCkpOwogCi0JaWd0X3JlcXVp cmUocmVuZGVyX2NvcHkpOworCWlndF9yZXF1aXJlKHZlYm94X2NvcHkgfHwgcmVuZGVyX2NvcHkp OwogCiAJaWd0X2Fzc2VydF9lcShkc3RfZmItPm9mZnNldHNbMF0sIDApOwogCWlndF9hc3NlcnRf ZXEoc3JjX2ZiLT5vZmZzZXRzWzBdLCAwKTsKIAotCWluaXRfYnVmKGJsaXQsICZzcmMsIHNyY19m YiwgImNhaXJvIHJlbmRlcmNvcHkgc3JjIik7Ci0JaW5pdF9idWYoYmxpdCwgJmRzdCwgZHN0X2Zi LCAiY2Fpcm8gcmVuZGVyY29weSBkc3QiKTsKKwlpbml0X2J1ZihibGl0LCAmc3JjLCBzcmNfZmIs ICJjYWlybyBlbmdpbmVjb3B5IHNyYyIpOworCWluaXRfYnVmKGJsaXQsICZkc3QsIGRzdF9mYiwg ImNhaXJvIGVuZ2luZWNvcHkgZHN0Iik7CiAKLQlyZW5kZXJfY29weShibGl0LT5iYXRjaCwgTlVM TCwKLQkJICAgICZzcmMsIDAsIDAsIGRzdF9mYi0+cGxhbmVfd2lkdGhbMF0sIGRzdF9mYi0+cGxh bmVfaGVpZ2h0WzBdLAotCQkgICAgJmRzdCwgMCwgMCk7CisJaWYgKHZlYm94X2NvcHkpCisJCXZl Ym94X2NvcHkoYmxpdC0+YmF0Y2gsICZzcmMsCisJCQkgICBkc3RfZmItPnBsYW5lX3dpZHRoWzBd LCBkc3RfZmItPnBsYW5lX2hlaWdodFswXSwKKwkJCSAgICZkc3QpOworCWVsc2UKKwkJcmVuZGVy X2NvcHkoYmxpdC0+YmF0Y2gsIE5VTEwsCisJCQkgICAgJnNyYywKKwkJCSAgICAwLCAwLAorCQkJ ICAgIGRzdF9mYi0+cGxhbmVfd2lkdGhbMF0sIGRzdF9mYi0+cGxhbmVfaGVpZ2h0WzBdLAorCQkJ ICAgICZkc3QsCisJCQkgICAgMCwgMCk7CiAKIAlmaW5pX2J1ZigmZHN0KTsKIAlmaW5pX2J1Zigm c3JjKTsKQEAgLTIwMTIsNyArMjA0Niw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfbGluZWFyX21hcHBp bmcoc3RydWN0IGZiX2JsaXRfdXBsb2FkICpibGl0KQogCQkJSTkxNV9HRU1fRE9NQUlOX0dUVCwg MCk7CiAKIAkJaWYgKGJsaXQtPmJhdGNoKQotCQkJcmVuZGVyY29weShibGl0LCBmYiwgJmxpbmVh ci0+ZmIpOworCQkJY29weV93aXRoX2VuZ2luZShibGl0LCBmYiwgJmxpbmVhci0+ZmIpOwogCQll bHNlCiAJCQlibGl0Y29weShmYiwgJmxpbmVhci0+ZmIpOwogCkBAIC0yMDQzLDcgKzIwNzcsNyBA QCBzdGF0aWMgdm9pZCBzZXR1cF9saW5lYXJfbWFwcGluZyhzdHJ1Y3QgZmJfYmxpdF91cGxvYWQg KmJsaXQpCiAJc3RydWN0IGlndF9mYiAqZmIgPSBibGl0LT5mYjsKIAlzdHJ1Y3QgZmJfYmxpdF9s aW5lYXIgKmxpbmVhciA9ICZibGl0LT5saW5lYXI7CiAKLQlpZiAoIWlndF92YzRfaXNfdGlsZWQo ZmItPm1vZGlmaWVyKSAmJiB1c2VfcmVuZGVyY29weShmYikpIHsKKwlpZiAoIWlndF92YzRfaXNf dGlsZWQoZmItPm1vZGlmaWVyKSAmJiB1c2VfZW5naW5lY29weShmYikpIHsKIAkJYmxpdC0+YnVm bWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChmZCwgNDA5Nik7CiAJCWJsaXQtPmJhdGNo ID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxsb2MoYmxpdC0+YnVmbWdyLAogCQkJCQkJICAgICAgaW50 ZWxfZ2V0X2RybV9kZXZpZChmZCkpOwpAQCAtMjA3OSw3ICsyMTEzLDcgQEAgc3RhdGljIHZvaWQg c2V0dXBfbGluZWFyX21hcHBpbmcoc3RydWN0IGZiX2JsaXRfdXBsb2FkICpibGl0KQogCQkJCUk5 MTVfR0VNX0RPTUFJTl9HVFQsIDApOwogCiAJCWlmIChibGl0LT5iYXRjaCkKLQkJCXJlbmRlcmNv cHkoYmxpdCwgJmxpbmVhci0+ZmIsIGZiKTsKKwkJCWNvcHlfd2l0aF9lbmdpbmUoYmxpdCwgJmxp bmVhci0+ZmIsIGZiKTsKIAkJZWxzZQogCQkJYmxpdGNvcHkoJmxpbmVhci0+ZmIsIGZiKTsKIApA QCAtMzE4NSw3ICszMjE5LDggQEAgc3RhdGljIHZvaWQgY3JlYXRlX2NhaXJvX3N1cmZhY2VfX2Nv bnZlcnQoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYikKIAkJCQkJCQkgICAgICZibGl0LT5zaGFk b3dfZmIpOwogCWlndF9hc3NlcnQoYmxpdC0+c2hhZG93X3B0cik7CiAKLQlpZiAodXNlX3JlbmRl cmNvcHkoZmIpIHx8IHVzZV9ibGl0dGVyKGZiKSB8fCBpZ3RfdmM0X2lzX3RpbGVkKGZiLT5tb2Rp ZmllcikpIHsKKwlpZiAodXNlX2VuZ2luZWNvcHkoZmIpIHx8IHVzZV9ibGl0dGVyKGZiKSB8fAor CSAgICBpZ3RfdmM0X2lzX3RpbGVkKGZiLT5tb2RpZmllcikpIHsKIAkJc2V0dXBfbGluZWFyX21h cHBpbmcoJmJsaXQtPmJhc2UpOwogCX0gZWxzZSB7CiAJCWJsaXQtPmJhc2UubGluZWFyLmZiID0g KmZiOwpAQCAtMzI2OCw3ICszMzAzLDggQEAgY2Fpcm9fc3VyZmFjZV90ICppZ3RfZ2V0X2NhaXJv X3N1cmZhY2UoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYikKIAlpZiAoZmItPmNhaXJvX3N1cmZh Y2UgPT0gTlVMTCkgewogCQlpZiAodXNlX2NvbnZlcnQoZmIpKQogCQkJY3JlYXRlX2NhaXJvX3N1 cmZhY2VfX2NvbnZlcnQoZmQsIGZiKTsKLQkJZWxzZSBpZiAodXNlX2JsaXR0ZXIoZmIpIHx8IHVz ZV9yZW5kZXJjb3B5KGZiKSB8fCBpZ3RfdmM0X2lzX3RpbGVkKGZiLT5tb2RpZmllcikpCisJCWVs c2UgaWYgKHVzZV9ibGl0dGVyKGZiKSB8fCB1c2VfZW5naW5lY29weShmYikgfHwKKwkJCSBpZ3Rf dmM0X2lzX3RpbGVkKGZiLT5tb2RpZmllcikpCiAJCQljcmVhdGVfY2Fpcm9fc3VyZmFjZV9fZ3B1 KGZkLCBmYik7CiAJCWVsc2UKIAkJCWNyZWF0ZV9jYWlyb19zdXJmYWNlX19ndHQoZmQsIGZiKTsK ZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9hdXhfcGd0YWJsZS5jIGIvbGliL2ludGVsX2F1eF9wZ3Rh YmxlLmMKaW5kZXggMmYyMmJiMzkuLmNiYjNjMzIwIDEwMDY0NAotLS0gYS9saWIvaW50ZWxfYXV4 X3BndGFibGUuYworKysgYi9saWIvaW50ZWxfYXV4X3BndGFibGUuYwpAQCAtNTU1LDE2ICs1NTUs MjAgQEAgZ2VuMTJfY3JlYXRlX2F1eF9wZ3RhYmxlX3N0YXRlKHN0cnVjdCBpbnRlbF9iYXRjaGJ1 ZmZlciAqYmF0Y2gsCiB9CiAKIHZvaWQKLWdlbjEyX2VtaXRfYXV4X3BndGFibGVfc3RhdGUoc3Ry dWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwgdWludDMyX3Qgc3RhdGUpCitnZW4xMl9lbWl0 X2F1eF9wZ3RhYmxlX3N0YXRlKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsIHVpbnQz Ml90IHN0YXRlLAorCQkJICAgICBib29sIHJlbmRlcikKIHsKKwl1aW50MzJfdCB0YWJsZV9iYXNl X3JlZyA9IHJlbmRlciA/IEdFTjEyX0dGWF9BVVhfVEFCTEVfQkFTRV9BRERSIDoKKwkJCQkJICAg R0VOMTJfVkVCT1hfQVVYX1RBQkxFX0JBU0VfQUREUjsKKwogCWlmICghc3RhdGUpCiAJCXJldHVy bjsKIAogCU9VVF9CQVRDSChNSV9MT0FEX1JFR0lTVEVSX01FTV9HRU44IHwgTUlfTU1JT19SRU1B UF9FTkFCTEVfR0VOMTIpOwotCU9VVF9CQVRDSChHRU4xMl9HRlhfQVVYX1RBQkxFX0JBU0VfQURE Uik7CisJT1VUX0JBVENIKHRhYmxlX2Jhc2VfcmVnKTsKIAlPVVRfUkVMT0MoYmF0Y2gtPmJvLCAw LCAwLCBzdGF0ZSk7CiAKIAlPVVRfQkFUQ0goTUlfTE9BRF9SRUdJU1RFUl9NRU1fR0VOOCB8IE1J X01NSU9fUkVNQVBfRU5BQkxFX0dFTjEyKTsKLQlPVVRfQkFUQ0goR0VOMTJfR0ZYX0FVWF9UQUJM RV9CQVNFX0FERFIgKyA0KTsKKwlPVVRfQkFUQ0godGFibGVfYmFzZV9yZWcgKyA0KTsKIAlPVVRf UkVMT0MoYmF0Y2gtPmJvLCAwLCAwLCBzdGF0ZSArIDQpOwogfQpkaWZmIC0tZ2l0IGEvbGliL2lu dGVsX2F1eF9wZ3RhYmxlLmggYi9saWIvaW50ZWxfYXV4X3BndGFibGUuaAppbmRleCAyMDI3OGRi MC4uYWM4MmI3ZDIgMTAwNjQ0Ci0tLSBhL2xpYi9pbnRlbF9hdXhfcGd0YWJsZS5oCisrKyBiL2xp Yi9pbnRlbF9hdXhfcGd0YWJsZS5oCkBAIC0zMCw2ICszMCw3IEBAIHVpbnQzMl90CiBnZW4xMl9j cmVhdGVfYXV4X3BndGFibGVfc3RhdGUoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwK IAkJCSAgICAgICBkcm1faW50ZWxfYm8gKmF1eF9wZ3RhYmxlX2JvKTsKIHZvaWQKLWdlbjEyX2Vt aXRfYXV4X3BndGFibGVfc3RhdGUoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwgdWlu dDMyX3Qgc3RhdGUpOworZ2VuMTJfZW1pdF9hdXhfcGd0YWJsZV9zdGF0ZShzdHJ1Y3QgaW50ZWxf YmF0Y2hidWZmZXIgKmJhdGNoLCB1aW50MzJfdCBzdGF0ZSwKKwkJCSAgICAgYm9vbCByZW5kZXIp OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jIGIvbGliL2lu dGVsX2JhdGNoYnVmZmVyLmMKaW5kZXggMzgyOGJhNzUuLjUxYWFlNGRjIDEwMDY0NAotLS0gYS9s aWIvaW50ZWxfYmF0Y2hidWZmZXIuYworKysgYi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYwpAQCAt MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImludGVsX2J1Zm1nci5oIgogI2luY2x1ZGUgImludGVs X2NoaXBzZXQuaCIKICNpbmNsdWRlICJpbnRlbF9yZWcuaCIKKyNpbmNsdWRlICJ2ZWJveGNvcHku aCIKICNpbmNsdWRlICJyZW5kZXJjb3B5LmgiCiAjaW5jbHVkZSAibWVkaWFfZmlsbC5oIgogI2lu Y2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCkBAIC04NTAsNiArODUxLDE2IEBAIGlndF9yZW5kZXJf Y29weWZ1bmNfdCBpZ3RfZ2V0X3JlbmRlcl9jb3B5ZnVuYyhpbnQgZGV2aWQpCiAJcmV0dXJuIGNv cHk7CiB9CiAKK2lndF92ZWJveF9jb3B5ZnVuY190IGlndF9nZXRfdmVib3hfY29weWZ1bmMoaW50 IGRldmlkKQoreworCWlndF92ZWJveF9jb3B5ZnVuY190IGNvcHkgPSBOVUxMOworCisJaWYgKElT X0dFTjEyKGRldmlkKSkKKwkJY29weSA9IGdlbjEyX3ZlYm94X2NvcHlmdW5jOworCisJcmV0dXJu IGNvcHk7Cit9CisKIC8qKgogICogaWd0X2dldF9tZWRpYV9maWxsZnVuYzoKICAqIEBkZXZpZDog cGNpIGRldmljZSBpZApkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2JhdGNoYnVmZmVyLmggYi9saWIv aW50ZWxfYmF0Y2hidWZmZXIuaAppbmRleCA0MDJlNjhiYy4uZTA1ZTQ2NGIgMTAwNjQ0Ci0tLSBh L2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oCisrKyBiL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oCkBA IC0yMTMsNiArMjEzLDcgQEAgdm9pZCBpbnRlbF9jb3B5X2JvKHN0cnVjdCBpbnRlbF9iYXRjaGJ1 ZmZlciAqYmF0Y2gsCiBlbnVtIGk5MTVfY29tcHJlc3Npb24gewogCUk5MTVfQ09NUFJFU1NJT05f Tk9ORSwKIAlJOTE1X0NPTVBSRVNTSU9OX1JFTkRFUiwKKwlJOTE1X0NPTVBSRVNTSU9OX01FRElB LAogfTsKIAogLyoqCkBAIC0yMjAsMTggKzIyMSwyMCBAQCBlbnVtIGk5MTVfY29tcHJlc3Npb24g ewogICogQGJvOiB1bmRlcmx5aW5nIGxpYmRybSBidWZmZXIgb2JqZWN0CiAgKiBAc3RyaWRlOiBz dHJpZGUgb2YgdGhlIGJ1ZmZlcgogICogQHRpbGluZzogdGlsaW5nIG1vZGUgYml0cworICogQGNv bXByZXNzaW9uOiBtZW1vcnkgY29tcHJlc3Npb24gbW9kZQogICogQGJwcDogYml0cyBwZXIgcGl4 ZWwsIDgsIDE2IG9yIDMyLgogICogQGRhdGE6IHBvaW50ZXIgdG8gdGhlIG1lbW9yeSBtYXBwaW5n IG9mIHRoZSBidWZmZXIKICAqIEBzaXplOiBzaXplIG9mIHRoZSBidWZmZXIgb2JqZWN0CiAgKgog ICogVGhpcyBpcyBhIGktZy10IGJ1ZmZlciBvYmplY3Qgd3JhcHBlciBzdHJ1Y3R1cmUgd2hpY2gg YXVnbWVudHMgdGhlIGJhc2VsaW5lCi0gKiBsaWJkcm0gYnVmZmVyIG9iamVjdCB3aXRoIHN1aXRh YmxlIGRhdGEgbmVlZGVkIGJ5IHRoZSByZW5kZXIgY29weSBhbmQgdGhlCi0gKiBmaWxsIGZ1bmN0 aW9ucy4KKyAqIGxpYmRybSBidWZmZXIgb2JqZWN0IHdpdGggc3VpdGFibGUgZGF0YSBuZWVkZWQg YnkgdGhlIHJlbmRlci92ZWJveCBjb3B5IGFuZAorICogdGhlIGZpbGwgZnVuY3Rpb25zLgogICov CiBzdHJ1Y3QgaWd0X2J1ZiB7CiAJZHJtX2ludGVsX2JvICpibzsKIAl1aW50MzJfdCBzdHJpZGU7 CiAJdWludDMyX3QgdGlsaW5nOworCWVudW0gaTkxNV9jb21wcmVzc2lvbiBjb21wcmVzc2lvbjsK IAl1aW50MzJfdCBicHA7CiAJdWludDMyX3QgKmRhdGE7CiAJdWludDMyX3Qgc2l6ZTsKQEAgLTMw NCw2ICszMDcsMjkgQEAgdHlwZWRlZiB2b2lkICgqaWd0X3JlbmRlcl9jb3B5ZnVuY190KShzdHJ1 Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAogCiBpZ3RfcmVuZGVyX2NvcHlmdW5jX3QgaWd0 X2dldF9yZW5kZXJfY29weWZ1bmMoaW50IGRldmlkKTsKIAorCisvKioKKyAqIGlndF92ZWJveF9j b3B5ZnVuY190OgorICogQGJhdGNoOiBiYXRjaGJ1ZmZlciBvYmplY3QKKyAqIEBzcmM6IHNvdXJj ZSBpLWctdCBidWZmZXIgb2JqZWN0CisgKiBAd2lkdGg6IHdpZHRoIG9mIHRoZSBjb3BpZWQgcmVj dGFuZ2xlCisgKiBAaGVpZ2h0OiBoZWlnaHQgb2YgdGhlIGNvcGllZCByZWN0YW5nbGUKKyAqIEBk c3Q6IGRlc3RpbmF0aW9uIGktZy10IGJ1ZmZlciBvYmplY3QKKyAqCisgKiBUaGlzIGlzIHRoZSB0 eXBlIG9mIHRoZSBwZXItcGxhdGZvcm0gdmVib3ggY29weSBmdW5jdGlvbnMuIFRoZQorICogcGxh dGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gY2FuIGJlIG9idGFpbmVkIGJ5IGNhbGxpbmcK KyAqIGlndF9nZXRfdmVib3hfY29weWZ1bmMoKS4KKyAqCisgKiBBIHZlYm94IGNvcHkgZnVuY3Rp b24gd2lsbCBlbWl0IGEgYmF0Y2hidWZmZXIgdG8gdGhlIGtlcm5lbCB3aGljaCBleGVjdXRlcwor ICogdGhlIHNwZWNpZmllZCBibGl0IGNvcHkgb3BlcmF0aW9uIHVzaW5nIHRoZSB2ZWJveCBlbmdp bmUuCisgKi8KK3R5cGVkZWYgdm9pZCAoKmlndF92ZWJveF9jb3B5ZnVuY190KShzdHJ1Y3QgaW50 ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAorCQkJCSAgICAgY29uc3Qgc3RydWN0IGlndF9idWYgKnNy YywKKwkJCQkgICAgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsCisJCQkJICAgICBj b25zdCBzdHJ1Y3QgaWd0X2J1ZiAqZHN0KTsKKworaWd0X3ZlYm94X2NvcHlmdW5jX3QgaWd0X2dl dF92ZWJveF9jb3B5ZnVuYyhpbnQgZGV2aWQpOworCiAvKioKICAqIGlndF9maWxsZnVuY190Ogog ICogQGJhdGNoOiBiYXRjaGJ1ZmZlciBvYmplY3QKZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9yZWcu aCBiL2xpYi9pbnRlbF9yZWcuaAppbmRleCBjYWJmYzg3OS4uMGE5ZWUzNGMgMTAwNjQ0Ci0tLSBh L2xpYi9pbnRlbF9yZWcuaAorKysgYi9saWIvaW50ZWxfcmVnLmgKQEAgLTY3NCw2ICs2NzQsNyBA QCBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K ICNkZWZpbmUgUklOR19JTlZBTElEICAgICAgICAweDAwMDAwMDAwCiAKICNkZWZpbmUgR0VOMTJf R0ZYX0FVWF9UQUJMRV9CQVNFX0FERFIJMHg0MjAwCisjZGVmaW5lIEdFTjEyX1ZFQk9YX0FVWF9U QUJMRV9CQVNFX0FERFIJMHg0MjMwCiAKIAogLyogQml0Qmx0IEluc3RydWN0aW9ucwpkaWZmIC0t Z2l0IGEvbGliL2lvY3RsX3dyYXBwZXJzLmggYi9saWIvaW9jdGxfd3JhcHBlcnMuaAppbmRleCBm MjQxMmQ3OC4uN2RkMmExZTggMTAwNjQ0Ci0tLSBhL2xpYi9pb2N0bF93cmFwcGVycy5oCisrKyBi L2xpYi9pb2N0bF93cmFwcGVycy5oCkBAIC0yMDEsNiArMjAxLDcgQEAgc3RydWN0IGxvY2FsX2Ry bV9tb2RlX2ZiX2NtZDIgewogI2RlZmluZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9D Q1MJbG9jYWxfZm91cmNjX21vZF9jb2RlKElOVEVMLCA0KQogI2RlZmluZSBMT0NBTF9JOTE1X0ZP Uk1BVF9NT0RfWWZfVElMRURfQ0NTCWxvY2FsX2ZvdXJjY19tb2RfY29kZShJTlRFTCwgNSkKICNk ZWZpbmUgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NTIGZvdXJjY19t b2RfY29kZShJTlRFTCwgNikKKyNkZWZpbmUgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRURf R0VOMTJfTUNfQ0NTIGZvdXJjY19tb2RfY29kZShJTlRFTCwgNykKIAogI2RlZmluZSBMT0NBTF9E Uk1fSU9DVExfTU9ERV9BRERGQjIJRFJNX0lPV1IoMHhCOCwgXAogCQkJCQkJIHN0cnVjdCBsb2Nh bF9kcm1fbW9kZV9mYl9jbWQyKQpkaWZmIC0tZ2l0IGEvbGliL21lc29uLmJ1aWxkIGIvbGliL21l c29uLmJ1aWxkCmluZGV4IDNmOTA4OTEyLi5mN2ZjZTkwNSAxMDA2NDQKLS0tIGEvbGliL21lc29u LmJ1aWxkCisrKyBiL2xpYi9tZXNvbi5idWlsZApAQCAtNjMsNiArNjMsNyBAQCBsaWJfc291cmNl cyA9IFsKIAknaWd0X2VkaWQuYycsCiAJJ2lndF9lbGQuYycsCiAJJ2lndF9pbmZvZnJhbWUuYycs CisJJ3ZlYm94Y29weV9nZW4xMi5jJywKIF0KIAogbGliX2RlcHMgPSBbCmRpZmYgLS1naXQgYS9s aWIvcmVuZGVyY29weV9nZW45LmMgYi9saWIvcmVuZGVyY29weV9nZW45LmMKaW5kZXggOTRlODE2 YjYuLmU3ZmRkN2E2IDEwMDY0NAotLS0gYS9saWIvcmVuZGVyY29weV9nZW45LmMKKysrIGIvbGli L3JlbmRlcmNvcHlfZ2VuOS5jCkBAIC0xMDI2LDcgKzEwMjYsNyBAQCB2b2lkIF9nZW45X3JlbmRl cl9jb3B5ZnVuYyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAogCU9VVF9CQVRDSChH NFhfUElQRUxJTkVfU0VMRUNUIHwgUElQRUxJTkVfU0VMRUNUXzNEIHwKIAkJCQlHRU45X1BJUEVM SU5FX1NFTEVDVElPTl9NQVNLKTsKIAotCWdlbjEyX2VtaXRfYXV4X3BndGFibGVfc3RhdGUoYmF0 Y2gsIGF1eF9wZ3RhYmxlX3N0YXRlKTsKKwlnZW4xMl9lbWl0X2F1eF9wZ3RhYmxlX3N0YXRlKGJh dGNoLCBhdXhfcGd0YWJsZV9zdGF0ZSwgdHJ1ZSk7CiAKIAlnZW44X2VtaXRfc2lwKGJhdGNoKTsK IApkaWZmIC0tZ2l0IGEvbGliL3ZlYm94Y29weS5oIGIvbGliL3ZlYm94Y29weS5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi45NDlkODNiZgotLS0gL2Rldi9udWxsCisrKyBi L2xpYi92ZWJveGNvcHkuaApAQCAtMCwwICsxLDkgQEAKKyNpZm5kZWYgX19WRUJPWENPUFlfSF9f CisjZGVmaW5lIF9fVkVCT1hDT1BZX0hfXworCit2b2lkIGdlbjEyX3ZlYm94X2NvcHlmdW5jKHN0 cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCisJCQkgIGNvbnN0IHN0cnVjdCBpZ3RfYnVm ICpzcmMsCisJCQkgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQsCisJCQkgIGNvbnN0 IHN0cnVjdCBpZ3RfYnVmICpkc3QpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2xpYi92ZWJveGNv cHlfZ2VuMTIuYyBiL2xpYi92ZWJveGNvcHlfZ2VuMTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMC4uODc4MDA5NDEKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmVib3hjb3B5 X2dlbjEyLmMKQEAgLTAsMCArMSwyNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRl bCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp LAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk aW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2Vs bCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0 aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBo KSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z IG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO RlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklH SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICog TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF UldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FS RS4KKyAqLworI2luY2x1ZGUgPGRybS5oPgorCisjaW5jbHVkZSAiaWd0LmgiCisjaW5jbHVkZSAi aW50ZWxfYXV4X3BndGFibGUuaCIKKyNpbmNsdWRlICJ2ZWJveGNvcHkuaCIKKworI2RlZmluZSBS OEc4QjhBOF9VTk9STQk4CisKK3N0cnVjdCB2ZWJveF9zdXJmYWNlX3N0YXRlIHsKKwlzdHJ1Y3Qg eworCQl1aW50MzJfdCBkd19jb3VudDoxMjsKKwkJdWludDMyX3QgcGFkOjQ7CisJCXVpbnQzMl90 IHN1Yl9vcGNvZGVfYjo1OworCQl1aW50MzJfdCBzdWJfb3Bjb2RlX2E6MzsKKwkJdWludDMyX3Qg bWVkaWFfY21kX29wY29kZTozOworCQl1aW50MzJfdCBtZWRpYV9jbWRfcGlwZWxpbmU6MjsKKwkJ dWludDMyX3QgY21kX3R5cGU6MzsKKwl9IHNzMDsKKwlzdHJ1Y3QgeworI2RlZmluZSBWRUJPWF9T VVJGQUNFX0lOUFVUCTAKKyNkZWZpbmUgVkVCT1hfU1VSRkFDRV9PVVRQVVQJMQorCQl1aW50MzJf dCBzdXJmYWNlX2lkOjE7CisJCXVpbnQzMl90IHBhZDozMTsKKwl9IHNzMTsKKwlzdHJ1Y3Qgewor CQl1aW50MzJfdCBwYWQ6NDsKKwkJdWludDMyX3Qgd2lkdGg6MTQ7CisJCXVpbnQzMl90IGhlaWdo dDoxNDsKKwl9IHNzMjsKKwlzdHJ1Y3QgeworI2RlZmluZSBWRUJPWF9USUxFX1dBTEtfWE1BSk9S IDAKKyNkZWZpbmUgVkVCT1hfVElMRV9XQUxLX1lNQUpPUiAxCisJCXVpbnQzMl90IHRpbGVfd2Fs azoxOworCQl1aW50MzJfdCB0aWxlZF9zdXJmYWNlOjE7CisJCXVpbnQzMl90IGNocm9tYV9oYWxm X3BpdGNoOjE7CisJCXVpbnQzMl90IHN1cmZhY2VfcGl0Y2g6MTc7CisJCXVpbnQzMl90IGNocm9t YV9pbnRlcmxlYXZlOjE7CisJCXVpbnQzMl90IGxzYl9wYWNrZWRfZW5hYmxlOjE7CisJCXVpbnQz Ml90IGJheWVyX2lucHV0X2FsaWdubWVudDoyOworCQl1aW50MzJfdCBiYXllcl9wYXR0ZXJuX2Zv cm1hdDoxOworCQl1aW50MzJfdCBiYXllcl9wYXR0ZXJuX29mZnNldDoyOworCQl1aW50MzJfdCBz dXJmYWNlX2Zvcm1hdDo1OworCX0gc3MzOworCXN0cnVjdCB7CisJCXVpbnQzMl90IHVfeV9vZmZz ZXQ6MTU7CisJCXVpbnQzMl90IHVfeF9vZmZzZXQ6MTM7CisJCXVpbnQzMl90IHBhZDo0OworCX0g c3M0OworCXN0cnVjdCB7CisJCXVpbnQzMl90IHZfeV9vZmZzZXQ6MTU7CisJCXVpbnQzMl90IHZf eF9vZmZzZXQ6MTM7CisJCXVpbnQzMl90IHBhZDo0OworCX0gc3M1OworCXN0cnVjdCB7CisJCXVp bnQzMl90IGZyYW1lX3lfb2Zmc2V0OjE1OworCQl1aW50MzJfdCBmcmFtZV94X29mZnNldDoxNTsK KwkJdWludDMyX3QgcGFkOjI7CisJfSBzczY7CisJc3RydWN0IHsKKwkJdWludDMyX3QgZGVyaXZl ZF9zdXJmYWNlX3BpdGNoOjE3OworCQl1aW50MzJfdCBwYWQ6MTU7CisJfSBzczc7CisJc3RydWN0 IHsKKwkJdWludDMyX3Qgc2tpbl9zY29yZV9vdXRwdXRfc3VyZmFjZV9waXRjaDoxNzsKKwkJdWlu dDMyX3QgcGFkOjE1OworCX0gc3M4OworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworc3Ry dWN0IHZlYm94X3RpbGluZ19jb252ZXJ0IHsKKwlzdHJ1Y3QgeworCQl1aW50MzJfdCBkd19jb3Vu dDoxMjsKKwkJdWludDMyX3QgcGFkOjQ7CisJCXVpbnQzMl90IHN1Yl9vcGNvZGVfYjo1OworCQl1 aW50MzJfdCBzdWJfb3Bjb2RlX2E6MzsKKwkJdWludDMyX3QgY21kX29wY29kZTozOworCQl1aW50 MzJfdCBwaXBlbGluZToyOworCQl1aW50MzJfdCBjbWRfdHlwZTozOworCX0gdGMwOworCXVuaW9u IHsKKwkJc3RydWN0IHsKKwkJCXVpbnQ2NF90IGlucHV0X2VuY3J5cHRlZF9kYXRhOjE7CisJCQl1 aW50NjRfdCBpbnB1dF9tb2NzX2lkeDo2OworCQkJdWludDY0X3QgaW5wdXRfbWVtb3J5X2NvbXBy ZXNzaW9uX2VuYWJsZToxOworI2RlZmluZSBDT01QUkVTU0lPTl9UWVBFX01FRElBIDAKKyNkZWZp bmUgQ09NUFJFU1NJT05fVFlQRV9SRU5ERVIJMQorCQkJdWludDY0X3QgaW5wdXRfY29tcHJlc3Np b25fdHlwZToxOworI2RlZmluZSBUUk1PREVfTk9ORQkwCisjZGVmaW5lIFRSTU9ERV9USUxFX1lG CTEKKyNkZWZpbmUgVFJNT0RFX1RJTEVfWVMJMgorCQkJdWludDY0X3QgaW5wdXRfdGlsZWRfcmVz b3VyY2VfbW9kZToyOworCQkJdWludDY0X3QgcGFkOjE7CisJCQl1aW50NjRfdCBpbnB1dF9hZGRy ZXNzOjUyOworCQl9IHRjMV8yOworCQl1aW50NjRfdCB0YzFfMl9sOworCX07CisJdW5pb24gewor CQlzdHJ1Y3QgeworCQkJdWludDY0X3Qgb3V0cHV0X2VuY3J5cHRlZF9kYXRhOjE7CisJCQl1aW50 NjRfdCBvdXRwdXRfbW9jc19pZHg6NjsKKwkJCXVpbnQ2NF90IG91dHB1dF9tZW1vcnlfY29tcHJl c3Npb25fZW5hYmxlOjE7CisJCQl1aW50NjRfdCBvdXRwdXRfY29tcHJlc3Npb25fdHlwZToxOwor CQkJdWludDY0X3Qgb3V0cHV0X3RpbGVkX3Jlc291cmNlX21vZGU6MjsKKwkJCXVpbnQ2NF90IHBh ZDoxOworCQkJdWludDY0X3Qgb3V0cHV0X2FkZHJlc3M6NTI7CisJCX0gdGMzXzQ7CisJCXVpbnQ2 NF90IHRjM180X2w7CisJfTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKK3N0YXRpYyB2 b2lkIGVtaXRfc3VyZmFjZV9zdGF0ZV9jbWQoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRj aCwKKwkJCQkgICBpbnQgc3VyZmFjZV9pZCwKKwkJCQkgICBpbnQgd2lkdGgsIGludCBoZWlnaHQs IGludCBicHAsCisJCQkJICAgaW50IHBpdGNoLCB1aW50MzJfdCB0aWxpbmcsIGludCBmb3JtYXQp Cit7CisJc3RydWN0IHZlYm94X3N1cmZhY2Vfc3RhdGUgKnNzOworCisJc3MgPSBpbnRlbF9iYXRj aGJ1ZmZlcl9zdWJkYXRhX2FsbG9jKGJhdGNoLCBzaXplb2YoKnNzKSwgNCk7CisKKwlzcy0+c3Mw LmNtZF90eXBlID0gMzsKKwlzcy0+c3MwLm1lZGlhX2NtZF9waXBlbGluZSA9IDI7CisJc3MtPnNz MC5tZWRpYV9jbWRfb3Bjb2RlID0gNDsKKwlzcy0+c3MwLmR3X2NvdW50ID0gNzsKKworCXNzLT5z czEuc3VyZmFjZV9pZCA9IHN1cmZhY2VfaWQ7CisKKwlzcy0+c3MyLmhlaWdodCA9IGhlaWdodCAt IDE7CisJc3MtPnNzMi53aWR0aCA9IHdpZHRoIC0gMTsKKworCXNzLT5zczMuc3VyZmFjZV9mb3Jt YXQgPSBmb3JtYXQ7CisJc3MtPnNzMy5zdXJmYWNlX3BpdGNoID0gcGl0Y2ggLSAxOworCXNzLT5z czMudGlsZV93YWxrID0gKHRpbGluZyA9PSBJOTE1X1RJTElOR19ZKSB8fAorCQkJICAgICh0aWxp bmcgPT0gSTkxNV9USUxJTkdfWWYpOworCXNzLT5zczMudGlsZWRfc3VyZmFjZSA9IHRpbGluZyAh PSBJOTE1X1RJTElOR19OT05FOworCisJc3MtPnNzNy5kZXJpdmVkX3N1cmZhY2VfcGl0Y2ggPSBw aXRjaCAtIDE7Cit9CisKK3N0YXRpYyB2b2lkIGVtaXRfdGlsaW5nX2NvbnZlcnRfY21kKHN0cnVj dCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCisJCQkJICAgIGRybV9pbnRlbF9ibyAqaW5wdXRf Ym8sCisJCQkJICAgIHVpbnQzMl90IGlucHV0X3RpbGluZywKKwkJCQkgICAgdWludDMyX3QgaW5w dXRfY29tcHJlc3Npb24sCisJCQkJICAgIGRybV9pbnRlbF9ibyAqb3V0cHV0X2JvLAorCQkJCSAg ICB1aW50MzJfdCBvdXRwdXRfdGlsaW5nLAorCQkJCSAgICB1aW50MzJfdCBvdXRwdXRfY29tcHJl c3Npb24pCit7CisJdWludDMyX3QgcmVsb2NfZGVsdGE7CisJc3RydWN0IHZlYm94X3RpbGluZ19j b252ZXJ0ICp0YzsKKwlpbnQgcmV0OworCisJdGMgPSBpbnRlbF9iYXRjaGJ1ZmZlcl9zdWJkYXRh X2FsbG9jKGJhdGNoLCBzaXplb2YoKnRjKSwgOCk7CisKKwl0Yy0+dGMwLmNtZF90eXBlID0gMzsK Kwl0Yy0+dGMwLnBpcGVsaW5lID0gMjsKKwl0Yy0+dGMwLmNtZF9vcGNvZGUgPSA0OworCXRjLT50 YzAuc3ViX29wY29kZV9iID0gMTsKKworCXRjLT50YzAuZHdfY291bnQgPSAzOworCisJaWYgKGlu cHV0X2NvbXByZXNzaW9uICE9IEk5MTVfQ09NUFJFU1NJT05fTk9ORSkgeworCQl0Yy0+dGMxXzIu aW5wdXRfbWVtb3J5X2NvbXByZXNzaW9uX2VuYWJsZSA9IDE7CisJCXRjLT50YzFfMi5pbnB1dF9j b21wcmVzc2lvbl90eXBlID0KKwkJCWlucHV0X2NvbXByZXNzaW9uID09IEk5MTVfQ09NUFJFU1NJ T05fUkVOREVSOworCX0KKwl0Yy0+dGMxXzIuaW5wdXRfdGlsZWRfcmVzb3VyY2VfbW9kZSA9IGlu cHV0X3RpbGluZyA9PSBJOTE1X1RJTElOR19ZZjsKKwlyZWxvY19kZWx0YSA9IHRjLT50YzFfMl9s OworCisJaWd0X2Fzc2VydChpbnB1dF9iby0+b2Zmc2V0NjQgPT0gQUxJR04oaW5wdXRfYm8tPm9m ZnNldDY0LCAweDEwMDApKTsKKwl0Yy0+dGMxXzIuaW5wdXRfYWRkcmVzcyA9IGlucHV0X2JvLT5v ZmZzZXQ2NCA+PiAxMjsKKwlpZ3RfYXNzZXJ0KHJlbG9jX2RlbHRhIDw9IElOVDMyX01BWCk7CisJ cmV0ID0gZHJtX2ludGVsX2JvX2VtaXRfcmVsb2MoYmF0Y2gtPmJvLAorCQkJCSAgICAgIGludGVs X2JhdGNoYnVmZmVyX3N1YmRhdGFfb2Zmc2V0KGJhdGNoLCB0YykgKworCQkJCQlvZmZzZXRvZih0 eXBlb2YoKnRjKSwgdGMxXzIpLAorCQkJCSAgICAgIGlucHV0X2JvLCByZWxvY19kZWx0YSwKKwkJ CQkgICAgICAwLCAwKTsKKwlpZ3RfYXNzZXJ0KHJldCA9PSAwKTsKKworCWlmIChvdXRwdXRfY29t cHJlc3Npb24gIT0gSTkxNV9DT01QUkVTU0lPTl9OT05FKSB7CisJCXRjLT50YzNfNC5vdXRwdXRf bWVtb3J5X2NvbXByZXNzaW9uX2VuYWJsZSA9IDE7CisJCXRjLT50YzNfNC5vdXRwdXRfY29tcHJl c3Npb25fdHlwZSA9CisJCQlvdXRwdXRfY29tcHJlc3Npb24gPT0gSTkxNV9DT01QUkVTU0lPTl9S RU5ERVI7CisJfQorCXRjLT50YzNfNC5vdXRwdXRfdGlsZWRfcmVzb3VyY2VfbW9kZSA9IG91dHB1 dF90aWxpbmcgPT0gSTkxNV9USUxJTkdfWWY7CisJcmVsb2NfZGVsdGEgPSB0Yy0+dGMzXzRfbDsK KworCWlndF9hc3NlcnQob3V0cHV0X2JvLT5vZmZzZXQ2NCA9PSBBTElHTihvdXRwdXRfYm8tPm9m ZnNldDY0LCAweDEwMDApKTsKKwl0Yy0+dGMzXzQub3V0cHV0X2FkZHJlc3MgPSBvdXRwdXRfYm8t Pm9mZnNldDY0ID4+IDEyOworCWlndF9hc3NlcnQocmVsb2NfZGVsdGEgPD0gSU5UMzJfTUFYKTsK KwlyZXQgPSBkcm1faW50ZWxfYm9fZW1pdF9yZWxvYyhiYXRjaC0+Ym8sCisJCQkJICAgICAgaW50 ZWxfYmF0Y2hidWZmZXJfc3ViZGF0YV9vZmZzZXQoYmF0Y2gsIHRjKSArCisJCQkJCW9mZnNldG9m KHR5cGVvZigqdGMpLCB0YzNfNCksCisJCQkJICAgICAgb3V0cHV0X2JvLCByZWxvY19kZWx0YSwK KwkJCQkgICAgICAwLCBJOTE1X0dFTV9ET01BSU5fUkVOREVSKTsKKwlpZ3RfYXNzZXJ0KHJldCA9 PSAwKTsKKworfQorCisvKiBCb3Jyb3dpbmcgdGhlIGlkZWEgZnJvbSB0aGUgcmVuZGVyY29weSBz dGF0ZSBzZXR1cC4gKi8KKyNkZWZpbmUgQkFUQ0hfU1RBVEVfU1BMSVQgMjA0OAorCit2b2lkIGdl bjEyX3ZlYm94X2NvcHlmdW5jKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCisJCQkg IGNvbnN0IHN0cnVjdCBpZ3RfYnVmICpzcmMsCisJCQkgIHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25l ZCBoZWlnaHQsCisJCQkgIGNvbnN0IHN0cnVjdCBpZ3RfYnVmICpkc3QpCit7CisJc3RydWN0IGF1 eF9wZ3RhYmxlX2luZm8gYXV4X3BndGFibGVfaW5mbyA9IHsgfTsKKwl1aW50MzJfdCBhdXhfcGd0 YWJsZV9zdGF0ZTsKKworCWlndF9hc3NlcnQoc3JjLT5icHAgPT0gZHN0LT5icHApOworCisJaW50 ZWxfYmF0Y2hidWZmZXJfZmx1c2hfb25fcmluZyhiYXRjaCwgSTkxNV9FWEVDX1ZFQk9YKTsKKwor CWludGVsX2JhdGNoYnVmZmVyX2FsaWduKGJhdGNoLCA4KTsKKworCWJhdGNoLT5wdHIgPSAmYmF0 Y2gtPmJ1ZmZlcltCQVRDSF9TVEFURV9TUExJVF07CisKKwlnZW4xMl9hdXhfcGd0YWJsZV9pbml0 KCZhdXhfcGd0YWJsZV9pbmZvLCBiYXRjaC0+YnVmbWdyLCBzcmMsIGRzdCk7CisKKwlhdXhfcGd0 YWJsZV9zdGF0ZSA9IGdlbjEyX2NyZWF0ZV9hdXhfcGd0YWJsZV9zdGF0ZShiYXRjaCwKKwkJCQkJ CQkgICBhdXhfcGd0YWJsZV9pbmZvLnBndGFibGVfYm8pOworCisJYXNzZXJ0KGJhdGNoLT5wdHIg PCAmYmF0Y2gtPmJ1ZmZlcls0MDk1XSk7CisJYmF0Y2gtPnB0ciA9IGJhdGNoLT5idWZmZXI7CisK KwlnZW4xMl9lbWl0X2F1eF9wZ3RhYmxlX3N0YXRlKGJhdGNoLCBhdXhfcGd0YWJsZV9zdGF0ZSwg ZmFsc2UpOworCisJLyogVE9ETzogYWRkIHN1cHBvcnQgZm9yIG1vcmUgZm9ybWF0cyAqLworCWln dF9hc3NlcnQoc3JjLT5icHAgPT0gMzIpOworCWVtaXRfc3VyZmFjZV9zdGF0ZV9jbWQoYmF0Y2gs IFZFQk9YX1NVUkZBQ0VfSU5QVVQsCisJCQkgICAgICAgd2lkdGgsIGhlaWdodCwgc3JjLT5icHAs IHNyYy0+c3RyaWRlLAorCQkJICAgICAgIHNyYy0+dGlsaW5nLCBSOEc4QjhBOF9VTk9STSk7CisK KwlpZ3RfYXNzZXJ0KGRzdC0+YnBwID09IDMyKTsKKwllbWl0X3N1cmZhY2Vfc3RhdGVfY21kKGJh dGNoLCBWRUJPWF9TVVJGQUNFX09VVFBVVCwKKwkJCSAgICAgICB3aWR0aCwgaGVpZ2h0LCBkc3Qt PmJwcCwgZHN0LT5zdHJpZGUsCisJCQkgICAgICAgZHN0LT50aWxpbmcsIFI4RzhCOEE4X1VOT1JN KTsKKworCWVtaXRfdGlsaW5nX2NvbnZlcnRfY21kKGJhdGNoLAorCQkJCXNyYy0+Ym8sIHNyYy0+ dGlsaW5nLCBzcmMtPmNvbXByZXNzaW9uLAorCQkJCWRzdC0+Ym8sIGRzdC0+dGlsaW5nLCBkc3Qt PmNvbXByZXNzaW9uKTsKKworCU9VVF9CQVRDSChNSV9CQVRDSF9CVUZGRVJfRU5EKTsKKworCWlu dGVsX2JhdGNoYnVmZmVyX2ZsdXNoX29uX3JpbmcoYmF0Y2gsIEk5MTVfRVhFQ19WRUJPWCk7CisK KwlnZW4xMl9hdXhfcGd0YWJsZV9jbGVhbnVwKCZhdXhfcGd0YWJsZV9pbmZvKTsKKwlpbnRlbF9i YXRjaGJ1ZmZlcl9yZXNldChiYXRjaCk7Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9y ZW5kZXJfY29weS5jIGIvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYwppbmRleCAxNWJhMTcw NC4uOWMzNmYzOGIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5LmMKKysr IGIvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHkuYwpAQCAtNDcxLDYgKzQ3MSw3IEBAIHN0YXRp YyB2b2lkIHNjcmF0Y2hfYnVmX2luaXQoZGF0YV90ICpkYXRhLCBzdHJ1Y3QgaWd0X2J1ZiAqYnVm LAogCQlhdXhfd2lkdGggPSBzY3JhdGNoX2J1Zl9hdXhfd2lkdGgoZGF0YS0+ZGV2aWQsIGJ1Zik7 CiAJCWF1eF9oZWlnaHQgPSBzY3JhdGNoX2J1Zl9hdXhfaGVpZ2h0KGRhdGEtPmRldmlkLCBidWYp OwogCisJCWJ1Zi0+Y29tcHJlc3Npb24gPSBjb21wcmVzc2lvbjsKIAkJYnVmLT5hdXgub2Zmc2V0 ID0gYnVmLT5zdHJpZGUgKiBBTElHTihoZWlnaHQsIDMyKTsKIAkJYnVmLT5hdXguc3RyaWRlID0g YXV4X3dpZHRoOwogCi0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aWd0LWRldg==