From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id BA71B6F4C7 for ; Wed, 4 Dec 2019 13:49:20 +0000 (UTC) From: Imre Deak Date: Wed, 4 Dec 2019 15:49:11 +0200 Message-Id: <20191204134911.8618-1-imre.deak@intel.com> In-Reply-To: <20191129103843.5765-6-imre.deak@intel.com> References: <20191129103843.5765-6-imre.deak@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v2 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 dGlsaW5nIGNvbnZlcnQgY29tbWFuZCwgc28gYWRkIHN1cHBvcnQKZm9yIHRoaXMuCgp2MjoKLSBS ZWJhc2Ugb24gbGF0ZXN0IGlndC4gKE1pa2EpCgpDYzogTWlrYSBLYWhvbGEgPG1pa2Eua2Fob2xh QGludGVsLmNvbT4KQ2M6IEJyaWFuIFdlbHR5IDxicmlhbi53ZWx0eUBpbnRlbC5jb20+CkNjOiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IFZpbGxlIFN5cmrDpGzD pCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEltcmUgRGVh ayA8aW1yZS5kZWFrQGludGVsLmNvbT4KLS0tCiBsaWIvTWFrZWZpbGUuc291cmNlcyAgICAgICAg IHwgICAxICsKIGxpYi9pZ3RfZmIuYyAgICAgICAgICAgICAgICAgfCAgNzcgKysrKysrKy0tLQog bGliL2ludGVsX2F1eF9wZ3RhYmxlLmMgICAgICB8ICAxMCArLQogbGliL2ludGVsX2F1eF9wZ3Rh YmxlLmggICAgICB8ICAgMyArLQogbGliL2ludGVsX2JhdGNoYnVmZmVyLmMgICAgICB8ICAxMSAr KwogbGliL2ludGVsX2JhdGNoYnVmZmVyLmggICAgICB8ICAzMCArKystCiBsaWIvaW50ZWxfcmVn LmggICAgICAgICAgICAgIHwgICAxICsKIGxpYi9pb2N0bF93cmFwcGVycy5oICAgICAgICAgfCAg IDEgKwogbGliL21lc29uLmJ1aWxkICAgICAgICAgICAgICB8ICAgMSArCiBsaWIvcmVuZGVyY29w eV9nZW45LmMgICAgICAgIHwgICAyICstCiBsaWIvdmVib3hjb3B5LmggICAgICAgICAgICAgIHwg ICA5ICsrCiBsaWIvdmVib3hjb3B5X2dlbjEyLmMgICAgICAgIHwgMjY5ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jIHwgICAx ICsKIDEzIGZpbGVzIGNoYW5nZWQsIDM4OCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvdmVib3hjb3B5LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBs aWIvdmVib3hjb3B5X2dlbjEyLmMKCmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuc291cmNlcyBi L2xpYi9NYWtlZmlsZS5zb3VyY2VzCmluZGV4IDc1MGU2MzBiLi41ZGQzOTYyZSAxMDA2NDQKLS0t IGEvbGliL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKQEAgLTEz MSw2ICsxMzEsNyBAQCBsaWJfc291cmNlX2xpc3QgPQkgCVwKIAlpZ3RfdmM0LmgJCVwKIAlpZ3Rf YW1kLmMJCVwKIAlpZ3RfYW1kLmgJCVwKKwl2ZWJveGNvcHlfZ2VuMTIuYwlcCiAJJChOVUxMKQog CiAuUEhPTlk6IHZlcnNpb24uaC50bXAKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZmIuYyBiL2xpYi9p Z3RfZmIuYwppbmRleCA2Y2U3Y2ZlYS4uM2IxNDFiOTMgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZmIu YworKysgYi9saWIvaWd0X2ZiLmMKQEAgLTQwMyw2ICs0MDMsNyBAQCB2b2lkIGlndF9nZXRfZmJf dGlsZV9zaXplKGludCBmZCwgdWludDY0X3QgbW9kaWZpZXIsIGludCBmYl9icHAsCiAJY2FzZSBM T0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1M6CiAJY2FzZSBMT0NBTF9JOTE1X0ZPUk1B VF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1M6CiAJY2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0Rf WV9USUxFRF9HRU4xMl9SQ19DQ1NfQ0M6CisJY2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9U SUxFRF9HRU4xMl9NQ19DQ1M6CiAJCWlndF9yZXF1aXJlX2ludGVsKGZkKTsKIAkJaWYgKGludGVs X2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSkgPT0gMikgewogCQkJKndpZHRoX3JldCA9IDEy ODsKQEAgLTQ2NywxNyArNDY4LDIxIEBAIHZvaWQgaWd0X2dldF9mYl90aWxlX3NpemUoaW50IGZk LCB1aW50NjRfdCBtb2RpZmllciwgaW50IGZiX2JwcCwKIAl9CiB9CiAKK3N0YXRpYyBib29sIGlz X2dlbjEyX21jX2Njc19tb2RpZmllcih1aW50NjRfdCBtb2RpZmllcikKK3sKKwlyZXR1cm4gbW9k aWZpZXIgPT0gTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfTUNfQ0NTOworfQor CiBzdGF0aWMgYm9vbCBpc19nZW4xMl9jY3NfbW9kaWZpZXIodWludDY0X3QgbW9kaWZpZXIpCiB7 Ci0JcmV0dXJuIG1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0ND UyB8fAorCXJldHVybiBpc19nZW4xMl9tY19jY3NfbW9kaWZpZXIobW9kaWZpZXIpIHx8CisJCW1v ZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDUyB8fAogCQltb2Rp ZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1NfQ0M7CiB9CiAKIHN0 YXRpYyBib29sIGlzX2Njc19tb2RpZmllcih1aW50NjRfdCBtb2RpZmllcikKIHsKLQotCXJldHVy biBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1MgfHwKLQkJ bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NTX0NDIHx8CisJ cmV0dXJuIGlzX2dlbjEyX2Njc19tb2RpZmllcihtb2RpZmllcikgfHwKIAkJbW9kaWZpZXIgPT0g STkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTIHx8CiAJCW1vZGlmaWVyID09IEk5MTVfRk9STUFU X01PRF9ZZl9USUxFRF9DQ1M7CiB9CkBAIC03MzMsNiArNzM4LDcgQEAgdWludDY0X3QgaWd0X2Zi X21vZF90b190aWxpbmcodWludDY0X3QgbW9kaWZpZXIpCiAJY2FzZSBMT0NBTF9JOTE1X0ZPUk1B VF9NT0RfWV9USUxFRF9DQ1M6CiAJY2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9H RU4xMl9SQ19DQ1M6CiAJY2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9S Q19DQ1NfQ0M6CisJY2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19D Q1M6CiAJCXJldHVybiBJOTE1X1RJTElOR19ZOwogCWNhc2UgTE9DQUxfSTkxNV9GT1JNQVRfTU9E X1lmX1RJTEVEOgogCWNhc2UgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEX0NDUzoKQEAg LTE5MTEsNyArMTkxNyw3IEBAIHN0YXRpYyBib29sIGJsaXR0ZXJfb2soY29uc3Qgc3RydWN0IGln dF9mYiAqZmIpCiAJcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIHVzZV9yZW5kZXJjb3B5 KGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZiKQorc3RhdGljIGJvb2wgdXNlX2VuZ2luZWNvcHkoY29u c3Qgc3RydWN0IGlndF9mYiAqZmIpCiB7CiAJcmV0dXJuIGlzX2Njc19tb2RpZmllcihmYi0+bW9k aWZpZXIpIHx8CiAJCShmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEICYm CkBAIC0xOTYwLDI1ICsxOTY2LDUyIEBAIHN0YXRpYyB2b2lkIGZpbmlfYnVmKHN0cnVjdCBpZ3Rf YnVmICpidWYpCiAJZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKGJ1Zi0+Ym8pOwogfQogCi1zdGF0 aWMgdm9pZCByZW5kZXJjb3B5KHN0cnVjdCBmYl9ibGl0X3VwbG9hZCAqYmxpdCwKLQkJICAgICAg IGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmRzdF9mYiwKLQkJICAgICAgIGNvbnN0IHN0cnVjdCBpZ3Rf ZmIgKnNyY19mYikKKy8qKgorICogY29weV93aXRoX2VuZ2luZToKKyAqIEBibGl0OiBjb250ZXh0 IGZvciB0aGUgY29weSBvcGVyYXRpb24KKyAqIEBkc3RfZmI6IGRlc3RpbmF0aW9uIGJ1ZmZlcgor ICogQHNyY19mYjogc291cmNlIGJ1ZmZlcgorICoKKyAqIENvcHkgQHNyY19mYiB0byBAZHN0X2Zi IHVzaW5nIGVpdGhlciB0aGUgcmVuZGVyIG9yIHZlYm94IGVuZ2luZS4gVGhlIGVuZ2luZQorICog aXMgc2VsZWN0ZWQgYmFzZWQgb24gdGhlIGNvbXByZXNzaW9uIHN1cmZhY2UgZm9ybWF0IHJlcXVp cmVkIGJ5IHRoZSBAZHN0X2ZiCisgKiBGQiBtb2RpZmllci4gT24gR0VOMTIrIGEgZ2l2ZW4gY29t cHJlc3Npb24gZm9ybWF0IChyZW5kZXIgb3IgbWVkaWEpIGNhbiBiZQorICogcHJvZHVjZWQgb25s eSBieSB0aGUgc2VsZWN0ZWQgZW5naW5lOgorICogLSBGb3IgR0VOMTIgbWVkaWEgY29tcHJlc3Nl ZDogdmVib3ggZW5naW5lCisgKiAtIEZvciB1bmNvbXByZXNzZWQsIHByZS1HRU4xMiBjb21wcmVz c2VkLCBHRU4xMisgcmVuZGVyIGNvbXByZXNzZWQ6IHJlbmRlciBlbmdpbmUKKyAqIE5vdGUgdGhh dCBib3RoIEdFTjEyIGVuZ2luZSBpcyBjYXBhYmxlIG9mIHJlYWRpbmcgZWl0aGVyIGNvbXByZXNz aW9uIGZvcm1hdHMuCisgKi8KK3N0YXRpYyB2b2lkIGNvcHlfd2l0aF9lbmdpbmUoc3RydWN0IGZi X2JsaXRfdXBsb2FkICpibGl0LAorCQkJICAgICBjb25zdCBzdHJ1Y3QgaWd0X2ZiICpkc3RfZmIs CisJCQkgICAgIGNvbnN0IHN0cnVjdCBpZ3RfZmIgKnNyY19mYikKIHsKIAlzdHJ1Y3QgaWd0X2J1 ZiBzcmMgPSB7fSwgZHN0ID0ge307Ci0JaWd0X3JlbmRlcl9jb3B5ZnVuY190IHJlbmRlcl9jb3B5 ID0KLQkJaWd0X2dldF9yZW5kZXJfY29weWZ1bmMoaW50ZWxfZ2V0X2RybV9kZXZpZChibGl0LT5m ZCkpOworCWlndF9yZW5kZXJfY29weWZ1bmNfdCByZW5kZXJfY29weSA9IE5VTEw7CisJaWd0X3Zl Ym94X2NvcHlmdW5jX3QgdmVib3hfY29weSA9IE5VTEw7CisKKwlpZiAoaXNfZ2VuMTJfbWNfY2Nz X21vZGlmaWVyKGRzdF9mYi0+bW9kaWZpZXIpKQorCQl2ZWJveF9jb3B5ID0gaWd0X2dldF92ZWJv eF9jb3B5ZnVuYyhpbnRlbF9nZXRfZHJtX2RldmlkKGJsaXQtPmZkKSk7CisJZWxzZQorCQlyZW5k ZXJfY29weSA9IGlndF9nZXRfcmVuZGVyX2NvcHlmdW5jKGludGVsX2dldF9kcm1fZGV2aWQoYmxp dC0+ZmQpKTsKIAotCWlndF9yZXF1aXJlKHJlbmRlcl9jb3B5KTsKKwlpZ3RfcmVxdWlyZSh2ZWJv eF9jb3B5IHx8IHJlbmRlcl9jb3B5KTsKIAogCWlndF9hc3NlcnRfZXEoZHN0X2ZiLT5vZmZzZXRz WzBdLCAwKTsKIAlpZ3RfYXNzZXJ0X2VxKHNyY19mYi0+b2Zmc2V0c1swXSwgMCk7CiAKLQlpbml0 X2J1ZihibGl0LCAmc3JjLCBzcmNfZmIsICJjYWlybyByZW5kZXJjb3B5IHNyYyIpOwotCWluaXRf YnVmKGJsaXQsICZkc3QsIGRzdF9mYiwgImNhaXJvIHJlbmRlcmNvcHkgZHN0Iik7CisJaW5pdF9i dWYoYmxpdCwgJnNyYywgc3JjX2ZiLCAiY2Fpcm8gZW5naW5lY29weSBzcmMiKTsKKwlpbml0X2J1 ZihibGl0LCAmZHN0LCBkc3RfZmIsICJjYWlybyBlbmdpbmVjb3B5IGRzdCIpOwogCi0JcmVuZGVy X2NvcHkoYmxpdC0+YmF0Y2gsIE5VTEwsCi0JCSAgICAmc3JjLCAwLCAwLCBkc3RfZmItPnBsYW5l X3dpZHRoWzBdLCBkc3RfZmItPnBsYW5lX2hlaWdodFswXSwKLQkJICAgICZkc3QsIDAsIDApOwor CWlmICh2ZWJveF9jb3B5KQorCQl2ZWJveF9jb3B5KGJsaXQtPmJhdGNoLCAmc3JjLAorCQkJICAg ZHN0X2ZiLT5wbGFuZV93aWR0aFswXSwgZHN0X2ZiLT5wbGFuZV9oZWlnaHRbMF0sCisJCQkgICAm ZHN0KTsKKwllbHNlCisJCXJlbmRlcl9jb3B5KGJsaXQtPmJhdGNoLCBOVUxMLAorCQkJICAgICZz cmMsCisJCQkgICAgMCwgMCwKKwkJCSAgICBkc3RfZmItPnBsYW5lX3dpZHRoWzBdLCBkc3RfZmIt PnBsYW5lX2hlaWdodFswXSwKKwkJCSAgICAmZHN0LAorCQkJICAgIDAsIDApOwogCiAJZmluaV9i dWYoJmRzdCk7CiAJZmluaV9idWYoJnNyYyk7CkBAIC0yMDI5LDcgKzIwNjIsNyBAQCBzdGF0aWMg dm9pZCBmcmVlX2xpbmVhcl9tYXBwaW5nKHN0cnVjdCBmYl9ibGl0X3VwbG9hZCAqYmxpdCkKIAkJ CUk5MTVfR0VNX0RPTUFJTl9HVFQsIDApOwogCiAJCWlmIChibGl0LT5iYXRjaCkKLQkJCXJlbmRl cmNvcHkoYmxpdCwgZmIsICZsaW5lYXItPmZiKTsKKwkJCWNvcHlfd2l0aF9lbmdpbmUoYmxpdCwg ZmIsICZsaW5lYXItPmZiKTsKIAkJZWxzZQogCQkJYmxpdGNvcHkoZmIsICZsaW5lYXItPmZiKTsK IApAQCAtMjA2MCw3ICsyMDkzLDcgQEAgc3RhdGljIHZvaWQgc2V0dXBfbGluZWFyX21hcHBpbmco c3RydWN0IGZiX2JsaXRfdXBsb2FkICpibGl0KQogCXN0cnVjdCBpZ3RfZmIgKmZiID0gYmxpdC0+ ZmI7CiAJc3RydWN0IGZiX2JsaXRfbGluZWFyICpsaW5lYXIgPSAmYmxpdC0+bGluZWFyOwogCi0J aWYgKCFpZ3RfdmM0X2lzX3RpbGVkKGZiLT5tb2RpZmllcikgJiYgdXNlX3JlbmRlcmNvcHkoZmIp KSB7CisJaWYgKCFpZ3RfdmM0X2lzX3RpbGVkKGZiLT5tb2RpZmllcikgJiYgdXNlX2VuZ2luZWNv cHkoZmIpKSB7CiAJCWJsaXQtPmJ1Zm1nciA9IGRybV9pbnRlbF9idWZtZ3JfZ2VtX2luaXQoZmQs IDQwOTYpOwogCQlibGl0LT5iYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGJsaXQtPmJ1 Zm1nciwKIAkJCQkJCSAgICAgIGludGVsX2dldF9kcm1fZGV2aWQoZmQpKTsKQEAgLTIwOTYsNyAr MjEyOSw3IEBAIHN0YXRpYyB2b2lkIHNldHVwX2xpbmVhcl9tYXBwaW5nKHN0cnVjdCBmYl9ibGl0 X3VwbG9hZCAqYmxpdCkKIAkJCQlJOTE1X0dFTV9ET01BSU5fR1RULCAwKTsKIAogCQlpZiAoYmxp dC0+YmF0Y2gpCi0JCQlyZW5kZXJjb3B5KGJsaXQsICZsaW5lYXItPmZiLCBmYik7CisJCQljb3B5 X3dpdGhfZW5naW5lKGJsaXQsICZsaW5lYXItPmZiLCBmYik7CiAJCWVsc2UKIAkJCWJsaXRjb3B5 KCZsaW5lYXItPmZiLCBmYik7CiAKQEAgLTMyMDIsNyArMzIzNSw4IEBAIHN0YXRpYyB2b2lkIGNy ZWF0ZV9jYWlyb19zdXJmYWNlX19jb252ZXJ0KGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCiAJ CQkJCQkJICAgICAmYmxpdC0+c2hhZG93X2ZiKTsKIAlpZ3RfYXNzZXJ0KGJsaXQtPnNoYWRvd19w dHIpOwogCi0JaWYgKHVzZV9yZW5kZXJjb3B5KGZiKSB8fCB1c2VfYmxpdHRlcihmYikgfHwgaWd0 X3ZjNF9pc190aWxlZChmYi0+bW9kaWZpZXIpKSB7CisJaWYgKHVzZV9lbmdpbmVjb3B5KGZiKSB8 fCB1c2VfYmxpdHRlcihmYikgfHwKKwkgICAgaWd0X3ZjNF9pc190aWxlZChmYi0+bW9kaWZpZXIp KSB7CiAJCXNldHVwX2xpbmVhcl9tYXBwaW5nKCZibGl0LT5iYXNlKTsKIAl9IGVsc2UgewogCQli bGl0LT5iYXNlLmxpbmVhci5mYiA9ICpmYjsKQEAgLTMyODUsNyArMzMxOSw4IEBAIGNhaXJvX3N1 cmZhY2VfdCAqaWd0X2dldF9jYWlyb19zdXJmYWNlKGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIp CiAJaWYgKGZiLT5jYWlyb19zdXJmYWNlID09IE5VTEwpIHsKIAkJaWYgKHVzZV9jb252ZXJ0KGZi KSkKIAkJCWNyZWF0ZV9jYWlyb19zdXJmYWNlX19jb252ZXJ0KGZkLCBmYik7Ci0JCWVsc2UgaWYg KHVzZV9ibGl0dGVyKGZiKSB8fCB1c2VfcmVuZGVyY29weShmYikgfHwgaWd0X3ZjNF9pc190aWxl ZChmYi0+bW9kaWZpZXIpKQorCQllbHNlIGlmICh1c2VfYmxpdHRlcihmYikgfHwgdXNlX2VuZ2lu ZWNvcHkoZmIpIHx8CisJCQkgaWd0X3ZjNF9pc190aWxlZChmYi0+bW9kaWZpZXIpKQogCQkJY3Jl YXRlX2NhaXJvX3N1cmZhY2VfX2dwdShmZCwgZmIpOwogCQllbHNlCiAJCQljcmVhdGVfY2Fpcm9f c3VyZmFjZV9fZ3R0KGZkLCBmYik7CmRpZmYgLS1naXQgYS9saWIvaW50ZWxfYXV4X3BndGFibGUu YyBiL2xpYi9pbnRlbF9hdXhfcGd0YWJsZS5jCmluZGV4IDJmMjJiYjM5Li5jYmIzYzMyMCAxMDA2 NDQKLS0tIGEvbGliL2ludGVsX2F1eF9wZ3RhYmxlLmMKKysrIGIvbGliL2ludGVsX2F1eF9wZ3Rh YmxlLmMKQEAgLTU1NSwxNiArNTU1LDIwIEBAIGdlbjEyX2NyZWF0ZV9hdXhfcGd0YWJsZV9zdGF0 ZShzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAogfQogCiB2b2lkCi1nZW4xMl9lbWl0 X2F1eF9wZ3RhYmxlX3N0YXRlKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsIHVpbnQz Ml90IHN0YXRlKQorZ2VuMTJfZW1pdF9hdXhfcGd0YWJsZV9zdGF0ZShzdHJ1Y3QgaW50ZWxfYmF0 Y2hidWZmZXIgKmJhdGNoLCB1aW50MzJfdCBzdGF0ZSwKKwkJCSAgICAgYm9vbCByZW5kZXIpCiB7 CisJdWludDMyX3QgdGFibGVfYmFzZV9yZWcgPSByZW5kZXIgPyBHRU4xMl9HRlhfQVVYX1RBQkxF X0JBU0VfQUREUiA6CisJCQkJCSAgIEdFTjEyX1ZFQk9YX0FVWF9UQUJMRV9CQVNFX0FERFI7CisK IAlpZiAoIXN0YXRlKQogCQlyZXR1cm47CiAKIAlPVVRfQkFUQ0goTUlfTE9BRF9SRUdJU1RFUl9N RU1fR0VOOCB8IE1JX01NSU9fUkVNQVBfRU5BQkxFX0dFTjEyKTsKLQlPVVRfQkFUQ0goR0VOMTJf R0ZYX0FVWF9UQUJMRV9CQVNFX0FERFIpOworCU9VVF9CQVRDSCh0YWJsZV9iYXNlX3JlZyk7CiAJ T1VUX1JFTE9DKGJhdGNoLT5ibywgMCwgMCwgc3RhdGUpOwogCiAJT1VUX0JBVENIKE1JX0xPQURf UkVHSVNURVJfTUVNX0dFTjggfCBNSV9NTUlPX1JFTUFQX0VOQUJMRV9HRU4xMik7Ci0JT1VUX0JB VENIKEdFTjEyX0dGWF9BVVhfVEFCTEVfQkFTRV9BRERSICsgNCk7CisJT1VUX0JBVENIKHRhYmxl X2Jhc2VfcmVnICsgNCk7CiAJT1VUX1JFTE9DKGJhdGNoLT5ibywgMCwgMCwgc3RhdGUgKyA0KTsK IH0KZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9hdXhfcGd0YWJsZS5oIGIvbGliL2ludGVsX2F1eF9w Z3RhYmxlLmgKaW5kZXggMjAyNzhkYjAuLmFjODJiN2QyIDEwMDY0NAotLS0gYS9saWIvaW50ZWxf YXV4X3BndGFibGUuaAorKysgYi9saWIvaW50ZWxfYXV4X3BndGFibGUuaApAQCAtMzAsNiArMzAs NyBAQCB1aW50MzJfdAogZ2VuMTJfY3JlYXRlX2F1eF9wZ3RhYmxlX3N0YXRlKHN0cnVjdCBpbnRl bF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCiAJCQkgICAgICAgZHJtX2ludGVsX2JvICphdXhfcGd0YWJs ZV9ibyk7CiB2b2lkCi1nZW4xMl9lbWl0X2F1eF9wZ3RhYmxlX3N0YXRlKHN0cnVjdCBpbnRlbF9i YXRjaGJ1ZmZlciAqYmF0Y2gsIHVpbnQzMl90IHN0YXRlKTsKK2dlbjEyX2VtaXRfYXV4X3BndGFi bGVfc3RhdGUoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwgdWludDMyX3Qgc3RhdGUs CisJCQkgICAgIGJvb2wgcmVuZGVyKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9saWIvaW50ZWxf YmF0Y2hidWZmZXIuYyBiL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jCmluZGV4IDM4MjhiYTc1Li41 MWFhZTRkYyAxMDA2NDQKLS0tIGEvbGliL2ludGVsX2JhdGNoYnVmZmVyLmMKKysrIGIvbGliL2lu dGVsX2JhdGNoYnVmZmVyLmMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJpbnRlbF9idWZt Z3IuaCIKICNpbmNsdWRlICJpbnRlbF9jaGlwc2V0LmgiCiAjaW5jbHVkZSAiaW50ZWxfcmVnLmgi CisjaW5jbHVkZSAidmVib3hjb3B5LmgiCiAjaW5jbHVkZSAicmVuZGVyY29weS5oIgogI2luY2x1 ZGUgIm1lZGlhX2ZpbGwuaCIKICNpbmNsdWRlICJpb2N0bF93cmFwcGVycy5oIgpAQCAtODUwLDYg Kzg1MSwxNiBAQCBpZ3RfcmVuZGVyX2NvcHlmdW5jX3QgaWd0X2dldF9yZW5kZXJfY29weWZ1bmMo aW50IGRldmlkKQogCXJldHVybiBjb3B5OwogfQogCitpZ3RfdmVib3hfY29weWZ1bmNfdCBpZ3Rf Z2V0X3ZlYm94X2NvcHlmdW5jKGludCBkZXZpZCkKK3sKKwlpZ3RfdmVib3hfY29weWZ1bmNfdCBj b3B5ID0gTlVMTDsKKworCWlmIChJU19HRU4xMihkZXZpZCkpCisJCWNvcHkgPSBnZW4xMl92ZWJv eF9jb3B5ZnVuYzsKKworCXJldHVybiBjb3B5OworfQorCiAvKioKICAqIGlndF9nZXRfbWVkaWFf ZmlsbGZ1bmM6CiAgKiBAZGV2aWQ6IHBjaSBkZXZpY2UgaWQKZGlmZiAtLWdpdCBhL2xpYi9pbnRl bF9iYXRjaGJ1ZmZlci5oIGIvbGliL2ludGVsX2JhdGNoYnVmZmVyLmgKaW5kZXggODg4MTg4Zjku LjM3ZTNhZmZlIDEwMDY0NAotLS0gYS9saWIvaW50ZWxfYmF0Y2hidWZmZXIuaAorKysgYi9saWIv aW50ZWxfYmF0Y2hidWZmZXIuaApAQCAtMjEzLDYgKzIxMyw3IEBAIHZvaWQgaW50ZWxfY29weV9i byhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAogZW51bSBpOTE1X2NvbXByZXNzaW9u IHsKIAlJOTE1X0NPTVBSRVNTSU9OX05PTkUsCiAJSTkxNV9DT01QUkVTU0lPTl9SRU5ERVIsCisJ STkxNV9DT01QUkVTU0lPTl9NRURJQSwKIH07CiAKIC8qKgpAQCAtMjIwLDE4ICsyMjEsMjAgQEAg ZW51bSBpOTE1X2NvbXByZXNzaW9uIHsKICAqIEBibzogdW5kZXJseWluZyBsaWJkcm0gYnVmZmVy IG9iamVjdAogICogQHN0cmlkZTogc3RyaWRlIG9mIHRoZSBidWZmZXIKICAqIEB0aWxpbmc6IHRp bGluZyBtb2RlIGJpdHMKKyAqIEBjb21wcmVzc2lvbjogbWVtb3J5IGNvbXByZXNzaW9uIG1vZGUK ICAqIEBicHA6IGJpdHMgcGVyIHBpeGVsLCA4LCAxNiBvciAzMi4KICAqIEBkYXRhOiBwb2ludGVy IHRvIHRoZSBtZW1vcnkgbWFwcGluZyBvZiB0aGUgYnVmZmVyCiAgKiBAc2l6ZTogc2l6ZSBvZiB0 aGUgYnVmZmVyIG9iamVjdAogICoKICAqIFRoaXMgaXMgYSBpLWctdCBidWZmZXIgb2JqZWN0IHdy YXBwZXIgc3RydWN0dXJlIHdoaWNoIGF1Z21lbnRzIHRoZSBiYXNlbGluZQotICogbGliZHJtIGJ1 ZmZlciBvYmplY3Qgd2l0aCBzdWl0YWJsZSBkYXRhIG5lZWRlZCBieSB0aGUgcmVuZGVyIGNvcHkg YW5kIHRoZQotICogZmlsbCBmdW5jdGlvbnMuCisgKiBsaWJkcm0gYnVmZmVyIG9iamVjdCB3aXRo IHN1aXRhYmxlIGRhdGEgbmVlZGVkIGJ5IHRoZSByZW5kZXIvdmVib3ggY29weSBhbmQKKyAqIHRo ZSBmaWxsIGZ1bmN0aW9ucy4KICAqLwogc3RydWN0IGlndF9idWYgewogCWRybV9pbnRlbF9ibyAq Ym87CiAJdWludDMyX3Qgc3RyaWRlOwogCXVpbnQzMl90IHRpbGluZzsKKwllbnVtIGk5MTVfY29t cHJlc3Npb24gY29tcHJlc3Npb247CiAJdWludDMyX3QgYnBwOwogCXVpbnQzMl90ICpkYXRhOwog CXVpbnQzMl90IHNpemU7CkBAIC0zMDcsNiArMzEwLDI5IEBAIHR5cGVkZWYgdm9pZCAoKmlndF9y ZW5kZXJfY29weWZ1bmNfdCkoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKIAogaWd0 X3JlbmRlcl9jb3B5ZnVuY190IGlndF9nZXRfcmVuZGVyX2NvcHlmdW5jKGludCBkZXZpZCk7CiAK KworLyoqCisgKiBpZ3RfdmVib3hfY29weWZ1bmNfdDoKKyAqIEBiYXRjaDogYmF0Y2hidWZmZXIg b2JqZWN0CisgKiBAc3JjOiBzb3VyY2UgaS1nLXQgYnVmZmVyIG9iamVjdAorICogQHdpZHRoOiB3 aWR0aCBvZiB0aGUgY29waWVkIHJlY3RhbmdsZQorICogQGhlaWdodDogaGVpZ2h0IG9mIHRoZSBj b3BpZWQgcmVjdGFuZ2xlCisgKiBAZHN0OiBkZXN0aW5hdGlvbiBpLWctdCBidWZmZXIgb2JqZWN0 CisgKgorICogVGhpcyBpcyB0aGUgdHlwZSBvZiB0aGUgcGVyLXBsYXRmb3JtIHZlYm94IGNvcHkg ZnVuY3Rpb25zLiBUaGUKKyAqIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9uIGNhbiBi ZSBvYnRhaW5lZCBieSBjYWxsaW5nCisgKiBpZ3RfZ2V0X3ZlYm94X2NvcHlmdW5jKCkuCisgKgor ICogQSB2ZWJveCBjb3B5IGZ1bmN0aW9uIHdpbGwgZW1pdCBhIGJhdGNoYnVmZmVyIHRvIHRoZSBr ZXJuZWwgd2hpY2ggZXhlY3V0ZXMKKyAqIHRoZSBzcGVjaWZpZWQgYmxpdCBjb3B5IG9wZXJhdGlv biB1c2luZyB0aGUgdmVib3ggZW5naW5lLgorICovCit0eXBlZGVmIHZvaWQgKCppZ3RfdmVib3hf Y29weWZ1bmNfdCkoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKKwkJCQkgICAgIGNv bnN0IHN0cnVjdCBpZ3RfYnVmICpzcmMsCisJCQkJICAgICB1bnNpZ25lZCB3aWR0aCwgdW5zaWdu ZWQgaGVpZ2h0LAorCQkJCSAgICAgY29uc3Qgc3RydWN0IGlndF9idWYgKmRzdCk7CisKK2lndF92 ZWJveF9jb3B5ZnVuY190IGlndF9nZXRfdmVib3hfY29weWZ1bmMoaW50IGRldmlkKTsKKwogLyoq CiAgKiBpZ3RfZmlsbGZ1bmNfdDoKICAqIEBiYXRjaDogYmF0Y2hidWZmZXIgb2JqZWN0CmRpZmYg LS1naXQgYS9saWIvaW50ZWxfcmVnLmggYi9saWIvaW50ZWxfcmVnLmgKaW5kZXggY2FiZmM4Nzku LjBhOWVlMzRjIDEwMDY0NAotLS0gYS9saWIvaW50ZWxfcmVnLmgKKysrIGIvbGliL2ludGVsX3Jl Zy5oCkBAIC02NzQsNiArNjc0LDcgQEAgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFM SU5HUyBJTiBUSEUgU09GVFdBUkUuCiAjZGVmaW5lIFJJTkdfSU5WQUxJRCAgICAgICAgMHgwMDAw MDAwMAogCiAjZGVmaW5lIEdFTjEyX0dGWF9BVVhfVEFCTEVfQkFTRV9BRERSCTB4NDIwMAorI2Rl ZmluZSBHRU4xMl9WRUJPWF9BVVhfVEFCTEVfQkFTRV9BRERSCTB4NDIzMAogCiAKIC8qIEJpdEJs dCBJbnN0cnVjdGlvbnMKZGlmZiAtLWdpdCBhL2xpYi9pb2N0bF93cmFwcGVycy5oIGIvbGliL2lv Y3RsX3dyYXBwZXJzLmgKaW5kZXggZTgwZTIyZjEuLjc2MTRlNjg4IDEwMDY0NAotLS0gYS9saWIv aW9jdGxfd3JhcHBlcnMuaAorKysgYi9saWIvaW9jdGxfd3JhcHBlcnMuaApAQCAtMjAyLDYgKzIw Miw3IEBAIHN0cnVjdCBsb2NhbF9kcm1fbW9kZV9mYl9jbWQyIHsKICNkZWZpbmUgTE9DQUxfSTkx NV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTCWxvY2FsX2ZvdXJjY19tb2RfY29kZShJTlRFTCwgNCkK ICNkZWZpbmUgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEX0NDUwlsb2NhbF9mb3VyY2Nf bW9kX2NvZGUoSU5URUwsIDUpCiAjZGVmaW5lIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVE X0dFTjEyX1JDX0NDUyBmb3VyY2NfbW9kX2NvZGUoSU5URUwsIDYpCisjZGVmaW5lIExPQ0FMX0k5 MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX01DX0NDUyBmb3VyY2NfbW9kX2NvZGUoSU5URUws IDcpCiAjZGVmaW5lIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDU19D QyBmb3VyY2NfbW9kX2NvZGUoSU5URUwsIDgpCiAjZGVmaW5lIExPQ0FMX0RSTV9JT0NUTF9NT0RF X0FEREZCMglEUk1fSU9XUigweEI4LAkJCVwKIAkJCQkJCSBzdHJ1Y3QgbG9jYWxfZHJtX21vZGVf ZmJfY21kMikKZGlmZiAtLWdpdCBhL2xpYi9tZXNvbi5idWlsZCBiL2xpYi9tZXNvbi5idWlsZApp bmRleCA2MmQ2MTY1NC4uNTdlYjdkOTMgMTAwNjQ0Ci0tLSBhL2xpYi9tZXNvbi5idWlsZAorKysg Yi9saWIvbWVzb24uYnVpbGQKQEAgLTY0LDYgKzY0LDcgQEAgbGliX3NvdXJjZXMgPSBbCiAJJ2ln dF9lZGlkLmMnLAogCSdpZ3RfZWxkLmMnLAogCSdpZ3RfaW5mb2ZyYW1lLmMnLAorCSd2ZWJveGNv cHlfZ2VuMTIuYycsCiBdCiAKIGxpYl9kZXBzID0gWwpkaWZmIC0tZ2l0IGEvbGliL3JlbmRlcmNv cHlfZ2VuOS5jIGIvbGliL3JlbmRlcmNvcHlfZ2VuOS5jCmluZGV4IDk5MWE2MzkzLi5iZjlkMmVl MSAxMDA2NDQKLS0tIGEvbGliL3JlbmRlcmNvcHlfZ2VuOS5jCisrKyBiL2xpYi9yZW5kZXJjb3B5 X2dlbjkuYwpAQCAtMTAzNyw3ICsxMDM3LDcgQEAgdm9pZCBfZ2VuOV9yZW5kZXJfY29weWZ1bmMo c3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKIAlPVVRfQkFUQ0goRzRYX1BJUEVMSU5F X1NFTEVDVCB8IFBJUEVMSU5FX1NFTEVDVF8zRCB8CiAJCQkJR0VOOV9QSVBFTElORV9TRUxFQ1RJ T05fTUFTSyk7CiAKLQlnZW4xMl9lbWl0X2F1eF9wZ3RhYmxlX3N0YXRlKGJhdGNoLCBhdXhfcGd0 YWJsZV9zdGF0ZSk7CisJZ2VuMTJfZW1pdF9hdXhfcGd0YWJsZV9zdGF0ZShiYXRjaCwgYXV4X3Bn dGFibGVfc3RhdGUsIHRydWUpOwogCiAJZ2VuOF9lbWl0X3NpcChiYXRjaCk7CiAKZGlmZiAtLWdp dCBhL2xpYi92ZWJveGNvcHkuaCBiL2xpYi92ZWJveGNvcHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMC4uOTQ5ZDgzYmYKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvdmVib3hj b3B5LmgKQEAgLTAsMCArMSw5IEBACisjaWZuZGVmIF9fVkVCT1hDT1BZX0hfXworI2RlZmluZSBf X1ZFQk9YQ09QWV9IX18KKwordm9pZCBnZW4xMl92ZWJveF9jb3B5ZnVuYyhzdHJ1Y3QgaW50ZWxf YmF0Y2hidWZmZXIgKmJhdGNoLAorCQkJICBjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqc3JjLAorCQkJ ICB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LAorCQkJICBjb25zdCBzdHJ1Y3QgaWd0 X2J1ZiAqZHN0KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9saWIvdmVib3hjb3B5X2dlbjEyLmMg Yi9saWIvdmVib3hjb3B5X2dlbjEyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAuLjg3ODAwOTQxCi0tLSAvZGV2L251bGwKKysrIGIvbGliL3ZlYm94Y29weV9nZW4xMi5jCkBA IC0wLDAgKzEsMjY5IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRp b24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUg aW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAq IFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJ TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu ICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT SU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8KKyNp bmNsdWRlIDxkcm0uaD4KKworI2luY2x1ZGUgImlndC5oIgorI2luY2x1ZGUgImludGVsX2F1eF9w Z3RhYmxlLmgiCisjaW5jbHVkZSAidmVib3hjb3B5LmgiCisKKyNkZWZpbmUgUjhHOEI4QThfVU5P Uk0JOAorCitzdHJ1Y3QgdmVib3hfc3VyZmFjZV9zdGF0ZSB7CisJc3RydWN0IHsKKwkJdWludDMy X3QgZHdfY291bnQ6MTI7CisJCXVpbnQzMl90IHBhZDo0OworCQl1aW50MzJfdCBzdWJfb3Bjb2Rl X2I6NTsKKwkJdWludDMyX3Qgc3ViX29wY29kZV9hOjM7CisJCXVpbnQzMl90IG1lZGlhX2NtZF9v cGNvZGU6MzsKKwkJdWludDMyX3QgbWVkaWFfY21kX3BpcGVsaW5lOjI7CisJCXVpbnQzMl90IGNt ZF90eXBlOjM7CisJfSBzczA7CisJc3RydWN0IHsKKyNkZWZpbmUgVkVCT1hfU1VSRkFDRV9JTlBV VAkwCisjZGVmaW5lIFZFQk9YX1NVUkZBQ0VfT1VUUFVUCTEKKwkJdWludDMyX3Qgc3VyZmFjZV9p ZDoxOworCQl1aW50MzJfdCBwYWQ6MzE7CisJfSBzczE7CisJc3RydWN0IHsKKwkJdWludDMyX3Qg cGFkOjQ7CisJCXVpbnQzMl90IHdpZHRoOjE0OworCQl1aW50MzJfdCBoZWlnaHQ6MTQ7CisJfSBz czI7CisJc3RydWN0IHsKKyNkZWZpbmUgVkVCT1hfVElMRV9XQUxLX1hNQUpPUiAwCisjZGVmaW5l IFZFQk9YX1RJTEVfV0FMS19ZTUFKT1IgMQorCQl1aW50MzJfdCB0aWxlX3dhbGs6MTsKKwkJdWlu dDMyX3QgdGlsZWRfc3VyZmFjZToxOworCQl1aW50MzJfdCBjaHJvbWFfaGFsZl9waXRjaDoxOwor CQl1aW50MzJfdCBzdXJmYWNlX3BpdGNoOjE3OworCQl1aW50MzJfdCBjaHJvbWFfaW50ZXJsZWF2 ZToxOworCQl1aW50MzJfdCBsc2JfcGFja2VkX2VuYWJsZToxOworCQl1aW50MzJfdCBiYXllcl9p bnB1dF9hbGlnbm1lbnQ6MjsKKwkJdWludDMyX3QgYmF5ZXJfcGF0dGVybl9mb3JtYXQ6MTsKKwkJ dWludDMyX3QgYmF5ZXJfcGF0dGVybl9vZmZzZXQ6MjsKKwkJdWludDMyX3Qgc3VyZmFjZV9mb3Jt YXQ6NTsKKwl9IHNzMzsKKwlzdHJ1Y3QgeworCQl1aW50MzJfdCB1X3lfb2Zmc2V0OjE1OworCQl1 aW50MzJfdCB1X3hfb2Zmc2V0OjEzOworCQl1aW50MzJfdCBwYWQ6NDsKKwl9IHNzNDsKKwlzdHJ1 Y3QgeworCQl1aW50MzJfdCB2X3lfb2Zmc2V0OjE1OworCQl1aW50MzJfdCB2X3hfb2Zmc2V0OjEz OworCQl1aW50MzJfdCBwYWQ6NDsKKwl9IHNzNTsKKwlzdHJ1Y3QgeworCQl1aW50MzJfdCBmcmFt ZV95X29mZnNldDoxNTsKKwkJdWludDMyX3QgZnJhbWVfeF9vZmZzZXQ6MTU7CisJCXVpbnQzMl90 IHBhZDoyOworCX0gc3M2OworCXN0cnVjdCB7CisJCXVpbnQzMl90IGRlcml2ZWRfc3VyZmFjZV9w aXRjaDoxNzsKKwkJdWludDMyX3QgcGFkOjE1OworCX0gc3M3OworCXN0cnVjdCB7CisJCXVpbnQz Ml90IHNraW5fc2NvcmVfb3V0cHV0X3N1cmZhY2VfcGl0Y2g6MTc7CisJCXVpbnQzMl90IHBhZDox NTsKKwl9IHNzODsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKK3N0cnVjdCB2ZWJveF90 aWxpbmdfY29udmVydCB7CisJc3RydWN0IHsKKwkJdWludDMyX3QgZHdfY291bnQ6MTI7CisJCXVp bnQzMl90IHBhZDo0OworCQl1aW50MzJfdCBzdWJfb3Bjb2RlX2I6NTsKKwkJdWludDMyX3Qgc3Vi X29wY29kZV9hOjM7CisJCXVpbnQzMl90IGNtZF9vcGNvZGU6MzsKKwkJdWludDMyX3QgcGlwZWxp bmU6MjsKKwkJdWludDMyX3QgY21kX3R5cGU6MzsKKwl9IHRjMDsKKwl1bmlvbiB7CisJCXN0cnVj dCB7CisJCQl1aW50NjRfdCBpbnB1dF9lbmNyeXB0ZWRfZGF0YToxOworCQkJdWludDY0X3QgaW5w dXRfbW9jc19pZHg6NjsKKwkJCXVpbnQ2NF90IGlucHV0X21lbW9yeV9jb21wcmVzc2lvbl9lbmFi bGU6MTsKKyNkZWZpbmUgQ09NUFJFU1NJT05fVFlQRV9NRURJQSAwCisjZGVmaW5lIENPTVBSRVNT SU9OX1RZUEVfUkVOREVSCTEKKwkJCXVpbnQ2NF90IGlucHV0X2NvbXByZXNzaW9uX3R5cGU6MTsK KyNkZWZpbmUgVFJNT0RFX05PTkUJMAorI2RlZmluZSBUUk1PREVfVElMRV9ZRgkxCisjZGVmaW5l IFRSTU9ERV9USUxFX1lTCTIKKwkJCXVpbnQ2NF90IGlucHV0X3RpbGVkX3Jlc291cmNlX21vZGU6 MjsKKwkJCXVpbnQ2NF90IHBhZDoxOworCQkJdWludDY0X3QgaW5wdXRfYWRkcmVzczo1MjsKKwkJ fSB0YzFfMjsKKwkJdWludDY0X3QgdGMxXzJfbDsKKwl9OworCXVuaW9uIHsKKwkJc3RydWN0IHsK KwkJCXVpbnQ2NF90IG91dHB1dF9lbmNyeXB0ZWRfZGF0YToxOworCQkJdWludDY0X3Qgb3V0cHV0 X21vY3NfaWR4OjY7CisJCQl1aW50NjRfdCBvdXRwdXRfbWVtb3J5X2NvbXByZXNzaW9uX2VuYWJs ZToxOworCQkJdWludDY0X3Qgb3V0cHV0X2NvbXByZXNzaW9uX3R5cGU6MTsKKwkJCXVpbnQ2NF90 IG91dHB1dF90aWxlZF9yZXNvdXJjZV9tb2RlOjI7CisJCQl1aW50NjRfdCBwYWQ6MTsKKwkJCXVp bnQ2NF90IG91dHB1dF9hZGRyZXNzOjUyOworCQl9IHRjM180OworCQl1aW50NjRfdCB0YzNfNF9s OworCX07Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCitzdGF0aWMgdm9pZCBlbWl0X3N1 cmZhY2Vfc3RhdGVfY21kKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCisJCQkJICAg aW50IHN1cmZhY2VfaWQsCisJCQkJICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgYnBwLAor CQkJCSAgIGludCBwaXRjaCwgdWludDMyX3QgdGlsaW5nLCBpbnQgZm9ybWF0KQoreworCXN0cnVj dCB2ZWJveF9zdXJmYWNlX3N0YXRlICpzczsKKworCXNzID0gaW50ZWxfYmF0Y2hidWZmZXJfc3Vi ZGF0YV9hbGxvYyhiYXRjaCwgc2l6ZW9mKCpzcyksIDQpOworCisJc3MtPnNzMC5jbWRfdHlwZSA9 IDM7CisJc3MtPnNzMC5tZWRpYV9jbWRfcGlwZWxpbmUgPSAyOworCXNzLT5zczAubWVkaWFfY21k X29wY29kZSA9IDQ7CisJc3MtPnNzMC5kd19jb3VudCA9IDc7CisKKwlzcy0+c3MxLnN1cmZhY2Vf aWQgPSBzdXJmYWNlX2lkOworCisJc3MtPnNzMi5oZWlnaHQgPSBoZWlnaHQgLSAxOworCXNzLT5z czIud2lkdGggPSB3aWR0aCAtIDE7CisKKwlzcy0+c3MzLnN1cmZhY2VfZm9ybWF0ID0gZm9ybWF0 OworCXNzLT5zczMuc3VyZmFjZV9waXRjaCA9IHBpdGNoIC0gMTsKKwlzcy0+c3MzLnRpbGVfd2Fs ayA9ICh0aWxpbmcgPT0gSTkxNV9USUxJTkdfWSkgfHwKKwkJCSAgICAodGlsaW5nID09IEk5MTVf VElMSU5HX1lmKTsKKwlzcy0+c3MzLnRpbGVkX3N1cmZhY2UgPSB0aWxpbmcgIT0gSTkxNV9USUxJ TkdfTk9ORTsKKworCXNzLT5zczcuZGVyaXZlZF9zdXJmYWNlX3BpdGNoID0gcGl0Y2ggLSAxOwor fQorCitzdGF0aWMgdm9pZCBlbWl0X3RpbGluZ19jb252ZXJ0X2NtZChzdHJ1Y3QgaW50ZWxfYmF0 Y2hidWZmZXIgKmJhdGNoLAorCQkJCSAgICBkcm1faW50ZWxfYm8gKmlucHV0X2JvLAorCQkJCSAg ICB1aW50MzJfdCBpbnB1dF90aWxpbmcsCisJCQkJICAgIHVpbnQzMl90IGlucHV0X2NvbXByZXNz aW9uLAorCQkJCSAgICBkcm1faW50ZWxfYm8gKm91dHB1dF9ibywKKwkJCQkgICAgdWludDMyX3Qg b3V0cHV0X3RpbGluZywKKwkJCQkgICAgdWludDMyX3Qgb3V0cHV0X2NvbXByZXNzaW9uKQorewor CXVpbnQzMl90IHJlbG9jX2RlbHRhOworCXN0cnVjdCB2ZWJveF90aWxpbmdfY29udmVydCAqdGM7 CisJaW50IHJldDsKKworCXRjID0gaW50ZWxfYmF0Y2hidWZmZXJfc3ViZGF0YV9hbGxvYyhiYXRj aCwgc2l6ZW9mKCp0YyksIDgpOworCisJdGMtPnRjMC5jbWRfdHlwZSA9IDM7CisJdGMtPnRjMC5w aXBlbGluZSA9IDI7CisJdGMtPnRjMC5jbWRfb3Bjb2RlID0gNDsKKwl0Yy0+dGMwLnN1Yl9vcGNv ZGVfYiA9IDE7CisKKwl0Yy0+dGMwLmR3X2NvdW50ID0gMzsKKworCWlmIChpbnB1dF9jb21wcmVz c2lvbiAhPSBJOTE1X0NPTVBSRVNTSU9OX05PTkUpIHsKKwkJdGMtPnRjMV8yLmlucHV0X21lbW9y eV9jb21wcmVzc2lvbl9lbmFibGUgPSAxOworCQl0Yy0+dGMxXzIuaW5wdXRfY29tcHJlc3Npb25f dHlwZSA9CisJCQlpbnB1dF9jb21wcmVzc2lvbiA9PSBJOTE1X0NPTVBSRVNTSU9OX1JFTkRFUjsK Kwl9CisJdGMtPnRjMV8yLmlucHV0X3RpbGVkX3Jlc291cmNlX21vZGUgPSBpbnB1dF90aWxpbmcg PT0gSTkxNV9USUxJTkdfWWY7CisJcmVsb2NfZGVsdGEgPSB0Yy0+dGMxXzJfbDsKKworCWlndF9h c3NlcnQoaW5wdXRfYm8tPm9mZnNldDY0ID09IEFMSUdOKGlucHV0X2JvLT5vZmZzZXQ2NCwgMHgx MDAwKSk7CisJdGMtPnRjMV8yLmlucHV0X2FkZHJlc3MgPSBpbnB1dF9iby0+b2Zmc2V0NjQgPj4g MTI7CisJaWd0X2Fzc2VydChyZWxvY19kZWx0YSA8PSBJTlQzMl9NQVgpOworCXJldCA9IGRybV9p bnRlbF9ib19lbWl0X3JlbG9jKGJhdGNoLT5ibywKKwkJCQkgICAgICBpbnRlbF9iYXRjaGJ1ZmZl cl9zdWJkYXRhX29mZnNldChiYXRjaCwgdGMpICsKKwkJCQkJb2Zmc2V0b2YodHlwZW9mKCp0Yyks IHRjMV8yKSwKKwkJCQkgICAgICBpbnB1dF9ibywgcmVsb2NfZGVsdGEsCisJCQkJICAgICAgMCwg MCk7CisJaWd0X2Fzc2VydChyZXQgPT0gMCk7CisKKwlpZiAob3V0cHV0X2NvbXByZXNzaW9uICE9 IEk5MTVfQ09NUFJFU1NJT05fTk9ORSkgeworCQl0Yy0+dGMzXzQub3V0cHV0X21lbW9yeV9jb21w cmVzc2lvbl9lbmFibGUgPSAxOworCQl0Yy0+dGMzXzQub3V0cHV0X2NvbXByZXNzaW9uX3R5cGUg PQorCQkJb3V0cHV0X2NvbXByZXNzaW9uID09IEk5MTVfQ09NUFJFU1NJT05fUkVOREVSOworCX0K Kwl0Yy0+dGMzXzQub3V0cHV0X3RpbGVkX3Jlc291cmNlX21vZGUgPSBvdXRwdXRfdGlsaW5nID09 IEk5MTVfVElMSU5HX1lmOworCXJlbG9jX2RlbHRhID0gdGMtPnRjM180X2w7CisKKwlpZ3RfYXNz ZXJ0KG91dHB1dF9iby0+b2Zmc2V0NjQgPT0gQUxJR04ob3V0cHV0X2JvLT5vZmZzZXQ2NCwgMHgx MDAwKSk7CisJdGMtPnRjM180Lm91dHB1dF9hZGRyZXNzID0gb3V0cHV0X2JvLT5vZmZzZXQ2NCA+ PiAxMjsKKwlpZ3RfYXNzZXJ0KHJlbG9jX2RlbHRhIDw9IElOVDMyX01BWCk7CisJcmV0ID0gZHJt X2ludGVsX2JvX2VtaXRfcmVsb2MoYmF0Y2gtPmJvLAorCQkJCSAgICAgIGludGVsX2JhdGNoYnVm ZmVyX3N1YmRhdGFfb2Zmc2V0KGJhdGNoLCB0YykgKworCQkJCQlvZmZzZXRvZih0eXBlb2YoKnRj KSwgdGMzXzQpLAorCQkJCSAgICAgIG91dHB1dF9ibywgcmVsb2NfZGVsdGEsCisJCQkJICAgICAg MCwgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUik7CisJaWd0X2Fzc2VydChyZXQgPT0gMCk7CisKK30K KworLyogQm9ycm93aW5nIHRoZSBpZGVhIGZyb20gdGhlIHJlbmRlcmNvcHkgc3RhdGUgc2V0dXAu ICovCisjZGVmaW5lIEJBVENIX1NUQVRFX1NQTElUIDIwNDgKKwordm9pZCBnZW4xMl92ZWJveF9j b3B5ZnVuYyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAorCQkJICBjb25zdCBzdHJ1 Y3QgaWd0X2J1ZiAqc3JjLAorCQkJICB1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0LAor CQkJICBjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqZHN0KQoreworCXN0cnVjdCBhdXhfcGd0YWJsZV9p bmZvIGF1eF9wZ3RhYmxlX2luZm8gPSB7IH07CisJdWludDMyX3QgYXV4X3BndGFibGVfc3RhdGU7 CisKKwlpZ3RfYXNzZXJ0KHNyYy0+YnBwID09IGRzdC0+YnBwKTsKKworCWludGVsX2JhdGNoYnVm ZmVyX2ZsdXNoX29uX3JpbmcoYmF0Y2gsIEk5MTVfRVhFQ19WRUJPWCk7CisKKwlpbnRlbF9iYXRj aGJ1ZmZlcl9hbGlnbihiYXRjaCwgOCk7CisKKwliYXRjaC0+cHRyID0gJmJhdGNoLT5idWZmZXJb QkFUQ0hfU1RBVEVfU1BMSVRdOworCisJZ2VuMTJfYXV4X3BndGFibGVfaW5pdCgmYXV4X3BndGFi bGVfaW5mbywgYmF0Y2gtPmJ1Zm1nciwgc3JjLCBkc3QpOworCisJYXV4X3BndGFibGVfc3RhdGUg PSBnZW4xMl9jcmVhdGVfYXV4X3BndGFibGVfc3RhdGUoYmF0Y2gsCisJCQkJCQkJICAgYXV4X3Bn dGFibGVfaW5mby5wZ3RhYmxlX2JvKTsKKworCWFzc2VydChiYXRjaC0+cHRyIDwgJmJhdGNoLT5i dWZmZXJbNDA5NV0pOworCWJhdGNoLT5wdHIgPSBiYXRjaC0+YnVmZmVyOworCisJZ2VuMTJfZW1p dF9hdXhfcGd0YWJsZV9zdGF0ZShiYXRjaCwgYXV4X3BndGFibGVfc3RhdGUsIGZhbHNlKTsKKwor CS8qIFRPRE86IGFkZCBzdXBwb3J0IGZvciBtb3JlIGZvcm1hdHMgKi8KKwlpZ3RfYXNzZXJ0KHNy Yy0+YnBwID09IDMyKTsKKwllbWl0X3N1cmZhY2Vfc3RhdGVfY21kKGJhdGNoLCBWRUJPWF9TVVJG QUNFX0lOUFVULAorCQkJICAgICAgIHdpZHRoLCBoZWlnaHQsIHNyYy0+YnBwLCBzcmMtPnN0cmlk ZSwKKwkJCSAgICAgICBzcmMtPnRpbGluZywgUjhHOEI4QThfVU5PUk0pOworCisJaWd0X2Fzc2Vy dChkc3QtPmJwcCA9PSAzMik7CisJZW1pdF9zdXJmYWNlX3N0YXRlX2NtZChiYXRjaCwgVkVCT1hf U1VSRkFDRV9PVVRQVVQsCisJCQkgICAgICAgd2lkdGgsIGhlaWdodCwgZHN0LT5icHAsIGRzdC0+ c3RyaWRlLAorCQkJICAgICAgIGRzdC0+dGlsaW5nLCBSOEc4QjhBOF9VTk9STSk7CisKKwllbWl0 X3RpbGluZ19jb252ZXJ0X2NtZChiYXRjaCwKKwkJCQlzcmMtPmJvLCBzcmMtPnRpbGluZywgc3Jj LT5jb21wcmVzc2lvbiwKKwkJCQlkc3QtPmJvLCBkc3QtPnRpbGluZywgZHN0LT5jb21wcmVzc2lv bik7CisKKwlPVVRfQkFUQ0goTUlfQkFUQ0hfQlVGRkVSX0VORCk7CisKKwlpbnRlbF9iYXRjaGJ1 ZmZlcl9mbHVzaF9vbl9yaW5nKGJhdGNoLCBJOTE1X0VYRUNfVkVCT1gpOworCisJZ2VuMTJfYXV4 X3BndGFibGVfY2xlYW51cCgmYXV4X3BndGFibGVfaW5mbyk7CisJaW50ZWxfYmF0Y2hidWZmZXJf cmVzZXQoYmF0Y2gpOworfQpkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX2NvcHku YyBiL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5LmMKaW5kZXggMTViYTE3MDQuLjljMzZmMzhi IDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jCisrKyBiL3Rlc3RzL2k5 MTUvZ2VtX3JlbmRlcl9jb3B5LmMKQEAgLTQ3MSw2ICs0NzEsNyBAQCBzdGF0aWMgdm9pZCBzY3Jh dGNoX2J1Zl9pbml0KGRhdGFfdCAqZGF0YSwgc3RydWN0IGlndF9idWYgKmJ1ZiwKIAkJYXV4X3dp ZHRoID0gc2NyYXRjaF9idWZfYXV4X3dpZHRoKGRhdGEtPmRldmlkLCBidWYpOwogCQlhdXhfaGVp Z2h0ID0gc2NyYXRjaF9idWZfYXV4X2hlaWdodChkYXRhLT5kZXZpZCwgYnVmKTsKIAorCQlidWYt PmNvbXByZXNzaW9uID0gY29tcHJlc3Npb247CiAJCWJ1Zi0+YXV4Lm9mZnNldCA9IGJ1Zi0+c3Ry aWRlICogQUxJR04oaGVpZ2h0LCAzMik7CiAJCWJ1Zi0+YXV4LnN0cmlkZSA9IGF1eF93aWR0aDsK IAotLSAKMi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=