From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marius Vlad Subject: [PATCH i-g-t 1/3] lib/{igt_sysfs, igt_aux}: Make available to other users kick_fbcon() (unbind_fbcon()), and added helpers to igt_aux. Date: Thu, 20 Oct 2016 22:36:47 +0300 Message-ID: <20161020193649.11701-2-marius.c.vlad@intel.com> References: <20161020193649.11701-1-marius.c.vlad@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2B88E6EC0F for ; Thu, 20 Oct 2016 19:30:40 +0000 (UTC) In-Reply-To: <20161020193649.11701-1-marius.c.vlad@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org UHJldmlvdXNseSB1bmRlciB1bmJpbmRfZmJjb24oKSwgZGlzYWJsZS9lbmFibGUgZnJhbWVidWZm ZXIgY29uc29sZS4KCmxpYi9pZ3RfYXV4OiBBZGRlZCBoZWxwZXJzIHRvIGhlbHAgY29udmVydCBz aCBzY3JpcHRzIHRvIEMgdmVyc2lvbi4gbGlia21vZCBhbmQKcHJvY3BzIGludGVyZmFjZS4KClNp Z25lZC1vZmYtYnk6IE1hcml1cyBWbGFkIDxtYXJpdXMuYy52bGFkQGludGVsLmNvbT4KLS0tCiBj b25maWd1cmUuYWMgICAgfCAgIDIgKwogbGliL01ha2VmaWxlLmFtIHwgICAyICsKIGxpYi9pZ3Rf YXV4LmMgICB8IDI3OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogbGliL2lndF9hdXguaCAgIHwgICA3ICsrCiBsaWIvaWd0X2d2dC5jICAg fCAgNDMgKy0tLS0tLS0tCiBsaWIvaWd0X3N5c2ZzLmMgfCAgNTQgKysrKysrKysrKysKIGxpYi9p Z3Rfc3lzZnMuaCB8ICAgMiArCiA3IGZpbGVzIGNoYW5nZWQsIDM0NyBpbnNlcnRpb25zKCspLCA0 MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMK aW5kZXggNzM1Y2ZkNS4uMmM2ZTQ5ZCAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2Nv bmZpZ3VyZS5hYwpAQCAtMTIxLDYgKzEyMSw4IEBAIEFDX1NVQlNUKEFTU0VNQkxFUl9XQVJOX0NG TEFHUykKIAogUEtHX0NIRUNLX01PRFVMRVMoRFJNLCBbbGliZHJtXSkKIFBLR19DSEVDS19NT0RV TEVTKFBDSUFDQ0VTUywgW3BjaWFjY2VzcyA+PSAwLjEwXSkKK1BLR19DSEVDS19NT0RVTEVTKEtN T0QsIFtsaWJrbW9kXSkKK1BLR19DSEVDS19NT0RVTEVTKFBST0NQUywgW2xpYnByb2Nwc10pCiAK IGNhc2UgIiR0YXJnZXRfY3B1IiBpbgogCXg4Nip8aT84NikKZGlmZiAtLWdpdCBhL2xpYi9NYWtl ZmlsZS5hbSBiL2xpYi9NYWtlZmlsZS5hbQppbmRleCA0YzA4OTNkLi5lMTczN2JkIDEwMDY0NAot LS0gYS9saWIvTWFrZWZpbGUuYW0KKysrIGIvbGliL01ha2VmaWxlLmFtCkBAIC0zNCw2ICszNCw4 IEBAIEFNX0NGTEFHUyArPSAkKENBSVJPX0NGTEFHUykKIGxpYmludGVsX3Rvb2xzX2xhX0xJQkFE RCA9IFwKIAkkKERSTV9MSUJTKSBcCiAJJChQQ0lBQ0NFU1NfTElCUykgXAorCSQoUFJPQ1BTX0xJ QlMpIFwKKwkkKEtNT0RfTElCUykgXAogCSQoQ0FJUk9fTElCUykgXAogCSQoTElCVURFVl9MSUJT KSBcCiAJJChMSUJVTldJTkRfTElCUykgXApkaWZmIC0tZ2l0IGEvbGliL2lndF9hdXguYyBiL2xp Yi9pZ3RfYXV4LmMKaW5kZXggNDIxZjZkNC4uZDE1MDgxOCAxMDA2NDQKLS0tIGEvbGliL2lndF9h dXguYworKysgYi9saWIvaWd0X2F1eC5jCkBAIC01MSw2ICs1MSw5IEBACiAjaW5jbHVkZSA8dGVy bWlvcy5oPgogI2luY2x1ZGUgPGFzc2VydC5oPgogCisjaW5jbHVkZSA8cHJvYy9yZWFkcHJvYy5o PgorI2luY2x1ZGUgPGxpYmttb2QuaD4KKwogI2luY2x1ZGUgImRybXRlc3QuaCIKICNpbmNsdWRl ICJpOTE1X2RybS5oIgogI2luY2x1ZGUgImludGVsX2NoaXBzZXQuaCIKQEAgLTExOTMsNiArMTE5 NiwyODEgQEAgdm9pZCBpZ3Rfc2V0X21vZHVsZV9wYXJhbV9pbnQoY29uc3QgY2hhciAqbmFtZSwg aW50IHZhbCkKIAlpZ3Rfc2V0X21vZHVsZV9wYXJhbShuYW1lLCBzdHIpOwogfQogCisvKioKKyAq IGlndF9wa2lsbDoKKyAqIEBzaWc6IFNpZ25hbCB0byBzZW5kCisgKiBAbmFtZTogTmFtZSBvZiBw cm9jZXNzIGluIHRoZSBmb3JtIGZvdW5kIGluIC9wcm9jL3BpZC9jb21tIChsaW1pdGVkIHRvIDE1 CisgKiBjaGFycykKKyAqIEByZXR1cm5zOiAwIGluIGNhc2UgdGhlIHByb2Nlc3MgaXMgbm90IGZv dW5kIHJ1bm5pbmcgb3IgdGhlIHNpZ25hbCBoYXMgYmVlbgorICogc2VudCBzdWNjZXNzZnVsbHkg b3IgLTEgb3RoZXJ3aXNlLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gc2VuZHMgdGhlIHNpZ25hbCBA c2lnIGZvciBhIHByb2Nlc3MgZm91bmQgaW4gcHJvY2VzcyB0YWJsZQorICogd2l0aCBuYW1lIEBj b21tLgorICovCitpbnQKK2lndF9wa2lsbChpbnQgc2lnLCBjb25zdCBjaGFyICpjb21tKQorewor CWludCBlcnIgPSAwLCB0cnkgPSA1OworCVBST0NUQUIgKnByb2M7CisJcHJvY190ICpwcm9jX2lu Zm87CisKKwlwcm9jID0gb3BlbnByb2MoUFJPQ19GSUxMQ09NIHwgUFJPQ19GSUxMU1RBVCB8IFBS T0NfRklMTEFSRyk7CisJaWd0X2Fzc2VydChwcm9jICE9IE5VTEwpOworCisJd2hpbGUgKChwcm9j X2luZm8gPSByZWFkcHJvYyhwcm9jLCBOVUxMKSkpIHsKKwkJaWYgKHByb2NfaW5mbyAmJgorCQkg ICAgIXN0cm5jYXNlY21wKHByb2NfaW5mby0+Y21kLCBjb21tLCBzaXplb2YocHJvY19pbmZvLT5j bWQpKSkgeworCQkJc3dpdGNoIChzaWcpIHsKKwkJCWNhc2UgU0lHVEVSTToKKwkJCWNhc2UgU0lH S0lMTDoKKwkJCQlkbyB7CisJCQkJCWtpbGwocHJvY19pbmZvLT50aWQsIHNpZyk7CisJCQkJfSB3 aGlsZSAoa2lsbChwcm9jX2luZm8tPnRpZCwgMCkgPCAwICYmIHRyeS0tKTsKKworCQkJCWlmIChr aWxsKHByb2NfaW5mby0+dGlkLCAwKSA8IDApCisJCQkJCWVyciA9IC0xOworCQkJCWJyZWFrOwor CQkJZGVmYXVsdDoKKwkJCQlpZiAoa2lsbChwcm9jX2luZm8tPnRpZCwgc2lnKSA8IDApCisJCQkJ CWVyciA9IC0xOworCQkJCWJyZWFrOworCQkJfQorCisJCQlmcmVlcHJvYyhwcm9jX2luZm8pOwor CQkJYnJlYWs7CisJCX0KKwkJZnJlZXByb2MocHJvY19pbmZvKTsKKwl9CisKKwljbG9zZXByb2Mo cHJvYyk7CisJcmV0dXJuIGVycjsKK30KKworLyoqCisgKiBpZ3Rfa2lsbDoKKyAqIEBzaWc6IFNp Z25hbCB0byBzZW5kLgorICogQHBpZDogUHJvY2VzcyBwaWQgdG8gc2VuZC4KKyAqIEByZXR1cm5z OiAwIGluIGNhc2Ugb2Ygc3VjY2VzcyBvciAtMSBvdGhlcndpc2UuCisgKgorICogVGhpcyBmdW5j dGlvbiBpcyBpZGVudGljYWwgdG8gaWd0X3BraWxsKCkgb25seSB0aGF0IGl0IHNlYXJjaGVzIHRo ZSBwcm9jZXNzCisgKiB0YWJsZSB1c2luZyBAcGlkIGluc3RlYWQgb2YgY29tbSBuYW1lLgorICoK KyAqLworaW50CitpZ3Rfa2lsbChpbnQgc2lnLCBwaWRfdCBwaWQpCit7CisJaW50IGVyciA9IDAs IHRyeSA9IDU7CisJUFJPQ1RBQiAqcHJvYzsKKwlwcm9jX3QgKnByb2NfaW5mbzsKKworCXByb2Mg PSBvcGVucHJvYyhQUk9DX1BJRCB8IFBST0NfRklMTFNUQVQgfCBQUk9DX0ZJTExBUkcpOworCWln dF9hc3NlcnQocHJvYyAhPSBOVUxMKTsKKworCXdoaWxlICgocHJvY19pbmZvID0gcmVhZHByb2Mo cHJvYywgTlVMTCkpKSB7CisJCWlmIChwcm9jX2luZm8gJiYgcHJvY19pbmZvLT50aWQgPT0gcGlk KSB7CisJCQlzd2l0Y2ggKHNpZykgeworCQkJY2FzZSBTSUdURVJNOgorCQkJY2FzZSBTSUdLSUxM OgorCQkJCWRvIHsKKwkJCQkJa2lsbChwcm9jX2luZm8tPnRpZCwgc2lnKTsKKwkJCQl9IHdoaWxl IChraWxsKHByb2NfaW5mby0+dGlkLCAwKSA8IDAgJiYgdHJ5LS0pOworCisJCQkJaWYgKGtpbGwo cHJvY19pbmZvLT50aWQsIDApIDwgMCkKKwkJCQkJZXJyID0gLTE7CisJCQkJYnJlYWs7CisJCQlk ZWZhdWx0OgorCQkJCWlmIChraWxsKHByb2NfaW5mby0+dGlkLCBzaWcpIDwgMCkKKwkJCQkJZXJy ID0gLTE7CisJCQkJYnJlYWs7CisJCQl9CisJCQlmcmVlcHJvYyhwcm9jX2luZm8pOworCQkJYnJl YWs7CisJCX0KKwkJZnJlZXByb2MocHJvY19pbmZvKTsKKwl9CisKKwljbG9zZXByb2MocHJvYyk7 CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGJvb2wKK2lndF9tb2R1bGVfaW5fdXNlKHN0cnVj dCBrbW9kX21vZHVsZSAqa21vZCkKK3sKKwlpbnQgZXJyOworCisJZXJyID0ga21vZF9tb2R1bGVf Z2V0X2luaXRzdGF0ZShrbW9kKTsKKworCS8qIGlmIGNvbXBpbGVkIGJ1aWx0aW4gb3IgZG9lcyBu b3QgZXhpc3QgKi8KKwlpZiAoZXJyID09IEtNT0RfTU9EVUxFX0JVSUxUSU4gfHwgZXJyIDwgMCkK KwkJcmV0dXJuIGZhbHNlOworCisJaWYgKGttb2RfbW9kdWxlX2dldF9yZWZjbnQoa21vZCkgIT0g MCB8fAorCSAgICBrbW9kX21vZHVsZV9nZXRfaG9sZGVycyhrbW9kKSAhPSBOVUxMKQorCQlyZXR1 cm4gdHJ1ZTsKKworCisJcmV0dXJuIGZhbHNlOworfQorCisvKioKKyAqIGlndF9sc21vZDoKKyAq IEBtb2RfbmFtZTogVGhlIG5hbWUgb2YgdGhlIG1vZHVsZS4KKyAqIEByZXR1cm5zOiBUcnVlIGlu IGNhc2UgdGhlIG1vZHVsZSBoYXMgYmVlbiBmb3VuZCBvciBmYWxzZSBvdGhlcndpc2UuCisgKgor ICoKKyAqIEZ1bmN0aW9uIHRvIGNoZWNrIHRoZSBleGlzdGFuY2Ugb2YgbW9kdWxlIEBtb2RfbmFt ZSBpbiBsaXN0IG9mIGxvYWRlZCBrZXJuZWwKKyAqIG1vZHVsZXMuCisgKgorICovCitib29sCitp Z3RfbHNtb2RfaGFzX21vZHVsZShjb25zdCBjaGFyICptb2RfbmFtZSkKK3sKKwlzdHJ1Y3Qga21v ZF9saXN0ICptb2QsICpsaXN0OworCXN0cnVjdCBrbW9kX2N0eCAqY3R4OworCWJvb2wgcmV0ID0g ZmFsc2U7CisKKwljdHggPSBrbW9kX25ldyhOVUxMLCBOVUxMKTsKKwlpZ3RfYXNzZXJ0KGN0eCAh PSBOVUxMKTsKKworCWlmIChrbW9kX21vZHVsZV9uZXdfZnJvbV9sb2FkZWQoY3R4LCAmbGlzdCkg PCAwKSB7CisJCWttb2RfdW5yZWYoY3R4KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlrbW9kX2xp c3RfZm9yZWFjaChtb2QsIGxpc3QpIHsKKwkJc3RydWN0IGttb2RfbW9kdWxlICprbW9kID0ga21v ZF9tb2R1bGVfZ2V0X21vZHVsZShtb2QpOworCQljb25zdCBjaGFyICprbW9kX25hbWUgPSBrbW9k X21vZHVsZV9nZXRfbmFtZShrbW9kKTsKKworCQlpZiAoIXN0cm5jYXNlY21wKGttb2RfbmFtZSwg bW9kX25hbWUsIHN0cmxlbihrbW9kX25hbWUpKSkgeworCQkJa21vZF9tb2R1bGVfdW5yZWYoa21v ZCk7CisJCQlyZXQgPSB0cnVlOworCQkJYnJlYWs7CisJCX0KKwkJa21vZF9tb2R1bGVfdW5yZWYo a21vZCk7CisJfQorCisJa21vZF9tb2R1bGVfdW5yZWZfbGlzdChsaXN0KTsKKwlrbW9kX3VucmVm KGN0eCk7CisKKwlyZXR1cm4gcmV0OworfQorCisKKy8qKgorICogaWd0X2luc21vZDoKKyAqIEBt b2RfbmFtZTogVGhlIG5hbWUgb2YgdGhlIG1vZHVsZQorICogQG9wdHM6IFBhcmFtZXRlcnMgZm9y IHRoZSBtb2R1bGUuIE5VTEwgaW4gY2FzZSBubyBwYXJhbWV0ZXJzCisgKiBhcmUgdG8gYmUgcGFz c2VkLCBvciBhICdcMCcgdGVybWluYXRlZCBzdHJpbmcgb3RoZXJ3aXNlLgorICogQHJldHVybnM6 IDAgaW4gY2FzZSBvZiBzdWNjZXNzIG9yIC0xIGluIGNhc2UgdGhlIG1vZHVsZSBjb3VsZCBub3QK KyAqIGJlIGxvYWRlZC4KKyAqCisgKgorICogVGhpcyBmdW5jdGlvbiBsb2FkcyBhIGtlcm5lbCBt b2R1bGUgdXNpbmcgdGhlIG5hbWUgc3BlY2lmaWVkIGluIEBtb2RfbmFtZS4KKyAqCisgKiBATm90 ZTogVGhpcyBmdW5jdGlvbnMgZG9lc24ndCBhdXRvbWF0aWNhbGx5IHJlc29sdmUgb3RoZXIgbW9k dWxlCisgKiBkZXBlbmRlbmNpZXMgc28gbWFrZSBtYWtlIHN1cmUgeW91IGxvYWQgdGhlIGRlcGVu ZGVuY2llcyBtb2R1bGUocykgYmVmb3JlCisgKiB0aGlzIG9uZS4KKyAqLworaW50CitpZ3RfaW5z bW9kKGNvbnN0IGNoYXIgKm1vZF9uYW1lLCBjb25zdCBjaGFyICpvcHRzKQoreworCXN0cnVjdCBr bW9kX2N0eCAqY3R4OworCXN0cnVjdCBrbW9kX21vZHVsZSAqa21vZDsKKwlpbnQgZXJyID0gMDsK KworCWN0eCA9IGttb2RfbmV3KE5VTEwsIE5VTEwpOworCWlndF9hc3NlcnQoY3R4ICE9IE5VTEwp OworCisKKwllcnIgPSBrbW9kX21vZHVsZV9uZXdfZnJvbV9uYW1lKGN0eCwgbW9kX25hbWUsICZr bW9kKTsKKwlpZiAoZXJyIDwgMCkgeworCQlnb3RvIG91dDsKKwl9CisKKwllcnIgPSBrbW9kX21v ZHVsZV9pbnNlcnRfbW9kdWxlKGttb2QsIDAsIG9wdHMpOworCWlmIChlcnIgPCAwKSB7CisJCXN3 aXRjaCAoZXJyKSB7CisJCWNhc2UgLUVFWElTVDoKKwkJCWlndF9pbmZvKCJNb2R1bGUgJXMgYWxy ZWFkeSBpbnNlcnRlZFxuIiwKKwkJCQkga21vZF9tb2R1bGVfZ2V0X25hbWUoa21vZCkpOworCQkJ ZXJyID0gLTE7CisJCQlicmVhazsKKwkJY2FzZSAtRU5PRU5UOgorCQkJaWd0X2luZm8oIlVua25v d24gc3ltYm9sIGluIG1vZHVsZSAlcyBvciAiCisJCQkJICJ1bmtub3duIHBhcmFtZXRlclxuIiwK KwkJCQkga21vZF9tb2R1bGVfZ2V0X25hbWUoa21vZCkpOworCQkJZXJyID0gLTE7CisJCQlicmVh azsKKwkJZGVmYXVsdDoKKwkJCWlndF9pbmZvKCJDb3VsZCBub3QgaW5zZXJ0ICVzICglcylcbiIs CisJCQkJIGttb2RfbW9kdWxlX2dldF9uYW1lKGttb2QpLCBzdHJlcnJvcigtZXJyKSk7CisJCQll cnIgPSAtMTsKKwkJCWJyZWFrOworCQl9CisJfQorb3V0OgorCWttb2RfbW9kdWxlX3VucmVmKGtt b2QpOworCWttb2RfdW5yZWYoY3R4KTsKKworCXJldHVybiBlcnI7Cit9CisKKworLyoqCisgKiBp Z3Rfcm1tb2Q6CisgKiBAbW9kX25hbWU6IE1vZHVsZSBuYW1lLgorICogQGZvcmNlOiBBIGJvb2wg dmFsdWUgdG8gZm9yY2UgcmVtb3ZhbC4gTm90ZSB0aGF0IGhpcyBmbGFnIGRvZXMgbm90IHJlbW92 ZQorICogdGhlIG1vZHVsZShzKSB0aGF0IHRoZSBtb2R1bGUgc3BlY2lmaWVkIGJ5IEBtb2RfbmFt ZSBkZXBlbmRzIG9uLiBJbiBvdGhlcgorICogd29yZHMgeW91IG11c3QgaWd0X3JtbW9kKCkgdGhl IG1vZHVsZShzKSBkZXBlbmRlbmNpZXMgYmVmb3JlIGNhbGxpbmcgaXQgd2l0aAorICogQG1vZF9u YW1lLgorICogQHJldHVybnM6IDAgaW4gY2FzZSBvZiBzdWNjZXNzIG9yIC0xIG90aGVyd2lzZS4K KyAqCisgKiBSZW1vdmVzIHRoZSBtb2R1bGUgQG1vZF9uYW1lLgorICoKKyAqLworaW50CitpZ3Rf cm1tb2QoY29uc3QgY2hhciAqbW9kX25hbWUsIGJvb2wgZm9yY2UpCit7CisJc3RydWN0IGttb2Rf Y3R4ICpjdHg7CisJc3RydWN0IGttb2RfbW9kdWxlICprbW9kOworCWludCBlcnIsIGZsYWdzID0g MDsKKworCWN0eCA9IGttb2RfbmV3KE5VTEwsIE5VTEwpOworCWlndF9hc3NlcnQoY3R4ICE9IE5V TEwpOworCisJZXJyID0ga21vZF9tb2R1bGVfbmV3X2Zyb21fbmFtZShjdHgsIG1vZF9uYW1lLCAm a21vZCk7CisJaWYgKGVyciA8IDApIHsKKwkJaWd0X2luZm8oIkNvdWxkIG5vdCB1c2UgbW9kdWxl ICVzICglcylcbiIsIG1vZF9uYW1lLAorCQkJCXN0cmVycm9yKC1lcnIpKTsKKwkJZXJyID0gLTE7 CisJCWdvdG8gb3V0OworCX0KKworCWlmIChpZ3RfbW9kdWxlX2luX3VzZShrbW9kKSkgeworCQlp Z3RfaW5mbygiTW9kdWxlICVzIGlzIGluIHVzZVxuIiwgbW9kX25hbWUpOworCQllcnIgPSAtMTsK KwkJZ290byBvdXQ7CisJfQorCisJaWYgKGZvcmNlKSB7CisJCWZsYWdzIHw9IEtNT0RfUkVNT1ZF X0ZPUkNFOworCX0KKworCWVyciA9IGttb2RfbW9kdWxlX3JlbW92ZV9tb2R1bGUoa21vZCwgZmxh Z3MpOworCWlmIChlcnIgPCAwKSB7CisJCWlndF9pbmZvKCJDb3VsZCBub3QgcmVtb3ZlIG1vZHVs ZSAlcyAoJXMpXG4iLCBtb2RfbmFtZSwKKwkJCQlzdHJlcnJvcigtZXJyKSk7CisJCWVyciA9IC0x OworCX0KKworb3V0OgorCWttb2RfbW9kdWxlX3VucmVmKGttb2QpOworCWttb2RfdW5yZWYoY3R4 KTsKKworCXJldHVybiBlcnI7Cit9CisKKwogc3RhdGljIHN0cnVjdCBpZ3Rfc2lnbGF0ZW5jeSB7 CiAJdGltZXJfdCB0aW1lcjsKIAlzdHJ1Y3QgdGltZXNwZWMgdGFyZ2V0OwpkaWZmIC0tZ2l0IGEv bGliL2lndF9hdXguaCBiL2xpYi9pZ3RfYXV4LmgKaW5kZXggZDMwMTk2Yi4uNzk0NjkyMyAxMDA2 NDQKLS0tIGEvbGliL2lndF9hdXguaAorKysgYi9saWIvaWd0X2F1eC5oCkBAIC0yNjQsNCArMjY0 LDExIEBAIGRvdWJsZSBpZ3Rfc3RvcF9zaWdsYXRlbmN5KHN0cnVjdCBpZ3RfbWVhbiAqcmVzdWx0 KTsKIHZvaWQgaWd0X3NldF9tb2R1bGVfcGFyYW0oY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hh ciAqdmFsKTsKIHZvaWQgaWd0X3NldF9tb2R1bGVfcGFyYW1faW50KGNvbnN0IGNoYXIgKm5hbWUs IGludCB2YWwpOwogCitpbnQgaWd0X3BraWxsKGludCBzaWcsIGNvbnN0IGNoYXIgKmNvbW0pOwor aW50IGlndF9raWxsKGludCBzaWcsIHBpZF90IHBpZCk7CisKK2Jvb2wgaWd0X2xzbW9kX2hhc19t b2R1bGUoY29uc3QgY2hhciAqbW9kX25hbWUpOworaW50IGlndF9pbnNtb2QoY29uc3QgY2hhciAq bW9kX25hbWUsIGNvbnN0IGNoYXIgKm9wdHMpOworaW50IGlndF9ybW1vZChjb25zdCBjaGFyICpt b2RfbmFtZSwgYm9vbCBmb3JjZSk7CisKICNlbmRpZiAvKiBJR1RfQVVYX0ggKi8KZGlmZiAtLWdp dCBhL2xpYi9pZ3RfZ3Z0LmMgYi9saWIvaWd0X2d2dC5jCmluZGV4IDBmMzMyZDEuLjhiYmY5YmQg MTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZ3Z0LmMKKysrIGIvbGliL2lndF9ndnQuYwpAQCAtMjMsNiAr MjMsNyBAQAogCiAjaW5jbHVkZSAiaWd0LmgiCiAjaW5jbHVkZSAiaWd0X2d2dC5oIgorI2luY2x1 ZGUgImlndF9zeXNmcy5oIgogCiAjaW5jbHVkZSA8ZGlyZW50Lmg+CiAjaW5jbHVkZSA8dW5pc3Rk Lmg+CkBAIC00Niw0OSArNDcsOSBAQCBzdGF0aWMgYm9vbCBpc19ndnRfZW5hYmxlZCh2b2lkKQog CXJldHVybiBlbmFibGVkOwogfQogCi1zdGF0aWMgdm9pZCB1bmJpbmRfZmJjb24odm9pZCkKLXsK LQljaGFyIGJ1ZlsxMjhdOwotCWNvbnN0IGNoYXIgKnBhdGggPSAiL3N5cy9jbGFzcy92dGNvbnNv bGUiOwotCURJUiAqZGlyOwotCXN0cnVjdCBkaXJlbnQgKnZ0Y29uOwotCi0JZGlyID0gb3BlbmRp cihwYXRoKTsKLQlpZiAoIWRpcikKLQkJcmV0dXJuOwotCi0Jd2hpbGUgKCh2dGNvbiA9IHJlYWRk aXIoZGlyKSkpIHsKLQkJaW50IGZkLCBsZW47Ci0KLQkJaWYgKHN0cm5jbXAodnRjb24tPmRfbmFt ZSwgInZ0Y29uIiwgNSkpCi0JCQljb250aW51ZTsKLQotCQlzcHJpbnRmKGJ1ZiwgIiVzLyVzL25h bWUiLCBwYXRoLCB2dGNvbi0+ZF9uYW1lKTsKLQkJZmQgPSBvcGVuKGJ1ZiwgT19SRE9OTFkpOwot CQlpZiAoZmQgPCAwKQotCQkJY29udGludWU7Ci0KLQkJbGVuID0gcmVhZChmZCwgYnVmLCBzaXpl b2YoYnVmKSAtIDEpOwotCQljbG9zZShmZCk7Ci0JCWlmIChsZW4gPj0gMCkKLQkJCWJ1ZltsZW5d ID0gJ1wwJzsKLQotCQlpZiAoc3Ryc3RyKGJ1ZiwgImZyYW1lIGJ1ZmZlciBkZXZpY2UiKSkgewot CQkJc3ByaW50ZihidWYsICIlcy8lcy9iaW5kIiwgcGF0aCwgdnRjb24tPmRfbmFtZSk7Ci0JCQlm ZCA9IG9wZW4oYnVmLCBPX1dST05MWSk7Ci0JCQlpZiAoZmQgIT0gLTEpIHsKLQkJCQlpZ3RfaWdu b3JlX3dhcm4od3JpdGUoZmQsICIxXG4iLCAyKSk7Ci0JCQkJY2xvc2UoZmQpOwotCQkJfQotCQkJ YnJlYWs7Ci0JCX0KLQl9Ci0JY2xvc2VkaXIoZGlyKTsKLX0KLQogc3RhdGljIHZvaWQgdW5sb2Fk X2k5MTUodm9pZCkKIHsKLQl1bmJpbmRfZmJjb24oKTsKKwlraWNrX2ZiY29uKGZhbHNlKTsKIAkv KiBwa2lsbCBhbHNhY3QgKi8KIAogCWlndF9pZ25vcmVfd2FybihzeXN0ZW0oIi9zYmluL21vZHBy b2JlIC1zIC1yIGk5MTUiKSk7CmRpZmYgLS1naXQgYS9saWIvaWd0X3N5c2ZzLmMgYi9saWIvaWd0 X3N5c2ZzLmMKaW5kZXggNjEyZGU3NS4uMDgwMzY1OSAxMDA2NDQKLS0tIGEvbGliL2lndF9zeXNm cy5jCisrKyBiL2xpYi9pZ3Rfc3lzZnMuYwpAQCAtMzQsNyArMzQsMTEgQEAKICNpbmNsdWRlIDxm Y250bC5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPGk5MTVfZHJtLmg+CisjaW5j bHVkZSA8ZGlyZW50Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4K IAorI2luY2x1ZGUgImlndF9jb3JlLmgiCiAjaW5jbHVkZSAiaWd0X3N5c2ZzLmgiCiAKIC8qKgpA QCAtMzkxLDMgKzM5NSw1MyBAQCBib29sIGlndF9zeXNmc19zZXRfYm9vbGVhbihpbnQgZGlyLCBj b25zdCBjaGFyICphdHRyLCBib29sIHZhbHVlKQogewogCXJldHVybiBpZ3Rfc3lzZnNfcHJpbnRm KGRpciwgYXR0ciwgIiVkIiwgdmFsdWUpID09IDE7CiB9CisKKy8qKgorICoga2lja19mYmNvbjoK KyAqIEBlbmFibGU6IGJvb2xlYW4gdmFsdWUKKyAqCisgKiBUaGlzIGZ1bmN0aW9ucyBlbmFibGVz L2Rpc2FibGVzIHRoZSB0ZXh0IGNvbnNvbGUgcnVubmluZyBvbiB0b3Agb2YgdGhlCisgKiBmcmFt ZWJ1ZmZlciBkZXZpY2UuCisgKi8KK3ZvaWQga2lja19mYmNvbihib29sIGVuYWJsZSkKK3sKKwlj aGFyIGJ1ZlsxMjhdOworCWNvbnN0IGNoYXIgKnBhdGggPSAiL3N5cy9jbGFzcy92dGNvbnNvbGUi OworCURJUiAqZGlyOworCXN0cnVjdCBkaXJlbnQgKnZ0Y29uOworCisJZGlyID0gb3BlbmRpcihw YXRoKTsKKwlpZiAoIWRpcikKKwkJcmV0dXJuOworCisJd2hpbGUgKCh2dGNvbiA9IHJlYWRkaXIo ZGlyKSkpIHsKKwkJaW50IGZkLCBsZW47CisKKwkJaWYgKHN0cm5jbXAodnRjb24tPmRfbmFtZSwg InZ0Y29uIiwgNSkpCisJCQljb250aW51ZTsKKworCQlzcHJpbnRmKGJ1ZiwgIiVzLyVzL25hbWUi LCBwYXRoLCB2dGNvbi0+ZF9uYW1lKTsKKwkJZmQgPSBvcGVuKGJ1ZiwgT19SRE9OTFkpOworCQlp ZiAoZmQgPCAwKQorCQkJY29udGludWU7CisKKwkJbGVuID0gcmVhZChmZCwgYnVmLCBzaXplb2Yo YnVmKSAtIDEpOworCQljbG9zZShmZCk7CisJCWlmIChsZW4gPj0gMCkKKwkJCWJ1ZltsZW5dID0g J1wwJzsKKworCQlpZiAoc3Ryc3RyKGJ1ZiwgImZyYW1lIGJ1ZmZlciBkZXZpY2UiKSkgeworCQkJ c3ByaW50ZihidWYsICIlcy8lcy9iaW5kIiwgcGF0aCwgdnRjb24tPmRfbmFtZSk7CisJCQlmZCA9 IG9wZW4oYnVmLCBPX1dST05MWSk7CisJCQlpZiAoZmQgIT0gLTEpIHsKKwkJCQlpZiAoZW5hYmxl KQorCQkJCQlpZ3RfaWdub3JlX3dhcm4od3JpdGUoZmQsICIxXG4iLCAyKSk7CisJCQkJZWxzZQor CQkJCQlpZ3RfaWdub3JlX3dhcm4od3JpdGUoZmQsICIwXG4iLCAyKSk7CisJCQkJY2xvc2UoZmQp OworCQkJfQorCQkJYnJlYWs7CisJCX0KKwl9CisJY2xvc2VkaXIoZGlyKTsKK30KZGlmZiAtLWdp dCBhL2xpYi9pZ3Rfc3lzZnMuaCBiL2xpYi9pZ3Rfc3lzZnMuaAppbmRleCA0ODIwMDY2Li5hMTQx ODk0IDEwMDY0NAotLS0gYS9saWIvaWd0X3N5c2ZzLmgKKysrIGIvbGliL2lndF9zeXNmcy5oCkBA IC00Myw0ICs0Myw2IEBAIGJvb2wgaWd0X3N5c2ZzX3NldF91MzIoaW50IGRpciwgY29uc3QgY2hh ciAqYXR0ciwgdWludDMyX3QgdmFsdWUpOwogYm9vbCBpZ3Rfc3lzZnNfZ2V0X2Jvb2xlYW4oaW50 IGRpciwgY29uc3QgY2hhciAqYXR0cik7CiBib29sIGlndF9zeXNmc19zZXRfYm9vbGVhbihpbnQg ZGlyLCBjb25zdCBjaGFyICphdHRyLCBib29sIHZhbHVlKTsKIAordm9pZCBraWNrX2ZiY29uKGJv b2wgZW5hYmxlKTsKKwogI2VuZGlmIC8qIF9fSUdUX1NZU0ZTX0hfXyAqLwotLSAKMi43LjQKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=