From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id A898A89BC2 for ; Thu, 24 Oct 2019 11:05:36 +0000 (UTC) From: Arkadiusz Hiler Date: Thu, 24 Oct 2019 14:05:12 +0300 Message-ID: <20191024110515.11741-2-arkadiusz.hiler@intel.com> In-Reply-To: <20191024110515.11741-1-arkadiusz.hiler@intel.com> References: <20191024110515.11741-1-arkadiusz.hiler@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 1/4] lib/igt_list: Update, clean-up and document igt_list 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: Petri Latvala List-ID: V2UgaGF2ZSBkaXZlcmdlZCBmcm9tIGhvdyBXYXlsYW5kIGltcGxlbWVudHMgbGlzdCBib3RoIGlu IHBhcmFtZXRlcgpvcmRlcmluZyBhbmQgZnVuY3Rpb24gbmFtaW5nLgoKTGV0J3MgbWFrZSBvdXIg c2lkZSBjb25zaXN0ZW50IHRvIGVhc2UgdGhlIGNvZ25pdGl2ZSBkaXNzb25hbmNlIGZvcgpkZXZl bG9wZXJzIHdvcmtpbmcgb24gYm90aCBwcm9qZWN0cy4KClRoaXMgcGF0Y2g6CiAqIG1pbWljcyB0 aGUgY3VycmVudCBXYXlsYW5kIGltcGxlbWVudGF0aW9uCiAqIHNlcGFyYXRlcyBJR1QgaGVscGVy cyBpbiB0aGUgc291cmNlIGZpbGVzCiAqIGFkZHMgYnJpZWYgZXhwbGFuYXRpb24gYW5kIGNvZGUg ZXhhbXBsZSBmb3IgaWd0LWRvYwogKiBpbnRyb2R1Y2VzIGlndF9saXN0LmMgYXMgc3RhdGljIGlu bGluZXMgYXJlIG5vdCB2aXNpYmxlIGluIHRoZSBkb2NzCgpDYzogUGV0cmkgTGF0dmFsYSA8cGV0 cmkubGF0dmFsYUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEFya2FkaXVzeiBIaWxlciA8YXJr YWRpdXN6LmhpbGVyQGludGVsLmNvbT4KLS0tCiBiZW5jaG1hcmtzL2dlbV93c2ltLmMgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIC4uLi9pZ3QtZ3B1LXRvb2xzL2lndC1ncHUtdG9v bHMtZG9jcy54bWwgICAgICB8ICAgMSArCiBsaWIvTWFrZWZpbGUuc291cmNlcyAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDIgKwogbGliL2lndF9jaGFtZWxpdW0uYyAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAyICstCiBsaWIvaWd0X2NvcmUuYyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDQgKy0KIGxpYi9pZ3RfZHVtbXlsb2FkLmMgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgNCArLQogbGliL2lndF9rbW9kLmMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAyICstCiBsaWIvaWd0X2xpc3QuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgNjYgKysrKysrKwogbGliL2lndF9saXN0LmggICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgMTY1ICsrKysrKysrKy0tLS0tLS0tLQogbGliL21lc29uLmJ1aWxkICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHRlc3RzL2k5MTUvZ2VtX2V4ZWNf YmFsYW5jZXIuYyAgICAgICAgICAgICAgICB8ICAgMiArLQogdGVzdHMvdmM0X3B1cmdlYWJsZV9i by5jICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICstCiAxMiBmaWxlcyBjaGFuZ2VkLCAxNjQg aW5zZXJ0aW9ucygrKSwgOTcgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2ln dF9saXN0LmMKCmRpZmYgLS1naXQgYS9iZW5jaG1hcmtzL2dlbV93c2ltLmMgYi9iZW5jaG1hcmtz L2dlbV93c2ltLmMKaW5kZXggODdmODczYjAuLjQ0NzQ1ZDA2IDEwMDY0NAotLS0gYS9iZW5jaG1h cmtzL2dlbV93c2ltLmMKKysrIGIvYmVuY2htYXJrcy9nZW1fd3NpbS5jCkBAIC0yODE0LDExICsy ODE0LDExIEBAIHN0YXRpYyB2b2lkICpydW5fd29ya2xvYWQodm9pZCAqZGF0YSkKIAkJCWRvX2Vi KHdyaywgdywgZW5naW5lLCB3cmstPmZsYWdzKTsKIAogCQkJaWYgKHctPnJlcXVlc3QgIT0gLTEp IHsKLQkJCQlpZ3RfbGlzdF9kZWwoJnctPnJxX2xpbmspOworCQkJCWlndF9saXN0X3JlbW92ZSgm dy0+cnFfbGluayk7CiAJCQkJd3JrLT5ucmVxdWVzdFt3LT5yZXF1ZXN0XS0tOwogCQkJfQogCQkJ dy0+cmVxdWVzdCA9IGVuZ2luZTsKLQkJCWlndF9saXN0X2FkZF90YWlsKCZ3LT5ycV9saW5rLCAm d3JrLT5yZXF1ZXN0c1tlbmdpbmVdKTsKKwkJCWlndF9saXN0X2luc2VydF90YWlsKCZ3cmstPnJl cXVlc3RzW2VuZ2luZV0sICZ3LT5ycV9saW5rKTsKIAkJCXdyay0+bnJlcXVlc3RbZW5naW5lXSsr OwogCiAJCQlpZiAoIXdyay0+cnVuKQpAQCAtMjg0MCw3ICsyODQwLDcgQEAgc3RhdGljIHZvaWQg KnJ1bl93b3JrbG9hZCh2b2lkICpkYXRhKQogCQkJCQlsYXN0X3N5bmMgPSB0cnVlOwogCiAJCQkJ CXMtPnJlcXVlc3QgPSAtMTsKLQkJCQkJaWd0X2xpc3RfZGVsKCZzLT5ycV9saW5rKTsKKwkJCQkJ aWd0X2xpc3RfcmVtb3ZlKCZzLT5ycV9saW5rKTsKIAkJCQkJd3JrLT5ucmVxdWVzdFtlbmdpbmVd LS07CiAJCQkJfQogCQkJfQpkaWZmIC0tZ2l0IGEvZG9jcy9yZWZlcmVuY2UvaWd0LWdwdS10b29s cy9pZ3QtZ3B1LXRvb2xzLWRvY3MueG1sIGIvZG9jcy9yZWZlcmVuY2UvaWd0LWdwdS10b29scy9p Z3QtZ3B1LXRvb2xzLWRvY3MueG1sCmluZGV4IGFjODMyNzJmLi4zZjE0ZDdiZSAxMDA2NDQKLS0t IGEvZG9jcy9yZWZlcmVuY2UvaWd0LWdwdS10b29scy9pZ3QtZ3B1LXRvb2xzLWRvY3MueG1sCisr KyBiL2RvY3MvcmVmZXJlbmNlL2lndC1ncHUtdG9vbHMvaWd0LWdwdS10b29scy1kb2NzLnhtbApA QCAtMzEsNiArMzEsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pZ3RfZ3Z0LnhtbCIv PgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pZ3Rfa21vZC54bWwiLz4KICAgICA8eGk6aW5j bHVkZSBocmVmPSJ4bWwvaWd0X2ttcy54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv aWd0X2xpc3QueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2lndF9wbS54bWwiLz4K ICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvaWd0X3ByaW1lcy54bWwiLz4KICAgICA8eGk6aW5j bHVkZSBocmVmPSJ4bWwvaWd0X3JhbmQueG1sIi8+CmRpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUu c291cmNlcyBiL2xpYi9NYWtlZmlsZS5zb3VyY2VzCmluZGV4IDM0ZTBjMDEyLi4xYjU4YjZkMCAx MDA2NDQKLS0tIGEvbGliL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvbGliL01ha2VmaWxlLnNvdXJj ZXMKQEAgLTQxLDYgKzQxLDggQEAgbGliX3NvdXJjZV9saXN0ID0JIAlcCiAJaWd0X2hhbGZmbG9h dC5oCQlcCiAJaWd0X2luZm9mcmFtZS5jCQlcCiAJaWd0X2luZm9mcmFtZS5oCQlcCisJaWd0X2xp c3QuYwkJXAorCWlndF9saXN0LmgJCVwKIAlpZ3RfbWF0cml4LmMJCVwKIAlpZ3RfbWF0cml4LmgJ CVwKIAlpZ3RfcHJpbWVzLmMJCVwKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfY2hhbWVsaXVtLmMgYi9s aWIvaWd0X2NoYW1lbGl1bS5jCmluZGV4IDFiMDNhMTAzLi43ZGU4YWIwNyAxMDA2NDQKLS0tIGEv bGliL2lndF9jaGFtZWxpdW0uYworKysgYi9saWIvaWd0X2NoYW1lbGl1bS5jCkBAIC01OTcsNyAr NTk3LDcgQEAgc3RydWN0IGNoYW1lbGl1bV9lZGlkICpjaGFtZWxpdW1fbmV3X2VkaWQoc3RydWN0 IGNoYW1lbGl1bSAqY2hhbWVsaXVtLAogCWNoYW1lbGl1bV9lZGlkLT5jaGFtZWxpdW0gPSBjaGFt ZWxpdW07CiAJY2hhbWVsaXVtX2VkaWQtPmJhc2UgPSBtYWxsb2MoZWRpZF9zaXplKTsKIAltZW1j cHkoY2hhbWVsaXVtX2VkaWQtPmJhc2UsIGVkaWQsIGVkaWRfc2l6ZSk7Ci0JaWd0X2xpc3RfYWRk KCZjaGFtZWxpdW1fZWRpZC0+bGluaywgJmNoYW1lbGl1bS0+ZWRpZHMpOworCWlndF9saXN0X2lu c2VydCgmY2hhbWVsaXVtLT5lZGlkcywgJmNoYW1lbGl1bV9lZGlkLT5saW5rKTsKIAogCXJldHVy biBjaGFtZWxpdW1fZWRpZDsKIH0KZGlmZiAtLWdpdCBhL2xpYi9pZ3RfY29yZS5jIGIvbGliL2ln dF9jb3JlLmMKaW5kZXggN2JkNWFmYTUuLjY3Yjc2MDI1IDEwMDY0NAotLS0gYS9saWIvaWd0X2Nv cmUuYworKysgYi9saWIvaWd0X2NvcmUuYwpAQCAtMTE4MCw3ICsxMTgwLDcgQEAgdm9pZCBfX2ln dF9zdWJ0ZXN0X2dyb3VwX3NhdmUoaW50ICpzYXZlLCBpbnQgKmRlc2MpCiAJaWYgKF9fY3VycmVu dF9kZXNjcmlwdGlvblswXSAhPSAnXDAnKSB7CiAJCXN0cnVjdCBkZXNjcmlwdGlvbl9ub2RlICpu ZXcgPSBjYWxsb2MoMSwgc2l6ZW9mKCpuZXcpKTsKIAkJbWVtY3B5KG5ldy0+ZGVzYywgX19jdXJy ZW50X2Rlc2NyaXB0aW9uLCBzaXplb2YoX19jdXJyZW50X2Rlc2NyaXB0aW9uKSk7Ci0JCWlndF9s aXN0X2FkZF90YWlsKCZuZXctPmxpbmssICZzdWJncm91cF9kZXNjcmlwdGlvbnMpOworCQlpZ3Rf bGlzdF9pbnNlcnRfdGFpbCgmc3ViZ3JvdXBfZGVzY3JpcHRpb25zLCAmbmV3LT5saW5rKTsKIAkJ X2NsZWFyX2N1cnJlbnRfZGVzY3JpcHRpb24oKTsKIAkJKmRlc2MgPSB0cnVlOwogCX0KQEAgLTEx OTMsNyArMTE5Myw3IEBAIHZvaWQgX19pZ3Rfc3VidGVzdF9ncm91cF9yZXN0b3JlKGludCBzYXZl LCBpbnQgZGVzYykKIAlpZiAoZGVzYykgewogCQlzdHJ1Y3QgZGVzY3JpcHRpb25fbm9kZSAqbGFz dCA9CiAJCQlpZ3RfbGlzdF9sYXN0X2VudHJ5KCZzdWJncm91cF9kZXNjcmlwdGlvbnMsIGxhc3Qs IGxpbmspOwotCQlpZ3RfbGlzdF9kZWwoJmxhc3QtPmxpbmspOworCQlpZ3RfbGlzdF9yZW1vdmUo Jmxhc3QtPmxpbmspOwogCQlmcmVlKGxhc3QpOwogCX0KIApkaWZmIC0tZ2l0IGEvbGliL2lndF9k dW1teWxvYWQuYyBiL2xpYi9pZ3RfZHVtbXlsb2FkLmMKaW5kZXggNjA2MDg3OGQuLjVkNGNmYjRl IDEwMDY0NAotLS0gYS9saWIvaWd0X2R1bW15bG9hZC5jCisrKyBiL2xpYi9pZ3RfZHVtbXlsb2Fk LmMKQEAgLTI4OSw3ICsyODksNyBAQCBzcGluX2NyZWF0ZShpbnQgZmQsIGNvbnN0IHN0cnVjdCBp Z3Rfc3Bpbl9mYWN0b3J5ICpvcHRzKQogCXNwaW4tPm91dF9mZW5jZSA9IGVtaXRfcmVjdXJzaXZl X2JhdGNoKHNwaW4sIGZkLCBvcHRzKTsKIAogCXB0aHJlYWRfbXV0ZXhfbG9jaygmbGlzdF9sb2Nr KTsKLQlpZ3RfbGlzdF9hZGQoJnNwaW4tPmxpbmssICZzcGluX2xpc3QpOworCWlndF9saXN0X2lu c2VydCgmc3Bpbl9saXN0LCAmc3Bpbi0+bGluayk7CiAJcHRocmVhZF9tdXRleF91bmxvY2soJmxp c3RfbG9jayk7CiAKIAlyZXR1cm4gc3BpbjsKQEAgLTQzNSw3ICs0MzUsNyBAQCB2b2lkIGlndF9z cGluX2ZyZWUoaW50IGZkLCBpZ3Rfc3Bpbl90ICpzcGluKQogCQlyZXR1cm47CiAKIAlwdGhyZWFk X211dGV4X2xvY2soJmxpc3RfbG9jayk7Ci0JaWd0X2xpc3RfZGVsKCZzcGluLT5saW5rKTsKKwlp Z3RfbGlzdF9yZW1vdmUoJnNwaW4tPmxpbmspOwogCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZsaXN0 X2xvY2spOwogCiAJaWYgKHNwaW4tPnRpbWVyKQpkaWZmIC0tZ2l0IGEvbGliL2lndF9rbW9kLmMg Yi9saWIvaWd0X2ttb2QuYwppbmRleCBjM2RhNDY2Ny4uMGZjNTk4NWQgMTAwNjQ0Ci0tLSBhL2xp Yi9pZ3Rfa21vZC5jCisrKyBiL2xpYi9pZ3Rfa21vZC5jCkBAIC00MjAsNyArNDIwLDcgQEAgc3Rh dGljIHZvaWQgdGVzdHNfYWRkKHN0cnVjdCBpZ3Rfa3NlbGZ0ZXN0X2xpc3QgKnRsLCBzdHJ1Y3Qg aWd0X2xpc3QgKmxpc3QpCiAJCWlmIChwb3MtPm51bWJlciA+IHRsLT5udW1iZXIpCiAJCQlicmVh azsKIAotCWlndF9saXN0X2FkZF90YWlsKCZ0bC0+bGluaywgJnBvcy0+bGluayk7CisJaWd0X2xp c3RfaW5zZXJ0X3RhaWwoJnBvcy0+bGluaywgJnRsLT5saW5rKTsKIH0KIAogdm9pZCBpZ3Rfa3Nl bGZ0ZXN0X2dldF90ZXN0cyhzdHJ1Y3Qga21vZF9tb2R1bGUgKmttb2QsCmRpZmYgLS1naXQgYS9s aWIvaWd0X2xpc3QuYyBiL2xpYi9pZ3RfbGlzdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwLi5hZjYxNTEyNAotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9pZ3RfbGlzdC5jCkBA IC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlv bgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg bGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2Yg dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBp bmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICog U29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAor ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g IElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8K KworI2luY2x1ZGUgImlndF9saXN0LmgiCisKK3ZvaWQgaWd0X2xpc3RfaW5pdChzdHJ1Y3QgaWd0 X2xpc3QgKmxpc3QpCit7CisJbGlzdC0+cHJldiA9IGxpc3Q7CisJbGlzdC0+bmV4dCA9IGxpc3Q7 Cit9CisKK3ZvaWQgaWd0X2xpc3RfaW5zZXJ0KHN0cnVjdCBpZ3RfbGlzdCAqbGlzdCwgc3RydWN0 IGlndF9saXN0ICplbG0pCit7CisJZWxtLT5wcmV2ID0gbGlzdDsKKwllbG0tPm5leHQgPSBsaXN0 LT5uZXh0OworCWxpc3QtPm5leHQgPSBlbG07CisJZWxtLT5uZXh0LT5wcmV2ID0gZWxtOworfQor CisKK3ZvaWQgaWd0X2xpc3RfcmVtb3ZlKHN0cnVjdCBpZ3RfbGlzdCAqZWxtKQoreworCWVsbS0+ cHJldi0+bmV4dCA9IGVsbS0+bmV4dDsKKwllbG0tPm5leHQtPnByZXYgPSBlbG0tPnByZXY7CisJ ZWxtLT5uZXh0ID0gTlVMTDsKKwllbG0tPnByZXYgPSBOVUxMOworfQorCitpbnQgaWd0X2xpc3Rf bGVuZ3RoKGNvbnN0IHN0cnVjdCBpZ3RfbGlzdCAqbGlzdCkKK3sKKwlzdHJ1Y3QgIGlndF9saXN0 ICplID0gbGlzdC0+bmV4dDsKKwlpbnQgY291bnQgPSAwOworCisJd2hpbGUgKGUgIT0gbGlzdCkg eworCQllID0gZS0+bmV4dDsKKwkJY291bnQrKzsKKwl9CisKKwlyZXR1cm4gY291bnQ7Cit9CisK K2Jvb2wgaWd0X2xpc3RfZW1wdHkoY29uc3Qgc3RydWN0IGlndF9saXN0ICpsaXN0KQoreworCXJl dHVybiBsaXN0LT5uZXh0ID09IGxpc3Q7Cit9CmRpZmYgLS1naXQgYS9saWIvaWd0X2xpc3QuaCBi L2xpYi9pZ3RfbGlzdC5oCmluZGV4IGNhZGY5ZGQzLi5jNzNhOThmMSAxMDA2NDQKLS0tIGEvbGli L2lndF9saXN0LmgKKysrIGIvbGliL2lndF9saXN0LmgKQEAgLTI4LDkgKzI4LDQyIEBACiAjaW5j bHVkZSA8c3RkYm9vbC5oPgogI2luY2x1ZGUgPHN0ZGRlZi5oPgogCi0vKgotICogVGhpcyBsaXN0 IGRhdGEgc3RydWN0dXJlIGlzIGEgdmVyYmF0aW0gY29weSBmcm9tIHdheWxhbmQtdXRpbC5oIGZy b20gdGhlCi0gKiBXYXlsYW5kIHByb2plY3Q7IGV4Y2VwdCB0aGF0IHdsXyBwcmVmaXggaGFzIGJl ZW4gcmVtb3ZlZC4KKy8qKgorICogU0VDVElPTjppZ3RfbGlzdAorICogQHNob3J0X2Rlc2NyaXB0 aW9uOiBhIGxpc3QgaW1wbGVtZW50YXRpb24gYm9ycm93ZWQgZnJvbSB0aGUgV2F5bGFuZCBwcm9q ZWN0CisgKiBAdGl0bGU6IElHVCBMaXN0CisgKiBAaW5jbHVkZTogaWd0X2xpc3QuaAorICoKKyAq IFRoaXMgbGlzdCBkYXRhIHN0cnVjdHVyZSBtaW1pY3MgdGhlIG9uZSBmcm9tIHdheWxhbmQtdXRp bC5oIGZyb20gdGhlIFdheWxhbmQKKyAqIHByb2plY3QuIEEgZmV3IGJvbnVzIGhlbHBlcnMgYXJl IHByb3ZpZGVkLgorICoKKyAqIGlndF9saXN0IGlzIGEgZG91Ymx5LWxpbmtlZCBsaXN0IHdoZXJl IGFuIGluc3RhbmNlIG9mIGlndF9saXN0IGlzIGEgaGVhZAorICogc2VudGluZWwgYW5kIGhhcyB0 byBiZSBpbml0YWxpemVkLiBTZWUgV2F5bGFuZCBkb2N1bWVudGF0aW9uIGZvciBtb3JlCisgKiBk ZXRhaWxzLgorICoKKyAqIEV4YW1wbGUgdXNhZ2U6CisgKgorICogfFs8IS0tIGxhbmd1YWdlPSJD IiAtLT4KKyAqIHN0cnVjdCBpZ3RfbGlzdCBmb29fbGlzdDsKKyAqCisgKiBzdHJ1Y3QgZWxlbWVu dCB7CisgKiAgICAgICAgIGludCBmb287CisgKiAgICAgICAgIHN0cnVjdCBpZ3RfbGlzdCBsaW5r OworICogfTsKKyAqCisgKiBzdHJ1Y3QgZWxlbWVudCBlMSwgZTIsIGUzOworICoKKyAqIGlndF9s aXN0X2luaXQoJmZvb19saXN0KTsKKyAqIGlndF9saXN0X2luc2VydCgmZm9vX2xpc3QsICZlMS5s aW5rKTsgICAvLyBlMSBpcyB0aGUgZmlyc3QgZWxlbWVudAorICogaWd0X2xpc3RfaW5zZXJ0KCZm b29fbGlzdCwgJmUyLmxpbmspOyAgIC8vIGUyIGlzIG5vdyB0aGUgZmlyc3QgZWxlbWVudAorICog aWd0X2xpc3RfaW5zZXJ0KCZlMi5saW5rLCAmZTMubGluayk7ICAgIC8vIGluc2VydCBlMyBhZnRl ciBlMgorICoKKyAqIHN0cnVjdCBpZ3Rfc3BpbiAqaXRlcjsKKyAqIGlndF9saXN0X2Zvcl9lYWNo KGl0ZXIsICZmb29fbGlzdCwgbGluaykgeworICogCXByaW50ZigiJWRcbiIsIGl0ZXItPmZvbyk7 CisgKiB9CisgKiBdfAorICoKICAqLwogCiBzdHJ1Y3QgaWd0X2xpc3QgewpAQCAtMzgsOTIgKzcx LDU2IEBAIHN0cnVjdCBpZ3RfbGlzdCB7CiAJc3RydWN0IGlndF9saXN0ICpuZXh0OwogfTsKIAot I2RlZmluZSBfX0lHVF9JTklUX0xJU1QobmFtZSkgeyAmKG5hbWUpLCAmKG5hbWUpIH0KLSNkZWZp bmUgSUdUX0xJU1QobmFtZSkgc3RydWN0IGlndF9saXN0IG5hbWUgPSBfX0lHVF9JTklUX0xJU1Qo bmFtZSkKLQotc3RhdGljIGlubGluZSB2b2lkIGlndF9saXN0X2luaXQoc3RydWN0IGlndF9saXN0 ICpsaXN0KQotewotCWxpc3QtPnByZXYgPSBsaXN0OwotCWxpc3QtPm5leHQgPSBsaXN0OwotfQot Ci1zdGF0aWMgaW5saW5lIHZvaWQgX19pZ3RfbGlzdF9hZGQoc3RydWN0IGlndF9saXN0ICpsaXN0 LAotCQkJCSAgc3RydWN0IGlndF9saXN0ICpwcmV2LAotCQkJCSAgc3RydWN0IGlndF9saXN0ICpu ZXh0KQotewotCW5leHQtPnByZXYgPSBsaXN0OwotCWxpc3QtPm5leHQgPSBuZXh0OwotCWxpc3Qt PnByZXYgPSBwcmV2OwotCXByZXYtPm5leHQgPSBsaXN0OwotfQotCi1zdGF0aWMgaW5saW5lIHZv aWQgaWd0X2xpc3RfYWRkKHN0cnVjdCBpZ3RfbGlzdCAqZWxtLCBzdHJ1Y3QgaWd0X2xpc3QgKmxp c3QpCi17Ci0JX19pZ3RfbGlzdF9hZGQoZWxtLCBsaXN0LCBsaXN0LT5uZXh0KTsKLX0KLQotc3Rh dGljIGlubGluZSB2b2lkIGlndF9saXN0X2FkZF90YWlsKHN0cnVjdCBpZ3RfbGlzdCAqZWxtLAot CQkJCSAgICAgc3RydWN0IGlndF9saXN0ICpsaXN0KQotewotCV9faWd0X2xpc3RfYWRkKGVsbSwg bGlzdC0+cHJldiwgbGlzdCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBfX2lndF9saXN0X2Rl bChzdHJ1Y3QgaWd0X2xpc3QgKnByZXYsIHN0cnVjdCBpZ3RfbGlzdCAqbmV4dCkKLXsKLQluZXh0 LT5wcmV2ID0gcHJldjsKLQlwcmV2LT5uZXh0ID0gbmV4dDsKLX0KLQotc3RhdGljIGlubGluZSB2 b2lkIGlndF9saXN0X2RlbChzdHJ1Y3QgaWd0X2xpc3QgKmVsbSkKLXsKLQlfX2lndF9saXN0X2Rl bChlbG0tPnByZXYsIGVsbS0+bmV4dCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBpZ3RfbGlz dF9tb3ZlKHN0cnVjdCBpZ3RfbGlzdCAqZWxtLCBzdHJ1Y3QgaWd0X2xpc3QgKmxpc3QpCi17Ci0J aWd0X2xpc3RfZGVsKGVsbSk7Ci0JaWd0X2xpc3RfYWRkKGVsbSwgbGlzdCk7Ci19Ci0KLXN0YXRp YyBpbmxpbmUgdm9pZCBpZ3RfbGlzdF9tb3ZlX3RhaWwoc3RydWN0IGlndF9saXN0ICplbG0sCi0J CQkJICAgICAgc3RydWN0IGlndF9saXN0ICpsaXN0KQotewotCWlndF9saXN0X2RlbChlbG0pOwot CWlndF9saXN0X2FkZF90YWlsKGVsbSwgbGlzdCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBp Z3RfbGlzdF9lbXB0eShjb25zdCBzdHJ1Y3QgaWd0X2xpc3QgKmxpc3QpCi17Ci0JcmV0dXJuIGxp c3QtPm5leHQgPT0gbGlzdDsKLX0KLQotI2RlZmluZSBjb250YWluZXJfb2YocHRyLCBzYW1wbGUs IG1lbWJlcikJCQkJXAotCSh0eXBlb2Yoc2FtcGxlKSkoKGNoYXIgKikocHRyKSAtIG9mZnNldG9m KHR5cGVvZigqc2FtcGxlKSwgbWVtYmVyKSkKLQotI2RlZmluZSBpZ3RfbGlzdF9maXJzdF9lbnRy eShoZWFkLCBwb3MsIG1lbWJlcikgXAotCWNvbnRhaW5lcl9vZigoaGVhZCktPm5leHQsIChwb3Mp LCBtZW1iZXIpCi0jZGVmaW5lIGlndF9saXN0X2xhc3RfZW50cnkoaGVhZCwgcG9zLCBtZW1iZXIp IFwKLQljb250YWluZXJfb2YoKGhlYWQpLT5wcmV2LCAocG9zKSwgbWVtYmVyKQotCi0jZGVmaW5l IGlndF9saXN0X25leHRfZW50cnkocG9zLCBtZW1iZXIpIFwKLQljb250YWluZXJfb2YoKHBvcykt Pm1lbWJlci5uZXh0LCAocG9zKSwgbWVtYmVyKQotI2RlZmluZSBpZ3RfbGlzdF9wcmV2X2VudHJ5 KHBvcywgbWVtYmVyKSBcCi0JY29udGFpbmVyX29mKChwb3MpLT5tZW1iZXIucHJldiwgKHBvcyks IG1lbWJlcikKK3ZvaWQgaWd0X2xpc3RfaW5pdChzdHJ1Y3QgaWd0X2xpc3QgKmxpc3QpOwordm9p ZCBpZ3RfbGlzdF9pbnNlcnQoc3RydWN0IGlndF9saXN0ICpsaXN0LCBzdHJ1Y3QgaWd0X2xpc3Qg KmVsbSk7Cit2b2lkIGlndF9saXN0X3JlbW92ZShzdHJ1Y3QgaWd0X2xpc3QgKmVsbSk7CitpbnQg aWd0X2xpc3RfbGVuZ3RoKGNvbnN0IHN0cnVjdCBpZ3RfbGlzdCAqbGlzdCk7Citib29sIGlndF9s aXN0X2VtcHR5KGNvbnN0IHN0cnVjdCBpZ3RfbGlzdCAqbGlzdCk7CisKKyNkZWZpbmUgaWd0X2Nv bnRhaW5lcl9vZihwdHIsIHNhbXBsZSwgbWVtYmVyKQkJCQlcCisJKF9fdHlwZW9mX18oc2FtcGxl KSkoKGNoYXIgKikocHRyKSAtCQkJCVwKKwkJCQlvZmZzZXRvZihfX3R5cGVvZl9fKCpzYW1wbGUp LCBtZW1iZXIpKQogCiAjZGVmaW5lIGlndF9saXN0X2Zvcl9lYWNoKHBvcywgaGVhZCwgbWVtYmVy KQkJCQlcCi0JZm9yIChwb3MgPSBpZ3RfbGlzdF9maXJzdF9lbnRyeShoZWFkLCBwb3MsIG1lbWJl cik7CQlcCisJZm9yIChwb3MgPSBpZ3RfY29udGFpbmVyX29mKChoZWFkKS0+bmV4dCwgcG9zLCBt ZW1iZXIpOwkJXAogCSAgICAgJnBvcy0+bWVtYmVyICE9IChoZWFkKTsJCQkJCVwKLQkgICAgIHBv cyA9IGlndF9saXN0X25leHRfZW50cnkocG9zLCBtZW1iZXIpKQotCi0jZGVmaW5lIGlndF9saXN0 X2Zvcl9lYWNoX3JldmVyc2UocG9zLCBoZWFkLCBtZW1iZXIpCQkJXAotCWZvciAocG9zID0gaWd0 X2xpc3RfbGFzdF9lbnRyeShoZWFkLCBwb3MsIG1lbWJlcik7CQlcCi0JICAgICAmcG9zLT5tZW1i ZXIgIT0gKGhlYWQpOwkJCQkJXAotCSAgICAgcG9zID0gaWd0X2xpc3RfcHJldl9lbnRyeShwb3Ms IG1lbWJlcikpCisJICAgICBwb3MgPSBpZ3RfY29udGFpbmVyX29mKChwb3MpLT5tZW1iZXIubmV4 dCwgcG9zLCBtZW1iZXIpKQogCisvKioKKyAqIGlndF9saXN0X2Zvcl9lYWNoX3NhZmUKKyAqCisg KiBTYWZlIGFnYWluc3QgcmVtb3ZlbCBvZiB0aGUgKmN1cnJlbnQqIGxpc3QgZWxlbWVudC4gVG8g YWNoaXZlIHRoaXMgaXQKKyAqIHJlcXVpcmVzIGFuIGV4dHJhIGhlbHBlciB2YXJpYWJsZSBgdG1w YCB3aXRoIHRoZSBzYW1lIHR5cGUgYXMgYHBvc2AuCisgKi8KICNkZWZpbmUgaWd0X2xpc3RfZm9y X2VhY2hfc2FmZShwb3MsIHRtcCwgaGVhZCwgbWVtYmVyKQkJCVwKLQlmb3IgKHBvcyA9IGlndF9s aXN0X2ZpcnN0X2VudHJ5KGhlYWQsIHBvcywgbWVtYmVyKSwJCVwKLQkgICAgIHRtcCA9IGlndF9s aXN0X25leHRfZW50cnkocG9zLCBtZW1iZXIpOwkJCVwKKwlmb3IgKHBvcyA9IGlndF9jb250YWlu ZXJfb2YoKGhlYWQpLT5uZXh0LCBwb3MsIG1lbWJlciksCQlcCisJICAgICB0bXAgPSBpZ3RfY29u dGFpbmVyX29mKChwb3MpLT5tZW1iZXIubmV4dCwgdG1wLCBtZW1iZXIpOyAJXAogCSAgICAgJnBv cy0+bWVtYmVyICE9IChoZWFkKTsJCQkJCVwKLQkgICAgIHBvcyA9IHRtcCwgdG1wID0gaWd0X2xp c3RfbmV4dF9lbnRyeShwb3MsIG1lbWJlcikpCisJICAgICBwb3MgPSB0bXAsCQkJCQkJCVwKKwkg ICAgIHRtcCA9IGlndF9jb250YWluZXJfb2YoKHBvcyktPm1lbWJlci5uZXh0LCB0bXAsIG1lbWJl cikpCisKKyNkZWZpbmUgaWd0X2xpc3RfZm9yX2VhY2hfcmV2ZXJzZShwb3MsIGhlYWQsIG1lbWJl cikJCQlcCisJZm9yIChwb3MgPSBpZ3RfY29udGFpbmVyX29mKChoZWFkKS0+cHJldiwgcG9zLCBt ZW1iZXIpOwkJXAorCSAgICAgJnBvcy0+bWVtYmVyICE9IChoZWFkKTsJCQkJCVwKKwkgICAgIHBv cyA9IGlndF9jb250YWluZXJfb2YoKHBvcyktPm1lbWJlci5wcmV2LCBwb3MsIG1lbWJlcikpCisK KworLyogSUdUIGN1c3RvbSBoZWxwZXJzICovCisKKy8qKgorICogSUdUX0xJU1QKKyAqCisgKiBJ bnN0ZWFkIG9mIGhhdmluZyB0byB1c2UgYGlndF9saXN0X2luaXQoKWAgbGlzdCBjYW4gYmUgZGVm aW5lZCB1c2luZworICogdGhpcyBoZWxwZXIsIGUuZy4gYHN0YXRpYyBJR1RfTElTVChsaXN0KTtg CisgKi8KKyNkZWZpbmUgSUdUX0xJU1QobmFtZSkgc3RydWN0IGlndF9saXN0IG5hbWUgPSB7ICYo bmFtZSksICYobmFtZSkgfQorCisjZGVmaW5lIGlndF9saXN0X2luc2VydF90YWlsKGxpc3QsIGVs ZW0pIGlndF9saXN0X2luc2VydCgobGlzdCktPnByZXYsIGVsZW0pCisKKyNkZWZpbmUgaWd0X2xp c3RfZmlyc3RfZW50cnkoaGVhZCwgcG9zLCBtZW1iZXIpIFwKKwlpZ3RfY29udGFpbmVyX29mKCho ZWFkKS0+bmV4dCwgKHBvcyksIG1lbWJlcikKKworI2RlZmluZSBpZ3RfbGlzdF9sYXN0X2VudHJ5 KGhlYWQsIHBvcywgbWVtYmVyKSBcCisJaWd0X2NvbnRhaW5lcl9vZigoaGVhZCktPnByZXYsIChw b3MpLCBtZW1iZXIpCiAKICNlbmRpZiAvKiBJR1RfTElTVF9IICovCmRpZmYgLS1naXQgYS9saWIv bWVzb24uYnVpbGQgYi9saWIvbWVzb24uYnVpbGQKaW5kZXggZmJjMGM4ZDEuLjE5Y2I2MjU1IDEw MDY0NAotLS0gYS9saWIvbWVzb24uYnVpbGQKKysrIGIvbGliL21lc29uLmJ1aWxkCkBAIC01MCw2 ICs1MCw3IEBAIGxpYl9zb3VyY2VzID0gWwogCSdpZ3RfZmIuYycsCiAJJ2lndF9jb3JlLmMnLAog CSdpZ3RfZHJhdy5jJywKKwknaWd0X2xpc3QuYycsCiAJJ2lndF9wbS5jJywKIAknaWd0X2R1bW15 bG9hZC5jJywKIAkndXdpbGRtYXQvdXdpbGRtYXQuYycsCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1 L2dlbV9leGVjX2JhbGFuY2VyLmMgYi90ZXN0cy9pOTE1L2dlbV9leGVjX2JhbGFuY2VyLmMKaW5k ZXggZTUyZjVkZjkuLmU4MzllMGJmIDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9leGVjX2Jh bGFuY2VyLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19iYWxhbmNlci5jCkBAIC04MDcsNyAr ODA3LDcgQEAgc3RhdGljIHZvaWQgYm9uZGVkX3NsaWNlKGludCBpOTE1KQogCiAJCSpzdG9wID0g MDsKIAkJaWd0X2ZvcmsoY2hpbGQsIGNvdW50ICsgMSkgeyAvKiBDOiBhcmJpdHJhcnkgYmFja2dy b3VuZCBsb2FkICovCi0JCQlpZ3RfbGlzdF9kZWwoJnNwaW4tPmxpbmspOworCQkJaWd0X2xpc3Rf cmVtb3ZlKCZzcGluLT5saW5rKTsKIAogCQkJY3R4ID0gZ2VtX2NvbnRleHRfY2xvbmUoaTkxNSwg Y3R4LAogCQkJCQkJSTkxNV9DT05URVhUX0NMT05FX0VOR0lORVMsIDApOwpkaWZmIC0tZ2l0IGEv dGVzdHMvdmM0X3B1cmdlYWJsZV9iby5jIGIvdGVzdHMvdmM0X3B1cmdlYWJsZV9iby5jCmluZGV4 IGNmZTE0ZTcwLi4wMzBiMWQxYiAxMDA2NDQKLS0tIGEvdGVzdHMvdmM0X3B1cmdlYWJsZV9iby5j CisrKyBiL3Rlc3RzL3ZjNF9wdXJnZWFibGVfYm8uYwpAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMg dm9pZCBpZ3RfdmM0X2FsbG9jX21tYXBfbWF4X2JvKGludCBmZCwgc3RydWN0IGlndF9saXN0ICps aXN0LAogCQliby0+c2l6ZSA9IGNyZWF0ZS5zaXplOwogCQliby0+bWFwID0gaWd0X3ZjNF9tbWFw X2JvKGZkLCBiby0+aGFuZGxlLCBiby0+c2l6ZSwKIAkJCQkJICBQUk9UX1JFQUQgfCBQUk9UX1dS SVRFKTsKLQkJaWd0X2xpc3RfYWRkX3RhaWwoJmJvLT5ub2RlLCBsaXN0KTsKKwkJaWd0X2xpc3Rf aW5zZXJ0X3RhaWwobGlzdCwgJmJvLT5ub2RlKTsKIAl9CiB9CiAKQEAgLTc4LDcgKzc4LDcgQEAg c3RhdGljIHZvaWQgaWd0X3ZjNF91bm1hcF9mcmVlX2JvX3Bvb2woaW50IGZkLCBzdHJ1Y3QgaWd0 X2xpc3QgKmxpc3QpCiAJd2hpbGUgKCFpZ3RfbGlzdF9lbXB0eShsaXN0KSkgewogCQlibyA9IGln dF9saXN0X2ZpcnN0X2VudHJ5KGxpc3QsIGJvLCBub2RlKTsKIAkJaWd0X2Fzc2VydChibyk7Ci0J CWlndF9saXN0X2RlbCgmYm8tPm5vZGUpOworCQlpZ3RfbGlzdF9yZW1vdmUoJmJvLT5ub2RlKTsK IAkJbXVubWFwKGJvLT5tYXAsIGJvLT5zaXplKTsKIAkJZ2VtX2Nsb3NlKGZkLCBiby0+aGFuZGxl KTsKIAkJZnJlZShibyk7CkBAIC0yNTMsNyArMjUzLDcgQEAgaWd0X21haW4KIAkJLyogVHJpZ2dl ciBhIHB1cmdlLiAqLwogCQlpZ3RfdmM0X3RyaWdnZXJfcHVyZ2UoZmQpOwogCi0JCWlndF9saXN0 X2RlbCgmYm8tPm5vZGUpOworCQlpZ3RfbGlzdF9yZW1vdmUoJmJvLT5ub2RlKTsKIAkJbXVubWFw KGJvLT5tYXAsIGJvLT5zaXplKTsKIAkJZ2VtX2Nsb3NlKGZkLCBiby0+aGFuZGxlKTsKIAkJZnJl ZShibyk7Ci0tIAoyLjIxLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRl dg==