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 C508D6E466 for ; Tue, 26 Nov 2019 17:26:14 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Tue, 26 Nov 2019 18:25:55 +0100 Message-Id: <20191126172556.21805-3-zbigniew.kempczynski@intel.com> In-Reply-To: <20191126172556.21805-1-zbigniew.kempczynski@intel.com> References: <20191126172556.21805-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v4 2/3] 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 d2lsc29uLmNvLnVrPgpDYzogVmFuc2hpZGhhciBLb25kYSA8dmFuc2hpZGhhci5yLmtvbmRhQGlu dGVsLmNvbT4KUmV2aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgotLS0KIGxpYi9pOTE1L2dlbV9tbWFuLmMgfCAyMzIgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0KIGxpYi9pOTE1L2dlbV9tbWFuLmggfCAgMTYgKystCiAy IGZpbGVzIGNoYW5nZWQsIDIwOCBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9saWIvaTkxNS9nZW1fbW1hbi5jIGIvbGliL2k5MTUvZ2VtX21tYW4uYwppbmRleCA2 MjU2NjI3Yi4uM2I1NGI2YzggMTAwNjQ0Ci0tLSBhL2xpYi9pOTE1L2dlbV9tbWFuLmMKKysrIGIv bGliL2k5MTUvZ2VtX21tYW4uYwpAQCAtNDAsNiArNDAsMzEgQEAKICNkZWZpbmUgVkcoeCkgZG8g e30gd2hpbGUgKDApCiAjZW5kaWYKIAorc3RhdGljIGludCBnZW1fbW1hcF9ndHRfdmVyc2lvbihp bnQgZmQpCit7CisJc3RydWN0IGRybV9pOTE1X2dldHBhcmFtIGdwOworCWludCBndHRfdmVyc2lv biA9IC0xOworCisJbWVtc2V0KCZncCwgMCwgc2l6ZW9mKGdwKSk7CisJZ3AucGFyYW0gPSBJOTE1 X1BBUkFNX01NQVBfR1RUX1ZFUlNJT047CisJZ3AudmFsdWUgPSAmZ3R0X3ZlcnNpb247CisJaW9j dGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFVFBBUkFNLCAmZ3ApOworCisJcmV0dXJuIGd0dF92ZXJz aW9uOworfQorCitzdGF0aWMgYm9vbCBnZW1faGFzX21tYXBfb2Zmc2V0KGludCBmZCkKK3sKKwlp bnQgZ3R0X3ZlcnNpb24gPSBnZW1fbW1hcF9ndHRfdmVyc2lvbihmZCk7CisKKwlyZXR1cm4gZ3R0 X3ZlcnNpb24gPj0gNDsKK30KKwordm9pZCBnZW1fcmVxdWlyZV9tbWFwX29mZnNldChpbnQgaTkx NSkKK3sKKwlpZ3RfcmVxdWlyZShnZW1faGFzX21tYXBfb2Zmc2V0KGk5MTUpKTsKK30KKwogLyoq CiAgKiBfX2dlbV9tbWFwX19ndHQ6CiAgKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlw dG9yCkBAIC0xMDEsNDYgKzEyNiw2NiBAQCBpbnQgZ2VtX211bm1hcCh2b2lkICpwdHIsIHVpbnQ2 NF90IHNpemUpCiAJcmV0dXJuIHJldDsKIH0KIAotYm9vbCBnZW1fbW1hcF9faGFzX3djKGludCBm ZCkKK2Jvb2wgX19nZW1fbW1hcF9faGFzX3djKGludCBmZCkKIHsKLQlzdGF0aWMgaW50IGhhc193 YyA9IC0xOwotCi0JaWYgKGhhc193YyA9PSAtMSkgewotCQlzdHJ1Y3QgZHJtX2k5MTVfZ2V0cGFy YW0gZ3A7Ci0JCWludCBtbWFwX3ZlcnNpb24gPSAtMTsKLQkJaW50IGd0dF92ZXJzaW9uID0gLTE7 Ci0KLQkJaGFzX3djID0gMDsKLQotCQltZW1zZXQoJmdwLCAwLCBzaXplb2YoZ3ApKTsKLQkJZ3Au cGFyYW0gPSBJOTE1X1BBUkFNX01NQVBfR1RUX1ZFUlNJT047Ci0JCWdwLnZhbHVlID0gJmd0dF92 ZXJzaW9uOwotCQlpb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VUUEFSQU0sICZncCk7Ci0KLQkJ bWVtc2V0KCZncCwgMCwgc2l6ZW9mKGdwKSk7Ci0JCWdwLnBhcmFtID0gSTkxNV9QQVJBTV9NTUFQ X1ZFUlNJT047Ci0JCWdwLnZhbHVlID0gJm1tYXBfdmVyc2lvbjsKLQkJaW9jdGwoZmQsIERSTV9J T0NUTF9JOTE1X0dFVFBBUkFNLCAmZ3ApOwotCi0JCS8qIERvIHdlIGhhdmUgdGhlIG5ldyBtbWFw X2lvY3RsIHdpdGggRE9NQUlOX1dDPyAqLwotCQlpZiAobW1hcF92ZXJzaW9uID49IDEgJiYgZ3R0 X3ZlcnNpb24gPj0gMikgewotCQkJc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwIGFyZzsKLQotCQkJ LyogRG9lcyB0aGlzIGRldmljZSBzdXBwb3J0IHdjLW1tYXBzID8gKi8KLQkJCW1lbXNldCgmYXJn LCAwLCBzaXplb2YoYXJnKSk7Ci0JCQlhcmcuaGFuZGxlID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7 Ci0JCQlhcmcub2Zmc2V0ID0gMDsKLQkJCWFyZy5zaXplID0gNDA5NjsKLQkJCWFyZy5mbGFncyA9 IEk5MTVfTU1BUF9XQzsKLQkJCWhhc193YyA9IGlndF9pb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVf R0VNX01NQVAsICZhcmcpID09IDA7Ci0JCQlnZW1fY2xvc2UoZmQsIGFyZy5oYW5kbGUpOwotCQl9 Ci0JCWVycm5vID0gMDsKKwlpbnQgaGFzX3djID0gMDsKKworCXN0cnVjdCBkcm1faTkxNV9nZXRw YXJhbSBncDsKKwlpbnQgbW1hcF92ZXJzaW9uID0gLTE7CisKKwltZW1zZXQoJmdwLCAwLCBzaXpl b2YoZ3ApKTsKKwlncC5wYXJhbSA9IEk5MTVfUEFSQU1fTU1BUF9WRVJTSU9OOworCWdwLnZhbHVl ID0gJm1tYXBfdmVyc2lvbjsKKwlpb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VUUEFSQU0sICZn cCk7CisKKwkvKiBEbyB3ZSBoYXZlIHRoZSBtbWFwX2lvY3RsIHdpdGggRE9NQUlOX1dDPyAqLwor CWlmIChtbWFwX3ZlcnNpb24gPj0gMSAmJiBnZW1fbW1hcF9ndHRfdmVyc2lvbihmZCkgPj0gMikg eworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXAgYXJnOworCisJCS8qIERvZXMgdGhpcyBkZXZp Y2Ugc3VwcG9ydCB3Yy1tbWFwcyA/ICovCisJCW1lbXNldCgmYXJnLCAwLCBzaXplb2YoYXJnKSk7 CisJCWFyZy5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKKwkJYXJnLm9mZnNldCA9IDA7 CisJCWFyZy5zaXplID0gNDA5NjsKKwkJYXJnLmZsYWdzID0gSTkxNV9NTUFQX1dDOworCQloYXNf d2MgPSBpZ3RfaW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9NTUFQLCAmYXJnKSA9PSAwOwor CQlnZW1fY2xvc2UoZmQsIGFyZy5oYW5kbGUpOworCisJCWlmIChoYXNfd2MgJiYgZnJvbV91c2Vy X3BvaW50ZXIoYXJnLmFkZHJfcHRyKSkKKwkJCW11bm1hcChmcm9tX3VzZXJfcG9pbnRlcihhcmcu YWRkcl9wdHIpLCBhcmcuc2l6ZSk7CiAJfQorCWVycm5vID0gMDsKKworCXJldHVybiBoYXNfd2Mg PiAwOworfQorCitib29sIF9fZ2VtX21tYXBfb2Zmc2V0X19oYXNfd2MoaW50IGZkKQoreworCWlu dCBoYXNfd2MgPSAwOworCXN0cnVjdCBkcm1faTkxNV9nZW1fbW1hcF9vZmZzZXQgYXJnOworCisJ aWYgKCFnZW1faGFzX21tYXBfb2Zmc2V0KGZkKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogRG9l cyB0aGlzIGRldmljZSBzdXBwb3J0IHdjLW1tYXBzID8gKi8KKwltZW1zZXQoJmFyZywgMCwgc2l6 ZW9mKGFyZykpOworCWFyZy5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKKwlhcmcub2Zm c2V0ID0gMDsKKwlhcmcuZmxhZ3MgPSBJOTE1X01NQVBfT0ZGU0VUX1dDOworCWhhc193YyA9IGln dF9pb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VNX01NQVBfT0ZGU0VULAorCQkJICAgJmFyZykg PT0gMDsKKwlnZW1fY2xvc2UoZmQsIGFyZy5oYW5kbGUpOworCisJZXJybm8gPSAwOwogCiAJcmV0 dXJuIGhhc193YyA+IDA7CiB9CiAKK2Jvb2wgZ2VtX21tYXBfX2hhc193YyhpbnQgZmQpCit7CisJ cmV0dXJuIF9fZ2VtX21tYXBfb2Zmc2V0X19oYXNfd2MoZmQpIHx8IF9fZ2VtX21tYXBfX2hhc193 YyhmZCk7Cit9CisKIC8qKgogICogX19nZW1fbW1hcDoKICAqIEBmZDogb3BlbiBpOTE1IGRybSBm aWxlIGRlc2NyaXB0b3IKQEAgLTE1NywxMSArMjAyLDEzIEBAIGJvb2wgZ2VtX21tYXBfX2hhc193 YyhpbnQgZmQpCiAgKgogICogUmV0dXJuczogQSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIG1lbW9y eSBtYXBwaW5nLCBOVUxMIG9uIGZhaWx1cmUuCiAgKi8KLXN0YXRpYyB2b2lkCi0qX19nZW1fbW1h cChpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXpl LCB1bnNpZ25lZCBpbnQgcHJvdCwgdWludDY0X3QgZmxhZ3MpCit2b2lkICpfX2dlbV9tbWFwKGlu dCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUsCisJ CSB1bnNpZ25lZCBpbnQgcHJvdCwgdWludDY0X3QgZmxhZ3MpCiB7CiAJc3RydWN0IGRybV9pOTE1 X2dlbV9tbWFwIGFyZzsKIAorCWlndF9hc3NlcnQob2Zmc2V0ID09IDApOworCiAJbWVtc2V0KCZh cmcsIDAsIHNpemVvZihhcmcpKTsKIAlhcmcuaGFuZGxlID0gaGFuZGxlOwogCWFyZy5vZmZzZXQg PSBvZmZzZXQ7CkBAIC0xNzcsNiArMjI0LDUwIEBAIHN0YXRpYyB2b2lkCiAJcmV0dXJuIGZyb21f dXNlcl9wb2ludGVyKGFyZy5hZGRyX3B0cik7CiB9CiAKKy8qKgorICogX19nZW1fbW1hcF9vZmZz ZXQ6CisgKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCisgKiBAaGFuZGxlOiBn ZW0gYnVmZmVyIG9iamVjdCBoYW5kbGUKKyAqIEBvZmZzZXQ6IG9mZnNldCBpbiB0aGUgZ2VtIGJ1 ZmZlciBvZiB0aGUgbW1hcCBhcmVuYQorICogQHNpemU6IHNpemUgb2YgdGhlIG1tYXAgYXJlbmEK KyAqIEBwcm90OiBtZW1vcnkgcHJvdGVjdGlvbiBiaXRzIGFzIHVzZWQgYnkgbW1hcCgpCisgKiBA ZmxhZ3M6IGZsYWdzIHVzZWQgdG8gZGV0ZXJtaW5lIGNhY2hpbmcKKyAqCisgKiBNbWFwIHRoZSBn ZW0gYnVmZmVyIG1lbW9yeSBvbiBvZmZzZXQgcmV0dXJuZWQgaW4gR0VNX01NQVBfT0ZGU0VUIGlv Y3RsLgorICogT2Zmc2V0IGFyZ3VtZW50IHBhc3NlZCBpbiBmdW5jdGlvbiBjYWxsIG11c3QgYmUg MC4gSW4gdGhlIGZ1dHVyZQorICogd2hlbiBkcml2ZXIgd2lsbCBhbGxvdyBzbGljZSBtYXBwaW5n IG9mIGJ1ZmZlciBvYmplY3QgdGhpcyByZXN0cmljdGlvbgorICogd2lsbCBiZSByZW1vdmVkLgor ICoKKyAqIFJldHVybnM6IEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBtZW1vcnkgbWFwcGluZywg TlVMTCBvbiBmYWlsdXJlLgorICovCit2b2lkICpfX2dlbV9tbWFwX29mZnNldChpbnQgZmQsIHVp bnQzMl90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplLAorCQkJdW5zaWdu ZWQgaW50IHByb3QsIHVpbnQ2NF90IGZsYWdzKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fbW1h cF9vZmZzZXQgYXJnOworCXZvaWQgKnB0cjsKKworCWlmICghZ2VtX2hhc19tbWFwX29mZnNldChm ZCkpCisJCXJldHVybiBOVUxMOworCisJaWd0X2Fzc2VydChvZmZzZXQgPT0gMCk7CisKKwltZW1z ZXQoJmFyZywgMCwgc2l6ZW9mKGFyZykpOworCWFyZy5oYW5kbGUgPSBoYW5kbGU7CisJYXJnLmZs YWdzID0gZmxhZ3M7CisKKwlpZiAoaWd0X2lvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fTU1B UF9PRkZTRVQsICZhcmcpKQorCQlyZXR1cm4gTlVMTDsKKworCXB0ciA9IG1tYXA2NCgwLCBzaXpl LCBwcm90LCBNQVBfU0hBUkVELCBmZCwgYXJnLm9mZnNldCArIG9mZnNldCk7CisKKwlpZiAocHRy ID09IE1BUF9GQUlMRUQpCisJCXB0ciA9IE5VTEw7CisJZWxzZQorCQllcnJubyA9IDA7CisKKwly ZXR1cm4gcHRyOworfQorCiAvKioKICAqIF9fZ2VtX21tYXBfX3djOgogICogQGZkOiBvcGVuIGk5 MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgpAQCAtMTk0LDcgKzI4NSwxMiBAQCBzdGF0aWMgdm9pZAog ICovCiB2b2lkICpfX2dlbV9tbWFwX193YyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0 X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplLCB1bnNpZ25lZCBwcm90KQogewotCXJldHVybiBfX2dl bV9tbWFwKGZkLCBoYW5kbGUsIG9mZnNldCwgc2l6ZSwgcHJvdCwgSTkxNV9NTUFQX1dDKTsKKwl2 b2lkICpwdHIgPSBfX2dlbV9tbWFwX29mZnNldChmZCwgaGFuZGxlLCBvZmZzZXQsIHNpemUsIHBy b3QsCisJCQkJICAgICAgSTkxNV9NTUFQX09GRlNFVF9XQyk7CisJaWYgKCFwdHIpCisJCXB0ciA9 IF9fZ2VtX21tYXAoZmQsIGhhbmRsZSwgb2Zmc2V0LCBzaXplLCBwcm90LCBJOTE1X01NQVBfV0Mp OworCisJcmV0dXJuIHB0cjsKIH0KIAogLyoqCkBAIC0yMDUsMTcgKzMwMSw3MSBAQCB2b2lkICpf X2dlbV9tbWFwX193YyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LCB1 aW50NjRfdCBzaXplLCB1bgogICogQHNpemU6IHNpemUgb2YgdGhlIG1tYXAgYXJlbmEKICAqIEBw cm90OiBtZW1vcnkgcHJvdGVjdGlvbiBiaXRzIGFzIHVzZWQgYnkgbW1hcCgpCiAgKgotICogTGlr ZSBfX2dlbV9tbWFwX193YygpIGV4Y2VwdCB3ZSBhc3NlcnQgb24gZmFpbHVyZS4KKyAqIFRyeSB0 byBfX2dlbV9tbWFwX193YygpLiBBc3NlcnQgb24gZmFpbHVyZS4KICAqCiAgKiBSZXR1cm5zOiBB IHBvaW50ZXIgdG8gdGhlIGNyZWF0ZWQgbWVtb3J5IG1hcHBpbmcKICAqLwogdm9pZCAqZ2VtX21t YXBfX3djKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90 IHNpemUsIHVuc2lnbmVkIHByb3QpCiB7CiAJdm9pZCAqcHRyID0gX19nZW1fbW1hcF9fd2MoZmQs IGhhbmRsZSwgb2Zmc2V0LCBzaXplLCBwcm90KTsKKwogCWlndF9hc3NlcnQocHRyKTsKIAlyZXR1 cm4gcHRyOwogfQogCisvKioKKyAqIF9fZ2VtX21tYXBfX2RldmljZV9jb2hlcmVudDoKKyAqIEBm ZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKKyAqIEBoYW5kbGU6IGdlbSBidWZmZXIg b2JqZWN0IGhhbmRsZQorICogQG9mZnNldDogb2Zmc2V0IGluIHRoZSBnZW0gYnVmZmVyIG9mIHRo ZSBtbWFwIGFyZW5hCisgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgbW1hcCBhcmVuYQorICogQHByb3Q6 IG1lbW9yeSBwcm90ZWN0aW9uIGJpdHMgYXMgdXNlZCBieSBtbWFwKCkKKyAqCisgKiBSZXR1cm5z OiBBIHBvaW50ZXIgdG8gYSBibG9jayBvZiBsaW5lYXIgZGV2aWNlIG1lbW9yeSBtYXBwZWQgaW50 byB0aGUKKyAqIHByb2Nlc3Mgd2l0aCBXQyBzZW1hbnRpY3MuIFdoZW4gbm8gV0MgaXMgYXZhaWxh YmxlIHRyeSB0byBtbWFwIHVzaW5nIEdHVFQuCisgKi8KK3ZvaWQgKl9fZ2VtX21tYXBfX2Rldmlj ZV9jb2hlcmVudChpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LAorCQkJ CSAgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCkKK3sKKwl2b2lkICpwdHIgPSBfX2dlbV9t bWFwX29mZnNldChmZCwgaGFuZGxlLCBvZmZzZXQsIHNpemUsIHByb3QsCisJCQkJICAgICAgSTkx NV9NTUFQX09GRlNFVF9XQyk7CisJaWYgKCFwdHIpCisJCXB0ciA9IF9fZ2VtX21tYXBfX3djKGZk LCBoYW5kbGUsIG9mZnNldCwgc2l6ZSwgcHJvdCk7CisKKwlpZiAoIXB0cikKKwkJcHRyID0gX19n ZW1fbW1hcF9fZ3R0KGZkLCBoYW5kbGUsIHNpemUsIHByb3QpOworCisJcmV0dXJuIHB0cjsKK30K KworLyoqCisgKiBnZW1fbW1hcF9fZGV2aWNlX2NvaGVyZW50OgorICogQGZkOiBvcGVuIGk5MTUg ZHJtIGZpbGUgZGVzY3JpcHRvcgorICogQGhhbmRsZTogZ2VtIGJ1ZmZlciBvYmplY3QgaGFuZGxl CisgKiBAb2Zmc2V0OiBvZmZzZXQgaW4gdGhlIGdlbSBidWZmZXIgb2YgdGhlIG1tYXAgYXJlbmEK KyAqIEBzaXplOiBzaXplIG9mIHRoZSBtbWFwIGFyZW5hCisgKiBAcHJvdDogbWVtb3J5IHByb3Rl Y3Rpb24gYml0cyBhcyB1c2VkIGJ5IG1tYXAoKQorICoKKyAqIENhbGwgX19nZW1fbW1hcF9fZGV2 aWNlX19jb2hlcmVudCgpLCBhc3NlcnRzIG9uIGZhaWwuCisgKiBPZmZzZXQgYXJndW1lbnQgcGFz c2VkIGluIGZ1bmN0aW9uIGNhbGwgbXVzdCBiZSAwLiBJbiB0aGUgZnV0dXJlCisgKiB3aGVuIGRy aXZlciB3aWxsIGFsbG93IHNsaWNlIG1hcHBpbmcgb2YgYnVmZmVyIG9iamVjdCB0aGlzIHJlc3Ry aWN0aW9uCisgKiB3aWxsIGJlIHJlbW92ZWQuCisgKgorICogUmV0dXJuczogQSBwb2ludGVyIHRv IHRoZSBjcmVhdGVkIG1lbW9yeSBtYXBwaW5nLgorICovCit2b2lkICpnZW1fbW1hcF9fZGV2aWNl X2NvaGVyZW50KGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQsCisJCQkJ dWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCkKK3sKKwl2b2lkICpwdHI7CisKKwlpZ3RfYXNz ZXJ0KG9mZnNldCA9PSAwKTsKKworCXB0ciA9IGdlbV9tbWFwX19kZXZpY2VfY29oZXJlbnQoZmQs IGhhbmRsZSwgb2Zmc2V0LCBzaXplLCBwcm90KTsKKwlpZ3RfYXNzZXJ0KHB0cik7CisKKwlyZXR1 cm4gcHRyOworfQorCiAvKioKICAqIF9fZ2VtX21tYXBfX2NwdToKICAqIEBmZDogb3BlbiBpOTE1 IGRybSBmaWxlIGRlc2NyaXB0b3IKQEAgLTI0OCw3ICszOTgsMTEgQEAgdm9pZCAqX19nZW1fbW1h cF9fY3B1KGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90 IHNpemUsIHUKICAqLwogdm9pZCAqZ2VtX21tYXBfX2NwdShpbnQgZmQsIHVpbnQzMl90IGhhbmRs ZSwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplLCB1bnNpZ25lZCBwcm90KQogewotCXZv aWQgKnB0ciA9IF9fZ2VtX21tYXBfX2NwdShmZCwgaGFuZGxlLCBvZmZzZXQsIHNpemUsIHByb3Qp OworCXZvaWQgKnB0ciA9IF9fZ2VtX21tYXBfb2Zmc2V0KGZkLCBoYW5kbGUsIG9mZnNldCwgc2l6 ZSwgcHJvdCwKKwkJCQkgICAgICBJOTE1X01NQVBfT0ZGU0VUX1dCKTsKKwlpZiAoIXB0cikKKwkJ cHRyID0gX19nZW1fbW1hcF9fY3B1KGZkLCBoYW5kbGUsIG9mZnNldCwgc2l6ZSwgcHJvdCk7CisK IAlpZ3RfYXNzZXJ0KHB0cik7CiAJcmV0dXJuIHB0cjsKIH0KZGlmZiAtLWdpdCBhL2xpYi9pOTE1 L2dlbV9tbWFuLmggYi9saWIvaTkxNS9nZW1fbW1hbi5oCmluZGV4IDA5NmZmNTkyLi5lYTMwNGRi ZiAxMDA2NDQKLS0tIGEvbGliL2k5MTUvZ2VtX21tYW4uaAorKysgYi9saWIvaTkxNS9nZW1fbW1h bi5oCkBAIC0yNSwxMiArMjUsMjAgQEAKICNpZm5kZWYgR0VNX01NQU5fSAogI2RlZmluZSBHRU1f TU1BTl9ICiAKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKwordm9pZCBnZW1fcmVxdWlyZV9tbWFwX29m ZnNldChpbnQgaTkxNSk7Citib29sIGdlbV9tbWFwX2hhc19ndHQoaW50IGZkKTsKKwogdm9pZCAq Z2VtX21tYXBfX2d0dChpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qgc2l6ZSwgdW5z aWduZWQgcHJvdCk7CiB2b2lkICpnZW1fbW1hcF9fY3B1KGludCBmZCwgdWludDMyX3QgaGFuZGxl LCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUsIHVuc2lnbmVkIHByb3QpOwogCitib29s IF9fZ2VtX21tYXBfX2hhc193YyhpbnQgZmQpOworYm9vbCBfX2dlbV9tbWFwX29mZnNldF9faGFz X3djKGludCBmZCk7CiBib29sIGdlbV9tbWFwX19oYXNfd2MoaW50IGZkKTsKIHZvaWQgKmdlbV9t bWFwX193YyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRf dCBzaXplLCB1bnNpZ25lZCBwcm90KTsKLQordm9pZCAqZ2VtX21tYXBfX2RldmljZV9jb2hlcmVu dChpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LAorCQkJCXVpbnQ2NF90 IHNpemUsIHVuc2lnbmVkIHByb3QpOwogI2lmbmRlZiBJOTE1X0dFTV9ET01BSU5fV0MKICNkZWZp bmUgSTkxNV9HRU1fRE9NQUlOX1dDIDB4ODAKICNlbmRpZgpAQCAtMzgsOSArNDYsMTUgQEAgdm9p ZCAqZ2VtX21tYXBfX3djKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQs IHVpbnQ2NF90IHNpemUsIHVuc2kKIGJvb2wgZ2VtX2hhc19tYXBwYWJsZV9nZ3R0KGludCBpOTE1 KTsKIHZvaWQgZ2VtX3JlcXVpcmVfbWFwcGFibGVfZ2d0dChpbnQgaTkxNSk7CiAKK3ZvaWQgKl9f Z2VtX21tYXAoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0 X3Qgc2l6ZSwKKwkJIHVuc2lnbmVkIGludCBwcm90LCB1aW50NjRfdCBmbGFncyk7Cit2b2lkICpf X2dlbV9tbWFwX29mZnNldChpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0 LCB1aW50NjRfdCBzaXplLAorCQkJdW5zaWduZWQgaW50IHByb3QsIHVpbnQ2NF90IGZsYWdzKTsK IHZvaWQgKl9fZ2VtX21tYXBfX2d0dChpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qg c2l6ZSwgdW5zaWduZWQgcHJvdCk7CiB2b2lkICpfX2dlbV9tbWFwX19jcHUoaW50IGZkLCB1aW50 MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJv dCk7CiB2b2lkICpfX2dlbV9tbWFwX193YyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0 X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplLCB1bnNpZ25lZCBwcm90KTsKK3ZvaWQgKl9fZ2VtX21t YXBfX2RldmljZV9jb2hlcmVudChpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qgb2Zm c2V0LAorCQkJCSAgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCk7CiAKIGludCBnZW1fbXVu bWFwKHZvaWQgKnB0ciwgdWludDY0X3Qgc2l6ZSk7CiAKLS0gCjIuMjMuMAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QK aWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2