From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id D2AF66E8AD for ; Wed, 1 Jul 2020 12:19:31 +0000 (UTC) From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= Date: Wed, 1 Jul 2020 14:19:13 +0200 Message-Id: <20200701121914.31034-4-zbigniew.kempczynski@intel.com> In-Reply-To: <20200701121914.31034-1-zbigniew.kempczynski@intel.com> References: <20200701121914.31034-1-zbigniew.kempczynski@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v12 3/4] tests/api_intel_bb: Add intel_bb API test 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: Chris Wilson List-ID: SUdUIGNvZGUgY29udGFpbnMgc29tZSBtZWNoYW5pc21zIHdoaWNoIGFyZSBxdWl0ZSBsYXJnZSBh bmQgY292ZXIKZGlmZmVyZW50IGdlbnMgc28gdGhleSBkZXNlcnZlIG93biBhcGlfKiBjaGVja3Mu CgpTdGFydGluZyB3aXRoIGFwaV9pbnRlbF9iYiB2ZXJpZnkgaW50ZWxfYmIgZnVuY3Rpb25zIHdv cmsgYXMgZXhwZWN0ZWQuCgpTaWduZWQtb2ZmLWJ5OiBaYmlnbmlldyBLZW1wY3p5xYRza2kgPHpi aWduaWV3LmtlbXBjenluc2tpQGludGVsLmNvbT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hy aXMtd2lsc29uLmNvLnVrPgotLS0KIHRlc3RzL2k5MTUvYXBpX2ludGVsX2JiLmMgfCA2NTkgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3RzL21lc29uLmJ1aWxkICAg ICAgICAgfCAgIDEgKwogMiBmaWxlcyBjaGFuZ2VkLCA2NjAgaW5zZXJ0aW9ucygrKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHRlc3RzL2k5MTUvYXBpX2ludGVsX2JiLmMKCmRpZmYgLS1naXQgYS90ZXN0 cy9pOTE1L2FwaV9pbnRlbF9iYi5jIGIvdGVzdHMvaTkxNS9hcGlfaW50ZWxfYmIuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uM2Y2ZmExNjIKLS0tIC9kZXYvbnVsbAorKysg Yi90ZXN0cy9pOTE1L2FwaV9pbnRlbF9iYi5jCkBAIC0wLDAgKzEsNjU5IEBACisvKgorICogQ29w eXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQor ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl bnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhl IG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhF IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT CisgKiBJTiBUSEUgU09GVFdBUkUuCisgKi8KKworI2luY2x1ZGUgImlndC5oIgorI2luY2x1ZGUg PHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5j bHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxpbnR0eXBlcy5o PgorI2luY2x1ZGUgPGNhaXJvLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzeXMv c3RhdC5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgImludGVsX2J1Zm9wcy5o IgorCisjZGVmaW5lIFBBR0VfU0laRSA0MDk2CisKKyNkZWZpbmUgV0lEVEggNjQKKyNkZWZpbmUg SEVJR0hUIDY0CisjZGVmaW5lIENPTE9SXzAwCTB4MDAKKyNkZWZpbmUgQ09MT1JfMzMJMHgzMwor I2RlZmluZSBDT0xPUl83NwkweDc3CisjZGVmaW5lIENPTE9SX0NDCTB4Y2MKKworSUdUX1RFU1Rf REVTQ1JJUFRJT04oImludGVsX2JiIEFQSSBjaGVjay4iKTsKKworZW51bSByZWxvY19vYmplY3Rz IHsKKwlSRUxPQywKKwlOT1JFTE9DLAorfTsKKworZW51bSBvYmpfY2FjaGVfb3BzIHsKKwlQVVJH RV9DQUNIRSwKKwlLRUVQX0NBQ0hFLAorfTsKKworc3RhdGljIGJvb2wgZGVidWdfYmIgPSBmYWxz ZTsKK3N0YXRpYyBib29sIHdyaXRlX3BuZyA9IGZhbHNlOworc3RhdGljIGJvb2wgYnVmX2luZm8g PSBmYWxzZTsKKworc3RhdGljIHZvaWQgKmFsbG9jX2FsaWduZWQodWludDY0X3Qgc2l6ZSkKK3sK Kwl2b2lkICpwOworCisJaWd0X2Fzc2VydF9lcShwb3NpeF9tZW1hbGlnbigmcCwgMTYsIHNpemUp LCAwKTsKKworCXJldHVybiBwOworfQorCitzdGF0aWMgdm9pZCBmaWxsX2J1ZihzdHJ1Y3QgaW50 ZWxfYnVmICpidWYsIHVpbnQ4X3QgY29sb3IpCit7CisJdWludDhfdCAqcHRyOworCWludCBpOTE1 ID0gYnVmX29wc19nZXRfZmQoYnVmLT5ib3BzKTsKKwlpbnQgaTsKKworCXB0ciA9IGdlbV9tbWFw X19kZXZpY2VfY29oZXJlbnQoaTkxNSwgYnVmLT5oYW5kbGUsIDAsIGJ1Zi0+c2l6ZSwKKwkJCQkJ UFJPVF9XUklURSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgYnVmLT5zaXplOyBpKyspCisJCXB0cltp XSA9IGNvbG9yOworCisJbXVubWFwKHB0ciwgYnVmLT5zaXplKTsKK30KKworc3RhdGljIHZvaWQg Y2hlY2tfYnVmKHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgdWludDhfdCBjb2xvcikKK3sKKwl1aW50 OF90ICpwdHI7CisJaW50IGk5MTUgPSBidWZfb3BzX2dldF9mZChidWYtPmJvcHMpOworCWludCBp OworCisJcHRyID0gZ2VtX21tYXBfX2RldmljZV9jb2hlcmVudChpOTE1LCBidWYtPmhhbmRsZSwg MCwgYnVmLT5zaXplLAorCQkJCQlQUk9UX1JFQUQpOworCisJZm9yIChpID0gMDsgaSA8IGJ1Zi0+ c2l6ZTsgaSsrKQorCQlpZ3RfYXNzZXJ0KHB0cltpXSA9PSBjb2xvcik7CisKKwltdW5tYXAocHRy LCBidWYtPnNpemUpOworfQorCisKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfYnVmICoKK2NyZWF0ZV9i dWYoc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIGludCB3aWR0aCwgaW50IGhlaWdodCwgdWludDhfdCBj b2xvcikKK3sKKwlzdHJ1Y3QgaW50ZWxfYnVmICpidWY7CisKKwlidWYgPSBjYWxsb2MoMSwgc2l6 ZW9mKCpidWYpKTsKKwlpZ3RfYXNzZXJ0KGJ1Zik7CisKKwlpbnRlbF9idWZfaW5pdChib3BzLCBi dWYsIHdpZHRoLzQsIGhlaWdodCwgMzIsIDAsIEk5MTVfVElMSU5HX05PTkUsIDApOworCWZpbGxf YnVmKGJ1ZiwgY29sb3IpOworCisJcmV0dXJuIGJ1ZjsKK30KKworc3RhdGljIHZvaWQgcHJpbnRf YnVmKHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgY29uc3QgY2hhciAqbmFtZSkKK3sKKwl1aW50OF90 ICpwdHI7CisJaW50IGk5MTUgPSBidWZfb3BzX2dldF9mZChidWYtPmJvcHMpOworCisJcHRyID0g Z2VtX21tYXBfX2RldmljZV9jb2hlcmVudChpOTE1LCBidWYtPmhhbmRsZSwgMCwgYnVmLT5zaXpl LAorCQkJCQlQUk9UX1JFQUQpOworCWlndF9kZWJ1ZygiWyVzXSBCdWYgaGFuZGxlOiAlZCwgc2l6 ZTogJWQsIHY6IDB4JTAyeFxuIiwgbmFtZSwKKwkJICBidWYtPmhhbmRsZSwgYnVmLT5zaXplLCBw dHJbMF0pOworCW11bm1hcChwdHIsIGJ1Zi0+c2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkIHNpbXBs ZV9iYihzdHJ1Y3QgYnVmX29wcyAqYm9wcywgYm9vbCB1c2VfY29udGV4dCkKK3sKKwlpbnQgaTkx NSA9IGJ1Zl9vcHNfZ2V0X2ZkKGJvcHMpOworCXN0cnVjdCBpbnRlbF9iYiAqaWJiOworCXVpbnQz Ml90IGN0eDsKKworCWlmICh1c2VfY29udGV4dCkgeworCQlnZW1fcmVxdWlyZV9jb250ZXh0cyhp OTE1KTsKKwkJY3R4ID0gZ2VtX2NvbnRleHRfY3JlYXRlKGk5MTUpOworCX0KKworCWliYiA9IGlu dGVsX2JiX2NyZWF0ZShpOTE1LCBQQUdFX1NJWkUpOworCWlmIChkZWJ1Z19iYikKKwkJaW50ZWxf YmJfc2V0X2RlYnVnKGliYiwgdHJ1ZSk7CisKKwlpbnRlbF9iYl9vdXQoaWJiLCBNSV9CQVRDSF9C VUZGRVJfRU5EKTsKKwlpbnRlbF9iYl9wdHJfYWxpZ24oaWJiLCA4KTsKKworCWludGVsX2JiX2V4 ZWMoaWJiLCBpbnRlbF9iYl9vZmZzZXQoaWJiKSwKKwkJICAgICAgSTkxNV9FWEVDX0RFRkFVTFQg fCBJOTE1X0VYRUNfTk9fUkVMT0MsIHRydWUpOworCisJLyogQ2hlY2sgd2UncmUgc2FmZSB3aXRo IHJlc2V0IGFuZCBubyBkb3VibGUtZnJlZSB3aWxsIG9jY3VyICovCisJaW50ZWxfYmJfcmVzZXQo aWJiLCB0cnVlKTsKKwlpbnRlbF9iYl9yZXNldChpYmIsIGZhbHNlKTsKKwlpbnRlbF9iYl9yZXNl dChpYmIsIHRydWUpOworCisJaW50ZWxfYmJfb3V0KGliYiwgTUlfQkFUQ0hfQlVGRkVSX0VORCk7 CisJaW50ZWxfYmJfcHRyX2FsaWduKGliYiwgOCk7CisKKwlpZiAodXNlX2NvbnRleHQpCisJCWlu dGVsX2JiX2V4ZWNfd2l0aF9jb250ZXh0KGliYiwgaW50ZWxfYmJfb2Zmc2V0KGliYiksIGN0eCwK KwkJCQkJICAgSTkxNV9FWEVDX0RFRkFVTFQgfCBJOTE1X0VYRUNfTk9fUkVMT0MsCisJCQkJCSAg IHRydWUpOworCisJaW50ZWxfYmJfZGVzdHJveShpYmIpOworCWlmICh1c2VfY29udGV4dCkKKwkJ Z2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCBjdHgpOworfQorCitzdGF0aWMgdm9pZCBfX2VtaXRf YmxpdChzdHJ1Y3QgaW50ZWxfYmIgKmliYiwKKwkJCXN0cnVjdCBpbnRlbF9idWYgKnNyYywgc3Ry dWN0IGludGVsX2J1ZiAqZHN0KQoreworCWJvb2wgaGFzXzY0Yl9yZWxvYzsKKworCWhhc182NGJf cmVsb2MgPSBpYmItPmdlbiA+PSA4OworCisJaW50ZWxfYmJfb3V0KGliYiwKKwkJICAgICBYWV9T UkNfQ09QWV9CTFRfQ01EIHwKKwkJICAgICBYWV9TUkNfQ09QWV9CTFRfV1JJVEVfQUxQSEEgfAor CQkgICAgIFhZX1NSQ19DT1BZX0JMVF9XUklURV9SR0IgfAorCQkgICAgICg2ICsgMiAqIGhhc182 NGJfcmVsb2MpKTsKKwlpbnRlbF9iYl9vdXQoaWJiLCAzIDw8IDI0IHwgMHhjYyA8PCAxNiB8IGRz dC0+c3RyaWRlKTsKKwlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKKwlpbnRlbF9iYl9vdXQoaWJiLCBp bnRlbF9idWZfaGVpZ2h0KGRzdCkgPDwgMTYgfCBpbnRlbF9idWZfd2lkdGgoZHN0KSk7CisJaW50 ZWxfYmJfZW1pdF9yZWxvY19mZW5jZWQoaWJiLCBkc3QtPmhhbmRsZSwKKwkJCQkgICBJOTE1X0dF TV9ET01BSU5fUkVOREVSLAorCQkJCSAgIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIsCisJCQkJICAg MCwgMHgwKTsKKwlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKKwlpbnRlbF9iYl9vdXQoaWJiLCBzcmMt PnN0cmlkZSk7CisJaW50ZWxfYmJfZW1pdF9yZWxvY19mZW5jZWQoaWJiLCBzcmMtPmhhbmRsZSwK KwkJCQkgICBJOTE1X0dFTV9ET01BSU5fUkVOREVSLCAwLAorCQkJCSAgIDAsIDB4MCk7Cit9CisK K3N0YXRpYyB2b2lkIGJsaXQoc3RydWN0IGJ1Zl9vcHMgKmJvcHMsCisJCSBlbnVtIHJlbG9jX29i amVjdHMgcmVsb2Nfb2JqLAorCQkgZW51bSBvYmpfY2FjaGVfb3BzIGNhY2hlX29wKQoreworCWlu dCBpOTE1ID0gYnVmX29wc19nZXRfZmQoYm9wcyk7CisJc3RydWN0IGludGVsX2JiICppYmI7CisJ c3RydWN0IGludGVsX2J1ZiAqc3JjLCAqZHN0OworCXVpbnQ2NF90IHBvZmZfYmIsIHBvZmZfc3Jj LCBwb2ZmX2RzdDsKKwl1aW50NjRfdCBwb2ZmMl9iYiwgcG9mZjJfc3JjLCBwb2ZmMl9kc3Q7CisJ dWludDY0X3QgZmxhZ3MgPSAwOworCWJvb2wgcHVyZ2VfY2FjaGUgPSBjYWNoZV9vcCA9PSBQVVJH RV9DQUNIRSA/IHRydWUgOiBmYWxzZTsKKwlib29sIGRvX3JlbG9jcyA9IHJlbG9jX29iaiA9PSBS RUxPQyA/IHRydWUgOiBmYWxzZTsKKworCXNyYyA9IGNyZWF0ZV9idWYoYm9wcywgV0lEVEgsIEhF SUdIVCwgQ09MT1JfQ0MpOworCWRzdCA9IGNyZWF0ZV9idWYoYm9wcywgV0lEVEgsIEhFSUdIVCwg Q09MT1JfMDApOworCisJaWYgKGJ1Zl9pbmZvKSB7CisJCXByaW50X2J1ZihzcmMsICJzcmMiKTsK KwkJcHJpbnRfYnVmKGRzdCwgImRzdCIpOworCX0KKworCWlmIChkb19yZWxvY3MpIHsKKwkJaWJi ID0gaW50ZWxfYmJfY3JlYXRlX3dpdGhfcmVsb2NzKGk5MTUsIFBBR0VfU0laRSk7CisJfSBlbHNl IHsKKwkJaWJiID0gaW50ZWxfYmJfY3JlYXRlKGk5MTUsIFBBR0VfU0laRSk7CisJCWZsYWdzIHw9 IEk5MTVfRVhFQ19OT19SRUxPQzsKKwl9CisKKwlpZiAoaWJiLT5nZW4gPj0gNikKKwkJZmxhZ3Mg fD0gSTkxNV9FWEVDX0JMVDsKKworCWlmIChkZWJ1Z19iYikKKwkJaW50ZWxfYmJfc2V0X2RlYnVn KGliYiwgdHJ1ZSk7CisKKwlfX2VtaXRfYmxpdChpYmIsIHNyYywgZHN0KTsKKworCS8qIFdlIGV4 cGVjdCBpbml0aWFsIGFkZHJlc3NlcyBhcmUgemVyb2VkIGZvciByZWxvY3MgKi8KKwlpZiAocmVs b2Nfb2JqID09IFJFTE9DKSB7CisJCWlndF9hc3NlcnQoaW50ZWxfYmJfZ2V0X29iamVjdF9vZmZz ZXQoaWJiLCBpYmItPmhhbmRsZSkgPT0gMCk7CisJCWlndF9hc3NlcnQoaW50ZWxfYmJfZ2V0X29i amVjdF9vZmZzZXQoaWJiLCBzcmMtPmhhbmRsZSkgPT0gMCk7CisJCWlndF9hc3NlcnQoaW50ZWxf YmJfZ2V0X29iamVjdF9vZmZzZXQoaWJiLCBkc3QtPmhhbmRsZSkgPT0gMCk7CisJfQorCisJaW50 ZWxfYmJfZW1pdF9iYmUoaWJiKTsKKwlpZ3RfZGVidWcoImV4ZWMgZmxhZ3M6ICUiIFBSSVg2NCAi XG4iLCBmbGFncyk7CisJaW50ZWxfYmJfZXhlYyhpYmIsIGludGVsX2JiX29mZnNldChpYmIpLCBm bGFncywgdHJ1ZSk7CisJY2hlY2tfYnVmKGRzdCwgQ09MT1JfQ0MpOworCisJcG9mZl9iYiA9IGlu dGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwgaWJiLT5oYW5kbGUpOworCXBvZmZfc3JjID0g aW50ZWxfYmJfZ2V0X29iamVjdF9vZmZzZXQoaWJiLCBzcmMtPmhhbmRsZSk7CisJcG9mZl9kc3Qg PSBpbnRlbF9iYl9nZXRfb2JqZWN0X29mZnNldChpYmIsIGRzdC0+aGFuZGxlKTsKKwlpbnRlbF9i Yl9yZXNldChpYmIsIHB1cmdlX2NhY2hlKTsKKworCWZpbGxfYnVmKHNyYywgQ09MT1JfNzcpOwor CWZpbGxfYnVmKGRzdCwgQ09MT1JfMDApOworCisJX19lbWl0X2JsaXQoaWJiLCBzcmMsIGRzdCk7 CisKKwlwb2ZmMl9iYiA9IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwgaWJiLT5oYW5k bGUpOworCXBvZmYyX3NyYyA9IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwgc3JjLT5o YW5kbGUpOworCXBvZmYyX2RzdCA9IGludGVsX2JiX2dldF9vYmplY3Rfb2Zmc2V0KGliYiwgZHN0 LT5oYW5kbGUpOworCisJaWd0X2RlYnVnKCJwdXJnZTogJWQsIHJlbG9jczogJWRcbiIsIHB1cmdl X2NhY2hlLCBkb19yZWxvY3MpOworCWlndF9kZWJ1ZygiYmIgIHByZXN1bWVkIG9mZnNldDogMHgl bHhcbiIsIHBvZmZfYmIpOworCWlndF9kZWJ1Zygic3JjIHByZXN1bWVkIG9mZnNldDogMHglbHhc biIsIHBvZmZfc3JjKTsKKwlpZ3RfZGVidWcoImRzdCBwcmVzdW1lZCBvZmZzZXQ6IDB4JWx4XG4i LCBwb2ZmX2RzdCk7CisJaWd0X2RlYnVnKCJiYjIgIHByZXN1bWVkIG9mZnNldDogMHglbHhcbiIs IHBvZmYyX2JiKTsKKwlpZ3RfZGVidWcoInNyYzIgcHJlc3VtZWQgb2Zmc2V0OiAweCVseFxuIiwg cG9mZjJfc3JjKTsKKwlpZ3RfZGVidWcoImRzdDIgcHJlc3VtZWQgb2Zmc2V0OiAweCVseFxuIiwg cG9mZjJfZHN0KTsKKwlpZiAocHVyZ2VfY2FjaGUpIHsKKwkJaWYgKGRvX3JlbG9jcykgeworCQkJ aWd0X2Fzc2VydChwb2ZmMl9iYiA9PSAwKTsKKwkJCWlndF9hc3NlcnQocG9mZjJfc3JjID09IDAp OworCQkJaWd0X2Fzc2VydChwb2ZmMl9kc3QgPT0gMCk7CisJCX0gZWxzZSB7CisJCQlpZ3RfYXNz ZXJ0KHBvZmZfYmIgIT0gcG9mZjJfYmIpOworCQkJaWd0X2Fzc2VydChwb2ZmX3NyYyAhPSBwb2Zm Ml9zcmMpOworCQkJaWd0X2Fzc2VydChwb2ZmX2RzdCAhPSBwb2ZmMl9kc3QpOworCQl9CisJfSBl bHNlIHsKKwkJaWYgKGRvX3JlbG9jcykgeworCQkJdWludDY0X3QgYWRkcnMxID0gcG9mZl9iYiB8 IHBvZmZfc3JjIHwgcG9mZl9kc3Q7CisJCQl1aW50NjRfdCBhZGRyczIgPSBwb2ZmMl9iYiB8IHBv ZmYyX3NyYyB8IHBvZmYyX2RzdDsKKwkJCWlndF9hc3NlcnQoYWRkcnMxICE9IGFkZHJzMik7CisJ CX0gZWxzZSB7CisJCQlpZ3RfYXNzZXJ0KHBvZmZfYmIgPT0gcG9mZjJfYmIpOworCQkJaWd0X2Fz c2VydChwb2ZmX3NyYyA9PSBwb2ZmMl9zcmMpOworCQkJaWd0X2Fzc2VydChwb2ZmX2RzdCA9PSBw b2ZmMl9kc3QpOworCQl9CisJfQorCisJaW50ZWxfYmJfZW1pdF9iYmUoaWJiKTsKKwlpbnRlbF9i Yl9leGVjKGliYiwgaW50ZWxfYmJfb2Zmc2V0KGliYiksIGZsYWdzLCB0cnVlKTsKKwljaGVja19i dWYoZHN0LCBDT0xPUl83Nyk7CisKKwlwb2ZmMl9zcmMgPSBpbnRlbF9iYl9nZXRfb2JqZWN0X29m ZnNldChpYmIsIHNyYy0+aGFuZGxlKTsKKwlwb2ZmMl9kc3QgPSBpbnRlbF9iYl9nZXRfb2JqZWN0 X29mZnNldChpYmIsIGRzdC0+aGFuZGxlKTsKKwlpZ3RfYXNzZXJ0KHBvZmZfc3JjID09IHBvZmYy X3NyYyk7CisJaWd0X2Fzc2VydChwb2ZmX2RzdCA9PSBwb2ZmMl9kc3QpOworCisJaW50ZWxfYnVm X2Nsb3NlKGJvcHMsIHNyYyk7CisJaW50ZWxfYnVmX2Nsb3NlKGJvcHMsIGRzdCk7CisJaW50ZWxf YmJfZGVzdHJveShpYmIpOworfQorCitzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9pbml0KHN0cnVj dCBidWZfb3BzICpib3BzLAorCQkJICAgICBzdHJ1Y3QgaW50ZWxfYnVmICpidWYsCisJCQkgICAg IGludCB3aWR0aCwgaW50IGhlaWdodCwKKwkJCSAgICAgdWludDMyX3QgcmVxX3RpbGluZywKKwkJ CSAgICAgZW51bSBpOTE1X2NvbXByZXNzaW9uIGNvbXByZXNzaW9uKQoreworCWludCBicHAgPSAz MjsKKworCWludGVsX2J1Zl9pbml0KGJvcHMsIGJ1Ziwgd2lkdGgsIGhlaWdodCwgYnBwLCAwLAor CQkgICAgICAgcmVxX3RpbGluZywgY29tcHJlc3Npb24pOworCisJaWd0X2Fzc2VydChpbnRlbF9i dWZfd2lkdGgoYnVmKSA9PSB3aWR0aCk7CisJaWd0X2Fzc2VydChpbnRlbF9idWZfaGVpZ2h0KGJ1 ZikgPT0gaGVpZ2h0KTsKK30KKworc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfZHJhd19wYXR0ZXJu KHN0cnVjdCBidWZfb3BzICpib3BzLAorCQkJCSAgICAgc3RydWN0IGludGVsX2J1ZiAqYnVmLAor CQkJCSAgICAgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsCisJCQkJICAgICBpbnQgY3gsIGlu dCBjeSwgaW50IGN3LCBpbnQgY2gsCisJCQkJICAgICBib29sIHVzZV9hbHRlcm5hdGVfY29sb3Jz KQoreworCWNhaXJvX3N1cmZhY2VfdCAqc3VyZmFjZTsKKwljYWlyb19wYXR0ZXJuX3QgKnBhdDsK KwljYWlyb190ICpjcjsKKwl2b2lkICpsaW5lYXI7CisKKwlsaW5lYXIgPSBhbGxvY19hbGlnbmVk KGJ1Zi0+c2l6ZSk7CisKKwlzdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9y X2RhdGEobGluZWFyLAorCQkJCQkJICAgICAgQ0FJUk9fRk9STUFUX1JHQjI0LAorCQkJCQkJICAg ICAgaW50ZWxfYnVmX3dpZHRoKGJ1ZiksCisJCQkJCQkgICAgICBpbnRlbF9idWZfaGVpZ2h0KGJ1 ZiksCisJCQkJCQkgICAgICBidWYtPnN0cmlkZSk7CisKKwljciA9IGNhaXJvX2NyZWF0ZShzdXJm YWNlKTsKKworCWNhaXJvX3JlY3RhbmdsZShjciwgY3gsIGN5LCBjdywgY2gpOworCWNhaXJvX2Ns aXAoY3IpOworCisJcGF0ID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVfbWVzaCgpOworCWNhaXJvX21l c2hfcGF0dGVybl9iZWdpbl9wYXRjaChwYXQpOworCWNhaXJvX21lc2hfcGF0dGVybl9tb3ZlX3Rv KHBhdCwgeCwgICB5KTsKKwljYWlyb19tZXNoX3BhdHRlcm5fbGluZV90byhwYXQsIHgrdywgeSk7 CisJY2Fpcm9fbWVzaF9wYXR0ZXJuX2xpbmVfdG8ocGF0LCB4K3csIHkraCk7CisJY2Fpcm9fbWVz aF9wYXR0ZXJuX2xpbmVfdG8ocGF0LCB4LCAgIHkraCk7CisJaWYgKHVzZV9hbHRlcm5hdGVfY29s b3JzKSB7CisJCWNhaXJvX21lc2hfcGF0dGVybl9zZXRfY29ybmVyX2NvbG9yX3JnYihwYXQsIDAs IDAuMCwgMS4wLCAxLjApOworCQljYWlyb19tZXNoX3BhdHRlcm5fc2V0X2Nvcm5lcl9jb2xvcl9y Z2IocGF0LCAxLCAxLjAsIDAuMCwgMS4wKTsKKwkJY2Fpcm9fbWVzaF9wYXR0ZXJuX3NldF9jb3Ju ZXJfY29sb3JfcmdiKHBhdCwgMiwgMS4wLCAxLjAsIDAuMCk7CisJCWNhaXJvX21lc2hfcGF0dGVy bl9zZXRfY29ybmVyX2NvbG9yX3JnYihwYXQsIDMsIDAuMCwgMC4wLCAwLjApOworCX0gZWxzZSB7 CisJCWNhaXJvX21lc2hfcGF0dGVybl9zZXRfY29ybmVyX2NvbG9yX3JnYihwYXQsIDAsIDEuMCwg MC4wLCAwLjApOworCQljYWlyb19tZXNoX3BhdHRlcm5fc2V0X2Nvcm5lcl9jb2xvcl9yZ2IocGF0 LCAxLCAwLjAsIDEuMCwgMC4wKTsKKwkJY2Fpcm9fbWVzaF9wYXR0ZXJuX3NldF9jb3JuZXJfY29s b3JfcmdiKHBhdCwgMiwgMC4wLCAwLjAsIDEuMCk7CisJCWNhaXJvX21lc2hfcGF0dGVybl9zZXRf Y29ybmVyX2NvbG9yX3JnYihwYXQsIDMsIDEuMCwgMS4wLCAxLjApOworCX0KKwljYWlyb19tZXNo X3BhdHRlcm5fZW5kX3BhdGNoKHBhdCk7CisKKwljYWlyb19yZWN0YW5nbGUoY3IsIHgsIHksIHcs IGgpOworCWNhaXJvX3NldF9zb3VyY2UoY3IsIHBhdCk7CisJY2Fpcm9fZmlsbChjcik7CisJY2Fp cm9fcGF0dGVybl9kZXN0cm95KHBhdCk7CisKKwljYWlyb19kZXN0cm95KGNyKTsKKworCWNhaXJv X3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsKKworCWxpbmVhcl90b19pbnRlbF9idWYoYm9wcywg YnVmLCBsaW5lYXIpOworCisJZnJlZShsaW5lYXIpOworfQorCisjZGVmaW5lIEdST1VQX1NJWkUg NDA5Ngorc3RhdGljIGludCBjb21wYXJlX2RldGFpbChjb25zdCB1aW50MzJfdCAqcHRyMSwgdWlu dDMyX3QgKnB0cjIsCisJCQkgIHVpbnQzMl90IHNpemUpCit7CisJaW50IGksIG9rID0gMCwgZmFp bCA9IDA7CisJaW50IGdyb3VwcyA9IHNpemUgLyBHUk9VUF9TSVpFOworCWludCAqaGlzdCA9IGNh bGxvYyhHUk9VUF9TSVpFLCBncm91cHMpOworCisJaWd0X2RlYnVnKCJzaXplOiAlZCwgZ3JvdXBf c2l6ZTogJWQsIGdyb3VwczogJWRcbiIsCisJCSAgc2l6ZSwgR1JPVVBfU0laRSwgZ3JvdXBzKTsK KworCWZvciAoaSA9IDA7IGkgPCBzaXplIC8gc2l6ZW9mKHVpbnQzMl90KTsgaSsrKSB7CisJCWlm IChwdHIxW2ldID09IHB0cjJbaV0pIHsKKwkJCW9rKys7CisJCX0gZWxzZSB7CisJCQlmYWlsKys7 CisJCQloaXN0W2kgKiBzaXplb2YodWludDMyX3QpIC8gR1JPVVBfU0laRV0rKzsKKwkJfQorCX0K KworCWZvciAoaSA9IDA7IGkgPCBncm91cHM7IGkrKykgeworCQlpZiAoaGlzdFtpXSkgeworCQkJ aWd0X2RlYnVnKCJbZ3JvdXAgJTR4XTogJWRcbiIsIGksIGhpc3RbaV0pOworCQl9CisJfQorCWZy ZWUoaGlzdCk7CisKKwlpZ3RfZGVidWcoIm9rOiAlZCwgZmFpbDogJWRcbiIsIG9rLCBmYWlsKTsK KworCXJldHVybiBmYWlsOworfQorCitzdGF0aWMgaW50IGNvbXBhcmVfYnVmcyhzdHJ1Y3QgaW50 ZWxfYnVmICpidWYxLCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYyLAorCQkJIGJvb2wgZGV0YWlsX2Nv bXBhcmUpCit7CisJdm9pZCAqcHRyMSwgKnB0cjI7CisJaW50IGZkMSwgZmQyLCByZXQ7CisKKwlp Z3RfYXNzZXJ0KGJ1ZjEtPnNpemUgPT0gYnVmMi0+c2l6ZSk7CisKKwlmZDEgPSBidWZfb3BzX2dl dF9mZChidWYxLT5ib3BzKTsKKwlmZDIgPSBidWZfb3BzX2dldF9mZChidWYyLT5ib3BzKTsKKwor CXB0cjEgPSBnZW1fbW1hcF9fZGV2aWNlX2NvaGVyZW50KGZkMSwgYnVmMS0+aGFuZGxlLCAwLCBi dWYxLT5zaXplLAorCQkJCQkgUFJPVF9SRUFEKTsKKwlwdHIyID0gZ2VtX21tYXBfX2RldmljZV9j b2hlcmVudChmZDIsIGJ1ZjItPmhhbmRsZSwgMCwgYnVmMi0+c2l6ZSwKKwkJCQkJIFBST1RfUkVB RCk7CisJcmV0ID0gbWVtY21wKHB0cjEsIHB0cjIsIGJ1ZjEtPnNpemUpOworCWlmIChkZXRhaWxf Y29tcGFyZSkKKwkJcmV0ID0gY29tcGFyZV9kZXRhaWwocHRyMSwgcHRyMiwgYnVmMS0+c2l6ZSk7 CisKKwltdW5tYXAocHRyMSwgYnVmMS0+c2l6ZSk7CisJbXVubWFwKHB0cjIsIGJ1ZjItPnNpemUp OworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBfX2RvX2ludGVsX2JiX2JsaXQoc3Ry dWN0IGJ1Zl9vcHMgKmJvcHMpCit7CisJc3RydWN0IGludGVsX2JiICppYmI7CisJY29uc3QgaW50 IHdpZHRoID0gMTAyNDsKKwljb25zdCBpbnQgaGVpZ2h0ID0gMTAyNDsKKwlzdHJ1Y3QgaW50ZWxf YnVmIHNyYywgZHN0LCBmaW5hbDsKKwlpbnQgaTkxNSA9IGJ1Zl9vcHNfZ2V0X2ZkKGJvcHMpLCBm YWlsczsKKworCWliYiA9IGludGVsX2JiX2NyZWF0ZShpOTE1LCBQQUdFX1NJWkUpOworCWlmIChk ZWJ1Z19iYikKKwkJaW50ZWxfYmJfc2V0X2RlYnVnKGliYiwgdHJ1ZSk7CisKKwlzY3JhdGNoX2J1 Zl9pbml0KGJvcHMsICZzcmMsIHdpZHRoLCBoZWlnaHQsIEk5MTVfVElMSU5HX05PTkUsCisJCQkg STkxNV9DT01QUkVTU0lPTl9OT05FKTsKKwlzY3JhdGNoX2J1Zl9pbml0KGJvcHMsICZkc3QsIHdp ZHRoLCBoZWlnaHQsIEk5MTVfVElMSU5HX1ksCisJCQkgSTkxNV9DT01QUkVTU0lPTl9OT05FKTsK KwlzY3JhdGNoX2J1Zl9pbml0KGJvcHMsICZmaW5hbCwgd2lkdGgsIGhlaWdodCwgSTkxNV9USUxJ TkdfTk9ORSwKKwkJCSBJOTE1X0NPTVBSRVNTSU9OX05PTkUpOworCisJaWYgKGJ1Zl9pbmZvKSB7 CisJCWludGVsX2J1Zl9wcmludCgmc3JjKTsKKwkJaW50ZWxfYnVmX3ByaW50KCZkc3QpOworCX0K KworCXNjcmF0Y2hfYnVmX2RyYXdfcGF0dGVybihib3BzLCAmc3JjLAorCQkJCSAwLCAwLCB3aWR0 aCwgaGVpZ2h0LAorCQkJCSAwLCAwLCB3aWR0aCwgaGVpZ2h0LCAwKTsKKworCWludGVsX2JiX2Js dF9jb3B5KGliYiwKKwkJCSAgJnNyYywgMCwgMCwgc3JjLnN0cmlkZSwKKwkJCSAgJmRzdCwgMCwg MCwgZHN0LnN0cmlkZSwKKwkJCSAgaW50ZWxfYnVmX3dpZHRoKCZkc3QpLAorCQkJICBpbnRlbF9i dWZfaGVpZ2h0KCZkc3QpLAorCQkJICBkc3QuYnBwKTsKKworCWludGVsX2JiX2JsdF9jb3B5KGli YiwKKwkJCSAgJmRzdCwgMCwgMCwgZHN0LnN0cmlkZSwKKwkJCSAgJmZpbmFsLCAwLCAwLCBmaW5h bC5zdHJpZGUsCisJCQkgIGludGVsX2J1Zl93aWR0aCgmZHN0KSwKKwkJCSAgaW50ZWxfYnVmX2hl aWdodCgmZHN0KSwKKwkJCSAgZHN0LmJwcCk7CisKKwlpbnRlbF9iYl9zeW5jKGliYik7CisJaW50 ZWxfYmJfZGVzdHJveShpYmIpOworCisJaWYgKHdyaXRlX3BuZykgeworCQlpbnRlbF9idWZfd3Jp dGVfdG9fcG5nKCZzcmMsICJiYl9ibGl0X3NyY190aWxpbmdfbm9uZS5wbmciKTsKKwkJaW50ZWxf YnVmX3dyaXRlX3RvX3BuZygmZHN0LCAiYmJfYmxpdF9kc3RfdGlsaW5nX3kucG5nIik7CisJCWlu dGVsX2J1Zl93cml0ZV90b19wbmcoJmZpbmFsLCAiYmJfYmxpdF9maW5hbF90aWxpbmdfbm9uZS5w bmciKTsKKwl9CisKKwlpZ3RfYXNzZXJ0KGNvbXBhcmVfYnVmcygmc3JjLCAmZHN0LCBmYWxzZSkg IT0gMCk7CisJZmFpbHMgPSBjb21wYXJlX2J1ZnMoJnNyYywgJmZpbmFsLCB0cnVlKTsKKworCWlu dGVsX2J1Zl9jbG9zZShib3BzLCAmc3JjKTsKKwlpbnRlbF9idWZfY2xvc2UoYm9wcywgJmRzdCk7 CisJaW50ZWxfYnVmX2Nsb3NlKGJvcHMsICZmaW5hbCk7CisKKwlyZXR1cm4gZmFpbHM7Cit9CisK K3N0YXRpYyB2b2lkIGRvX2ludGVsX2JiX2JsaXQoc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIGludCBs b29wcykKK3sKKwlpbnQgaSwgZmFpbHMgPSAwLCBpOTE1ID0gYnVmX29wc19nZXRfZmQoYm9wcyk7 CisKKwlnZW1fcmVxdWlyZV9ibGl0dGVyKGk5MTUpOworCisJLyogV2UnbGwgZml4IGl0IGZvciBn ZW4yLzMgbGF0ZXIuICovCisJaWd0X3JlcXVpcmUoaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2 aWQoaTkxNSkpID4gMyk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbG9vcHM7IGkrKykgeworCQlmYWls cyArPSBfX2RvX2ludGVsX2JiX2JsaXQoYm9wcyk7CisJfQorCWlndF9hc3NlcnRfZihmYWlscyA9 PSAwLCAiaW50ZWwtYmItYmxpdCBmYWlsczogJWRcbiIsIGZhaWxzKTsKK30KKworc3RhdGljIHZv aWQgb2Zmc2V0X2NvbnRyb2woc3RydWN0IGJ1Zl9vcHMgKmJvcHMpCit7CisJaW50IGk5MTUgPSBi dWZfb3BzX2dldF9mZChib3BzKTsKKwlzdHJ1Y3QgaW50ZWxfYmIgKmliYjsKKwlzdHJ1Y3QgaW50 ZWxfYnVmICpzcmMsICpkc3QxLCAqZHN0MiwgKmRzdDM7CisJdWludDY0X3QgcG9mZl9zcmMsIHBv ZmZfZHN0MSwgcG9mZl9kc3QyOworCisJaWJiID0gaW50ZWxfYmJfY3JlYXRlKGk5MTUsIFBBR0Vf U0laRSk7CisJaWYgKGRlYnVnX2JiKQorCQlpbnRlbF9iYl9zZXRfZGVidWcoaWJiLCB0cnVlKTsK KworCXNyYyA9IGNyZWF0ZV9idWYoYm9wcywgV0lEVEgsIEhFSUdIVCwgQ09MT1JfQ0MpOworCWRz dDEgPSBjcmVhdGVfYnVmKGJvcHMsIFdJRFRILCBIRUlHSFQsIENPTE9SXzAwKTsKKwlkc3QyID0g Y3JlYXRlX2J1Zihib3BzLCBXSURUSCwgSEVJR0hULCBDT0xPUl83Nyk7CisKKwlpbnRlbF9iYl9h ZGRfb2JqZWN0KGliYiwgc3JjLT5oYW5kbGUsIHNyYy0+YWRkci5vZmZzZXQsIGZhbHNlKTsKKwlp bnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgZHN0MS0+aGFuZGxlLCBkc3QxLT5hZGRyLm9mZnNldCwg dHJ1ZSk7CisJaW50ZWxfYmJfYWRkX29iamVjdChpYmIsIGRzdDItPmhhbmRsZSwgZHN0Mi0+YWRk ci5vZmZzZXQsIHRydWUpOworCisJaW50ZWxfYmJfb3V0KGliYiwgTUlfQkFUQ0hfQlVGRkVSX0VO RCk7CisJaW50ZWxfYmJfcHRyX2FsaWduKGliYiwgOCk7CisKKwlpbnRlbF9iYl9leGVjKGliYiwg aW50ZWxfYmJfb2Zmc2V0KGliYiksCisJCSAgICAgIEk5MTVfRVhFQ19ERUZBVUxUIHwgSTkxNV9F WEVDX05PX1JFTE9DLCBmYWxzZSk7CisKKwlpZiAoYnVmX2luZm8pIHsKKwkJcHJpbnRfYnVmKHNy YywgInNyYyAiKTsKKwkJcHJpbnRfYnVmKGRzdDEsICJkc3QxIik7CisJCXByaW50X2J1Zihkc3Qy LCAiZHN0MiIpOworCX0KKworCWlndF9hc3NlcnQoaW50ZWxfYmJfb2JqZWN0X29mZnNldF90b19i dWYoaWJiLCBzcmMpID09IHRydWUpOworCWlndF9hc3NlcnQoaW50ZWxfYmJfb2JqZWN0X29mZnNl dF90b19idWYoaWJiLCBkc3QxKSA9PSB0cnVlKTsKKwlpZ3RfYXNzZXJ0KGludGVsX2JiX29iamVj dF9vZmZzZXRfdG9fYnVmKGliYiwgZHN0MikgPT0gdHJ1ZSk7CisJcG9mZl9zcmMgPSBzcmMtPmFk ZHIub2Zmc2V0OworCXBvZmZfZHN0MSA9IGRzdDEtPmFkZHIub2Zmc2V0OworCXBvZmZfZHN0MiA9 IGRzdDItPmFkZHIub2Zmc2V0OworCWludGVsX2JiX3Jlc2V0KGliYiwgdHJ1ZSk7CisKKwlkc3Qz ID0gY3JlYXRlX2J1Zihib3BzLCBXSURUSCwgSEVJR0hULCBDT0xPUl8zMyk7CisJaW50ZWxfYmJf YWRkX29iamVjdChpYmIsIGRzdDMtPmhhbmRsZSwgZHN0My0+YWRkci5vZmZzZXQsIHRydWUpOwor CWludGVsX2JiX2FkZF9vYmplY3QoaWJiLCBzcmMtPmhhbmRsZSwgc3JjLT5hZGRyLm9mZnNldCwg ZmFsc2UpOworCWludGVsX2JiX2FkZF9vYmplY3QoaWJiLCBkc3QxLT5oYW5kbGUsIGRzdDEtPmFk ZHIub2Zmc2V0LCB0cnVlKTsKKwlpbnRlbF9iYl9hZGRfb2JqZWN0KGliYiwgZHN0Mi0+aGFuZGxl LCBkc3QyLT5hZGRyLm9mZnNldCwgdHJ1ZSk7CisKKwlpbnRlbF9iYl9vdXQoaWJiLCBNSV9CQVRD SF9CVUZGRVJfRU5EKTsKKwlpbnRlbF9iYl9wdHJfYWxpZ24oaWJiLCA4KTsKKworCWludGVsX2Ji X2V4ZWMoaWJiLCBpbnRlbF9iYl9vZmZzZXQoaWJiKSwKKwkJICAgICAgSTkxNV9FWEVDX0RFRkFV TFQgfCBJOTE1X0VYRUNfTk9fUkVMT0MsIGZhbHNlKTsKKwlpbnRlbF9iYl9zeW5jKGliYik7CisK KwlpZ3RfYXNzZXJ0KGludGVsX2JiX29iamVjdF9vZmZzZXRfdG9fYnVmKGliYiwgc3JjKSA9PSB0 cnVlKTsKKwlpZ3RfYXNzZXJ0KGludGVsX2JiX29iamVjdF9vZmZzZXRfdG9fYnVmKGliYiwgZHN0 MSkgPT0gdHJ1ZSk7CisJaWd0X2Fzc2VydChpbnRlbF9iYl9vYmplY3Rfb2Zmc2V0X3RvX2J1Zihp YmIsIGRzdDIpID09IHRydWUpOworCWlndF9hc3NlcnQoaW50ZWxfYmJfb2JqZWN0X29mZnNldF90 b19idWYoaWJiLCBkc3QzKSA9PSB0cnVlKTsKKwlpZ3RfYXNzZXJ0KHBvZmZfc3JjID09IHNyYy0+ YWRkci5vZmZzZXQpOworCWlndF9hc3NlcnQocG9mZl9kc3QxID09IGRzdDEtPmFkZHIub2Zmc2V0 KTsKKwlpZ3RfYXNzZXJ0KHBvZmZfZHN0MiA9PSBkc3QyLT5hZGRyLm9mZnNldCk7CisKKwlpZiAo YnVmX2luZm8pIHsKKwkJcHJpbnRfYnVmKHNyYywgInNyYyAiKTsKKwkJcHJpbnRfYnVmKGRzdDEs ICJkc3QxIik7CisJCXByaW50X2J1Zihkc3QyLCAiZHN0MiIpOworCX0KKworCWludGVsX2JiX2Rl c3Ryb3koaWJiKTsKK30KKworc3RhdGljIHZvaWQgZnVsbF9iYXRjaChzdHJ1Y3QgYnVmX29wcyAq Ym9wcykKK3sKKwlpbnQgaTkxNSA9IGJ1Zl9vcHNfZ2V0X2ZkKGJvcHMpOworCXN0cnVjdCBpbnRl bF9iYiAqaWJiOworCWludCBpOworCisJaWJiID0gaW50ZWxfYmJfY3JlYXRlKGk5MTUsIFBBR0Vf U0laRSk7CisJaWYgKGRlYnVnX2JiKQorCQlpbnRlbF9iYl9zZXRfZGVidWcoaWJiLCB0cnVlKTsK KworCWZvciAoaSA9IDA7IGkgPCBQQUdFX1NJWkUgLyBzaXplb2YodWludDMyX3QpIC0gMTsgaSsr KQorCQlpbnRlbF9iYl9vdXQoaWJiLCAwKTsKKwlpbnRlbF9iYl9lbWl0X2JiZShpYmIpOworCisJ aWd0X2Fzc2VydChpbnRlbF9iYl9vZmZzZXQoaWJiKSA9PSBQQUdFX1NJWkUpOworCWludGVsX2Ji X2V4ZWMoaWJiLCBpbnRlbF9iYl9vZmZzZXQoaWJiKSwKKwkJICAgICAgSTkxNV9FWEVDX0RFRkFV TFQgfCBJOTE1X0VYRUNfTk9fUkVMT0MsIGZhbHNlKTsKKworCWludGVsX2JiX2Rlc3Ryb3koaWJi KTsKK30KKworc3RhdGljIGludCBvcHRfaGFuZGxlcihpbnQgb3B0LCBpbnQgb3B0X2luZGV4LCB2 b2lkICpkYXRhKQoreworCXN3aXRjaCAob3B0KSB7CisJY2FzZSAnZCc6CisJCWRlYnVnX2JiID0g dHJ1ZTsKKwkJYnJlYWs7CisJY2FzZSAncCc6CisJCXdyaXRlX3BuZyA9IHRydWU7CisJCWJyZWFr OworCWNhc2UgJ2knOgorCQlidWZfaW5mbyA9IHRydWU7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJ CXJldHVybiBJR1RfT1BUX0hBTkRMRVJfRVJST1I7CisJfQorCisJcmV0dXJuIElHVF9PUFRfSEFO RExFUl9TVUNDRVNTOworfQorCitjb25zdCBjaGFyICpoZWxwX3N0ciA9CisJIiAgLWRcdERlYnVn IGJiXG4iCisJIiAgLXBcdFdyaXRlIHN1cmZhY2VzIHRvIHBuZ1xuIgorCSIgIC1pXHRQcmludCBi dWZmZXIgaW5mb1xuIgorCTsKKworaWd0X21haW5fYXJncygiZHBpIiwgTlVMTCwgaGVscF9zdHIs IG9wdF9oYW5kbGVyLCBOVUxMKQoreworCWludCBpOTE1OworCXN0cnVjdCBidWZfb3BzICpib3Bz OworCisJaWd0X2ZpeHR1cmUgeworCQlpOTE1ID0gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRF TCk7CisJCWJvcHMgPSBidWZfb3BzX2NyZWF0ZShpOTE1KTsKKwl9CisKKwlpZ3Rfc3VidGVzdCgi c2ltcGxlLWJiIikKKwkJc2ltcGxlX2JiKGJvcHMsIGZhbHNlKTsKKworCWlndF9zdWJ0ZXN0KCJz aW1wbGUtYmItY3R4IikKKwkJc2ltcGxlX2JiKGJvcHMsIHRydWUpOworCisJaWd0X3N1YnRlc3Qo ImJsaXQtbm9yZWxvYy1rZWVwLWNhY2hlIikKKwkJYmxpdChib3BzLCBOT1JFTE9DLCBLRUVQX0NB Q0hFKTsKKworCWlndF9zdWJ0ZXN0KCJibGl0LXJlbG9jLXB1cmdlLWNhY2hlIikKKwkJYmxpdChi b3BzLCBSRUxPQywgUFVSR0VfQ0FDSEUpOworCisJaWd0X3N1YnRlc3QoImJsaXQtbm9yZWxvYy1w dXJnZS1jYWNoZSIpCisJCWJsaXQoYm9wcywgTk9SRUxPQywgUFVSR0VfQ0FDSEUpOworCisJaWd0 X3N1YnRlc3QoImJsaXQtcmVsb2Mta2VlcC1jYWNoZSIpCisJCWJsaXQoYm9wcywgUkVMT0MsIEtF RVBfQ0FDSEUpOworCisJaWd0X3N1YnRlc3QoImludGVsLWJiLWJsaXQiKQorCQlkb19pbnRlbF9i Yl9ibGl0KGJvcHMsIDIwKTsKKworCWlndF9zdWJ0ZXN0KCJvZmZzZXQtY29udHJvbCIpCisJCW9m ZnNldF9jb250cm9sKGJvcHMpOworCisJaWd0X3N1YnRlc3QoImZ1bGwtYmF0Y2giKQorCQlmdWxs X2JhdGNoKGJvcHMpOworCisJaWd0X2ZpeHR1cmUgeworCQlidWZfb3BzX2Rlc3Ryb3koYm9wcyk7 CisJCWNsb3NlKGk5MTUpOworCX0KK30KZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIv dGVzdHMvbWVzb24uYnVpbGQKaW5kZXggMjgwOTE3OTQuLjA2YTQ3ZTM3IDEwMDY0NAotLS0gYS90 ZXN0cy9tZXNvbi5idWlsZAorKysgYi90ZXN0cy9tZXNvbi5idWlsZApAQCAtMTAzLDYgKzEwMyw3 IEBAIHRlc3RfcHJvZ3MgPSBbCiBdCiAKIGk5MTVfcHJvZ3MgPSBbCisJJ2FwaV9pbnRlbF9iYics CiAJJ2dlbjNfbWl4ZWRfYmxpdHMnLAogCSdnZW4zX3JlbmRlcl9saW5lYXJfYmxpdHMnLAogCSdn ZW4zX3JlbmRlcl9taXhlZF9ibGl0cycsCi0tIAoyLjI2LjAKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaWd0LWRldgo=