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 479206EA51 for ; Mon, 16 Sep 2019 19:33:25 +0000 (UTC) From: Manasi Navare Date: Mon, 16 Sep 2019 12:34:57 -0700 Message-Id: <20190916193457.22046-1-manasi.d.navare@intel.com> In-Reply-To: <20190913234809.29030-1-manasi.d.navare@intel.com> References: <20190913234809.29030-1-manasi.d.navare@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v6] igt/tests/kms_dp_tiled_display: kms test for display port tiled displays 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: madhumitha.tp@gmail.com, Petri Latvala , Simon Ser List-ID: RnJvbTogTWFkaHVtaXRoYSBUb2xha2FuYWhhbGxpIFByYWRlZXAgPG1hZGh1bWl0aGEudG9sYWth bmFoYWxsaS5wcmFkZWVwQGludGVsLmNvbT4KClRoaXMgdGVzdCB2YWxpZGF0ZXMgdGhlIHRpbGVk IERQIGRpc3BsYXlzIHRvIGRpc3BsYXkgYSB0ZXN0IHBhdHRlcm4Kc2VhbWxlc3NseSBhY3Jvc3Mg dGhlIHR3byB0aWxlcy4gSXQgdmFsaWRhdGVzIHRoZSB0cmFuc2NvZGVyIHBvcnQKc3luYyBmZWF0 dXJlIG9uIGk5MTUgdG8gZ2V0IGEgdGVhcmZyZWUgdGlsZWQgZGlzcGxheSBvdXRwdXQuCgpSZWxh dGVkIGtlcm5lbCB3b3JrIHBhdGNoZXMtCmh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9y Zy9zZXJpZXMvNjY0MDMvCgpUaGlzIHRlc3QgY2FuIGV2ZW50dWFsbHkgYmUgZXh0ZW5kZWQgdG8g Y292ZXIgdGlsZWQgZGlzcGxheSBzdXBwb3J0Cm9uIG90aGVyIGNvbm5lY3RvciB0eXBlcy4KCnY2 OgoqIGlndF9yZXF1aXJlIGlmIGVub3VnaCBwaXBlcyBub3QgYXZhaWxhYmxlIChTaW1vbiwgUGV0 cmkpCnY1OgoqIEFkZHJlc3NlcyBuZXdsaW5lIG5pdHMgKFNpbW9uKQoqIEFkZCAyMDE5IGNvcHly aWdodCwgaWd0X2Rlc2NyaWJlIChQZXRyaSkKKiBDaGVjayBhbGwgcHJldiBjb25uZWN0b3JzIGZv ciBwaXBlIGFzc2lnbm1lbnRzIChTaW1vbikKKiBDb250aW51ZSBpZiBudW1faF90aWxlcyA9IDAg KFNpbW9uKQp2NDoKKiBBZGQgdGhlIGxvZ2ljIHRvIGNoZWNrIHRoZXJlIGFyZQpwYWdlIGZsaXBz IHBlciBjb25uZWN0b3IgKFNpbW9uKQoqIENhbGxvYyBpbnN0ZWFkIG9mIG1hbGxvYyB0byBpbml0 aWFsaXplIChNYW5hc2kpCgp2MzoKKiBGaXggdGhlIHBvaW50ZXIgbGVha3MgKFNpbW9uKQoqIENv ZGUgaW5kZW50YXRpb24gKE1hbmFzaSkKKiBDb21wYXJlIHR3byBjb25zZWN1dGl2ZSBmbGlwIHRp bWVzdGFtcHMgKFNpbW9uKQoqIFVzZSBzaW5nbGUgZmIgYWNyb3NzIHRpbGVzIChTaW1vbikKKiBG aXggcmVzZXQgbW9kZSBsb2dpYyAoTWFuYXNpKQoKdjI6IEFkZGVkIGEgY2hlY2sgZm9yIGNoZWNr aW5nIHBhZ2VmbGlwIGV2ZW50IHRpbWVzdGFtcHMgKFNpbW9uLCBNYW5hc2kpCiAgICBNaW5vciBz dHlsZSBjaGFuZ2VzIChTaW1vbikKICAgQ29kZSBjbGVhbi11cCBhbmQgcmVvcmRlcmluZwoKQ2M6 IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+CkNjOiBQZXRyaSBMYXR2 YWxhIDxwZXRyaS5sYXR2YWxhQGludGVsLmNvbT4KQ2M6IFNpbW9uIFNlciA8c2ltb24uc2VyQGlu dGVsLmNvbT4KQ2M6IDxtYWRodW1pdGhhLnRwQGdtYWlsLmNvbT4KQ2M6IFNpbW9uIFNlciA8Y29u dGFjdEBlbWVyc2lvbi5mcj4KU2lnbmVkLW9mZi1ieTogTWFkaHVtaXRoYSBUb2xha2FuYWhhbGxp IFByYWRlZXAgPG1hZGh1bWl0aGEudG9sYWthbmFoYWxsaS5wcmFkZWVwQGludGVsLmNvbT4KU2ln bmVkLW9mZi1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KUmV2 aWV3ZWQtYnk6IFNpbW9uIFNlciA8c2ltb24uc2VyQGludGVsLmNvbT4KLS0tCiB0ZXN0cy9NYWtl ZmlsZS5zb3VyY2VzICAgICAgIHwgICAxICsKIHRlc3RzL2ttc19kcF90aWxlZF9kaXNwbGF5LmMg fCA0MjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3RzL21lc29uLmJ1 aWxkICAgICAgICAgICAgfCAgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCA0MjQgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2ttc19kcF90aWxlZF9kaXNwbGF5LmMKCmRpZmYg LS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpp bmRleCBjMDJlNGQ5NC4uNzU2MWFiOWIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxlLnNvdXJj ZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwpAQCAtNDEsNiArNDEsNyBAQCBURVNUU19w cm9ncyA9IFwKIAlrbXNfY3Vyc29yX2VkZ2Vfd2FsayBcCiAJa21zX2N1cnNvcl9sZWdhY3kgXAog CWttc19kcF9kc2MgXAorCWttc19kcF90aWxlZF9kaXNwbGF5IFwKIAlrbXNfZHJhd19jcmMgXAog CWttc19mYmNvbl9mYnQgXAogCWttc19mZW5jZV9waW5fbGVhayBcCmRpZmYgLS1naXQgYS90ZXN0 cy9rbXNfZHBfdGlsZWRfZGlzcGxheS5jIGIvdGVzdHMva21zX2RwX3RpbGVkX2Rpc3BsYXkuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uYzQ2NDNjMzUKLS0tIC9kZXYvbnVs bAorKysgYi90ZXN0cy9rbXNfZHBfdGlsZWRfZGlzcGxheS5jCkBAIC0wLDAgKzEsNDIyIEBACisv KgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50 YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJl IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRo ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNs dWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFM TAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS IERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczoKKyAqICBNYWRo dW1pdGhhIFRvbGFrYW5haGFsbGkgUHJhZGVlcAorICogICAgICA8bWFkaHVtaXRoYS50b2xha2Fu YWhhbGxpLnByYWRlZXBAaW50ZWwuY29tPgorICogIE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5h dmFyZUBpbnRlbC5jb20+CisgKgorICogRGlzcGxheSBQb3J0IFRpbGVkIERpc3BsYXkgVGVzdAor ICogVGhpcyB0ZXN0IHBhcnNlcyB0aGUgdGlsZSBpbmZvcm1hdGlvbiBvZiB0aGUgY29ubmVjdG9y cyB0aGF0IGhhdmUgVElMRQorICogcHJvcGVydHkgc2V0LCBzZXRzIHVwIHRoZSBmcmFtZWJ1ZmZl ciB3aXRoIGNvcnJlY3Qgb2Zmc2V0cyBjb3JyZXNwb25kaW5nIHRvCisgKiB0aGUgdGlsZSBvZmZz ZXRzIGFuZCBkb2VzIGFuIGF0b21pYyBtb2Rlc2V0IHdpdGggdHdvIENSVENzIGZvciB0d28KKyAq IGNvbm5lY3RvcnMuIFBhZ2UgZmxpcCBldmVudCB0aW1lc3RhbXAgZnJvbSBlYWNoIENSVEMgaXMg Y29sbGVjdGVkIGFuZAorICogY29tcGFyZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhleSBvY2N1cnJl ZCBpbiBhIHN5bmNocm9ub3VzIG1hbm5lci4KKyAqCisgKiBUaGlzIHRlc3QgY3VycmVudGx5IHN1 cHBvcnRzIG9ubHkgaG9yaXpvbnRhbGx5IHRpbGVkIGRpc3BsYXlzLCBpbiBsaW5lIHdpdGgKKyAq IHRoZSBkaXNwbGF5cyBzdXBwb3J0ZWQgYnkgdGhlIGtlcm5lbCBhdCB0aGUgbW9tZW50LgorICov CisKKyNpbmNsdWRlICJpZ3QuaCIKKyNpbmNsdWRlICJwb2xsLmgiCisjaW5jbHVkZSAiZHJtX21v ZGUuaCIKKyNpbmNsdWRlICJkcm1fZm91cmNjLmgiCisKK0lHVF9URVNUX0RFU0NSSVBUSU9OKCJU ZXN0IGZvciBUcmFuc2NvZGVyIFBvcnQgU3luYyBmb3IgRGlzcGxheSBQb3J0IFRpbGVkIERpc3Bs YXlzIik7CisKK3R5cGVkZWYgc3RydWN0IHsKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKKwlpZ3Rf dGlsZV9pbmZvX3QgdGlsZTsKKwllbnVtIHBpcGUgcGlwZTsKKwlkcm1Nb2RlQ29ubmVjdG9yUHRy IGNvbm5lY3RvcjsKKwlib29sIGdvdF9wYWdlX2ZsaXA7Cit9IGRhdGFfY29ubmVjdG9yX3Q7CisK K3R5cGVkZWYgc3RydWN0IHsKKwlpbnQgZHJtX2ZkOworCWludCBudW1faF90aWxlczsKKwlpZ3Rf ZmJfdCBmYl90ZXN0X3BhdHRlcm47CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheTsKKwlkYXRhX2Nv bm5lY3Rvcl90ICpjb25uczsKKwllbnVtIGlndF9jb21taXRfc3R5bGUgY29tbWl0OworfSBkYXRh X3Q7CisKK3N0YXRpYyBpbnQgZHJtX3Byb3BlcnR5X2lzX3RpbGUoZHJtTW9kZVByb3BlcnR5UHRy IHByb3ApCit7CisJcmV0dXJuIChzdHJjbXAocHJvcC0+bmFtZSwgIlRJTEUiKSA/IDAgOiAxKSAm JgorCQkJIGRybV9wcm9wZXJ0eV90eXBlX2lzKHByb3AsIERSTV9NT0RFX1BST1BfQkxPQik7Cit9 CisKK3N0YXRpYyB2b2lkIGdldF9jb25uZWN0b3JfdGlsZV9wcm9wcyhkYXRhX3QgKmRhdGEsIGRy bU1vZGVDb25uZWN0b3JQdHIgY29ubiwKKwkJCQkgICAgIGlndF90aWxlX2luZm9fdCAqdGlsZSkK K3sKKwlpbnQgaSA9IDA7CisJZHJtTW9kZVByb3BlcnR5UHRyIHByb3A7CisJZHJtTW9kZVByb3Bl cnR5QmxvYlB0ciBibG9iOworCisJZm9yIChpID0gMDsgaSA8IGNvbm4tPmNvdW50X3Byb3BzOyBp KyspIHsKKwkJcHJvcCA9IGRybU1vZGVHZXRQcm9wZXJ0eShkYXRhLT5kcm1fZmQsIGNvbm4tPnBy b3BzW2ldKTsKKworCQlpZ3RfYXNzZXJ0KHByb3ApOworCisJCWlmICghZHJtX3Byb3BlcnR5X2lz X3RpbGUocHJvcCkpIHsKKwkJCWRybU1vZGVGcmVlUHJvcGVydHkocHJvcCk7CisJCQljb250aW51 ZTsKKwkJfQorCisJCWJsb2IgPSBkcm1Nb2RlR2V0UHJvcGVydHlCbG9iKGRhdGEtPmRybV9mZCwK KwkJCQljb25uLT5wcm9wX3ZhbHVlc1tpXSk7CisKKwkJaWYgKCFibG9iKQorCQkJZ290byBjbGVh bnVwOworCisJCWlndF9wYXJzZV9jb25uZWN0b3JfdGlsZV9ibG9iKGJsb2IsIHRpbGUpOworCQli cmVhazsKKwl9CisKK2NsZWFudXA6CisJZHJtTW9kZUZyZWVQcm9wZXJ0eShwcm9wKTsKKwlkcm1N b2RlRnJlZVByb3BlcnR5QmxvYihibG9iKTsKK30KKworc3RhdGljIHZvaWQgZ2V0X251bWJlcl9v Zl9oX3RpbGVzKGRhdGFfdCAqZGF0YSkKK3sKKwlpbnQgaTsKKwlkcm1Nb2RlUmVzUHRyIHJlczsK Kwlkcm1Nb2RlQ29ubmVjdG9yUHRyIGNvbm5lY3RvcjsKKwlpZ3RfdGlsZV9pbmZvX3QgdGlsZSA9 IHsubnVtX2hfdGlsZSA9IDB9OworCisJaWd0X2Fzc2VydChyZXMgPSBkcm1Nb2RlR2V0UmVzb3Vy Y2VzKGRhdGEtPmRybV9mZCkpOworCisJZm9yIChpID0gMDsgaSA8IHJlcy0+Y291bnRfY29ubmVj dG9yczsgaSsrKSB7CisJCWNvbm5lY3RvciA9IGRybU1vZGVHZXRDb25uZWN0b3JDdXJyZW50KGRh dGEtPmRybV9mZCwKKwkJCQkJCSAgICAgICByZXMtPmNvbm5lY3RvcnNbaV0pOworCisJCWlndF9h c3NlcnQoY29ubmVjdG9yKTsKKworCQlpZiAoY29ubmVjdG9yLT5jb25uZWN0aW9uICE9IERSTV9N T0RFX0NPTk5FQ1RFRCB8fAorCQkgICAgY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSAhPSBEUk1f TU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQpIHsKKwkJCWRybU1vZGVGcmVlQ29ubmVjdG9yKGNv bm5lY3Rvcik7CisJCQljb250aW51ZTsKKwkJfQorCisJCWdldF9jb25uZWN0b3JfdGlsZV9wcm9w cyhkYXRhLCBjb25uZWN0b3IsICZ0aWxlKTsKKworCQlpZiAodGlsZS5udW1faF90aWxlID09IDAp IHsKKwkJCWRybU1vZGVGcmVlQ29ubmVjdG9yKGNvbm5lY3Rvcik7CisJCQljb250aW51ZTsKKwkJ fQorCQlkYXRhLT5udW1faF90aWxlcyA9IHRpbGUubnVtX2hfdGlsZTsKKwkJYnJlYWs7CisJfQor CisJZHJtTW9kZUZyZWVSZXNvdXJjZXMocmVzKTsKKwlkcm1Nb2RlRnJlZUNvbm5lY3Rvcihjb25u ZWN0b3IpOworfQorCitzdGF0aWMgdm9pZCBnZXRfY29ubmVjdG9ycyhkYXRhX3QgKmRhdGEpCit7 CisJaW50IGNvdW50ID0gMDsKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKKwlkYXRhX2Nvbm5lY3Rv cl90ICpjb25ucyA9IGRhdGEtPmNvbm5zOworCisJZm9yX2VhY2hfY29ubmVjdGVkX291dHB1dChk YXRhLT5kaXNwbGF5LCBvdXRwdXQpIHsKKwkJY29ubnNbY291bnRdLmNvbm5lY3RvciA9IGRybU1v ZGVHZXRDb25uZWN0b3IoZGF0YS0+ZGlzcGxheS0+ZHJtX2ZkLAorCQkJCQkJCSAgICAgb3V0cHV0 LT5pZCk7CisKKwkJaWd0X2Fzc2VydChjb25uc1tjb3VudF0uY29ubmVjdG9yKTsKKworCQlpZiAo Y29ubnNbY291bnRdLmNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgIT0KKwkJICAgIERSTV9NT0RF X0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCkgeworCQkJZHJtTW9kZUZyZWVDb25uZWN0b3IoY29ubnNb Y291bnRdLmNvbm5lY3Rvcik7CisJCQljb250aW51ZTsKKwkJfQorCisJCWdldF9jb25uZWN0b3Jf dGlsZV9wcm9wcyhkYXRhLCBjb25uc1tjb3VudF0uY29ubmVjdG9yLAorCQkJCQkgJmNvbm5zW2Nv dW50XS50aWxlKTsKKworCQlpZiAoY29ubnNbY291bnRdLnRpbGUubnVtX2hfdGlsZSA9PSAwKSB7 CisJCQlkcm1Nb2RlRnJlZUNvbm5lY3Rvcihjb25uc1tjb3VudF0uY29ubmVjdG9yKTsKKwkJCWNv bnRpbnVlOworCQl9CisKKwkJLyogQ2hlY2sgaWYgdGhlIGNvbm5lY3RvcnMgYmVsb25nIHRvIHRo ZSBzYW1lIHRpbGUgZ3JvdXAgKi8KKwkJaWYgKGNvdW50ID4gMCkKKwkJCWlndF9hc3NlcnQoY29u bnNbY291bnRdLnRpbGUudGlsZV9ncm91cF9pZCA9PQorCQkJCSAgIGNvbm5zW2NvdW50LTFdLnRp bGUudGlsZV9ncm91cF9pZCk7CisKKwkJY291bnQrKzsKKwl9Cit9CisKK3N0YXRpYyB2b2lkCity ZXNldF9wbGFuZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCkKK3sKKwlpZ3RfcGxhbmVfdCAqcHJpbWFy eTsKKworCXByaW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKG91dHB1dCwgRFJNX1BM QU5FX1RZUEVfUFJJTUFSWSk7CisJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCBOVUxMKTsKK30K Kworc3RhdGljIHZvaWQgcmVzZXRfb3V0cHV0KGlndF9vdXRwdXRfdCAqb3V0cHV0KQoreworCWln dF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBQSVBFX05PTkUpOworfQorCitzdGF0aWMgdm9pZCBy ZXNldF9tb2RlKGRhdGFfdCAqZGF0YSkKK3sKKwlpbnQgY291bnQ7CisJaWd0X291dHB1dF90ICpv dXRwdXQ7CisJZGF0YV9jb25uZWN0b3JfdCAqY29ubnMgPSBkYXRhLT5jb25uczsKKworCWZvciAo Y291bnQgPSAwOyBjb3VudCA8IGRhdGEtPm51bV9oX3RpbGVzOyBjb3VudCsrKSB7CisJCW91dHB1 dCA9IGlndF9vdXRwdXRfZnJvbV9jb25uZWN0b3IoZGF0YS0+ZGlzcGxheSwKKwkJCQkJCSAgIGNv bm5zW2NvdW50XS5jb25uZWN0b3IpOworCQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgUElQ RV9OT05FKTsKKwl9CisJaWd0X2Rpc3BsYXlfY29tbWl0MihkYXRhLT5kaXNwbGF5LCBkYXRhLT5j b21taXQpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0X2NsZWFudXAoZGF0YV90ICpkYXRhKQorewor CWludCBjb3VudDsKKwlkYXRhX2Nvbm5lY3Rvcl90ICpjb25ucyA9IGRhdGEtPmNvbm5zOworCisJ Zm9yIChjb3VudCA9IDA7IGNvdW50IDwgZGF0YS0+bnVtX2hfdGlsZXM7IGNvdW50KyspIHsKKwkJ aWYgKGNvbm5zW2NvdW50XS5vdXRwdXQpIHsKKwkJCXJlc2V0X3BsYW5lKGNvbm5zW2NvdW50XS5v dXRwdXQpOworCQkJcmVzZXRfb3V0cHV0KGNvbm5zW2NvdW50XS5vdXRwdXQpOworCQl9CisJfQor CWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJtX2ZkLCAmZGF0YS0+ZmJfdGVzdF9wYXR0ZXJuKTsKKwlp Z3RfZGlzcGxheV9jb21taXQyKGRhdGEtPmRpc3BsYXksIGRhdGEtPmNvbW1pdCk7CisJbWVtc2V0 KGNvbm5zLCAwLCBzaXplb2YoZGF0YV9jb25uZWN0b3JfdCkgKiBkYXRhLT5udW1faF90aWxlcyk7 Cit9CisKK3N0YXRpYyB2b2lkIHNldHVwX21vZGUoZGF0YV90ICpkYXRhKQoreworCWludCBjb3Vu dCA9IDAsIHByZXYgPSAwOworCWJvb2wgcGlwZV9pbl91c2UgPSBmYWxzZTsKKwllbnVtIHBpcGUg cGlwZTsKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKKwlkYXRhX2Nvbm5lY3Rvcl90ICpjb25ucyA9 IGRhdGEtPmNvbm5zOworCisJLyoKKwkgKiBUaGUgb3V0cHV0IGlzIHNldCB0byBQSVBFX05PTkUg YW5kIHRoZW4gYXNzaWduZWQgYSBwaXBlLgorCSAqIFRoaXMgaXMgZG9uZSB0byBlbnN1cmUgYSBj b21wbGV0ZSBtb2Rlc2V0IG9jY3VyZXMgZXZlcnkKKwkgKiB0aW1lIHRoZSB0ZXN0IGlzIHJ1bi4K KwkgKi8KKwlyZXNldF9tb2RlKGRhdGEpOworCisJZm9yIChjb3VudCA9IDA7IGNvdW50IDwgZGF0 YS0+bnVtX2hfdGlsZXM7IGNvdW50KyspIHsKKwkJb3V0cHV0ID0gaWd0X291dHB1dF9mcm9tX2Nv bm5lY3RvcihkYXRhLT5kaXNwbGF5LAorCQkJCQkJICAgY29ubnNbY291bnRdLmNvbm5lY3Rvcik7 CisKKwkJZm9yX2VhY2hfcGlwZShkYXRhLT5kaXNwbGF5LCBwaXBlKSB7CisJCQlwaXBlX2luX3Vz ZSA9IGZhbHNlOworCQkJaWYgKGNvdW50ID4gMCkgeworCQkJCWZvciAocHJldiA9IGNvdW50IC0g MTsgcHJldiA+PSAwOyBwcmV2LS0pIHsKKwkJCQkJaWYgKHBpcGUgPT0gY29ubnNbcHJldl0ucGlw ZSkgeworCQkJCQkJcGlwZV9pbl91c2UgPSB0cnVlOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJ CQl9CisJCQkJaWYgKHBpcGVfaW5fdXNlKQorCQkJCQljb250aW51ZTsKKwkJCX0KKworCQkJaWYg KGlndF9waXBlX2Nvbm5lY3Rvcl92YWxpZChwaXBlLCBvdXRwdXQpKSB7CisJCQkJY29ubnNbY291 bnRdLnBpcGUgPSBwaXBlOworCQkJCWNvbm5zW2NvdW50XS5vdXRwdXQgPSBvdXRwdXQ7CisKKwkJ CQlpZ3Rfb3V0cHV0X3NldF9waXBlKGNvbm5zW2NvdW50XS5vdXRwdXQsCisJCQkJCQkgICAgY29u bnNbY291bnRdLnBpcGUpOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWlndF9yZXF1aXJlKGNv bm5zW2NvdW50XS5waXBlICE9IFBJUEVfTk9ORSk7CisJfQorCWlndF9kaXNwbGF5X2NvbW1pdF9h dG9taWMoZGF0YS0+ZGlzcGxheSwgRFJNX01PREVfQVRPTUlDX0FMTE9XX01PREVTRVQsCisJCQkJ ICBOVUxMKTsKK30KKworc3RhdGljIHZvaWQgc2V0dXBfZnJhbWVidWZmZXIoZGF0YV90ICpkYXRh KQoreworCWludCBjb3VudDsKKwlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKKwlpbnQgZmJfaF9zaXpl ID0gMCwgZmJfdl9zaXplID0gMDsKKwlkYXRhX2Nvbm5lY3Rvcl90ICpjb25ucyA9IGRhdGEtPmNv bm5zOworCisJZm9yIChjb3VudCA9IDA7IGNvdW50IDwgZGF0YS0+bnVtX2hfdGlsZXM7IGNvdW50 KyspIHsKKworCQlmYl9oX3NpemUgKz0gY29ubnNbY291bnRdLnRpbGUudGlsZV9oX3NpemU7CisJ CS8qIFdlIHN1cHBvcnQgb25seSBob3Jpem9udGFsIHRpbGVzLCBzbyB2ZXJ0aWNhbCBzaXplIGlz IHNhbWUKKwkJICogZm9yIGFsbCB0aWxlcyBhbmQgbmVlZHMgdG8gYmUgYXNzaWduZWQgb25seSBv bmNlLgorCQkgKi8KKwkJaWYgKCFmYl92X3NpemUpCisJCQlmYl92X3NpemUgPSBjb25uc1tjb3Vu dF0udGlsZS50aWxlX3Zfc2l6ZTsKKworCQlpZiAoY291bnQgPiAwKQorCQkJaWd0X2Fzc2VydChj b25uc1tjb3VudF0udGlsZS50aWxlX3Zfc2l6ZSA9PQorCQkJCSAgIGNvbm5zW2NvdW50LTFdLnRp bGUudGlsZV92X3NpemUpOworCX0KKworCWlndF9jcmVhdGVfcGF0dGVybl9mYihkYXRhLT5kcm1f ZmQsCisJCQkgICAgICBmYl9oX3NpemUsCisJCQkgICAgICBmYl92X3NpemUsCisJCQkgICAgICBE Uk1fRk9STUFUX1hCR1I4ODg4LAorCQkJICAgICAgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwK KwkJCSAgICAgICZkYXRhLT5mYl90ZXN0X3BhdHRlcm4pOworCisJZm9yIChjb3VudCA9IDA7IGNv dW50IDwgZGF0YS0+bnVtX2hfdGlsZXM7IGNvdW50KyspIHsKKwkJcHJpbWFyeSA9IGlndF9vdXRw dXRfZ2V0X3BsYW5lX3R5cGUoY29ubnNbY291bnRdLm91dHB1dCwKKwkJCQkJCSAgICBEUk1fUExB TkVfVFlQRV9QUklNQVJZKTsKKworCQlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZkYXRhLT5m Yl90ZXN0X3BhdHRlcm4pOworCisJCWlndF9mYl9zZXRfc2l6ZSgmZGF0YS0+ZmJfdGVzdF9wYXR0 ZXJuLCBwcmltYXJ5LAorCQkJCWNvbm5zW2NvdW50XS50aWxlLnRpbGVfaF9zaXplLAorCQkJCWNv bm5zW2NvdW50XS50aWxlLnRpbGVfdl9zaXplKTsKKworCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZk YXRhLT5mYl90ZXN0X3BhdHRlcm4sIHByaW1hcnksCisJCQkJICAgIChjb25uc1tjb3VudF0udGls ZS50aWxlX2hfc2l6ZSAqCisJCQkJICAgICBjb25uc1tjb3VudF0udGlsZS50aWxlX2hfbG9jKSwK KwkJCQkgICAgKGNvbm5zW2NvdW50XS50aWxlLnRpbGVfdl9zaXplICoKKwkJCQkgICAgIGNvbm5z W2NvdW50XS50aWxlLnRpbGVfdl9sb2MpKTsKKworCQlpZ3RfcGxhbmVfc2V0X3NpemUocHJpbWFy eSwKKwkJCQkgICBjb25uc1tjb3VudF0udGlsZS50aWxlX2hfc2l6ZSwKKwkJCQkgICBjb25uc1tj b3VudF0udGlsZS50aWxlX3Zfc2l6ZSk7CisJfQorfQorCitzdGF0aWMgdm9pZCBwYWdlX2ZsaXBf aGFuZGxlcihpbnQgZmQsIHVuc2lnbmVkIGludCBzZXEsCisJCQkgICAgICB1bnNpZ25lZCBpbnQg dHZfc2VjLCB1bnNpZ25lZCBpbnQgdHZfdXNlYywKKwkJCSAgICAgIHVuc2lnbmVkIGludCBjcnRj X2lkLCB2b2lkICpfZGF0YSkKK3sKKwlkYXRhX3QgKmRhdGEgPSBfZGF0YTsKKwlkYXRhX2Nvbm5l Y3Rvcl90ICpjb25uOworCWJvb2wgaXNfb25fdGltZSA9IGZhbHNlOworCXN0YXRpYyB1bnNpZ25l ZCBpbnQgX3R2X3NlYywgX3R2X3VzZWM7CisJaW50IGk7CisKKwlpZ3RfZGVidWcoIlBhZ2UgRmxp cCBFdmVudCByZWNlaXZlZCBmcm9tIENSVEM6JWQgYXQgJXU6JXVcbiIsIGNydGNfaWQsCisJCSAg dHZfc2VjLCB0dl91c2VjKTsKKworCWZvciAoaSA9IDA7IGkgPCBkYXRhLT5udW1faF90aWxlczsg aSsrKSB7CisKKwkJY29ubiA9ICZkYXRhLT5jb25uc1tpXTsKKwkJaWYgKGRhdGEtPmRpc3BsYXkt PnBpcGVzW2Nvbm4tPnBpcGVdLmNydGNfaWQgPT0gY3J0Y19pZCkgeworCQkJaWd0X2Fzc2VydF9m KCFjb25uLT5nb3RfcGFnZV9mbGlwLAorCQkJCSAgICAgIkdvdCB0d28gcGFnZS1mbGlwcyBmb3Ig Q1JUQyAldVxuIiwKKwkJCQkgICAgIGNydGNfaWQpOworCQkJY29ubi0+Z290X3BhZ2VfZmxpcCA9 IHRydWU7CisKKwkJCS8qIFNraXAgdGhlIGZvbGxvd2luZyBjaGVja3MgZm9yIHRoZSBmaXJzdCBw YWdlIGZsaXAgZXZlbnQgKi8KKwkJCWlmIChfdHZfc2VjID09IDAgfHwgX3R2X3VzZWMgPT0gMCkg eworCQkJCV90dl9zZWMgPSB0dl9zZWM7CisJCQkJX3R2X3VzZWMgPSB0dl91c2VjOworCQkJCXJl dHVybjsKKwkJCX0KKwkJCS8qCisJCQkgKiBGb3Igc2VhbWxlc3MgdGVhci1mcmVlIGRpc3BsYXks IHRoZSBwYWdlIGZsaXAgZXZlbnQgdGltZXN0YW1wcworCQkJICogZnJvbSBhbGwgdGhlIHRpbGVz IHNob3VsZCBub3QgZGlmZmVyIGJ5IG1vcmUgdGhhbiAxMHVzLgorCQkJICovCisJCQlpc19vbl90 aW1lID0gdHZfc2VjID09IF90dl9zZWMgJiYgKGFicyh0dl91c2VjIC0gX3R2X3VzZWMpIDwgMTAp OworCisJCQlpZ3RfZmFpbF9vbl9mKCFpc19vbl90aW1lLCAiRGVsYXllZCBwYWdlIGZsaXAgZXZl bnQgZnJvbSBDUlRDOiVkIGF0ICV1OiV1XG4iLAorCQkJCSAgICAgIGNydGNfaWQsIHR2X3NlYywg dHZfdXNlYyk7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwlpZ3RfYXNzZXJ0X2YoZmFsc2UsICJH b3QgcGFnZS1mbGlwIGV2ZW50IGZvciB1bmV4cGVjdGVkIENSVEMgJXVcbiIsCisJCSAgICAgY3J0 Y19pZCk7Cit9CisKK3N0YXRpYyBib29sIGdvdF9hbGxfcGFnZV9mbGlwcyhkYXRhX3QgKmRhdGEp Cit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgZGF0YS0+bnVtX2hfdGlsZXM7IGkrKykg eworCQlpZiAoIWRhdGEtPmNvbm5zW2ldLmdvdF9wYWdlX2ZsaXApCisJCQlyZXR1cm4gZmFsc2U7 CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKK2lndF9tYWluCit7CisJaWd0X2Rpc3BsYXlfdCBk aXNwbGF5OworCWRhdGFfdCBkYXRhID0gezB9OworCXN0cnVjdCBwb2xsZmQgcGZkID0gezB9Owor CWRybUV2ZW50Q29udGV4dCBkcm1fZXZlbnQgPSB7MH07CisJaW50IHJldDsKKworCWlndF9maXh0 dXJlIHsKKwkJZGF0YS5kcm1fZmQgPSBkcm1fb3Blbl9kcml2ZXJfbWFzdGVyKERSSVZFUl9BTlkp OworCisJCWttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUoKTsKKwkJaWd0X2Rpc3BsYXlfcmVx dWlyZSgmZGlzcGxheSwgZGF0YS5kcm1fZmQpOworCQlpZ3RfZGlzcGxheV9yZXNldCgmZGlzcGxh eSk7CisKKwkJZGF0YS5kaXNwbGF5ID0gJmRpc3BsYXk7CisJCXBmZC5mZCA9IGRhdGEuZHJtX2Zk OworCQlwZmQuZXZlbnRzID0gUE9MTElOOworCQlkcm1fZXZlbnQudmVyc2lvbiA9IDM7CisJCWRy bV9ldmVudC5wYWdlX2ZsaXBfaGFuZGxlcjIgPSBwYWdlX2ZsaXBfaGFuZGxlcjsKKwkJZGF0YS5j b21taXQgPSBkYXRhLmRpc3BsYXktPmlzX2F0b21pYyA/IENPTU1JVF9BVE9NSUMgOiBDT01NSVRf TEVHQUNZOworCQlpZ3RfcmVxdWlyZShkYXRhLmNvbW1pdCA9PSBDT01NSVRfQVRPTUlDKTsKKwor CQlnZXRfbnVtYmVyX29mX2hfdGlsZXMoJmRhdGEpOworCQlpZ3RfZGVidWcoIk51bWJlciBvZiBI b3Jpem9udGFsIFRpbGVzOiAlZFxuIiwgZGF0YS5udW1faF90aWxlcyk7CisJCWlndF9yZXF1aXJl KGRhdGEubnVtX2hfdGlsZXMgPiAwKTsKKwkJZGF0YS5jb25ucyA9IGNhbGxvYyhkYXRhLm51bV9o X3RpbGVzLCBzaXplb2YoZGF0YV9jb25uZWN0b3JfdCkpOworCX0KKworCWlndF9kZXNjcmliZSgi TWFrZSBzdXJlIHRoZSBUaWxlZCBDUlRDcyBhcmUgc3luY2hyb25pemVkIGFuZCB3ZSBnZXQgIgor CQkgICAgICJwYWdlIGZsaXBzIGZvciBhbGwgdGlsZWQgQ1JUQ3MgaW4gb25lIHZibGFuay4iKTsK KwlpZ3Rfc3VidGVzdCgiYmFzaWMtdGVzdC1wYXR0ZXJuIikgeworCQlpZ3RfYXNzZXJ0KGRhdGEu Y29ubnMpOworCisJCWdldF9jb25uZWN0b3JzKCZkYXRhKTsKKwkJc2V0dXBfbW9kZSgmZGF0YSk7 CisJCXNldHVwX2ZyYW1lYnVmZmVyKCZkYXRhKTsKKwkJaWd0X2Rpc3BsYXlfY29tbWl0X2F0b21p YyhkYXRhLmRpc3BsYXksIERSTV9NT0RFX0FUT01JQ19OT05CTE9DSyB8CisJCQkJCSAgRFJNX01P REVfUEFHRV9GTElQX0VWRU5ULCAmZGF0YSk7CisJCXdoaWxlICghZ290X2FsbF9wYWdlX2ZsaXBz KCZkYXRhKSkgeworCQkJcmV0ID0gcG9sbCgmcGZkLCAxLCAxMDAwKTsKKwkJCWlndF9hc3NlcnQo cmV0ID09IDEpOworCQkJZHJtSGFuZGxlRXZlbnQoZGF0YS5kcm1fZmQsICZkcm1fZXZlbnQpOwor CQl9CisKKwkJdGVzdF9jbGVhbnVwKCZkYXRhKTsKKwl9CisKKwlpZ3RfZml4dHVyZSB7CisJCWZy ZWUoZGF0YS5jb25ucyk7CisJCWNsb3NlKGRhdGEuZHJtX2ZkKTsKKwkJa21zdGVzdF9yZXN0b3Jl X3Z0X21vZGUoKTsKKwkJaWd0X2Rpc3BsYXlfZmluaShkYXRhLmRpc3BsYXkpOworCX0KK30KZGlm ZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQKaW5kZXggYTdi MmIzMjIuLjUwMjkyZGY4IDEwMDY0NAotLS0gYS90ZXN0cy9tZXNvbi5idWlsZAorKysgYi90ZXN0 cy9tZXNvbi5idWlsZApAQCAtMjYsNiArMjYsNyBAQCB0ZXN0X3Byb2dzID0gWwogCSdrbXNfY3Vy c29yX2VkZ2Vfd2FsaycsCiAJJ2ttc19jdXJzb3JfbGVnYWN5JywKIAkna21zX2RwX2RzYycsCisJ J2ttc19kcF90aWxlZF9kaXNwbGF5JywKIAkna21zX2RyYXdfY3JjJywKIAkna21zX2ZiY29uX2Zi dCcsCiAJJ2ttc19mZW5jZV9waW5fbGVhaycsCi0tIAoyLjE5LjEKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1k ZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaWd0LWRldg==