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 118896EE58 for ; Thu, 12 Sep 2019 23:27:06 +0000 (UTC) From: Manasi Navare Date: Thu, 12 Sep 2019 16:28:30 -0700 Message-Id: <20190912232830.13493-1-manasi.d.navare@intel.com> In-Reply-To: <20190912013139.30869-1-manasi.d.navare@intel.com> References: <20190912013139.30869-1-manasi.d.navare@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v4] 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 List-ID: RnJvbTogTWFkaHVtaXRoYSBUb2xha2FuYWhhbGxpIFByYWRlZXAgPG1hZGh1bWl0aGEudG9sYWth bmFoYWxsaS5wcmFkZWVwQGludGVsLmNvbT4KClRoaXMgdGVzdCB2YWxpZGF0ZXMgdGhlIHRpbGVk IERQIGRpc3BsYXlzIHRvIGRpc3BsYXkgYSB0ZXN0IHBhdHRlcm4Kc2VhbWxlc3NseSBhY3Jvc3Mg dGhlIHR3byB0aWxlcy4gSXQgdmFsaWRhdGVzIHRoZSB0cmFuc2NvZGVyIHBvcnQKc3luYyBmZWF0 dXJlIG9uIGk5MTUgdG8gZ2V0IGEgdGVhcmZyZWUgdGlsZWQgZGlzcGxheSBvdXRwdXQuCgpSZWxh dGVkIGtlcm5lbCB3b3JrIHBhdGNoZXMtCmh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9y Zy9zZXJpZXMvNjY0MDMvCgpUaGlzIHRlc3QgY2FuIGV2ZW50dWFsbHkgYmUgZXh0ZW5kZWQgdG8g Y292ZXIgdGlsZWQgZGlzcGxheSBzdXBwb3J0Cm9uIG90aGVyIGNvbm5lY3RvciB0eXBlcy4KCnY0 OgoqIEFkZCB0aGUgbG9naWMgdG8gY2hlY2sgdGhlcmUgYXJlCnBhZ2UgZmxpcHMgcGVyIGNvbm5l Y3RvciAoU2ltb24pCiogQ2FsbG9jIGluc3RlYWQgb2YgbWFsbG9jIHRvIGluaXRpYWxpemUgKE1h bmFzaSkKCnYzOgoqIEZpeCB0aGUgcG9pbnRlciBsZWFrcyAoU2ltb24pCiogQ29kZSBpbmRlbnRh dGlvbiAoTWFuYXNpKQoqIENvbXBhcmUgdHdvIGNvbnNlY3V0aXZlIGZsaXAgdGltZXN0YW1wcyAo U2ltb24pCiogVXNlIHNpbmdsZSBmYiBhY3Jvc3MgdGlsZXMgKFNpbW9uKQoqIEZpeCByZXNldCBt b2RlIGxvZ2ljIChNYW5hc2kpCgp2MjogQWRkZWQgYSBjaGVjayBmb3IgY2hlY2tpbmcgcGFnZWZs aXAgZXZlbnQgdGltZXN0YW1wcyAoU2ltb24sIE1hbmFzaSkKICAgIE1pbm9yIHN0eWxlIGNoYW5n ZXMgKFNpbW9uKQogICBDb2RlIGNsZWFuLXVwIGFuZCByZW9yZGVyaW5nCgpDYzogTWFuYXNpIE5h dmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KQ2M6IFBldHJpIExhdHZhbGEgPHBldHJp LmxhdHZhbGFAaW50ZWwuY29tPgpDYzogU2ltb24gU2VyIDxzaW1vbi5zZXJAaW50ZWwuY29tPgpD YzogPG1hZGh1bWl0aGEudHBAZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBNYWRodW1pdGhhIFRv bGFrYW5haGFsbGkgUHJhZGVlcCA8bWFkaHVtaXRoYS50b2xha2FuYWhhbGxpLnByYWRlZXBAaW50 ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50 ZWwuY29tPgotLS0KIHRlc3RzL01ha2VmaWxlLnNvdXJjZXMgICAgICAgfCAgIDEgKwogdGVzdHMv a21zX2RwX3RpbGVkX2Rpc3BsYXkuYyB8IDM5NyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogdGVzdHMvbWVzb24uYnVpbGQgICAgICAgICAgICB8ICAgMSArCiAzIGZpbGVzIGNo YW5nZWQsIDM5OSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMva21zX2Rw X3RpbGVkX2Rpc3BsYXkuYwoKZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90 ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCmluZGV4IGMwMmU0ZDk0Li43NTYxYWI5YiAxMDA2NDQKLS0t IGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcworKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCkBA IC00MSw2ICs0MSw3IEBAIFRFU1RTX3Byb2dzID0gXAogCWttc19jdXJzb3JfZWRnZV93YWxrIFwK IAlrbXNfY3Vyc29yX2xlZ2FjeSBcCiAJa21zX2RwX2RzYyBcCisJa21zX2RwX3RpbGVkX2Rpc3Bs YXkgXAogCWttc19kcmF3X2NyYyBcCiAJa21zX2ZiY29uX2ZidCBcCiAJa21zX2ZlbmNlX3Bpbl9s ZWFrIFwKZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19kcF90aWxlZF9kaXNwbGF5LmMgYi90ZXN0cy9r bXNfZHBfdGlsZWRfZGlzcGxheS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw Li4zMDU1YzZjMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2ttc19kcF90aWxlZF9kaXNwbGF5 LmMKQEAgLTAsMCArMSwzOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOCBJbnRlbCBDb3Jw b3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICog dG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFs bCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo ZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us IEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAq CisgKiBBdXRob3JzOgorICogIE1hZGh1bWl0aGEgVG9sYWthbmFoYWxsaSBQcmFkZWVwCisgKiAg ICAgIDxtYWRodW1pdGhhLnRvbGFrYW5haGFsbGkucHJhZGVlcEBpbnRlbC5jb20+CisgKiAgTWFu YXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KKyAqCisgKiBEaXNwbGF5IFBv cnQgVGlsZWQgRGlzcGxheSBUZXN0CisgKiBUaGlzIHRlc3QgcGFyc2VzIHRoZSB0aWxlIGluZm9y bWF0aW9uIG9mIHRoZSBjb25uZWN0b3JzIHRoYXQgaGF2ZSBUSUxFCisgKiBwcm9wZXJ0eSBzZXQs IHNldHMgdXAgdGhlIGZyYW1lYnVmZmVyIHdpdGggY29ycmVjdCBvZmZzZXRzIGNvcnJlc3BvbmRp bmcgdG8KKyAqIHRoZSB0aWxlIG9mZnNldHMgYW5kIGRvZXMgYW4gYXRvbWljIG1vZGVzZXQgd2l0 aCB0d28gQ1JUQ3MgZm9yIHR3bworICogY29ubmVjdG9ycy4gUGFnZSBmbGlwIGV2ZW50IHRpbWVz dGFtcCBmcm9tIGVhY2ggQ1JUQyBpcyBjb2xsZWN0ZWQgYW5kCisgKiBjb21wYXJlZCB0byBtYWtl IHN1cmUgdGhhdCB0aGV5IG9jY3VycmVkIGluIGEgc3luY2hyb25vdXMgbWFubmVyLgorICoKKyAq IFRoaXMgdGVzdCBjdXJyZW50bHkgc3VwcG9ydHMgb25seSBob3Jpem9udGFsbHkgdGlsZWQgZGlz cGxheXMsIGluIGxpbmUgd2l0aAorICogdGhlIGRpc3BsYXlzIHN1cHBvcnRlZCBieSB0aGUga2Vy bmVsIGF0IHRoZSBtb21lbnQuCisgKi8KKworI2luY2x1ZGUgImlndC5oIgorI2luY2x1ZGUgInBv bGwuaCIKKyNpbmNsdWRlICJkcm1fbW9kZS5oIgorI2luY2x1ZGUgImRybV9mb3VyY2MuaCIKKwor SUdUX1RFU1RfREVTQ1JJUFRJT04oIlRlc3QgZm9yIFRyYW5zY29kZXIgUG9ydCBTeW5jIGZvciBE aXNwbGF5IFBvcnQgVGlsZWQgRGlzcGxheXMiKTsKKwordHlwZWRlZiBzdHJ1Y3QgeworCWlndF9v dXRwdXRfdCAqb3V0cHV0OworCWlndF90aWxlX2luZm9fdCB0aWxlOworCWVudW0gcGlwZSBwaXBl OworCWRybU1vZGVDb25uZWN0b3JQdHIgY29ubmVjdG9yOworCWJvb2wgZ290X3BhZ2VfZmxpcDsK K30gZGF0YV9jb25uZWN0b3JfdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworCWludCBkcm1fZmQ7CisJ aW50IG51bV9oX3RpbGVzOworCWlndF9mYl90IGZiX3Rlc3RfcGF0dGVybjsKKwlpZ3RfZGlzcGxh eV90ICpkaXNwbGF5OworCWRhdGFfY29ubmVjdG9yX3QgKmNvbm5zOworCWVudW0gaWd0X2NvbW1p dF9zdHlsZSBjb21taXQ7Cit9IGRhdGFfdDsKKworc3RhdGljIGludCBkcm1fcHJvcGVydHlfaXNf dGlsZShkcm1Nb2RlUHJvcGVydHlQdHIgcHJvcCkKK3sKKwlyZXR1cm4gKHN0cmNtcChwcm9wLT5u YW1lLCAiVElMRSIpID8gMCA6IDEpICYmCisJCQkgZHJtX3Byb3BlcnR5X3R5cGVfaXMocHJvcCwg RFJNX01PREVfUFJPUF9CTE9CKTsKK30KKworc3RhdGljIHZvaWQgZ2V0X2Nvbm5lY3Rvcl90aWxl X3Byb3BzKGRhdGFfdCAqZGF0YSwgZHJtTW9kZUNvbm5lY3RvclB0ciBjb25uLAorCQkJCSAgICAg aWd0X3RpbGVfaW5mb190ICp0aWxlKQoreworCWludCBpID0gMDsKKwlkcm1Nb2RlUHJvcGVydHlQ dHIgcHJvcDsKKwlkcm1Nb2RlUHJvcGVydHlCbG9iUHRyIGJsb2I7CisKKwlmb3IgKGkgPSAwOyBp IDwgY29ubi0+Y291bnRfcHJvcHM7IGkrKykgeworCQlwcm9wID0gZHJtTW9kZUdldFByb3BlcnR5 KGRhdGEtPmRybV9mZCwgY29ubi0+cHJvcHNbaV0pOworCisJCWlndF9hc3NlcnQocHJvcCk7CisK KwkJaWYgKCFkcm1fcHJvcGVydHlfaXNfdGlsZShwcm9wKSkgeworCQkJZHJtTW9kZUZyZWVQcm9w ZXJ0eShwcm9wKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJYmxvYiA9IGRybU1vZGVHZXRQcm9w ZXJ0eUJsb2IoZGF0YS0+ZHJtX2ZkLAorCQkJCWNvbm4tPnByb3BfdmFsdWVzW2ldKTsKKworCQlp ZiAoIWJsb2IpCisJCQlnb3RvIGNsZWFudXA7CisKKwkJaWd0X3BhcnNlX2Nvbm5lY3Rvcl90aWxl X2Jsb2IoYmxvYiwgdGlsZSk7CisJCWJyZWFrOworCX0KKworY2xlYW51cDoKKwlkcm1Nb2RlRnJl ZVByb3BlcnR5KHByb3ApOworCWRybU1vZGVGcmVlUHJvcGVydHlCbG9iKGJsb2IpOworfQorCitz dGF0aWMgdm9pZCBnZXRfbnVtYmVyX29mX2hfdGlsZXMoZGF0YV90ICpkYXRhKQoreworCWludCBp OworCWRybU1vZGVSZXNQdHIgcmVzOworCWRybU1vZGVDb25uZWN0b3JQdHIgY29ubmVjdG9yOwor CWlndF90aWxlX2luZm9fdCB0aWxlID0gey5udW1faF90aWxlID0gMH07CisKKwlpZ3RfYXNzZXJ0 KHJlcyA9IGRybU1vZGVHZXRSZXNvdXJjZXMoZGF0YS0+ZHJtX2ZkKSk7CisKKwlmb3IgKGkgPSAw OyBpIDwgcmVzLT5jb3VudF9jb25uZWN0b3JzOyBpKyspIHsKKwkJY29ubmVjdG9yID0gZHJtTW9k ZUdldENvbm5lY3RvckN1cnJlbnQoZGF0YS0+ZHJtX2ZkLAorCQkJCXJlcy0+Y29ubmVjdG9yc1tp XSk7CisKKwkJaWd0X2Fzc2VydChjb25uZWN0b3IpOworCisJCWlmIChjb25uZWN0b3ItPmNvbm5l Y3Rpb24gIT0gRFJNX01PREVfQ09OTkVDVEVEIHx8CisJCSAgICBjb25uZWN0b3ItPmNvbm5lY3Rv cl90eXBlICE9IERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCkgeworCQkJZHJtTW9kZUZy ZWVDb25uZWN0b3IoY29ubmVjdG9yKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJZ2V0X2Nvbm5l Y3Rvcl90aWxlX3Byb3BzKGRhdGEsIGNvbm5lY3RvciwgJnRpbGUpOworCQlkYXRhLT5udW1faF90 aWxlcyA9IHRpbGUubnVtX2hfdGlsZTsKKwkJYnJlYWs7CisJfQorCisJZHJtTW9kZUZyZWVSZXNv dXJjZXMocmVzKTsKKwlkcm1Nb2RlRnJlZUNvbm5lY3Rvcihjb25uZWN0b3IpOworfQorCitzdGF0 aWMgdm9pZCBnZXRfY29ubmVjdG9ycyhkYXRhX3QgKmRhdGEpCit7CisJaW50IGNvdW50ID0gMDsK KwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKKwlkYXRhX2Nvbm5lY3Rvcl90ICpjb25ucyA9IGRhdGEt PmNvbm5zOworCisJZm9yX2VhY2hfY29ubmVjdGVkX291dHB1dChkYXRhLT5kaXNwbGF5LCBvdXRw dXQpIHsKKwkJY29ubnNbY291bnRdLmNvbm5lY3RvciA9IGRybU1vZGVHZXRDb25uZWN0b3IoZGF0 YS0+ZGlzcGxheS0+ZHJtX2ZkLAorCQkJCQkJCSAgICAgb3V0cHV0LT5pZCk7CisKKwkJaWd0X2Fz c2VydChjb25uc1tjb3VudF0uY29ubmVjdG9yKTsKKworCQlpZiAoY29ubnNbY291bnRdLmNvbm5l Y3Rvci0+Y29ubmVjdG9yX3R5cGUgIT0KKwkJICAgIERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5 UG9ydCkgeworCQkJZHJtTW9kZUZyZWVDb25uZWN0b3IoY29ubnNbY291bnRdLmNvbm5lY3Rvcik7 CisJCQljb250aW51ZTsKKwkJfQorCisJCWdldF9jb25uZWN0b3JfdGlsZV9wcm9wcyhkYXRhLCBj b25uc1tjb3VudF0uY29ubmVjdG9yLAorCQkJCQkgJmNvbm5zW2NvdW50XS50aWxlKTsKKworCQkv KiBDaGVjayBpZiB0aGUgY29ubmVjdG9ycyBiZWxvbmcgdG8gdGhlIHNhbWUgdGlsZSBncm91cCAq LworCQlpZiAoY291bnQgPiAwKQorCQkJaWd0X2Fzc2VydChjb25uc1tjb3VudF0udGlsZS50aWxl X2dyb3VwX2lkID09CisJCQkJICAgY29ubnNbY291bnQtMV0udGlsZS50aWxlX2dyb3VwX2lkKTsK KworCQljb3VudCsrOworCX0KK30KKworc3RhdGljIHZvaWQKK3Jlc2V0X3BsYW5lKGlndF9vdXRw dXRfdCAqb3V0cHV0KQoreworCWlndF9wbGFuZV90ICpwcmltYXJ5OworCisJcHJpbWFyeSA9IGln dF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsK KwlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksIE5VTEwpOworfQorCitzdGF0aWMgdm9pZCByZXNl dF9vdXRwdXQoaWd0X291dHB1dF90ICpvdXRwdXQpCit7CisJaWd0X291dHB1dF9zZXRfcGlwZShv dXRwdXQsIFBJUEVfTk9ORSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc2V0X21vZGUoZGF0YV90ICpk YXRhKQoreworCWludCBjb3VudDsKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKKwlkYXRhX2Nvbm5l Y3Rvcl90ICpjb25ucyA9IGRhdGEtPmNvbm5zOworCisJZm9yIChjb3VudCA9IDA7IGNvdW50IDwg ZGF0YS0+bnVtX2hfdGlsZXM7IGNvdW50KyspIHsKKwkJb3V0cHV0ID0gaWd0X291dHB1dF9mcm9t X2Nvbm5lY3RvcihkYXRhLT5kaXNwbGF5LAorCQkJCQkJICAgY29ubnNbY291bnRdLmNvbm5lY3Rv cik7CisJCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBQSVBFX05PTkUpOworCX0KKwlpZ3Rf ZGlzcGxheV9jb21taXQyKGRhdGEtPmRpc3BsYXksIGRhdGEtPmNvbW1pdCk7Cit9CisKK3N0YXRp YyB2b2lkIHRlc3RfY2xlYW51cChkYXRhX3QgKmRhdGEpCit7CisJaW50IGNvdW50OworCWRhdGFf Y29ubmVjdG9yX3QgKmNvbm5zID0gZGF0YS0+Y29ubnM7CisKKwlmb3IgKGNvdW50ID0gMDsgY291 bnQgPCBkYXRhLT5udW1faF90aWxlczsgY291bnQrKykgeworCQlpZiAoY29ubnNbY291bnRdLm91 dHB1dCkgeworCQkJcmVzZXRfcGxhbmUoY29ubnNbY291bnRdLm91dHB1dCk7CisJCQlyZXNldF9v dXRwdXQoY29ubnNbY291bnRdLm91dHB1dCk7CisJCX0KKwl9CisJaWd0X3JlbW92ZV9mYihkYXRh LT5kcm1fZmQsICZkYXRhLT5mYl90ZXN0X3BhdHRlcm4pOworCWlndF9kaXNwbGF5X2NvbW1pdDIo ZGF0YS0+ZGlzcGxheSwgZGF0YS0+Y29tbWl0KTsKKwltZW1zZXQoY29ubnMsIDAsIHNpemVvZihk YXRhX2Nvbm5lY3Rvcl90KSAqIGRhdGEtPm51bV9oX3RpbGVzKTsKK30KKworc3RhdGljIHZvaWQg c2V0dXBfbW9kZShkYXRhX3QgKmRhdGEpCit7CisJaW50IGNvdW50ID0gMDsKKwllbnVtIHBpcGUg cGlwZTsKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKKwlkYXRhX2Nvbm5lY3Rvcl90ICpjb25ucyA9 IGRhdGEtPmNvbm5zOworCisJLyoKKwkgKiBUaGUgb3V0cHV0IGlzIHNldCB0byBQSVBFX05PTkUg YW5kIHRoZW4gYXNzaWduZWQgYSBwaXBlLgorCSAqIFRoaXMgaXMgZG9uZSB0byBlbnN1cmUgYSBj b21wbGV0ZSBtb2Rlc2V0IG9jY3VyZXMgZXZlcnkKKwkgKiB0aW1lIHRoZSB0ZXN0IGlzIHJ1bi4K KwkgKi8KKwlyZXNldF9tb2RlKGRhdGEpOworCisJZm9yIChjb3VudCA9IDA7IGNvdW50IDwgZGF0 YS0+bnVtX2hfdGlsZXM7IGNvdW50KyspIHsKKwkJb3V0cHV0ID0gaWd0X291dHB1dF9mcm9tX2Nv bm5lY3RvcihkYXRhLT5kaXNwbGF5LAorCQkJCQkJICAgY29ubnNbY291bnRdLmNvbm5lY3Rvcik7 CisKKwkJZm9yX2VhY2hfcGlwZShkYXRhLT5kaXNwbGF5LCBwaXBlKSB7CisJCQlpZiAoY291bnQg PiAwICYmIHBpcGUgPT0gY29ubnNbY291bnQtMV0ucGlwZSkKKwkJCQljb250aW51ZTsKKworCQkJ aWYgKGlndF9waXBlX2Nvbm5lY3Rvcl92YWxpZChwaXBlLCBvdXRwdXQpKSB7CisKKwkJCQljb25u c1tjb3VudF0ucGlwZSA9IHBpcGU7CisJCQkJY29ubnNbY291bnRdLm91dHB1dCA9IG91dHB1dDsK KworCQkJCWlndF9vdXRwdXRfc2V0X3BpcGUoY29ubnNbY291bnRdLm91dHB1dCwKKwkJCQkJCSAg ICBjb25uc1tjb3VudF0ucGlwZSk7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisJaWd0X2Rp c3BsYXlfY29tbWl0X2F0b21pYyhkYXRhLT5kaXNwbGF5LCBEUk1fTU9ERV9BVE9NSUNfQUxMT1df TU9ERVNFVCwKKwkJCQkgIE5VTEwpOworfQorCitzdGF0aWMgdm9pZCBzZXR1cF9mcmFtZWJ1ZmZl cihkYXRhX3QgKmRhdGEpCit7CisJaW50IGNvdW50OworCWlndF9wbGFuZV90ICpwcmltYXJ5Owor CWludCBmYl9oX3NpemUgPSAwLCBmYl92X3NpemUgPSAwOworCWRhdGFfY29ubmVjdG9yX3QgKmNv bm5zID0gZGF0YS0+Y29ubnM7CisKKwlmb3IgKGNvdW50ID0gMDsgY291bnQgPCBkYXRhLT5udW1f aF90aWxlczsgY291bnQrKykgeworCisJCWZiX2hfc2l6ZSArPSBjb25uc1tjb3VudF0udGlsZS50 aWxlX2hfc2l6ZTsKKwkJLyogV2Ugc3VwcG9ydCBvbmx5IGhvcml6b250YWwgdGlsZXMsIHNvIHZl cnRpY2FsIHNpemUgaXMgc2FtZQorCQkgKiBmb3IgYWxsIHRpbGVzIGFuZCBuZWVkcyB0byBiZSBh c3NpZ25lZCBvbmx5IG9uY2UuCisJCSAqLworCQlpZiAoIWZiX3Zfc2l6ZSkKKwkJCWZiX3Zfc2l6 ZSA9IGNvbm5zW2NvdW50XS50aWxlLnRpbGVfdl9zaXplOworCX0KKworCWlndF9jcmVhdGVfcGF0 dGVybl9mYihkYXRhLT5kcm1fZmQsCisJCQkgICAgICBmYl9oX3NpemUsCisJCQkgICAgICBmYl92 X3NpemUsCisJCQkgICAgICBEUk1fRk9STUFUX1hCR1I4ODg4LAorCQkJICAgICAgTE9DQUxfRFJN X0ZPUk1BVF9NT0RfTk9ORSwKKwkJCSAgICAgICZkYXRhLT5mYl90ZXN0X3BhdHRlcm4pOworCisJ Zm9yIChjb3VudCA9IDA7IGNvdW50IDwgZGF0YS0+bnVtX2hfdGlsZXM7IGNvdW50KyspIHsKKwor CQlwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShjb25uc1tjb3VudF0ub3V0cHV0 LAorCQkJCQkJICAgIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOworCisJCWlndF9wbGFuZV9zZXRf ZmIocHJpbWFyeSwgJmRhdGEtPmZiX3Rlc3RfcGF0dGVybik7CisKKwkJaWd0X2ZiX3NldF9zaXpl KCZkYXRhLT5mYl90ZXN0X3BhdHRlcm4sIHByaW1hcnksCisJCQkJY29ubnNbY291bnRdLnRpbGUu dGlsZV9oX3NpemUsCisJCQkJY29ubnNbY291bnRdLnRpbGUudGlsZV92X3NpemUpOworCisJCWln dF9mYl9zZXRfcG9zaXRpb24oJmRhdGEtPmZiX3Rlc3RfcGF0dGVybiwgcHJpbWFyeSwKKwkJCQkg ICAgKGNvbm5zW2NvdW50XS50aWxlLnRpbGVfaF9zaXplICoKKwkJCQkgICAgIGNvbm5zW2NvdW50 XS50aWxlLnRpbGVfaF9sb2MpLAorCQkJCSAgICAoY29ubnNbY291bnRdLnRpbGUudGlsZV92X3Np emUgKgorCQkJCSAgICAgY29ubnNbY291bnRdLnRpbGUudGlsZV92X2xvYykpOworCisJCWlndF9w bGFuZV9zZXRfc2l6ZShwcmltYXJ5LAorCQkJCSAgIGNvbm5zW2NvdW50XS50aWxlLnRpbGVfaF9z aXplLAorCQkJCSAgIGNvbm5zW2NvdW50XS50aWxlLnRpbGVfdl9zaXplKTsKKwl9Cit9CisKK3N0 YXRpYyB2b2lkIHBhZ2VfZmxpcF9oYW5kbGVyKGludCBmZCwgdW5zaWduZWQgaW50IHNlcSwKKwkJ CSAgICAgIHVuc2lnbmVkIGludCB0dl9zZWMsIHVuc2lnbmVkIGludCB0dl91c2VjLAorCQkJICAg ICAgdW5zaWduZWQgaW50IGNydGNfaWQsIHZvaWQgKl9kYXRhKQoreworCWRhdGFfdCAqZGF0YSA9 IF9kYXRhOworCWRhdGFfY29ubmVjdG9yX3QgKmNvbm47CisJYm9vbCBpc19vbl90aW1lID0gZmFs c2U7CisJc3RhdGljIHVuc2lnbmVkIGludCBfdHZfc2VjLCBfdHZfdXNlYzsKKwlpbnQgaTsKKwor CWlndF9kZWJ1ZygiUGFnZSBGbGlwIEV2ZW50IHJlY2VpdmVkIGZyb20gQ1JUQzolZCBhdCAldTol dVxuIiwgY3J0Y19pZCwKKwkJICB0dl9zZWMsIHR2X3VzZWMpOworCisJZm9yIChpID0gMDsgaSA8 IGRhdGEtPm51bV9oX3RpbGVzOyBpKyspIHsKKworCQljb25uID0gJmRhdGEtPmNvbm5zW2ldOwor CQlpZiAoZGF0YS0+ZGlzcGxheS0+cGlwZXNbY29ubi0+cGlwZV0uY3J0Y19pZCA9PSBjcnRjX2lk KSB7CisJCQlpZ3RfYXNzZXJ0X2YoIWNvbm4tPmdvdF9wYWdlX2ZsaXAsCisJCQkJICAgICAiR290 IHR3byBwYWdlLWZsaXBzIGZvciBDUlRDICV1XG4iLAorCQkJCSAgICAgY3J0Y19pZCk7CisJCQlj b25uLT5nb3RfcGFnZV9mbGlwID0gdHJ1ZTsKKworCQkJLyogU2tpcCB0aGUgZm9sbG93aW5nIGNo ZWNrcyBmb3IgdGhlIGZpcnN0IHBhZ2UgZmxpcCBldmVudCAqLworCQkJaWYgKF90dl9zZWMgPT0g MCB8fCBfdHZfdXNlYyA9PSAwKSB7CisJCQkJX3R2X3NlYyA9IHR2X3NlYzsKKwkJCQlfdHZfdXNl YyA9IHR2X3VzZWM7CisJCQkJcmV0dXJuOworCQkJfQorCQkJLyoKKwkJCSAqIEZvciBzZWFtbGVz cyB0ZWFyLWZyZWUgZGlzcGxheSwgdGhlIHBhZ2UgZmxpcCBldmVudCB0aW1lc3RhbXBzCisJCQkg KiBmcm9tIGFsbCB0aGUgdGlsZXMgc2hvdWxkIG5vdCBkaWZmZXIgYnkgbW9yZSB0aGFuIDEwdXMu CisJCQkgKi8KKwkJCWlzX29uX3RpbWUgPSB0dl9zZWMgPT0gX3R2X3NlYyAmJiAoYWJzKHR2X3Vz ZWMgLSBfdHZfdXNlYykgPCAxMCk7CisKKwkJCWlndF9mYWlsX29uX2YoIWlzX29uX3RpbWUsICJE ZWxheWVkIHBhZ2UgZmxpcCBldmVudCBmcm9tIENSVEM6JWQgYXQgJXU6JXVcbiIsCisJCQkJICAg ICAgY3J0Y19pZCwgdHZfc2VjLCB0dl91c2VjKTsKKwkJCXJldHVybjsKKwkJfQorCX0KKworCWln dF9hc3NlcnRfZihmYWxzZSwgIkdvdCBwYWdlLWZsaXAgZXZlbnQgZm9yIHVuZXhwZWN0ZWQgQ1JU QyAldVxuIiwKKwkJICAgICBjcnRjX2lkKTsKK30KKworc3RhdGljIGJvb2wgZ290X2FsbF9wYWdl X2ZsaXBzKGRhdGFfdCAqZGF0YSkKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBkYXRh LT5udW1faF90aWxlczsgaSsrKSB7CisJCWlmICghZGF0YS0+Y29ubnNbaV0uZ290X3BhZ2VfZmxp cCkKKwkJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworaWd0X21haW4K K3sKKwlpZ3RfZGlzcGxheV90IGRpc3BsYXk7CisJZGF0YV90IGRhdGEgPSB7MH07CisJc3RydWN0 IHBvbGxmZCBwZmQgPSB7MH07CisJZHJtRXZlbnRDb250ZXh0IGRybV9ldmVudCA9IHswfTsKKwlp bnQgcmV0OworCisJaWd0X2ZpeHR1cmUgeworCQlkYXRhLmRybV9mZCA9IGRybV9vcGVuX2RyaXZl cl9tYXN0ZXIoRFJJVkVSX0FOWSk7CisKKwkJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgp OworCQlpZ3RfZGlzcGxheV9yZXF1aXJlKCZkaXNwbGF5LCBkYXRhLmRybV9mZCk7CisJCWlndF9k aXNwbGF5X3Jlc2V0KCZkaXNwbGF5KTsKKworCQlkYXRhLmRpc3BsYXkgPSAmZGlzcGxheTsKKwkJ cGZkLmZkID0gZGF0YS5kcm1fZmQ7CisJCXBmZC5ldmVudHMgPSBQT0xMSU47CisJCWRybV9ldmVu dC52ZXJzaW9uID0gMzsKKwkJZHJtX2V2ZW50LnBhZ2VfZmxpcF9oYW5kbGVyMiA9IHBhZ2VfZmxp cF9oYW5kbGVyOworCQlkYXRhLmNvbW1pdCA9IGRhdGEuZGlzcGxheS0+aXNfYXRvbWljID8gQ09N TUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1k7CisJCWlndF9yZXF1aXJlKGRhdGEuY29tbWl0ID09 IENPTU1JVF9BVE9NSUMpOworCisJCWdldF9udW1iZXJfb2ZfaF90aWxlcygmZGF0YSk7CisJCWln dF9kZWJ1ZygiTnVtYmVyIG9mIEhvcml6b250YWwgVGlsZXM6ICVkXG4iLCBkYXRhLm51bV9oX3Rp bGVzKTsKKwkJaWd0X3JlcXVpcmUoZGF0YS5udW1faF90aWxlcyA+IDApOworCQlkYXRhLmNvbm5z ID0gY2FsbG9jKGRhdGEubnVtX2hfdGlsZXMsIHNpemVvZihkYXRhX2Nvbm5lY3Rvcl90KSk7CisJ fQorCisJaWd0X3N1YnRlc3QoImJhc2ljLXRlc3QtcGF0dGVybiIpIHsKKwkJaWd0X2Fzc2VydChk YXRhLmNvbm5zKTsKKworCQlnZXRfY29ubmVjdG9ycygmZGF0YSk7CisJCXNldHVwX21vZGUoJmRh dGEpOworCQlzZXR1cF9mcmFtZWJ1ZmZlcigmZGF0YSk7CisJCWlndF9kaXNwbGF5X2NvbW1pdF9h dG9taWMoZGF0YS5kaXNwbGF5LCBEUk1fTU9ERV9BVE9NSUNfTk9OQkxPQ0sgfAorCQkJCQkgIERS TV9NT0RFX1BBR0VfRkxJUF9FVkVOVCwgJmRhdGEpOworCQl3aGlsZSAoIWdvdF9hbGxfcGFnZV9m bGlwcygmZGF0YSkpIHsKKwkJCXJldCA9IHBvbGwoJnBmZCwgMSwgMTAwMCk7CisJCQlpZ3RfYXNz ZXJ0KHJldCA9PSAxKTsKKwkJCWRybUhhbmRsZUV2ZW50KGRhdGEuZHJtX2ZkLCAmZHJtX2V2ZW50 KTsKKwkJfQorCisJCXRlc3RfY2xlYW51cCgmZGF0YSk7CisJfQorCisJaWd0X2ZpeHR1cmUgewor CQlmcmVlKGRhdGEuY29ubnMpOworCQljbG9zZShkYXRhLmRybV9mZCk7CisJCWttc3Rlc3RfcmVz dG9yZV92dF9tb2RlKCk7CisJCWlndF9kaXNwbGF5X2ZpbmkoZGF0YS5kaXNwbGF5KTsKKwl9Cit9 CmRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCmluZGV4 IGE3YjJiMzIyLi41MDI5MmRmOCAxMDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIv dGVzdHMvbWVzb24uYnVpbGQKQEAgLTI2LDYgKzI2LDcgQEAgdGVzdF9wcm9ncyA9IFsKIAkna21z X2N1cnNvcl9lZGdlX3dhbGsnLAogCSdrbXNfY3Vyc29yX2xlZ2FjeScsCiAJJ2ttc19kcF9kc2Mn LAorCSdrbXNfZHBfdGlsZWRfZGlzcGxheScsCiAJJ2ttc19kcmF3X2NyYycsCiAJJ2ttc19mYmNv bl9mYnQnLAogCSdrbXNfZmVuY2VfcGluX2xlYWsnLAotLSAKMi4xOS4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdApp Z3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=