From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id EC6376F5B3 for ; Thu, 5 Dec 2019 07:58:10 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Thu, 5 Dec 2019 08:57:58 +0100 Message-Id: <20191205075800.12625-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 1/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 dGVsLmNvbT4KLS0tCiBsaWIvaTkxNS9nZW1fbW1hbi5jIHwgMzA3ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiBsaWIvaTkxNS9nZW1fbW1hbi5oIHwgIDIyICsr Ky0KIDIgZmlsZXMgY2hhbmdlZCwgMjkwIGluc2VydGlvbnMoKyksIDM5IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2xpYi9pOTE1L2dlbV9tbWFuLmMgYi9saWIvaTkxNS9nZW1fbW1hbi5jCmlu ZGV4IDYyNTY2MjdiLi5hNTQxMmE2YyAxMDA2NDQKLS0tIGEvbGliL2k5MTUvZ2VtX21tYW4uYwor KysgYi9saWIvaTkxNS9nZW1fbW1hbi5jCkBAIC00MCw2ICs0MCwzMSBAQAogI2RlZmluZSBWRyh4 KSBkbyB7fSB3aGlsZSAoMCkKICNlbmRpZgogCitzdGF0aWMgaW50IGdlbV9tbWFwX2d0dF92ZXJz aW9uKGludCBmZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2V0cGFyYW0gZ3A7CisJaW50IGd0dF92 ZXJzaW9uID0gLTE7CisKKwltZW1zZXQoJmdwLCAwLCBzaXplb2YoZ3ApKTsKKwlncC5wYXJhbSA9 IEk5MTVfUEFSQU1fTU1BUF9HVFRfVkVSU0lPTjsKKwlncC52YWx1ZSA9ICZndHRfdmVyc2lvbjsK Kwlpb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VUUEFSQU0sICZncCk7CisKKwlyZXR1cm4gZ3R0 X3ZlcnNpb247Cit9CisKK3N0YXRpYyBib29sIGdlbV9oYXNfbW1hcF9vZmZzZXQoaW50IGZkKQor eworCWludCBndHRfdmVyc2lvbiA9IGdlbV9tbWFwX2d0dF92ZXJzaW9uKGZkKTsKKworCXJldHVy biBndHRfdmVyc2lvbiA+PSA0OworfQorCit2b2lkIGdlbV9yZXF1aXJlX21tYXBfb2Zmc2V0KGlu dCBpOTE1KQoreworCWlndF9yZXF1aXJlKGdlbV9oYXNfbW1hcF9vZmZzZXQoaTkxNSkpOworfQor CiAvKioKICAqIF9fZ2VtX21tYXBfX2d0dDoKICAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRl c2NyaXB0b3IKQEAgLTEwMSw0NiArMTI2LDY2IEBAIGludCBnZW1fbXVubWFwKHZvaWQgKnB0ciwg dWludDY0X3Qgc2l6ZSkKIAlyZXR1cm4gcmV0OwogfQogCi1ib29sIGdlbV9tbWFwX19oYXNfd2Mo aW50IGZkKQorYm9vbCBfX2dlbV9tbWFwX19oYXNfd2MoaW50IGZkKQogewotCXN0YXRpYyBpbnQg aGFzX3djID0gLTE7Ci0KLQlpZiAoaGFzX3djID09IC0xKSB7Ci0JCXN0cnVjdCBkcm1faTkxNV9n ZXRwYXJhbSBncDsKLQkJaW50IG1tYXBfdmVyc2lvbiA9IC0xOwotCQlpbnQgZ3R0X3ZlcnNpb24g PSAtMTsKLQotCQloYXNfd2MgPSAwOwotCi0JCW1lbXNldCgmZ3AsIDAsIHNpemVvZihncCkpOwot CQlncC5wYXJhbSA9IEk5MTVfUEFSQU1fTU1BUF9HVFRfVkVSU0lPTjsKLQkJZ3AudmFsdWUgPSAm Z3R0X3ZlcnNpb247Ci0JCWlvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRVRQQVJBTSwgJmdwKTsK LQotCQltZW1zZXQoJmdwLCAwLCBzaXplb2YoZ3ApKTsKLQkJZ3AucGFyYW0gPSBJOTE1X1BBUkFN X01NQVBfVkVSU0lPTjsKLQkJZ3AudmFsdWUgPSAmbW1hcF92ZXJzaW9uOwotCQlpb2N0bChmZCwg RFJNX0lPQ1RMX0k5MTVfR0VUUEFSQU0sICZncCk7Ci0KLQkJLyogRG8gd2UgaGF2ZSB0aGUgbmV3 IG1tYXBfaW9jdGwgd2l0aCBET01BSU5fV0M/ICovCi0JCWlmIChtbWFwX3ZlcnNpb24gPj0gMSAm JiBndHRfdmVyc2lvbiA+PSAyKSB7Ci0JCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXAgYXJnOwot Ci0JCQkvKiBEb2VzIHRoaXMgZGV2aWNlIHN1cHBvcnQgd2MtbW1hcHMgPyAqLwotCQkJbWVtc2V0 KCZhcmcsIDAsIHNpemVvZihhcmcpKTsKLQkJCWFyZy5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0 MDk2KTsKLQkJCWFyZy5vZmZzZXQgPSAwOwotCQkJYXJnLnNpemUgPSA0MDk2OwotCQkJYXJnLmZs YWdzID0gSTkxNV9NTUFQX1dDOwotCQkJaGFzX3djID0gaWd0X2lvY3RsKGZkLCBEUk1fSU9DVExf STkxNV9HRU1fTU1BUCwgJmFyZykgPT0gMDsKLQkJCWdlbV9jbG9zZShmZCwgYXJnLmhhbmRsZSk7 Ci0JCX0KLQkJZXJybm8gPSAwOworCWludCBoYXNfd2MgPSAwOworCisJc3RydWN0IGRybV9pOTE1 X2dldHBhcmFtIGdwOworCWludCBtbWFwX3ZlcnNpb24gPSAtMTsKKworCW1lbXNldCgmZ3AsIDAs IHNpemVvZihncCkpOworCWdwLnBhcmFtID0gSTkxNV9QQVJBTV9NTUFQX1ZFUlNJT047CisJZ3Au dmFsdWUgPSAmbW1hcF92ZXJzaW9uOworCWlvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRVRQQVJB TSwgJmdwKTsKKworCS8qIERvIHdlIGhhdmUgdGhlIG1tYXBfaW9jdGwgd2l0aCBET01BSU5fV0M/ ICovCisJaWYgKG1tYXBfdmVyc2lvbiA+PSAxICYmIGdlbV9tbWFwX2d0dF92ZXJzaW9uKGZkKSA+ PSAyKSB7CisJCXN0cnVjdCBkcm1faTkxNV9nZW1fbW1hcCBhcmc7CisKKwkJLyogRG9lcyB0aGlz IGRldmljZSBzdXBwb3J0IHdjLW1tYXBzID8gKi8KKwkJbWVtc2V0KCZhcmcsIDAsIHNpemVvZihh cmcpKTsKKwkJYXJnLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOworCQlhcmcub2Zmc2V0 ID0gMDsKKwkJYXJnLnNpemUgPSA0MDk2OworCQlhcmcuZmxhZ3MgPSBJOTE1X01NQVBfV0M7CisJ CWhhc193YyA9IGlndF9pb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VNX01NQVAsICZhcmcpID09 IDA7CisJCWdlbV9jbG9zZShmZCwgYXJnLmhhbmRsZSk7CisKKwkJaWYgKGhhc193YyAmJiBmcm9t X3VzZXJfcG9pbnRlcihhcmcuYWRkcl9wdHIpKQorCQkJbXVubWFwKGZyb21fdXNlcl9wb2ludGVy KGFyZy5hZGRyX3B0ciksIGFyZy5zaXplKTsKIAl9CisJZXJybm8gPSAwOworCisJcmV0dXJuIGhh c193YyA+IDA7Cit9CisKK2Jvb2wgX19nZW1fbW1hcF9vZmZzZXRfX2hhc193YyhpbnQgZmQpCit7 CisJaW50IGhhc193YyA9IDA7CisJc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwX29mZnNldCBhcmc7 CisKKwlpZiAoIWdlbV9oYXNfbW1hcF9vZmZzZXQoZmQpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkv KiBEb2VzIHRoaXMgZGV2aWNlIHN1cHBvcnQgd2MtbW1hcHMgPyAqLworCW1lbXNldCgmYXJnLCAw LCBzaXplb2YoYXJnKSk7CisJYXJnLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOworCWFy Zy5vZmZzZXQgPSAwOworCWFyZy5mbGFncyA9IEk5MTVfTU1BUF9PRkZTRVRfV0M7CisJaGFzX3dj ID0gaWd0X2lvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fTU1BUF9PRkZTRVQsCisJCQkgICAm YXJnKSA9PSAwOworCWdlbV9jbG9zZShmZCwgYXJnLmhhbmRsZSk7CisKKwllcnJubyA9IDA7CiAK IAlyZXR1cm4gaGFzX3djID4gMDsKIH0KIAorYm9vbCBnZW1fbW1hcF9faGFzX3djKGludCBmZCkK K3sKKwlyZXR1cm4gX19nZW1fbW1hcF9vZmZzZXRfX2hhc193YyhmZCkgfHwgX19nZW1fbW1hcF9f aGFzX3djKGZkKTsKK30KKwogLyoqCiAgKiBfX2dlbV9tbWFwOgogICogQGZkOiBvcGVuIGk5MTUg ZHJtIGZpbGUgZGVzY3JpcHRvcgpAQCAtMTU3LDExICsyMDIsMTMgQEAgYm9vbCBnZW1fbW1hcF9f aGFzX3djKGludCBmZCkKICAqCiAgKiBSZXR1cm5zOiBBIHBvaW50ZXIgdG8gdGhlIGNyZWF0ZWQg bWVtb3J5IG1hcHBpbmcsIE5VTEwgb24gZmFpbHVyZS4KICAqLwotc3RhdGljIHZvaWQKLSpfX2dl bV9tbWFwKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90 IHNpemUsIHVuc2lnbmVkIGludCBwcm90LCB1aW50NjRfdCBmbGFncykKK3ZvaWQgKl9fZ2VtX21t YXAoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6 ZSwKKwkJIHVuc2lnbmVkIGludCBwcm90LCB1aW50NjRfdCBmbGFncykKIHsKIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX21tYXAgYXJnOwogCisJaWd0X2Fzc2VydChvZmZzZXQgPT0gMCk7CisKIAltZW1z ZXQoJmFyZywgMCwgc2l6ZW9mKGFyZykpOwogCWFyZy5oYW5kbGUgPSBoYW5kbGU7CiAJYXJnLm9m ZnNldCA9IG9mZnNldDsKQEAgLTE3Nyw2ICsyMjQsNTAgQEAgc3RhdGljIHZvaWQKIAlyZXR1cm4g ZnJvbV91c2VyX3BvaW50ZXIoYXJnLmFkZHJfcHRyKTsKIH0KIAorLyoqCisgKiBfX2dlbV9tbWFw X29mZnNldDoKKyAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKKyAqIEBoYW5k bGU6IGdlbSBidWZmZXIgb2JqZWN0IGhhbmRsZQorICogQG9mZnNldDogb2Zmc2V0IGluIHRoZSBn ZW0gYnVmZmVyIG9mIHRoZSBtbWFwIGFyZW5hCisgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgbW1hcCBh cmVuYQorICogQHByb3Q6IG1lbW9yeSBwcm90ZWN0aW9uIGJpdHMgYXMgdXNlZCBieSBtbWFwKCkK KyAqIEBmbGFnczogZmxhZ3MgdXNlZCB0byBkZXRlcm1pbmUgY2FjaGluZworICoKKyAqIE1tYXAg dGhlIGdlbSBidWZmZXIgbWVtb3J5IG9uIG9mZnNldCByZXR1cm5lZCBpbiBHRU1fTU1BUF9PRkZT RVQgaW9jdGwuCisgKiBPZmZzZXQgYXJndW1lbnQgcGFzc2VkIGluIGZ1bmN0aW9uIGNhbGwgbXVz dCBiZSAwLiBJbiB0aGUgZnV0dXJlCisgKiB3aGVuIGRyaXZlciB3aWxsIGFsbG93IHNsaWNlIG1h cHBpbmcgb2YgYnVmZmVyIG9iamVjdCB0aGlzIHJlc3RyaWN0aW9uCisgKiB3aWxsIGJlIHJlbW92 ZWQuCisgKgorICogUmV0dXJuczogQSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIG1lbW9yeSBtYXBw aW5nLCBOVUxMIG9uIGZhaWx1cmUuCisgKi8KK3ZvaWQgKl9fZ2VtX21tYXBfb2Zmc2V0KGludCBm ZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUsCisJCQl1 bnNpZ25lZCBpbnQgcHJvdCwgdWludDY0X3QgZmxhZ3MpCit7CisJc3RydWN0IGRybV9pOTE1X2dl bV9tbWFwX29mZnNldCBhcmc7CisJdm9pZCAqcHRyOworCisJaWYgKCFnZW1faGFzX21tYXBfb2Zm c2V0KGZkKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlpZ3RfYXNzZXJ0KG9mZnNldCA9PSAwKTsKKwor CW1lbXNldCgmYXJnLCAwLCBzaXplb2YoYXJnKSk7CisJYXJnLmhhbmRsZSA9IGhhbmRsZTsKKwlh cmcuZmxhZ3MgPSBmbGFnczsKKworCWlmIChpZ3RfaW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X0dF TV9NTUFQX09GRlNFVCwgJmFyZykpCisJCXJldHVybiBOVUxMOworCisJcHRyID0gbW1hcDY0KDAs IHNpemUsIHByb3QsIE1BUF9TSEFSRUQsIGZkLCBhcmcub2Zmc2V0ICsgb2Zmc2V0KTsKKworCWlm IChwdHIgPT0gTUFQX0ZBSUxFRCkKKwkJcHRyID0gTlVMTDsKKwllbHNlCisJCWVycm5vID0gMDsK KworCXJldHVybiBwdHI7Cit9CisKIC8qKgogICogX19nZW1fbW1hcF9fd2M6CiAgKiBAZmQ6IG9w ZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCkBAIC0xODUsNyArMjc2LDcgQEAgc3RhdGljIHZv aWQKICAqIEBzaXplOiBzaXplIG9mIHRoZSBtbWFwIGFyZW5hCiAgKiBAcHJvdDogbWVtb3J5IHBy b3RlY3Rpb24gYml0cyBhcyB1c2VkIGJ5IG1tYXAoKQogICoKLSAqIFRoaXMgZnVuY3Rpb25zIHdy YXBzIHVwIHByb2NlZHVyZSB0byBlc3RhYmxpc2ggYSBtZW1vcnkgbWFwcGluZyB0aHJvdWdoCisg KiBUaGlzIGZ1bmN0aW9uIHdyYXBzIHVwIHByb2NlZHVyZSB0byBlc3RhYmxpc2ggYSBtZW1vcnkg bWFwcGluZyB0aHJvdWdoCiAgKiBkaXJlY3QgY3B1IGFjY2VzcywgYnlwYXNzaW5nIHRoZSBncHUg YW5kIGNwdSBjYWNoZXMgY29tcGxldGVseSBhbmQgYWxzbwogICogYnlwYXNzaW5nIHRoZSBHVFQg c3lzdGVtIGFnZW50IChpLmUuIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyB0aWxpbmcgb2YKICAqIHRo ZSBtbWFwcGluZyB0aHJvdWdoIHRoZSBmZW5jZSByZWdpc3RlcnMpLgpAQCAtMjA1LDE3ICsyOTYs MTE0IEBAIHZvaWQgKl9fZ2VtX21tYXBfX3djKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50 NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUsIHVuCiAgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgbW1h cCBhcmVuYQogICogQHByb3Q6IG1lbW9yeSBwcm90ZWN0aW9uIGJpdHMgYXMgdXNlZCBieSBtbWFw KCkKICAqCi0gKiBMaWtlIF9fZ2VtX21tYXBfX3djKCkgZXhjZXB0IHdlIGFzc2VydCBvbiBmYWls dXJlLgorICogVHJ5IHRvIF9fZ2VtX21tYXBfX3djKCkuIEFzc2VydCBvbiBmYWlsdXJlLgogICoK ICAqIFJldHVybnM6IEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBtZW1vcnkgbWFwcGluZwogICov CiB2b2lkICpnZW1fbW1hcF9fd2MoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9m ZnNldCwgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCkKIHsKIAl2b2lkICpwdHIgPSBfX2dl bV9tbWFwX193YyhmZCwgaGFuZGxlLCBvZmZzZXQsIHNpemUsIHByb3QpOworCiAJaWd0X2Fzc2Vy dChwdHIpOwogCXJldHVybiBwdHI7CiB9CiAKKy8qKgorICogX19nZW1fbW1hcF9vZmZzZXRfX3dj OgorICogQGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgorICogQGhhbmRsZTogZ2Vt IGJ1ZmZlciBvYmplY3QgaGFuZGxlCisgKiBAb2Zmc2V0OiBvZmZzZXQgaW4gdGhlIGdlbSBidWZm ZXIgb2YgdGhlIG1tYXAgYXJlbmEKKyAqIEBzaXplOiBzaXplIG9mIHRoZSBtbWFwIGFyZW5hCisg KiBAcHJvdDogbWVtb3J5IHByb3RlY3Rpb24gYml0cyBhcyB1c2VkIGJ5IG1tYXAoKQorICoKKyAq IFRoaXMgZnVuY3Rpb24gd3JhcHMgdXAgcHJvY2VkdXJlIHRvIGVzdGFibGlzaCBhIG1lbW9yeSBt YXBwaW5nIHRocm91Z2gKKyAqIGRpcmVjdCBjcHUgYWNjZXNzLCBieXBhc3NpbmcgdGhlIGdwdSBh bmQgY3B1IGNhY2hlcyBjb21wbGV0ZWx5IGFuZCBhbHNvCisgKiBieXBhc3NpbmcgdGhlIEdUVCBz eXN0ZW0gYWdlbnQgKGkuZS4gdGhlcmUgaXMgbm8gYXV0b21hdGljIHRpbGluZyBvZgorICogdGhl IG1tYXBwaW5nIHRocm91Z2ggdGhlIGZlbmNlIHJlZ2lzdGVycykuCisgKgorICogUmV0dXJuczog QSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIG1lbW9yeSBtYXBwaW5nLCBOVUxMIG9uIGZhaWx1cmUu CisgKi8KK3ZvaWQgKl9fZ2VtX21tYXBfb2Zmc2V0X193YyhpbnQgZmQsIHVpbnQzMl90IGhhbmRs ZSwgdWludDY0X3Qgb2Zmc2V0LAorCQkJICAgIHVpbnQ2NF90IHNpemUsIHVuc2lnbmVkIHByb3Qp Cit7CisJcmV0dXJuIF9fZ2VtX21tYXBfb2Zmc2V0KGZkLCBoYW5kbGUsIG9mZnNldCwgc2l6ZSwg cHJvdCwKKwkJCQkgSTkxNV9NTUFQX09GRlNFVF9XQyk7Cit9CisKKy8qKgorICogZ2VtX21tYXBf b2Zmc2V0X193YzoKKyAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKKyAqIEBo YW5kbGU6IGdlbSBidWZmZXIgb2JqZWN0IGhhbmRsZQorICogQG9mZnNldDogb2Zmc2V0IGluIHRo ZSBnZW0gYnVmZmVyIG9mIHRoZSBtbWFwIGFyZW5hCisgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgbW1h cCBhcmVuYQorICogQHByb3Q6IG1lbW9yeSBwcm90ZWN0aW9uIGJpdHMgYXMgdXNlZCBieSBtbWFw KCkKKyAqCisgKiBUcnkgdG8gX19nZW1fbW1hcF9vZmZzZXRfX3djKCkuIEFzc2VydCBvbiBmYWls dXJlLgorICoKKyAqIFJldHVybnM6IEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBtZW1vcnkgbWFw cGluZworICovCit2b2lkICpnZW1fbW1hcF9vZmZzZXRfX3djKGludCBmZCwgdWludDMyX3QgaGFu ZGxlLCB1aW50NjRfdCBvZmZzZXQsCisJCQkgIHVpbnQ2NF90IHNpemUsIHVuc2lnbmVkIHByb3Qp Cit7CisJdm9pZCAqcHRyID0gX19nZW1fbW1hcF9vZmZzZXRfX3djKGZkLCBoYW5kbGUsIG9mZnNl dCwgc2l6ZSwgcHJvdCk7CisKKwlpZ3RfYXNzZXJ0KHB0cik7CisJcmV0dXJuIHB0cjsKK30KKwor LyoqCisgKiBfX2dlbV9tbWFwX19kZXZpY2VfY29oZXJlbnQ6CisgKiBAZmQ6IG9wZW4gaTkxNSBk cm0gZmlsZSBkZXNjcmlwdG9yCisgKiBAaGFuZGxlOiBnZW0gYnVmZmVyIG9iamVjdCBoYW5kbGUK KyAqIEBvZmZzZXQ6IG9mZnNldCBpbiB0aGUgZ2VtIGJ1ZmZlciBvZiB0aGUgbW1hcCBhcmVuYQor ICogQHNpemU6IHNpemUgb2YgdGhlIG1tYXAgYXJlbmEKKyAqIEBwcm90OiBtZW1vcnkgcHJvdGVj dGlvbiBiaXRzIGFzIHVzZWQgYnkgbW1hcCgpCisgKgorICogUmV0dXJuczogQSBwb2ludGVyIHRv IGEgYmxvY2sgb2YgbGluZWFyIGRldmljZSBtZW1vcnkgbWFwcGVkIGludG8gdGhlCisgKiBwcm9j ZXNzIHdpdGggV0Mgc2VtYW50aWNzLiBXaGVuIG5vIFdDIGlzIGF2YWlsYWJsZSB0cnkgdG8gbW1h cCB1c2luZyBHR1RULgorICovCit2b2lkICpfX2dlbV9tbWFwX19kZXZpY2VfY29oZXJlbnQoaW50 IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwKKwkJCQkgIHVpbnQ2NF90IHNp emUsIHVuc2lnbmVkIHByb3QpCit7CisJdm9pZCAqcHRyID0gX19nZW1fbW1hcF9vZmZzZXQoZmQs IGhhbmRsZSwgb2Zmc2V0LCBzaXplLCBwcm90LAorCQkJCSAgICAgIEk5MTVfTU1BUF9PRkZTRVRf V0MpOworCWlmICghcHRyKQorCQlwdHIgPSBfX2dlbV9tbWFwX193YyhmZCwgaGFuZGxlLCBvZmZz ZXQsIHNpemUsIHByb3QpOworCisJaWYgKCFwdHIpCisJCXB0ciA9IF9fZ2VtX21tYXBfX2d0dChm ZCwgaGFuZGxlLCBzaXplLCBwcm90KTsKKworCXJldHVybiBwdHI7Cit9CisKKy8qKgorICogZ2Vt X21tYXBfX2RldmljZV9jb2hlcmVudDoKKyAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2Ny aXB0b3IKKyAqIEBoYW5kbGU6IGdlbSBidWZmZXIgb2JqZWN0IGhhbmRsZQorICogQG9mZnNldDog b2Zmc2V0IGluIHRoZSBnZW0gYnVmZmVyIG9mIHRoZSBtbWFwIGFyZW5hCisgKiBAc2l6ZTogc2l6 ZSBvZiB0aGUgbW1hcCBhcmVuYQorICogQHByb3Q6IG1lbW9yeSBwcm90ZWN0aW9uIGJpdHMgYXMg dXNlZCBieSBtbWFwKCkKKyAqCisgKiBDYWxsIF9fZ2VtX21tYXBfX2RldmljZV9fY29oZXJlbnQo KSwgYXNzZXJ0cyBvbiBmYWlsLgorICogT2Zmc2V0IGFyZ3VtZW50IHBhc3NlZCBpbiBmdW5jdGlv biBjYWxsIG11c3QgYmUgMC4gSW4gdGhlIGZ1dHVyZQorICogd2hlbiBkcml2ZXIgd2lsbCBhbGxv dyBzbGljZSBtYXBwaW5nIG9mIGJ1ZmZlciBvYmplY3QgdGhpcyByZXN0cmljdGlvbgorICogd2ls bCBiZSByZW1vdmVkLgorICoKKyAqIFJldHVybnM6IEEgcG9pbnRlciB0byB0aGUgY3JlYXRlZCBt ZW1vcnkgbWFwcGluZy4KKyAqLwordm9pZCAqZ2VtX21tYXBfX2RldmljZV9jb2hlcmVudChpbnQg ZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LAorCQkJCXVpbnQ2NF90IHNpemUs IHVuc2lnbmVkIHByb3QpCit7CisJdm9pZCAqcHRyOworCisJaWd0X2Fzc2VydChvZmZzZXQgPT0g MCk7CisKKwlwdHIgPSBfX2dlbV9tbWFwX19kZXZpY2VfY29oZXJlbnQoZmQsIGhhbmRsZSwgb2Zm c2V0LCBzaXplLCBwcm90KTsKKwlpZ3RfYXNzZXJ0KHB0cik7CisKKwlyZXR1cm4gcHRyOworfQor CiAvKioKICAqIF9fZ2VtX21tYXBfX2NwdToKICAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRl c2NyaXB0b3IKQEAgLTI0OSw2ICs0MzcsNDkgQEAgdm9pZCAqX19nZW1fbW1hcF9fY3B1KGludCBm ZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUsIHUKIHZv aWQgKmdlbV9tbWFwX19jcHUoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNl dCwgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCkKIHsKIAl2b2lkICpwdHIgPSBfX2dlbV9t bWFwX19jcHUoZmQsIGhhbmRsZSwgb2Zmc2V0LCBzaXplLCBwcm90KTsKKworCWlndF9hc3NlcnQo cHRyKTsKKwlyZXR1cm4gcHRyOworfQorCisvKioKKyAqIF9fZ2VtX21tYXBfb2Zmc2V0X19jcHU6 CisgKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCisgKiBAaGFuZGxlOiBnZW0g YnVmZmVyIG9iamVjdCBoYW5kbGUKKyAqIEBvZmZzZXQ6IG9mZnNldCBpbiB0aGUgZ2VtIGJ1ZmZl ciBvZiB0aGUgbW1hcCBhcmVuYQorICogQHNpemU6IHNpemUgb2YgdGhlIG1tYXAgYXJlbmEKKyAq IEBwcm90OiBtZW1vcnkgcHJvdGVjdGlvbiBiaXRzIGFzIHVzZWQgYnkgbW1hcCgpCisgKgorICog VGhpcyBmdW5jdGlvbiB3cmFwcyB1cCBwcm9jZWR1cmUgdG8gZXN0YWJsaXNoIGEgbWVtb3J5IG1h cHBpbmcgdGhyb3VnaAorICogZGlyZWN0IGNwdSBhY2Nlc3MuCisgKgorICogUmV0dXJuczogQSBw b2ludGVyIHRvIHRoZSBjcmVhdGVkIG1lbW9yeSBtYXBwaW5nLCBOVUxMIG9uIGZhaWx1cmUuCisg Ki8KK3ZvaWQgKl9fZ2VtX21tYXBfb2Zmc2V0X19jcHUoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUs IHVpbnQ2NF90IG9mZnNldCwKKwkJCSAgICAgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCkK K3sKKwlyZXR1cm4gX19nZW1fbW1hcF9vZmZzZXQoZmQsIGhhbmRsZSwgb2Zmc2V0LCBzaXplLCBw cm90LAorCQkJCSBJOTE1X01NQVBfT0ZGU0VUX1dCKTsKK30KKworLyoqCisgKiBnZW1fbW1hcF9v ZmZzZXRfX2NwdToKKyAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKKyAqIEBo YW5kbGU6IGdlbSBidWZmZXIgb2JqZWN0IGhhbmRsZQorICogQG9mZnNldDogb2Zmc2V0IGluIHRo ZSBnZW0gYnVmZmVyIG9mIHRoZSBtbWFwIGFyZW5hCisgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgbW1h cCBhcmVuYQorICogQHByb3Q6IG1lbW9yeSBwcm90ZWN0aW9uIGJpdHMgYXMgdXNlZCBieSBtbWFw KCkKKyAqCisgKiBMaWtlIF9fZ2VtX21tYXBfX2NwdSgpIGV4Y2VwdCB3ZSBhc3NlcnQgb24gZmFp bHVyZS4KKyAqCisgKiBSZXR1cm5zOiBBIHBvaW50ZXIgdG8gdGhlIGNyZWF0ZWQgbWVtb3J5IG1h cHBpbmcKKyAqLwordm9pZCAqZ2VtX21tYXBfb2Zmc2V0X19jcHUoaW50IGZkLCB1aW50MzJfdCBo YW5kbGUsIHVpbnQ2NF90IG9mZnNldCwKKwkJCSAgIHVpbnQ2NF90IHNpemUsIHVuc2lnbmVkIHBy b3QpCit7CisJdm9pZCAqcHRyID0gX19nZW1fbW1hcF9vZmZzZXQoZmQsIGhhbmRsZSwgb2Zmc2V0 LCBzaXplLCBwcm90LAorCQkJCSAgICAgIEk5MTVfTU1BUF9PRkZTRVRfV0IpOworCiAJaWd0X2Fz c2VydChwdHIpOwogCXJldHVybiBwdHI7CiB9CmRpZmYgLS1naXQgYS9saWIvaTkxNS9nZW1fbW1h bi5oIGIvbGliL2k5MTUvZ2VtX21tYW4uaAppbmRleCAwOTZmZjU5Mi4uZmI2M2VjOGQgMTAwNjQ0 Ci0tLSBhL2xpYi9pOTE1L2dlbV9tbWFuLmgKKysrIGIvbGliL2k5MTUvZ2VtX21tYW4uaApAQCAt MjUsMTIgKzI1LDIxIEBACiAjaWZuZGVmIEdFTV9NTUFOX0gKICNkZWZpbmUgR0VNX01NQU5fSAog CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKIHZvaWQgKmdlbV9tbWFwX19ndHQoaW50IGZkLCB1aW50 MzJfdCBoYW5kbGUsIHVpbnQ2NF90IHNpemUsIHVuc2lnbmVkIHByb3QpOwogdm9pZCAqZ2VtX21t YXBfX2NwdShpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRf dCBzaXplLCB1bnNpZ25lZCBwcm90KTsKK3ZvaWQgKmdlbV9tbWFwX29mZnNldF9fY3B1KGludCBm ZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQsCisJCQkgICB1aW50NjRfdCBzaXpl LCB1bnNpZ25lZCBwcm90KTsKIAorYm9vbCBfX2dlbV9tbWFwX19oYXNfd2MoaW50IGZkKTsKK2Jv b2wgX19nZW1fbW1hcF9vZmZzZXRfX2hhc193YyhpbnQgZmQpOwogYm9vbCBnZW1fbW1hcF9faGFz X3djKGludCBmZCk7CiB2b2lkICpnZW1fbW1hcF9fd2MoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUs IHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCk7Ci0KK3ZvaWQg KmdlbV9tbWFwX29mZnNldF9fd2MoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9m ZnNldCwKKwkJCSAgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCk7Cit2b2lkICpnZW1fbW1h cF9fZGV2aWNlX2NvaGVyZW50KGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZz ZXQsCisJCQkJdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCk7CiAjaWZuZGVmIEk5MTVfR0VN X0RPTUFJTl9XQwogI2RlZmluZSBJOTE1X0dFTV9ET01BSU5fV0MgMHg4MAogI2VuZGlmCkBAIC0z OCw5ICs0NywxOSBAQCB2b2lkICpnZW1fbW1hcF9fd2MoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUs IHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSwgdW5zaQogYm9vbCBnZW1faGFzX21hcHBh YmxlX2dndHQoaW50IGk5MTUpOwogdm9pZCBnZW1fcmVxdWlyZV9tYXBwYWJsZV9nZ3R0KGludCBp OTE1KTsKIAordm9pZCAqX19nZW1fbW1hcChpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0 X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplLAorCQkgdW5zaWduZWQgaW50IHByb3QsIHVpbnQ2NF90 IGZsYWdzKTsKK3ZvaWQgKl9fZ2VtX21tYXBfb2Zmc2V0KGludCBmZCwgdWludDMyX3QgaGFuZGxl LCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUsCisJCQl1bnNpZ25lZCBpbnQgcHJvdCwg dWludDY0X3QgZmxhZ3MpOwogdm9pZCAqX19nZW1fbW1hcF9fZ3R0KGludCBmZCwgdWludDMyX3Qg aGFuZGxlLCB1aW50NjRfdCBzaXplLCB1bnNpZ25lZCBwcm90KTsKIHZvaWQgKl9fZ2VtX21tYXBf X2NwdShpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBz aXplLCB1bnNpZ25lZCBwcm90KTsKK3ZvaWQgKl9fZ2VtX21tYXBfb2Zmc2V0X19jcHUoaW50IGZk LCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwKKwkJCSAgICAgdWludDY0X3Qgc2l6 ZSwgdW5zaWduZWQgcHJvdCk7CiB2b2lkICpfX2dlbV9tbWFwX193YyhpbnQgZmQsIHVpbnQzMl90 IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplLCB1bnNpZ25lZCBwcm90KTsK K3ZvaWQgKl9fZ2VtX21tYXBfb2Zmc2V0X193YyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWlu dDY0X3Qgb2Zmc2V0LAorCQkJICAgIHVpbnQ2NF90IHNpemUsIHVuc2lnbmVkIHByb3QpOwordm9p ZCAqX19nZW1fbW1hcF9fZGV2aWNlX2NvaGVyZW50KGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1 aW50NjRfdCBvZmZzZXQsCisJCQkJICB1aW50NjRfdCBzaXplLCB1bnNpZ25lZCBwcm90KTsKIAog aW50IGdlbV9tdW5tYXAodm9pZCAqcHRyLCB1aW50NjRfdCBzaXplKTsKIApAQCAtNTMsNiArNzIs NyBAQCBpbnQgZ2VtX211bm1hcCh2b2lkICpwdHIsIHVpbnQ2NF90IHNpemUpOwogICogdGhyb3Vn aCBpZ3RfcmVxdWlyZSgpIGlmIG5vdC4KICAqLwogI2RlZmluZSBnZW1fcmVxdWlyZV9tbWFwX3dj KGZkKSBpZ3RfcmVxdWlyZShnZW1fbW1hcF9faGFzX3djKGZkKSkKK3ZvaWQgZ2VtX3JlcXVpcmVf bW1hcF9vZmZzZXQoaW50IGk5MTUpOwogCiAjZW5kaWYgLyogR0VNX01NQU5fSCAqLwogCi0tIAoy LjIzLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmln dC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==