From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 56C8F6E6A0 for ; Tue, 12 Feb 2019 23:54:49 +0000 (UTC) Date: Wed, 13 Feb 2019 01:54:33 +0200 Message-Id: <20190212235437.1218-3-andi.shyti@intel.com> In-Reply-To: <20190212235437.1218-1-andi.shyti@intel.com> References: <20190212235437.1218-1-andi.shyti@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [RFC PATCH v8 2/5] lib/i915: add gem_query library List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Andi Shyti via igt-dev Reply-To: Andi Shyti 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 Cc: Petri Latvala , Andi Shyti List-ID: VGhlIGdlbV9xdWVyeSBsaWJyYXJ5IGlzIGEgc2V0IG9mIGZ1bmN0aW9ucyB0aGF0IGludGVyZmFj ZSB3aXRoCnRoZSBxdWVyeSBhbmQgZ2V0cGFyYW0vc2V0cGFyYW0gaW9jdGxzLgoKVGhlIGVudHJ5 IHBvaW50IG9mIHRoZSBsaWJyYXJ5IGlzIHRoZQppZ3RfcmVxdWlyZV9nZW1fZW5naW5lX2xpc3Qo KSB3aGljaCBjaGVja3Mgd2hldGhlciB0aGUgaW9jdGxzIGFyZQppbXBsZW1lbnRlZCBpbiB0aGUg cnVubmluZyBrZXJuZWwuIElmIG5vdCB0aGUgZnVuY3Rpb24gc2tpcHMgdGhlCnRlc3Qgd2l0aCAt RUlOVkFMLgpPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIGludGVyZmFjZXMgYXJlIGltcGxlbWVu dGVkLCB0aGVuLCBhdAp0aGUgZmlyc3QgY2FsbCBpdCBpbml0aWFsaXplcyBhbiBhcnJheSBvZiBh Y3RpdmUgZW5naW5lcyAoZWl0aGVyCnBoeXNpY2FsIG9yIHZpcnR1YWwpLgoKVGhlIGdsb2JhbCAn KmludGVsX2FjdGl2ZV9lbmdpbmVzMicgcG9pbnRzIHRvIHRoZSBhY3RpdmUgZW5naW5lcwphcnJh eSBvciB0byB0aGUgZXhpc3RpbmcgJ2ludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMicuIFRoZSBsYXR0 ZXIKaXMgaW4gcHJlcGFyYXRpb24gdG8gdGhlIG5leHQgcGF0Y2guCgpUaGUgdmFsdWUgb2YgdGhl ICdpbnRlbF9hY3RpdmVfZW5naW5lczInIHdpbGwgYmUgdXNlZCBpbiBmdXJ0aGVyCmNhbGxzIHRv IGNoZWNrIHdoZXRoZXIgdGhlIGFib3ZlIG1lbnRpb25lZCBpb2N0bHMgYXJlIGltcGxlbWVudGVk CndpdGhvdXQgdGhlIG5lZWQgdG8gY2FsbCBnZXRwYXJhbSgpLgoKU2lnbmVkLW9mZi1ieTogQW5k aSBTaHl0aSA8YW5kaS5zaHl0aUBpbnRlbC5jb20+Ci0tLQogbGliL01ha2VmaWxlLnNvdXJjZXMg fCAgIDIgKwogbGliL2k5MTUvZ2VtX3F1ZXJ5LmMgfCAxNzUgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogbGliL2k5MTUvZ2VtX3F1ZXJ5LmggfCAgNDIgKysrKysr KysrKysKIGxpYi9pZ3RfZ3QuYyAgICAgICAgIHwgICAyICstCiBsaWIvaWd0X2d0LmggICAgICAg ICB8ICAgMiArLQogbGliL21lc29uLmJ1aWxkICAgICAgfCAgIDEgKwogNiBmaWxlcyBjaGFuZ2Vk LCAyMjIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBs aWIvaTkxNS9nZW1fcXVlcnkuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pOTE1L2dlbV9xdWVy eS5oCgpkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMgYi9saWIvTWFrZWZpbGUuc291 cmNlcwppbmRleCA4MDhiOTYxN2VjYTIuLjlkZDVlOTI0MmFlNCAxMDA2NDQKLS0tIGEvbGliL01h a2VmaWxlLnNvdXJjZXMKKysrIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKQEAgLTExLDYgKzExLDgg QEAgbGliX3NvdXJjZV9saXN0ID0JIAlcCiAJaTkxNS9nZW1fc3VibWlzc2lvbi5oCVwKIAlpOTE1 L2dlbV9yaW5nLmgJXAogCWk5MTUvZ2VtX3JpbmcuYwlcCisJaTkxNS9nZW1fcXVlcnkuYwlcCisJ aTkxNS9nZW1fcXVlcnkuaAlcCiAJaTkxNV8zZC5oCQlcCiAJaTkxNV9yZWcuaAkJXAogCWk5MTVf cGNpaWRzLmgJCVwKZGlmZiAtLWdpdCBhL2xpYi9pOTE1L2dlbV9xdWVyeS5jIGIvbGliL2k5MTUv Z2VtX3F1ZXJ5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yYjdi YjcxM2M3MGEKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvaTkxNS9nZW1fcXVlcnkuYwpAQCAtMCww ICsxLDE3NSBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE3IEludGVsIENvcnBvcmF0aW9uCisg KgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUg aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1 ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0 d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJV VCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4g Tk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJ QUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwor ICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF IFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpbmNs dWRlICJpb2N0bF93cmFwcGVycy5oIgorI2luY2x1ZGUgImRybXRlc3QuaCIKKworI2luY2x1ZGUg Imk5MTUvZ2VtX3F1ZXJ5LmgiCisKK3N0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqaW50 ZWxfYWN0aXZlX2VuZ2luZXMyOworCitzdGF0aWMgaW50IF9fZ2VtX3F1ZXJ5KGludCBmZCwgc3Ry dWN0IGRybV9pOTE1X3F1ZXJ5ICpxKQoreworCXJldHVybiBpZ3RfaW9jdGwoZmQsIERSTV9JT0NU TF9JOTE1X1FVRVJZLCBxKSA/IC1lcnJubyA6IDA7Cit9CisKK3ZvaWQgZ2VtX3F1ZXJ5KGludCBm ZCwgc3RydWN0IGRybV9pOTE1X3F1ZXJ5ICpxKQoreworCWlndF9hc3NlcnQoIV9fZ2VtX3F1ZXJ5 KGZkLCBxKSk7Cit9CisKK3N0YXRpYyBpbnQgX19nZW1fZ2V0X3NldF9wYXJhbShpbnQgZmQsIHVu c2lnbmVkIGxvbmcgcmVxdWVzdCwKKwkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRl eHRfcGFyYW0gKnApCit7CisJcmV0dXJuIGlndF9pb2N0bChmZCwgcmVxdWVzdCwgcCkgPyAgLWVy cm5vIDogMDsKK30KKwordm9pZCBnZW1fZ2V0X3NldF9wYXJhbShpbnQgZmQsIHVuc2lnbmVkIGxv bmcgcmVxdWVzdCwKKwkJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAq cCkKK3sKKwlpZ3RfYXNzZXJ0KCFfX2dlbV9nZXRfc2V0X3BhcmFtKGZkLCByZXF1ZXN0LCBwKSk7 Cit9CisKK2Jvb2wgZ2VtX2hhc19nZXRfc2V0X3BhcmFtKHZvaWQpCit7CisJcmV0dXJuIGludGVs X2FjdGl2ZV9lbmdpbmVzMiAhPSBpbnRlbF9leGVjdXRpb25fZW5naW5lczI7Cit9CisKK3N0YXRp YyBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8gKnF1ZXJ5X2VuZ2luZXMoaW50IGZk KQoreworCXN0cnVjdCBkcm1faTkxNV9xdWVyeSBxdWVyeSA9IHsgfTsKKwlzdHJ1Y3QgZHJtX2k5 MTVfcXVlcnlfaXRlbSBpdGVtID0geyB9OworCXN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVf aW5mbyAqcXVlcnlfZW5naW5lczsKKworCWl0ZW0ucXVlcnlfaWQgPSBEUk1fSTkxNV9RVUVSWV9F TkdJTkVfSU5GTzsKKwlxdWVyeS5pdGVtc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJml0ZW0pOwor CXF1ZXJ5Lm51bV9pdGVtcyA9IDE7CisJaXRlbS5sZW5ndGggPSBzaXplb2YoKnF1ZXJ5X2VuZ2lu ZXMpICsKKwkJICAgICAgNjQgKiBzaXplb2Yoc3RydWN0IGRybV9pOTE1X2VuZ2luZV9pbmZvKTsK KworCWlndF9hc3NlcnQoKHF1ZXJ5X2VuZ2luZXMgPSBjYWxsb2MoMSwgaXRlbS5sZW5ndGgpKSk7 CisJaXRlbS5kYXRhX3B0ciA9IHRvX3VzZXJfcG9pbnRlcihxdWVyeV9lbmdpbmVzKTsKKworCWdl bV9xdWVyeShmZCwgJnF1ZXJ5KTsKKworCXJldHVybiBxdWVyeV9lbmdpbmVzOworfQorCit2b2lk IF9fc2V0X2N0eF9lbmdpbmVfbWFwKGludCBmZCwgdWludDMyX3QgY3R4X2lkKQoreworCWludCBp OworCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZTI7CisJc3RydWN0IGRy bV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIGN0eF9wYXJhbTsKKwlzdHJ1Y3QgaTkxNV9jb250ZXh0 X3BhcmFtX2VuZ2luZXMgKmN0eF9lbmdpbmU7CisKKwlpZiAoIWdlbV9oYXNfZ2V0X3NldF9wYXJh bSgpKQorCQlyZXR1cm47CisKKwljdHhfcGFyYW0uY3R4X2lkID0gY3R4X2lkOworCWN0eF9wYXJh bS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTOworCWN0eF9wYXJhbS5zaXplID0g c2l6ZW9mKCpjdHhfZW5naW5lKSArCisJCQkgKEk5MTVfRVhFQ19SSU5HX01BU0sgLSAxKSAqCisJ CQkgc2l6ZW9mKCpjdHhfZW5naW5lLT5jbGFzc19pbnN0YW5jZSk7CisKKwlpZ3RfYXNzZXJ0KChj dHhfZW5naW5lID0gY2FsbG9jKDEsIGN0eF9wYXJhbS5zaXplKSkpOworCisJY3R4X2VuZ2luZS0+ ZXh0ZW5zaW9ucyA9IDA7CisJZm9yIChpID0gMCwgZTIgPSBpbnRlbF9hY3RpdmVfZW5naW5lczI7 IGUyLT5uYW1lOyBpKyssIGUyKyspIHsKKwkJY3R4X2VuZ2luZS0+Y2xhc3NfaW5zdGFuY2VbaV0u ZW5naW5lX2NsYXNzID0gZTItPmNsYXNzOworCQljdHhfZW5naW5lLT5jbGFzc19pbnN0YW5jZVtp XS5lbmdpbmVfaW5zdGFuY2UgPSBlMi0+aW5zdGFuY2U7CisJfQorCisJY3R4X3BhcmFtLnZhbHVl ID0gdG9fdXNlcl9wb2ludGVyKGN0eF9lbmdpbmUpOworCisJZ2VtX3NldHBhcmFtKGZkLCAmY3R4 X3BhcmFtKTsKKworCWZyZWUoY3R4X2VuZ2luZSk7Cit9CisKKy8qCisgKiBJbml0aWFsaXplcyB0 aGUgbGlzdCBvZiBlbmdpbmVzLgorICoKKyAqIFJldHVybnM6CisgKgorICogIC0gMCBpbiBjYXNl IG9mIHN1Y2Nlc3MgYW5kIHRoZSBnZXQvc2V0cGFyYW0gaW9jdGxzIGFyZSBpbXBsZW1lbnRlZAor ICogIC0gLUVJTlZBTCBpbiBjYXNlIG9mIHN1Y2Nlc3MgYnV0IGdldC9zZXRwYXJhbSBpb2N0bHMg YXJlIG5vdCBpbXBsZW1lbnRlZAorICogIC0gZXJybm8gaW4gY2FzZSBvZiBmYWlsdXJlCisgKi8K K3N0YXRpYyBpbnQgZ2VtX2luaXRfZW5naW5lX2xpc3QoaW50IGZkKQoreworCWludCBpLCByZXQ7 CisJc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZvICpxdWVyeV9lbmdpbmUgPSBxdWVy eV9lbmdpbmVzKGZkKTsKKwljb25zdCBjaGFyICplbmdpbmVfbmFtZXNbXSA9IHsgInJjcyIsICJi Y3MiLCAidmNzIiwgInZlY3MiIH07CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFt IGN0eF9wYXJhbSA9IHsKKwkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMsCisJ fTsKKworCS8qIHRoZSBsaXN0IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQgKi8KKwlpZiAoaW50ZWxf YWN0aXZlX2VuZ2luZXMyKQorCQlyZXR1cm4gZ2VtX2hhc19nZXRfc2V0X3BhcmFtKCkgPyAwIDog LUVJTlZBTDsKKworCS8qCisJICogd2UgY2hlY2sgZmlyc3Qgd2hldGhlciB0aGUgbmV3IGVuZ2lu ZSBkaXNjb3ZlcnkgdWFwaQorCSAqIGlzIGluIHRoZSBjdXJyZW50IGtlcm5lbCwgaWYgbm90LCB0 aGUKKwkgKiBEUk1fSU9DVExfSTkxNV9HRU1fQ09OVEVYVF9HRVRQQVJBTSB3aWxsIGZhaWwgd2l0 aAorCSAqIGVycm5vID0gRUlOVkFMLiBJbiB0aGlzIGNhc2UsIHdlIGZhbGwgYmFjayB0byB1c2lu ZworCSAqIHRoZSBwcmV2aW91cyBlbmdpbmUgZGlzY292ZXJ5IHdheQorCSAqLworCXJldCA9IF9f Z2VtX2dldF9zZXRfcGFyYW0oZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9DT05URVhUX0dFVFBBUkFN LAorCQkJCSAgJmN0eF9wYXJhbSk7CisJaWYgKHJldCkgeworCQlpZiAocmV0ID09IC1FSU5WQUwp CisJCQlpbnRlbF9hY3RpdmVfZW5naW5lczIgPSBpbnRlbF9leGVjdXRpb25fZW5naW5lczI7CisJ CXJldHVybiByZXQ7CisJfQorCisJaWd0X2Fzc2VydCgoaW50ZWxfYWN0aXZlX2VuZ2luZXMyID0K KwkJICAgIGNhbGxvYyhxdWVyeV9lbmdpbmUtPm51bV9lbmdpbmVzICsgMSwKKwkJCSAgIHNpemVv ZigqaW50ZWxfYWN0aXZlX2VuZ2luZXMyKSkpKTsKKworCWZvciAoaSA9IDA7IGkgPCBxdWVyeV9l bmdpbmUtPm51bV9lbmdpbmVzOyBpKyspIHsKKwkJY2hhciAqbmFtZTsKKwkJaW50IGNsYXNzID0g cXVlcnlfZW5naW5lLT5lbmdpbmVzW2ldLmNsYXNzOworCQlpbnQgaW5zdGFuY2UgPSBxdWVyeV9l bmdpbmUtPmVuZ2luZXNbaV0uaW5zdGFuY2U7CisKKwkJaWd0X2Fzc2VydChjbGFzcyA8IEFSUkFZ X1NJWkUoZW5naW5lX25hbWVzKSAmJiBjbGFzcyA+PSAwKTsKKwkJaWd0X2Fzc2VydChlbmdpbmVf bmFtZXNbY2xhc3NdKTsKKworCQlpbnRlbF9hY3RpdmVfZW5naW5lczJbaV0uY2xhc3MgPSBjbGFz czsKKwkJaW50ZWxfYWN0aXZlX2VuZ2luZXMyW2ldLmluc3RhbmNlID0gaW5zdGFuY2U7CisKKwkJ aWd0X2Fzc2VydChhc3ByaW50ZigmbmFtZSwgIiVzJWQiLAorCQkJCSAgICBlbmdpbmVfbmFtZXNb Y2xhc3NdLCBpbnN0YW5jZSkgPiAwKTsKKwkJaW50ZWxfYWN0aXZlX2VuZ2luZXMyW2ldLm5hbWUg PSBuYW1lOworCX0KKworCWZyZWUocXVlcnlfZW5naW5lKTsKKworCXJldHVybiAwOworfQorCit2 b2lkIGlndF9yZXF1aXJlX2dlbV9lbmdpbmVfbGlzdChpbnQgZmQpCit7CisJaWd0X3JlcXVpcmVf aW50ZWwoZmQpOworCWlndF9yZXF1aXJlKCFnZW1faW5pdF9lbmdpbmVfbGlzdChmZCkpOworfQpk aWZmIC0tZ2l0IGEvbGliL2k5MTUvZ2VtX3F1ZXJ5LmggYi9saWIvaTkxNS9nZW1fcXVlcnkuaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQ5MjcyNjljOGFhOQotLS0g L2Rldi9udWxsCisrKyBiL2xpYi9pOTE1L2dlbV9xdWVyeS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8q CisgKiBDb3B5cmlnaHQgwqkgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp bmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhl IHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs IHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0 byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1 ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICog VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z IEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxM CisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD TEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg REVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIEdFTV9RVUVSWV9I CisjZGVmaW5lIEdFTV9RVUVSWV9ICisKKyNpbmNsdWRlICJpZ3RfZ3QuaCIKKwordm9pZCBfX3Nl dF9jdHhfZW5naW5lX21hcChpbnQgZmQsIHVpbnQzMl90IGN0eF9pZCk7CisKK2Jvb2wgZ2VtX2hh c19nZXRfc2V0X3BhcmFtKHZvaWQpOwordm9pZCBnZW1fcXVlcnkoaW50IGZkLCBzdHJ1Y3QgZHJt X2k5MTVfcXVlcnkgKnEpOworCit2b2lkIGdlbV9nZXRfc2V0X3BhcmFtKGludCBmZCwgdW5zaWdu ZWQgbG9uZyByZXF1ZXN0LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKnApOwor I2RlZmluZSBnZW1fc2V0cGFyYW0oZiwgcCkgZ2VtX2dldF9zZXRfcGFyYW0oZiwgRFJNX0lPQ1RM X0k5MTVfR0VNX0NPTlRFWFRfU0VUUEFSQU0sIHApCisjZGVmaW5lIGdlbV9nZXRwYXJhbShmLCBw KSBnZW1fZ2V0X3NldF9wYXJhbShmLCBEUk1fSU9DVExfSTkxNV9HRU1fQ09OVEVYVF9HRVRQQVJB TSwgcCkKKwordm9pZCBpZ3RfcmVxdWlyZV9nZW1fZW5naW5lX2xpc3QoaW50IGZkKTsKKworZXh0 ZXJuIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqaW50ZWxfYWN0aXZlX2VuZ2luZXMy OworCisjZW5kaWYgLyogR0VNX1FVRVlfSCAqLwpkaWZmIC0tZ2l0IGEvbGliL2lndF9ndC5jIGIv bGliL2lndF9ndC5jCmluZGV4IDY0NjY5NjcyN2VlNC4uMmJmZDY0MTdiNWU1IDEwMDY0NAotLS0g YS9saWIvaWd0X2d0LmMKKysrIGIvbGliL2lndF9ndC5jCkBAIC01NzcsNyArNTc3LDcgQEAgYm9v bCBnZW1fY2FuX3N0b3JlX2R3b3JkKGludCBmZCwgdW5zaWduZWQgaW50IGVuZ2luZSkKIAlyZXR1 cm4gdHJ1ZTsKIH0KIAotY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyIGludGVs X2V4ZWN1dGlvbl9lbmdpbmVzMltdID0geworc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUy IGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMltdID0gewogCXsgInJjczAiLCBJOTE1X0VOR0lORV9D TEFTU19SRU5ERVIsIDAgfSwKIAl7ICJiY3MwIiwgSTkxNV9FTkdJTkVfQ0xBU1NfQ09QWSwgMCB9 LAogCXsgInZjczAiLCBJOTE1X0VOR0lORV9DTEFTU19WSURFTywgMCB9LApkaWZmIC0tZ2l0IGEv bGliL2lndF9ndC5oIGIvbGliL2lndF9ndC5oCmluZGV4IDU0ZTk1ZGE5ODA4NC4uZjRiZDZjMjJh ODFhIDEwMDY0NAotLS0gYS9saWIvaWd0X2d0LmgKKysrIGIvbGliL2lndF9ndC5oCkBAIC05MSw3 ICs5MSw3IEBAIGJvb2wgZ2VtX3JpbmdfaGFzX3BoeXNpY2FsX2VuZ2luZShpbnQgZmQsIHVuc2ln bmVkIGludCByaW5nKTsKIAogYm9vbCBnZW1fY2FuX3N0b3JlX2R3b3JkKGludCBmZCwgdW5zaWdu ZWQgaW50IGVuZ2luZSk7CiAKLWV4dGVybiBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2Vu Z2luZTIgeworZXh0ZXJuIHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiB7CiAJY29uc3Qg Y2hhciAqbmFtZTsKIAlpbnQgY2xhc3M7CiAJaW50IGluc3RhbmNlOwpkaWZmIC0tZ2l0IGEvbGli L21lc29uLmJ1aWxkIGIvbGliL21lc29uLmJ1aWxkCmluZGV4IGRkMzZmODE4MDMzYy4uYTcwM2Rh MmZiMGQyIDEwMDY0NAotLS0gYS9saWIvbWVzb24uYnVpbGQKKysrIGIvbGliL21lc29uLmJ1aWxk CkBAIC00LDYgKzQsNyBAQCBsaWJfc291cmNlcyA9IFsKIAknaTkxNS9nZW1fc2NoZWR1bGVyLmMn LAogCSdpOTE1L2dlbV9zdWJtaXNzaW9uLmMnLAogCSdpOTE1L2dlbV9yaW5nLmMnLAorCSdpOTE1 L2dlbV9xdWVyeS5jJywKIAknaWd0X2NvbG9yX2VuY29kaW5nLmMnLAogCSdpZ3RfZGVidWdmcy5j JywKIAknaWd0X2RldmljZS5jJywKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pZ3QtZGV2