From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keith Packard Subject: [PATCH i-g-t 1/2] tests/kms_sequence: Add tests for new CRTC get/queue sequence ioctls [v2] Date: Wed, 20 Dec 2017 22:32:28 -0800 Message-ID: <20171221063229.9587-2-keithp@keithp.com> References: <20171221063229.9587-1-keithp@keithp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171221063229.9587-1-keithp@keithp.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: Keith Packard List-Id: dri-devel@lists.freedesktop.org VGhlc2UgaW9jdGxzIHJlcGxhY2UgZHJtV2FpdFZCbGFuayBhbmQgYWRkIG5zIHRpbWUgcmVzb2x1 dGlvbiBhbmQKNjQtYml0IHNlcXVlbmNlIG51bWJlcnMgdG8gY29tcGx5IHdpdGggdGhlIFZ1bGth biBBUEkgc3BlY2lmaWNhdGlvbnMuCgpUaGUgdGVzdHMgd2VyZSBkZXJpdmVkIGZyb20gdGhlIGV4 aXN0aW5nIGttc192YmxhbmsgdGVzdHMgd2l0aCB0aGUKJ3dhaXQnIHZhcmlhbnQgZWxpZGVkIGFz IHRoZSBuZXcgQVBJIGRvZXNuJ3QgcHJvdmlkZSBhIG1lY2hhbmlzbSBmb3IKYmxvY2tpbmcgaW4g dGhlIGtlcm5lbC4KCnYyOiBmcm9tIERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+Cgog KiBBZGQgbG9jYWwgZGVmaW5pdGlvbnMgb2YgbmV3IGlvY3RscyB0byBhdm9pZCByZXF1aXJpbmcg bGF0ZXN0CiAgIGxpYmRybS4KCiAqIFJlbW92ZSBGSVJTVF9QSVhFTF9PVVQgYXMgdGhhdCBoYXMg YmVlbiByZW1vdmVkIGZyb20gdGhlIHByb3Bvc2VkCiAgIGtlcm5lbCBwYXRjaGVzLgoKU2lnbmVk LW9mZi1ieTogS2VpdGggUGFja2FyZCA8a2VpdGhwQGtlaXRocC5jb20+Ci0tLQogbGliL2lndF9r bXMuYyAgICAgICAgICB8ICAgMiArLQogbGliL2lndF9rbXMuaCAgICAgICAgICB8ICAgMSArCiB0 ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIHwgICAxICsKIHRlc3RzL2ttc19zZXF1ZW5jZS5jICAgfCAz MTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdGVz dHMvbWVzb24uYnVpbGQgICAgICB8ICAgMSArCiA1IGZpbGVzIGNoYW5nZWQsIDMyMSBpbnNlcnRp b25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMva21zX3NlcXVl bmNlLmMKCmRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5jIGIvbGliL2lndF9rbXMuYwppbmRleCAx MjQyMzI0ZS4uZjZhZDM1NjUgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rfa21zLmMKKysrIGIvbGliL2ln dF9rbXMuYwpAQCAtMjA3OSw3ICsyMDc5LDcgQEAgcmVwb3J0X2R1cDoKIAl9CiB9CiAKLXN0YXRp YyBpZ3RfcGlwZV90ICppZ3Rfb3V0cHV0X2dldF9kcml2aW5nX3BpcGUoaWd0X291dHB1dF90ICpv dXRwdXQpCitpZ3RfcGlwZV90ICppZ3Rfb3V0cHV0X2dldF9kcml2aW5nX3BpcGUoaWd0X291dHB1 dF90ICpvdXRwdXQpCiB7CiAJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9IG91dHB1dC0+ZGlzcGxh eTsKIAllbnVtIHBpcGUgcGlwZTsKZGlmZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmggYi9saWIvaWd0 X2ttcy5oCmluZGV4IGNmZTY0NmFlLi44ZjI3MGJmZCAxMDA2NDQKLS0tIGEvbGliL2lndF9rbXMu aAorKysgYi9saWIvaWd0X2ttcy5oCkBAIC0zNzcsNiArMzc3LDcgQEAgaWd0X3BsYW5lX3QgKmln dF9vdXRwdXRfZ2V0X3BsYW5lKGlndF9vdXRwdXRfdCAqb3V0cHV0LCBpbnQgcGxhbmVfaWR4KTsK IGlndF9wbGFuZV90ICppZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKGlndF9vdXRwdXRfdCAqb3V0 cHV0LCBpbnQgcGxhbmVfdHlwZSk7CiBpZ3Rfb3V0cHV0X3QgKmlndF9vdXRwdXRfZnJvbV9jb25u ZWN0b3IoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwKICAgICBkcm1Nb2RlQ29ubmVjdG9yICpjb25u ZWN0b3IpOworaWd0X3BpcGVfdCAqaWd0X291dHB1dF9nZXRfZHJpdmluZ19waXBlKGlndF9vdXRw dXRfdCAqb3V0cHV0KTsKIGlndF9wbGFuZV90ICppZ3RfcGlwZV9nZXRfcGxhbmVfdHlwZShpZ3Rf cGlwZV90ICpwaXBlLCBpbnQgcGxhbmVfdHlwZSk7CiAKIHZvaWQgaWd0X3BpcGVfcmVxdWVzdF9v dXRfZmVuY2UoaWd0X3BpcGVfdCAqcGlwZSk7CmRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5z b3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwppbmRleCBlNGUwNmQwMS4uNDg1ZWQ0Mjkg MTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvdGVzdHMvTWFrZWZpbGUu c291cmNlcwpAQCAtMjExLDYgKzIxMSw3IEBAIFRFU1RTX3Byb2dzID0gXAogCWttc190dl9sb2Fk X2RldGVjdCBcCiAJa21zX3VuaXZlcnNhbF9wbGFuZSBcCiAJa21zX3ZibGFuayBcCisJa21zX3Nl cXVlbmNlIFwKIAltZXRhX3Rlc3QgXAogCXBlcmYgXAogCXBlcmZfcG11IFwKZGlmZiAtLWdpdCBh L3Rlc3RzL2ttc19zZXF1ZW5jZS5jIGIvdGVzdHMva21zX3NlcXVlbmNlLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjc4M2RkYTI1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVz dHMva21zX3NlcXVlbmNlLmMKQEAgLTAsMCArMSwzMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkg MjAxNSBJbnRlbCBDb3Jwb3JhdGlvbgorICogQ29weXJpZ2h0IMKpIDIwMTcgS2VpdGggUGFja2Fy ZAorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg bGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2Yg dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBp bmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICog U29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAor ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g IElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisv KiogQGZpbGUga21zX3NlcXVlbmNlLmMKKyAqCisgKiBUaGlzIGlzIGEgdGVzdCBvZiBkcm1DcnRj R2V0U2VxdWVuY2UgYW5kIGRybUNydGNRdWV1ZVNlcXVlbmNlCisgKi8KKworI2luY2x1ZGUgImln dC5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8 c3RyaW5nLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2lu Y2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHN5cy9wb2xsLmg+ CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2luY2x1ZGUg PHN5cy93YWl0Lmg+CisKKyNpbmNsdWRlIDxkcm0uaD4KKworI2luY2x1ZGUgImludGVsX2J1Zm1n ci5oIgorCitJR1RfVEVTVF9ERVNDUklQVElPTigiVGVzdCBDcnRjR2V0U2VxdWVuY2UgYW5kIENy dGNRdWV1ZVNlcXVlbmNlLiIpOworCit0eXBlZGVmIHN0cnVjdCB7CisJaWd0X2Rpc3BsYXlfdCBk aXNwbGF5OworCXN0cnVjdCBpZ3RfZmIgcHJpbWFyeV9mYjsKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1 dDsKKwl1aW50MzJfdCBjcnRjX2lkOworCWVudW0gcGlwZSBwaXBlOworCXVuc2lnbmVkIGludCBm bGFnczsKKyNkZWZpbmUgSURMRSAxCisjZGVmaW5lIEJVU1kgMgorI2RlZmluZSBGT1JLRUQgNAor fSBkYXRhX3Q7CisKK3N0cnVjdCBsb2NhbF9kcm1fY3J0Y19nZXRfc2VxdWVuY2UgeworCV9fdTMy IGNydGNfaWQ7CisJX191MzIgYWN0aXZlOworCV9fdTY0IHNlcXVlbmNlOworCV9fdTY0IHNlcXVl bmNlX25zOworfTsKKworc3RydWN0IGxvY2FsX2RybV9jcnRjX3F1ZXVlX3NlcXVlbmNlIHsKKwlf X3UzMiBjcnRjX2lkOworCV9fdTMyIGZsYWdzOworCV9fdTY0IHNlcXVlbmNlOworCV9fdTY0IHVz ZXJfZGF0YTsKK307CisKKyNkZWZpbmUgTE9DQUxfRFJNX0lPQ1RMX0NSVENfR0VUX1NFUVVFTkNF ICAgICBEUk1fSU9XUigweDNiLCBzdHJ1Y3QgbG9jYWxfZHJtX2NydGNfZ2V0X3NlcXVlbmNlKQor I2RlZmluZSBMT0NBTF9EUk1fSU9DVExfQ1JUQ19RVUVVRV9TRVFVRU5DRSAgIERSTV9JT1dSKDB4 M2MsIHN0cnVjdCBsb2NhbF9kcm1fY3J0Y19xdWV1ZV9zZXF1ZW5jZSkKKworI2RlZmluZSBMT0NB TF9EUk1fQ1JUQ19TRVFVRU5DRV9SRUxBVElWRSAgICAgICAgICAgICAgMHgwMDAwMDAwMSAgICAg IC8qIHNlcXVlbmNlIGlzIHJlbGF0aXZlIHRvIGN1cnJlbnQgKi8KKyNkZWZpbmUgTE9DQUxfRFJN X0NSVENfU0VRVUVOQ0VfTkVYVF9PTl9NSVNTICAgICAgICAgIDB4MDAwMDAwMDIgICAgICAvKiBV c2UgbmV4dCBzZXF1ZW5jZSBpZiB3ZSd2ZSBtaXNzZWQgKi8KKworc3RydWN0IGxvY2FsX2RybV9l dmVudF9jcnRjX3NlcXVlbmNlIHsKKyAgICAgICAgc3RydWN0IGRybV9ldmVudCAgICAgICAgYmFz ZTsKKyAgICAgICAgX191NjQgICAgICAgICAgICAgICAgICAgdXNlcl9kYXRhOworICAgICAgICBf X3M2NCAgICAgICAgICAgICAgICAgICB0aW1lX25zOworICAgICAgICBfX3U2NCAgICAgICAgICAg ICAgICAgICBzZXF1ZW5jZTsKK307CisKKworc3RhdGljIGRvdWJsZSBlbGFwc2VkKGNvbnN0IHN0 cnVjdCB0aW1lc3BlYyAqc3RhcnQsCisJCSAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqZW5k LAorCQkgICAgICBpbnQgbG9vcCkKK3sKKwlyZXR1cm4gKDFlNiooZW5kLT50dl9zZWMgLSBzdGFy dC0+dHZfc2VjKSArIChlbmQtPnR2X25zZWMgLSBzdGFydC0+dHZfbnNlYykvMTAwMCkvbG9vcDsK K30KKworc3RhdGljIHZvaWQgcHJlcGFyZV9jcnRjKGRhdGFfdCAqZGF0YSwgaW50IGZkLCBpZ3Rf b3V0cHV0X3QgKm91dHB1dCkKK3sKKwlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7CisJaWd0X2Rpc3Bs YXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5OworCWlndF9wbGFuZV90ICpwcmltYXJ5Owor CisJLyogc2VsZWN0IHRoZSBwaXBlIHdlIHdhbnQgdG8gdXNlICovCisJaWd0X291dHB1dF9zZXRf cGlwZShvdXRwdXQsIGRhdGEtPnBpcGUpOworCisJLyogY3JlYXRlIGFuZCBzZXQgdGhlIHByaW1h cnkgcGxhbmUgZmIgKi8KKwltb2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpOworCWln dF9jcmVhdGVfY29sb3JfZmIoZmQsIG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKKwkJ CSAgICBEUk1fRk9STUFUX1hSR0I4ODg4LAorCQkJICAgIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05P TkUsCisJCQkgICAgMC4wLCAwLjAsIDAuMCwKKwkJCSAgICAmZGF0YS0+cHJpbWFyeV9mYik7CisK KwlwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShvdXRwdXQsIERSTV9QTEFORV9U WVBFX1BSSU1BUlkpOworCWlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmRhdGEtPnByaW1hcnlf ZmIpOworCisJZGF0YS0+Y3J0Y19pZCA9IHByaW1hcnktPnBpcGUtPmNydGNfaWQ7CisKKwlpZ3Rf ZGlzcGxheV9jb21taXQoZGlzcGxheSk7CisKKwlpZ3Rfd2FpdF9mb3JfdmJsYW5rKGZkLCBkYXRh LT5waXBlKTsKK30KKworc3RhdGljIHZvaWQgY2xlYW51cF9jcnRjKGRhdGFfdCAqZGF0YSwgaW50 IGZkLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCkKK3sKKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0g JmRhdGEtPmRpc3BsYXk7CisJaWd0X3BsYW5lX3QgKnByaW1hcnk7CisKKwlpZ3RfcmVtb3ZlX2Zi KGZkLCAmZGF0YS0+cHJpbWFyeV9mYik7CisKKwlwcmltYXJ5ID0gaWd0X291dHB1dF9nZXRfcGxh bmVfdHlwZShvdXRwdXQsIERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOworCWlndF9wbGFuZV9zZXRf ZmIocHJpbWFyeSwgTlVMTCk7CisKKwlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgUElQRV9B TlkpOworCWlndF9kaXNwbGF5X2NvbW1pdChkaXNwbGF5KTsKK30KKworc3RhdGljIGludCBjcnRj X2dldF9zZXF1ZW5jZShpbnQgZmQsIHN0cnVjdCBsb2NhbF9kcm1fY3J0Y19nZXRfc2VxdWVuY2Ug KmNncykKK3sKKwlpbnQgZXJyOworCisJZXJyID0gMDsKKwlpZiAoaWd0X2lvY3RsKGZkLCBMT0NB TF9EUk1fSU9DVExfQ1JUQ19HRVRfU0VRVUVOQ0UsIGNncykpCisJCWVyciA9IC1lcnJubzsKKwor CXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgY3J0Y19xdWV1ZV9zZXF1ZW5jZShpbnQgZmQs IHN0cnVjdCBsb2NhbF9kcm1fY3J0Y19xdWV1ZV9zZXF1ZW5jZSAqY3FzKQoreworCWludCBlcnI7 CisKKwllcnIgPSAwOworCWlmIChpZ3RfaW9jdGwoZmQsIExPQ0FMX0RSTV9JT0NUTF9DUlRDX1FV RVVFX1NFUVVFTkNFLCBjcXMpKQorCQllcnIgPSAtZXJybm87CisJcmV0dXJuIGVycjsKK30KKwor c3RhdGljIHZvaWQgcnVuX3Rlc3QoZGF0YV90ICpkYXRhLCBpbnQgZmQsIHZvaWQgKCp0ZXN0ZnVu YykoZGF0YV90ICosIGludCwgaW50KSkKK3sKKwlpbnQgbmNoaWxkcmVuID0KKwkJZGF0YS0+Zmxh Z3MgJiBGT1JLRUQgPyBzeXNjb25mKF9TQ19OUFJPQ0VTU09SU19PTkxOKSA6IDE7CisJaWd0X2Rp c3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5OworCWlndF9vdXRwdXRfdCAqb3V0cHV0 OworCWVudW0gcGlwZSBwOworCXVuc2lnbmVkIGludCB2YWxpZF90ZXN0cyA9IDA7CisKKwlmb3Jf ZWFjaF9waXBlX3dpdGhfdmFsaWRfb3V0cHV0KGRpc3BsYXksIHAsIG91dHB1dCkgeworCQlkYXRh LT5waXBlID0gcDsKKwkJcHJlcGFyZV9jcnRjKGRhdGEsIGZkLCBvdXRwdXQpOworCisJCWlndF9p bmZvKCJCZWdpbm5pbmcgJXMgb24gcGlwZSAlcywgY29ubmVjdG9yICVzICglZCB0aHJlYWRzKVxu IiwKKwkJCSBpZ3Rfc3VidGVzdF9uYW1lKCksCisJCQkga21zdGVzdF9waXBlX25hbWUoZGF0YS0+ cGlwZSksCisJCQkgaWd0X291dHB1dF9uYW1lKG91dHB1dCksCisJCQkgbmNoaWxkcmVuKTsKKwor CQlpZiAoZGF0YS0+ZmxhZ3MgJiBCVVNZKSB7CisJCQlzdHJ1Y3QgbG9jYWxfZHJtX2NydGNfcXVl dWVfc2VxdWVuY2UgY3FzOworCisJCQltZW1zZXQoJmNxcywgMCwgc2l6ZW9mKGNxcykpOworCQkJ Y3FzLmNydGNfaWQgPSBkYXRhLT5jcnRjX2lkOworCQkJY3FzLmZsYWdzID0gTE9DQUxfRFJNX0NS VENfU0VRVUVOQ0VfUkVMQVRJVkU7CisJCQljcXMuc2VxdWVuY2UgPSAxMjAgKyAxMjsKKwkJCWln dF9hc3NlcnRfZXEoY3J0Y19xdWV1ZV9zZXF1ZW5jZShmZCwgJmNxcyksIDApOworCQl9CisKKwkJ aWd0X2ZvcmsoY2hpbGQsIG5jaGlsZHJlbikKKwkJCXRlc3RmdW5jKGRhdGEsIGZkLCBuY2hpbGRy ZW4pOworCQlpZ3Rfd2FpdGNoaWxkcmVuKCk7CisKKwkJaWYgKGRhdGEtPmZsYWdzICYgQlVTWSkg eworCQkJc3RydWN0IGRybV9ldmVudF92YmxhbmsgYnVmOworCQkJaWd0X2Fzc2VydF9lcShyZWFk KGZkLCAmYnVmLCBzaXplb2YoYnVmKSksIHNpemVvZihidWYpKTsKKwkJfQorCisJCWlndF9hc3Nl cnQocG9sbCgmKHN0cnVjdCBwb2xsZmQpe2ZkLCBQT0xMSU59LCAxLCAwKSA9PSAwKTsKKworCQlp Z3RfaW5mbygiXG4lcyBvbiBwaXBlICVzLCBjb25uZWN0b3IgJXM6IFBBU1NFRFxuXG4iLAorCQkJ IGlndF9zdWJ0ZXN0X25hbWUoKSwKKwkJCSBrbXN0ZXN0X3BpcGVfbmFtZShkYXRhLT5waXBlKSwK KwkJCSBpZ3Rfb3V0cHV0X25hbWUob3V0cHV0KSk7CisKKwkJLyogY2xlYW51cCB3aGF0IHByZXBh cmVfY3J0YygpIGhhcyBkb25lICovCisJCWNsZWFudXBfY3J0YyhkYXRhLCBmZCwgb3V0cHV0KTsK KwkJdmFsaWRfdGVzdHMrKzsKKwl9CisKKwlpZ3RfcmVxdWlyZV9mKHZhbGlkX3Rlc3RzLAorCQkg ICAgICAibm8gdmFsaWQgY3J0Yy9jb25uZWN0b3IgY29tYmluYXRpb25zIGZvdW5kXG4iKTsKK30K Kworc3RhdGljIHZvaWQgc2VxdWVuY2VfZ2V0KGRhdGFfdCAqZGF0YSwgaW50IGZkLCBpbnQgbmNo aWxkcmVuKQoreworCXN0cnVjdCBsb2NhbF9kcm1fY3J0Y19nZXRfc2VxdWVuY2UgY2dzOworCXN0 cnVjdCB0aW1lc3BlYyBzdGFydCwgZW5kOworCXVuc2lnbmVkIGxvbmcgc3EsIGNvdW50ID0gMDsK KworCW1lbXNldCgmY2dzLCAwLCBzaXplb2YoY2dzKSk7CisJY2dzLmNydGNfaWQgPSBkYXRhLT5j cnRjX2lkOworCWlndF9hc3NlcnRfZXEoY3J0Y19nZXRfc2VxdWVuY2UoZmQsICZjZ3MpLCAwKTsK KworCXNxID0gY2dzLnNlcXVlbmNlOworCisJY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMs ICZzdGFydCk7CisJZG8geworCQlpZ3RfYXNzZXJ0X2VxKGNydGNfZ2V0X3NlcXVlbmNlKGZkLCAm Y2dzKSwgMCk7CisJCWNvdW50Kys7CisJfSB3aGlsZSAoKGNncy5zZXF1ZW5jZSAtIHNxKSA8PSAx MjApOworCWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmZW5kKTsKKworCWlndF9pbmZv KCJUaW1lIHRvIGdldCBjdXJyZW50IGNvdW50ZXIgKCVzKToJCSU3LjNmwrVzXG4iLAorCQkgZGF0 YS0+ZmxhZ3MgJiBCVVNZID8gImJ1c3kiIDogImlkbGUiLCBlbGFwc2VkKCZzdGFydCwgJmVuZCwg Y291bnQpKTsKK30KKworc3RhdGljIHZvaWQgc2VxdWVuY2VfcXVldWUoZGF0YV90ICpkYXRhLCBp bnQgZmQsIGludCBuY2hpbGRyZW4pCit7CisJc3RydWN0IGxvY2FsX2RybV9jcnRjX2dldF9zZXF1 ZW5jZSBjZ3Nfc3RhcnQsIGNnc19lbmQ7CisJc3RydWN0IGxvY2FsX2RybV9jcnRjX3F1ZXVlX3Nl cXVlbmNlIGNxczsKKwl1bnNpZ25lZCBsb25nIHRhcmdldDsKKwlpbnQgdG90YWwgPSAxMjAgLyBu Y2hpbGRyZW47CisJaW50IG47CisJZG91YmxlIGZyYW1lX3RpbWU7CisKKwltZW1zZXQoJmNnc19z dGFydCwgMCwgc2l6ZW9mKGNnc19zdGFydCkpOworCWNnc19zdGFydC5jcnRjX2lkID0gZGF0YS0+ Y3J0Y19pZDsKKwlpZ3RfYXNzZXJ0X2VxKGNydGNfZ2V0X3NlcXVlbmNlKGZkLCAmY2dzX3N0YXJ0 KSwgMCk7CisKKwl0YXJnZXQgPSBjZ3Nfc3RhcnQuc2VxdWVuY2UgKyB0b3RhbDsKKwlmb3IgKG4g PSAwOyBuIDwgdG90YWw7IG4rKykgeworCQltZW1zZXQoJmNxcywgMCwgc2l6ZW9mKGNxcykpOwor CQljcXMuY3J0Y19pZCA9IGRhdGEtPmNydGNfaWQ7CisJCWNxcy5mbGFncyA9IDA7CisJCWNxcy5z ZXF1ZW5jZSA9IHRhcmdldDsKKwkJaWd0X2Fzc2VydF9lcShjcnRjX3F1ZXVlX3NlcXVlbmNlKGZk LCAmY3FzKSwgMCk7CisJCWlndF9hc3NlcnRfZXEoY3FzLnNlcXVlbmNlLCB0YXJnZXQpOworCX0K KworCWZvciAobiA9IDA7IG4gPCB0b3RhbDsgbisrKSB7CisJCXN0cnVjdCBsb2NhbF9kcm1fZXZl bnRfY3J0Y19zZXF1ZW5jZSBldjsKKwkJaWd0X2Fzc2VydF9lcShyZWFkKGZkLCAmZXYsIHNpemVv ZihldikpLCBzaXplb2YoZXYpKTsKKwkJaWd0X2Fzc2VydF9lcShldi5zZXF1ZW5jZSwgdGFyZ2V0 KTsKKwl9CisJbWVtc2V0KCZjZ3NfZW5kLCAwLCBzaXplb2YoY2dzX2VuZCkpOworCWNnc19lbmQu Y3J0Y19pZCA9IGRhdGEtPmNydGNfaWQ7CisJaWd0X2Fzc2VydF9lcShjcnRjX2dldF9zZXF1ZW5j ZShmZCwgJmNnc19lbmQpLCAwKTsKKwlpZ3RfYXNzZXJ0X2VxKGNnc19lbmQuc2VxdWVuY2UsIHRh cmdldCk7CisKKwlmcmFtZV90aW1lID0gKGRvdWJsZSkgKGNnc19lbmQuc2VxdWVuY2VfbnMgLSBj Z3Nfc3RhcnQuc2VxdWVuY2VfbnMpIC8gKDFlOSAqIHRvdGFsKTsKKwlpZ3RfaW5mbygiVGltZSBw ZXIgZnJhbWUgZnJvbSBxdWV1ZSB0byBldmVudCAoJXMpOiAgICAgICU3LjNmbXMoJTcuM2ZIeilc biIsCisJCSBkYXRhLT5mbGFncyAmIEJVU1kgPyAiYnVzeSIgOiAiaWRsZSIsCisJCSBmcmFtZV90 aW1lICogMTAwMC4wLCAxLjAvZnJhbWVfdGltZSk7Cit9CisKK2lndF9tYWluCit7CisJaW50IGZk OworCWRhdGFfdCBkYXRhOworCWNvbnN0IHN0cnVjdCB7CisJCWNvbnN0IGNoYXIgKm5hbWU7CisJ CXZvaWQgKCpmdW5jKShkYXRhX3QgKiwgaW50LCBpbnQpOworCQl1bnNpZ25lZCBpbnQgdmFsaWQ7 CisJfSBmdW5jc1tdID0geworCQl7ICJnZXQiLCBzZXF1ZW5jZV9nZXQsIElETEUgfCBGT1JLRUQg fCBCVVNZIH0sCisJCXsgInF1ZXVlIiwgc2VxdWVuY2VfcXVldWUsIElETEUgfCBCVVNZIH0sCisJ CXsgfQorCX0sICpmOworCWNvbnN0IHN0cnVjdCB7CisJCWNvbnN0IGNoYXIgKm5hbWU7CisJCXVu c2lnbmVkIGludCBmbGFnczsKKwl9IG1vZGVzW10gPSB7CisJCXsgImlkbGUiLCBJRExFIH0sCisJ CXsgImZvcmtlZCIsIElETEUgfCBGT1JLRUQgfSwKKwkJeyAiYnVzeSIsIEJVU1kgfSwKKwkJeyAi Zm9ya2VkLWJ1c3kiLCBCVVNZIHwgRk9SS0VEIH0sCisJCXsgfQorCX0sICptOworCisJaWd0X3Nr aXBfb25fc2ltdWxhdGlvbigpOworCisJaWd0X2ZpeHR1cmUgeworCQlmZCA9IGRybV9vcGVuX2Ry aXZlcihEUklWRVJfQU5ZKTsKKwkJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOworCQlp Z3RfZGlzcGxheV9pbml0KCZkYXRhLmRpc3BsYXksIGZkKTsKKwl9CisKKwlmb3IgKGYgPSBmdW5j czsgZi0+bmFtZTsgZisrKSB7CisJCWZvciAobSA9IG1vZGVzOyBtLT5uYW1lOyBtKyspIHsKKwkJ CWlmIChtLT5mbGFncyAmIH5mLT52YWxpZCkKKwkJCQljb250aW51ZTsKKworCQkJaWd0X3N1YnRl c3RfZigiJXMtJXMiLCBmLT5uYW1lLCBtLT5uYW1lKSB7CisJCQkJZGF0YS5mbGFncyA9IG0tPmZs YWdzOworCQkJCXJ1bl90ZXN0KCZkYXRhLCBmZCwgZi0+ZnVuYyk7CisJCQl9CisJCX0KKwl9Cit9 CmRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCmluZGV4 IDE5MWFjNGNlLi5iMTZmZTlhNSAxMDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIv dGVzdHMvbWVzb24uYnVpbGQKQEAgLTE4OSw2ICsxODksNyBAQCB0ZXN0X3Byb2dzID0gWwogCSdr bXNfdHZfbG9hZF9kZXRlY3QnLAogCSdrbXNfdW5pdmVyc2FsX3BsYW5lJywKIAkna21zX3ZibGFu aycsCisJJ2ttc19zZXF1ZW5jZScsCiAJJ21ldGFfdGVzdCcsCiAJJ3BlcmYnLAogCSdwbV9iYWNr bGlnaHQnLAotLSAKMi4xNS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwK