From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id D222B6E2B1 for ; Tue, 19 Nov 2019 16:02:42 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Tue, 19 Nov 2019 17:02:20 +0100 Message-Id: <20191119160223.25283-2-zbigniew.kempczynski@intel.com> In-Reply-To: <20191119160223.25283-1-zbigniew.kempczynski@intel.com> References: <20191119160223.25283-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v2 1/4] lib/i915/gem_mman: add mmap_offset support 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 List-ID: RnJvbTogTHVrYXN6IEthbGFtYXJ6IDxsdWthc3oua2FsYW1hcnpAaW50ZWwuY29tPgoKV2l0aCBp bnRyb2R1Y3Rpb24gb2YgTE1FTSBjb25jZXB0IG5ldyBJT0NUTCBjYWxsIHdlcmUgaW1wbGVtZW50 ZWQKLSBnZW1fbW1hcF9vZmZzZXQuIFRoaXMgcGF0Y2ggYWRkIHN1cHBvcnQgaW4gSUdUIGZvciBp dC4KClNpZ25lZC1vZmYtYnk6IEx1a2FzeiBLYWxhbWFyeiA8bHVrYXN6LmthbGFtYXJ6QGludGVs LmNvbT4KU2lnbmVkLW9mZi1ieTogQW50b25pbyBBcmdlbnppYW5vIDxhbnRvbmlvLmFyZ2Vuemlh bm9AaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBaYmlnbmlldyBLZW1wY3p5xYRza2kgPHpiaWdu aWV3LmtlbXBjenluc2tpQGludGVsLmNvbT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMt d2lsc29uLmNvLnVrPgpDYzogSm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXgu aW50ZWwuY29tPgotLS0KIGxpYi9pOTE1L2dlbV9tbWFuLmMgfCAxNzggKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIGxpYi9pOTE1L2dlbV9tbWFuLmggfCAgMzkg KysrKysrKysrLQogMiBmaWxlcyBjaGFuZ2VkLCAxNzcgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvbGliL2k5MTUvZ2VtX21tYW4uYyBiL2xpYi9pOTE1L2dlbV9t bWFuLmMKaW5kZXggNjI1NjYyN2IuLjkyMGY5Y2E1IDEwMDY0NAotLS0gYS9saWIvaTkxNS9nZW1f bW1hbi5jCisrKyBiL2xpYi9pOTE1L2dlbV9tbWFuLmMKQEAgLTQwLDYgKzQwLDQ0IEBACiAjZGVm aW5lIFZHKHgpIGRvIHt9IHdoaWxlICgwKQogI2VuZGlmCiAKKyNkZWZpbmUgTE9DQUxfSTkxNV9Q QVJBTV9NTUFQX09GRlNFVF9WRVJTSU9OIDU0CisKK3N0YXRpYyBib29sIGdlbV9oYXNfbW1hcF9v ZmZzZXQoaW50IGZkKQoreworCWludCBoYXNfbW1hcF9vZmZzZXQgPSAwOworCXN0cnVjdCBkcm1f aTkxNV9nZXRwYXJhbSBncDsKKworCW1lbXNldCgmZ3AsIDAsIHNpemVvZihncCkpOworCWdwLnBh cmFtID0gTE9DQUxfSTkxNV9QQVJBTV9NTUFQX09GRlNFVF9WRVJTSU9OOworCWdwLnZhbHVlID0g Jmhhc19tbWFwX29mZnNldDsKKwlpb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VUUEFSQU0sICZn cCk7CisKKwlyZXR1cm4gaGFzX21tYXBfb2Zmc2V0ID4gMDsKK30KKwordm9pZCBnZW1fcmVxdWly ZV9tbWFwX29mZnNldChpbnQgaTkxNSkKK3sKKwlpZ3RfcmVxdWlyZShnZW1faGFzX21tYXBfb2Zm c2V0KGk5MTUpKTsKK30KKworc3RhdGljIGludCBnZW1fbW1hcF9ndHRfdmVyc2lvbihpbnQgZmQp Cit7CisJc3RydWN0IGRybV9pOTE1X2dldHBhcmFtIGdwOworCWludCBndHRfdmVyc2lvbiA9IC0x OworCisJbWVtc2V0KCZncCwgMCwgc2l6ZW9mKGdwKSk7CisJZ3AucGFyYW0gPSBJOTE1X1BBUkFN X01NQVBfR1RUX1ZFUlNJT047CisJZ3AudmFsdWUgPSAmZ3R0X3ZlcnNpb247CisJaW9jdGwoZmQs IERSTV9JT0NUTF9JOTE1X0dFVFBBUkFNLCAmZ3ApOworCisJcmV0dXJuIGd0dF92ZXJzaW9uOwor fQorCitib29sIGdlbV9tbWFwX2hhc19ndHQoaW50IGZkKQoreworCXJldHVybiBnZW1fbW1hcF9n dHRfdmVyc2lvbihmZCkgPiAwOworfQorCiAvKioKICAqIF9fZ2VtX21tYXBfX2d0dDoKICAqIEBm ZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKQEAgLTEwMSw0NiArMTM5LDYzIEBAIGlu dCBnZW1fbXVubWFwKHZvaWQgKnB0ciwgdWludDY0X3Qgc2l6ZSkKIAlyZXR1cm4gcmV0OwogfQog Ci1ib29sIGdlbV9tbWFwX19oYXNfd2MoaW50IGZkKQorYm9vbCBfX2dlbV9tbWFwX19oYXNfd2Mo aW50IGZkKQogewotCXN0YXRpYyBpbnQgaGFzX3djID0gLTE7Ci0KLQlpZiAoaGFzX3djID09IC0x KSB7Ci0JCXN0cnVjdCBkcm1faTkxNV9nZXRwYXJhbSBncDsKLQkJaW50IG1tYXBfdmVyc2lvbiA9 IC0xOwotCQlpbnQgZ3R0X3ZlcnNpb24gPSAtMTsKLQotCQloYXNfd2MgPSAwOwotCi0JCW1lbXNl dCgmZ3AsIDAsIHNpemVvZihncCkpOwotCQlncC5wYXJhbSA9IEk5MTVfUEFSQU1fTU1BUF9HVFRf VkVSU0lPTjsKLQkJZ3AudmFsdWUgPSAmZ3R0X3ZlcnNpb247Ci0JCWlvY3RsKGZkLCBEUk1fSU9D VExfSTkxNV9HRVRQQVJBTSwgJmdwKTsKLQotCQltZW1zZXQoJmdwLCAwLCBzaXplb2YoZ3ApKTsK LQkJZ3AucGFyYW0gPSBJOTE1X1BBUkFNX01NQVBfVkVSU0lPTjsKLQkJZ3AudmFsdWUgPSAmbW1h cF92ZXJzaW9uOwotCQlpb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VUUEFSQU0sICZncCk7Ci0K LQkJLyogRG8gd2UgaGF2ZSB0aGUgbmV3IG1tYXBfaW9jdGwgd2l0aCBET01BSU5fV0M/ICovCi0J CWlmIChtbWFwX3ZlcnNpb24gPj0gMSAmJiBndHRfdmVyc2lvbiA+PSAyKSB7Ci0JCQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX21tYXAgYXJnOwotCi0JCQkvKiBEb2VzIHRoaXMgZGV2aWNlIHN1cHBvcnQg d2MtbW1hcHMgPyAqLwotCQkJbWVtc2V0KCZhcmcsIDAsIHNpemVvZihhcmcpKTsKLQkJCWFyZy5o YW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKLQkJCWFyZy5vZmZzZXQgPSAwOwotCQkJYXJn LnNpemUgPSA0MDk2OwotCQkJYXJnLmZsYWdzID0gSTkxNV9NTUFQX1dDOwotCQkJaGFzX3djID0g aWd0X2lvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fTU1BUCwgJmFyZykgPT0gMDsKLQkJCWdl bV9jbG9zZShmZCwgYXJnLmhhbmRsZSk7Ci0JCX0KLQkJZXJybm8gPSAwOworCWludCBoYXNfd2Mg PSAwOworCisJc3RydWN0IGRybV9pOTE1X2dldHBhcmFtIGdwOworCWludCBtbWFwX3ZlcnNpb24g PSAtMTsKKworCW1lbXNldCgmZ3AsIDAsIHNpemVvZihncCkpOworCWdwLnBhcmFtID0gSTkxNV9Q QVJBTV9NTUFQX1ZFUlNJT047CisJZ3AudmFsdWUgPSAmbW1hcF92ZXJzaW9uOworCWlvY3RsKGZk LCBEUk1fSU9DVExfSTkxNV9HRVRQQVJBTSwgJmdwKTsKKworCS8qIERvIHdlIGhhdmUgdGhlIG1t YXBfaW9jdGwgd2l0aCBET01BSU5fV0M/ICovCisJaWYgKG1tYXBfdmVyc2lvbiA+PSAxICYmIGdl bV9tbWFwX2d0dF92ZXJzaW9uKGZkKSA+PSAyKSB7CisJCXN0cnVjdCBkcm1faTkxNV9nZW1fbW1h cCBhcmc7CisKKwkJLyogRG9lcyB0aGlzIGRldmljZSBzdXBwb3J0IHdjLW1tYXBzID8gKi8KKwkJ bWVtc2V0KCZhcmcsIDAsIHNpemVvZihhcmcpKTsKKwkJYXJnLmhhbmRsZSA9IGdlbV9jcmVhdGUo ZmQsIDQwOTYpOworCQlhcmcub2Zmc2V0ID0gMDsKKwkJYXJnLnNpemUgPSA0MDk2OworCQlhcmcu ZmxhZ3MgPSBJOTE1X01NQVBfV0M7CisJCWhhc193YyA9IGlndF9pb2N0bChmZCwgRFJNX0lPQ1RM X0k5MTVfR0VNX01NQVAsICZhcmcpID09IDA7CisJCWdlbV9jbG9zZShmZCwgYXJnLmhhbmRsZSk7 CisJfQorCWVycm5vID0gMDsKKworCXJldHVybiBoYXNfd2MgPiAwOworfQorCitib29sIF9fZ2Vt X21tYXBfb2Zmc2V0X19oYXNfd2MoaW50IGZkKQoreworCWludCBoYXNfd2MgPSAwOworCisJaWYg KGdlbV9oYXNfbW1hcF9vZmZzZXQoZmQpKSB7CisJCXN0cnVjdCBsb2NhbF9pOTE1X2dlbV9tbWFw X29mZnNldCBhcmc7CisKKwkJLyogRG9lcyB0aGlzIGRldmljZSBzdXBwb3J0IHdjLW1tYXBzID8g Ki8KKwkJbWVtc2V0KCZhcmcsIDAsIHNpemVvZihhcmcpKTsKKwkJYXJnLmhhbmRsZSA9IGdlbV9j cmVhdGUoZmQsIDQwOTYpOworCQlhcmcub2Zmc2V0ID0gMDsKKwkJYXJnLmZsYWdzID0gTE9DQUxf STkxNV9NTUFQX09GRlNFVF9XQzsKKwkJaGFzX3djID0gaWd0X2lvY3RsKGZkLCBMT0NBTF9JT0NU TF9JOTE1X0dFTV9NTUFQX09GRlNFVCwKKwkJCQkgICAmYXJnKSA9PSAwOworCQlnZW1fY2xvc2Uo ZmQsIGFyZy5oYW5kbGUpOwogCX0KIAorCWVycm5vID0gMDsKKwogCXJldHVybiBoYXNfd2MgPiAw OwogfQogCitib29sIGdlbV9tbWFwX19oYXNfd2MoaW50IGZkKQoreworCXJldHVybiBfX2dlbV9t bWFwX29mZnNldF9faGFzX3djKGZkKSB8fCBfX2dlbV9tbWFwX19oYXNfd2MoZmQpOworfQorCiAv KioKICAqIF9fZ2VtX21tYXA6CiAgKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9y CkBAIC0xNTcsOCArMjEyLDggQEAgYm9vbCBnZW1fbW1hcF9faGFzX3djKGludCBmZCkKICAqCiAg KiBSZXR1cm5zOiBBIHBvaW50ZXIgdG8gdGhlIGNyZWF0ZWQgbWVtb3J5IG1hcHBpbmcsIE5VTEwg b24gZmFpbHVyZS4KICAqLwotc3RhdGljIHZvaWQKLSpfX2dlbV9tbWFwKGludCBmZCwgdWludDMy X3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUsIHVuc2lnbmVkIGludCBw cm90LCB1aW50NjRfdCBmbGFncykKK3ZvaWQgKl9fZ2VtX21tYXAoaW50IGZkLCB1aW50MzJfdCBo YW5kbGUsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSwKKwkJIHVuc2lnbmVkIGludCBw cm90LCB1aW50NjRfdCBmbGFncykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXAgYXJnOwog CkBAIC0xNzcsNiArMjMyLDQzIEBAIHN0YXRpYyB2b2lkCiAJcmV0dXJuIGZyb21fdXNlcl9wb2lu dGVyKGFyZy5hZGRyX3B0cik7CiB9CiAKKy8qKgorICogX19nZW1fbW1hcF9vZmZzZXQ6CisgKiBA ZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCisgKiBAaGFuZGxlOiBnZW0gYnVmZmVy IG9iamVjdCBoYW5kbGUKKyAqIEBvZmZzZXQ6IG9mZnNldCBpbiB0aGUgZ2VtIGJ1ZmZlciBvZiB0 aGUgbW1hcCBhcmVuYQorICogQHNpemU6IHNpemUgb2YgdGhlIG1tYXAgYXJlbmEKKyAqIEBwcm90 OiBtZW1vcnkgcHJvdGVjdGlvbiBiaXRzIGFzIHVzZWQgYnkgbW1hcCgpCisgKiBAZmxhZ3M6IGZs YWdzIHVzZWQgdG8gZGV0ZXJtaW5lIGNhY2hpbmcKKyAqCisgKiBTaW1pbGFyIHRvIF9fZ2VtX21t YXAgYnV0IHVzZSBNTUFQX09GRlNFVCBJT0NUTC4KKyAqCisgKiBSZXR1cm5zOiBBIHBvaW50ZXIg dG8gdGhlIGNyZWF0ZWQgbWVtb3J5IG1hcHBpbmcsIE5VTEwgb24gZmFpbHVyZS4KKyAqLwordm9p ZCAqX19nZW1fbW1hcF9vZmZzZXQoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9m ZnNldCwgdWludDY0X3Qgc2l6ZSwKKwkJCXVuc2lnbmVkIGludCBwcm90LCB1aW50NjRfdCBmbGFn cykKK3sKKwlzdHJ1Y3QgbG9jYWxfaTkxNV9nZW1fbW1hcF9vZmZzZXQgYXJnOworCXZvaWQgKnB0 cjsKKworCW1lbXNldCgmYXJnLCAwLCBzaXplb2YoYXJnKSk7CisJYXJnLmhhbmRsZSA9IGhhbmRs ZTsKKwlhcmcub2Zmc2V0ID0gb2Zmc2V0OworCWFyZy5mbGFncyA9IGZsYWdzOworCisJaWYgKGln dF9pb2N0bChmZCwgTE9DQUxfSU9DVExfSTkxNV9HRU1fTU1BUF9PRkZTRVQsICZhcmcpKQorCQly ZXR1cm4gTlVMTDsKKworCXB0ciA9IG1tYXA2NCgwLCBzaXplLCBwcm90LCBNQVBfU0hBUkVELCBm ZCwgYXJnLm9mZnNldCk7CisKKwlpZiAocHRyID09IE1BUF9GQUlMRUQpCisJCXB0ciA9IE5VTEw7 CisJZWxzZQorCQllcnJubyA9IDA7CisKKwlyZXR1cm4gcHRyOworfQorCiAvKioKICAqIF9fZ2Vt X21tYXBfX3djOgogICogQGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgpAQCAtMjA1 LDEzICsyOTcsMTcgQEAgdm9pZCAqX19nZW1fbW1hcF9fd2MoaW50IGZkLCB1aW50MzJfdCBoYW5k bGUsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSwgdW4KICAqIEBzaXplOiBzaXplIG9m IHRoZSBtbWFwIGFyZW5hCiAgKiBAcHJvdDogbWVtb3J5IHByb3RlY3Rpb24gYml0cyBhcyB1c2Vk IGJ5IG1tYXAoKQogICoKLSAqIExpa2UgX19nZW1fbW1hcF9fd2MoKSBleGNlcHQgd2UgYXNzZXJ0 IG9uIGZhaWx1cmUuCisgKiBUcnkgdG8gX19nZW1fbW1hcF9vZmZzZXQsIHRoZW4gX19nZW1fbW1h cF9fd2MoKS4gQXNzZXJ0IG9uIGZhaWx1cmUuCiAgKgogICogUmV0dXJuczogQSBwb2ludGVyIHRv IHRoZSBjcmVhdGVkIG1lbW9yeSBtYXBwaW5nCiAgKi8KIHZvaWQgKmdlbV9tbWFwX193YyhpbnQg ZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplLCB1bnNp Z25lZCBwcm90KQogewotCXZvaWQgKnB0ciA9IF9fZ2VtX21tYXBfX3djKGZkLCBoYW5kbGUsIG9m ZnNldCwgc2l6ZSwgcHJvdCk7CisJdm9pZCAqcHRyID0gX19nZW1fbW1hcF9vZmZzZXQoZmQsIGhh bmRsZSwgb2Zmc2V0LCBzaXplLCBwcm90LAorCQkJCSAgICAgICBMT0NBTF9JOTE1X01NQVBfT0ZG U0VUX1dDKTsKKwlpZiAoIXB0cikKKwkJcHRyID0gX19nZW1fbW1hcF9fd2MoZmQsIGhhbmRsZSwg b2Zmc2V0LCBzaXplLCBwcm90KTsKKwogCWlndF9hc3NlcnQocHRyKTsKIAlyZXR1cm4gcHRyOwog fQpAQCAtMjQ4LDcgKzM0NCwxMSBAQCB2b2lkICpfX2dlbV9tbWFwX19jcHUoaW50IGZkLCB1aW50 MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSwgdQogICovCiB2b2lk ICpnZW1fbW1hcF9fY3B1KGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQs IHVpbnQ2NF90IHNpemUsIHVuc2lnbmVkIHByb3QpCiB7Ci0Jdm9pZCAqcHRyID0gX19nZW1fbW1h cF9fY3B1KGZkLCBoYW5kbGUsIG9mZnNldCwgc2l6ZSwgcHJvdCk7CisJdm9pZCAqcHRyID0gX19n ZW1fbW1hcF9vZmZzZXQoZmQsIGhhbmRsZSwgb2Zmc2V0LCBzaXplLCBwcm90LAorCQkJCSAgICAg ICBMT0NBTF9JOTE1X01NQVBfT0ZGU0VUX1dCKTsKKwlpZiAoIXB0cikKKwkJcHRyID0gX19nZW1f bW1hcF9fY3B1KGZkLCBoYW5kbGUsIG9mZnNldCwgc2l6ZSwgcHJvdCk7CisKIAlpZ3RfYXNzZXJ0 KHB0cik7CiAJcmV0dXJuIHB0cjsKIH0KZGlmZiAtLWdpdCBhL2xpYi9pOTE1L2dlbV9tbWFuLmgg Yi9saWIvaTkxNS9nZW1fbW1hbi5oCmluZGV4IDA5NmZmNTkyLi5lNGM5NTRjNiAxMDA2NDQKLS0t IGEvbGliL2k5MTUvZ2VtX21tYW4uaAorKysgYi9saWIvaTkxNS9nZW1fbW1hbi5oCkBAIC0yNSwx MiArMjUsNDUgQEAKICNpZm5kZWYgR0VNX01NQU5fSAogI2RlZmluZSBHRU1fTU1BTl9ICiAKKyNk ZWZpbmUgTE9DQUxfSTkxNV9HRU1fTU1BUF9PRkZTRVQgICAgICAgRFJNX0k5MTVfR0VNX01NQVBf R1RUCisjZGVmaW5lIExPQ0FMX0lPQ1RMX0k5MTVfR0VNX01NQVBfT0ZGU0VUICAgICAgICAgRFJN X0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIFwKKwlMT0NBTF9JOTE1X0dFTV9NTUFQX09GRlNFVCwg c3RydWN0IGxvY2FsX2k5MTVfZ2VtX21tYXBfb2Zmc2V0KQorCitzdHJ1Y3QgbG9jYWxfaTkxNV9n ZW1fbW1hcF9vZmZzZXQgeworCS8qKiBIYW5kbGUgZm9yIHRoZSBvYmplY3QgYmVpbmcgbWFwcGVk LiAqLworCV9fdTMyIGhhbmRsZTsKKwlfX3UzMiBwYWQ7CisJLyoqCisJICogRmFrZSBvZmZzZXQg dG8gdXNlIGZvciBzdWJzZXF1ZW50IG1tYXAgY2FsbAorCSAqCisJICogVGhpcyBpcyBhIGZpeGVk LXNpemUgdHlwZSBmb3IgMzIvNjQgY29tcGF0aWJpbGl0eS4KKwkgKi8KKwlfX3U2NCBvZmZzZXQ7 CisJLyoqCisJICogRmxhZ3MgZm9yIGV4dGVuZGVkIGJlaGF2aW91ci4KKwkgKgorCSAqIEl0IGlz IG1hbmRhdG9yeSB0aGF0IGVpdGhlciBvbmUgb2YgdGhlIF9XQy9fV0IgZmxhZ3MKKwkgKiBzaG91 bGQgYmUgcGFzc2VkIGhlcmUuCisJICovCisJX191NjQgZmxhZ3M7CisjZGVmaW5lIExPQ0FMX0k5 MTVfTU1BUF9PRkZTRVRfV0MgKDEgPDwgMCkKKyNkZWZpbmUgTE9DQUxfSTkxNV9NTUFQX09GRlNF VF9XQiAoMSA8PCAxKQorI2RlZmluZSBMT0NBTF9JOTE1X01NQVBfT0ZGU0VUX1VDICgxIDw8IDIp CisjZGVmaW5lIExPQ0FMX0k5MTVfTU1BUF9PRkZTRVRfRkxBR1MgXAorCShMT0NBTF9JOTE1X01N QVBfT0ZGU0VUX1dDIHwgTE9DQUxfSTkxNV9NTUFQX09GRlNFVF9XQiB8IExPQ0FMX0k5MTVfTU1B UF9PRkZTRVRfVUMpCit9OworCit2b2lkIGdlbV9yZXF1aXJlX21tYXBfb2Zmc2V0KGludCBpOTE1 KTsKK2Jvb2wgZ2VtX21tYXBfaGFzX2d0dChpbnQgZmQpOworCiB2b2lkICpnZW1fbW1hcF9fZ3R0 KGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBzaXplLCB1bnNpZ25lZCBwcm90KTsK IHZvaWQgKmdlbV9tbWFwX19jcHUoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9m ZnNldCwgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCk7CiAKK2Jvb2wgX19nZW1fbW1hcF9f aGFzX3djKGludCBmZCk7Citib29sIF9fZ2VtX21tYXBfb2Zmc2V0X19oYXNfd2MoaW50IGZkKTsK IGJvb2wgZ2VtX21tYXBfX2hhc193YyhpbnQgZmQpOwogdm9pZCAqZ2VtX21tYXBfX3djKGludCBm ZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUsIHVuc2ln bmVkIHByb3QpOwotCit2b2lkICpnZW1fbW1hcF9vZmZzZXRfX3djKGludCBmZCwgdWludDMyX3Qg aGFuZGxlLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUsIHVuc2lnbmVkIHByb3QpOwog I2lmbmRlZiBJOTE1X0dFTV9ET01BSU5fV0MKICNkZWZpbmUgSTkxNV9HRU1fRE9NQUlOX1dDIDB4 ODAKICNlbmRpZgpAQCAtMzgsNiArNzEsMTAgQEAgdm9pZCAqZ2VtX21tYXBfX3djKGludCBmZCwg dWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUsIHVuc2kKIGJv b2wgZ2VtX2hhc19tYXBwYWJsZV9nZ3R0KGludCBpOTE1KTsKIHZvaWQgZ2VtX3JlcXVpcmVfbWFw cGFibGVfZ2d0dChpbnQgaTkxNSk7CiAKK3ZvaWQgKl9fZ2VtX21tYXAoaW50IGZkLCB1aW50MzJf dCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSwKKwkJIHVuc2lnbmVkIGlu dCBwcm90LCB1aW50NjRfdCBmbGFncyk7Cit2b2lkICpfX2dlbV9tbWFwX29mZnNldChpbnQgZmQs IHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplLAorCQkJIHVu c2lnbmVkIGludCBwcm90LCB1aW50NjRfdCBmbGFncyk7CiB2b2lkICpfX2dlbV9tbWFwX19ndHQo aW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IHNpemUsIHVuc2lnbmVkIHByb3QpOwog dm9pZCAqX19nZW1fbW1hcF9fY3B1KGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBv ZmZzZXQsIHVpbnQ2NF90IHNpemUsIHVuc2lnbmVkIHByb3QpOwogdm9pZCAqX19nZW1fbW1hcF9f d2MoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6 ZSwgdW5zaWduZWQgcHJvdCk7Ci0tIAoyLjIzLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaWd0LWRldg==