From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH i-g-t] lib/gt: Make use of dummyload library to create recursive batch Date: Fri, 13 Jul 2018 11:06:40 +0100 Message-ID: <20180713100640.28873-1-chris@chris-wilson.co.uk> References: <20180713094607.18315-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180713094607.18315-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 Cc: igt-dev@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQW50b25pbyBBcmdlbnppYW5vIDxhbnRvbmlvLmFyZ2Vuemlhbm9AaW50ZWwuY29tPgoK QW4gaGFuZ2luZyBiYXRjaCBpcyBub3RoaW5nIG1vcmUgdGhhbiBhIHNwaW5uaW5nIGJhdGNoIHRo YXQgbmV2ZXIgZ2V0cwpzdG9wcGVkLCBzbyByZS11c2UgdGhlIHJvdXRpbmVzIGltcGxlbWVudGVk IGluIGR1bW15bG9hZC5jLgoKdjI6IExldCBjYWxsZXIgZGVjaWRlIHNwaW4gbG9vcCBzaXplCnYz OiBPbmx5IHVzZSBsb29zZSBsb29wcyBmb3IgaGFuZ3MgKENocmlzKQp2NDogTm8gcmVxdWlyZXMK djU6IEZyZWUgdGhlIHNwaW5uZXIKdjY6IENoYW1lbGl1bSBleGlzdHMuCgpTaWduZWQtb2ZmLWJ5 OiBBbnRvbmlvIEFyZ2Vuemlhbm8gPGFudG9uaW8uYXJnZW56aWFub0BpbnRlbC5jb20+ClNpZ25l ZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGxp Yi9pOTE1L2dlbV9yaW5nLmMgICAgICAgIHwgICAxICsKIGxpYi9pZ3RfYXV4LmggICAgICAgICAg ICAgIHwgMTA1IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogbGliL2lndF9jaGFtZWxp dW0uYyAgICAgICAgfCAgIDMgKy0KIGxpYi9pZ3RfY29yZS5oICAgICAgICAgICAgIHwgICA0ICsr CiBsaWIvaWd0X2R1bW15bG9hZC5oICAgICAgICB8ICAgMyArLQogbGliL2lndF9ndC5jICAgICAg ICAgICAgICAgfCAgNzIgKysrKy0tLS0tLS0tLS0tLS0tLS0tCiBsaWIvaWd0X2d0LmggICAgICAg ICAgICAgICB8ICAgOSArLS0KIGxpYi9pZ3Rfa21vZC5jICAgICAgICAgICAgIHwgICAzICstCiBs aWIvaWd0X2ttb2QuaCAgICAgICAgICAgICB8ICAgMiArLQogbGliL2lndF9saXN0LmggICAgICAg ICAgICAgfCAxMjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdGVzdHMv ZHJ2X2hhbmdtYW4uYyAgICAgICAgfCAgIDkgKystCiB0ZXN0cy9nZW1fY29uY3VycmVudF9hbGwu YyB8ICAyMyArKy0tLS0tCiB0ZXN0cy9nZW1fZXhlY19zY2hlZHVsZS5jICB8ICAgNCArLQogdGVz dHMvZ2VtX21tYXBfZ3R0LmMgICAgICAgfCAgIDIgKy0KIHRlc3RzL2dlbV9yZXNldF9zdGF0cy5j ICAgIHwgICA0ICstCiB0ZXN0cy9nZW1fc2hyaW5rLmMgICAgICAgICB8ICAgMiArLQogdGVzdHMv Z2VtX3NvZnRwaW4uYyAgICAgICAgfCAgIDcgKy0KIDE3IGZpbGVzIGNoYW5nZWQsIDE3NyBpbnNl cnRpb25zKCspLCAyMDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2lndF9s aXN0LmgKCmRpZmYgLS1naXQgYS9saWIvaTkxNS9nZW1fcmluZy5jIGIvbGliL2k5MTUvZ2VtX3Jp bmcuYwppbmRleCAwNzA4YzhhMmUuLmZkYjlmYzFiMSAxMDA2NDQKLS0tIGEvbGliL2k5MTUvZ2Vt X3JpbmcuYworKysgYi9saWIvaTkxNS9nZW1fcmluZy5jCkBAIC0yNSw2ICsyNSw3IEBACiAKICNp bmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxzeXMv dGltZS5oPgogCiAjaW5jbHVkZSAiaW50ZWxfcmVnLmgiCiAjaW5jbHVkZSAiZHJtdGVzdC5oIgpk aWZmIC0tZ2l0IGEvbGliL2lndF9hdXguaCBiL2xpYi9pZ3RfYXV4LmgKaW5kZXggOWE5NjI4ODFi Li42MzlhOTA3NzggMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfYXV4LmgKKysrIGIvbGliL2lndF9hdXgu aApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgPGludGVsX2J1Zm1nci5oPgogI2luY2x1ZGUg PGludHR5cGVzLmg+CiAjaW5jbHVkZSA8c3RkYm9vbC5oPgotI2luY2x1ZGUgPHN0ZGRlZi5oPgog I2luY2x1ZGUgPHN5cy90aW1lLmg+CiAKICNpbmNsdWRlIDxpOTE1L2dlbV9zdWJtaXNzaW9uLmg+ CkBAIC0zOSwxMiArMzgsNiBAQAogZXh0ZXJuIGRybV9pbnRlbF9ibyAqKnRyYXNoX2JvczsKIGV4 dGVybiBpbnQgbnVtX3RyYXNoX2JvczsKIAotLyogc2lnbmFsIGludGVycnVwdCBoZWxwZXJzICov Ci0KLSNkZWZpbmUgTVNFQ19QRVJfU0VDICgxMDAwKQotI2RlZmluZSBVU0VDX1BFUl9TRUMgKDEw MDAqTVNFQ19QRVJfU0VDKQotI2RlZmluZSBOU0VDX1BFUl9TRUMgKDEwMDAqVVNFQ19QRVJfU0VD KQotCiAvKiBzaWduYWwgaW50ZXJydXB0IGhlbHBlcnMgKi8KICNkZWZpbmUgZ2V0dGlkKCkgc3lz Y2FsbChfX05SX2dldHRpZCkKICNkZWZpbmUgc2lnZXZfbm90aWZ5X3RocmVhZF9pZCBfc2lnZXZf dW4uX3RpZApAQCAtMjk1LDEwNCArMjg4LDYgQEAgdm9pZCBpZ3Rfc2V0X21vZHVsZV9wYXJhbV9p bnQoY29uc3QgY2hhciAqbmFtZSwgaW50IHZhbCk7CiBpbnQgaWd0X3Rlcm1pbmF0ZV9wcm9jZXNz KGludCBzaWcsIGNvbnN0IGNoYXIgKmNvbW0pOwogdm9pZCBpZ3RfbHNvZihjb25zdCBjaGFyICpk cGF0aCk7CiAKLS8qCi0gKiBUaGlzIGxpc3QgZGF0YSBzdHJ1Y3R1cmUgaXMgYSB2ZXJiYXRpbSBj b3B5IGZyb20gd2F5bGFuZC11dGlsLmggZnJvbSB0aGUKLSAqIFdheWxhbmQgcHJvamVjdDsgZXhj ZXB0IHRoYXQgd2xfIHByZWZpeCBoYXMgYmVlbiByZW1vdmVkLgotICovCi0KLXN0cnVjdCBpZ3Rf bGlzdCB7Ci0Jc3RydWN0IGlndF9saXN0ICpwcmV2OwotCXN0cnVjdCBpZ3RfbGlzdCAqbmV4dDsK LX07Ci0KLSNkZWZpbmUgX19JR1RfSU5JVF9MSVNUKG5hbWUpIHsgJihuYW1lKSwgJihuYW1lKSB9 Ci0jZGVmaW5lIElHVF9MSVNUKG5hbWUpIHN0cnVjdCBpZ3RfbGlzdCBuYW1lID0gX19JR1RfSU5J VF9MSVNUKG5hbWUpCi0KLXN0YXRpYyBpbmxpbmUgdm9pZCBpZ3RfbGlzdF9pbml0KHN0cnVjdCBp Z3RfbGlzdCAqbGlzdCkKLXsKLQlsaXN0LT5wcmV2ID0gbGlzdDsKLQlsaXN0LT5uZXh0ID0gbGlz dDsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIF9faWd0X2xpc3RfYWRkKHN0cnVjdCBpZ3RfbGlz dCAqbGlzdCwKLQkJCQkgIHN0cnVjdCBpZ3RfbGlzdCAqcHJldiwKLQkJCQkgIHN0cnVjdCBpZ3Rf bGlzdCAqbmV4dCkKLXsKLQluZXh0LT5wcmV2ID0gbGlzdDsKLQlsaXN0LT5uZXh0ID0gbmV4dDsK LQlsaXN0LT5wcmV2ID0gcHJldjsKLQlwcmV2LT5uZXh0ID0gbGlzdDsKLX0KLQotc3RhdGljIGlu bGluZSB2b2lkIGlndF9saXN0X2FkZChzdHJ1Y3QgaWd0X2xpc3QgKmVsbSwgc3RydWN0IGlndF9s aXN0ICpsaXN0KQotewotCV9faWd0X2xpc3RfYWRkKGVsbSwgbGlzdCwgbGlzdC0+bmV4dCk7Ci19 Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBpZ3RfbGlzdF9hZGRfdGFpbChzdHJ1Y3QgaWd0X2xpc3Qg KmVsbSwKLQkJCQkgICAgIHN0cnVjdCBpZ3RfbGlzdCAqbGlzdCkKLXsKLQlfX2lndF9saXN0X2Fk ZChlbG0sIGxpc3QtPnByZXYsIGxpc3QpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgX19pZ3Rf bGlzdF9kZWwoc3RydWN0IGlndF9saXN0ICpwcmV2LCBzdHJ1Y3QgaWd0X2xpc3QgKm5leHQpCi17 Ci0JbmV4dC0+cHJldiA9IHByZXY7Ci0JcHJldi0+bmV4dCA9IG5leHQ7Ci19Ci0KLXN0YXRpYyBp bmxpbmUgdm9pZCBpZ3RfbGlzdF9kZWwoc3RydWN0IGlndF9saXN0ICplbG0pCi17Ci0JX19pZ3Rf bGlzdF9kZWwoZWxtLT5wcmV2LCBlbG0tPm5leHQpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQg aWd0X2xpc3RfbW92ZShzdHJ1Y3QgaWd0X2xpc3QgKmVsbSwgc3RydWN0IGlndF9saXN0ICpsaXN0 KQotewotCWlndF9saXN0X2RlbChlbG0pOwotCWlndF9saXN0X2FkZChlbG0sIGxpc3QpOwotfQot Ci1zdGF0aWMgaW5saW5lIHZvaWQgaWd0X2xpc3RfbW92ZV90YWlsKHN0cnVjdCBpZ3RfbGlzdCAq ZWxtLAotCQkJCSAgICAgIHN0cnVjdCBpZ3RfbGlzdCAqbGlzdCkKLXsKLQlpZ3RfbGlzdF9kZWwo ZWxtKTsKLQlpZ3RfbGlzdF9hZGRfdGFpbChlbG0sIGxpc3QpOwotfQotCi1zdGF0aWMgaW5saW5l IGJvb2wgaWd0X2xpc3RfZW1wdHkoY29uc3Qgc3RydWN0IGlndF9saXN0ICpsaXN0KQotewotCXJl dHVybiBsaXN0LT5uZXh0ID09IGxpc3Q7Ci19Ci0KLSNkZWZpbmUgY29udGFpbmVyX29mKHB0ciwg c2FtcGxlLCBtZW1iZXIpCQkJCVwKLQkodHlwZW9mKHNhbXBsZSkpKChjaGFyICopKHB0cikgLSBv ZmZzZXRvZih0eXBlb2YoKnNhbXBsZSksIG1lbWJlcikpCi0KLSNkZWZpbmUgaWd0X2xpc3RfZmly c3RfZW50cnkoaGVhZCwgcG9zLCBtZW1iZXIpIFwKLQljb250YWluZXJfb2YoKGhlYWQpLT5uZXh0 LCAocG9zKSwgbWVtYmVyKQotI2RlZmluZSBpZ3RfbGlzdF9sYXN0X2VudHJ5KGhlYWQsIHBvcywg bWVtYmVyKSBcCi0JY29udGFpbmVyX29mKChoZWFkKS0+cHJldiwgKHBvcyksIG1lbWJlcikKLQot I2RlZmluZSBpZ3RfbGlzdF9uZXh0X2VudHJ5KHBvcywgbWVtYmVyKSBcCi0JY29udGFpbmVyX29m KChwb3MpLT5tZW1iZXIubmV4dCwgKHBvcyksIG1lbWJlcikKLSNkZWZpbmUgaWd0X2xpc3RfcHJl dl9lbnRyeShwb3MsIG1lbWJlcikgXAotCWNvbnRhaW5lcl9vZigocG9zKS0+bWVtYmVyLnByZXYs IChwb3MpLCBtZW1iZXIpCi0KLSNkZWZpbmUgaWd0X2xpc3RfZm9yX2VhY2gocG9zLCBoZWFkLCBt ZW1iZXIpCQkJCVwKLQlmb3IgKHBvcyA9IGlndF9saXN0X2ZpcnN0X2VudHJ5KGhlYWQsIHBvcywg bWVtYmVyKTsJCVwKLQkgICAgICZwb3MtPm1lbWJlciAhPSAoaGVhZCk7CQkJCQlcCi0JICAgICBw b3MgPSBpZ3RfbGlzdF9uZXh0X2VudHJ5KHBvcywgbWVtYmVyKSkKLQotI2RlZmluZSBpZ3RfbGlz dF9mb3JfZWFjaF9yZXZlcnNlKHBvcywgaGVhZCwgbWVtYmVyKQkJCVwKLQlmb3IgKHBvcyA9IGln dF9saXN0X2xhc3RfZW50cnkoaGVhZCwgcG9zLCBtZW1iZXIpOwkJXAotCSAgICAgJnBvcy0+bWVt YmVyICE9IChoZWFkKTsJCQkJCVwKLQkgICAgIHBvcyA9IGlndF9saXN0X3ByZXZfZW50cnkocG9z LCBtZW1iZXIpKQotCi0jZGVmaW5lIGlndF9saXN0X2Zvcl9lYWNoX3NhZmUocG9zLCB0bXAsIGhl YWQsIG1lbWJlcikJCQlcCi0JZm9yIChwb3MgPSBpZ3RfbGlzdF9maXJzdF9lbnRyeShoZWFkLCBw b3MsIG1lbWJlciksCQlcCi0JICAgICB0bXAgPSBpZ3RfbGlzdF9uZXh0X2VudHJ5KHBvcywgbWVt YmVyKTsJCQlcCi0JICAgICAmcG9zLT5tZW1iZXIgIT0gKGhlYWQpOwkJCQkJXAotCSAgICAgcG9z ID0gdG1wLCB0bXAgPSBpZ3RfbGlzdF9uZXh0X2VudHJ5KHBvcywgbWVtYmVyKSkKLQogI2RlZmlu ZSBpZ3RfaHdlaWdodCh4KSBcCiAJX19idWlsdGluX2Nob29zZV9leHByKHNpemVvZih4KSA9PSA4 LCBcCiAJCQkgICAgICBfX2J1aWx0aW5fcG9wY291bnRsbCh4KSwgXApkaWZmIC0tZ2l0IGEvbGli L2lndF9jaGFtZWxpdW0uYyBiL2xpYi9pZ3RfY2hhbWVsaXVtLmMKaW5kZXggYjI1ODU1YTQxLi5i ODQxOGUxM2UgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfY2hhbWVsaXVtLmMKKysrIGIvbGliL2lndF9j aGFtZWxpdW0uYwpAQCAtMzgsOCArMzgsOSBAQAogI2luY2x1ZGUgImlndF9jaGFtZWxpdW0uaCIK ICNpbmNsdWRlICJpZ3RfY29yZS5oIgogI2luY2x1ZGUgImlndF9hdXguaCIKLSNpbmNsdWRlICJp Z3Rfa21zLmgiCiAjaW5jbHVkZSAiaWd0X2ZyYW1lLmgiCisjaW5jbHVkZSAiaWd0X2xpc3QuaCIK KyNpbmNsdWRlICJpZ3Rfa21zLmgiCiAjaW5jbHVkZSAiaWd0X3JjLmgiCiAKIC8qKgpkaWZmIC0t Z2l0IGEvbGliL2lndF9jb3JlLmggYi9saWIvaWd0X2NvcmUuaAppbmRleCBhNzNiMDY0OTMuLmFh ZjFiNjI2OCAxMDA2NDQKLS0tIGEvbGliL2lndF9jb3JlLmgKKysrIGIvbGliL2lndF9jb3JlLmgK QEAgLTEwMDUsNCArMTAwNSw4IEBAIHZvaWQgaWd0X2ttc2coY29uc3QgY2hhciAqZm9ybWF0LCAu Li4pOwogCiAjZGVmaW5lIFJFQURfT05DRSh4KSAoKih2b2xhdGlsZSB0eXBlb2YoeCkgKikoJih4 KSkpCiAKKyNkZWZpbmUgTVNFQ19QRVJfU0VDICgxMDAwKQorI2RlZmluZSBVU0VDX1BFUl9TRUMg KDEwMDAqTVNFQ19QRVJfU0VDKQorI2RlZmluZSBOU0VDX1BFUl9TRUMgKDEwMDAqVVNFQ19QRVJf U0VDKQorCiAjZW5kaWYgLyogSUdUX0NPUkVfSCAqLwpkaWZmIC0tZ2l0IGEvbGliL2lndF9kdW1t eWxvYWQuaCBiL2xpYi9pZ3RfZHVtbXlsb2FkLmgKaW5kZXggMzhiYzc2ODJlLi43M2JkMDM1YjQg MTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZHVtbXlsb2FkLmgKKysrIGIvbGliL2lndF9kdW1teWxvYWQu aApAQCAtMjgsNyArMjgsOCBAQAogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHRpbWUu aD4KIAotI2luY2x1ZGUgImlndF9hdXguaCIKKyNpbmNsdWRlICJpZ3RfY29yZS5oIgorI2luY2x1 ZGUgImlndF9saXN0LmgiCiAjaW5jbHVkZSAiaTkxNV9kcm0uaCIKIAogdHlwZWRlZiBzdHJ1Y3Qg aWd0X3NwaW4gewpkaWZmIC0tZ2l0IGEvbGliL2lndF9ndC5jIGIvbGliL2lndF9ndC5jCmluZGV4 IDg5YjMxOGFlNi4uYTIwNjE5MjQ2IDEwMDY0NAotLS0gYS9saWIvaWd0X2d0LmMKKysrIGIvbGli L2lndF9ndC5jCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiaW9jdGxfd3JhcHBlcnMuaCIK ICNpbmNsdWRlICJpbnRlbF9yZWcuaCIKICNpbmNsdWRlICJpbnRlbF9jaGlwc2V0LmgiCisjaW5j bHVkZSAiaWd0X2R1bW15bG9hZC5oIgogCiAvKioKICAqIFNFQ1RJT046aWd0X2d0CkBAIC0yNjUs MjAgKzI2NiwxMSBAQCBzdGF0aWMgYm9vbCBoYXNfY3R4X2V4ZWMoaW50IGZkLCB1bnNpZ25lZCBy aW5nLCB1aW50MzJfdCBjdHgpCiAgKiBSZXR1cm5zOgogICogU3RydWN0dXJlIHdpdGggaGVscGVy IGludGVybmFsIHN0YXRlIGZvciBpZ3RfcG9zdF9oYW5nX3JpbmcoKS4KICAqLwotaWd0X2hhbmdf dCBpZ3RfaGFuZ19jdHgoaW50IGZkLAotCQkJdWludDMyX3QgY3R4LAotCQkJaW50IHJpbmcsCi0J CQl1bnNpZ25lZCBmbGFncywKLQkJCXVpbnQ2NF90ICpvZmZzZXQpCitpZ3RfaGFuZ190IGlndF9o YW5nX2N0eChpbnQgZmQsIHVpbnQzMl90IGN0eCwgaW50IHJpbmcsIHVuc2lnbmVkIGZsYWdzKQog ewotCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvYzsKLQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9l eGVjX29iamVjdDIgZXhlYzsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gcGFy YW07Ci0JdWludDMyX3QgYlsxNl07CisJaWd0X3NwaW5fdCAqc3BpbjsKIAl1bnNpZ25lZCBiYW47 Ci0JdW5zaWduZWQgbGVuOwotCWludCBnZW47CiAKIAlpZ3RfcmVxdWlyZV9oYW5nX3JpbmcoZmQs IHJpbmcpOwogCkBAIC0zMDIsNTIgKzI5NCwxMiBAQCBpZ3RfaGFuZ190IGlndF9oYW5nX2N0eChp bnQgZmQsCiAJaWYgKChmbGFncyAmIEhBTkdfQUxMT1dfQkFOKSA9PSAwKQogCQljb250ZXh0X3Nl dF9iYW4oZmQsIGN0eCwgMCk7CiAKLQltZW1zZXQoJnJlbG9jLCAwLCBzaXplb2YocmVsb2MpKTsK LQltZW1zZXQoJmV4ZWMsIDAsIHNpemVvZihleGVjKSk7Ci0JbWVtc2V0KCZleGVjYnVmLCAwLCBz aXplb2YoZXhlY2J1ZikpOwotCi0JZXhlYy5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsK LQlleGVjLnJlbG9jYXRpb25fY291bnQgPSAxOwotCWV4ZWMucmVsb2NzX3B0ciA9IHRvX3VzZXJf cG9pbnRlcigmcmVsb2MpOwotCi0JbWVtc2V0KGIsIDB4YzUsIHNpemVvZihiKSk7Ci0KLQlsZW4g PSAwOwotCWdlbiA9IGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSk7Ci0JaWYgKGdl biA+PSA4KSB7Ci0JCWJbbGVuKytdID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwgMSA8PCA4IHwg MTsKLQkJYltsZW4rK10gPSAwOwotCQliW2xlbisrXSA9IDA7Ci0JfSBlbHNlIGlmIChnZW4gPj0g NikgewotCQliW2xlbisrXSA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IDEgPDwgODsKLQkJYlts ZW4rK10gPSAwOwotCX0gZWxzZSB7Ci0JCWJbbGVuKytdID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJU IHwgMiA8PCA2OwotCQliW2xlbl0gPSAwOwotCQlpZiAoZ2VuIDwgNCkgewotCQkJYltsZW5dIHw9 IDE7Ci0JCQlyZWxvYy5kZWx0YSA9IDE7Ci0JCX0KLQkJbGVuKys7Ci0JfQotCWJbbGVuKytdID0g TUlfQkFUQ0hfQlVGRkVSX0VORDsKLQliW2xlbl0gPSBNSV9OT09QOwotCWdlbV93cml0ZShmZCwg ZXhlYy5oYW5kbGUsIDAsIGIsIHNpemVvZihiKSk7Ci0KLQlyZWxvYy5vZmZzZXQgPSBzaXplb2Yo dWludDMyX3QpOwotCXJlbG9jLnRhcmdldF9oYW5kbGUgPSBleGVjLmhhbmRsZTsKLQlyZWxvYy5y ZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fQ09NTUFORDsKLQotCWV4ZWNidWYuYnVmZmVy c19wdHIgPSB0b191c2VyX3BvaW50ZXIoJmV4ZWMpOwotCWV4ZWNidWYuYnVmZmVyX2NvdW50ID0g MTsKLQlleGVjYnVmLmZsYWdzID0gcmluZzsKLQlpOTE1X2V4ZWNidWZmZXIyX3NldF9jb250ZXh0 X2lkKGV4ZWNidWYsIGN0eCk7Ci0JZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKTsKLQotCWlmIChv ZmZzZXQpCi0JCSpvZmZzZXQgPSBleGVjLm9mZnNldDsKKwlzcGluID0gX19pZ3Rfc3Bpbl9iYXRj aF9uZXcoZmQsCisJCQkJICAgIC5jdHggPSBjdHgsCisJCQkJICAgIC5lbmdpbmUgPSByaW5nLAor CQkJCSAgICAuZmxhZ3MgPSBJR1RfU1BJTl9OT19QUkVFTVBUSU9OKTsKIAotCXJldHVybiAoaWd0 X2hhbmdfdCl7IGV4ZWMuaGFuZGxlLCBjdHgsIGJhbiwgZmxhZ3MgfTsKKwlyZXR1cm4gKGlndF9o YW5nX3QpeyBzcGluLCBjdHgsIGJhbiwgZmxhZ3MgfTsKIH0KIAogLyoqCkBAIC0zNjQsNyArMzE2 LDcgQEAgaWd0X2hhbmdfdCBpZ3RfaGFuZ19jdHgoaW50IGZkLAogICovCiBpZ3RfaGFuZ190IGln dF9oYW5nX3JpbmcoaW50IGZkLCBpbnQgcmluZykKIHsKLQlyZXR1cm4gaWd0X2hhbmdfY3R4KGZk LCAwLCByaW5nLCAwLCBOVUxMKTsKKwlyZXR1cm4gaWd0X2hhbmdfY3R4KGZkLCAwLCByaW5nLCAw KTsKIH0KIAogLyoqCkBAIC0zNzcsMTEgKzMyOSwxMSBAQCBpZ3RfaGFuZ190IGlndF9oYW5nX3Jp bmcoaW50IGZkLCBpbnQgcmluZykKICAqLwogdm9pZCBpZ3RfcG9zdF9oYW5nX3JpbmcoaW50IGZk LCBpZ3RfaGFuZ190IGFyZykKIHsKLQlpZiAoYXJnLmhhbmRsZSA9PSAwKQorCWlmICghYXJnLnNw aW4pCiAJCXJldHVybjsKIAotCWdlbV9zeW5jKGZkLCBhcmcuaGFuZGxlKTsKLQlnZW1fY2xvc2Uo ZmQsIGFyZy5oYW5kbGUpOworCWdlbV9zeW5jKGZkLCBhcmcuc3Bpbi0+aGFuZGxlKTsgLyogV2Fp dCB1bnRpbCBpdCBoYW5ncyAqLworCWlndF9zcGluX2JhdGNoX2ZyZWUoZmQsIGFyZy5zcGluKTsK IAogCWNvbnRleHRfc2V0X2JhbihmZCwgYXJnLmN0eCwgYXJnLmJhbik7CiAKZGlmZiAtLWdpdCBh L2xpYi9pZ3RfZ3QuaCBiL2xpYi9pZ3RfZ3QuaAppbmRleCBkNDRiNzU1MmYuLjU0ZTk1ZGE5OCAx MDA2NDQKLS0tIGEvbGliL2lndF9ndC5oCisrKyBiL2xpYi9pZ3RfZ3QuaApAQCAtMjUsNiArMjUs NyBAQAogI2RlZmluZSBJR1RfR1RfSAogCiAjaW5jbHVkZSAiaWd0X2RlYnVnZnMuaCIKKyNpbmNs dWRlICJpZ3RfZHVtbXlsb2FkLmgiCiAjaW5jbHVkZSAiaWd0X2NvcmUuaCIKIAogI2luY2x1ZGUg Imk5MTVfZHJtLmgiCkBAIC0zMiw3ICszMyw3IEBACiB2b2lkIGlndF9yZXF1aXJlX2hhbmdfcmlu ZyhpbnQgZmQsIGludCByaW5nKTsKIAogdHlwZWRlZiBzdHJ1Y3QgaWd0X2hhbmcgewotCXVuc2ln bmVkIGhhbmRsZTsKKwlpZ3Rfc3Bpbl90ICpzcGluOwogCXVuc2lnbmVkIGN0eDsKIAl1bnNpZ25l ZCBiYW47CiAJdW5zaWduZWQgZmxhZ3M7CkBAIC00MywxMSArNDQsNyBAQCB2b2lkIGlndF9kaXNh bGxvd19oYW5nKGludCBmZCwgaWd0X2hhbmdfdCBhcmcpOwogCiAjZGVmaW5lIEhBTkdfUE9JU09O IDB4YzVjNWM1YzUKIAotaWd0X2hhbmdfdCBpZ3RfaGFuZ19jdHgoaW50IGZkLAotCQkJdWludDMy X3QgY3R4LAotCQkJaW50IHJpbmcsCi0JCQl1bnNpZ25lZCBmbGFncywKLQkJCXVpbnQ2NF90ICpv ZmZzZXQpOworaWd0X2hhbmdfdCBpZ3RfaGFuZ19jdHgoaW50IGZkLCB1aW50MzJfdCBjdHgsIGlu dCByaW5nLCB1bnNpZ25lZCBmbGFncyk7CiAjZGVmaW5lIEhBTkdfQUxMT1dfQkFOIDEKICNkZWZp bmUgSEFOR19BTExPV19DQVBUVVJFIDIKIApkaWZmIC0tZ2l0IGEvbGliL2lndF9rbW9kLmMgYi9s aWIvaWd0X2ttb2QuYwppbmRleCBmM2YzNGE2MmQuLmIyZjRmODg0YiAxMDA2NDQKLS0tIGEvbGli L2lndF9rbW9kLmMKKysrIGIvbGliL2lndF9rbW9kLmMKQEAgLTI0LDkgKzI0LDEwIEBACiAjaW5j bHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KIAorI2luY2x1ZGUgImlndF9hdXgu aCIKICNpbmNsdWRlICJpZ3RfY29yZS5oIgotI2luY2x1ZGUgImlndF9zeXNmcy5oIgogI2luY2x1 ZGUgImlndF9rbW9kLmgiCisjaW5jbHVkZSAiaWd0X3N5c2ZzLmgiCiAKIC8qKgogICogU0VDVElP TjppZ3Rfa21vZApkaWZmIC0tZ2l0IGEvbGliL2lndF9rbW9kLmggYi9saWIvaWd0X2ttb2QuaApp bmRleCBmZDMwN2E0NTYuLjg3ZDM2ZDQwMCAxMDA2NDQKLS0tIGEvbGliL2lndF9rbW9kLmgKKysr IGIvbGliL2lndF9rbW9kLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGxpYmttb2Qu aD4KIAotI2luY2x1ZGUgImlndF9hdXguaCIKKyNpbmNsdWRlICJpZ3RfbGlzdC5oIgogCiBib29s IGlndF9rbW9kX2lzX2xvYWRlZChjb25zdCBjaGFyICptb2RfbmFtZSk7CiB2b2lkIGlndF9rbW9k X2xpc3RfbG9hZGVkKHZvaWQpOwpkaWZmIC0tZ2l0IGEvbGliL2lndF9saXN0LmggYi9saWIvaWd0 X2xpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjc0NGY0ZWNmOQot LS0gL2Rldi9udWxsCisrKyBiL2xpYi9pZ3RfbGlzdC5oCkBAIC0wLDAgKzEsMTI4IEBACisvKgor ICogQ29weXJpZ2h0IMKpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9u IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p bmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSBy aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBz dWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8g ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRp bmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGll cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRI RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL SU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAor ICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xB SU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0Yg T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERF QUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpZm5kZWYgSUdUX0xJU1Rf SAorI2RlZmluZSBJR1RfTElTVF9ICisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworLyoKKyAqIFRo aXMgbGlzdCBkYXRhIHN0cnVjdHVyZSBpcyBhIHZlcmJhdGltIGNvcHkgZnJvbSB3YXlsYW5kLXV0 aWwuaCBmcm9tIHRoZQorICogV2F5bGFuZCBwcm9qZWN0OyBleGNlcHQgdGhhdCB3bF8gcHJlZml4 IGhhcyBiZWVuIHJlbW92ZWQuCisgKi8KKworc3RydWN0IGlndF9saXN0IHsKKwlzdHJ1Y3QgaWd0 X2xpc3QgKnByZXY7CisJc3RydWN0IGlndF9saXN0ICpuZXh0OworfTsKKworI2RlZmluZSBfX0lH VF9JTklUX0xJU1QobmFtZSkgeyAmKG5hbWUpLCAmKG5hbWUpIH0KKyNkZWZpbmUgSUdUX0xJU1Qo bmFtZSkgc3RydWN0IGlndF9saXN0IG5hbWUgPSBfX0lHVF9JTklUX0xJU1QobmFtZSkKKworc3Rh dGljIGlubGluZSB2b2lkIGlndF9saXN0X2luaXQoc3RydWN0IGlndF9saXN0ICpsaXN0KQorewor CWxpc3QtPnByZXYgPSBsaXN0OworCWxpc3QtPm5leHQgPSBsaXN0OworfQorCitzdGF0aWMgaW5s aW5lIHZvaWQgX19pZ3RfbGlzdF9hZGQoc3RydWN0IGlndF9saXN0ICpsaXN0LAorCQkJCSAgc3Ry dWN0IGlndF9saXN0ICpwcmV2LAorCQkJCSAgc3RydWN0IGlndF9saXN0ICpuZXh0KQoreworCW5l eHQtPnByZXYgPSBsaXN0OworCWxpc3QtPm5leHQgPSBuZXh0OworCWxpc3QtPnByZXYgPSBwcmV2 OworCXByZXYtPm5leHQgPSBsaXN0OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgaWd0X2xpc3Rf YWRkKHN0cnVjdCBpZ3RfbGlzdCAqZWxtLCBzdHJ1Y3QgaWd0X2xpc3QgKmxpc3QpCit7CisJX19p Z3RfbGlzdF9hZGQoZWxtLCBsaXN0LCBsaXN0LT5uZXh0KTsKK30KKworc3RhdGljIGlubGluZSB2 b2lkIGlndF9saXN0X2FkZF90YWlsKHN0cnVjdCBpZ3RfbGlzdCAqZWxtLAorCQkJCSAgICAgc3Ry dWN0IGlndF9saXN0ICpsaXN0KQoreworCV9faWd0X2xpc3RfYWRkKGVsbSwgbGlzdC0+cHJldiwg bGlzdCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2lndF9saXN0X2RlbChzdHJ1Y3QgaWd0 X2xpc3QgKnByZXYsIHN0cnVjdCBpZ3RfbGlzdCAqbmV4dCkKK3sKKwluZXh0LT5wcmV2ID0gcHJl djsKKwlwcmV2LT5uZXh0ID0gbmV4dDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGlndF9saXN0 X2RlbChzdHJ1Y3QgaWd0X2xpc3QgKmVsbSkKK3sKKwlfX2lndF9saXN0X2RlbChlbG0tPnByZXYs IGVsbS0+bmV4dCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpZ3RfbGlzdF9tb3ZlKHN0cnVj dCBpZ3RfbGlzdCAqZWxtLCBzdHJ1Y3QgaWd0X2xpc3QgKmxpc3QpCit7CisJaWd0X2xpc3RfZGVs KGVsbSk7CisJaWd0X2xpc3RfYWRkKGVsbSwgbGlzdCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9p ZCBpZ3RfbGlzdF9tb3ZlX3RhaWwoc3RydWN0IGlndF9saXN0ICplbG0sCisJCQkJICAgICAgc3Ry dWN0IGlndF9saXN0ICpsaXN0KQoreworCWlndF9saXN0X2RlbChlbG0pOworCWlndF9saXN0X2Fk ZF90YWlsKGVsbSwgbGlzdCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpZ3RfbGlzdF9lbXB0 eShjb25zdCBzdHJ1Y3QgaWd0X2xpc3QgKmxpc3QpCit7CisJcmV0dXJuIGxpc3QtPm5leHQgPT0g bGlzdDsKK30KKworI2RlZmluZSBjb250YWluZXJfb2YocHRyLCBzYW1wbGUsIG1lbWJlcikJCQkJ XAorCSh0eXBlb2Yoc2FtcGxlKSkoKGNoYXIgKikocHRyKSAtIG9mZnNldG9mKHR5cGVvZigqc2Ft cGxlKSwgbWVtYmVyKSkKKworI2RlZmluZSBpZ3RfbGlzdF9maXJzdF9lbnRyeShoZWFkLCBwb3Ms IG1lbWJlcikgXAorCWNvbnRhaW5lcl9vZigoaGVhZCktPm5leHQsIChwb3MpLCBtZW1iZXIpCisj ZGVmaW5lIGlndF9saXN0X2xhc3RfZW50cnkoaGVhZCwgcG9zLCBtZW1iZXIpIFwKKwljb250YWlu ZXJfb2YoKGhlYWQpLT5wcmV2LCAocG9zKSwgbWVtYmVyKQorCisjZGVmaW5lIGlndF9saXN0X25l eHRfZW50cnkocG9zLCBtZW1iZXIpIFwKKwljb250YWluZXJfb2YoKHBvcyktPm1lbWJlci5uZXh0 LCAocG9zKSwgbWVtYmVyKQorI2RlZmluZSBpZ3RfbGlzdF9wcmV2X2VudHJ5KHBvcywgbWVtYmVy KSBcCisJY29udGFpbmVyX29mKChwb3MpLT5tZW1iZXIucHJldiwgKHBvcyksIG1lbWJlcikKKwor I2RlZmluZSBpZ3RfbGlzdF9mb3JfZWFjaChwb3MsIGhlYWQsIG1lbWJlcikJCQkJXAorCWZvciAo cG9zID0gaWd0X2xpc3RfZmlyc3RfZW50cnkoaGVhZCwgcG9zLCBtZW1iZXIpOwkJXAorCSAgICAg JnBvcy0+bWVtYmVyICE9IChoZWFkKTsJCQkJCVwKKwkgICAgIHBvcyA9IGlndF9saXN0X25leHRf ZW50cnkocG9zLCBtZW1iZXIpKQorCisjZGVmaW5lIGlndF9saXN0X2Zvcl9lYWNoX3JldmVyc2Uo cG9zLCBoZWFkLCBtZW1iZXIpCQkJXAorCWZvciAocG9zID0gaWd0X2xpc3RfbGFzdF9lbnRyeSho ZWFkLCBwb3MsIG1lbWJlcik7CQlcCisJICAgICAmcG9zLT5tZW1iZXIgIT0gKGhlYWQpOwkJCQkJ XAorCSAgICAgcG9zID0gaWd0X2xpc3RfcHJldl9lbnRyeShwb3MsIG1lbWJlcikpCisKKyNkZWZp bmUgaWd0X2xpc3RfZm9yX2VhY2hfc2FmZShwb3MsIHRtcCwgaGVhZCwgbWVtYmVyKQkJCVwKKwlm b3IgKHBvcyA9IGlndF9saXN0X2ZpcnN0X2VudHJ5KGhlYWQsIHBvcywgbWVtYmVyKSwJCVwKKwkg ICAgIHRtcCA9IGlndF9saXN0X25leHRfZW50cnkocG9zLCBtZW1iZXIpOwkJCVwKKwkgICAgICZw b3MtPm1lbWJlciAhPSAoaGVhZCk7CQkJCQlcCisJICAgICBwb3MgPSB0bXAsIHRtcCA9IGlndF9s aXN0X25leHRfZW50cnkocG9zLCBtZW1iZXIpKQorCisjZW5kaWYgLyogSUdUX0xJU1RfSCAqLwpk aWZmIC0tZ2l0IGEvdGVzdHMvZHJ2X2hhbmdtYW4uYyBiL3Rlc3RzL2Rydl9oYW5nbWFuLmMKaW5k ZXggMTczNmQyYTY0Li42ZGRhZTQ5MTIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2Rydl9oYW5nbWFuLmMK KysrIGIvdGVzdHMvZHJ2X2hhbmdtYW4uYwpAQCAtMTk5LDkgKzE5OSwxMiBAQCBzdGF0aWMgdm9p ZCB0ZXN0X2Vycm9yX3N0YXRlX2NhcHR1cmUodW5zaWduZWQgcmluZ19pZCwKIAogCWNsZWFyX2Vy cm9yX3N0YXRlKCk7CiAKLQloYW5nID0gaWd0X2hhbmdfY3R4KGRldmljZSwgMCwgcmluZ19pZCwg SEFOR19BTExPV19DQVBUVVJFLCAmb2Zmc2V0KTsKLQliYXRjaCA9IGdlbV9tbWFwX19jcHUoZGV2 aWNlLCBoYW5nLmhhbmRsZSwgMCwgNDA5NiwgUFJPVF9SRUFEKTsKLQlnZW1fc2V0X2RvbWFpbihk ZXZpY2UsIGhhbmcuaGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fQ1BVLCAwKTsKKwloYW5nID0gaWd0 X2hhbmdfY3R4KGRldmljZSwgMCwgcmluZ19pZCwgSEFOR19BTExPV19DQVBUVVJFKTsKKwlvZmZz ZXQgPSBoYW5nLnNwaW4tPm9ialsxXS5vZmZzZXQ7CisKKwliYXRjaCA9IGdlbV9tbWFwX19jcHUo ZGV2aWNlLCBoYW5nLnNwaW4tPmhhbmRsZSwgMCwgNDA5NiwgUFJPVF9SRUFEKTsKKwlnZW1fc2V0 X2RvbWFpbihkZXZpY2UsIGhhbmcuc3Bpbi0+aGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fQ1BVLCAw KTsKKwogCWlndF9wb3N0X2hhbmdfcmluZyhkZXZpY2UsIGhhbmcpOwogCiAJY2hlY2tfZXJyb3Jf c3RhdGUocmluZ19uYW1lLCBvZmZzZXQsIGJhdGNoKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2dlbV9j b25jdXJyZW50X2FsbC5jIGIvdGVzdHMvZ2VtX2NvbmN1cnJlbnRfYWxsLmMKaW5kZXggM2ExMDk3 YmE1Li40YWMwOGMxYjEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2dlbV9jb25jdXJyZW50X2FsbC5jCisr KyBiL3Rlc3RzL2dlbV9jb25jdXJyZW50X2FsbC5jCkBAIC05NDYsMzAgKzk0NiwxOSBAQCBzdGF0 aWMgaWd0X2hhbmdfdCByY3NfaGFuZyh2b2lkKQogCiBzdGF0aWMgaWd0X2hhbmdfdCBhbGxfaGFu Zyh2b2lkKQogewotCXVpbnQzMl90IGJiZSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Ci0Jc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmOwotCXN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY19vYmplY3QyIG9iajsKLQlpZ3RfaGFuZ190IGhhbmc7CisJaWd0X2hhbmdfdCBoYW5nID0g aWd0X2hhbmdfcmluZyhmZCwgSTkxNV9FWEVDX1JFTkRFUik7CiAJdW5zaWduZWQgZW5naW5lOwog Ci0JbWVtc2V0KCZvYmosIDAsIHNpemVvZihvYmopKTsKLQlvYmouaGFuZGxlID0gZ2VtX2NyZWF0 ZShmZCwgNDA5Nik7Ci0JZ2VtX3dyaXRlKGZkLCBvYmouaGFuZGxlLCAwLCAmYmJlLCBzaXplb2Yo JmJiZSkpOwotCi0JbWVtc2V0KCZleGVjYnVmLCAwLCBzaXplb2YoZXhlY2J1ZikpOwotCWV4ZWNi dWYuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJm9iaik7Ci0JZXhlY2J1Zi5idWZmZXJf Y291bnQgPSAxOwotCiAJZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlbmdpbmUpIHsKLQkJ aGFuZyA9IGlndF9oYW5nX3JpbmcoZmQsIGVuZ2luZSk7CisJCXN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY2J1ZmZlcjIgZWIgPSBoYW5nLnNwaW4tPmV4ZWNidWY7CiAKLQkJZXhlY2J1Zi5mbGFncyA9 IGVuZ2luZTsKLQkJX19nZW1fZXhlY2J1ZihmZCwgJmV4ZWNidWYpOworCQlpZiAoZW5naW5lID09 IEk5MTVfRVhFQ19SRU5ERVIpCisJCQljb250aW51ZTsKIAotCQlnZW1fY2xvc2UoZmQsIGhhbmcu aGFuZGxlKTsKKwkJZWIuZmxhZ3MgPSBlbmdpbmU7CisJCV9fZ2VtX2V4ZWNidWYoZmQsICZlYik7 CiAJfQogCi0JaGFuZy5oYW5kbGUgPSBvYmouaGFuZGxlOwogCXJldHVybiBoYW5nOwogfQogCmRp ZmYgLS1naXQgYS90ZXN0cy9nZW1fZXhlY19zY2hlZHVsZS5jIGIvdGVzdHMvZ2VtX2V4ZWNfc2No ZWR1bGUuYwppbmRleCAzNWE0NGFiMTAuLjQzZWE5N2U2MSAxMDA2NDQKLS0tIGEvdGVzdHMvZ2Vt X2V4ZWNfc2NoZWR1bGUuYworKysgYi90ZXN0cy9nZW1fZXhlY19zY2hlZHVsZS5jCkBAIC00MjMs NyArNDIzLDcgQEAgc3RhdGljIHZvaWQgcHJlZW1wdChpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIHVu c2lnbmVkIGZsYWdzKQogCWdlbV9jb250ZXh0X3NldF9wcmlvcml0eShmZCwgY3R4W0hJXSwgTUFY X1BSSU8pOwogCiAJaWYgKGZsYWdzICYgSEFOR19MUCkKLQkJaGFuZyA9IGlndF9oYW5nX2N0eChm ZCwgY3R4W0xPXSwgcmluZywgMCwgTlVMTCk7CisJCWhhbmcgPSBpZ3RfaGFuZ19jdHgoZmQsIGN0 eFtMT10sIHJpbmcsIDApOwogCiAJZm9yIChpbnQgbiA9IDA7IG4gPCBBUlJBWV9TSVpFKHNwaW4p OyBuKyspIHsKIAkJaWYgKGZsYWdzICYgTkVXX0NUWCkgewpAQCAtNzMwLDcgKzczMCw3IEBAIHN0 YXRpYyB2b2lkIHByZWVtcHRpdmVfaGFuZyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcpCiAJCWdlbV9j b250ZXh0X2Rlc3Ryb3koZmQsIGN0eFtMT10pOwogCX0KIAotCWhhbmcgPSBpZ3RfaGFuZ19jdHgo ZmQsIGN0eFtISV0sIHJpbmcsIDAsIE5VTEwpOworCWhhbmcgPSBpZ3RfaGFuZ19jdHgoZmQsIGN0 eFtISV0sIHJpbmcsIDApOwogCWlndF9wb3N0X2hhbmdfcmluZyhmZCwgaGFuZyk7CiAKIAlmb3Ig KGludCBuID0gMDsgbiA8IEFSUkFZX1NJWkUoc3Bpbik7IG4rKykgewpkaWZmIC0tZ2l0IGEvdGVz dHMvZ2VtX21tYXBfZ3R0LmMgYi90ZXN0cy9nZW1fbW1hcF9ndHQuYwppbmRleCBmZDYwYjhmZjgu LmM4YTBiZWRlYyAxMDA2NDQKLS0tIGEvdGVzdHMvZ2VtX21tYXBfZ3R0LmMKKysrIGIvdGVzdHMv Z2VtX21tYXBfZ3R0LmMKQEAgLTM5OSw3ICszOTksNyBAQCB0ZXN0X2hhbmcoaW50IGZkKQogCiAJ CWxhc3RfcGF0dGVybiA9IG5leHRfcGF0dGVybjsKIAkJbmV4dF9wYXR0ZXJuID0gKG5leHRfcGF0 dGVybiArIDEpICUgQVJSQVlfU0laRShwYXR0ZXJucyk7Ci0JfSB3aGlsZSAoZ2VtX2JvX2J1c3ko ZmQsIGhhbmcuaGFuZGxlKSk7CisJfSB3aGlsZSAoZ2VtX2JvX2J1c3koZmQsIGhhbmcuc3Bpbi0+ aGFuZGxlKSk7CiAKIAlpZ3RfcG9zdF9oYW5nX3JpbmcoZmQsIGhhbmcpOwogCmRpZmYgLS1naXQg YS90ZXN0cy9nZW1fcmVzZXRfc3RhdHMuYyBiL3Rlc3RzL2dlbV9yZXNldF9zdGF0cy5jCmluZGV4 IDc0YmEyNjU2YS4uYWM5YWYyM2YyIDEwMDY0NAotLS0gYS90ZXN0cy9nZW1fcmVzZXRfc3RhdHMu YworKysgYi90ZXN0cy9nZW1fcmVzZXRfc3RhdHMuYwpAQCAtMTY0LDcgKzE2NCw3IEBAIHN0YXRp YyB2b2lkIGluamVjdF9oYW5nKGludCBmZCwgdWludDMyX3QgY3R4LAogCiAJY2xvY2tfZ2V0dGlt ZShDTE9DS19NT05PVE9OSUMsICZ0c19pbmplY3RlZCk7CiAKLQloYW5nID0gaWd0X2hhbmdfY3R4 KGZkLCBjdHgsIGUtPmV4ZWNfaWQgfCBlLT5mbGFncywgZmxhZ3MgJiBCQU4sIE5VTEwpOworCWhh bmcgPSBpZ3RfaGFuZ19jdHgoZmQsIGN0eCwgZS0+ZXhlY19pZCB8IGUtPmZsYWdzLCBmbGFncyAm IEJBTik7CiAJaWYgKChmbGFncyAmIEFTWU5DKSA9PSAwKQogCQlpZ3RfcG9zdF9oYW5nX3Jpbmco ZmQsIGhhbmcpOwogfQpAQCAtNTQ2LDcgKzU0Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfY2xvc2Vf cGVuZGluZ19mb3JrKGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lICplLAogCiAJ YXNzZXJ0X3Jlc2V0X3N0YXR1cyhmZCwgZmQsIDAsIFJTX05PX0VSUk9SKTsKIAotCWhhbmcgPSBp Z3RfaGFuZ19jdHgoZmQsIDAsIGUtPmV4ZWNfaWQgfCBlLT5mbGFncywgMCwgTlVMTCk7CisJaGFu ZyA9IGlndF9oYW5nX2N0eChmZCwgMCwgZS0+ZXhlY19pZCB8IGUtPmZsYWdzLCAwKTsKIAlzbGVl cCgxKTsKIAogCS8qIEF2b2lkIGhlbHBlcnMgYXMgd2UgbmVlZCB0byBraWxsIHRoZSBjaGlsZApk aWZmIC0tZ2l0IGEvdGVzdHMvZ2VtX3Nocmluay5jIGIvdGVzdHMvZ2VtX3Nocmluay5jCmluZGV4 IDkyOWUwNDI2YS4uYzhlMDU4MTRlIDEwMDY0NAotLS0gYS90ZXN0cy9nZW1fc2hyaW5rLmMKKysr IGIvdGVzdHMvZ2VtX3Nocmluay5jCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIHZvaWQgaGFu ZyhpbnQgZmQsIHVpbnQ2NF90IGFsbG9jKQogCQlnZW1fZXhlY2J1ZihmZCwgJmV4ZWNidWYpOwog CX0KIAotCWdlbV9jbG9zZShmZCwgaWd0X2hhbmdfcmluZyhmZCwgMCkuaGFuZGxlKTsKKwlnZW1f Y2xvc2UoZmQsIGlndF9oYW5nX3JpbmcoZmQsIDApLnNwaW4tPmhhbmRsZSk7CiAJZm9yIChpbnQg aSA9IDA7IGkgPD0gY291bnQ7IGkrKykKIAkJZ2VtX21hZHZpc2UoZmQsIG9ialtpXS5oYW5kbGUs IEk5MTVfTUFEVl9ET05UTkVFRCk7CiAJbXVubWFwKG9iaiwgb2JqX3NpemUpOwpkaWZmIC0tZ2l0 IGEvdGVzdHMvZ2VtX3NvZnRwaW4uYyBiL3Rlc3RzL2dlbV9zb2Z0cGluLmMKaW5kZXggMjNmOTM2 MjM3Li4zMzYwMDhiOGUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2dlbV9zb2Z0cGluLmMKKysrIGIvdGVz dHMvZ2VtX3NvZnRwaW4uYwpAQCAtMzU5LDExICszNTksMTIgQEAgc3RhdGljIHZvaWQgdGVzdF9l dmljdF9oYW5nKGludCBmZCkKIAlleGVjYnVmLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVy KCZvYmplY3QpOwogCWV4ZWNidWYuYnVmZmVyX2NvdW50ID0gMTsKIAotCWhhbmcgPSBpZ3RfaGFu Z19jdHgoZmQsIDAsIDAsIDAsICh1aW50NjRfdCAqKSZleHBlY3RlZCk7Ci0Jb2JqZWN0Lm9mZnNl dCA9IGV4cGVjdGVkOwotCW9iamVjdC5mbGFncyA9IEVYRUNfT0JKRUNUX1BJTk5FRDsKKwloYW5n ID0gaWd0X2hhbmdfY3R4KGZkLCAwLCAwLCAwKTsKKwlleHBlY3RlZCA9IGhhbmcuc3Bpbi0+b2Jq WzFdLm9mZnNldDsKIAogCS8qIFJlcGxhY2UgdGhlIGh1bmcgYmF0Y2ggd2l0aCBvdXJzZWx2ZXMs IGZvcmNpbmcgYW4gZXZpY3Rpb24gKi8KKwlvYmplY3Qub2Zmc2V0ID0gZXhwZWN0ZWQ7CisJb2Jq ZWN0LmZsYWdzID0gRVhFQ19PQkpFQ1RfUElOTkVEOwogCWdlbV9leGVjYnVmKGZkLCAmZXhlY2J1 Zik7CiAJaWd0X2Fzc2VydF9lcV91NjQob2JqZWN0Lm9mZnNldCwgZXhwZWN0ZWQpOwogCi0tIAoy LjE4LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Chris Wilson Date: Fri, 13 Jul 2018 11:06:40 +0100 Message-Id: <20180713100640.28873-1-chris@chris-wilson.co.uk> In-Reply-To: <20180713094607.18315-1-chris@chris-wilson.co.uk> References: <20180713094607.18315-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH i-g-t] lib/gt: Make use of dummyload library to create recursive batch List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org List-ID: RnJvbTogQW50b25pbyBBcmdlbnppYW5vIDxhbnRvbmlvLmFyZ2Vuemlhbm9AaW50ZWwuY29tPgoK QW4gaGFuZ2luZyBiYXRjaCBpcyBub3RoaW5nIG1vcmUgdGhhbiBhIHNwaW5uaW5nIGJhdGNoIHRo YXQgbmV2ZXIgZ2V0cwpzdG9wcGVkLCBzbyByZS11c2UgdGhlIHJvdXRpbmVzIGltcGxlbWVudGVk IGluIGR1bW15bG9hZC5jLgoKdjI6IExldCBjYWxsZXIgZGVjaWRlIHNwaW4gbG9vcCBzaXplCnYz OiBPbmx5IHVzZSBsb29zZSBsb29wcyBmb3IgaGFuZ3MgKENocmlzKQp2NDogTm8gcmVxdWlyZXMK djU6IEZyZWUgdGhlIHNwaW5uZXIKdjY6IENoYW1lbGl1bSBleGlzdHMuCgpTaWduZWQtb2ZmLWJ5 OiBBbnRvbmlvIEFyZ2Vuemlhbm8gPGFudG9uaW8uYXJnZW56aWFub0BpbnRlbC5jb20+ClNpZ25l ZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGxp Yi9pOTE1L2dlbV9yaW5nLmMgICAgICAgIHwgICAxICsKIGxpYi9pZ3RfYXV4LmggICAgICAgICAg ICAgIHwgMTA1IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogbGliL2lndF9jaGFtZWxp dW0uYyAgICAgICAgfCAgIDMgKy0KIGxpYi9pZ3RfY29yZS5oICAgICAgICAgICAgIHwgICA0ICsr CiBsaWIvaWd0X2R1bW15bG9hZC5oICAgICAgICB8ICAgMyArLQogbGliL2lndF9ndC5jICAgICAg ICAgICAgICAgfCAgNzIgKysrKy0tLS0tLS0tLS0tLS0tLS0tCiBsaWIvaWd0X2d0LmggICAgICAg ICAgICAgICB8ICAgOSArLS0KIGxpYi9pZ3Rfa21vZC5jICAgICAgICAgICAgIHwgICAzICstCiBs aWIvaWd0X2ttb2QuaCAgICAgICAgICAgICB8ICAgMiArLQogbGliL2lndF9saXN0LmggICAgICAg ICAgICAgfCAxMjggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdGVzdHMv ZHJ2X2hhbmdtYW4uYyAgICAgICAgfCAgIDkgKystCiB0ZXN0cy9nZW1fY29uY3VycmVudF9hbGwu YyB8ICAyMyArKy0tLS0tCiB0ZXN0cy9nZW1fZXhlY19zY2hlZHVsZS5jICB8ICAgNCArLQogdGVz dHMvZ2VtX21tYXBfZ3R0LmMgICAgICAgfCAgIDIgKy0KIHRlc3RzL2dlbV9yZXNldF9zdGF0cy5j ICAgIHwgICA0ICstCiB0ZXN0cy9nZW1fc2hyaW5rLmMgICAgICAgICB8ICAgMiArLQogdGVzdHMv Z2VtX3NvZnRwaW4uYyAgICAgICAgfCAgIDcgKy0KIDE3IGZpbGVzIGNoYW5nZWQsIDE3NyBpbnNl cnRpb25zKCspLCAyMDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2lndF9s aXN0LmgKCmRpZmYgLS1naXQgYS9saWIvaTkxNS9nZW1fcmluZy5jIGIvbGliL2k5MTUvZ2VtX3Jp bmcuYwppbmRleCAwNzA4YzhhMmUuLmZkYjlmYzFiMSAxMDA2NDQKLS0tIGEvbGliL2k5MTUvZ2Vt X3JpbmcuYworKysgYi9saWIvaTkxNS9nZW1fcmluZy5jCkBAIC0yNSw2ICsyNSw3IEBACiAKICNp bmNsdWRlIDxzaWduYWwuaD4KICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxzeXMv dGltZS5oPgogCiAjaW5jbHVkZSAiaW50ZWxfcmVnLmgiCiAjaW5jbHVkZSAiZHJtdGVzdC5oIgpk aWZmIC0tZ2l0IGEvbGliL2lndF9hdXguaCBiL2xpYi9pZ3RfYXV4LmgKaW5kZXggOWE5NjI4ODFi Li42MzlhOTA3NzggMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfYXV4LmgKKysrIGIvbGliL2lndF9hdXgu aApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgPGludGVsX2J1Zm1nci5oPgogI2luY2x1ZGUg PGludHR5cGVzLmg+CiAjaW5jbHVkZSA8c3RkYm9vbC5oPgotI2luY2x1ZGUgPHN0ZGRlZi5oPgog I2luY2x1ZGUgPHN5cy90aW1lLmg+CiAKICNpbmNsdWRlIDxpOTE1L2dlbV9zdWJtaXNzaW9uLmg+ CkBAIC0zOSwxMiArMzgsNiBAQAogZXh0ZXJuIGRybV9pbnRlbF9ibyAqKnRyYXNoX2JvczsKIGV4 dGVybiBpbnQgbnVtX3RyYXNoX2JvczsKIAotLyogc2lnbmFsIGludGVycnVwdCBoZWxwZXJzICov Ci0KLSNkZWZpbmUgTVNFQ19QRVJfU0VDICgxMDAwKQotI2RlZmluZSBVU0VDX1BFUl9TRUMgKDEw MDAqTVNFQ19QRVJfU0VDKQotI2RlZmluZSBOU0VDX1BFUl9TRUMgKDEwMDAqVVNFQ19QRVJfU0VD KQotCiAvKiBzaWduYWwgaW50ZXJydXB0IGhlbHBlcnMgKi8KICNkZWZpbmUgZ2V0dGlkKCkgc3lz Y2FsbChfX05SX2dldHRpZCkKICNkZWZpbmUgc2lnZXZfbm90aWZ5X3RocmVhZF9pZCBfc2lnZXZf dW4uX3RpZApAQCAtMjk1LDEwNCArMjg4LDYgQEAgdm9pZCBpZ3Rfc2V0X21vZHVsZV9wYXJhbV9p bnQoY29uc3QgY2hhciAqbmFtZSwgaW50IHZhbCk7CiBpbnQgaWd0X3Rlcm1pbmF0ZV9wcm9jZXNz KGludCBzaWcsIGNvbnN0IGNoYXIgKmNvbW0pOwogdm9pZCBpZ3RfbHNvZihjb25zdCBjaGFyICpk cGF0aCk7CiAKLS8qCi0gKiBUaGlzIGxpc3QgZGF0YSBzdHJ1Y3R1cmUgaXMgYSB2ZXJiYXRpbSBj b3B5IGZyb20gd2F5bGFuZC11dGlsLmggZnJvbSB0aGUKLSAqIFdheWxhbmQgcHJvamVjdDsgZXhj ZXB0IHRoYXQgd2xfIHByZWZpeCBoYXMgYmVlbiByZW1vdmVkLgotICovCi0KLXN0cnVjdCBpZ3Rf bGlzdCB7Ci0Jc3RydWN0IGlndF9saXN0ICpwcmV2OwotCXN0cnVjdCBpZ3RfbGlzdCAqbmV4dDsK LX07Ci0KLSNkZWZpbmUgX19JR1RfSU5JVF9MSVNUKG5hbWUpIHsgJihuYW1lKSwgJihuYW1lKSB9 Ci0jZGVmaW5lIElHVF9MSVNUKG5hbWUpIHN0cnVjdCBpZ3RfbGlzdCBuYW1lID0gX19JR1RfSU5J VF9MSVNUKG5hbWUpCi0KLXN0YXRpYyBpbmxpbmUgdm9pZCBpZ3RfbGlzdF9pbml0KHN0cnVjdCBp Z3RfbGlzdCAqbGlzdCkKLXsKLQlsaXN0LT5wcmV2ID0gbGlzdDsKLQlsaXN0LT5uZXh0ID0gbGlz dDsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIF9faWd0X2xpc3RfYWRkKHN0cnVjdCBpZ3RfbGlz dCAqbGlzdCwKLQkJCQkgIHN0cnVjdCBpZ3RfbGlzdCAqcHJldiwKLQkJCQkgIHN0cnVjdCBpZ3Rf bGlzdCAqbmV4dCkKLXsKLQluZXh0LT5wcmV2ID0gbGlzdDsKLQlsaXN0LT5uZXh0ID0gbmV4dDsK LQlsaXN0LT5wcmV2ID0gcHJldjsKLQlwcmV2LT5uZXh0ID0gbGlzdDsKLX0KLQotc3RhdGljIGlu bGluZSB2b2lkIGlndF9saXN0X2FkZChzdHJ1Y3QgaWd0X2xpc3QgKmVsbSwgc3RydWN0IGlndF9s aXN0ICpsaXN0KQotewotCV9faWd0X2xpc3RfYWRkKGVsbSwgbGlzdCwgbGlzdC0+bmV4dCk7Ci19 Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBpZ3RfbGlzdF9hZGRfdGFpbChzdHJ1Y3QgaWd0X2xpc3Qg KmVsbSwKLQkJCQkgICAgIHN0cnVjdCBpZ3RfbGlzdCAqbGlzdCkKLXsKLQlfX2lndF9saXN0X2Fk ZChlbG0sIGxpc3QtPnByZXYsIGxpc3QpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgX19pZ3Rf bGlzdF9kZWwoc3RydWN0IGlndF9saXN0ICpwcmV2LCBzdHJ1Y3QgaWd0X2xpc3QgKm5leHQpCi17 Ci0JbmV4dC0+cHJldiA9IHByZXY7Ci0JcHJldi0+bmV4dCA9IG5leHQ7Ci19Ci0KLXN0YXRpYyBp bmxpbmUgdm9pZCBpZ3RfbGlzdF9kZWwoc3RydWN0IGlndF9saXN0ICplbG0pCi17Ci0JX19pZ3Rf bGlzdF9kZWwoZWxtLT5wcmV2LCBlbG0tPm5leHQpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQg aWd0X2xpc3RfbW92ZShzdHJ1Y3QgaWd0X2xpc3QgKmVsbSwgc3RydWN0IGlndF9saXN0ICpsaXN0 KQotewotCWlndF9saXN0X2RlbChlbG0pOwotCWlndF9saXN0X2FkZChlbG0sIGxpc3QpOwotfQot Ci1zdGF0aWMgaW5saW5lIHZvaWQgaWd0X2xpc3RfbW92ZV90YWlsKHN0cnVjdCBpZ3RfbGlzdCAq ZWxtLAotCQkJCSAgICAgIHN0cnVjdCBpZ3RfbGlzdCAqbGlzdCkKLXsKLQlpZ3RfbGlzdF9kZWwo ZWxtKTsKLQlpZ3RfbGlzdF9hZGRfdGFpbChlbG0sIGxpc3QpOwotfQotCi1zdGF0aWMgaW5saW5l IGJvb2wgaWd0X2xpc3RfZW1wdHkoY29uc3Qgc3RydWN0IGlndF9saXN0ICpsaXN0KQotewotCXJl dHVybiBsaXN0LT5uZXh0ID09IGxpc3Q7Ci19Ci0KLSNkZWZpbmUgY29udGFpbmVyX29mKHB0ciwg c2FtcGxlLCBtZW1iZXIpCQkJCVwKLQkodHlwZW9mKHNhbXBsZSkpKChjaGFyICopKHB0cikgLSBv ZmZzZXRvZih0eXBlb2YoKnNhbXBsZSksIG1lbWJlcikpCi0KLSNkZWZpbmUgaWd0X2xpc3RfZmly c3RfZW50cnkoaGVhZCwgcG9zLCBtZW1iZXIpIFwKLQljb250YWluZXJfb2YoKGhlYWQpLT5uZXh0 LCAocG9zKSwgbWVtYmVyKQotI2RlZmluZSBpZ3RfbGlzdF9sYXN0X2VudHJ5KGhlYWQsIHBvcywg bWVtYmVyKSBcCi0JY29udGFpbmVyX29mKChoZWFkKS0+cHJldiwgKHBvcyksIG1lbWJlcikKLQot I2RlZmluZSBpZ3RfbGlzdF9uZXh0X2VudHJ5KHBvcywgbWVtYmVyKSBcCi0JY29udGFpbmVyX29m KChwb3MpLT5tZW1iZXIubmV4dCwgKHBvcyksIG1lbWJlcikKLSNkZWZpbmUgaWd0X2xpc3RfcHJl dl9lbnRyeShwb3MsIG1lbWJlcikgXAotCWNvbnRhaW5lcl9vZigocG9zKS0+bWVtYmVyLnByZXYs IChwb3MpLCBtZW1iZXIpCi0KLSNkZWZpbmUgaWd0X2xpc3RfZm9yX2VhY2gocG9zLCBoZWFkLCBt ZW1iZXIpCQkJCVwKLQlmb3IgKHBvcyA9IGlndF9saXN0X2ZpcnN0X2VudHJ5KGhlYWQsIHBvcywg bWVtYmVyKTsJCVwKLQkgICAgICZwb3MtPm1lbWJlciAhPSAoaGVhZCk7CQkJCQlcCi0JICAgICBw b3MgPSBpZ3RfbGlzdF9uZXh0X2VudHJ5KHBvcywgbWVtYmVyKSkKLQotI2RlZmluZSBpZ3RfbGlz dF9mb3JfZWFjaF9yZXZlcnNlKHBvcywgaGVhZCwgbWVtYmVyKQkJCVwKLQlmb3IgKHBvcyA9IGln dF9saXN0X2xhc3RfZW50cnkoaGVhZCwgcG9zLCBtZW1iZXIpOwkJXAotCSAgICAgJnBvcy0+bWVt YmVyICE9IChoZWFkKTsJCQkJCVwKLQkgICAgIHBvcyA9IGlndF9saXN0X3ByZXZfZW50cnkocG9z LCBtZW1iZXIpKQotCi0jZGVmaW5lIGlndF9saXN0X2Zvcl9lYWNoX3NhZmUocG9zLCB0bXAsIGhl YWQsIG1lbWJlcikJCQlcCi0JZm9yIChwb3MgPSBpZ3RfbGlzdF9maXJzdF9lbnRyeShoZWFkLCBw b3MsIG1lbWJlciksCQlcCi0JICAgICB0bXAgPSBpZ3RfbGlzdF9uZXh0X2VudHJ5KHBvcywgbWVt YmVyKTsJCQlcCi0JICAgICAmcG9zLT5tZW1iZXIgIT0gKGhlYWQpOwkJCQkJXAotCSAgICAgcG9z ID0gdG1wLCB0bXAgPSBpZ3RfbGlzdF9uZXh0X2VudHJ5KHBvcywgbWVtYmVyKSkKLQogI2RlZmlu ZSBpZ3RfaHdlaWdodCh4KSBcCiAJX19idWlsdGluX2Nob29zZV9leHByKHNpemVvZih4KSA9PSA4 LCBcCiAJCQkgICAgICBfX2J1aWx0aW5fcG9wY291bnRsbCh4KSwgXApkaWZmIC0tZ2l0IGEvbGli L2lndF9jaGFtZWxpdW0uYyBiL2xpYi9pZ3RfY2hhbWVsaXVtLmMKaW5kZXggYjI1ODU1YTQxLi5i ODQxOGUxM2UgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfY2hhbWVsaXVtLmMKKysrIGIvbGliL2lndF9j aGFtZWxpdW0uYwpAQCAtMzgsOCArMzgsOSBAQAogI2luY2x1ZGUgImlndF9jaGFtZWxpdW0uaCIK ICNpbmNsdWRlICJpZ3RfY29yZS5oIgogI2luY2x1ZGUgImlndF9hdXguaCIKLSNpbmNsdWRlICJp Z3Rfa21zLmgiCiAjaW5jbHVkZSAiaWd0X2ZyYW1lLmgiCisjaW5jbHVkZSAiaWd0X2xpc3QuaCIK KyNpbmNsdWRlICJpZ3Rfa21zLmgiCiAjaW5jbHVkZSAiaWd0X3JjLmgiCiAKIC8qKgpkaWZmIC0t Z2l0IGEvbGliL2lndF9jb3JlLmggYi9saWIvaWd0X2NvcmUuaAppbmRleCBhNzNiMDY0OTMuLmFh ZjFiNjI2OCAxMDA2NDQKLS0tIGEvbGliL2lndF9jb3JlLmgKKysrIGIvbGliL2lndF9jb3JlLmgK QEAgLTEwMDUsNCArMTAwNSw4IEBAIHZvaWQgaWd0X2ttc2coY29uc3QgY2hhciAqZm9ybWF0LCAu Li4pOwogCiAjZGVmaW5lIFJFQURfT05DRSh4KSAoKih2b2xhdGlsZSB0eXBlb2YoeCkgKikoJih4 KSkpCiAKKyNkZWZpbmUgTVNFQ19QRVJfU0VDICgxMDAwKQorI2RlZmluZSBVU0VDX1BFUl9TRUMg KDEwMDAqTVNFQ19QRVJfU0VDKQorI2RlZmluZSBOU0VDX1BFUl9TRUMgKDEwMDAqVVNFQ19QRVJf U0VDKQorCiAjZW5kaWYgLyogSUdUX0NPUkVfSCAqLwpkaWZmIC0tZ2l0IGEvbGliL2lndF9kdW1t eWxvYWQuaCBiL2xpYi9pZ3RfZHVtbXlsb2FkLmgKaW5kZXggMzhiYzc2ODJlLi43M2JkMDM1YjQg MTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZHVtbXlsb2FkLmgKKysrIGIvbGliL2lndF9kdW1teWxvYWQu aApAQCAtMjgsNyArMjgsOCBAQAogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHRpbWUu aD4KIAotI2luY2x1ZGUgImlndF9hdXguaCIKKyNpbmNsdWRlICJpZ3RfY29yZS5oIgorI2luY2x1 ZGUgImlndF9saXN0LmgiCiAjaW5jbHVkZSAiaTkxNV9kcm0uaCIKIAogdHlwZWRlZiBzdHJ1Y3Qg aWd0X3NwaW4gewpkaWZmIC0tZ2l0IGEvbGliL2lndF9ndC5jIGIvbGliL2lndF9ndC5jCmluZGV4 IDg5YjMxOGFlNi4uYTIwNjE5MjQ2IDEwMDY0NAotLS0gYS9saWIvaWd0X2d0LmMKKysrIGIvbGli L2lndF9ndC5jCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiaW9jdGxfd3JhcHBlcnMuaCIK ICNpbmNsdWRlICJpbnRlbF9yZWcuaCIKICNpbmNsdWRlICJpbnRlbF9jaGlwc2V0LmgiCisjaW5j bHVkZSAiaWd0X2R1bW15bG9hZC5oIgogCiAvKioKICAqIFNFQ1RJT046aWd0X2d0CkBAIC0yNjUs MjAgKzI2NiwxMSBAQCBzdGF0aWMgYm9vbCBoYXNfY3R4X2V4ZWMoaW50IGZkLCB1bnNpZ25lZCBy aW5nLCB1aW50MzJfdCBjdHgpCiAgKiBSZXR1cm5zOgogICogU3RydWN0dXJlIHdpdGggaGVscGVy IGludGVybmFsIHN0YXRlIGZvciBpZ3RfcG9zdF9oYW5nX3JpbmcoKS4KICAqLwotaWd0X2hhbmdf dCBpZ3RfaGFuZ19jdHgoaW50IGZkLAotCQkJdWludDMyX3QgY3R4LAotCQkJaW50IHJpbmcsCi0J CQl1bnNpZ25lZCBmbGFncywKLQkJCXVpbnQ2NF90ICpvZmZzZXQpCitpZ3RfaGFuZ190IGlndF9o YW5nX2N0eChpbnQgZmQsIHVpbnQzMl90IGN0eCwgaW50IHJpbmcsIHVuc2lnbmVkIGZsYWdzKQog ewotCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvYzsKLQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9l eGVjX29iamVjdDIgZXhlYzsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gcGFy YW07Ci0JdWludDMyX3QgYlsxNl07CisJaWd0X3NwaW5fdCAqc3BpbjsKIAl1bnNpZ25lZCBiYW47 Ci0JdW5zaWduZWQgbGVuOwotCWludCBnZW47CiAKIAlpZ3RfcmVxdWlyZV9oYW5nX3JpbmcoZmQs IHJpbmcpOwogCkBAIC0zMDIsNTIgKzI5NCwxMiBAQCBpZ3RfaGFuZ190IGlndF9oYW5nX2N0eChp bnQgZmQsCiAJaWYgKChmbGFncyAmIEhBTkdfQUxMT1dfQkFOKSA9PSAwKQogCQljb250ZXh0X3Nl dF9iYW4oZmQsIGN0eCwgMCk7CiAKLQltZW1zZXQoJnJlbG9jLCAwLCBzaXplb2YocmVsb2MpKTsK LQltZW1zZXQoJmV4ZWMsIDAsIHNpemVvZihleGVjKSk7Ci0JbWVtc2V0KCZleGVjYnVmLCAwLCBz aXplb2YoZXhlY2J1ZikpOwotCi0JZXhlYy5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsK LQlleGVjLnJlbG9jYXRpb25fY291bnQgPSAxOwotCWV4ZWMucmVsb2NzX3B0ciA9IHRvX3VzZXJf cG9pbnRlcigmcmVsb2MpOwotCi0JbWVtc2V0KGIsIDB4YzUsIHNpemVvZihiKSk7Ci0KLQlsZW4g PSAwOwotCWdlbiA9IGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSk7Ci0JaWYgKGdl biA+PSA4KSB7Ci0JCWJbbGVuKytdID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwgMSA8PCA4IHwg MTsKLQkJYltsZW4rK10gPSAwOwotCQliW2xlbisrXSA9IDA7Ci0JfSBlbHNlIGlmIChnZW4gPj0g NikgewotCQliW2xlbisrXSA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IDEgPDwgODsKLQkJYlts ZW4rK10gPSAwOwotCX0gZWxzZSB7Ci0JCWJbbGVuKytdID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJU IHwgMiA8PCA2OwotCQliW2xlbl0gPSAwOwotCQlpZiAoZ2VuIDwgNCkgewotCQkJYltsZW5dIHw9 IDE7Ci0JCQlyZWxvYy5kZWx0YSA9IDE7Ci0JCX0KLQkJbGVuKys7Ci0JfQotCWJbbGVuKytdID0g TUlfQkFUQ0hfQlVGRkVSX0VORDsKLQliW2xlbl0gPSBNSV9OT09QOwotCWdlbV93cml0ZShmZCwg ZXhlYy5oYW5kbGUsIDAsIGIsIHNpemVvZihiKSk7Ci0KLQlyZWxvYy5vZmZzZXQgPSBzaXplb2Yo dWludDMyX3QpOwotCXJlbG9jLnRhcmdldF9oYW5kbGUgPSBleGVjLmhhbmRsZTsKLQlyZWxvYy5y ZWFkX2RvbWFpbnMgPSBJOTE1X0dFTV9ET01BSU5fQ09NTUFORDsKLQotCWV4ZWNidWYuYnVmZmVy c19wdHIgPSB0b191c2VyX3BvaW50ZXIoJmV4ZWMpOwotCWV4ZWNidWYuYnVmZmVyX2NvdW50ID0g MTsKLQlleGVjYnVmLmZsYWdzID0gcmluZzsKLQlpOTE1X2V4ZWNidWZmZXIyX3NldF9jb250ZXh0 X2lkKGV4ZWNidWYsIGN0eCk7Ci0JZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKTsKLQotCWlmIChv ZmZzZXQpCi0JCSpvZmZzZXQgPSBleGVjLm9mZnNldDsKKwlzcGluID0gX19pZ3Rfc3Bpbl9iYXRj aF9uZXcoZmQsCisJCQkJICAgIC5jdHggPSBjdHgsCisJCQkJICAgIC5lbmdpbmUgPSByaW5nLAor CQkJCSAgICAuZmxhZ3MgPSBJR1RfU1BJTl9OT19QUkVFTVBUSU9OKTsKIAotCXJldHVybiAoaWd0 X2hhbmdfdCl7IGV4ZWMuaGFuZGxlLCBjdHgsIGJhbiwgZmxhZ3MgfTsKKwlyZXR1cm4gKGlndF9o YW5nX3QpeyBzcGluLCBjdHgsIGJhbiwgZmxhZ3MgfTsKIH0KIAogLyoqCkBAIC0zNjQsNyArMzE2 LDcgQEAgaWd0X2hhbmdfdCBpZ3RfaGFuZ19jdHgoaW50IGZkLAogICovCiBpZ3RfaGFuZ190IGln dF9oYW5nX3JpbmcoaW50IGZkLCBpbnQgcmluZykKIHsKLQlyZXR1cm4gaWd0X2hhbmdfY3R4KGZk LCAwLCByaW5nLCAwLCBOVUxMKTsKKwlyZXR1cm4gaWd0X2hhbmdfY3R4KGZkLCAwLCByaW5nLCAw KTsKIH0KIAogLyoqCkBAIC0zNzcsMTEgKzMyOSwxMSBAQCBpZ3RfaGFuZ190IGlndF9oYW5nX3Jp bmcoaW50IGZkLCBpbnQgcmluZykKICAqLwogdm9pZCBpZ3RfcG9zdF9oYW5nX3JpbmcoaW50IGZk LCBpZ3RfaGFuZ190IGFyZykKIHsKLQlpZiAoYXJnLmhhbmRsZSA9PSAwKQorCWlmICghYXJnLnNw aW4pCiAJCXJldHVybjsKIAotCWdlbV9zeW5jKGZkLCBhcmcuaGFuZGxlKTsKLQlnZW1fY2xvc2Uo ZmQsIGFyZy5oYW5kbGUpOworCWdlbV9zeW5jKGZkLCBhcmcuc3Bpbi0+aGFuZGxlKTsgLyogV2Fp dCB1bnRpbCBpdCBoYW5ncyAqLworCWlndF9zcGluX2JhdGNoX2ZyZWUoZmQsIGFyZy5zcGluKTsK IAogCWNvbnRleHRfc2V0X2JhbihmZCwgYXJnLmN0eCwgYXJnLmJhbik7CiAKZGlmZiAtLWdpdCBh L2xpYi9pZ3RfZ3QuaCBiL2xpYi9pZ3RfZ3QuaAppbmRleCBkNDRiNzU1MmYuLjU0ZTk1ZGE5OCAx MDA2NDQKLS0tIGEvbGliL2lndF9ndC5oCisrKyBiL2xpYi9pZ3RfZ3QuaApAQCAtMjUsNiArMjUs NyBAQAogI2RlZmluZSBJR1RfR1RfSAogCiAjaW5jbHVkZSAiaWd0X2RlYnVnZnMuaCIKKyNpbmNs dWRlICJpZ3RfZHVtbXlsb2FkLmgiCiAjaW5jbHVkZSAiaWd0X2NvcmUuaCIKIAogI2luY2x1ZGUg Imk5MTVfZHJtLmgiCkBAIC0zMiw3ICszMyw3IEBACiB2b2lkIGlndF9yZXF1aXJlX2hhbmdfcmlu ZyhpbnQgZmQsIGludCByaW5nKTsKIAogdHlwZWRlZiBzdHJ1Y3QgaWd0X2hhbmcgewotCXVuc2ln bmVkIGhhbmRsZTsKKwlpZ3Rfc3Bpbl90ICpzcGluOwogCXVuc2lnbmVkIGN0eDsKIAl1bnNpZ25l ZCBiYW47CiAJdW5zaWduZWQgZmxhZ3M7CkBAIC00MywxMSArNDQsNyBAQCB2b2lkIGlndF9kaXNh bGxvd19oYW5nKGludCBmZCwgaWd0X2hhbmdfdCBhcmcpOwogCiAjZGVmaW5lIEhBTkdfUE9JU09O IDB4YzVjNWM1YzUKIAotaWd0X2hhbmdfdCBpZ3RfaGFuZ19jdHgoaW50IGZkLAotCQkJdWludDMy X3QgY3R4LAotCQkJaW50IHJpbmcsCi0JCQl1bnNpZ25lZCBmbGFncywKLQkJCXVpbnQ2NF90ICpv ZmZzZXQpOworaWd0X2hhbmdfdCBpZ3RfaGFuZ19jdHgoaW50IGZkLCB1aW50MzJfdCBjdHgsIGlu dCByaW5nLCB1bnNpZ25lZCBmbGFncyk7CiAjZGVmaW5lIEhBTkdfQUxMT1dfQkFOIDEKICNkZWZp bmUgSEFOR19BTExPV19DQVBUVVJFIDIKIApkaWZmIC0tZ2l0IGEvbGliL2lndF9rbW9kLmMgYi9s aWIvaWd0X2ttb2QuYwppbmRleCBmM2YzNGE2MmQuLmIyZjRmODg0YiAxMDA2NDQKLS0tIGEvbGli L2lndF9rbW9kLmMKKysrIGIvbGliL2lndF9rbW9kLmMKQEAgLTI0LDkgKzI0LDEwIEBACiAjaW5j bHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KIAorI2luY2x1ZGUgImlndF9hdXgu aCIKICNpbmNsdWRlICJpZ3RfY29yZS5oIgotI2luY2x1ZGUgImlndF9zeXNmcy5oIgogI2luY2x1 ZGUgImlndF9rbW9kLmgiCisjaW5jbHVkZSAiaWd0X3N5c2ZzLmgiCiAKIC8qKgogICogU0VDVElP TjppZ3Rfa21vZApkaWZmIC0tZ2l0IGEvbGliL2lndF9rbW9kLmggYi9saWIvaWd0X2ttb2QuaApp bmRleCBmZDMwN2E0NTYuLjg3ZDM2ZDQwMCAxMDA2NDQKLS0tIGEvbGliL2lndF9rbW9kLmgKKysr IGIvbGliL2lndF9rbW9kLmgKQEAgLTI2LDcgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGxpYmttb2Qu aD4KIAotI2luY2x1ZGUgImlndF9hdXguaCIKKyNpbmNsdWRlICJpZ3RfbGlzdC5oIgogCiBib29s IGlndF9rbW9kX2lzX2xvYWRlZChjb25zdCBjaGFyICptb2RfbmFtZSk7CiB2b2lkIGlndF9rbW9k X2xpc3RfbG9hZGVkKHZvaWQpOwpkaWZmIC0tZ2l0IGEvbGliL2lndF9saXN0LmggYi9saWIvaWd0 X2xpc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjc0NGY0ZWNmOQot LS0gL2Rldi9udWxsCisrKyBiL2xpYi9pZ3RfbGlzdC5oCkBAIC0wLDAgKzEsMTI4IEBACisvKgor ICogQ29weXJpZ2h0IMKpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9u IGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5p bmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRp b24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdp dGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSBy aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBz dWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8g ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRp bmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGll cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRI RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL SU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAor ICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xB SU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0Yg T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERF QUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpZm5kZWYgSUdUX0xJU1Rf SAorI2RlZmluZSBJR1RfTElTVF9ICisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworLyoKKyAqIFRo aXMgbGlzdCBkYXRhIHN0cnVjdHVyZSBpcyBhIHZlcmJhdGltIGNvcHkgZnJvbSB3YXlsYW5kLXV0 aWwuaCBmcm9tIHRoZQorICogV2F5bGFuZCBwcm9qZWN0OyBleGNlcHQgdGhhdCB3bF8gcHJlZml4 IGhhcyBiZWVuIHJlbW92ZWQuCisgKi8KKworc3RydWN0IGlndF9saXN0IHsKKwlzdHJ1Y3QgaWd0 X2xpc3QgKnByZXY7CisJc3RydWN0IGlndF9saXN0ICpuZXh0OworfTsKKworI2RlZmluZSBfX0lH VF9JTklUX0xJU1QobmFtZSkgeyAmKG5hbWUpLCAmKG5hbWUpIH0KKyNkZWZpbmUgSUdUX0xJU1Qo bmFtZSkgc3RydWN0IGlndF9saXN0IG5hbWUgPSBfX0lHVF9JTklUX0xJU1QobmFtZSkKKworc3Rh dGljIGlubGluZSB2b2lkIGlndF9saXN0X2luaXQoc3RydWN0IGlndF9saXN0ICpsaXN0KQorewor CWxpc3QtPnByZXYgPSBsaXN0OworCWxpc3QtPm5leHQgPSBsaXN0OworfQorCitzdGF0aWMgaW5s aW5lIHZvaWQgX19pZ3RfbGlzdF9hZGQoc3RydWN0IGlndF9saXN0ICpsaXN0LAorCQkJCSAgc3Ry dWN0IGlndF9saXN0ICpwcmV2LAorCQkJCSAgc3RydWN0IGlndF9saXN0ICpuZXh0KQoreworCW5l eHQtPnByZXYgPSBsaXN0OworCWxpc3QtPm5leHQgPSBuZXh0OworCWxpc3QtPnByZXYgPSBwcmV2 OworCXByZXYtPm5leHQgPSBsaXN0OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgaWd0X2xpc3Rf YWRkKHN0cnVjdCBpZ3RfbGlzdCAqZWxtLCBzdHJ1Y3QgaWd0X2xpc3QgKmxpc3QpCit7CisJX19p Z3RfbGlzdF9hZGQoZWxtLCBsaXN0LCBsaXN0LT5uZXh0KTsKK30KKworc3RhdGljIGlubGluZSB2 b2lkIGlndF9saXN0X2FkZF90YWlsKHN0cnVjdCBpZ3RfbGlzdCAqZWxtLAorCQkJCSAgICAgc3Ry dWN0IGlndF9saXN0ICpsaXN0KQoreworCV9faWd0X2xpc3RfYWRkKGVsbSwgbGlzdC0+cHJldiwg bGlzdCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2lndF9saXN0X2RlbChzdHJ1Y3QgaWd0 X2xpc3QgKnByZXYsIHN0cnVjdCBpZ3RfbGlzdCAqbmV4dCkKK3sKKwluZXh0LT5wcmV2ID0gcHJl djsKKwlwcmV2LT5uZXh0ID0gbmV4dDsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGlndF9saXN0 X2RlbChzdHJ1Y3QgaWd0X2xpc3QgKmVsbSkKK3sKKwlfX2lndF9saXN0X2RlbChlbG0tPnByZXYs IGVsbS0+bmV4dCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpZ3RfbGlzdF9tb3ZlKHN0cnVj dCBpZ3RfbGlzdCAqZWxtLCBzdHJ1Y3QgaWd0X2xpc3QgKmxpc3QpCit7CisJaWd0X2xpc3RfZGVs KGVsbSk7CisJaWd0X2xpc3RfYWRkKGVsbSwgbGlzdCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9p ZCBpZ3RfbGlzdF9tb3ZlX3RhaWwoc3RydWN0IGlndF9saXN0ICplbG0sCisJCQkJICAgICAgc3Ry dWN0IGlndF9saXN0ICpsaXN0KQoreworCWlndF9saXN0X2RlbChlbG0pOworCWlndF9saXN0X2Fk ZF90YWlsKGVsbSwgbGlzdCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBpZ3RfbGlzdF9lbXB0 eShjb25zdCBzdHJ1Y3QgaWd0X2xpc3QgKmxpc3QpCit7CisJcmV0dXJuIGxpc3QtPm5leHQgPT0g bGlzdDsKK30KKworI2RlZmluZSBjb250YWluZXJfb2YocHRyLCBzYW1wbGUsIG1lbWJlcikJCQkJ XAorCSh0eXBlb2Yoc2FtcGxlKSkoKGNoYXIgKikocHRyKSAtIG9mZnNldG9mKHR5cGVvZigqc2Ft cGxlKSwgbWVtYmVyKSkKKworI2RlZmluZSBpZ3RfbGlzdF9maXJzdF9lbnRyeShoZWFkLCBwb3Ms IG1lbWJlcikgXAorCWNvbnRhaW5lcl9vZigoaGVhZCktPm5leHQsIChwb3MpLCBtZW1iZXIpCisj ZGVmaW5lIGlndF9saXN0X2xhc3RfZW50cnkoaGVhZCwgcG9zLCBtZW1iZXIpIFwKKwljb250YWlu ZXJfb2YoKGhlYWQpLT5wcmV2LCAocG9zKSwgbWVtYmVyKQorCisjZGVmaW5lIGlndF9saXN0X25l eHRfZW50cnkocG9zLCBtZW1iZXIpIFwKKwljb250YWluZXJfb2YoKHBvcyktPm1lbWJlci5uZXh0 LCAocG9zKSwgbWVtYmVyKQorI2RlZmluZSBpZ3RfbGlzdF9wcmV2X2VudHJ5KHBvcywgbWVtYmVy KSBcCisJY29udGFpbmVyX29mKChwb3MpLT5tZW1iZXIucHJldiwgKHBvcyksIG1lbWJlcikKKwor I2RlZmluZSBpZ3RfbGlzdF9mb3JfZWFjaChwb3MsIGhlYWQsIG1lbWJlcikJCQkJXAorCWZvciAo cG9zID0gaWd0X2xpc3RfZmlyc3RfZW50cnkoaGVhZCwgcG9zLCBtZW1iZXIpOwkJXAorCSAgICAg JnBvcy0+bWVtYmVyICE9IChoZWFkKTsJCQkJCVwKKwkgICAgIHBvcyA9IGlndF9saXN0X25leHRf ZW50cnkocG9zLCBtZW1iZXIpKQorCisjZGVmaW5lIGlndF9saXN0X2Zvcl9lYWNoX3JldmVyc2Uo cG9zLCBoZWFkLCBtZW1iZXIpCQkJXAorCWZvciAocG9zID0gaWd0X2xpc3RfbGFzdF9lbnRyeSho ZWFkLCBwb3MsIG1lbWJlcik7CQlcCisJICAgICAmcG9zLT5tZW1iZXIgIT0gKGhlYWQpOwkJCQkJ XAorCSAgICAgcG9zID0gaWd0X2xpc3RfcHJldl9lbnRyeShwb3MsIG1lbWJlcikpCisKKyNkZWZp bmUgaWd0X2xpc3RfZm9yX2VhY2hfc2FmZShwb3MsIHRtcCwgaGVhZCwgbWVtYmVyKQkJCVwKKwlm b3IgKHBvcyA9IGlndF9saXN0X2ZpcnN0X2VudHJ5KGhlYWQsIHBvcywgbWVtYmVyKSwJCVwKKwkg ICAgIHRtcCA9IGlndF9saXN0X25leHRfZW50cnkocG9zLCBtZW1iZXIpOwkJCVwKKwkgICAgICZw b3MtPm1lbWJlciAhPSAoaGVhZCk7CQkJCQlcCisJICAgICBwb3MgPSB0bXAsIHRtcCA9IGlndF9s aXN0X25leHRfZW50cnkocG9zLCBtZW1iZXIpKQorCisjZW5kaWYgLyogSUdUX0xJU1RfSCAqLwpk aWZmIC0tZ2l0IGEvdGVzdHMvZHJ2X2hhbmdtYW4uYyBiL3Rlc3RzL2Rydl9oYW5nbWFuLmMKaW5k ZXggMTczNmQyYTY0Li42ZGRhZTQ5MTIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2Rydl9oYW5nbWFuLmMK KysrIGIvdGVzdHMvZHJ2X2hhbmdtYW4uYwpAQCAtMTk5LDkgKzE5OSwxMiBAQCBzdGF0aWMgdm9p ZCB0ZXN0X2Vycm9yX3N0YXRlX2NhcHR1cmUodW5zaWduZWQgcmluZ19pZCwKIAogCWNsZWFyX2Vy cm9yX3N0YXRlKCk7CiAKLQloYW5nID0gaWd0X2hhbmdfY3R4KGRldmljZSwgMCwgcmluZ19pZCwg SEFOR19BTExPV19DQVBUVVJFLCAmb2Zmc2V0KTsKLQliYXRjaCA9IGdlbV9tbWFwX19jcHUoZGV2 aWNlLCBoYW5nLmhhbmRsZSwgMCwgNDA5NiwgUFJPVF9SRUFEKTsKLQlnZW1fc2V0X2RvbWFpbihk ZXZpY2UsIGhhbmcuaGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fQ1BVLCAwKTsKKwloYW5nID0gaWd0 X2hhbmdfY3R4KGRldmljZSwgMCwgcmluZ19pZCwgSEFOR19BTExPV19DQVBUVVJFKTsKKwlvZmZz ZXQgPSBoYW5nLnNwaW4tPm9ialsxXS5vZmZzZXQ7CisKKwliYXRjaCA9IGdlbV9tbWFwX19jcHUo ZGV2aWNlLCBoYW5nLnNwaW4tPmhhbmRsZSwgMCwgNDA5NiwgUFJPVF9SRUFEKTsKKwlnZW1fc2V0 X2RvbWFpbihkZXZpY2UsIGhhbmcuc3Bpbi0+aGFuZGxlLCBJOTE1X0dFTV9ET01BSU5fQ1BVLCAw KTsKKwogCWlndF9wb3N0X2hhbmdfcmluZyhkZXZpY2UsIGhhbmcpOwogCiAJY2hlY2tfZXJyb3Jf c3RhdGUocmluZ19uYW1lLCBvZmZzZXQsIGJhdGNoKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2dlbV9j b25jdXJyZW50X2FsbC5jIGIvdGVzdHMvZ2VtX2NvbmN1cnJlbnRfYWxsLmMKaW5kZXggM2ExMDk3 YmE1Li40YWMwOGMxYjEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2dlbV9jb25jdXJyZW50X2FsbC5jCisr KyBiL3Rlc3RzL2dlbV9jb25jdXJyZW50X2FsbC5jCkBAIC05NDYsMzAgKzk0NiwxOSBAQCBzdGF0 aWMgaWd0X2hhbmdfdCByY3NfaGFuZyh2b2lkKQogCiBzdGF0aWMgaWd0X2hhbmdfdCBhbGxfaGFu Zyh2b2lkKQogewotCXVpbnQzMl90IGJiZSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Ci0Jc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmOwotCXN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY19vYmplY3QyIG9iajsKLQlpZ3RfaGFuZ190IGhhbmc7CisJaWd0X2hhbmdfdCBoYW5nID0g aWd0X2hhbmdfcmluZyhmZCwgSTkxNV9FWEVDX1JFTkRFUik7CiAJdW5zaWduZWQgZW5naW5lOwog Ci0JbWVtc2V0KCZvYmosIDAsIHNpemVvZihvYmopKTsKLQlvYmouaGFuZGxlID0gZ2VtX2NyZWF0 ZShmZCwgNDA5Nik7Ci0JZ2VtX3dyaXRlKGZkLCBvYmouaGFuZGxlLCAwLCAmYmJlLCBzaXplb2Yo JmJiZSkpOwotCi0JbWVtc2V0KCZleGVjYnVmLCAwLCBzaXplb2YoZXhlY2J1ZikpOwotCWV4ZWNi dWYuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJm9iaik7Ci0JZXhlY2J1Zi5idWZmZXJf Y291bnQgPSAxOwotCiAJZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGZkLCBlbmdpbmUpIHsKLQkJ aGFuZyA9IGlndF9oYW5nX3JpbmcoZmQsIGVuZ2luZSk7CisJCXN0cnVjdCBkcm1faTkxNV9nZW1f ZXhlY2J1ZmZlcjIgZWIgPSBoYW5nLnNwaW4tPmV4ZWNidWY7CiAKLQkJZXhlY2J1Zi5mbGFncyA9 IGVuZ2luZTsKLQkJX19nZW1fZXhlY2J1ZihmZCwgJmV4ZWNidWYpOworCQlpZiAoZW5naW5lID09 IEk5MTVfRVhFQ19SRU5ERVIpCisJCQljb250aW51ZTsKIAotCQlnZW1fY2xvc2UoZmQsIGhhbmcu aGFuZGxlKTsKKwkJZWIuZmxhZ3MgPSBlbmdpbmU7CisJCV9fZ2VtX2V4ZWNidWYoZmQsICZlYik7 CiAJfQogCi0JaGFuZy5oYW5kbGUgPSBvYmouaGFuZGxlOwogCXJldHVybiBoYW5nOwogfQogCmRp ZmYgLS1naXQgYS90ZXN0cy9nZW1fZXhlY19zY2hlZHVsZS5jIGIvdGVzdHMvZ2VtX2V4ZWNfc2No ZWR1bGUuYwppbmRleCAzNWE0NGFiMTAuLjQzZWE5N2U2MSAxMDA2NDQKLS0tIGEvdGVzdHMvZ2Vt X2V4ZWNfc2NoZWR1bGUuYworKysgYi90ZXN0cy9nZW1fZXhlY19zY2hlZHVsZS5jCkBAIC00MjMs NyArNDIzLDcgQEAgc3RhdGljIHZvaWQgcHJlZW1wdChpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIHVu c2lnbmVkIGZsYWdzKQogCWdlbV9jb250ZXh0X3NldF9wcmlvcml0eShmZCwgY3R4W0hJXSwgTUFY X1BSSU8pOwogCiAJaWYgKGZsYWdzICYgSEFOR19MUCkKLQkJaGFuZyA9IGlndF9oYW5nX2N0eChm ZCwgY3R4W0xPXSwgcmluZywgMCwgTlVMTCk7CisJCWhhbmcgPSBpZ3RfaGFuZ19jdHgoZmQsIGN0 eFtMT10sIHJpbmcsIDApOwogCiAJZm9yIChpbnQgbiA9IDA7IG4gPCBBUlJBWV9TSVpFKHNwaW4p OyBuKyspIHsKIAkJaWYgKGZsYWdzICYgTkVXX0NUWCkgewpAQCAtNzMwLDcgKzczMCw3IEBAIHN0 YXRpYyB2b2lkIHByZWVtcHRpdmVfaGFuZyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcpCiAJCWdlbV9j b250ZXh0X2Rlc3Ryb3koZmQsIGN0eFtMT10pOwogCX0KIAotCWhhbmcgPSBpZ3RfaGFuZ19jdHgo ZmQsIGN0eFtISV0sIHJpbmcsIDAsIE5VTEwpOworCWhhbmcgPSBpZ3RfaGFuZ19jdHgoZmQsIGN0 eFtISV0sIHJpbmcsIDApOwogCWlndF9wb3N0X2hhbmdfcmluZyhmZCwgaGFuZyk7CiAKIAlmb3Ig KGludCBuID0gMDsgbiA8IEFSUkFZX1NJWkUoc3Bpbik7IG4rKykgewpkaWZmIC0tZ2l0IGEvdGVz dHMvZ2VtX21tYXBfZ3R0LmMgYi90ZXN0cy9nZW1fbW1hcF9ndHQuYwppbmRleCBmZDYwYjhmZjgu LmM4YTBiZWRlYyAxMDA2NDQKLS0tIGEvdGVzdHMvZ2VtX21tYXBfZ3R0LmMKKysrIGIvdGVzdHMv Z2VtX21tYXBfZ3R0LmMKQEAgLTM5OSw3ICszOTksNyBAQCB0ZXN0X2hhbmcoaW50IGZkKQogCiAJ CWxhc3RfcGF0dGVybiA9IG5leHRfcGF0dGVybjsKIAkJbmV4dF9wYXR0ZXJuID0gKG5leHRfcGF0 dGVybiArIDEpICUgQVJSQVlfU0laRShwYXR0ZXJucyk7Ci0JfSB3aGlsZSAoZ2VtX2JvX2J1c3ko ZmQsIGhhbmcuaGFuZGxlKSk7CisJfSB3aGlsZSAoZ2VtX2JvX2J1c3koZmQsIGhhbmcuc3Bpbi0+ aGFuZGxlKSk7CiAKIAlpZ3RfcG9zdF9oYW5nX3JpbmcoZmQsIGhhbmcpOwogCmRpZmYgLS1naXQg YS90ZXN0cy9nZW1fcmVzZXRfc3RhdHMuYyBiL3Rlc3RzL2dlbV9yZXNldF9zdGF0cy5jCmluZGV4 IDc0YmEyNjU2YS4uYWM5YWYyM2YyIDEwMDY0NAotLS0gYS90ZXN0cy9nZW1fcmVzZXRfc3RhdHMu YworKysgYi90ZXN0cy9nZW1fcmVzZXRfc3RhdHMuYwpAQCAtMTY0LDcgKzE2NCw3IEBAIHN0YXRp YyB2b2lkIGluamVjdF9oYW5nKGludCBmZCwgdWludDMyX3QgY3R4LAogCiAJY2xvY2tfZ2V0dGlt ZShDTE9DS19NT05PVE9OSUMsICZ0c19pbmplY3RlZCk7CiAKLQloYW5nID0gaWd0X2hhbmdfY3R4 KGZkLCBjdHgsIGUtPmV4ZWNfaWQgfCBlLT5mbGFncywgZmxhZ3MgJiBCQU4sIE5VTEwpOworCWhh bmcgPSBpZ3RfaGFuZ19jdHgoZmQsIGN0eCwgZS0+ZXhlY19pZCB8IGUtPmZsYWdzLCBmbGFncyAm IEJBTik7CiAJaWYgKChmbGFncyAmIEFTWU5DKSA9PSAwKQogCQlpZ3RfcG9zdF9oYW5nX3Jpbmco ZmQsIGhhbmcpOwogfQpAQCAtNTQ2LDcgKzU0Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfY2xvc2Vf cGVuZGluZ19mb3JrKGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lICplLAogCiAJ YXNzZXJ0X3Jlc2V0X3N0YXR1cyhmZCwgZmQsIDAsIFJTX05PX0VSUk9SKTsKIAotCWhhbmcgPSBp Z3RfaGFuZ19jdHgoZmQsIDAsIGUtPmV4ZWNfaWQgfCBlLT5mbGFncywgMCwgTlVMTCk7CisJaGFu ZyA9IGlndF9oYW5nX2N0eChmZCwgMCwgZS0+ZXhlY19pZCB8IGUtPmZsYWdzLCAwKTsKIAlzbGVl cCgxKTsKIAogCS8qIEF2b2lkIGhlbHBlcnMgYXMgd2UgbmVlZCB0byBraWxsIHRoZSBjaGlsZApk aWZmIC0tZ2l0IGEvdGVzdHMvZ2VtX3Nocmluay5jIGIvdGVzdHMvZ2VtX3Nocmluay5jCmluZGV4 IDkyOWUwNDI2YS4uYzhlMDU4MTRlIDEwMDY0NAotLS0gYS90ZXN0cy9nZW1fc2hyaW5rLmMKKysr IGIvdGVzdHMvZ2VtX3Nocmluay5jCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIHZvaWQgaGFu ZyhpbnQgZmQsIHVpbnQ2NF90IGFsbG9jKQogCQlnZW1fZXhlY2J1ZihmZCwgJmV4ZWNidWYpOwog CX0KIAotCWdlbV9jbG9zZShmZCwgaWd0X2hhbmdfcmluZyhmZCwgMCkuaGFuZGxlKTsKKwlnZW1f Y2xvc2UoZmQsIGlndF9oYW5nX3JpbmcoZmQsIDApLnNwaW4tPmhhbmRsZSk7CiAJZm9yIChpbnQg aSA9IDA7IGkgPD0gY291bnQ7IGkrKykKIAkJZ2VtX21hZHZpc2UoZmQsIG9ialtpXS5oYW5kbGUs IEk5MTVfTUFEVl9ET05UTkVFRCk7CiAJbXVubWFwKG9iaiwgb2JqX3NpemUpOwpkaWZmIC0tZ2l0 IGEvdGVzdHMvZ2VtX3NvZnRwaW4uYyBiL3Rlc3RzL2dlbV9zb2Z0cGluLmMKaW5kZXggMjNmOTM2 MjM3Li4zMzYwMDhiOGUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2dlbV9zb2Z0cGluLmMKKysrIGIvdGVz dHMvZ2VtX3NvZnRwaW4uYwpAQCAtMzU5LDExICszNTksMTIgQEAgc3RhdGljIHZvaWQgdGVzdF9l dmljdF9oYW5nKGludCBmZCkKIAlleGVjYnVmLmJ1ZmZlcnNfcHRyID0gdG9fdXNlcl9wb2ludGVy KCZvYmplY3QpOwogCWV4ZWNidWYuYnVmZmVyX2NvdW50ID0gMTsKIAotCWhhbmcgPSBpZ3RfaGFu Z19jdHgoZmQsIDAsIDAsIDAsICh1aW50NjRfdCAqKSZleHBlY3RlZCk7Ci0Jb2JqZWN0Lm9mZnNl dCA9IGV4cGVjdGVkOwotCW9iamVjdC5mbGFncyA9IEVYRUNfT0JKRUNUX1BJTk5FRDsKKwloYW5n ID0gaWd0X2hhbmdfY3R4KGZkLCAwLCAwLCAwKTsKKwlleHBlY3RlZCA9IGhhbmcuc3Bpbi0+b2Jq WzFdLm9mZnNldDsKIAogCS8qIFJlcGxhY2UgdGhlIGh1bmcgYmF0Y2ggd2l0aCBvdXJzZWx2ZXMs IGZvcmNpbmcgYW4gZXZpY3Rpb24gKi8KKwlvYmplY3Qub2Zmc2V0ID0gZXhwZWN0ZWQ7CisJb2Jq ZWN0LmZsYWdzID0gRVhFQ19PQkpFQ1RfUElOTkVEOwogCWdlbV9leGVjYnVmKGZkLCAmZXhlY2J1 Zik7CiAJaWd0X2Fzc2VydF9lcV91NjQob2JqZWN0Lm9mZnNldCwgZXhwZWN0ZWQpOwogCi0tIAoy LjE4LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=