From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4E29E89FD4 for ; Tue, 26 Feb 2019 17:31:04 +0000 (UTC) From: Antonio Argenziano Date: Tue, 26 Feb 2019 09:30:44 -0800 Message-Id: <20190226173044.19664-1-antonio.argenziano@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v3] lib/i915: Move mmap IOCTLs wrappers into separate file 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: TW92ZSBhbGwgbW1hcCBmbGF2b3VycyBhbmQgc3VwcG9ydCBmdW5jdGlvbiB0byBzZXBhcmF0ZSBm aWxlIGluIGk5MTUKZm9sZGVyLiBUaGlzIGhlbHBzIHdpdGggbW92aW5nIGk5MTUgc3BlY2lmaWMg ZnVuY3Rpb25zIGF3YXkgZnJvbSBjb21tb24KbGlicmFyaWVzLgoKdjI6CgktIEF1dG90b29scyBz dGlsbCBleGlzdHMuIChQZXRyaSkKCS0gSW5jbHVkZSBnZW1fbW1hbi5oIGRpcmVjdGx5LiAoQ2hy aXMpCgp2MzoKCS0gS2VlcCBpbmNsdWRlcyBleHBsaWNpdC4gKENocmlzKQoKU2lnbmVkLW9mZi1i eTogQW50b25pbyBBcmdlbnppYW5vIDxhbnRvbmlvLmFyZ2Vuemlhbm9AaW50ZWwuY29tPgpDYzog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBQZXRyaSBMYXR2YWxh IDxwZXRyaS5sYXR2YWxhQGludGVsLmNvbT4KLS0tCiBiZW5jaG1hcmtzL2dlbV9idXN5LmMgICAg ICAgfCAgIDEgKwogYmVuY2htYXJrcy9nZW1fZXhlY19yZWxvYy5jIHwgICAxICsKIGJlbmNobWFy a3MvZ2VtX21tYXAuYyAgICAgICB8ICAgMSArCiBiZW5jaG1hcmtzL2dlbV93c2ltLmMgICAgICAg fCAgIDEgKwogbGliL01ha2VmaWxlLnNvdXJjZXMgICAgICAgIHwgICAyICsKIGxpYi9pOTE1L2dl bV9tbWFuLmMgICAgICAgICB8IDI1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysKIGxpYi9pOTE1L2dlbV9tbWFuLmggICAgICAgICB8ICA1NSArKysrKysrKwogbGliL2lndC5o ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGxpYi9pZ3RfZHJhdy5jICAgICAgICAgICAgICB8 ICAgMSArCiBsaWIvaWd0X2R1bW15bG9hZC5jICAgICAgICAgfCAgIDEgKwogbGliL2lndF9mYi5j ICAgICAgICAgICAgICAgIHwgICAxICsKIGxpYi9pb2N0bF93cmFwcGVycy5jICAgICAgICB8IDIx MyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGxpYi9pb2N0bF93cmFwcGVycy5oICAg ICAgICB8ICAyMiAtLS0tCiBsaWIvbWVzb24uYnVpbGQgICAgICAgICAgICAgfCAgIDEgKwogdGVz dHMvaTkxNS9nZW1fc3RvbGVuLmMgICAgIHwgICAxICsKIHRlc3RzL3ByaW1lX21tYXAuYyAgICAg ICAgICB8ICAgMSArCiAxNiBmaWxlcyBjaGFuZ2VkLCAzMjIgaW5zZXJ0aW9ucygrKSwgMjM1IGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pOTE1L2dlbV9tbWFuLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBsaWIvaTkxNS9nZW1fbW1hbi5oCgpkaWZmIC0tZ2l0IGEvYmVuY2htYXJr cy9nZW1fYnVzeS5jIGIvYmVuY2htYXJrcy9nZW1fYnVzeS5jCmluZGV4IGNhNTE3YTE2Li4yZmIx ZWRmOSAxMDA2NDQKLS0tIGEvYmVuY2htYXJrcy9nZW1fYnVzeS5jCisrKyBiL2JlbmNobWFya3Mv Z2VtX2J1c3kuYwpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgImludGVsX2NoaXBzZXQuaCIK ICNpbmNsdWRlICJpbnRlbF9yZWcuaCIKICNpbmNsdWRlICJpZ3Rfc3RhdHMuaCIKKyNpbmNsdWRl ICJpOTE1L2dlbV9tbWFuLmgiCiAKICNkZWZpbmUgTE9DQUxfSTkxNV9FWEVDX05PX1JFTE9DICgx PDwxMSkKICNkZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0hBTkRMRV9MVVQgKDE8PDEyKQpkaWZmIC0t Z2l0IGEvYmVuY2htYXJrcy9nZW1fZXhlY19yZWxvYy5jIGIvYmVuY2htYXJrcy9nZW1fZXhlY19y ZWxvYy5jCmluZGV4IGY5NDg3ZDk1Li5jNzM0NjQzYyAxMDA2NDQKLS0tIGEvYmVuY2htYXJrcy9n ZW1fZXhlY19yZWxvYy5jCisrKyBiL2JlbmNobWFya3MvZ2VtX2V4ZWNfcmVsb2MuYwpAQCAtNDAs NiArNDAsNyBAQAogI2luY2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCiAjaW5jbHVkZSAiaWd0X2Rl YnVnZnMuaCIKICNpbmNsdWRlICJkcm10ZXN0LmgiCisjaW5jbHVkZSAiaTkxNS9nZW1fbW1hbi5o IgogCiAjZGVmaW5lIExPQ0FMX0k5MTVfRVhFQ19OT19SRUxPQyAoMTw8MTEpCiAjZGVmaW5lIExP Q0FMX0k5MTVfRVhFQ19IQU5ETEVfTFVUICgxPDwxMikKZGlmZiAtLWdpdCBhL2JlbmNobWFya3Mv Z2VtX21tYXAuYyBiL2JlbmNobWFya3MvZ2VtX21tYXAuYwppbmRleCBjODA5ZTA4Ny4uZDNkNGFk MzEgMTAwNjQ0Ci0tLSBhL2JlbmNobWFya3MvZ2VtX21tYXAuYworKysgYi9iZW5jaG1hcmtzL2dl bV9tbWFwLmMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJkcm10ZXN0LmgiCiAjaW5jbHVk ZSAiaWd0X2F1eC5oIgogI2luY2x1ZGUgImlndF9zdGF0cy5oIgorI2luY2x1ZGUgImk5MTUvZ2Vt X21tYW4uaCIKIAogI2RlZmluZSBPQkpFQ1RfU0laRSAoMTw8MjMpCiAKZGlmZiAtLWdpdCBhL2Jl bmNobWFya3MvZ2VtX3dzaW0uYyBiL2JlbmNobWFya3MvZ2VtX3dzaW0uYwppbmRleCA1YTQ3NTNk OS4uMGE1YWJjMDggMTAwNjQ0Ci0tLSBhL2JlbmNobWFya3MvZ2VtX3dzaW0uYworKysgYi9iZW5j aG1hcmtzL2dlbV93c2ltLmMKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJpZ3RfcmFuZC5o IgogI2luY2x1ZGUgImlndF9wZXJmLmgiCiAjaW5jbHVkZSAic3dfc3luYy5oIgorI2luY2x1ZGUg Imk5MTUvZ2VtX21tYW4uaCIKIAogI2luY2x1ZGUgImV3bWEuaCIKIApkaWZmIC0tZ2l0IGEvbGli L01ha2VmaWxlLnNvdXJjZXMgYi9saWIvTWFrZWZpbGUuc291cmNlcwppbmRleCA4MDhiOTYxNy4u Nzc0YTFhNGUgMTAwNjQ0Ci0tLSBhL2xpYi9NYWtlZmlsZS5zb3VyY2VzCisrKyBiL2xpYi9NYWtl ZmlsZS5zb3VyY2VzCkBAIC0xMSw2ICsxMSw4IEBAIGxpYl9zb3VyY2VfbGlzdCA9CSAJXAogCWk5 MTUvZ2VtX3N1Ym1pc3Npb24uaAlcCiAJaTkxNS9nZW1fcmluZy5oCVwKIAlpOTE1L2dlbV9yaW5n LmMJXAorCWk5MTUvZ2VtX21tYW4uYwlcCisJaTkxNS9nZW1fbW1hbi5oCVwKIAlpOTE1XzNkLmgJ CVwKIAlpOTE1X3JlZy5oCQlcCiAJaTkxNV9wY2lpZHMuaAkJXApkaWZmIC0tZ2l0IGEvbGliL2k5 MTUvZ2VtX21tYW4uYyBiL2xpYi9pOTE1L2dlbV9tbWFuLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAuLjNjZjlhNmJiCi0tLSAvZGV2L251bGwKKysrIGIvbGliL2k5MTUvZ2Vt X21tYW4uYwpAQCAtMCwwICsxLDI1NCBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDA3LCAyMDEx LCAyMDEzLCAyMDE0LCAyMDE5IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi bGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRv IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJv dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5n IHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAq IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFM SU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaW5jbHVkZSA8c3RkYm9vbC5o PgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisKKyNpbmNsdWRl ICJpZ3RfY29yZS5oIgorI2luY2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCisKKyNpbmNsdWRlICJn ZW1fbW1hbi5oIgorCisjaWZkZWYgSEFWRV9WQUxHUklORAorI2luY2x1ZGUgPHZhbGdyaW5kL3Zh bGdyaW5kLmg+CisjaW5jbHVkZSA8dmFsZ3JpbmQvbWVtY2hlY2suaD4KKworI2RlZmluZSBWRyh4 KSB4CisjZWxzZQorI2RlZmluZSBWRyh4KSBkbyB7fSB3aGlsZSAoMCkKKyNlbmRpZgorCisvKioK KyAqIF9fZ2VtX21tYXBfX2d0dDoKKyAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0 b3IKKyAqIEBoYW5kbGU6IGdlbSBidWZmZXIgb2JqZWN0IGhhbmRsZQorICogQHNpemU6IHNpemUg b2YgdGhlIGdlbSBidWZmZXIKKyAqIEBwcm90OiBtZW1vcnkgcHJvdGVjdGlvbiBiaXRzIGFzIHVz ZWQgYnkgbW1hcCgpCisgKgorICogVGhpcyBmdW5jdGlvbnMgd3JhcHMgdXAgcHJvY2VkdXJlIHRv IGVzdGFibGlzaCBhIG1lbW9yeSBtYXBwaW5nIHRocm91Z2ggdGhlCisgKiBHVFQuCisgKgorICog UmV0dXJuczogQSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIG1lbW9yeSBtYXBwaW5nLCBOVUxMIG9u IGZhaWx1cmUuCisgKi8KK3ZvaWQgKl9fZ2VtX21tYXBfX2d0dChpbnQgZmQsIHVpbnQzMl90IGhh bmRsZSwgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX21tYXBfZ3R0IG1tYXBfYXJnOworCXZvaWQgKnB0cjsKKworCW1lbXNldCgmbW1hcF9hcmcs IDAsIHNpemVvZihtbWFwX2FyZykpOworCW1tYXBfYXJnLmhhbmRsZSA9IGhhbmRsZTsKKwlpZiAo aWd0X2lvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fTU1BUF9HVFQsICZtbWFwX2FyZykpCisJ CXJldHVybiBOVUxMOworCisJcHRyID0gbW1hcDY0KDAsIHNpemUsIHByb3QsIE1BUF9TSEFSRUQs IGZkLCBtbWFwX2FyZy5vZmZzZXQpOworCWlmIChwdHIgPT0gTUFQX0ZBSUxFRCkKKwkJcHRyID0g TlVMTDsKKwllbHNlCisJCWVycm5vID0gMDsKKworCVZHKFZBTEdSSU5EX01BS0VfTUVNX0RFRklO RUQocHRyLCBzaXplKSk7CisKKwlyZXR1cm4gcHRyOworfQorCisvKioKKyAqIGdlbV9tbWFwX19n dHQ6CisgKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCisgKiBAaGFuZGxlOiBn ZW0gYnVmZmVyIG9iamVjdCBoYW5kbGUKKyAqIEBzaXplOiBzaXplIG9mIHRoZSBnZW0gYnVmZmVy CisgKiBAcHJvdDogbWVtb3J5IHByb3RlY3Rpb24gYml0cyBhcyB1c2VkIGJ5IG1tYXAoKQorICoK KyAqIExpa2UgX19nZW1fbW1hcF9fZ3R0KCkgZXhjZXB0IHdlIGFzc2VydCBvbiBmYWlsdXJlLgor ICoKKyAqIFJldHVybnM6IEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBtZW1vcnkgbWFwcGluZwor ICovCit2b2lkICpnZW1fbW1hcF9fZ3R0KGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRf dCBzaXplLCB1bnNpZ25lZCBwcm90KQoreworCXZvaWQgKnB0ciA9IF9fZ2VtX21tYXBfX2d0dChm ZCwgaGFuZGxlLCBzaXplLCBwcm90KTsKKwlpZ3RfYXNzZXJ0KHB0cik7CisJcmV0dXJuIHB0cjsK K30KKworaW50IGdlbV9tdW5tYXAodm9pZCAqcHRyLCB1aW50NjRfdCBzaXplKQoreworCWludCBy ZXQgPSBtdW5tYXAocHRyLCBzaXplKTsKKworCWlmIChyZXQgPT0gMCkKKwkJVkcoVkFMR1JJTkRf TUFLRV9NRU1fTk9BQ0NFU1MocHRyLCBzaXplKSk7CisKKwlyZXR1cm4gcmV0OworfQorCitib29s IGdlbV9tbWFwX19oYXNfd2MoaW50IGZkKQoreworCXN0YXRpYyBpbnQgaGFzX3djID0gLTE7CisK KwlpZiAoaGFzX3djID09IC0xKSB7CisJCXN0cnVjdCBkcm1faTkxNV9nZXRwYXJhbSBncDsKKwkJ aW50IG1tYXBfdmVyc2lvbiA9IC0xOworCQlpbnQgZ3R0X3ZlcnNpb24gPSAtMTsKKworCQloYXNf d2MgPSAwOworCisJCW1lbXNldCgmZ3AsIDAsIHNpemVvZihncCkpOworCQlncC5wYXJhbSA9IEk5 MTVfUEFSQU1fTU1BUF9HVFRfVkVSU0lPTjsKKwkJZ3AudmFsdWUgPSAmZ3R0X3ZlcnNpb247CisJ CWlvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRVRQQVJBTSwgJmdwKTsKKworCQltZW1zZXQoJmdw LCAwLCBzaXplb2YoZ3ApKTsKKwkJZ3AucGFyYW0gPSBJOTE1X1BBUkFNX01NQVBfVkVSU0lPTjsK KwkJZ3AudmFsdWUgPSAmbW1hcF92ZXJzaW9uOworCQlpb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVf R0VUUEFSQU0sICZncCk7CisKKwkJLyogRG8gd2UgaGF2ZSB0aGUgbmV3IG1tYXBfaW9jdGwgd2l0 aCBET01BSU5fV0M/ICovCisJCWlmIChtbWFwX3ZlcnNpb24gPj0gMSAmJiBndHRfdmVyc2lvbiA+ PSAyKSB7CisJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXAgYXJnOworCisJCQkvKiBEb2VzIHRo aXMgZGV2aWNlIHN1cHBvcnQgd2MtbW1hcHMgPyAqLworCQkJbWVtc2V0KCZhcmcsIDAsIHNpemVv ZihhcmcpKTsKKwkJCWFyZy5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKKwkJCWFyZy5v ZmZzZXQgPSAwOworCQkJYXJnLnNpemUgPSA0MDk2OworCQkJYXJnLmZsYWdzID0gSTkxNV9NTUFQ X1dDOworCQkJaGFzX3djID0gaWd0X2lvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fTU1BUCwg JmFyZykgPT0gMDsKKwkJCWdlbV9jbG9zZShmZCwgYXJnLmhhbmRsZSk7CisJCX0KKwkJZXJybm8g PSAwOworCX0KKworCXJldHVybiBoYXNfd2MgPiAwOworfQorCisvKioKKyAqIF9fZ2VtX21tYXA6 CisgKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCisgKiBAaGFuZGxlOiBnZW0g YnVmZmVyIG9iamVjdCBoYW5kbGUKKyAqIEBvZmZzZXQ6IG9mZnNldCBpbiB0aGUgZ2VtIGJ1ZmZl ciBvZiB0aGUgbW1hcCBhcmVuYQorICogQHNpemU6IHNpemUgb2YgdGhlIG1tYXAgYXJlbmEKKyAq IEBwcm90OiBtZW1vcnkgcHJvdGVjdGlvbiBiaXRzIGFzIHVzZWQgYnkgbW1hcCgpCisgKiBAZmxh Z3M6IGZsYWdzIHVzZWQgdG8gZGV0ZXJtaW5lIGNhY2hpbmcKKyAqCisgKiBUaGlzIGZ1bmN0aW9u cyB3cmFwcyB1cCBwcm9jZWR1cmUgdG8gZXN0YWJsaXNoIGEgbWVtb3J5IG1hcHBpbmcgdGhyb3Vn aAorICogZGlyZWN0IGNwdSBhY2Nlc3MsIGJ5cGFzc2luZyB0aGUgZ3B1ICh2YWxpZCBmb3Igd2Mg PT0gZmFsc2UpLiBGb3Igd2MgPT0gdHJ1ZQorICogaXQgYWxzbyBieXBhc3MgY3B1IGNhY2hlcyBj b21wbGV0ZWx5IGFuZCBHVFQgc3lzdGVtIGFnZW50IChpLmUuIHRoZXJlIGlzIG5vCisgKiBhdXRv bWF0aWMgdGlsaW5nIG9mIHRoZSBtbWFwcGluZyB0aHJvdWdoIHRoZSBmZW5jZSByZWdpc3RlcnMp LgorICoKKyAqIFJldHVybnM6IEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBtZW1vcnkgbWFwcGlu ZywgTlVMTCBvbiBmYWlsdXJlLgorICovCitzdGF0aWMgdm9pZAorKl9fZ2VtX21tYXAoaW50IGZk LCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSwgdW5zaWdu ZWQgaW50IHByb3QsIHVpbnQ2NF90IGZsYWdzKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fbW1h cCBhcmc7CisKKwltZW1zZXQoJmFyZywgMCwgc2l6ZW9mKGFyZykpOworCWFyZy5oYW5kbGUgPSBo YW5kbGU7CisJYXJnLm9mZnNldCA9IG9mZnNldDsKKwlhcmcuc2l6ZSA9IHNpemU7CisJYXJnLmZs YWdzID0gZmxhZ3M7CisKKwlpZiAoaWd0X2lvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fTU1B UCwgJmFyZykpCisJCXJldHVybiBOVUxMOworCisJVkcoVkFMR1JJTkRfTUFLRV9NRU1fREVGSU5F RChmcm9tX3VzZXJfcG9pbnRlcihhcmcuYWRkcl9wdHIpLCBhcmcuc2l6ZSkpOworCisJZXJybm8g PSAwOworCXJldHVybiBmcm9tX3VzZXJfcG9pbnRlcihhcmcuYWRkcl9wdHIpOworfQorCisvKioK KyAqIF9fZ2VtX21tYXBfX3djOgorICogQGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRv cgorICogQGhhbmRsZTogZ2VtIGJ1ZmZlciBvYmplY3QgaGFuZGxlCisgKiBAb2Zmc2V0OiBvZmZz ZXQgaW4gdGhlIGdlbSBidWZmZXIgb2YgdGhlIG1tYXAgYXJlbmEKKyAqIEBzaXplOiBzaXplIG9m IHRoZSBtbWFwIGFyZW5hCisgKiBAcHJvdDogbWVtb3J5IHByb3RlY3Rpb24gYml0cyBhcyB1c2Vk IGJ5IG1tYXAoKQorICoKKyAqIFRoaXMgZnVuY3Rpb25zIHdyYXBzIHVwIHByb2NlZHVyZSB0byBl c3RhYmxpc2ggYSBtZW1vcnkgbWFwcGluZyB0aHJvdWdoCisgKiBkaXJlY3QgY3B1IGFjY2Vzcywg YnlwYXNzaW5nIHRoZSBncHUgYW5kIGNwdSBjYWNoZXMgY29tcGxldGVseSBhbmQgYWxzbworICog YnlwYXNzaW5nIHRoZSBHVFQgc3lzdGVtIGFnZW50IChpLmUuIHRoZXJlIGlzIG5vIGF1dG9tYXRp YyB0aWxpbmcgb2YKKyAqIHRoZSBtbWFwcGluZyB0aHJvdWdoIHRoZSBmZW5jZSByZWdpc3RlcnMp LgorICoKKyAqIFJldHVybnM6IEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBtZW1vcnkgbWFwcGlu ZywgTlVMTCBvbiBmYWlsdXJlLgorICovCit2b2lkICpfX2dlbV9tbWFwX193YyhpbnQgZmQsIHVp bnQzMl90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplLCB1bnNpZ25lZCBw cm90KQoreworCXJldHVybiBfX2dlbV9tbWFwKGZkLCBoYW5kbGUsIG9mZnNldCwgc2l6ZSwgcHJv dCwgSTkxNV9NTUFQX1dDKTsKK30KKworLyoqCisgKiBnZW1fbW1hcF9fd2M6CisgKiBAZmQ6IG9w ZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCisgKiBAaGFuZGxlOiBnZW0gYnVmZmVyIG9iamVj dCBoYW5kbGUKKyAqIEBvZmZzZXQ6IG9mZnNldCBpbiB0aGUgZ2VtIGJ1ZmZlciBvZiB0aGUgbW1h cCBhcmVuYQorICogQHNpemU6IHNpemUgb2YgdGhlIG1tYXAgYXJlbmEKKyAqIEBwcm90OiBtZW1v cnkgcHJvdGVjdGlvbiBiaXRzIGFzIHVzZWQgYnkgbW1hcCgpCisgKgorICogTGlrZSBfX2dlbV9t bWFwX193YygpIGV4Y2VwdCB3ZSBhc3NlcnQgb24gZmFpbHVyZS4KKyAqCisgKiBSZXR1cm5zOiBB IHBvaW50ZXIgdG8gdGhlIGNyZWF0ZWQgbWVtb3J5IG1hcHBpbmcKKyAqLwordm9pZCAqZ2VtX21t YXBfX3djKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90 IHNpemUsIHVuc2lnbmVkIHByb3QpCit7CisJdm9pZCAqcHRyID0gX19nZW1fbW1hcF9fd2MoZmQs IGhhbmRsZSwgb2Zmc2V0LCBzaXplLCBwcm90KTsKKwlpZ3RfYXNzZXJ0KHB0cik7CisJcmV0dXJu IHB0cjsKK30KKworLyoqCisgKiBfX2dlbV9tbWFwX19jcHU6CisgKiBAZmQ6IG9wZW4gaTkxNSBk cm0gZmlsZSBkZXNjcmlwdG9yCisgKiBAaGFuZGxlOiBnZW0gYnVmZmVyIG9iamVjdCBoYW5kbGUK KyAqIEBvZmZzZXQ6IG9mZnNldCBpbiB0aGUgZ2VtIGJ1ZmZlciBvZiB0aGUgbW1hcCBhcmVuYQor ICogQHNpemU6IHNpemUgb2YgdGhlIG1tYXAgYXJlbmEKKyAqIEBwcm90OiBtZW1vcnkgcHJvdGVj dGlvbiBiaXRzIGFzIHVzZWQgYnkgbW1hcCgpCisgKgorICogVGhpcyBmdW5jdGlvbnMgd3JhcHMg dXAgcHJvY2VkdXJlIHRvIGVzdGFibGlzaCBhIG1lbW9yeSBtYXBwaW5nIHRocm91Z2gKKyAqIGRp cmVjdCBjcHUgYWNjZXNzLCBieXBhc3NpbmcgdGhlIGdwdSBjb21wbGV0ZWx5LgorICoKKyAqIFJl dHVybnM6IEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBtZW1vcnkgbWFwcGluZywgTlVMTCBvbiBm YWlsdXJlLgorICovCit2b2lkICpfX2dlbV9tbWFwX19jcHUoaW50IGZkLCB1aW50MzJfdCBoYW5k bGUsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCkKK3sKKwly ZXR1cm4gX19nZW1fbW1hcChmZCwgaGFuZGxlLCBvZmZzZXQsIHNpemUsIHByb3QsIDApOworfQor CisvKioKKyAqIGdlbV9tbWFwX19jcHU6CisgKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNj cmlwdG9yCisgKiBAaGFuZGxlOiBnZW0gYnVmZmVyIG9iamVjdCBoYW5kbGUKKyAqIEBvZmZzZXQ6 IG9mZnNldCBpbiB0aGUgZ2VtIGJ1ZmZlciBvZiB0aGUgbW1hcCBhcmVuYQorICogQHNpemU6IHNp emUgb2YgdGhlIG1tYXAgYXJlbmEKKyAqIEBwcm90OiBtZW1vcnkgcHJvdGVjdGlvbiBiaXRzIGFz IHVzZWQgYnkgbW1hcCgpCisgKgorICogTGlrZSBfX2dlbV9tbWFwX19jcHUoKSBleGNlcHQgd2Ug YXNzZXJ0IG9uIGZhaWx1cmUuCisgKgorICogUmV0dXJuczogQSBwb2ludGVyIHRvIHRoZSBjcmVh dGVkIG1lbW9yeSBtYXBwaW5nCisgKi8KK3ZvaWQgKmdlbV9tbWFwX19jcHUoaW50IGZkLCB1aW50 MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJv dCkKK3sKKwl2b2lkICpwdHIgPSBfX2dlbV9tbWFwX19jcHUoZmQsIGhhbmRsZSwgb2Zmc2V0LCBz aXplLCBwcm90KTsKKwlpZ3RfYXNzZXJ0KHB0cik7CisJcmV0dXJuIHB0cjsKK30KZGlmZiAtLWdp dCBhL2xpYi9pOTE1L2dlbV9tbWFuLmggYi9saWIvaTkxNS9nZW1fbW1hbi5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5mNzI0MmVkNwotLS0gL2Rldi9udWxsCisrKyBiL2xp Yi9pOTE1L2dlbV9tbWFuLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAy MDA3LCAyMDExLCAyMDEzLCAyMDE0LCAyMDE5IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisg KiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp YnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisg KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAo aW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFs bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAq CisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQg U0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaWZuZGVmIEdF TV9NTUFOX0gKKyNkZWZpbmUgR0VNX01NQU5fSAorCit2b2lkICpnZW1fbW1hcF9fZ3R0KGludCBm ZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBzaXplLCB1bnNpZ25lZCBwcm90KTsKK3ZvaWQg KmdlbV9tbWFwX19jcHUoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwg dWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCk7CisKK2Jvb2wgZ2VtX21tYXBfX2hhc193Yyhp bnQgZmQpOwordm9pZCAqZ2VtX21tYXBfX3djKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50 NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUsIHVuc2lnbmVkIHByb3QpOworCisjaWZuZGVmIEk5 MTVfR0VNX0RPTUFJTl9XQworI2RlZmluZSBJOTE1X0dFTV9ET01BSU5fV0MgMHg4MAorI2VuZGlm CisKK3ZvaWQgKl9fZ2VtX21tYXBfX2d0dChpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0 X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCk7Cit2b2lkICpfX2dlbV9tbWFwX19jcHUoaW50IGZkLCB1 aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQg cHJvdCk7Cit2b2lkICpfX2dlbV9tbWFwX193YyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWlu dDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplLCB1bnNpZ25lZCBwcm90KTsKKworaW50IGdlbV9t dW5tYXAodm9pZCAqcHRyLCB1aW50NjRfdCBzaXplKTsKKworLyoqCisgKiBnZW1fcmVxdWlyZV9t bWFwX3djOgorICogQGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgorICoKKyAqIEZl YXR1cmUgdGVzdCBtYWNybyB0byBxdWVyeSB3aGV0aGVyIGRpcmVjdCAoaS5lLiBjcHUgYWNjZXNz IHBhdGgsIGJ5cGFzc2luZworICogdGhlIGd0dCkgd3JpdGUtY29tYmluZSBtZW1vcnkgbWFwcGlu Z3MgYXJlIGF2YWlsYWJsZS4gQXV0b21hdGljYWxseSBza2lwcworICogdGhyb3VnaCBpZ3RfcmVx dWlyZSgpIGlmIG5vdC4KKyAqLworI2RlZmluZSBnZW1fcmVxdWlyZV9tbWFwX3djKGZkKSBpZ3Rf cmVxdWlyZShnZW1fbW1hcF9faGFzX3djKGZkKSkKKworI2VuZGlmIC8qIEdFTV9NTUFOX0ggKi8K KwpkaWZmIC0tZ2l0IGEvbGliL2lndC5oIGIvbGliL2lndC5oCmluZGV4IGViZjkyMzQ5Li42NjU0 YTY1OSAxMDA2NDQKLS0tIGEvbGliL2lndC5oCisrKyBiL2xpYi9pZ3QuaApAQCAtNTIsNSArNTIs NiBAQAogI2luY2x1ZGUgIm1lZGlhX2ZpbGwuaCIKICNpbmNsdWRlICJtZWRpYV9zcGluLmgiCiAj aW5jbHVkZSAicmVuZGVyY29weS5oIgorI2luY2x1ZGUgImk5MTUvZ2VtX21tYW4uaCIKIAogI2Vu ZGlmIC8qIElHVF9IICovCmRpZmYgLS1naXQgYS9saWIvaWd0X2RyYXcuYyBiL2xpYi9pZ3RfZHJh dy5jCmluZGV4IDQ5OTBkNGEwLi5iZWE4NmM2MSAxMDA2NDQKLS0tIGEvbGliL2lndF9kcmF3LmMK KysrIGIvbGliL2lndF9kcmF3LmMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJpZ3RfZmIu aCIKICNpbmNsdWRlICJpb2N0bF93cmFwcGVycy5oIgogI2luY2x1ZGUgImk4MzBfcmVnLmgiCisj aW5jbHVkZSAiaTkxNS9nZW1fbW1hbi5oIgogCiAjaWZuZGVmIFBBR0VfQUxJR04KICNpZm5kZWYg UEFHRV9TSVpFCmRpZmYgLS1naXQgYS9saWIvaWd0X2R1bW15bG9hZC5jIGIvbGliL2lndF9kdW1t eWxvYWQuYwppbmRleCA5ODI5MDZmMi4uNDdmNmI5MmIgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZHVt bXlsb2FkLmMKKysrIGIvbGliL2lndF9kdW1teWxvYWQuYwpAQCAtMzksNiArMzksNyBAQAogI2lu Y2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCiAjaW5jbHVkZSAic3dfc3luYy5oIgogI2luY2x1ZGUg ImlndF92Z2VtLmgiCisjaW5jbHVkZSAiaTkxNS9nZW1fbW1hbi5oIgogCiAvKioKICAqIFNFQ1RJ T046aWd0X2R1bW15bG9hZApkaWZmIC0tZ2l0IGEvbGliL2lndF9mYi5jIGIvbGliL2lndF9mYi5j CmluZGV4IDQ2MmFmZWMyLi4xMGEyMTA0NCAxMDA2NDQKLS0tIGEvbGliL2lndF9mYi5jCisrKyBi L2xpYi9pZ3RfZmIuYwpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgImlvY3RsX3dyYXBwZXJz LmgiCiAjaW5jbHVkZSAiaW50ZWxfYmF0Y2hidWZmZXIuaCIKICNpbmNsdWRlICJpbnRlbF9jaGlw c2V0LmgiCisjaW5jbHVkZSAiaTkxNS9nZW1fbW1hbi5oIgogCiAvKioKICAqIFNFQ1RJT046aWd0 X2ZiCmRpZmYgLS1naXQgYS9saWIvaW9jdGxfd3JhcHBlcnMuYyBiL2xpYi9pb2N0bF93cmFwcGVy cy5jCmluZGV4IDQwNGMyZmJmLi4zOTkyMGY4NyAxMDA2NDQKLS0tIGEvbGliL2lvY3RsX3dyYXBw ZXJzLmMKKysrIGIvbGliL2lvY3RsX3dyYXBwZXJzLmMKQEAgLTY0MSwyMTkgKzY0MSw2IEBAIHZv aWQgZ2VtX2V4ZWNidWZfd3IoaW50IGZkLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIy ICpleGVjYnVmKQogCWlndF9hc3NlcnRfZXEoX19nZW1fZXhlY2J1Zl93cihmZCwgZXhlY2J1Ziks IDApOwogfQogCi0vKioKLSAqIF9fZ2VtX21tYXBfX2d0dDoKLSAqIEBmZDogb3BlbiBpOTE1IGRy bSBmaWxlIGRlc2NyaXB0b3IKLSAqIEBoYW5kbGU6IGdlbSBidWZmZXIgb2JqZWN0IGhhbmRsZQot ICogQHNpemU6IHNpemUgb2YgdGhlIGdlbSBidWZmZXIKLSAqIEBwcm90OiBtZW1vcnkgcHJvdGVj dGlvbiBiaXRzIGFzIHVzZWQgYnkgbW1hcCgpCi0gKgotICogVGhpcyBmdW5jdGlvbnMgd3JhcHMg dXAgcHJvY2VkdXJlIHRvIGVzdGFibGlzaCBhIG1lbW9yeSBtYXBwaW5nIHRocm91Z2ggdGhlCi0g KiBHVFQuCi0gKgotICogUmV0dXJuczogQSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIG1lbW9yeSBt YXBwaW5nLCBOVUxMIG9uIGZhaWx1cmUuCi0gKi8KLXZvaWQgKl9fZ2VtX21tYXBfX2d0dChpbnQg ZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCkKLXsKLQlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXBfZ3R0IG1tYXBfYXJnOwotCXZvaWQgKnB0cjsKLQotCW1l bXNldCgmbW1hcF9hcmcsIDAsIHNpemVvZihtbWFwX2FyZykpOwotCW1tYXBfYXJnLmhhbmRsZSA9 IGhhbmRsZTsKLQlpZiAoaWd0X2lvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fTU1BUF9HVFQs ICZtbWFwX2FyZykpCi0JCXJldHVybiBOVUxMOwotCi0JcHRyID0gbW1hcDY0KDAsIHNpemUsIHBy b3QsIE1BUF9TSEFSRUQsIGZkLCBtbWFwX2FyZy5vZmZzZXQpOwotCWlmIChwdHIgPT0gTUFQX0ZB SUxFRCkKLQkJcHRyID0gTlVMTDsKLQllbHNlCi0JCWVycm5vID0gMDsKLQotCVZHKFZBTEdSSU5E X01BS0VfTUVNX0RFRklORUQocHRyLCBzaXplKSk7Ci0KLQlyZXR1cm4gcHRyOwotfQotCi0vKioK LSAqIGdlbV9tbWFwX19ndHQ6Ci0gKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9y Ci0gKiBAaGFuZGxlOiBnZW0gYnVmZmVyIG9iamVjdCBoYW5kbGUKLSAqIEBzaXplOiBzaXplIG9m IHRoZSBnZW0gYnVmZmVyCi0gKiBAcHJvdDogbWVtb3J5IHByb3RlY3Rpb24gYml0cyBhcyB1c2Vk IGJ5IG1tYXAoKQotICoKLSAqIExpa2UgX19nZW1fbW1hcF9fZ3R0KCkgZXhjZXB0IHdlIGFzc2Vy dCBvbiBmYWlsdXJlLgotICoKLSAqIFJldHVybnM6IEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBt ZW1vcnkgbWFwcGluZwotICovCi12b2lkICpnZW1fbW1hcF9fZ3R0KGludCBmZCwgdWludDMyX3Qg aGFuZGxlLCB1aW50NjRfdCBzaXplLCB1bnNpZ25lZCBwcm90KQotewotCXZvaWQgKnB0ciA9IF9f Z2VtX21tYXBfX2d0dChmZCwgaGFuZGxlLCBzaXplLCBwcm90KTsKLQlpZ3RfYXNzZXJ0KHB0cik7 Ci0JcmV0dXJuIHB0cjsKLX0KLQotaW50IGdlbV9tdW5tYXAodm9pZCAqcHRyLCB1aW50NjRfdCBz aXplKQotewotCWludCByZXQgPSBtdW5tYXAocHRyLCBzaXplKTsKLQotCWlmIChyZXQgPT0gMCkK LQkJVkcoVkFMR1JJTkRfTUFLRV9NRU1fTk9BQ0NFU1MocHRyLCBzaXplKSk7Ci0KLQlyZXR1cm4g cmV0OwotfQotCi1ib29sIGdlbV9tbWFwX19oYXNfd2MoaW50IGZkKQotewotCXN0YXRpYyBpbnQg aGFzX3djID0gLTE7Ci0KLQlpZiAoaGFzX3djID09IC0xKSB7Ci0JCXN0cnVjdCBkcm1faTkxNV9n ZXRwYXJhbSBncDsKLQkJaW50IG1tYXBfdmVyc2lvbiA9IC0xOwotCQlpbnQgZ3R0X3ZlcnNpb24g PSAtMTsKLQotCQloYXNfd2MgPSAwOwotCi0JCW1lbXNldCgmZ3AsIDAsIHNpemVvZihncCkpOwot CQlncC5wYXJhbSA9IEk5MTVfUEFSQU1fTU1BUF9HVFRfVkVSU0lPTjsKLQkJZ3AudmFsdWUgPSAm Z3R0X3ZlcnNpb247Ci0JCWlvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRVRQQVJBTSwgJmdwKTsK LQotCQltZW1zZXQoJmdwLCAwLCBzaXplb2YoZ3ApKTsKLQkJZ3AucGFyYW0gPSBJOTE1X1BBUkFN X01NQVBfVkVSU0lPTjsKLQkJZ3AudmFsdWUgPSAmbW1hcF92ZXJzaW9uOwotCQlpb2N0bChmZCwg RFJNX0lPQ1RMX0k5MTVfR0VUUEFSQU0sICZncCk7Ci0KLQkJLyogRG8gd2UgaGF2ZSB0aGUgbmV3 IG1tYXBfaW9jdGwgd2l0aCBET01BSU5fV0M/ICovCi0JCWlmIChtbWFwX3ZlcnNpb24gPj0gMSAm JiBndHRfdmVyc2lvbiA+PSAyKSB7Ci0JCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXAgYXJnOwot Ci0JCQkvKiBEb2VzIHRoaXMgZGV2aWNlIHN1cHBvcnQgd2MtbW1hcHMgPyAqLwotCQkJbWVtc2V0 KCZhcmcsIDAsIHNpemVvZihhcmcpKTsKLQkJCWFyZy5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0 MDk2KTsKLQkJCWFyZy5vZmZzZXQgPSAwOwotCQkJYXJnLnNpemUgPSA0MDk2OwotCQkJYXJnLmZs YWdzID0gSTkxNV9NTUFQX1dDOwotCQkJaGFzX3djID0gaWd0X2lvY3RsKGZkLCBEUk1fSU9DVExf STkxNV9HRU1fTU1BUCwgJmFyZykgPT0gMDsKLQkJCWdlbV9jbG9zZShmZCwgYXJnLmhhbmRsZSk7 Ci0JCX0KLQkJZXJybm8gPSAwOwotCX0KLQotCXJldHVybiBoYXNfd2MgPiAwOwotfQotCi0vKioK LSAqIF9fZ2VtX21tYXA6Ci0gKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCi0g KiBAaGFuZGxlOiBnZW0gYnVmZmVyIG9iamVjdCBoYW5kbGUKLSAqIEBvZmZzZXQ6IG9mZnNldCBp biB0aGUgZ2VtIGJ1ZmZlciBvZiB0aGUgbW1hcCBhcmVuYQotICogQHNpemU6IHNpemUgb2YgdGhl IG1tYXAgYXJlbmEKLSAqIEBwcm90OiBtZW1vcnkgcHJvdGVjdGlvbiBiaXRzIGFzIHVzZWQgYnkg bW1hcCgpCi0gKiBAZmxhZ3M6IGZsYWdzIHVzZWQgdG8gZGV0ZXJtaW5lIGNhY2hpbmcKLSAqCi0g KiBUaGlzIGZ1bmN0aW9ucyB3cmFwcyB1cCBwcm9jZWR1cmUgdG8gZXN0YWJsaXNoIGEgbWVtb3J5 IG1hcHBpbmcgdGhyb3VnaAotICogZGlyZWN0IGNwdSBhY2Nlc3MsIGJ5cGFzc2luZyB0aGUgZ3B1 ICh2YWxpZCBmb3Igd2MgPT0gZmFsc2UpLiBGb3Igd2MgPT0gdHJ1ZQotICogaXQgYWxzbyBieXBh c3MgY3B1IGNhY2hlcyBjb21wbGV0ZWx5IGFuZCBHVFQgc3lzdGVtIGFnZW50IChpLmUuIHRoZXJl IGlzIG5vCi0gKiBhdXRvbWF0aWMgdGlsaW5nIG9mIHRoZSBtbWFwcGluZyB0aHJvdWdoIHRoZSBm ZW5jZSByZWdpc3RlcnMpLgotICoKLSAqIFJldHVybnM6IEEgcG9pbnRlciB0byB0aGUgY3JlYXRl ZCBtZW1vcnkgbWFwcGluZywgTlVMTCBvbiBmYWlsdXJlLgotICovCi1zdGF0aWMgdm9pZAotKl9f Z2VtX21tYXAoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0 X3Qgc2l6ZSwgdW5zaWduZWQgaW50IHByb3QsIHVpbnQ2NF90IGZsYWdzKQotewotCXN0cnVjdCBk cm1faTkxNV9nZW1fbW1hcCBhcmc7Ci0KLQltZW1zZXQoJmFyZywgMCwgc2l6ZW9mKGFyZykpOwot CWFyZy5oYW5kbGUgPSBoYW5kbGU7Ci0JYXJnLm9mZnNldCA9IG9mZnNldDsKLQlhcmcuc2l6ZSA9 IHNpemU7Ci0JYXJnLmZsYWdzID0gZmxhZ3M7Ci0KLQlpZiAoaWd0X2lvY3RsKGZkLCBEUk1fSU9D VExfSTkxNV9HRU1fTU1BUCwgJmFyZykpCi0JCXJldHVybiBOVUxMOwotCi0JVkcoVkFMR1JJTkRf TUFLRV9NRU1fREVGSU5FRChmcm9tX3VzZXJfcG9pbnRlcihhcmcuYWRkcl9wdHIpLCBhcmcuc2l6 ZSkpOwotCi0JZXJybm8gPSAwOwotCXJldHVybiBmcm9tX3VzZXJfcG9pbnRlcihhcmcuYWRkcl9w dHIpOwotfQotCi0vKioKLSAqIF9fZ2VtX21tYXBfX3djOgotICogQGZkOiBvcGVuIGk5MTUgZHJt IGZpbGUgZGVzY3JpcHRvcgotICogQGhhbmRsZTogZ2VtIGJ1ZmZlciBvYmplY3QgaGFuZGxlCi0g KiBAb2Zmc2V0OiBvZmZzZXQgaW4gdGhlIGdlbSBidWZmZXIgb2YgdGhlIG1tYXAgYXJlbmEKLSAq IEBzaXplOiBzaXplIG9mIHRoZSBtbWFwIGFyZW5hCi0gKiBAcHJvdDogbWVtb3J5IHByb3RlY3Rp b24gYml0cyBhcyB1c2VkIGJ5IG1tYXAoKQotICoKLSAqIFRoaXMgZnVuY3Rpb25zIHdyYXBzIHVw IHByb2NlZHVyZSB0byBlc3RhYmxpc2ggYSBtZW1vcnkgbWFwcGluZyB0aHJvdWdoCi0gKiBkaXJl Y3QgY3B1IGFjY2VzcywgYnlwYXNzaW5nIHRoZSBncHUgYW5kIGNwdSBjYWNoZXMgY29tcGxldGVs eSBhbmQgYWxzbwotICogYnlwYXNzaW5nIHRoZSBHVFQgc3lzdGVtIGFnZW50IChpLmUuIHRoZXJl IGlzIG5vIGF1dG9tYXRpYyB0aWxpbmcgb2YKLSAqIHRoZSBtbWFwcGluZyB0aHJvdWdoIHRoZSBm ZW5jZSByZWdpc3RlcnMpLgotICoKLSAqIFJldHVybnM6IEEgcG9pbnRlciB0byB0aGUgY3JlYXRl ZCBtZW1vcnkgbWFwcGluZywgTlVMTCBvbiBmYWlsdXJlLgotICovCi12b2lkICpfX2dlbV9tbWFw X193YyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBz aXplLCB1bnNpZ25lZCBwcm90KQotewotCXJldHVybiBfX2dlbV9tbWFwKGZkLCBoYW5kbGUsIG9m ZnNldCwgc2l6ZSwgcHJvdCwgSTkxNV9NTUFQX1dDKTsKLX0KLQotLyoqCi0gKiBnZW1fbW1hcF9f d2M6Ci0gKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCi0gKiBAaGFuZGxlOiBn ZW0gYnVmZmVyIG9iamVjdCBoYW5kbGUKLSAqIEBvZmZzZXQ6IG9mZnNldCBpbiB0aGUgZ2VtIGJ1 ZmZlciBvZiB0aGUgbW1hcCBhcmVuYQotICogQHNpemU6IHNpemUgb2YgdGhlIG1tYXAgYXJlbmEK LSAqIEBwcm90OiBtZW1vcnkgcHJvdGVjdGlvbiBiaXRzIGFzIHVzZWQgYnkgbW1hcCgpCi0gKgot ICogTGlrZSBfX2dlbV9tbWFwX193YygpIGV4Y2VwdCB3ZSBhc3NlcnQgb24gZmFpbHVyZS4KLSAq Ci0gKiBSZXR1cm5zOiBBIHBvaW50ZXIgdG8gdGhlIGNyZWF0ZWQgbWVtb3J5IG1hcHBpbmcKLSAq Lwotdm9pZCAqZ2VtX21tYXBfX3djKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBv ZmZzZXQsIHVpbnQ2NF90IHNpemUsIHVuc2lnbmVkIHByb3QpCi17Ci0Jdm9pZCAqcHRyID0gX19n ZW1fbW1hcF9fd2MoZmQsIGhhbmRsZSwgb2Zmc2V0LCBzaXplLCBwcm90KTsKLQlpZ3RfYXNzZXJ0 KHB0cik7Ci0JcmV0dXJuIHB0cjsKLX0KLQotLyoqCi0gKiBfX2dlbV9tbWFwX19jcHU6Ci0gKiBA ZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCi0gKiBAaGFuZGxlOiBnZW0gYnVmZmVy IG9iamVjdCBoYW5kbGUKLSAqIEBvZmZzZXQ6IG9mZnNldCBpbiB0aGUgZ2VtIGJ1ZmZlciBvZiB0 aGUgbW1hcCBhcmVuYQotICogQHNpemU6IHNpemUgb2YgdGhlIG1tYXAgYXJlbmEKLSAqIEBwcm90 OiBtZW1vcnkgcHJvdGVjdGlvbiBiaXRzIGFzIHVzZWQgYnkgbW1hcCgpCi0gKgotICogVGhpcyBm dW5jdGlvbnMgd3JhcHMgdXAgcHJvY2VkdXJlIHRvIGVzdGFibGlzaCBhIG1lbW9yeSBtYXBwaW5n IHRocm91Z2gKLSAqIGRpcmVjdCBjcHUgYWNjZXNzLCBieXBhc3NpbmcgdGhlIGdwdSBjb21wbGV0 ZWx5LgotICoKLSAqIFJldHVybnM6IEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBtZW1vcnkgbWFw cGluZywgTlVMTCBvbiBmYWlsdXJlLgotICovCi12b2lkICpfX2dlbV9tbWFwX19jcHUoaW50IGZk LCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSwgdW5zaWdu ZWQgcHJvdCkKLXsKLQlyZXR1cm4gX19nZW1fbW1hcChmZCwgaGFuZGxlLCBvZmZzZXQsIHNpemUs IHByb3QsIDApOwotfQotCi0vKioKLSAqIGdlbV9tbWFwX19jcHU6Ci0gKiBAZmQ6IG9wZW4gaTkx NSBkcm0gZmlsZSBkZXNjcmlwdG9yCi0gKiBAaGFuZGxlOiBnZW0gYnVmZmVyIG9iamVjdCBoYW5k bGUKLSAqIEBvZmZzZXQ6IG9mZnNldCBpbiB0aGUgZ2VtIGJ1ZmZlciBvZiB0aGUgbW1hcCBhcmVu YQotICogQHNpemU6IHNpemUgb2YgdGhlIG1tYXAgYXJlbmEKLSAqIEBwcm90OiBtZW1vcnkgcHJv dGVjdGlvbiBiaXRzIGFzIHVzZWQgYnkgbW1hcCgpCi0gKgotICogTGlrZSBfX2dlbV9tbWFwX19j cHUoKSBleGNlcHQgd2UgYXNzZXJ0IG9uIGZhaWx1cmUuCi0gKgotICogUmV0dXJuczogQSBwb2lu dGVyIHRvIHRoZSBjcmVhdGVkIG1lbW9yeSBtYXBwaW5nCi0gKi8KLXZvaWQgKmdlbV9tbWFwX19j cHUoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6 ZSwgdW5zaWduZWQgcHJvdCkKLXsKLQl2b2lkICpwdHIgPSBfX2dlbV9tbWFwX19jcHUoZmQsIGhh bmRsZSwgb2Zmc2V0LCBzaXplLCBwcm90KTsKLQlpZ3RfYXNzZXJ0KHB0cik7Ci0JcmV0dXJuIHB0 cjsKLX0KLQogLyoqCiAgKiBnZW1fbWFkdmlzZToKICAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxl IGRlc2NyaXB0b3IKZGlmZiAtLWdpdCBhL2xpYi9pb2N0bF93cmFwcGVycy5oIGIvbGliL2lvY3Rs X3dyYXBwZXJzLmgKaW5kZXggYjIyYjM2YjAuLmYwYmUyNjA4IDEwMDY0NAotLS0gYS9saWIvaW9j dGxfd3JhcHBlcnMuaAorKysgYi9saWIvaW9jdGxfd3JhcHBlcnMuaApAQCAtODQsMjIgKzg0LDEw IEBAIGludCBfX2dlbV9leGVjYnVmX3dyKGludCBmZCwgc3RydWN0IGRybV9pOTE1X2dlbV9leGVj YnVmZmVyMiAqZXhlY2J1Zik7CiB2b2lkIGdlbV9leGVjYnVmKGludCBmZCwgc3RydWN0IGRybV9p OTE1X2dlbV9leGVjYnVmZmVyMiAqZXhlY2J1Zik7CiBpbnQgX19nZW1fZXhlY2J1ZihpbnQgZmQs IHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgKmV4ZWNidWYpOwogCi12b2lkICpnZW1f bW1hcF9fZ3R0KGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBzaXplLCB1bnNpZ25l ZCBwcm90KTsKLXZvaWQgKmdlbV9tbWFwX19jcHUoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVp bnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCk7Ci0KLWJvb2wgZ2Vt X21tYXBfX2hhc193YyhpbnQgZmQpOwotdm9pZCAqZ2VtX21tYXBfX3djKGludCBmZCwgdWludDMy X3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUsIHVuc2lnbmVkIHByb3Qp OwotCiAjaWZuZGVmIEk5MTVfR0VNX0RPTUFJTl9XQwogI2RlZmluZSBJOTE1X0dFTV9ET01BSU5f V0MgMHg4MAogI2VuZGlmCiAKLXZvaWQgKl9fZ2VtX21tYXBfX2d0dChpbnQgZmQsIHVpbnQzMl90 IGhhbmRsZSwgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCk7Ci12b2lkICpfX2dlbV9tbWFw X19jcHUoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qg c2l6ZSwgdW5zaWduZWQgcHJvdCk7Ci12b2lkICpfX2dlbV9tbWFwX193YyhpbnQgZmQsIHVpbnQz Ml90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplLCB1bnNpZ25lZCBwcm90 KTsKLQotaW50IGdlbV9tdW5tYXAodm9pZCAqcHRyLCB1aW50NjRfdCBzaXplKTsKLQogLyoqCiAg KiBnZW1fcmVxdWlyZV9zdG9sZW5fc3VwcG9ydDoKICAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxl IGRlc2NyaXB0b3IKQEAgLTExMSwxNiArOTksNiBAQCBpbnQgZ2VtX211bm1hcCh2b2lkICpwdHIs IHVpbnQ2NF90IHNpemUpOwogCQkJaWd0X3JlcXVpcmUoZ2VtX2NyZWF0ZV9faGFzX3N0b2xlbl9z dXBwb3J0KGZkKSAmJiBcCiAJCQkJICAgIChnZW1fdG90YWxfc3RvbGVuX3NpemUoZmQpID4gMCkp CiAKLS8qKgotICogZ2VtX3JlcXVpcmVfbW1hcF93YzoKLSAqIEBmZDogb3BlbiBpOTE1IGRybSBm aWxlIGRlc2NyaXB0b3IKLSAqCi0gKiBGZWF0dXJlIHRlc3QgbWFjcm8gdG8gcXVlcnkgd2hldGhl ciBkaXJlY3QgKGkuZS4gY3B1IGFjY2VzcyBwYXRoLCBieXBhc3NpbmcKLSAqIHRoZSBndHQpIHdy aXRlLWNvbWJpbmUgbWVtb3J5IG1hcHBpbmdzIGFyZSBhdmFpbGFibGUuIEF1dG9tYXRpY2FsbHkg c2tpcHMKLSAqIHRocm91Z2ggaWd0X3JlcXVpcmUoKSBpZiBub3QuCi0gKi8KLSNkZWZpbmUgZ2Vt X3JlcXVpcmVfbW1hcF93YyhmZCkgaWd0X3JlcXVpcmUoZ2VtX21tYXBfX2hhc193YyhmZCkpCi0K IGludCBnZW1fbWFkdmlzZShpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgaW50IHN0YXRlKTsKIAog I2RlZmluZSBMT0NBTF9JOTE1X0dFTV9VU0VSUFRSICAgICAgIDB4MzMKZGlmZiAtLWdpdCBhL2xp Yi9tZXNvbi5idWlsZCBiL2xpYi9tZXNvbi5idWlsZAppbmRleCBkZDM2ZjgxOC4uMGViNTU4NWQg MTAwNjQ0Ci0tLSBhL2xpYi9tZXNvbi5idWlsZAorKysgYi9saWIvbWVzb24uYnVpbGQKQEAgLTQs NiArNCw3IEBAIGxpYl9zb3VyY2VzID0gWwogCSdpOTE1L2dlbV9zY2hlZHVsZXIuYycsCiAJJ2k5 MTUvZ2VtX3N1Ym1pc3Npb24uYycsCiAJJ2k5MTUvZ2VtX3JpbmcuYycsCisJJ2k5MTUvZ2VtX21t YW4uYycsCiAJJ2lndF9jb2xvcl9lbmNvZGluZy5jJywKIAknaWd0X2RlYnVnZnMuYycsCiAJJ2ln dF9kZXZpY2UuYycsCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9zdG9sZW4uYyBiL3Rlc3Rz L2k5MTUvZ2VtX3N0b2xlbi5jCmluZGV4IDFkNDg5OTc2Li5lMmM1MjcyMyAxMDA2NDQKLS0tIGEv dGVzdHMvaTkxNS9nZW1fc3RvbGVuLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fc3RvbGVuLmMKQEAg LTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJkcm10ZXN0LmgiCiAjaW5jbHVkZSAiZHJtLmgiCiAj aW5jbHVkZSAiaTkxNV9kcm0uaCIKKyNpbmNsdWRlICJpOTE1L2dlbV9tbWFuLmgiCiAKIElHVF9U RVNUX0RFU0NSSVBUSU9OKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGV4ZXRlbmRlZCBnZW1fY3Jl YXRlIGlvY3RsLCIKIAkJICAgICAiIHRoYXQgaW5jbHVkZXMgYWxsb2NhdGlvbiBvZiBvYmogZnJv bSBzdG9sZW4gcmVnaW9uIik7CmRpZmYgLS1naXQgYS90ZXN0cy9wcmltZV9tbWFwLmMgYi90ZXN0 cy9wcmltZV9tbWFwLmMKaW5kZXggNjdhNmEyMzIuLmZjOTg1Nzg0IDEwMDY0NAotLS0gYS90ZXN0 cy9wcmltZV9tbWFwLmMKKysrIGIvdGVzdHMvcHJpbWVfbW1hcC5jCkBAIC00NSw2ICs0NSw3IEBA CiAjaW5jbHVkZSAiZHJtdGVzdC5oIgogI2luY2x1ZGUgImlndF9kZWJ1Z2ZzLmgiCiAjaW5jbHVk ZSAiaW9jdGxfd3JhcHBlcnMuaCIKKyNpbmNsdWRlICJpOTE1L2dlbV9tbWFuLmgiCiAKICNkZWZp bmUgQk9fU0laRSAoMTYqMTAyNCkKIAotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2lndC1kZXY=