From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2D7A56E89C for ; Thu, 5 Dec 2019 12:31:17 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Thu, 5 Dec 2019 13:31:13 +0100 Message-Id: <20191205123113.12611-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t] lib/i915/gem_mman: Add support for GEM_MMAP_OFFSET ioctl 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: V2l0aCBpbnRyb2R1Y3Rpb24gb2YgbmV3IGtlcm5lbCBpb2N0bCB3ZSBuZWVkIHRvIGNvdmVyIHRo aXMgaW4KdGhlIElHVCdzLiBQYXRjaCBhZGRzIG1tYXAgZnVuY3Rpb25zIGFwcHJvcHJpYXRlIGZv ciB0aGlzLgoKU2lnbmVkLW9mZi1ieTogTHVrYXN6IEthbGFtYXJ6IDxsdWthc3oua2FsYW1hcnpA aW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBBbnRvbmlvIEFyZ2Vuemlhbm8gPGFudG9uaW8uYXJn ZW56aWFub0BpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFpiaWduaWV3IEtlbXBjennFhHNraSA8 emJpZ25pZXcua2VtcGN6eW5za2lAaW50ZWwuY29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0Bj aHJpcy13aWxzb24uY28udWs+Ci0tLQogbGliL2k5MTUvZ2VtX21tYW4uYyB8IDI5MSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQogbGliL2k5MTUvZ2VtX21tYW4u aCB8ICAzOCArKysrKy0KIDIgZmlsZXMgY2hhbmdlZCwgMjkxIGluc2VydGlvbnMoKyksIDM4IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9pOTE1L2dlbV9tbWFuLmMgYi9saWIvaTkxNS9n ZW1fbW1hbi5jCmluZGV4IDYyNTY2MjdiLi5jOThmMDJhZSAxMDA2NDQKLS0tIGEvbGliL2k5MTUv Z2VtX21tYW4uYworKysgYi9saWIvaTkxNS9nZW1fbW1hbi5jCkBAIC00MCw2ICs0MCwyNiBAQAog I2RlZmluZSBWRyh4KSBkbyB7fSB3aGlsZSAoMCkKICNlbmRpZgogCitzdGF0aWMgaW50IGdlbV9t bWFwX2d0dF92ZXJzaW9uKGludCBmZCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2V0cGFyYW0gZ3A7 CisJaW50IGd0dF92ZXJzaW9uID0gLTE7CisKKwltZW1zZXQoJmdwLCAwLCBzaXplb2YoZ3ApKTsK KwlncC5wYXJhbSA9IEk5MTVfUEFSQU1fTU1BUF9HVFRfVkVSU0lPTjsKKwlncC52YWx1ZSA9ICZn dHRfdmVyc2lvbjsKKwlpb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VUUEFSQU0sICZncCk7CisK KwlyZXR1cm4gZ3R0X3ZlcnNpb247Cit9CisKK2Jvb2wgZ2VtX2hhc19tbWFwX29mZnNldChpbnQg ZmQpCit7CisJaW50IGd0dF92ZXJzaW9uID0gZ2VtX21tYXBfZ3R0X3ZlcnNpb24oZmQpOworCisJ cmV0dXJuIGd0dF92ZXJzaW9uID49IDQ7Cit9CisKIC8qKgogICogX19nZW1fbW1hcF9fZ3R0Ogog ICogQGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgpAQCAtMTAzLDQwICsxMjMsNTUg QEAgaW50IGdlbV9tdW5tYXAodm9pZCAqcHRyLCB1aW50NjRfdCBzaXplKQogCiBib29sIGdlbV9t bWFwX19oYXNfd2MoaW50IGZkKQogewotCXN0YXRpYyBpbnQgaGFzX3djID0gLTE7Ci0KLQlpZiAo aGFzX3djID09IC0xKSB7Ci0JCXN0cnVjdCBkcm1faTkxNV9nZXRwYXJhbSBncDsKLQkJaW50IG1t YXBfdmVyc2lvbiA9IC0xOwotCQlpbnQgZ3R0X3ZlcnNpb24gPSAtMTsKLQotCQloYXNfd2MgPSAw OwotCi0JCW1lbXNldCgmZ3AsIDAsIHNpemVvZihncCkpOwotCQlncC5wYXJhbSA9IEk5MTVfUEFS QU1fTU1BUF9HVFRfVkVSU0lPTjsKLQkJZ3AudmFsdWUgPSAmZ3R0X3ZlcnNpb247Ci0JCWlvY3Rs KGZkLCBEUk1fSU9DVExfSTkxNV9HRVRQQVJBTSwgJmdwKTsKLQotCQltZW1zZXQoJmdwLCAwLCBz aXplb2YoZ3ApKTsKLQkJZ3AucGFyYW0gPSBJOTE1X1BBUkFNX01NQVBfVkVSU0lPTjsKLQkJZ3Au dmFsdWUgPSAmbW1hcF92ZXJzaW9uOwotCQlpb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VUUEFS QU0sICZncCk7Ci0KLQkJLyogRG8gd2UgaGF2ZSB0aGUgbmV3IG1tYXBfaW9jdGwgd2l0aCBET01B SU5fV0M/ICovCi0JCWlmIChtbWFwX3ZlcnNpb24gPj0gMSAmJiBndHRfdmVyc2lvbiA+PSAyKSB7 Ci0JCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXAgYXJnOwotCi0JCQkvKiBEb2VzIHRoaXMgZGV2 aWNlIHN1cHBvcnQgd2MtbW1hcHMgPyAqLwotCQkJbWVtc2V0KCZhcmcsIDAsIHNpemVvZihhcmcp KTsKLQkJCWFyZy5oYW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKLQkJCWFyZy5vZmZzZXQg PSAwOwotCQkJYXJnLnNpemUgPSA0MDk2OwotCQkJYXJnLmZsYWdzID0gSTkxNV9NTUFQX1dDOwot CQkJaGFzX3djID0gaWd0X2lvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fTU1BUCwgJmFyZykg PT0gMDsKLQkJCWdlbV9jbG9zZShmZCwgYXJnLmhhbmRsZSk7Ci0JCX0KLQkJZXJybm8gPSAwOwor CWludCBoYXNfd2MgPSAwOworCisJc3RydWN0IGRybV9pOTE1X2dldHBhcmFtIGdwOworCWludCBt bWFwX3ZlcnNpb24gPSAtMTsKKworCW1lbXNldCgmZ3AsIDAsIHNpemVvZihncCkpOworCWdwLnBh cmFtID0gSTkxNV9QQVJBTV9NTUFQX1ZFUlNJT047CisJZ3AudmFsdWUgPSAmbW1hcF92ZXJzaW9u OworCWlvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRVRQQVJBTSwgJmdwKTsKKworCS8qIERvIHdl IGhhdmUgdGhlIG1tYXBfaW9jdGwgd2l0aCBET01BSU5fV0M/ICovCisJaWYgKG1tYXBfdmVyc2lv biA+PSAxICYmIGdlbV9tbWFwX2d0dF92ZXJzaW9uKGZkKSA+PSAyKSB7CisJCXN0cnVjdCBkcm1f aTkxNV9nZW1fbW1hcCBhcmc7CisKKwkJLyogRG9lcyB0aGlzIGRldmljZSBzdXBwb3J0IHdjLW1t YXBzID8gKi8KKwkJbWVtc2V0KCZhcmcsIDAsIHNpemVvZihhcmcpKTsKKwkJYXJnLmhhbmRsZSA9 IGdlbV9jcmVhdGUoZmQsIDQwOTYpOworCQlhcmcub2Zmc2V0ID0gMDsKKwkJYXJnLnNpemUgPSA0 MDk2OworCQlhcmcuZmxhZ3MgPSBJOTE1X01NQVBfV0M7CisJCWhhc193YyA9IGlndF9pb2N0bChm ZCwgRFJNX0lPQ1RMX0k5MTVfR0VNX01NQVAsICZhcmcpID09IDA7CisJCWdlbV9jbG9zZShmZCwg YXJnLmhhbmRsZSk7CisKKwkJaWYgKGhhc193YyAmJiBmcm9tX3VzZXJfcG9pbnRlcihhcmcuYWRk cl9wdHIpKQorCQkJbXVubWFwKGZyb21fdXNlcl9wb2ludGVyKGFyZy5hZGRyX3B0ciksIGFyZy5z aXplKTsKIAl9CisJZXJybm8gPSAwOworCisJcmV0dXJuIGhhc193YyA+IDA7Cit9CisKK2Jvb2wg Z2VtX21tYXBfb2Zmc2V0X19oYXNfd2MoaW50IGZkKQoreworCWludCBoYXNfd2MgPSAwOworCXN0 cnVjdCBkcm1faTkxNV9nZW1fbW1hcF9vZmZzZXQgYXJnOworCisJaWYgKCFnZW1faGFzX21tYXBf b2Zmc2V0KGZkKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogRG9lcyB0aGlzIGRldmljZSBzdXBw b3J0IHdjLW1tYXBzID8gKi8KKwltZW1zZXQoJmFyZywgMCwgc2l6ZW9mKGFyZykpOworCWFyZy5o YW5kbGUgPSBnZW1fY3JlYXRlKGZkLCA0MDk2KTsKKwlhcmcub2Zmc2V0ID0gMDsKKwlhcmcuZmxh Z3MgPSBJOTE1X01NQVBfT0ZGU0VUX1dDOworCWhhc193YyA9IGlndF9pb2N0bChmZCwgRFJNX0lP Q1RMX0k5MTVfR0VNX01NQVBfT0ZGU0VULAorCQkJICAgJmFyZykgPT0gMDsKKwlnZW1fY2xvc2Uo ZmQsIGFyZy5oYW5kbGUpOworCisJZXJybm8gPSAwOwogCiAJcmV0dXJuIGhhc193YyA+IDA7CiB9 CkBAIC0xNTcsOCArMTkyLDggQEAgYm9vbCBnZW1fbW1hcF9faGFzX3djKGludCBmZCkKICAqCiAg KiBSZXR1cm5zOiBBIHBvaW50ZXIgdG8gdGhlIGNyZWF0ZWQgbWVtb3J5IG1hcHBpbmcsIE5VTEwg b24gZmFpbHVyZS4KICAqLwotc3RhdGljIHZvaWQKLSpfX2dlbV9tbWFwKGludCBmZCwgdWludDMy X3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUsIHVuc2lnbmVkIGludCBw cm90LCB1aW50NjRfdCBmbGFncykKK3N0YXRpYyB2b2lkICpfX2dlbV9tbWFwKGludCBmZCwgdWlu dDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUsCisJCQl1bnNpZ25l ZCBpbnQgcHJvdCwgdWludDY0X3QgZmxhZ3MpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9tbWFw IGFyZzsKIApAQCAtMTc3LDYgKzIxMiw1MCBAQCBzdGF0aWMgdm9pZAogCXJldHVybiBmcm9tX3Vz ZXJfcG9pbnRlcihhcmcuYWRkcl9wdHIpOwogfQogCisvKioKKyAqIF9fZ2VtX21tYXBfb2Zmc2V0 OgorICogQGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgorICogQGhhbmRsZTogZ2Vt IGJ1ZmZlciBvYmplY3QgaGFuZGxlCisgKiBAb2Zmc2V0OiBvZmZzZXQgaW4gdGhlIGdlbSBidWZm ZXIgb2YgdGhlIG1tYXAgYXJlbmEKKyAqIEBzaXplOiBzaXplIG9mIHRoZSBtbWFwIGFyZW5hCisg KiBAcHJvdDogbWVtb3J5IHByb3RlY3Rpb24gYml0cyBhcyB1c2VkIGJ5IG1tYXAoKQorICogQGZs YWdzOiBmbGFncyB1c2VkIHRvIGRldGVybWluZSBjYWNoaW5nCisgKgorICogTW1hcCB0aGUgZ2Vt IGJ1ZmZlciBtZW1vcnkgb24gb2Zmc2V0IHJldHVybmVkIGluIEdFTV9NTUFQX09GRlNFVCBpb2N0 bC4KKyAqIE9mZnNldCBhcmd1bWVudCBwYXNzZWQgaW4gZnVuY3Rpb24gY2FsbCBtdXN0IGJlIDAu IEluIHRoZSBmdXR1cmUKKyAqIHdoZW4gZHJpdmVyIHdpbGwgYWxsb3cgc2xpY2UgbWFwcGluZyBv ZiBidWZmZXIgb2JqZWN0IHRoaXMgcmVzdHJpY3Rpb24KKyAqIHdpbGwgYmUgcmVtb3ZlZC4KKyAq CisgKiBSZXR1cm5zOiBBIHBvaW50ZXIgdG8gdGhlIGNyZWF0ZWQgbWVtb3J5IG1hcHBpbmcsIE5V TEwgb24gZmFpbHVyZS4KKyAqLwordm9pZCAqX19nZW1fbW1hcF9vZmZzZXQoaW50IGZkLCB1aW50 MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSwKKwkJCXVuc2lnbmVk IGludCBwcm90LCB1aW50NjRfdCBmbGFncykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX21tYXBf b2Zmc2V0IGFyZzsKKwl2b2lkICpwdHI7CisKKwlpZiAoIWdlbV9oYXNfbW1hcF9vZmZzZXQoZmQp KQorCQlyZXR1cm4gTlVMTDsKKworCWlndF9hc3NlcnQob2Zmc2V0ID09IDApOworCisJbWVtc2V0 KCZhcmcsIDAsIHNpemVvZihhcmcpKTsKKwlhcmcuaGFuZGxlID0gaGFuZGxlOworCWFyZy5mbGFn cyA9IGZsYWdzOworCisJaWYgKGlndF9pb2N0bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VNX01NQVBf T0ZGU0VULCAmYXJnKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlwdHIgPSBtbWFwNjQoMCwgc2l6ZSwg cHJvdCwgTUFQX1NIQVJFRCwgZmQsIGFyZy5vZmZzZXQgKyBvZmZzZXQpOworCisJaWYgKHB0ciA9 PSBNQVBfRkFJTEVEKQorCQlwdHIgPSBOVUxMOworCWVsc2UKKwkJZXJybm8gPSAwOworCisJcmV0 dXJuIHB0cjsKK30KKwogLyoqCiAgKiBfX2dlbV9tbWFwX193YzoKICAqIEBmZDogb3BlbiBpOTE1 IGRybSBmaWxlIGRlc2NyaXB0b3IKQEAgLTE4NSw3ICsyNjQsNyBAQCBzdGF0aWMgdm9pZAogICog QHNpemU6IHNpemUgb2YgdGhlIG1tYXAgYXJlbmEKICAqIEBwcm90OiBtZW1vcnkgcHJvdGVjdGlv biBiaXRzIGFzIHVzZWQgYnkgbW1hcCgpCiAgKgotICogVGhpcyBmdW5jdGlvbnMgd3JhcHMgdXAg cHJvY2VkdXJlIHRvIGVzdGFibGlzaCBhIG1lbW9yeSBtYXBwaW5nIHRocm91Z2gKKyAqIFRoaXMg ZnVuY3Rpb24gd3JhcHMgdXAgcHJvY2VkdXJlIHRvIGVzdGFibGlzaCBhIG1lbW9yeSBtYXBwaW5n IHRocm91Z2gKICAqIGRpcmVjdCBjcHUgYWNjZXNzLCBieXBhc3NpbmcgdGhlIGdwdSBhbmQgY3B1 IGNhY2hlcyBjb21wbGV0ZWx5IGFuZCBhbHNvCiAgKiBieXBhc3NpbmcgdGhlIEdUVCBzeXN0ZW0g YWdlbnQgKGkuZS4gdGhlcmUgaXMgbm8gYXV0b21hdGljIHRpbGluZyBvZgogICogdGhlIG1tYXBw aW5nIHRocm91Z2ggdGhlIGZlbmNlIHJlZ2lzdGVycykuCkBAIC0yMDUsNyArMjg0LDcgQEAgdm9p ZCAqX19nZW1fbW1hcF9fd2MoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNl dCwgdWludDY0X3Qgc2l6ZSwgdW4KICAqIEBzaXplOiBzaXplIG9mIHRoZSBtbWFwIGFyZW5hCiAg KiBAcHJvdDogbWVtb3J5IHByb3RlY3Rpb24gYml0cyBhcyB1c2VkIGJ5IG1tYXAoKQogICoKLSAq IExpa2UgX19nZW1fbW1hcF9fd2MoKSBleGNlcHQgd2UgYXNzZXJ0IG9uIGZhaWx1cmUuCisgKiBU cnkgdG8gX19nZW1fbW1hcF9fd2MoKS4gQXNzZXJ0IG9uIGZhaWx1cmUuCiAgKgogICogUmV0dXJu czogQSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIG1lbW9yeSBtYXBwaW5nCiAgKi8KQEAgLTIxNiw2 ICsyOTUsMTAyIEBAIHZvaWQgKmdlbV9tbWFwX193YyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwg dWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplLCB1bnNpCiAJcmV0dXJuIHB0cjsKIH0KIAor LyoqCisgKiBfX2dlbV9tbWFwX29mZnNldF9fd2M6CisgKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmls ZSBkZXNjcmlwdG9yCisgKiBAaGFuZGxlOiBnZW0gYnVmZmVyIG9iamVjdCBoYW5kbGUKKyAqIEBv ZmZzZXQ6IG9mZnNldCBpbiB0aGUgZ2VtIGJ1ZmZlciBvZiB0aGUgbW1hcCBhcmVuYQorICogQHNp emU6IHNpemUgb2YgdGhlIG1tYXAgYXJlbmEKKyAqIEBwcm90OiBtZW1vcnkgcHJvdGVjdGlvbiBi aXRzIGFzIHVzZWQgYnkgbW1hcCgpCisgKgorICogVGhpcyBmdW5jdGlvbiB3cmFwcyB1cCBwcm9j ZWR1cmUgdG8gZXN0YWJsaXNoIGEgbWVtb3J5IG1hcHBpbmcgdGhyb3VnaAorICogZGlyZWN0IGNw dSBhY2Nlc3MsIGJ5cGFzc2luZyB0aGUgZ3B1IGFuZCBjcHUgY2FjaGVzIGNvbXBsZXRlbHkgYW5k IGFsc28KKyAqIGJ5cGFzc2luZyB0aGUgR1RUIHN5c3RlbSBhZ2VudCAoaS5lLiB0aGVyZSBpcyBu byBhdXRvbWF0aWMgdGlsaW5nIG9mCisgKiB0aGUgbW1hcHBpbmcgdGhyb3VnaCB0aGUgZmVuY2Ug cmVnaXN0ZXJzKS4KKyAqCisgKiBSZXR1cm5zOiBBIHBvaW50ZXIgdG8gdGhlIGNyZWF0ZWQgbWVt b3J5IG1hcHBpbmcsIE5VTEwgb24gZmFpbHVyZS4KKyAqLwordm9pZCAqX19nZW1fbW1hcF9vZmZz ZXRfX3djKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQsCisJCQkgICAg dWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCkKK3sKKwlyZXR1cm4gX19nZW1fbW1hcF9vZmZz ZXQoZmQsIGhhbmRsZSwgb2Zmc2V0LCBzaXplLCBwcm90LAorCQkJCSBJOTE1X01NQVBfT0ZGU0VU X1dDKTsKK30KKworLyoqCisgKiBnZW1fbW1hcF9vZmZzZXRfX3djOgorICogQGZkOiBvcGVuIGk5 MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgorICogQGhhbmRsZTogZ2VtIGJ1ZmZlciBvYmplY3QgaGFu ZGxlCisgKiBAb2Zmc2V0OiBvZmZzZXQgaW4gdGhlIGdlbSBidWZmZXIgb2YgdGhlIG1tYXAgYXJl bmEKKyAqIEBzaXplOiBzaXplIG9mIHRoZSBtbWFwIGFyZW5hCisgKiBAcHJvdDogbWVtb3J5IHBy b3RlY3Rpb24gYml0cyBhcyB1c2VkIGJ5IG1tYXAoKQorICoKKyAqIFRyeSB0byBfX2dlbV9tbWFw X29mZnNldF9fd2MoKS4gQXNzZXJ0IG9uIGZhaWx1cmUuCisgKgorICogUmV0dXJuczogQSBwb2lu dGVyIHRvIHRoZSBjcmVhdGVkIG1lbW9yeSBtYXBwaW5nCisgKi8KK3ZvaWQgKmdlbV9tbWFwX29m ZnNldF9fd2MoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwKKwkJCSAg dWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCkKK3sKKwl2b2lkICpwdHIgPSBfX2dlbV9tbWFw X29mZnNldF9fd2MoZmQsIGhhbmRsZSwgb2Zmc2V0LCBzaXplLCBwcm90KTsKKworCWlndF9hc3Nl cnQocHRyKTsKKwlyZXR1cm4gcHRyOworfQorCisvKioKKyAqIF9fZ2VtX21tYXBfX2RldmljZV9j b2hlcmVudDoKKyAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKKyAqIEBoYW5k bGU6IGdlbSBidWZmZXIgb2JqZWN0IGhhbmRsZQorICogQG9mZnNldDogb2Zmc2V0IGluIHRoZSBn ZW0gYnVmZmVyIG9mIHRoZSBtbWFwIGFyZW5hCisgKiBAc2l6ZTogc2l6ZSBvZiB0aGUgbW1hcCBh cmVuYQorICogQHByb3Q6IG1lbW9yeSBwcm90ZWN0aW9uIGJpdHMgYXMgdXNlZCBieSBtbWFwKCkK KyAqCisgKiBSZXR1cm5zOiBBIHBvaW50ZXIgdG8gYSBibG9jayBvZiBsaW5lYXIgZGV2aWNlIG1l bW9yeSBtYXBwZWQgaW50byB0aGUKKyAqIHByb2Nlc3Mgd2l0aCBXQyBzZW1hbnRpY3MuIFdoZW4g bm8gV0MgaXMgYXZhaWxhYmxlIHRyeSB0byBtbWFwIHVzaW5nIEdHVFQuCisgKi8KK3ZvaWQgKl9f Z2VtX21tYXBfX2RldmljZV9jb2hlcmVudChpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0 X3Qgb2Zmc2V0LAorCQkJCSAgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCkKK3sKKwl2b2lk ICpwdHIgPSBfX2dlbV9tbWFwX29mZnNldChmZCwgaGFuZGxlLCBvZmZzZXQsIHNpemUsIHByb3Qs CisJCQkJICAgICAgSTkxNV9NTUFQX09GRlNFVF9XQyk7CisJaWYgKCFwdHIpCisJCXB0ciA9IF9f Z2VtX21tYXBfX3djKGZkLCBoYW5kbGUsIG9mZnNldCwgc2l6ZSwgcHJvdCk7CisKKwlpZiAoIXB0 cikKKwkJcHRyID0gX19nZW1fbW1hcF9fZ3R0KGZkLCBoYW5kbGUsIHNpemUsIHByb3QpOworCisJ cmV0dXJuIHB0cjsKK30KKworLyoqCisgKiBnZW1fbW1hcF9fZGV2aWNlX2NvaGVyZW50OgorICog QGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgorICogQGhhbmRsZTogZ2VtIGJ1ZmZl ciBvYmplY3QgaGFuZGxlCisgKiBAb2Zmc2V0OiBvZmZzZXQgaW4gdGhlIGdlbSBidWZmZXIgb2Yg dGhlIG1tYXAgYXJlbmEKKyAqIEBzaXplOiBzaXplIG9mIHRoZSBtbWFwIGFyZW5hCisgKiBAcHJv dDogbWVtb3J5IHByb3RlY3Rpb24gYml0cyBhcyB1c2VkIGJ5IG1tYXAoKQorICoKKyAqIENhbGwg X19nZW1fbW1hcF9fZGV2aWNlX19jb2hlcmVudCgpLCBhc3NlcnRzIG9uIGZhaWwuCisgKiBPZmZz ZXQgYXJndW1lbnQgcGFzc2VkIGluIGZ1bmN0aW9uIGNhbGwgbXVzdCBiZSAwLiBJbiB0aGUgZnV0 dXJlCisgKiB3aGVuIGRyaXZlciB3aWxsIGFsbG93IHNsaWNlIG1hcHBpbmcgb2YgYnVmZmVyIG9i amVjdCB0aGlzIHJlc3RyaWN0aW9uCisgKiB3aWxsIGJlIHJlbW92ZWQuCisgKgorICogUmV0dXJu czogQSBwb2ludGVyIHRvIHRoZSBjcmVhdGVkIG1lbW9yeSBtYXBwaW5nLgorICovCit2b2lkICpn ZW1fbW1hcF9fZGV2aWNlX2NvaGVyZW50KGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRf dCBvZmZzZXQsCisJCQkJdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCkKK3sKKwl2b2lkICpw dHI7CisKKwlpZ3RfYXNzZXJ0KG9mZnNldCA9PSAwKTsKKworCXB0ciA9IF9fZ2VtX21tYXBfX2Rl dmljZV9jb2hlcmVudChmZCwgaGFuZGxlLCBvZmZzZXQsIHNpemUsIHByb3QpOworCWlndF9hc3Nl cnQocHRyKTsKKworCXJldHVybiBwdHI7Cit9CisKIC8qKgogICogX19nZW1fbW1hcF9fY3B1Ogog ICogQGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgpAQCAtMjUzLDYgKzQyOCw0OCBA QCB2b2lkICpnZW1fbW1hcF9fY3B1KGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBv ZmZzZXQsIHVpbnQ2NF90IHNpemUsIHVucwogCXJldHVybiBwdHI7CiB9CiAKKy8qKgorICogX19n ZW1fbW1hcF9vZmZzZXRfX2NwdToKKyAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0 b3IKKyAqIEBoYW5kbGU6IGdlbSBidWZmZXIgb2JqZWN0IGhhbmRsZQorICogQG9mZnNldDogb2Zm c2V0IGluIHRoZSBnZW0gYnVmZmVyIG9mIHRoZSBtbWFwIGFyZW5hCisgKiBAc2l6ZTogc2l6ZSBv ZiB0aGUgbW1hcCBhcmVuYQorICogQHByb3Q6IG1lbW9yeSBwcm90ZWN0aW9uIGJpdHMgYXMgdXNl ZCBieSBtbWFwKCkKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHdyYXBzIHVwIHByb2NlZHVyZSB0byBl c3RhYmxpc2ggYSBtZW1vcnkgbWFwcGluZyB0aHJvdWdoCisgKiBkaXJlY3QgY3B1IGFjY2Vzcy4K KyAqCisgKiBSZXR1cm5zOiBBIHBvaW50ZXIgdG8gdGhlIGNyZWF0ZWQgbWVtb3J5IG1hcHBpbmcs IE5VTEwgb24gZmFpbHVyZS4KKyAqLwordm9pZCAqX19nZW1fbW1hcF9vZmZzZXRfX2NwdShpbnQg ZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LAorCQkJICAgICB1aW50NjRfdCBz aXplLCB1bnNpZ25lZCBwcm90KQoreworCXJldHVybiBfX2dlbV9tbWFwX29mZnNldChmZCwgaGFu ZGxlLCBvZmZzZXQsIHNpemUsIHByb3QsCisJCQkJIEk5MTVfTU1BUF9PRkZTRVRfV0IpOworfQor CisvKioKKyAqIGdlbV9tbWFwX29mZnNldF9fY3B1OgorICogQGZkOiBvcGVuIGk5MTUgZHJtIGZp bGUgZGVzY3JpcHRvcgorICogQGhhbmRsZTogZ2VtIGJ1ZmZlciBvYmplY3QgaGFuZGxlCisgKiBA b2Zmc2V0OiBvZmZzZXQgaW4gdGhlIGdlbSBidWZmZXIgb2YgdGhlIG1tYXAgYXJlbmEKKyAqIEBz aXplOiBzaXplIG9mIHRoZSBtbWFwIGFyZW5hCisgKiBAcHJvdDogbWVtb3J5IHByb3RlY3Rpb24g Yml0cyBhcyB1c2VkIGJ5IG1tYXAoKQorICoKKyAqIExpa2UgX19nZW1fbW1hcF9fY3B1KCkgZXhj ZXB0IHdlIGFzc2VydCBvbiBmYWlsdXJlLgorICoKKyAqIFJldHVybnM6IEEgcG9pbnRlciB0byB0 aGUgY3JlYXRlZCBtZW1vcnkgbWFwcGluZworICovCit2b2lkICpnZW1fbW1hcF9vZmZzZXRfX2Nw dShpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LAorCQkJICAgdWludDY0 X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCkKK3sKKwl2b2lkICpwdHIgPSBfX2dlbV9tbWFwX29mZnNl dChmZCwgaGFuZGxlLCBvZmZzZXQsIHNpemUsIHByb3QsCisJCQkJICAgICAgSTkxNV9NTUFQX09G RlNFVF9XQik7CisKKwlpZ3RfYXNzZXJ0KHB0cik7CisJcmV0dXJuIHB0cjsKK30KKwogYm9vbCBn ZW1faGFzX21hcHBhYmxlX2dndHQoaW50IGk5MTUpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9t bWFwX2d0dCBhcmcgPSB7fTsKZGlmZiAtLWdpdCBhL2xpYi9pOTE1L2dlbV9tbWFuLmggYi9saWIv aTkxNS9nZW1fbW1hbi5oCmluZGV4IDA5NmZmNTkyLi43YjRkNmY5MCAxMDA2NDQKLS0tIGEvbGli L2k5MTUvZ2VtX21tYW4uaAorKysgYi9saWIvaTkxNS9nZW1fbW1hbi5oCkBAIC0yNSwyNSArMjUs NTEgQEAKICNpZm5kZWYgR0VNX01NQU5fSAogI2RlZmluZSBHRU1fTU1BTl9ICiAKKyNpbmNsdWRl IDxzdGRpbnQuaD4KKwogdm9pZCAqZ2VtX21tYXBfX2d0dChpbnQgZmQsIHVpbnQzMl90IGhhbmRs ZSwgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCk7CiB2b2lkICpnZW1fbW1hcF9fY3B1KGlu dCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUsIHVu c2lnbmVkIHByb3QpOwordm9pZCAqZ2VtX21tYXBfb2Zmc2V0X19jcHUoaW50IGZkLCB1aW50MzJf dCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwKKwkJCSAgIHVpbnQ2NF90IHNpemUsIHVuc2lnbmVk IHByb3QpOwogCiBib29sIGdlbV9tbWFwX19oYXNfd2MoaW50IGZkKTsKK2Jvb2wgZ2VtX21tYXBf b2Zmc2V0X19oYXNfd2MoaW50IGZkKTsKIHZvaWQgKmdlbV9tbWFwX193YyhpbnQgZmQsIHVpbnQz Ml90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LCB1aW50NjRfdCBzaXplLCB1bnNpZ25lZCBwcm90 KTsKLQordm9pZCAqZ2VtX21tYXBfb2Zmc2V0X193YyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSwg dWludDY0X3Qgb2Zmc2V0LAorCQkJICB1aW50NjRfdCBzaXplLCB1bnNpZ25lZCBwcm90KTsKK3Zv aWQgKmdlbV9tbWFwX19kZXZpY2VfY29oZXJlbnQoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVp bnQ2NF90IG9mZnNldCwKKwkJCQl1aW50NjRfdCBzaXplLCB1bnNpZ25lZCBwcm90KTsKICNpZm5k ZWYgSTkxNV9HRU1fRE9NQUlOX1dDCiAjZGVmaW5lIEk5MTVfR0VNX0RPTUFJTl9XQyAweDgwCiAj ZW5kaWYKIAogYm9vbCBnZW1faGFzX21hcHBhYmxlX2dndHQoaW50IGk5MTUpOwogdm9pZCBnZW1f cmVxdWlyZV9tYXBwYWJsZV9nZ3R0KGludCBpOTE1KTsKK2Jvb2wgZ2VtX2hhc19tbWFwX29mZnNl dChpbnQgZmQpOwogCiB2b2lkICpfX2dlbV9tbWFwX19ndHQoaW50IGZkLCB1aW50MzJfdCBoYW5k bGUsIHVpbnQ2NF90IHNpemUsIHVuc2lnbmVkIHByb3QpOwogdm9pZCAqX19nZW1fbW1hcF9fY3B1 KGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUs IHVuc2lnbmVkIHByb3QpOwordm9pZCAqX19nZW1fbW1hcF9vZmZzZXRfX2NwdShpbnQgZmQsIHVp bnQzMl90IGhhbmRsZSwgdWludDY0X3Qgb2Zmc2V0LAorCQkJICAgICB1aW50NjRfdCBzaXplLCB1 bnNpZ25lZCBwcm90KTsKIHZvaWQgKl9fZ2VtX21tYXBfX3djKGludCBmZCwgdWludDMyX3QgaGFu ZGxlLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90IHNpemUsIHVuc2lnbmVkIHByb3QpOwordm9p ZCAqX19nZW1fbW1hcF9vZmZzZXRfX3djKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCB1aW50NjRf dCBvZmZzZXQsCisJCQkgICAgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCk7Cit2b2lkICpf X2dlbV9tbWFwX19kZXZpY2VfY29oZXJlbnQoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2 NF90IG9mZnNldCwKKwkJCQkgIHVpbnQ2NF90IHNpemUsIHVuc2lnbmVkIHByb3QpOwordm9pZCAq X19nZW1fbW1hcF9vZmZzZXQoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNl dCwgdWludDY0X3Qgc2l6ZSwKKwkJCXVuc2lnbmVkIGludCBwcm90LCB1aW50NjRfdCBmbGFncyk7 CiAKIGludCBnZW1fbXVubWFwKHZvaWQgKnB0ciwgdWludDY0X3Qgc2l6ZSk7CiAKKy8qKgorICog Z2VtX3JlcXVpcmVfbW1hcF9vZmZzZXQ6CisgKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNj cmlwdG9yCisgKgorICogRmVhdHVyZSB0ZXN0IG1hY3JvIHRvIHF1ZXJ5IHdoZXRoZXIgaXMgcG9z c2libGUgdG8gbWFwIG1lbW9yeSB1c2luZyBtbWFwCisgKiBvZmZzZXQgaW50ZXJmYWNlLiBBdXRv bWF0aWNhbGx5IHNraXBzIHRocm91Z2ggaWd0X3JlcXVpcmUoKSBpZiBub3QuCisgKi8KKyNkZWZp bmUgZ2VtX3JlcXVpcmVfbW1hcF9vZmZzZXQoZmQpIGlndF9yZXF1aXJlKGdlbV9oYXNfbW1hcF9v ZmZzZXQoZmQpKQorCiAvKioKICAqIGdlbV9yZXF1aXJlX21tYXBfd2M6CiAgKiBAZmQ6IG9wZW4g aTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCkBAIC01NCw1ICs4MCwxNSBAQCBpbnQgZ2VtX211bm1h cCh2b2lkICpwdHIsIHVpbnQ2NF90IHNpemUpOwogICovCiAjZGVmaW5lIGdlbV9yZXF1aXJlX21t YXBfd2MoZmQpIGlndF9yZXF1aXJlKGdlbV9tbWFwX19oYXNfd2MoZmQpKQogCisvKioKKyAqIGdl bV9yZXF1aXJlX21tYXBfb2Zmc2V0X3djOgorICogQGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVz Y3JpcHRvcgorICoKKyAqIEZlYXR1cmUgdGVzdCBtYWNybyB0byBxdWVyeSB3aGV0aGVyIGRpcmVj dCAoaS5lLiBjcHUgYWNjZXNzIHBhdGgsIGJ5cGFzc2luZworICogdGhlIGd0dCkgd3JpdGUtY29t YmluZSBtZW1vcnkgbWFwcGluZ3MgYXJlIGF2YWlsYWJsZS4gQXV0b21hdGljYWxseSBza2lwcwor ICogdGhyb3VnaCBpZ3RfcmVxdWlyZSgpIGlmIG5vdC4KKyAqLworI2RlZmluZSBnZW1fcmVxdWly ZV9tbWFwX29mZnNldF93YyhmZCkgaWd0X3JlcXVpcmUoZ2VtX21tYXBfb2Zmc2V0X19oYXNfd2Mo ZmQpKQorCiAjZW5kaWYgLyogR0VNX01NQU5fSCAqLwogCi0tIAoyLjIzLjAKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0 CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==