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 442476E820 for ; Thu, 14 Feb 2019 00:44:56 +0000 (UTC) Date: Thu, 14 Feb 2019 02:44:42 +0200 Message-Id: <20190214004445.1733-3-andi.shyti@intel.com> In-Reply-To: <20190214004445.1733-1-andi.shyti@intel.com> References: <20190214004445.1733-1-andi.shyti@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [RFC PATCH v9 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: Andi Shyti List-ID: VGhlIGdlbV9xdWVyeSBsaWJyYXJ5IGlzIGEgc2V0IG9mIGZ1bmN0aW9ucyB0aGF0IGludGVyZmFj ZSB3aXRoCnRoZSBxdWVyeSBhbmQgZ2V0cGFyYW0vc2V0cGFyYW0gaW9jdGxzLgoKVGhlIGVudHJ5 IHBvaW50IG9mIHRoZSBsaWJyYXJ5IGlzIHRoZQppZ3RfcmVxdWlyZV9nZW1fZW5naW5lX2xpc3Qo KSB3aGljaCBjaGVja3Mgd2hldGhlciB0aGUgaW9jdGxzIGFyZQppbXBsZW1lbnRlZCBpbiB0aGUg cnVubmluZyBrZXJuZWwuIElmIG5vdCB0aGUgZnVuY3Rpb24gc2tpcHMgdGhlCnRlc3Qgd2l0aCAt RU5PREVWLgpPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIGludGVyZmFjZXMgYXJlIGltcGxlbWVu dGVkLCB0aGVuLCBhdAp0aGUgZmlyc3QgY2FsbCBpdCBpbml0aWFsaXplcyBhbiBhcnJheSBvZiBh Y3RpdmUgZW5naW5lcyAoZWl0aGVyCnBoeXNpY2FsIG9yIHZpcnR1YWwpLgoKVGhlIGdsb2JhbCAn KmludGVsX2FjdGl2ZV9lbmdpbmVzMicgcG9pbnRzIHRvIHRoZSBhY3RpdmUgZW5naW5lcwphcnJh eSBvciB0byB0aGUgZXhpc3RpbmcgJ2ludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMicuIFRoZSBsYXR0 ZXIKaXMgaW4gcHJlcGFyYXRpb24gdG8gdGhlIG5leHQgcGF0Y2guCgpUaGUgdmFsdWUgb2YgdGhl ICdpbnRlbF9hY3RpdmVfZW5naW5lczInIHdpbGwgYmUgdXNlZCBpbiBmdXJ0aGVyCmNhbGxzIHRv IGNoZWNrIHdoZXRoZXIgdGhlIGFib3ZlIG1lbnRpb25lZCBpb2N0bHMgYXJlIGltcGxlbWVudGVk CndpdGhvdXQgdGhlIG5lZWQgdG8gY2FsbCBnZXRwYXJhbSgpLgoKU2lnbmVkLW9mZi1ieTogQW5k aSBTaHl0aSA8YW5kaS5zaHl0aUBpbnRlbC5jb20+Ci0tLQogbGliL01ha2VmaWxlLnNvdXJjZXMg fCAgIDIgKwogbGliL2k5MTUvZ2VtX3F1ZXJ5LmMgfCAxODQgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogbGliL2k5MTUvZ2VtX3F1ZXJ5LmggfCAgMzggKysrKysr KysrCiBsaWIvaWd0X2d0LmMgICAgICAgICB8ICAgMiArLQogbGliL2lndF9ndC5oICAgICAgICAg fCAgIDIgKy0KIGxpYi9tZXNvbi5idWlsZCAgICAgIHwgICAxICsKIDYgZmlsZXMgY2hhbmdlZCwg MjI3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGli L2k5MTUvZ2VtX3F1ZXJ5LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaTkxNS9nZW1fcXVlcnku aAoKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzIGIvbGliL01ha2VmaWxlLnNvdXJj ZXMKaW5kZXggODA4Yjk2MTdlY2EyLi45ZGQ1ZTkyNDJhZTQgMTAwNjQ0Ci0tLSBhL2xpYi9NYWtl ZmlsZS5zb3VyY2VzCisrKyBiL2xpYi9NYWtlZmlsZS5zb3VyY2VzCkBAIC0xMSw2ICsxMSw4IEBA IGxpYl9zb3VyY2VfbGlzdCA9CSAJXAogCWk5MTUvZ2VtX3N1Ym1pc3Npb24uaAlcCiAJaTkxNS9n ZW1fcmluZy5oCVwKIAlpOTE1L2dlbV9yaW5nLmMJXAorCWk5MTUvZ2VtX3F1ZXJ5LmMJXAorCWk5 MTUvZ2VtX3F1ZXJ5LmgJXAogCWk5MTVfM2QuaAkJXAogCWk5MTVfcmVnLmgJCVwKIAlpOTE1X3Bj aWlkcy5oCQlcCmRpZmYgLS1naXQgYS9saWIvaTkxNS9nZW1fcXVlcnkuYyBiL2xpYi9pOTE1L2dl bV9xdWVyeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTU1ZjZm ZDk0NTQzCi0tLSAvZGV2L251bGwKKysrIGIvbGliL2k5MTUvZ2VtX3F1ZXJ5LmMKQEAgLTAsMCAr MSwxODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorICoK KyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg cGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0 ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0 aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh dGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNv ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlz IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6 CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu b3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdh cmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5P IEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVS IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAq IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV U0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaW5jbHVk ZSAiaW9jdGxfd3JhcHBlcnMuaCIKKyNpbmNsdWRlICJkcm10ZXN0LmgiCisKKyNpbmNsdWRlICJp OTE1L2dlbV9xdWVyeS5oIgorCisvKgorICogSEFDSzogdGhlICcyICogc2l6ZW9mKF9fdTE2KScg aXMgdGhlIHNpemUgcmVxdWlyZWQgZm9yIHRoZSBmbGV4aWJsZSBhcnJheQorICogaW5zaWRlICdz dHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMnIHRoYXQgZG9lc24ndCBoYXZlIGEgbmFt ZSBhbmQKKyAqIHRoZXJlZm9yZSBjYW5ub3QgYmUgcmVmZXJlbmNlZC4gSXQgbmVlZHMgYSBuYW1l IGluIHRoZSB1YXBpLgorICovCisjZGVmaW5lIFNJWkVPRl9DVFhfUEFSQU0Jc2l6ZW9mKHN0cnVj dCBpOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcykgKyBcCisJCQkJCUk5MTVfRVhFQ19SSU5HX01B U0sgKiBcCisJCQkJCTIgKiBzaXplb2YoX191MTYpCisjZGVmaW5lIFNJWkVPRl9RVUVSWQkJc2l6 ZW9mKHN0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbykgKyBcCisJCQkJCUk5MTVfRVhF Q19SSU5HX01BU0sgKiBcCisJCQkJCXNpemVvZihzdHJ1Y3QgZHJtX2k5MTVfZW5naW5lX2luZm8p CisKK3N0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqaW50ZWxfYWN0aXZlX2VuZ2luZXMy OworCitzdGF0aWMgaW50IF9fZ2VtX3F1ZXJ5KGludCBmZCwgc3RydWN0IGRybV9pOTE1X3F1ZXJ5 ICpxKQoreworCWludCBlcnIgPSAwOworCisJaWYoaWd0X2lvY3RsKGZkLCBEUk1fSU9DVExfSTkx NV9RVUVSWSwgcSkpCisJCWVyciA9IC1lcnJubzsKKworCWVycm5vID0gMDsKKwlyZXR1cm4gZXJy OworfQorCit2b2lkIGdlbV9xdWVyeShpbnQgZmQsIHN0cnVjdCBkcm1faTkxNV9xdWVyeSAqcSkK K3sKKwlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX3F1ZXJ5KGZkLCBxKSwgMCk7Cit9CisKK2Jvb2wgZ2Vt X2Nhbl9xdWVyeSh2b2lkKQoreworCXJldHVybiBpbnRlbF9hY3RpdmVfZW5naW5lczIgIT0gaW50 ZWxfZXhlY3V0aW9uX2VuZ2luZXMyOworfQorCitzdGF0aWMgdm9pZCBxdWVyeV9lbmdpbmVzKGlu dCBmZCwKKwkJCSAgc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZvICpxdWVyeV9lbmdp bmVzKQoreworCXN0cnVjdCBkcm1faTkxNV9xdWVyeSBxdWVyeSA9IHsgfTsKKwlzdHJ1Y3QgZHJt X2k5MTVfcXVlcnlfaXRlbSBpdGVtID0geyB9OworCisJaXRlbS5xdWVyeV9pZCA9IERSTV9JOTE1 X1FVRVJZX0VOR0lORV9JTkZPOworCXF1ZXJ5Lml0ZW1zX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigm aXRlbSk7CisJcXVlcnkubnVtX2l0ZW1zID0gMTsKKwlpdGVtLmxlbmd0aCA9IFNJWkVPRl9RVUVS WTsKKworCWl0ZW0uZGF0YV9wdHIgPSB0b191c2VyX3BvaW50ZXIocXVlcnlfZW5naW5lcyk7CisK KwlnZW1fcXVlcnkoZmQsICZxdWVyeSk7Cit9CisKK3ZvaWQgX19zZXRfY3R4X2VuZ2luZV9tYXAo aW50IGZkLCB1aW50MzJfdCBjdHhfaWQpCit7CisJaW50IGk7CisJX191OCBjdHhfcGFyYW1fYnVm ZmVyW1NJWkVPRl9DVFhfUEFSQU1dID0geyB9OworCWNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRp b25fZW5naW5lMiAqZTI7CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIGN0eF9w YXJhbTsKKwlzdHJ1Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMgKmN0eF9lbmdpbmU7CisK KwlpZiAoIWdlbV9jYW5fcXVlcnkoKSkKKwkJcmV0dXJuOworCisJY3R4X2VuZ2luZSA9IChzdHJ1 Y3QgaTkxNV9jb250ZXh0X3BhcmFtX2VuZ2luZXMgKikgY3R4X3BhcmFtX2J1ZmZlcjsKKworCWN0 eF9wYXJhbS5jdHhfaWQgPSBjdHhfaWQ7CisJY3R4X3BhcmFtLnBhcmFtID0gSTkxNV9DT05URVhU X1BBUkFNX0VOR0lORVM7CisJY3R4X3BhcmFtLnNpemUgPSBTSVpFT0ZfQ1RYX1BBUkFNOworCisJ Y3R4X2VuZ2luZS0+ZXh0ZW5zaW9ucyA9IDA7CisJZm9yIChpID0gMCwgZTIgPSBpbnRlbF9hY3Rp dmVfZW5naW5lczI7IGUyLT5uYW1lOyBpKyssIGUyKyspIHsKKwkJY3R4X2VuZ2luZS0+Y2xhc3Nf aW5zdGFuY2VbaV0uZW5naW5lX2NsYXNzID0gZTItPmNsYXNzOworCQljdHhfZW5naW5lLT5jbGFz c19pbnN0YW5jZVtpXS5lbmdpbmVfaW5zdGFuY2UgPSBlMi0+aW5zdGFuY2U7CisJfQorCisJY3R4 X3BhcmFtLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKGN0eF9lbmdpbmUpOworCisJZ2VtX2NvbnRl eHRfc2V0X3BhcmFtKGZkLCAmY3R4X3BhcmFtKTsKK30KKworLyoKKyAqIEluaXRpYWxpemVzIHRo ZSBsaXN0IG9mIGVuZ2luZXMuCisgKgorICogUmV0dXJuczoKKyAqCisgKiAgLSAwIGluIGNhc2Ug b2Ygc3VjY2VzcyBhbmQgdGhlIGdldC9zZXRfcGFyYW0gaW9jdGxzIGFyZSBpbXBsZW1lbnRlZAor ICogIC0gLUVOT0RFViBpbiBjYXNlIG9mIHN1Y2Nlc3MgYnV0IEk5MTVfQ09OVEVYVF9QQVJBTV9F TkdJTkVTIGlzIG5vdAorICogICAgaW1wbGVtZW50ZWQgaW4gRFJNX0lPQ1RMX0k5MTVfR0VNX0NP TlRFWFRfR0VUUEFSQU0gaW9jdGwuCisgKiAgLSAtZXJybm8gaW4gY2FzZSBvZiBmYWlsdXJlCisg Ki8KK3N0YXRpYyBpbnQgZ2VtX2luaXRfZW5naW5lX2xpc3QoaW50IGZkKQoreworCWludCBpLCBy ZXQ7CisJdW5zaWduZWQgY2hhciBxdWVyeV9idWZmZXJbU0laRU9GX1FVRVJZXSA9IHsgfTsKKwlz dHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8gKnF1ZXJ5X2VuZ2luZTsKKwljb25zdCBj aGFyICpjbGFzc19uYW1lc1tdID0geyAicmNzIiwgImJjcyIsICJ2Y3MiLCAidmVjcyIgfTsKKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gY3R4X3BhcmFtID0geworCQkucGFyYW0g PSBJOTE1X0NPTlRFWFRfUEFSQU1fRU5HSU5FUywKKwl9OworCisJLyogdGhlIGxpc3QgaXMgYWxy ZWFkeSBpbml0aWFsaXplZCAqLworCWlmIChpbnRlbF9hY3RpdmVfZW5naW5lczIpCisJCXJldHVy biBnZW1fY2FuX3F1ZXJ5KCkgPyAwIDogLUVOT0RFVjsKKworCS8qCisJICogV2UgY2hlY2sgZmly c3Qgd2hldGhlciB0aGUgSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMgcGFyYW1ldGVyIGlzCisJ ICogc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbC4gSWYgbm90LCBfX2dlbV9jb250ZXh0 X2dldF9wYXJhbSgpCisJICogd2lsbCByZXR1cm4gLUVJTlZBTCB3aGljaCwgYXQgdGhpcyBwb2lu dCwgaXMgbm90IG5lY2Vzc2FyaWx5IGEKKwkgKiBmYWlsdXJlIGJ1dCBpdCBtZWFucyB0aGF0IHdl IG5lZWQgdG8gZmFsbCBiZWNrIHRvIHBvbGxpbmcgdGhlIGVuZ2luZXMKKwkgKiBkaXJlY3RseSBm cm9tIGludGVsX2V4ZWN1dGlvbl9lbmdpbmVzMltdLgorCSAqCisJICogV2Ugd2lsbCByZXR1cm4g LUVOT0RFViB3aXRoIHRoZSBtZWFuaW5nIG9mIG1pc3NpbmcgaW50ZXJmYWNlCisJICovCisJcmV0 ID0gX19nZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZjdHhfcGFyYW0pOworCWlmIChyZXQpIHsK KwkJaWYgKHJldCA9PSAtRUlOVkFMKSB7CisJCQlpbnRlbF9hY3RpdmVfZW5naW5lczIgPSBpbnRl bF9leGVjdXRpb25fZW5naW5lczI7CisJCQlyZXR1cm4gLUVOT0RFVjsKKwkJfQorCQlyZXR1cm4g cmV0OworCX0KKworCXF1ZXJ5X2VuZ2luZSA9IChzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5l X2luZm8gKikgcXVlcnlfYnVmZmVyOworCXF1ZXJ5X2VuZ2luZXMoZmQsIHF1ZXJ5X2VuZ2luZSk7 CisKKwlpbnRlbF9hY3RpdmVfZW5naW5lczIgPSBtYWxsb2MoKHF1ZXJ5X2VuZ2luZS0+bnVtX2Vu Z2luZXMgKyAxKSAqCisJCQkJICAgICAgIHNpemVvZigqaW50ZWxfYWN0aXZlX2VuZ2luZXMyKSk7 CisJaWd0X2Fzc2VydChpbnRlbF9hY3RpdmVfZW5naW5lczIpOworCisJZm9yIChpID0gMDsgaSA8 IHF1ZXJ5X2VuZ2luZS0+bnVtX2VuZ2luZXM7IGkrKykgeworCQljaGFyICpuYW1lOworCQlpbnQg Y2xhc3MgPSBxdWVyeV9lbmdpbmUtPmVuZ2luZXNbaV0uY2xhc3M7CisJCWludCBpbnN0YW5jZSA9 IHF1ZXJ5X2VuZ2luZS0+ZW5naW5lc1tpXS5pbnN0YW5jZTsKKworCQlpZ3RfYXNzZXJ0KGNsYXNz IDwgQVJSQVlfU0laRShjbGFzc19uYW1lcykgJiYgY2xhc3MgPj0gMCk7CisJCWlndF9hc3NlcnQo Y2xhc3NfbmFtZXNbY2xhc3NdKTsKKworCQlpbnRlbF9hY3RpdmVfZW5naW5lczJbaV0uY2xhc3Mg PSBjbGFzczsKKwkJaW50ZWxfYWN0aXZlX2VuZ2luZXMyW2ldLmluc3RhbmNlID0gaW5zdGFuY2U7 CisKKwkJaWd0X2Fzc2VydChhc3ByaW50ZigmbmFtZSwgIiVzJWQiLAorCQkJCSAgICBjbGFzc19u YW1lc1tjbGFzc10sIGluc3RhbmNlKSA+IDApOworCQlpbnRlbF9hY3RpdmVfZW5naW5lczJbaV0u bmFtZSA9IG5hbWU7CisJfQorCisJLyogJzAnIHZhbHVlIHNlbnRpbmVsICovCisJaW50ZWxfYWN0 aXZlX2VuZ2luZXMyW2ldLm5hbWUgPSBOVUxMOworCWludGVsX2FjdGl2ZV9lbmdpbmVzMltpXS5j bGFzcyA9IDA7CisJaW50ZWxfYWN0aXZlX2VuZ2luZXMyW2ldLmluc3RhbmNlID0gMDsKKworCXJl dHVybiAwOworfQorCit2b2lkIGlndF9yZXF1aXJlX2dlbV9lbmdpbmVfbGlzdChpbnQgZmQpCit7 CisJaWd0X3JlcXVpcmUoIWdlbV9pbml0X2VuZ2luZV9saXN0KGZkKSk7Cit9CmRpZmYgLS1naXQg YS9saWIvaTkxNS9nZW1fcXVlcnkuaCBiL2xpYi9pOTE1L2dlbV9xdWVyeS5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjYzYzdiZDVjNmUyCi0tLSAvZGV2L251bGwK KysrIGIvbGliL2k5MTUvZ2VtX3F1ZXJ5LmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHly aWdodCDCqSAyMDE3IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJl YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAq IGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz ICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z ZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg cGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBz dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBu ZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vi c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBB VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS QUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwor ICogSU4gVEhFIFNPRlRXQVJFLgorICovCisKKyNpZm5kZWYgR0VNX1FVRVJZX0gKKyNkZWZpbmUg R0VNX1FVRVJZX0gKKworI2luY2x1ZGUgImlndF9ndC5oIgorCit2b2lkIF9fc2V0X2N0eF9lbmdp bmVfbWFwKGludCBmZCwgdWludDMyX3QgY3R4X2lkKTsKKworYm9vbCBnZW1fY2FuX3F1ZXJ5KHZv aWQpOwordm9pZCBnZW1fcXVlcnkoaW50IGZkLCBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnkgKnEpOwor Cit2b2lkIGlndF9yZXF1aXJlX2dlbV9lbmdpbmVfbGlzdChpbnQgZmQpOworCitleHRlcm4gc3Ry dWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICppbnRlbF9hY3RpdmVfZW5naW5lczI7CisKKyNl bmRpZiAvKiBHRU1fUVVFWV9IICovCmRpZmYgLS1naXQgYS9saWIvaWd0X2d0LmMgYi9saWIvaWd0 X2d0LmMKaW5kZXggNjQ2Njk2NzI3ZWU0Li4yYmZkNjQxN2I1ZTUgMTAwNjQ0Ci0tLSBhL2xpYi9p Z3RfZ3QuYworKysgYi9saWIvaWd0X2d0LmMKQEAgLTU3Nyw3ICs1NzcsNyBAQCBib29sIGdlbV9j YW5fc3RvcmVfZHdvcmQoaW50IGZkLCB1bnNpZ25lZCBpbnQgZW5naW5lKQogCXJldHVybiB0cnVl OwogfQogCi1jb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZXMyW10gPSB7CitzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgaW50ZWxf ZXhlY3V0aW9uX2VuZ2luZXMyW10gPSB7CiAJeyAicmNzMCIsIEk5MTVfRU5HSU5FX0NMQVNTX1JF TkRFUiwgMCB9LAogCXsgImJjczAiLCBJOTE1X0VOR0lORV9DTEFTU19DT1BZLCAwIH0sCiAJeyAi dmNzMCIsIEk5MTVfRU5HSU5FX0NMQVNTX1ZJREVPLCAwIH0sCmRpZmYgLS1naXQgYS9saWIvaWd0 X2d0LmggYi9saWIvaWd0X2d0LmgKaW5kZXggNTRlOTVkYTk4MDg0Li5mNGJkNmMyMmE4MWEgMTAw NjQ0Ci0tLSBhL2xpYi9pZ3RfZ3QuaAorKysgYi9saWIvaWd0X2d0LmgKQEAgLTkxLDcgKzkxLDcg QEAgYm9vbCBnZW1fcmluZ19oYXNfcGh5c2ljYWxfZW5naW5lKGludCBmZCwgdW5zaWduZWQgaW50 IHJpbmcpOwogCiBib29sIGdlbV9jYW5fc3RvcmVfZHdvcmQoaW50IGZkLCB1bnNpZ25lZCBpbnQg ZW5naW5lKTsKIAotZXh0ZXJuIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiB7 CitleHRlcm4gc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyIHsKIAljb25zdCBjaGFyICpu YW1lOwogCWludCBjbGFzczsKIAlpbnQgaW5zdGFuY2U7CmRpZmYgLS1naXQgYS9saWIvbWVzb24u YnVpbGQgYi9saWIvbWVzb24uYnVpbGQKaW5kZXggZGQzNmY4MTgwMzNjLi5hNzAzZGEyZmIwZDIg MTAwNjQ0Ci0tLSBhL2xpYi9tZXNvbi5idWlsZAorKysgYi9saWIvbWVzb24uYnVpbGQKQEAgLTQs NiArNCw3IEBAIGxpYl9zb3VyY2VzID0gWwogCSdpOTE1L2dlbV9zY2hlZHVsZXIuYycsCiAJJ2k5 MTUvZ2VtX3N1Ym1pc3Npb24uYycsCiAJJ2k5MTUvZ2VtX3JpbmcuYycsCisJJ2k5MTUvZ2VtX3F1 ZXJ5LmMnLAogCSdpZ3RfY29sb3JfZW5jb2RpbmcuYycsCiAJJ2lndF9kZWJ1Z2ZzLmMnLAogCSdp Z3RfZGV2aWNlLmMnLAotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2lndC1kZXY=