From: keithp@keithp.com Subject: [PATCH i-g-t] tests/kms_sequence: Add tests for new CRTC get/queue sequence ioctls Date: Sat, 30 Sep 2017 12:35:33 -0700 Message-ID: <20170930193533.31336-1-keithp@keithp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from elaine.keithp.com (home.keithp.com [63.227.221.253]) by gabe.freedesktop.org (Postfix) with ESMTP id 15CC46E287 for ; Sat, 30 Sep 2017 19:35:45 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel GFX discussion Cc: Keith Packard List-Id: intel-gfx@lists.freedesktop.org RnJvbTogS2VpdGggUGFja2FyZCA8a2VpdGhwQGtlaXRocC5jb20+CgpUaGVzZSBpb2N0bHMgcmVw bGFjZSBkcm1XYWl0VkJsYW5rIGFuZCBhZGQgbnMgdGltZSByZXNvbHV0aW9uIGFuZAo2NC1iaXQg c2VxdWVuY2UgbnVtYmVycyB0byBjb21wbHkgd2l0aCB0aGUgVnVsa2FuIEFQSSBzcGVjaWZpY2F0 aW9ucy4KClRoZSB0ZXN0cyB3ZXJlIGRlcml2ZWQgZnJvbSB0aGUgZXhpc3Rpbmcga21zX3ZibGFu ayB0ZXN0cyB3aXRoIHRoZQond2FpdCcgdmFyaWFudCBlbGlkZWQgYXMgdGhlIG5ldyBBUEkgZG9l c24ndCBwcm92aWRlIGEgbWVjaGFuaXNtIGZvcgpibG9ja2luZyBpbiB0aGUga2VybmVsLgoKU2ln bmVkLW9mZi1ieTogS2VpdGggUGFja2FyZCA8a2VpdGhwQGtlaXRocC5jb20+Ci0tLQogbGliL2ln dF9rbXMuYyAgICAgICAgICB8ICAgMiArLQogbGliL2lndF9rbXMuaCAgICAgICAgICB8ICAgMSAr CiB0ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIHwgICAxICsKIHRlc3RzL2ttc19zZXF1ZW5jZS5jICAg fCAyODkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog dGVzdHMvbWVzb24uYnVpbGQgICAgICB8ICAgMSArCiA1IGZpbGVzIGNoYW5nZWQsIDI5MyBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMva21zX3Nl cXVlbmNlLmMKCmRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5jIGIvbGliL2lndF9rbXMuYwppbmRl eCA3YmNhZmMwNy4uNjFlY2IxZjIgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rfa21zLmMKKysrIGIvbGli L2lndF9rbXMuYwpAQCAtMTk4Myw3ICsxOTgzLDcgQEAgcmVwb3J0X2R1cDoKIAl9CiB9CiAKLXN0 YXRpYyBpZ3RfcGlwZV90ICppZ3Rfb3V0cHV0X2dldF9kcml2aW5nX3BpcGUoaWd0X291dHB1dF90 ICpvdXRwdXQpCitpZ3RfcGlwZV90ICppZ3Rfb3V0cHV0X2dldF9kcml2aW5nX3BpcGUoaWd0X291 dHB1dF90ICpvdXRwdXQpCiB7CiAJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9IG91dHB1dC0+ZGlz cGxheTsKIAllbnVtIHBpcGUgcGlwZTsKZGlmZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmggYi9saWIv aWd0X2ttcy5oCmluZGV4IDNkMTA2MWZhLi43NThkMjJlMyAxMDA2NDQKLS0tIGEvbGliL2lndF9r bXMuaAorKysgYi9saWIvaWd0X2ttcy5oCkBAIC0zOTcsNiArMzk3LDcgQEAgaWd0X3BsYW5lX3Qg KmlndF9vdXRwdXRfZ2V0X3BsYW5lKGlndF9vdXRwdXRfdCAqb3V0cHV0LCBpbnQgcGxhbmVfaWR4 KTsKIGlndF9wbGFuZV90ICppZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKGlndF9vdXRwdXRfdCAq b3V0cHV0LCBpbnQgcGxhbmVfdHlwZSk7CiBpZ3Rfb3V0cHV0X3QgKmlndF9vdXRwdXRfZnJvbV9j b25uZWN0b3IoaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwKICAgICBkcm1Nb2RlQ29ubmVjdG9yICpj b25uZWN0b3IpOworaWd0X3BpcGVfdCAqaWd0X291dHB1dF9nZXRfZHJpdmluZ19waXBlKGlndF9v dXRwdXRfdCAqb3V0cHV0KTsKIGlndF9wbGFuZV90ICppZ3RfcGlwZV9nZXRfcGxhbmVfdHlwZShp Z3RfcGlwZV90ICpwaXBlLCBpbnQgcGxhbmVfdHlwZSk7CiBib29sIGlndF9waXBlX2dldF9wcm9w ZXJ0eShpZ3RfcGlwZV90ICpwaXBlLCBjb25zdCBjaGFyICpuYW1lLAogCQkJICAgdWludDMyX3Qg KnByb3BfaWQsIHVpbnQ2NF90ICp2YWx1ZSwKZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNv dXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCmluZGV4IDBhZGMyOGEwLi4xOWU4YWUzZiAx MDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcworKysgYi90ZXN0cy9NYWtlZmlsZS5z b3VyY2VzCkBAIC0yMTUsNiArMjE1LDcgQEAgVEVTVFNfcHJvZ3MgPSBcCiAJa21zX3R2X2xvYWRf ZGV0ZWN0IFwKIAlrbXNfdW5pdmVyc2FsX3BsYW5lIFwKIAlrbXNfdmJsYW5rIFwKKwlrbXNfc2Vx dWVuY2UgXAogCW1ldGFfdGVzdCBcCiAJcGVyZiBcCiAJcG1fYmFja2xpZ2h0IFwKZGlmZiAtLWdp dCBhL3Rlc3RzL2ttc19zZXF1ZW5jZS5jIGIvdGVzdHMva21zX3NlcXVlbmNlLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjNiOGFjMzlkCi0tLSAvZGV2L251bGwKKysrIGIv dGVzdHMva21zX3NlcXVlbmNlLmMKQEAgLTAsMCArMSwyODkgQEAKKy8qCisgKiBDb3B5cmlnaHQg wqkgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbgorICogQ29weXJpZ2h0IMKpIDIwMTcgS2VpdGggUGFj a2FyZAorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8g ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv dXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMg b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNv ZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBi ZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQor ICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xV RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ LAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVO VC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVS UyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZ LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFS SVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJF IE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqLwor CisvKiogQGZpbGUga21zX3NlcXVlbmNlLmMKKyAqCisgKiBUaGlzIGlzIGEgdGVzdCBvZiBkcm1D cnRjR2V0U2VxdWVuY2UgYW5kIGRybUNydGNRdWV1ZVNlcXVlbmNlCisgKi8KKworI2luY2x1ZGUg ImlndC5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVk ZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgor I2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHN5cy9wb2xs Lmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2luY2x1 ZGUgPHN5cy93YWl0Lmg+CisKKyNpbmNsdWRlIDxkcm0uaD4KKworI2luY2x1ZGUgImludGVsX2J1 Zm1nci5oIgorCitJR1RfVEVTVF9ERVNDUklQVElPTigiVGVzdCBDcnRjR2V0U2VxdWVuY2UgYW5k IENydGNRdWV1ZVNlcXVlbmNlLiIpOworCit0eXBlZGVmIHN0cnVjdCB7CisJaWd0X2Rpc3BsYXlf dCBkaXNwbGF5OworCXN0cnVjdCBpZ3RfZmIgcHJpbWFyeV9mYjsKKwlpZ3Rfb3V0cHV0X3QgKm91 dHB1dDsKKwl1aW50MzJfdCBjcnRjX2lkOworCWVudW0gcGlwZSBwaXBlOworCXVuc2lnbmVkIGlu dCBmbGFnczsKKyNkZWZpbmUgSURMRSAxCisjZGVmaW5lIEJVU1kgMgorI2RlZmluZSBGT1JLRUQg NAorfSBkYXRhX3Q7CisKK3N0YXRpYyBkb3VibGUgZWxhcHNlZChjb25zdCBzdHJ1Y3QgdGltZXNw ZWMgKnN0YXJ0LAorCQkgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKmVuZCwKKwkJICAgICAg aW50IGxvb3ApCit7CisJcmV0dXJuICgxZTYqKGVuZC0+dHZfc2VjIC0gc3RhcnQtPnR2X3NlYykg KyAoZW5kLT50dl9uc2VjIC0gc3RhcnQtPnR2X25zZWMpLzEwMDApL2xvb3A7Cit9CisKK3N0YXRp YyB2b2lkIHByZXBhcmVfY3J0YyhkYXRhX3QgKmRhdGEsIGludCBmZCwgaWd0X291dHB1dF90ICpv dXRwdXQpCit7CisJZHJtTW9kZU1vZGVJbmZvICptb2RlOworCWlndF9kaXNwbGF5X3QgKmRpc3Bs YXkgPSAmZGF0YS0+ZGlzcGxheTsKKwlpZ3RfcGxhbmVfdCAqcHJpbWFyeTsKKworCS8qIHNlbGVj dCB0aGUgcGlwZSB3ZSB3YW50IHRvIHVzZSAqLworCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0 LCBkYXRhLT5waXBlKTsKKworCS8qIGNyZWF0ZSBhbmQgc2V0IHRoZSBwcmltYXJ5IHBsYW5lIGZi ICovCisJbW9kZSA9IGlndF9vdXRwdXRfZ2V0X21vZGUob3V0cHV0KTsKKwlpZ3RfY3JlYXRlX2Nv bG9yX2ZiKGZkLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksCisJCQkgICAgRFJNX0ZP Uk1BVF9YUkdCODg4OCwKKwkJCSAgICBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAorCQkJICAg IDAuMCwgMC4wLCAwLjAsCisJCQkgICAgJmRhdGEtPnByaW1hcnlfZmIpOworCisJcHJpbWFyeSA9 IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZ KTsKKwlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnksICZkYXRhLT5wcmltYXJ5X2ZiKTsKKworCWRh dGEtPmNydGNfaWQgPSBwcmltYXJ5LT5waXBlLT5jcnRjX2lkOworCisJaWd0X2Rpc3BsYXlfY29t bWl0KGRpc3BsYXkpOworCisJaWd0X3dhaXRfZm9yX3ZibGFuayhmZCwgZGF0YS0+cGlwZSk7Cit9 CisKK3N0YXRpYyB2b2lkIGNsZWFudXBfY3J0YyhkYXRhX3QgKmRhdGEsIGludCBmZCwgaWd0X291 dHB1dF90ICpvdXRwdXQpCit7CisJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNw bGF5OworCWlndF9wbGFuZV90ICpwcmltYXJ5OworCisJaWd0X3JlbW92ZV9mYihmZCwgJmRhdGEt PnByaW1hcnlfZmIpOworCisJcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0 cHV0LCBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKKwlpZ3RfcGxhbmVfc2V0X2ZiKHByaW1hcnks IE5VTEwpOworCisJaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVfQU5ZKTsKKwlpZ3Rf ZGlzcGxheV9jb21taXQoZGlzcGxheSk7Cit9CisKK3N0YXRpYyBpbnQgY3J0Y19nZXRfc2VxdWVu Y2UoaW50IGZkLCBzdHJ1Y3QgZHJtX2NydGNfZ2V0X3NlcXVlbmNlICpjZ3MpCit7CisJaW50IGVy cjsKKworCWVyciA9IDA7CisJaWYgKGlndF9pb2N0bChmZCwgRFJNX0lPQ1RMX0NSVENfR0VUX1NF UVVFTkNFLCBjZ3MpKQorCQllcnIgPSAtZXJybm87CisKKwlyZXR1cm4gZXJyOworfQorCitzdGF0 aWMgaW50IGNydGNfcXVldWVfc2VxdWVuY2UoaW50IGZkLCBzdHJ1Y3QgZHJtX2NydGNfcXVldWVf c2VxdWVuY2UgKmNxcykKK3sKKwlpbnQgZXJyOworCisJZXJyID0gMDsKKwlpZiAoaWd0X2lvY3Rs KGZkLCBEUk1fSU9DVExfQ1JUQ19RVUVVRV9TRVFVRU5DRSwgY3FzKSkKKwkJZXJyID0gLWVycm5v OworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyB2b2lkIHJ1bl90ZXN0KGRhdGFfdCAqZGF0YSwg aW50IGZkLCB2b2lkICgqdGVzdGZ1bmMpKGRhdGFfdCAqLCBpbnQsIGludCkpCit7CisJaW50IG5j aGlsZHJlbiA9CisJCWRhdGEtPmZsYWdzICYgRk9SS0VEID8gc3lzY29uZihfU0NfTlBST0NFU1NP UlNfT05MTikgOiAxOworCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsK KwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKKwllbnVtIHBpcGUgcDsKKwl1bnNpZ25lZCBpbnQgdmFs aWRfdGVzdHMgPSAwOworCisJZm9yX2VhY2hfcGlwZV93aXRoX3ZhbGlkX291dHB1dChkaXNwbGF5 LCBwLCBvdXRwdXQpIHsKKwkJZGF0YS0+cGlwZSA9IHA7CisJCXByZXBhcmVfY3J0YyhkYXRhLCBm ZCwgb3V0cHV0KTsKKworCQlpZ3RfaW5mbygiQmVnaW5uaW5nICVzIG9uIHBpcGUgJXMsIGNvbm5l Y3RvciAlcyAoJWQgdGhyZWFkcylcbiIsCisJCQkgaWd0X3N1YnRlc3RfbmFtZSgpLAorCQkJIGtt c3Rlc3RfcGlwZV9uYW1lKGRhdGEtPnBpcGUpLAorCQkJIGlndF9vdXRwdXRfbmFtZShvdXRwdXQp LAorCQkJIG5jaGlsZHJlbik7CisKKwkJaWYgKGRhdGEtPmZsYWdzICYgQlVTWSkgeworCQkJc3Ry dWN0IGRybV9jcnRjX3F1ZXVlX3NlcXVlbmNlIGNxczsKKworCQkJbWVtc2V0KCZjcXMsIDAsIHNp emVvZihjcXMpKTsKKwkJCWNxcy5jcnRjX2lkID0gZGF0YS0+Y3J0Y19pZDsKKwkJCWNxcy5mbGFn cyA9IERSTV9DUlRDX1NFUVVFTkNFX1JFTEFUSVZFIHwgRFJNX0NSVENfU0VRVUVOQ0VfRklSU1Rf UElYRUxfT1VUOworCQkJY3FzLnNlcXVlbmNlID0gMTIwICsgMTI7CisJCQlpZ3RfYXNzZXJ0X2Vx KGNydGNfcXVldWVfc2VxdWVuY2UoZmQsICZjcXMpLCAwKTsKKwkJfQorCisJCWlndF9mb3JrKGNo aWxkLCBuY2hpbGRyZW4pCisJCQl0ZXN0ZnVuYyhkYXRhLCBmZCwgbmNoaWxkcmVuKTsKKwkJaWd0 X3dhaXRjaGlsZHJlbigpOworCisJCWlmIChkYXRhLT5mbGFncyAmIEJVU1kpIHsKKwkJCXN0cnVj dCBkcm1fZXZlbnRfdmJsYW5rIGJ1ZjsKKwkJCWlndF9hc3NlcnRfZXEocmVhZChmZCwgJmJ1Ziwg c2l6ZW9mKGJ1ZikpLCBzaXplb2YoYnVmKSk7CisJCX0KKworCQlpZ3RfYXNzZXJ0KHBvbGwoJihz dHJ1Y3QgcG9sbGZkKXtmZCwgUE9MTElOfSwgMSwgMCkgPT0gMCk7CisKKwkJaWd0X2luZm8oIlxu JXMgb24gcGlwZSAlcywgY29ubmVjdG9yICVzOiBQQVNTRURcblxuIiwKKwkJCSBpZ3Rfc3VidGVz dF9uYW1lKCksCisJCQkga21zdGVzdF9waXBlX25hbWUoZGF0YS0+cGlwZSksCisJCQkgaWd0X291 dHB1dF9uYW1lKG91dHB1dCkpOworCisJCS8qIGNsZWFudXAgd2hhdCBwcmVwYXJlX2NydGMoKSBo YXMgZG9uZSAqLworCQljbGVhbnVwX2NydGMoZGF0YSwgZmQsIG91dHB1dCk7CisJCXZhbGlkX3Rl c3RzKys7CisJfQorCisJaWd0X3JlcXVpcmVfZih2YWxpZF90ZXN0cywKKwkJICAgICAgIm5vIHZh bGlkIGNydGMvY29ubmVjdG9yIGNvbWJpbmF0aW9ucyBmb3VuZFxuIik7Cit9CisKK3N0YXRpYyB2 b2lkIHNlcXVlbmNlX2dldChkYXRhX3QgKmRhdGEsIGludCBmZCwgaW50IG5jaGlsZHJlbikKK3sK KwlzdHJ1Y3QgZHJtX2NydGNfZ2V0X3NlcXVlbmNlIGNnczsKKwlzdHJ1Y3QgdGltZXNwZWMgc3Rh cnQsIGVuZDsKKwl1bnNpZ25lZCBsb25nIHNxLCBjb3VudCA9IDA7CisKKwltZW1zZXQoJmNncywg MCwgc2l6ZW9mKGNncykpOworCWNncy5jcnRjX2lkID0gZGF0YS0+Y3J0Y19pZDsKKwlpZ3RfYXNz ZXJ0X2VxKGNydGNfZ2V0X3NlcXVlbmNlKGZkLCAmY2dzKSwgMCk7CisKKwlzcSA9IGNncy5zZXF1 ZW5jZTsKKworCWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmc3RhcnQpOworCWRvIHsK KwkJaWd0X2Fzc2VydF9lcShjcnRjX2dldF9zZXF1ZW5jZShmZCwgJmNncyksIDApOworCQljb3Vu dCsrOworCX0gd2hpbGUgKChjZ3Muc2VxdWVuY2UgLSBzcSkgPD0gMTIwKTsKKwljbG9ja19nZXR0 aW1lKENMT0NLX01PTk9UT05JQywgJmVuZCk7CisKKwlpZ3RfaW5mbygiVGltZSB0byBnZXQgY3Vy cmVudCBjb3VudGVyICglcyk6CQklNy4zZsK1c1xuIiwKKwkJIGRhdGEtPmZsYWdzICYgQlVTWSA/ ICJidXN5IiA6ICJpZGxlIiwgZWxhcHNlZCgmc3RhcnQsICZlbmQsIGNvdW50KSk7Cit9CisKK3N0 YXRpYyB2b2lkIHNlcXVlbmNlX3F1ZXVlKGRhdGFfdCAqZGF0YSwgaW50IGZkLCBpbnQgbmNoaWxk cmVuKQoreworCXN0cnVjdCBkcm1fY3J0Y19nZXRfc2VxdWVuY2UgY2dzX3N0YXJ0LCBjZ3NfZW5k OworCXN0cnVjdCBkcm1fY3J0Y19xdWV1ZV9zZXF1ZW5jZSBjcXM7CisJdW5zaWduZWQgbG9uZyB0 YXJnZXQ7CisJaW50IHRvdGFsID0gMTIwIC8gbmNoaWxkcmVuOworCWludCBuOworCWRvdWJsZSBm cmFtZV90aW1lOworCisJbWVtc2V0KCZjZ3Nfc3RhcnQsIDAsIHNpemVvZihjZ3Nfc3RhcnQpKTsK KwljZ3Nfc3RhcnQuY3J0Y19pZCA9IGRhdGEtPmNydGNfaWQ7CisJaWd0X2Fzc2VydF9lcShjcnRj X2dldF9zZXF1ZW5jZShmZCwgJmNnc19zdGFydCksIDApOworCisJdGFyZ2V0ID0gY2dzX3N0YXJ0 LnNlcXVlbmNlICsgdG90YWw7CisJZm9yIChuID0gMDsgbiA8IHRvdGFsOyBuKyspIHsKKwkJbWVt c2V0KCZjcXMsIDAsIHNpemVvZihjcXMpKTsKKwkJY3FzLmNydGNfaWQgPSBkYXRhLT5jcnRjX2lk OworCQljcXMuZmxhZ3MgPSBEUk1fQ1JUQ19TRVFVRU5DRV9GSVJTVF9QSVhFTF9PVVQ7CisJCWNx cy5zZXF1ZW5jZSA9IHRhcmdldDsKKwkJaWd0X2Fzc2VydF9lcShjcnRjX3F1ZXVlX3NlcXVlbmNl KGZkLCAmY3FzKSwgMCk7CisJCWlndF9hc3NlcnRfZXEoY3FzLnNlcXVlbmNlLCB0YXJnZXQpOwor CX0KKworCWZvciAobiA9IDA7IG4gPCB0b3RhbDsgbisrKSB7CisJCXN0cnVjdCBkcm1fZXZlbnRf Y3J0Y19zZXF1ZW5jZSBldjsKKwkJaWd0X2Fzc2VydF9lcShyZWFkKGZkLCAmZXYsIHNpemVvZihl dikpLCBzaXplb2YoZXYpKTsKKwkJaWd0X2Fzc2VydF9lcShldi5zZXF1ZW5jZSwgdGFyZ2V0KTsK Kwl9CisJbWVtc2V0KCZjZ3NfZW5kLCAwLCBzaXplb2YoY2dzX2VuZCkpOworCWNnc19lbmQuY3J0 Y19pZCA9IGRhdGEtPmNydGNfaWQ7CisJaWd0X2Fzc2VydF9lcShjcnRjX2dldF9zZXF1ZW5jZShm ZCwgJmNnc19lbmQpLCAwKTsKKwlpZ3RfYXNzZXJ0X2VxKGNnc19lbmQuc2VxdWVuY2UsIHRhcmdl dCk7CisKKwlmcmFtZV90aW1lID0gKGRvdWJsZSkgKGNnc19lbmQuc2VxdWVuY2VfbnMgLSBjZ3Nf c3RhcnQuc2VxdWVuY2VfbnMpIC8gKDFlOSAqIHRvdGFsKTsKKwlpZ3RfaW5mbygiVGltZSBwZXIg ZnJhbWUgZnJvbSBxdWV1ZSB0byBldmVudCAoJXMpOiAgICAgICU3LjNmbXMoJTcuM2ZIeilcbiIs CisJCSBkYXRhLT5mbGFncyAmIEJVU1kgPyAiYnVzeSIgOiAiaWRsZSIsCisJCSBmcmFtZV90aW1l ICogMTAwMC4wLCAxLjAvZnJhbWVfdGltZSk7Cit9CisKK2lndF9tYWluCit7CisJaW50IGZkOwor CWRhdGFfdCBkYXRhOworCWNvbnN0IHN0cnVjdCB7CisJCWNvbnN0IGNoYXIgKm5hbWU7CisJCXZv aWQgKCpmdW5jKShkYXRhX3QgKiwgaW50LCBpbnQpOworCQl1bnNpZ25lZCBpbnQgdmFsaWQ7CisJ fSBmdW5jc1tdID0geworCQl7ICJnZXQiLCBzZXF1ZW5jZV9nZXQsIElETEUgfCBGT1JLRUQgfCBC VVNZIH0sCisJCXsgInF1ZXVlIiwgc2VxdWVuY2VfcXVldWUsIElETEUgfCBCVVNZIH0sCisJCXsg fQorCX0sICpmOworCWNvbnN0IHN0cnVjdCB7CisJCWNvbnN0IGNoYXIgKm5hbWU7CisJCXVuc2ln bmVkIGludCBmbGFnczsKKwl9IG1vZGVzW10gPSB7CisJCXsgImlkbGUiLCBJRExFIH0sCisJCXsg ImZvcmtlZCIsIElETEUgfCBGT1JLRUQgfSwKKwkJeyAiYnVzeSIsIEJVU1kgfSwKKwkJeyAiZm9y a2VkLWJ1c3kiLCBCVVNZIHwgRk9SS0VEIH0sCisJCXsgfQorCX0sICptOworCisJaWd0X3NraXBf b25fc2ltdWxhdGlvbigpOworCisJaWd0X2ZpeHR1cmUgeworCQlmZCA9IGRybV9vcGVuX2RyaXZl cihEUklWRVJfQU5ZKTsKKwkJa21zdGVzdF9zZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOworCQlpZ3Rf ZGlzcGxheV9pbml0KCZkYXRhLmRpc3BsYXksIGZkKTsKKwl9CisKKwlmb3IgKGYgPSBmdW5jczsg Zi0+bmFtZTsgZisrKSB7CisJCWZvciAobSA9IG1vZGVzOyBtLT5uYW1lOyBtKyspIHsKKwkJCWlm IChtLT5mbGFncyAmIH5mLT52YWxpZCkKKwkJCQljb250aW51ZTsKKworCQkJaWd0X3N1YnRlc3Rf ZigiJXMtJXMiLCBmLT5uYW1lLCBtLT5uYW1lKSB7CisJCQkJZGF0YS5mbGFncyA9IG0tPmZsYWdz OworCQkJCXJ1bl90ZXN0KCZkYXRhLCBmZCwgZi0+ZnVuYyk7CisJCQl9CisJCX0KKwl9Cit9CmRp ZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCmluZGV4IDUz ZDAyZDEzLi42ZGI5Mjc4OCAxMDA2NDQKLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVz dHMvbWVzb24uYnVpbGQKQEAgLTE5NSw2ICsxOTUsNyBAQCB0ZXN0X3Byb2dzID0gWwogCSdrbXNf dHZfbG9hZF9kZXRlY3QnLAogCSdrbXNfdW5pdmVyc2FsX3BsYW5lJywKIAkna21zX3ZibGFuaycs CisJJ2ttc19zZXF1ZW5jZScsCiAJJ21ldGFfdGVzdCcsCiAJJ3BlcmYnLAogCSdwbV9iYWNrbGln aHQnLAotLSAKMi4xNC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK