From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id B310D6E4B3 for ; Fri, 5 Jul 2019 13:08:44 +0000 (UTC) From: Simon Ser Date: Fri, 5 Jul 2019 16:08:38 +0300 Message-Id: <20190705130839.5117-2-simon.ser@intel.com> In-Reply-To: <20190705130839.5117-1-simon.ser@intel.com> References: <20190705130839.5117-1-simon.ser@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 2/3] lib/igt_kms: add igt_kms_get_3d_edid 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 List-ID: VGhpcyByZXBsYWNlcyBrbXN0ZXN0X2VkaWRfYWRkXzNkLiBUaGUgcHJldmlvdXMgY29kZSBmb3Ig Z2VuZXJhdGluZyBDRUEKZXh0ZW5zaW9ucyBjYW4gYmUgcmVtb3ZlZC4KClRoZSBvbGQgYW5kIG5l dyBnZW5lcmF0ZWQgRURJRHMgYXJlIGJ5dGUtdG8tYnl0ZSBlcXVhbC4KClNpZ25lZC1vZmYtYnk6 IFNpbW9uIFNlciA8c2ltb24uc2VyQGludGVsLmNvbT4KLS0tCiBsaWIvaWd0X2ttcy5jICAgICAg ICAgICAgICAgfCAxNDkgKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBsaWIv aWd0X2ttcy5oICAgICAgICAgICAgICAgfCAgIDIgKy0KIGxpYi90ZXN0cy9pZ3RfZWRpZC5jICAg ICAgICB8ICAgMSArCiBsaWIvdGVzdHMvaWd0X2hkbWlfaW5qZWN0LmMgfCAgOTQgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIGxpYi90ZXN0cy9tZXNvbi5idWlsZCAgICAgICB8ICAgMSAtCiB0ZXN0 cy9rbXNfM2QuYyAgICAgICAgICAgICAgfCAgIDcgKy0KIDYgZmlsZXMgY2hhbmdlZCwgNTUgaW5z ZXJ0aW9ucygrKSwgMTk5IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IGxpYi90ZXN0 cy9pZ3RfaGRtaV9pbmplY3QuYwoKZGlmZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmMgYi9saWIvaWd0 X2ttcy5jCmluZGV4IDZmZTNkNGYwZWQ0ZS4uOGE3NmFjZjllOGU0IDEwMDY0NAotLS0gYS9saWIv aWd0X2ttcy5jCisrKyBiL2xpYi9pZ3Rfa21zLmMKQEAgLTExNiw5ICsxMTYsNiBAQCBzdGF0aWMg dm9pZCB1cGRhdGVfZWRpZF9jc3VtKHVuc2lnbmVkIGNoYXIgKmVkaWQsIGludCBjZWFfcG9zKQog ICogIC0gODAweDYwMCA2MEh6CiAgKiAgLSA2NDB4NDgwIDYwSHoKICAqCi0gKiBUaGlzIGNhbiBi ZSBleHRlbmRlZCB3aXRoIGZ1cnRoZXIgZmVhdHVyZXMgdXNpbmcgZnVuY3Rpb25zIHN1Y2ggYXMK LSAqICNrbXN0ZXN0X2VkaWRfYWRkXzNkLgotICoKICAqIFJldHVybnM6IGEgYmFzaWMgZWRpZCBi bG9jawogICovCiBjb25zdCB1bnNpZ25lZCBjaGFyICppZ3Rfa21zX2dldF9iYXNlX2VkaWQodm9p ZCkKQEAgLTE1NSw5ICsxNTIsNiBAQCBjb25zdCB1bnNpZ25lZCBjaGFyICppZ3Rfa21zX2dldF9i YXNlX2VkaWQodm9pZCkKICAqICAtIDgwMHg2MDAgNjBIegogICogIC0gNjQweDQ4MCA2MEh6CiAg KgotICogVGhpcyBjYW4gYmUgZXh0ZW5kZWQgd2l0aCBmdXJ0aGVyIGZlYXR1cmVzIHVzaW5nIGZ1 bmN0aW9ucyBzdWNoIGFzCi0gKiAja21zdGVzdF9lZGlkX2FkZF8zZC4KLSAqCiAgKiBSZXR1cm5z OiBhbiBhbHRlcm5hdGUgZWRpZCBibG9jawogICovCiBjb25zdCB1bnNpZ25lZCBjaGFyICppZ3Rf a21zX2dldF9hbHRfZWRpZCh2b2lkKQpAQCAtMzQ0LDYgKzMzOCw1NyBAQCBjb25zdCB1bnNpZ25l ZCBjaGFyICppZ3Rfa21zX2dldF80a19lZGlkKHZvaWQpCiAJcmV0dXJuIHJhd19lZGlkOwogfQog Citjb25zdCB1bnNpZ25lZCBjaGFyICppZ3Rfa21zX2dldF8zZF9lZGlkKHZvaWQpCit7CisJc3Rh dGljIHVuc2lnbmVkIGNoYXIgcmF3X2VkaWRbMjU2XSA9IHswfTsKKwlzdHJ1Y3QgZWRpZCAqZWRp ZDsKKwlzdHJ1Y3QgZWRpZF9leHQgKmVkaWRfZXh0OworCXN0cnVjdCBlZGlkX2NlYSAqZWRpZF9j ZWE7CisJY2hhciAqY2VhX2RhdGE7CisJc3RydWN0IGVkaWRfY2VhX2RhdGFfYmxvY2sgKmJsb2Nr OworCS8qIFdlJ2xsIGFkZCA1IGV4dGVuc2lvbiBmaWVsZHMgdG8gdGhlIEhETUkgVlNEQi4gKi8K KwljaGFyIHJhd19oZG1pW0hETUlfVlNEQl9NSU5fU0laRSArIDVdID0gezB9OworCXN0cnVjdCBo ZG1pX3ZzZGIgKmhkbWk7CisJc2l6ZV90IGNlYV9kYXRhX3NpemUgPSAwOworCisJLyogQ3JlYXRl IGEgbmV3IEVESUQgZnJvbSB0aGUgYmFzZSBJR1QgRURJRCwgYW5kIGFkZCBhbgorCSAqIGV4dGVu c2lvbiB0aGF0IGFkdmVydGlzZXMgM0Qgc3VwcG9ydC4gKi8KKwllZGlkID0gKHN0cnVjdCBlZGlk ICopIHJhd19lZGlkOworCW1lbWNweShlZGlkLCBpZ3Rfa21zX2dldF9iYXNlX2VkaWQoKSwgc2l6 ZW9mKHN0cnVjdCBlZGlkKSk7CisJZWRpZC0+ZXh0ZW5zaW9uc19sZW4gPSAxOworCWVkaWRfZXh0 ID0gJmVkaWQtPmV4dGVuc2lvbnNbMF07CisJZWRpZF9jZWEgPSAmZWRpZF9leHQtPmRhdGEuY2Vh OworCWNlYV9kYXRhID0gZWRpZF9jZWEtPmRhdGE7CisKKwkvKiBTaG9ydCBWaWRlbyBEZXNjcmlw dG9yICovCisJYmxvY2sgPSAoc3RydWN0IGVkaWRfY2VhX2RhdGFfYmxvY2sgKikgJmNlYV9kYXRh W2NlYV9kYXRhX3NpemVdOworCWNlYV9kYXRhX3NpemUgKz0gZWRpZF9jZWFfZGF0YV9ibG9ja19z ZXRfc3ZkKGJsb2NrLCBlZGlkXzRrX3N2ZHMsCisJCQkJCQkgICAgIHNpemVvZihlZGlkXzRrX3N2 ZHMpKTsKKworCS8qIFZlbmRvci1TcGVjaWZpYyBEYXRhIEJsb2NrICovCisJaGRtaSA9IChzdHJ1 Y3QgaGRtaV92c2RiICopIHJhd19oZG1pOworCWhkbWktPnNyY19waHlfYWRkclswXSA9IDB4MTA7 CisJaGRtaS0+c3JjX3BoeV9hZGRyWzFdID0gMHgwMDsKKwkvKiA1IGV4dGVuc2lvbiBmaWVsZHMg Ki8KKwloZG1pLT5mbGFnczEgPSAwOworCWhkbWktPm1heF90ZG1zX2Nsb2NrID0gMDsKKwloZG1p LT5mbGFnczIgPSBIRE1JX1ZTREJfVklERU9fUFJFU0VOVDsKKwloZG1pLT5kYXRhWzBdID0gSERN SV9WU0RCX1ZJREVPXzNEX1BSRVNFTlQ7IC8qIEhETUkgdmlkZW8gZmxhZ3MgKi8KKwloZG1pLT5k YXRhWzFdID0gMDsgLyogMCBWSUMgZW50cmllcywgMCAzRCBlbnRyaWVzICovCisKKwlibG9jayA9 IChzdHJ1Y3QgZWRpZF9jZWFfZGF0YV9ibG9jayAqKSAmY2VhX2RhdGFbY2VhX2RhdGFfc2l6ZV07 CisJY2VhX2RhdGFfc2l6ZSArPSBlZGlkX2NlYV9kYXRhX2Jsb2NrX3NldF9oZG1pX3ZzZGIoYmxv Y2ssIGhkbWksCisJCQkJCQkJICAgc2l6ZW9mKHJhd19oZG1pKSk7CisKKwlhc3NlcnQoY2VhX2Rh dGFfc2l6ZSA8PSBzaXplb2YoZWRpZF9jZWEtPmRhdGEpKTsKKworCWVkaWRfZXh0X3NldF9jZWEo ZWRpZF9leHQsIGNlYV9kYXRhX3NpemUsIDAsIDApOworCisJZWRpZF91cGRhdGVfY2hlY2tzdW0o ZWRpZCk7CisJZWRpZF9leHRfdXBkYXRlX2NlYV9jaGVja3N1bShlZGlkX2V4dCk7CisJcmV0dXJu IHJhd19lZGlkOworfQorCiBjb25zdCBjaGFyICogY29uc3QgaWd0X3BsYW5lX3Byb3BfbmFtZXNb SUdUX05VTV9QTEFORV9QUk9QU10gPSB7CiAJW0lHVF9QTEFORV9TUkNfWF0gPSAiU1JDX1giLAog CVtJR1RfUExBTkVfU1JDX1ldID0gIlNSQ19ZIiwKQEAgLTE0MDEsOTggKzE0NDYsNiBAQCBrbXN0 ZXN0X2dldF9wcm9wZXJ0eShpbnQgZHJtX2ZkLCB1aW50MzJfdCBvYmplY3RfaWQsIHVpbnQzMl90 IG9iamVjdF90eXBlLAogCXJldHVybiBmb3VuZDsKIH0KIAotc3RydWN0IGVkaWRfYmxvY2sgewot ICAgIGludCBwb3M7Ci0gICAgdW5zaWduZWQgY2hhciAqZGF0YTsKLX07Ci0KLXN0YXRpYyBzdHJ1 Y3QgZWRpZF9ibG9jawotaW5pdF9jZWFfYmxvY2soY29uc3QgdW5zaWduZWQgY2hhciAqZWRpZCwg c2l6ZV90IGxlbmd0aCwKLQkgICAgICAgdW5zaWduZWQgY2hhciAqbmV3X2VkaWRfcHRyW10sIHNp emVfdCAqbmV3X2xlbmd0aCwKLQkgICAgICAgY2hhciBleHRyYV9leHRlbnNpb25zX2xlbmd0aCwK LQkgICAgICAgdWludDMyX3QgZHRkX3N1cHBvcnQpCi17Ci0Jc3RydWN0IGVkaWRfYmxvY2sgbmV3 X2VkaWQ7Ci0JaW50IG5fZXh0ZW5zaW9uczsKLQlpbnQgcG9zOwotCXN0YXRpYyBjb25zdCBjaGFy IGNlYV9oZWFkZXJfbGVuID0gNCwgdmlkZW9fYmxvY2tfbGVuID0gNjsKLQotCWlndF9hc3NlcnQo bmV3X2VkaWRfcHRyICE9IE5VTEwgJiYgbmV3X2xlbmd0aCAhPSBOVUxMKTsKLQotCSpuZXdfbGVu Z3RoID0gbGVuZ3RoICsgMTI4OwotCi0JbmV3X2VkaWQuZGF0YSA9IGNhbGxvYygqbmV3X2xlbmd0 aCwgc2l6ZW9mKCpuZXdfZWRpZC5kYXRhKSk7Ci0JaWd0X2Fzc2VydF9mKG5ld19lZGlkLmRhdGEs ICJGYWlsZWQgdG8gYWxsb2NhdGUgJXp1IGJ5dGVzIGZvciBlZGlkXG4iLCBzaXplb2YobmV3X2xl bmd0aCkpOwotCW1lbWNweShuZXdfZWRpZC5kYXRhLCBlZGlkLCBsZW5ndGgpOwotCSpuZXdfZWRp ZF9wdHIgPSBuZXdfZWRpZC5kYXRhOwotCi0Jbl9leHRlbnNpb25zID0gbmV3X2VkaWQuZGF0YVsx MjZdOwotCW5fZXh0ZW5zaW9ucysrOwotCW5ld19lZGlkLmRhdGFbMTI2XSA9IG5fZXh0ZW5zaW9u czsKLQotCXVwZGF0ZV9lZGlkX2NzdW0obmV3X2VkaWQuZGF0YSwgMCk7Ci0KLQkvKiBhZGQgYSBj ZWEtODYxIGV4dGVuc2lvbiBibG9jayAqLwotCXBvcyA9IGxlbmd0aDsKLQluZXdfZWRpZC5kYXRh W3BvcysrXSA9IDB4MjsKLQluZXdfZWRpZC5kYXRhW3BvcysrXSA9IDB4MzsKLQluZXdfZWRpZC5k YXRhW3BvcysrXSA9IGNlYV9oZWFkZXJfbGVuICsgdmlkZW9fYmxvY2tfbGVuICsKLQkJZXh0cmFf ZXh0ZW5zaW9uc19sZW5ndGg7Ci0JbmV3X2VkaWQuZGF0YVtwb3MrK10gPSBkdGRfc3VwcG9ydDsK LQotCS8qIHZpZGVvIGJsb2NrIChpZCB8IGxlbmd0aCkgKi8KLQluZXdfZWRpZC5kYXRhW3Bvcysr XSA9IDIgPDwgNSB8ICh2aWRlb19ibG9ja19sZW4gLSAxKTsKLQluZXdfZWRpZC5kYXRhW3Bvcysr XSA9IDMyIHwgMHg4MDsgLyogMTA4MHAgQCAyNEh6IHwgKG5hdGl2ZSkqLwotCW5ld19lZGlkLmRh dGFbcG9zKytdID0gNTsgICAgICAgICAvKiAxMDgwaSBAIDYwSHogKi8KLQluZXdfZWRpZC5kYXRh W3BvcysrXSA9IDIwOyAgICAgICAgLyogMTA4MGkgQCA1MEh6ICovCi0JbmV3X2VkaWQuZGF0YVtw b3MrK10gPSA0OyAgICAgICAgIC8qIDcyMHAgQCA2MEh6Ki8KLQluZXdfZWRpZC5kYXRhW3Bvcysr XSA9IDE5OyAgICAgICAgLyogNzIwcCBAIDUwSHoqLwotCW5ld19lZGlkLnBvcyA9IHBvczsKLQot CXJldHVybiBuZXdfZWRpZDsKLX0KLQotLyoqCi0gKiBrbXN0ZXN0X2VkaWRfYWRkXzNkOgotICog QGVkaWQ6IGFuIGV4aXN0aW5nIHZhbGlkIGVkaWQgYmxvY2sKLSAqIEBsZW5ndGg6IGxlbmd0aCBv ZiBAZWRpZAotICogQG5ld19lZGlkX3B0cjogcG9pbnRlciB0byB3aGVyZSB0aGUgbmV3IGVkaWQg d2lsbCBiZSBwbGFjZWQKLSAqIEBuZXdfbGVuZ3RoOiBwb2ludGVyIHRvIHRoZSBzaXplIG9mIHRo ZSBuZXcgZWRpZAotICoKLSAqIE1ha2VzIGEgY29weSBvZiBhbiBleGlzdGluZyBlZGlkIGJsb2Nr IGFuZCBhZGRzIGFuIGV4dGVuc2lvbiBpbmRpY2F0aW5nCi0gKiBzdGVyZW8gM0QgY2FwYWJpbGl0 aWVzLgotICovCi12b2lkIGttc3Rlc3RfZWRpZF9hZGRfM2QoY29uc3QgdW5zaWduZWQgY2hhciAq ZWRpZCwgc2l6ZV90IGxlbmd0aCwKLQkJCSB1bnNpZ25lZCBjaGFyICpuZXdfZWRpZF9wdHJbXSwg c2l6ZV90ICpuZXdfbGVuZ3RoKQotewotCWNoYXIgdnNkYl9ibG9ja19sZW4gPSAxMTsKLQlzdHJ1 Y3QgZWRpZF9ibG9jayBuZXdfZWRpZCA9IGluaXRfY2VhX2Jsb2NrKGVkaWQsIGxlbmd0aCwgbmV3 X2VkaWRfcHRyLAotCQkJCQkJICAgIG5ld19sZW5ndGgsIHZzZGJfYmxvY2tfbGVuLAotCQkJCQkJ ICAgIDApOwotCWludCBwb3MgPSBuZXdfZWRpZC5wb3M7Ci0KLQkvKiB2c2RiIGJsb2NrICggaWQg fCBsZW5ndGggKSAqLwotCW5ld19lZGlkLmRhdGFbcG9zKytdID0gMyA8PCA1IHwgKHZzZGJfYmxv Y2tfbGVuIC0gMSk7Ci0JLyogcmVnaXN0cmF0aW9uIGlkICovCi0JbmV3X2VkaWQuZGF0YVtwb3Mr K10gPSAweDM7Ci0JbmV3X2VkaWQuZGF0YVtwb3MrK10gPSAweGM7Ci0JbmV3X2VkaWQuZGF0YVtw b3MrK10gPSAweDA7Ci0JLyogc291cmNlIHBoeXNpY2FsIGFkZHJlc3MgKi8KLQluZXdfZWRpZC5k YXRhW3BvcysrXSA9IDB4MTA7Ci0JbmV3X2VkaWQuZGF0YVtwb3MrK10gPSAweDAwOwotCS8qIFN1 cHBvcnRzX0FJIC4uLiBldGMgKi8KLQluZXdfZWRpZC5kYXRhW3BvcysrXSA9IDB4MDA7Ci0JLyog TWF4IFRNRFMgQ2xvY2sgKi8KLQluZXdfZWRpZC5kYXRhW3BvcysrXSA9IDB4MDA7Ci0JLyogTGF0 ZW5jeSBwcmVzZW50LCBIRE1JIFZpZGVvIFByZXNlbnQgKi8KLQluZXdfZWRpZC5kYXRhW3Bvcysr XSA9IDB4MjA7Ci0JLyogSERNSSBWaWRlbyAqLwotCW5ld19lZGlkLmRhdGFbcG9zKytdID0gMHg4 MDsKLQluZXdfZWRpZC5kYXRhW3BvcysrXSA9IDB4MDA7Ci0KLQl1cGRhdGVfZWRpZF9jc3VtKG5l d19lZGlkLmRhdGEsIGxlbmd0aCk7Ci19Ci0KIC8qKgogICoga21zdGVzdF91bnNldF9hbGxfY3J0 Y3M6CiAgKiBAZHJtX2ZkOiB0aGUgRFJNIGZkCmRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5oIGIv bGliL2lndF9rbXMuaAppbmRleCAyMDM3MTk4NzhkODYuLjA0ODY3MzdiYjhiZSAxMDA2NDQKLS0t IGEvbGliL2lndF9rbXMuaAorKysgYi9saWIvaWd0X2ttcy5oCkBAIC0xOTQsNyArMTk0LDYgQEAg ZW51bSBpbnRlbF9icm9hZGNhc3RfcmdiX21vZGUgewogCiBib29sIGttc3Rlc3RfZm9yY2VfY29u bmVjdG9yKGludCBmZCwgZHJtTW9kZUNvbm5lY3RvciAqY29ubmVjdG9yLAogCQkJICAgICBlbnVt IGttc3Rlc3RfZm9yY2VfY29ubmVjdG9yX3N0YXRlIHN0YXRlKTsKLXZvaWQga21zdGVzdF9lZGlk X2FkZF8zZChjb25zdCB1bnNpZ25lZCBjaGFyICplZGlkLCBzaXplX3QgbGVuZ3RoLCB1bnNpZ25l ZCBjaGFyICpuZXdfZWRpZF9wdHJbXSwgc2l6ZV90ICpuZXdfbGVuZ3RoKTsKIHZvaWQga21zdGVz dF9mb3JjZV9lZGlkKGludCBkcm1fZmQsIGRybU1vZGVDb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJ CWNvbnN0IHVuc2lnbmVkIGNoYXIgKmVkaWQpOwogCkBAIC03NjMsNiArNzYyLDcgQEAgY29uc3Qg dW5zaWduZWQgY2hhciAqaWd0X2ttc19nZXRfYWx0X2VkaWQodm9pZCk7CiBjb25zdCB1bnNpZ25l ZCBjaGFyICppZ3Rfa21zX2dldF9oZG1pX2F1ZGlvX2VkaWQodm9pZCk7CiBjb25zdCB1bnNpZ25l ZCBjaGFyICppZ3Rfa21zX2dldF9kcF9hdWRpb19lZGlkKHZvaWQpOwogY29uc3QgdW5zaWduZWQg Y2hhciAqaWd0X2ttc19nZXRfNGtfZWRpZCh2b2lkKTsKK2NvbnN0IHVuc2lnbmVkIGNoYXIgKmln dF9rbXNfZ2V0XzNkX2VkaWQodm9pZCk7CiAKIHN0cnVjdCB1ZGV2X21vbml0b3IgKmlndF93YXRj aF9ob3RwbHVnKHZvaWQpOwogYm9vbCBpZ3RfaG90cGx1Z19kZXRlY3RlZChzdHJ1Y3QgdWRldl9t b25pdG9yICptb24sCmRpZmYgLS1naXQgYS9saWIvdGVzdHMvaWd0X2VkaWQuYyBiL2xpYi90ZXN0 cy9pZ3RfZWRpZC5jCmluZGV4IDFhNzhiMzhhOTQ1Yi4uZTE1NzQ4Mjg2YWMwIDEwMDY0NAotLS0g YS9saWIvdGVzdHMvaWd0X2VkaWQuYworKysgYi9saWIvdGVzdHMvaWd0X2VkaWQuYwpAQCAtNzcs NiArNzcsNyBAQCBpZ3Rfc2ltcGxlX21haW4KIAkJeyAiYWx0IiwgaWd0X2ttc19nZXRfYWx0X2Vk aWQsIDAgfSwKIAkJeyAiaGRtaV9hdWRpbyIsIGlndF9rbXNfZ2V0X2hkbWlfYXVkaW9fZWRpZCwg MSB9LAogCQl7ICI0ayIsIGlndF9rbXNfZ2V0XzRrX2VkaWQsIDEgfSwKKwkJeyAiM2QiLCBpZ3Rf a21zX2dldF8zZF9lZGlkLCAxIH0sCiAJCXswfSwKIAl9LCAqZjsKIAljb25zdCB1bnNpZ25lZCBj aGFyICplZGlkOwpkaWZmIC0tZ2l0IGEvbGliL3Rlc3RzL2lndF9oZG1pX2luamVjdC5jIGIvbGli L3Rlc3RzL2lndF9oZG1pX2luamVjdC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj NzBjMzE5NWNiMWQuLjAwMDAwMDAwMDAwMAotLS0gYS9saWIvdGVzdHMvaWd0X2hkbWlfaW5qZWN0 LmMKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IMKpIDIw MTcgSW50ZWwgQ29ycG9yYXRpb24KLSAqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQotICogY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m dHdhcmUiKSwKLSAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KLSAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAotICogYW5k L29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv IHdob20gdGhlCi0gKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90 aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKLSAqIHBh cmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUKLSAqIFNvZnR3YXJlLgotICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0g KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSwKLSAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAotICogVEhFIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI RVIKLSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLCBBUklTSU5HCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCi0gKiBJTiBUSEUg U09GVFdBUkUuCi0gKgotICovCi0KLSNpbmNsdWRlICJpZ3QuaCIKLQotc3RhdGljIGNvbnN0IHVu c2lnbmVkIGNoYXIgZWRpZF9oZWFkZXJbXSA9IHsKLQkweDAwLCAweGZmLCAweGZmLCAweGZmLCAw eGZmLCAweGZmLCAweGZmLCAweDAwCi19OwotCi0vKioKLSAqIFNhbml0eSBjaGVjayB0aGUgaGVh ZGVyIG9mIHRoZSBiYXNlIEVESUQgYmxvY2suCi0gKgotICogUmV0dXJuOiA4IGlmIHRoZSBoZWFk ZXIgaXMgcGVyZmVjdCwgZG93biB0byAwIGlmIGl0J3MgdG90YWxseSB3cm9uZy4KLSAqLwotc3Rh dGljIGludCBlZGlkX2hlYWRlcl9pc192YWxpZChjb25zdCB1bnNpZ25lZCBjaGFyICpyYXdfZWRp ZCkKLXsKLQlpbnQgaSwgc2NvcmUgPSAwOwotCi0JZm9yIChpID0gMDsgaSA8IHNpemVvZihlZGlk X2hlYWRlcik7IGkrKykKLQkJaWYgKHJhd19lZGlkW2ldID09IGVkaWRfaGVhZGVyW2ldKQotCQkJ c2NvcmUrKzsKLQotCXJldHVybiBzY29yZTsKLX0KLQotLyoqCi0gKiBTYW5pdHkgY2hlY2sgdGhl IGNoZWNrc3VtIG9mIHRoZSBFRElEIGJsb2NrLgotICoKLSAqIFJldHVybjogMCBpZiB0aGUgYmxv Y2sgaXMgcGVyZmVjdC4KLSAqIFNlZSBieXRlIDEyNyBvZiBzcGVjCi0gKiBodHRwczovL2VuLndp a2lwZWRpYS5vcmcvd2lraS9FeHRlbmRlZF9EaXNwbGF5X0lkZW50aWZpY2F0aW9uX0RhdGEjRURJ RF8xLjNfZGF0YV9mb3JtYXQKLSAqLwotc3RhdGljIGludCBlZGlkX2Jsb2NrX2NoZWNrc3VtKGNv bnN0IHVuc2lnbmVkIGNoYXIgKnJhd19lZGlkKQotewotCWludCBpOwotCXVuc2lnbmVkIGNoYXIg Y3N1bSA9IDA7Ci0JZm9yIChpID0gMDsgaSA8IEVESURfTEVOR1RIOyBpKyspIHsKLQkJY3N1bSAr PSByYXdfZWRpZFtpXTsKLQl9Ci0KLQlyZXR1cm4gY3N1bTsKLX0KLQotdHlwZWRlZiB2b2lkICgq aGRtaV9pbmplY3RfZnVuYykoY29uc3QgdW5zaWduZWQgY2hhciAqZWRpZCwgc2l6ZV90IGxlbmd0 aCwKLQkJCQkgdW5zaWduZWQgY2hhciAqbmV3X2VkaWRfcHRyW10sIHNpemVfdCAqbmV3X2xlbmd0 aCk7Ci0KLWlndF9zaW1wbGVfbWFpbgotewotCWNvbnN0IHN0cnVjdCB7Ci0JCWNvbnN0IGNoYXIg KmRlc2M7Ci0JCWhkbWlfaW5qZWN0X2Z1bmMgaW5qZWN0OwotCX0gZnVuY3NbXSA9IHsKLQkJeyAi M0QiLCBrbXN0ZXN0X2VkaWRfYWRkXzNkIH0sCi0JCXsgTlVMTCwgTlVMTCB9LAotCX0sICpmOwot Ci0JZm9yIChmID0gZnVuY3M7IGYtPmluamVjdDsgZisrKSB7Ci0JCXVuc2lnbmVkIGNoYXIgKmVk aWQ7Ci0JCXNpemVfdCBsZW5ndGg7Ci0KLQkJZi0+aW5qZWN0KGlndF9rbXNfZ2V0X2Jhc2VfZWRp ZCgpLCBFRElEX0xFTkdUSCwgJmVkaWQsCi0JCQkgICZsZW5ndGgpOwotCi0JCWlndF9hc3NlcnRf ZihlZGlkX2hlYWRlcl9pc192YWxpZChlZGlkKSA9PSA4LAotCQkJICAgICAiaW52YWxpZCBoZWFk ZXIgb24gSERNSSAlcyIsIGYtPmRlc2MpOwotCQkvKiBjaGVjayBiYXNlIGVkaWQgYmxvY2sgKi8K LQkJaWd0X2Fzc2VydF9mKGVkaWRfYmxvY2tfY2hlY2tzdW0oZWRpZCkgPT0gMCwKLQkJCSAgICAg ImNoZWNrc3VtIGZhaWxlZCBvbiBIRE1JICVzIiwgZi0+ZGVzYyk7Ci0JCS8qIGNoZWNrIGV4dGVu c2lvbiBibG9jayAqLwotCQlpZ3RfYXNzZXJ0X2YoZWRpZF9ibG9ja19jaGVja3N1bShlZGlkICsg RURJRF9MRU5HVEgpID09IDAsCi0JCQkgICAgICJDRUEgYmxvY2sgY2hlY2tzdW0gZmFpbGVkIG9u IEhETUkgJXMiLCBmLT5kZXNjKTsKLQl9Ci19CmRpZmYgLS1naXQgYS9saWIvdGVzdHMvbWVzb24u YnVpbGQgYi9saWIvdGVzdHMvbWVzb24uYnVpbGQKaW5kZXggYjkzMGVlNmViMWNkLi4wMmZhMzM1 YTcxOGEgMTAwNjQ0Ci0tLSBhL2xpYi90ZXN0cy9tZXNvbi5idWlsZAorKysgYi9saWIvdGVzdHMv bWVzb24uYnVpbGQKQEAgLTcsNyArNyw2IEBAIGxpYl90ZXN0cyA9IFsKIAknaWd0X2V4aXRfaGFu ZGxlcicsCiAJJ2lndF9mb3JrJywKIAknaWd0X2ZvcmtfaGVscGVyJywKLQknaWd0X2hkbWlfaW5q ZWN0JywKIAknaWd0X2xpc3Rfb25seScsCiAJJ2lndF9pbnZhbGlkX3N1YnRlc3RfbmFtZScsCiAJ J2lndF9ub19leGl0JywKZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc18zZC5jIGIvdGVzdHMva21zXzNk LmMKaW5kZXggYTE3MDgxNGY2MzU2Li44YWRlNmQzNDdhMjkgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2tt c18zZC5jCisrKyBiL3Rlc3RzL2ttc18zZC5jCkBAIC0zMSw4ICszMSw3IEBAIGlndF9zaW1wbGVf bWFpbgogCWludCBkcm1fZmQ7CiAJZHJtTW9kZVJlcyAqcmVzOwogCWRybU1vZGVDb25uZWN0b3Ig KmNvbm5lY3RvcjsKLQl1bnNpZ25lZCBjaGFyICplZGlkOwotCXNpemVfdCBsZW5ndGg7CisJY29u c3QgdW5zaWduZWQgY2hhciAqZWRpZDsKIAlpbnQgbW9kZV9jb3VudCwgY29ubmVjdG9yX2lkOwog CiAJZHJtX2ZkID0gZHJtX29wZW5fZHJpdmVyX21hc3RlcihEUklWRVJfSU5URUwpOwpAQCAtNTcs OCArNTYsNyBAQCBpZ3Rfc2ltcGxlX21haW4KIAl9CiAJaWd0X3JlcXVpcmUoY29ubmVjdG9yKTsK IAotCWttc3Rlc3RfZWRpZF9hZGRfM2QoaWd0X2ttc19nZXRfYmFzZV9lZGlkKCksIEVESURfTEVO R1RILCAmZWRpZCwKLQkJCSAgICAmbGVuZ3RoKTsKKwllZGlkID0gaWd0X2ttc19nZXRfM2RfZWRp ZCgpOwogCiAJa21zdGVzdF9mb3JjZV9lZGlkKGRybV9mZCwgY29ubmVjdG9yLCBlZGlkKTsKIAlp ZiAoIWttc3Rlc3RfZm9yY2VfY29ubmVjdG9yKGRybV9mZCwgY29ubmVjdG9yLCBGT1JDRV9DT05O RUNUT1JfT04pKQpAQCAtMTE2LDUgKzExNCw0IEBAIGlndF9zaW1wbGVfbWFpbgogCWttc3Rlc3Rf Zm9yY2VfZWRpZChkcm1fZmQsIGNvbm5lY3RvciwgTlVMTCk7CiAKIAlkcm1Nb2RlRnJlZUNvbm5l Y3Rvcihjb25uZWN0b3IpOwotCWZyZWUoZWRpZCk7CiB9Ci0tIAoyLjIyLjAKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0 CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==