From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 94A256E8B4 for ; Fri, 20 Nov 2020 11:31:45 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Fri, 20 Nov 2020 12:31:02 +0100 Message-Id: <20201120113131.67971-3-zbigniew.kempczynski@intel.com> In-Reply-To: <20201120113131.67971-1-zbigniew.kempczynski@intel.com> References: <20201120113131.67971-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v10 02/31] lib/igt_map: Introduce igt_map 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: Chris Wilson List-ID: RnJvbTogRG9taW5payBHcnplZ29yemVrIDxkb21pbmlrLmdyemVnb3J6ZWtAaW50ZWwuY29tPgoK SW1wbGVtZW50YXRpb24gb2YgZ2VuZXJpYywgbm9uLXRocmVhZCBzYWZlLCBkeW5hbWljIHNpemUg aGFzaCBtYXAuCgpTaWduZWQtb2ZmLWJ5OiBEb21pbmlrIEdyemVnb3J6ZWsgPGRvbWluaWsuZ3J6 ZWdvcnpla0BpbnRlbC5jb20+CkNjOiBaYmlnbmlldyBLZW1wY3p5xYRza2kgPHpiaWduaWV3Lmtl bXBjenluc2tpQGludGVsLmNvbT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29u LmNvLnVrPgotLS0KIC4uLi9pZ3QtZ3B1LXRvb2xzL2lndC1ncHUtdG9vbHMtZG9jcy54bWwgICAg ICB8ICAgMSArCiBsaWIvTWFrZWZpbGUuc291cmNlcyAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDIgKwogbGliL2lndF9tYXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg MTUwICsrKysrKysrKysrKysrKysrKwogbGliL2lndF9tYXAuaCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgMTIxICsrKysrKysrKysrKysrCiBsaWIvbWVzb24uYnVpbGQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogNSBmaWxlcyBjaGFuZ2VkLCAyNzUgaW5z ZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pZ3RfbWFwLmMKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBsaWIvaWd0X21hcC5oCgpkaWZmIC0tZ2l0IGEvZG9jcy9yZWZlcmVuY2UvaWd0LWdw dS10b29scy9pZ3QtZ3B1LXRvb2xzLWRvY3MueG1sIGIvZG9jcy9yZWZlcmVuY2UvaWd0LWdwdS10 b29scy9pZ3QtZ3B1LXRvb2xzLWRvY3MueG1sCmluZGV4IDljOWFhOGYxLi5iZjVhYzU0MiAxMDA2 NDQKLS0tIGEvZG9jcy9yZWZlcmVuY2UvaWd0LWdwdS10b29scy9pZ3QtZ3B1LXRvb2xzLWRvY3Mu eG1sCisrKyBiL2RvY3MvcmVmZXJlbmNlL2lndC1ncHUtdG9vbHMvaWd0LWdwdS10b29scy1kb2Nz LnhtbApAQCAtMzMsNiArMzMsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pZ3Rfa21v ZC54bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvaWd0X2ttcy54bWwiLz4KICAgICA8 eGk6aW5jbHVkZSBocmVmPSJ4bWwvaWd0X2xpc3QueG1sIi8+CisgICAgPHhpOmluY2x1ZGUgaHJl Zj0ieG1sL2lndF9tYXAueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2lndF9wbS54 bWwiLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvaWd0X3ByaW1lcy54bWwiLz4KICAgICA8 eGk6aW5jbHVkZSBocmVmPSJ4bWwvaWd0X3JhbmQueG1sIi8+CmRpZmYgLS1naXQgYS9saWIvTWFr ZWZpbGUuc291cmNlcyBiL2xpYi9NYWtlZmlsZS5zb3VyY2VzCmluZGV4IDY3YjM4NjQ1Li4yNzAx OWE3NyAxMDA2NDQKLS0tIGEvbGliL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvbGliL01ha2VmaWxl LnNvdXJjZXMKQEAgLTQ3LDYgKzQ3LDggQEAgbGliX3NvdXJjZV9saXN0ID0JIAlcCiAJaWd0X2lu Zm9mcmFtZS5oCQlcCiAJaWd0X2xpc3QuYwkJXAogCWlndF9saXN0LmgJCVwKKwlpZ3RfbWFwLmMJ CVwKKwlpZ3RfbWFwLmgJCVwKIAlpZ3RfbWF0cml4LmMJCVwKIAlpZ3RfbWF0cml4LmgJCVwKIAlp Z3RfcGFyYW1zLmMJCVwKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfbWFwLmMgYi9saWIvaWd0X21hcC5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5hYTMzMGRiZgotLS0gL2Rldi9u dWxsCisrKyBiL2xpYi9pZ3RfbWFwLmMKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisgKiBDb3B5cmln aHQgwqkgMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5 IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBj b3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAo dGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1 c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us CisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl cnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHly aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4 dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0 YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJF IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJF U1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVU SE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdF UyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFD VCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05O RUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAq IElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVk ZSA8c3RkbGliLmg+CisjaW5jbHVkZSAiaWd0X21hcC5oIgorI2luY2x1ZGUgImlndC5oIgorI2lu Y2x1ZGUgImlndF94ODYuaCIKKworI2RlZmluZSBNSU5fQ0FQQUNJVFlfQklUUyAyCisKK3N0YXRp YyBib29sIGlndF9tYXBfZmlsbGVkKHN0cnVjdCBpZ3RfbWFwICptYXApCit7CisJcmV0dXJuIG1h cC0+Y2FwYWNpdHlfYml0cyA9PSAwIHx8CisJCQkoSUdUX01BUF9DQVBBQ0lUWShtYXApICogNCAv IDUgPCBtYXAtPnNpemUpOworfQorCitzdGF0aWMgdm9pZCBpZ3RfbWFwX2V4dGVuZChzdHJ1Y3Qg aWd0X21hcCAqbWFwKQoreworCXN0cnVjdCBpZ3RfaGxpc3RfaGVhZCAqbmV3X2hlYWRzOworCXN0 cnVjdCBpZ3RfbWFwX2VudHJ5ICpwb3M7CisJc3RydWN0IGlndF9obGlzdF9ub2RlICp0bXA7CisJ dWludDMyX3QgbmV3X2JpdHMgPSBtYXAtPmNhcGFjaXR5X2JpdHMgKyAxOworCWludCBpOworCisJ bmV3X2hlYWRzID0gY2FsbG9jKDFVTEwgPDwgbmV3X2JpdHMsCisJCQkgICBzaXplb2Yoc3RydWN0 IGlndF9obGlzdF9oZWFkKSk7CisJaWd0X2Fzc2VydChuZXdfaGVhZHMpOworCisJaWd0X21hcF9m b3JfZWFjaF9zYWZlKG1hcCwgaSwgdG1wLCBwb3MpCisJCWlndF9obGlzdF9hZGRfaGVhZCgmcG9z LT5saW5rLCAmbmV3X2hlYWRzW21hcC0+aGFzaF9mbihwb3MtPmtleSwgbmV3X2JpdHMpXSk7CisK KwlmcmVlKG1hcC0+aGVhZHMpOworCW1hcC0+Y2FwYWNpdHlfYml0cysrOworCisJbWFwLT5oZWFk cyA9IG5ld19oZWFkczsKK30KKworc3RhdGljIGJvb2wgZXF1YWxfNGJ5dGVzKGNvbnN0IHZvaWQg KmtleTEsIGNvbnN0IHZvaWQgKmtleTIpCit7CisJY29uc3QgdWludDMyX3QgKmsxID0ga2V5MSwg KmsyID0ga2V5MjsKKwlyZXR1cm4gKmsxID09ICprMjsKK30KKworLyogIDJeNjMgKyAyXjYxIC0g Ml41NyArIDJeNTQgLSAyXjUxIC0gMl4xOCArIDEgKi8KKyNkZWZpbmUgR09MREVOX1JBVElPX1BS SU1FXzY0IDB4OWUzN2ZmZmZmZmZjMDAwMVVMCisKK3N0YXRpYyBpbmxpbmUgdWludDY0X3QgaGFz aF82NF80Ynl0ZXMoY29uc3Qgdm9pZCAqdmFsLCB1bnNpZ25lZCBpbnQgYml0cykKK3sKKwl1aW50 NjRfdCBoYXNoID0gKih1aW50MzJfdCAqKXZhbDsKKworCWhhc2ggPSBoYXNoICogR09MREVOX1JB VElPX1BSSU1FXzY0OworCS8qIEhpZ2ggYml0cyBhcmUgbW9yZSByYW5kb20sIHNvIHVzZSB0aGVt LiAqLworCXJldHVybiBoYXNoID4+ICg2NCAtIGJpdHMpOworfQorCit2b2lkIGlndF9tYXBfaW5p dChzdHJ1Y3QgaWd0X21hcCAqbWFwLCBpZ3RfbWFwX2VxdWFsX2ZuIGVxX2ZuLAorCQkgIGlndF9t YXBfaGFzaF9mbiBoYXNoX2ZuLCB1aW50MzJfdCBpbml0aWFsX2JpdHMpCit7CisJbWFwLT5lcXVh bF9mbiA9IGVxX2ZuID09IE5VTEwgPyBlcXVhbF80Ynl0ZXMgOiBlcV9mbjsKKwltYXAtPmhhc2hf Zm4gPSBoYXNoX2ZuID09IE5VTEwgPyBoYXNoXzY0XzRieXRlcyA6IGhhc2hfZm47CisJbWFwLT5j YXBhY2l0eV9iaXRzID0gaW5pdGlhbF9iaXRzID4gMCA/IGluaXRpYWxfYml0cworCQkJCQkgICAg ICA6IE1JTl9DQVBBQ0lUWV9CSVRTOworCW1hcC0+aGVhZHMgPSBjYWxsb2MoSUdUX01BUF9DQVBB Q0lUWShtYXApLAorCQkJICAgIHNpemVvZihzdHJ1Y3QgaWd0X2hsaXN0X2hlYWQpKTsKKworCWln dF9hc3NlcnQobWFwLT5oZWFkcyk7CisJbWFwLT5zaXplID0gMDsKK30KKwordm9pZCBpZ3RfbWFw X2FkZChzdHJ1Y3QgaWd0X21hcCAqbWFwLCBjb25zdCB2b2lkICprZXksIHZvaWQgKnZhbHVlKQor eworCXN0cnVjdCBpZ3RfbWFwX2VudHJ5ICplbnRyeTsKKworCWlmIChpZ3RfbWFwX2ZpbGxlZCht YXApKQorCQlpZ3RfbWFwX2V4dGVuZChtYXApOworCisJZW50cnkgPSBjYWxsb2MoMSwgc2l6ZW9m KHN0cnVjdCBpZ3RfbWFwX2VudHJ5KSk7CisJZW50cnktPnZhbHVlID0gdmFsdWU7CisJZW50cnkt PmtleSA9IGtleTsKKwlpZ3RfaGxpc3RfYWRkX2hlYWQoJmVudHJ5LT5saW5rLAorCQkJICAgJm1h cC0+aGVhZHNbbWFwLT5oYXNoX2ZuKGtleSwgbWFwLT5jYXBhY2l0eV9iaXRzKV0pOworCW1hcC0+ c2l6ZSsrOworfQorCit2b2lkICppZ3RfbWFwX2RlbChzdHJ1Y3QgaWd0X21hcCAqbWFwLCBjb25z dCB2b2lkICprZXkpCit7CisJc3RydWN0IGlndF9tYXBfZW50cnkgKnBvczsKKwlzdHJ1Y3QgaWd0 X2hsaXN0X25vZGUgKnRtcDsKKwl2b2lkICp2YWwgPSBOVUxMOworCisJaWd0X21hcF9mb3JfZWFj aF9wb3NzaWJsZV9zYWZlKG1hcCwgcG9zLCB0bXAsIGtleSkgeworCQlpZiAobWFwLT5lcXVhbF9m bihwb3MtPmtleSwga2V5KSkgeworCQkJaWd0X2hsaXN0X2RlbCgmcG9zLT5saW5rKTsKKwkJCXZh bCA9IHBvcy0+dmFsdWU7CisJCQlmcmVlKHBvcyk7CisJCX0KKwl9CisJcmV0dXJuIHZhbDsKK30K Kwordm9pZCAqaWd0X21hcF9maW5kKHN0cnVjdCBpZ3RfbWFwICptYXAsIGNvbnN0IHZvaWQgKmtl eSkKK3sKKwlzdHJ1Y3QgaWd0X21hcF9lbnRyeSAqcG9zID0gTlVMTDsKKworCWlndF9tYXBfZm9y X2VhY2hfcG9zc2libGUobWFwLCBwb3MsIGtleSkKKwkJaWYgKHBvcyAmJiBtYXAtPmVxdWFsX2Zu KHBvcy0+a2V5LCBrZXkpKQorCQkJYnJlYWs7CisKKwlyZXR1cm4gcG9zID8gcG9zLT52YWx1ZSA6 IE5VTEw7Cit9CisKK3ZvaWQgaWd0X21hcF9mcmVlKHN0cnVjdCBpZ3RfbWFwICptYXApCit7CisJ c3RydWN0IGlndF9tYXBfZW50cnkgKnBvczsKKwlzdHJ1Y3QgaWd0X2hsaXN0X25vZGUgKnRtcDsK KwlpbnQgaTsKKworCWlndF9tYXBfZm9yX2VhY2hfc2FmZShtYXAsIGksIHRtcCwgcG9zKSB7CisJ CWlndF9obGlzdF9kZWwoJnBvcy0+bGluayk7CisJCWZyZWUocG9zKTsKKwl9CisKKwlmcmVlKG1h cC0+aGVhZHMpOworfQorCitib29sIGlndF9tYXBfZW1wdHkoc3RydWN0IGlndF9tYXAgKm1hcCkK K3sKKwlyZXR1cm4gISFtYXAtPnNpemU7Cit9CmRpZmYgLS1naXQgYS9saWIvaWd0X21hcC5oIGIv bGliL2lndF9tYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNWM3Njdh ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvaWd0X21hcC5oCkBAIC0wLDAgKzEsMTIxIEBACisv KgorICogQ29weXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50 YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJl IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRo ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNs dWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFM TAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS IERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpZm5kZWYgSUdUX01B UF9ICisjZGVmaW5lIElHVF9NQVBfSAorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSAi aWd0X2xpc3QuaCIKKworLyoqCisgKiBTRUNUSU9OOmlndF9tYXAKKyAqIEBzaG9ydF9kZXNjcmlw dGlvbjogYSBkeW5hbWljIHNpemVkIGhhc2htYXAgaW1wbGVtZW50YXRpb24KKyAqIEB0aXRsZTog SUdUIE1hcAorICogQGluY2x1ZGU6IGlndF9tYXAuaAorICoKKyAqIGlndF9tYXAgaXMgYSBkeW5h bWljIHNpemVkLCBub24tdGhyZWFkLXNhZmUgaW1wbGVtZW50YXRpb24gb2YgYSBoYXNobWFwLgor ICogVGhpcyBtYXAgZ3Jvd3MgZXhwb25lbnRpYWxseSB3aGVuIGl0J3Mgb3ZlciA4MCUgZmlsbGVk LiBUaGUgc3RydWN0dXJlIGFsbG93cworICogaW5kZXhpbmcgcmVjb3JkcyBieSBhbnkga2V5IHRo cm91Z2ggdGhlIGhhc2ggYW5kIGVxdWFsIGZ1bmN0aW9ucy4KKyAqIEJ5IGRlZmF1bHQsIGhhc2ht YXAgY29tcGFyZXMgYW5kIGhhc2hlcyB0aGUgZmlyc3QgZm91ciBieXRlcyBvZiBhIGtleS4KKyAq CisgKiBFeGFtcGxlIHVzYWdlOgorICoKKyAqIHxbPCEtLSBsYW5ndWFnZT0iQyIgLS0+CisgKiBz dHJ1Y3QgaWd0X21hcCAqbWFwOworICoKKyAqIHN0cnVjdCByZWNvcmQgeworICogCWludCBmb287 CisgKiAJdWludDMyX3QgdW5pcXVlX2lkZW50aWZpZXI7CisgKiB9OworICoKKyAqIHN0cnVjdCBy ZWNvcmQgcjEsIHIyLCAqcl9wdHI7CisgKgorICogbWFwID0gbWFsbG9jKHNpemVvZigqbWFwKSk7 CisgKiBpZ3RfbWFwX2luaXQobWFwLCBOVUxMLCBOVUxMLCA0KTsgLy8gaW5pdGlhaXplIHRoZSBt YXAgd2l0aCBzaXplICgxIDw8IDQpCisgKiBpZ3RfbWFwX2FkZChtYXAsICZyMS51bmlxdWVfaWRl bnRpZmllciwgJnIxKTsKKyAqIGlndF9tYXBfYWRkKG1hcCwgJnIyLnVuaXF1ZV9pZGVudGlmaWVy LCAmcjIpOworICoKKyAqIHN0cnVjdCBpZ3RfbWFwX2VudHJ5ICpwb3M7IGludCBpOworICogaWd0 X21hcF9mb3JfZWFjaChtYXAsIGksIHBvcykgeworICogCXJfcHRyID0gcG9zLT52YWx1ZTsKKyAq IAlwcmludGYoImtleTogJXUsIGZvbzogJWRcbiIsICoodWludDMyX3QqKSBwb3MtPmtleSwgcl9w dHItPmZvbyk7CisgKiB9CisgKgorICogdWludDMyX3Qga2V5ID0gcjEudW5pcXVlX2lkZW50aWZp ZXI7CisgKiByX3B0ciA9IGlndF9tYXBfZmluZChtYXAsICZrZXkpOyAvLyBnZXQgcjEKKyAqCisg KiByX3B0ciA9IGlndF9tYXBfZGVsKG1hcCwgJnIyLnVuaXF1ZV9pZGVudGlmaWVyKTsKKyAqIGlm IChyX3B0cikKKyAqIAlwcmludGYoInJlY29yZCB3aXRoIGtleSAldSBkZWxldGVkXG4iLCByX3B0 ci0+dW5pcXVlX2lkZW50aWZpZXIpOworICoKKyAqIGlndF9tYXBfZnJlZShtYXApOworICogZnJl ZShtYXApOworICogXXwKKyAqLworCit0eXBlZGVmIGJvb2wgKCppZ3RfbWFwX2VxdWFsX2ZuKShj b25zdCB2b2lkICprZXkxLCBjb25zdCB2b2lkICprZXkyKTsKK3R5cGVkZWYgdWludDY0X3QgKCpp Z3RfbWFwX2hhc2hfZm4pKGNvbnN0IHZvaWQgKnZhbCwgdW5zaWduZWQgaW50IGJpdHMpOworc3Ry dWN0IGlndF9tYXAgeworCXVpbnQzMl90IHNpemU7CisJdWludDMyX3QgY2FwYWNpdHlfYml0czsK KwlpZ3RfbWFwX2VxdWFsX2ZuIGVxdWFsX2ZuOworCWlndF9tYXBfaGFzaF9mbiBoYXNoX2ZuOwor CXN0cnVjdCBpZ3RfaGxpc3RfaGVhZCAqaGVhZHM7Cit9OworCitzdHJ1Y3QgaWd0X21hcF9lbnRy eSB7CisJY29uc3Qgdm9pZCAqa2V5OworCXZvaWQgKnZhbHVlOworCXN0cnVjdCBpZ3RfaGxpc3Rf bm9kZSBsaW5rOworfTsKKwordm9pZCBpZ3RfbWFwX2luaXQoc3RydWN0IGlndF9tYXAgKm1hcCwg aWd0X21hcF9lcXVhbF9mbiBlcV9mbiwKKwkJICBpZ3RfbWFwX2hhc2hfZm4gaGFzaF9mbiwgdWlu dDMyX3QgaW5pdGlhbF9iaXRzKTsKK3ZvaWQgaWd0X21hcF9hZGQoc3RydWN0IGlndF9tYXAgKm1h cCwgY29uc3Qgdm9pZCAqa2V5LCB2b2lkICp2YWx1ZSk7Cit2b2lkICppZ3RfbWFwX2RlbChzdHJ1 Y3QgaWd0X21hcCAqbWFwLCBjb25zdCB2b2lkICprZXkpOwordm9pZCAqaWd0X21hcF9maW5kKHN0 cnVjdCBpZ3RfbWFwICptYXAsIGNvbnN0IHZvaWQgKmtleSk7Cit2b2lkIGlndF9tYXBfZnJlZShz dHJ1Y3QgaWd0X21hcCAqbWFwKTsKK2Jvb2wgaWd0X21hcF9lbXB0eShzdHJ1Y3QgaWd0X21hcCAq bWFwKTsKKworI2RlZmluZSBJR1RfTUFQX0NBUEFDSVRZKG1hcCkgKDFVTEwgPDwgbWFwLT5jYXBh Y2l0eV9iaXRzKQorCisjZGVmaW5lIGlndF9tYXBfZm9yX2VhY2hfc2FmZShtYXAsIGJrdCwgdG1w LCBvYmopIFwKKwlmb3IgKChia3QpID0gMCwgb2JqID0gTlVMTDsgb2JqID09IE5VTEwgJiYgKGJr dCkgPCBJR1RfTUFQX0NBUEFDSVRZKG1hcCk7IFwKKwkoYmt0KSsrKVwKKwlpZ3RfaGxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZShvYmosIHRtcCwgJm1hcC0+aGVhZHNbYmt0XSwgbGluaykKKworI2Rl ZmluZSBpZ3RfbWFwX2Zvcl9lYWNoKG1hcCwgYmt0LCBvYmopIFwKKwlmb3IgKChia3QpID0gMCwg b2JqID0gTlVMTDsgb2JqID09IE5VTEwgJiYgKGJrdCkgPCBJR1RfTUFQX0NBUEFDSVRZKG1hcCk7 IFwKKwkoYmt0KSsrKVwKKwlpZ3RfaGxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCAmbWFwLT5oZWFk c1tia3RdLCBsaW5rKQorCisjZGVmaW5lIGlndF9tYXBfZm9yX2VhY2hfcG9zc2libGUobWFwLCBv YmosIGtleSkgXAorCWlndF9obGlzdF9mb3JfZWFjaF9lbnRyeShvYmosIFwKKwkJJm1hcC0+aGVh ZHNbbWFwLT5oYXNoX2ZuKGtleSwgbWFwLT5jYXBhY2l0eV9iaXRzKV0sIGxpbmspCisKKyNkZWZp bmUgaWd0X21hcF9mb3JfZWFjaF9wb3NzaWJsZV9zYWZlKG1hcCwgb2JqLCB0bXAsIGtleSkgXAor CWlndF9obGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG9iaiwgdG1wLCBcCisJCSZtYXAtPmhlYWRz W21hcC0+aGFzaF9mbihrZXksIG1hcC0+Y2FwYWNpdHlfYml0cyldLCBsaW5rKQorCisjZW5kaWYg LyogSUdUX01BUF9IICovCmRpZmYgLS1naXQgYS9saWIvbWVzb24uYnVpbGQgYi9saWIvbWVzb24u YnVpbGQKaW5kZXggMDkwYTEwY2QuLjQ4NGQzYzdiIDEwMDY0NAotLS0gYS9saWIvbWVzb24uYnVp bGQKKysrIGIvbGliL21lc29uLmJ1aWxkCkBAIC01OSw2ICs1OSw3IEBAIGxpYl9zb3VyY2VzID0g WwogCSdpZ3RfY29yZS5jJywKIAknaWd0X2RyYXcuYycsCiAJJ2lndF9saXN0LmMnLAorCSdpZ3Rf bWFwLmMnLAogCSdpZ3RfcG0uYycsCiAJJ2lndF9kdW1teWxvYWQuYycsCiAJJ3V3aWxkbWF0L3V3 aWxkbWF0LmMnLAotLSAKMi4yNi4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ln dC1kZXYK