From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM05-BY2-obe.outbound.protection.outlook.com (mail-eopbgr710067.outbound.protection.outlook.com [40.107.71.67]) by gabe.freedesktop.org (Postfix) with ESMTPS id 68AB86E415 for ; Wed, 9 Jan 2019 19:49:45 +0000 (UTC) From: Nicholas Kazlauskas Date: Wed, 9 Jan 2019 14:49:32 -0500 Message-ID: <20190109194932.16679-1-nicholas.kazlauskas@amd.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t] tests: Add variable refresh rate tests 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: Manasi Navare List-ID: VGhlcmUgYXJlIDMgdGVzdHMgZm9yIGJhc2ljIHZhcmlhYmxlIHJlZnJlc2ggcmF0ZSBmdW5jdGlv bmFsaXR5LgoKVGhlIHRlc3RzIG1lYXN1cmUgZmxpcHBpbmcgYXQgdGhlIG1pZHBvaW50IGJldHdl ZW4gdGhlIGN1cnJlbnQgbW9kZSdzCnJlZnJlc2ggcmF0ZSBhbmQgdGhlIG1pbmltdW0gc3VwcG9y dGVkIHZhcmlhYmxlIHJlZnJlc2ggcmF0ZS4KCkl0IHRlc3RzIHRoYXQgVlJSIGlzIGVuYWJsZWQg YW5kIHRoYXQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBmbGlwCnRpbWVzdGFtcHMgY29udmVyZ2Vz IHRvIHRoZSByZXF1ZXN0ZWQgcmF0ZS4gSXQgYWxzbyB0ZXN0cyB0aGlzIHVuZGVyCmJvdGggUzMg YW5kIERQTVMuCgpQb3RlbnRpYWwgaWRlYXMgZm9yIGZ1dHVyZSB0ZXN0czoKLSBUZXN0IGJlaGF2 aW9yIGluc2lkZSBWUlIgcmFuZ2Ugd2l0aCBhIHN0ZXBwaW5nIHRlc3QKLSBUZXN0IGJlaGF2aW9y IG91dHNpZGUgb2YgVlJSIHJhbmdlCi0gTXVsdGktbW9uaXRvciAobGltaXRlZCBieSBubyBhc3lu YyBwYWdlZmxpcHMgaW4gRFJNIGF0b21pYyBBUEkpCgpDYzogSGFycnkgV2VudGxhbmQgPGhhcnJ5 LndlbnRsYW5kQGFtZC5jb20+CkNjOiBMZW8gTGkgPHN1bnBlbmcubGlAYW1kLmNvbT4KQ2M6IE1h bmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IE5p Y2hvbGFzIEthemxhdXNrYXMgPG5pY2hvbGFzLmthemxhdXNrYXNAYW1kLmNvbT4KLS0tCiBsaWIv aWd0X2ttcy5jICAgICAgICAgIHwgICAzICsKIGxpYi9pZ3Rfa21zLmggICAgICAgICAgfCAgIDIg KwogdGVzdHMvTWFrZWZpbGUuc291cmNlcyB8ICAgMSArCiB0ZXN0cy9rbXNfdnJyLmMgICAgICAg IHwgNDE3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy9t ZXNvbi5idWlsZCAgICAgIHwgICAxICsKIDUgZmlsZXMgY2hhbmdlZCwgNDI0IGluc2VydGlvbnMo KykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9rbXNfdnJyLmMKCmRpZmYgLS1naXQgYS9saWIv aWd0X2ttcy5jIGIvbGliL2lndF9rbXMuYwppbmRleCA2ODRhNTk5Yy4uMmVkZjE5ZWMgMTAwNjQ0 Ci0tLSBhL2xpYi9pZ3Rfa21zLmMKKysrIGIvbGliL2lndF9rbXMuYwpAQCAtMTg5LDYgKzE4OSw3 IEBAIGNvbnN0IGNoYXIgKiBjb25zdCBpZ3RfY3J0Y19wcm9wX25hbWVzW0lHVF9OVU1fQ1JUQ19Q Uk9QU10gPSB7CiAJW0lHVF9DUlRDX01PREVfSURdID0gIk1PREVfSUQiLAogCVtJR1RfQ1JUQ19B Q1RJVkVdID0gIkFDVElWRSIsCiAJW0lHVF9DUlRDX09VVF9GRU5DRV9QVFJdID0gIk9VVF9GRU5D RV9QVFIiLAorCVtJR1RfQ1JUQ19WUlJfRU5BQkxFRF0gPSAiVlJSX0VOQUJMRUQiLAogfTsKIAog Y29uc3QgY2hhciAqIGNvbnN0IGlndF9jb25uZWN0b3JfcHJvcF9uYW1lc1tJR1RfTlVNX0NPTk5F Q1RPUl9QUk9QU10gPSB7CkBAIC0xOTcsNiArMTk4LDcgQEAgY29uc3QgY2hhciAqIGNvbnN0IGln dF9jb25uZWN0b3JfcHJvcF9uYW1lc1tJR1RfTlVNX0NPTk5FQ1RPUl9QUk9QU10gPSB7CiAJW0lH VF9DT05ORUNUT1JfRFBNU10gPSAiRFBNUyIsCiAJW0lHVF9DT05ORUNUT1JfQlJPQURDQVNUX1JH Ql0gPSAiQnJvYWRjYXN0IFJHQiIsCiAJW0lHVF9DT05ORUNUT1JfQ09OVEVOVF9QUk9URUNUSU9O XSA9ICJDb250ZW50IFByb3RlY3Rpb24iLAorCVtJR1RfQ09OTkVDVE9SX1ZSUl9DQVBBQkxFXSA9 ICJ2cnJfY2FwYWJsZSIsCiB9OwogCiAvKgpAQCAtMTc4Niw2ICsxNzg4LDcgQEAgc3RhdGljIHZv aWQgaWd0X3BpcGVfcmVzZXQoaWd0X3BpcGVfdCAqcGlwZSkKIHsKIAlpZ3RfcGlwZV9vYmpfc2V0 X3Byb3BfdmFsdWUocGlwZSwgSUdUX0NSVENfTU9ERV9JRCwgMCk7CiAJaWd0X3BpcGVfb2JqX3Nl dF9wcm9wX3ZhbHVlKHBpcGUsIElHVF9DUlRDX0FDVElWRSwgMCk7CisJaWd0X3BpcGVfb2JqX3Nl dF9wcm9wX3ZhbHVlKHBpcGUsIElHVF9DUlRDX1ZSUl9FTkFCTEVELCAwKTsKIAlpZ3RfcGlwZV9v YmpfY2xlYXJfcHJvcF9jaGFuZ2VkKHBpcGUsIElHVF9DUlRDX09VVF9GRU5DRV9QVFIpOwogCiAJ cGlwZS0+b3V0X2ZlbmNlX2ZkID0gLTE7CmRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5oIGIvbGli L2lndF9rbXMuaAppbmRleCA0YTdjM2M5Ny4uNjc5ZDRlODQgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rf a21zLmgKKysrIGIvbGliL2lndF9rbXMuaApAQCAtMTA0LDYgKzEwNCw3IEBAIGVudW0gaWd0X2F0 b21pY19jcnRjX3Byb3BlcnRpZXMgewogICAgICAgIElHVF9DUlRDX01PREVfSUQsCiAgICAgICAg SUdUX0NSVENfQUNUSVZFLAogICAgICAgIElHVF9DUlRDX09VVF9GRU5DRV9QVFIsCisgICAgICAg SUdUX0NSVENfVlJSX0VOQUJMRUQsCiAgICAgICAgSUdUX05VTV9DUlRDX1BST1BTCiB9OwogCkBA IC0xMjEsNiArMTIyLDcgQEAgZW51bSBpZ3RfYXRvbWljX2Nvbm5lY3Rvcl9wcm9wZXJ0aWVzIHsK ICAgICAgICBJR1RfQ09OTkVDVE9SX0RQTVMsCiAgICAgICAgSUdUX0NPTk5FQ1RPUl9CUk9BRENB U1RfUkdCLAogICAgICAgIElHVF9DT05ORUNUT1JfQ09OVEVOVF9QUk9URUNUSU9OLAorICAgICAg IElHVF9DT05ORUNUT1JfVlJSX0NBUEFCTEUsCiAgICAgICAgSUdUX05VTV9DT05ORUNUT1JfUFJP UFMKIH07CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtl ZmlsZS5zb3VyY2VzCmluZGV4IGJhYWM3YWUwLi4yMzliZWQ1OSAxMDA2NDQKLS0tIGEvdGVzdHMv TWFrZWZpbGUuc291cmNlcworKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCkBAIC04OCw2ICs4 OCw3IEBAIFRFU1RTX3Byb2dzID0gXAogCWttc190dl9sb2FkX2RldGVjdCBcCiAJa21zX3VuaXZl cnNhbF9wbGFuZSBcCiAJa21zX3ZibGFuayBcCisJa21zX3ZyciBcCiAJa21zX3NlcXVlbmNlIFwK IAltZXRhX3Rlc3QgXAogCXBlcmYgXApkaWZmIC0tZ2l0IGEvdGVzdHMva21zX3Zyci5jIGIvdGVz dHMva21zX3Zyci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5jNmI4OGU1 MwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2ttc192cnIuYwpAQCAtMCwwICsxLDQxNyBAQAor LyoKKyAqIENvcHlyaWdodCAyMDE4IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KKyAqCisg KiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBl cnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVk IGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhl IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp b24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBk aXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgor ICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90 aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg IkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVS KFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICog T1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP UiBPVEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBT T0ZUV0FSRS4KKyAqLworCisjaW5jbHVkZSAiaWd0LmgiCisjaW5jbHVkZSAic3dfc3luYy5oIgor I2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisKKyNkZWZpbmUgTlNFQ1Nf UEVSX1NFQyAoMTAwMDAwMDAwMHVsbCkKKworLyoKKyAqIEVhY2ggdGVzdCBtZWFzdXJlbWVudCBz dGVwIHJ1bnMgZm9yIH41IHNlY29uZHMuCisgKiBUaGlzIGdpdmVzIGEgZGVjZW50IHNhbXBsZSBz aXplICsgZW5vdWdoIHRpbWUgZm9yIGFueSBhZGFwdGF0aW9uIHRvIG9jY3VyIGlmIG5lY2Vzc2Fy eS4KKyAqLworI2RlZmluZSBURVNUX0RVUkFUSU9OX05TICg1MDAwMDAwMDAwdWxsKQorCitlbnVt IHsKKwlURVNUX05PTkUgPSAwLAorCVRFU1RfRFBNUyA9IDEgPDwgMCwKKwlURVNUX1NVU1BFTkQg PSAxIDw8IDEsCit9OworCit0eXBlZGVmIHN0cnVjdCByYW5nZSB7CisJdW5zaWduZWQgaW50IG1p bjsKKwl1bnNpZ25lZCBpbnQgbWF4OworfSByYW5nZV90OworCit0eXBlZGVmIHN0cnVjdCBkYXRh IHsKKwlpZ3RfZGlzcGxheV90IGRpc3BsYXk7CisJaW50IGRybV9mZDsKKwlpZ3RfZmJfdCBmYjA7 CisJaWd0X2ZiX3QgZmIxOworfSBkYXRhX3Q7CisKK3R5cGVkZWYgdm9pZCAoKnRlc3RfdCkoZGF0 YV90KiwgZW51bSBwaXBlLCBpZ3Rfb3V0cHV0X3QqLCB1aW50MzJfdCk7CisKKy8qIENvbnZlcnRz IGEgdGltZXNwZWMgc3RydWN0dXJlIHRvIG5hbm9zZWNvbmRzLiAqLworc3RhdGljIHVpbnQ2NF90 IHRpbWVzcGVjX3RvX25zKHN0cnVjdCB0aW1lc3BlYyAqdHMpCit7CisJcmV0dXJuIHRzLT50dl9z ZWMgKiBOU0VDU19QRVJfU0VDICsgdHMtPnR2X25zZWM7Cit9CisKKy8qCisgKiBHZXRzIGEgdmJs YW5rIGV2ZW50IGZyb20gRFJNIGFuZCByZXR1cm5zIGl0cyB0aW1lc3RhbXAgaW4gbmFub3NlY29u ZHMuCisgKiBUaGlzIGJsb2NrcyB1bnRpbCB0aGUgZXZlbnQgaXMgcmVjZWl2ZWQuCisgKi8KK3N0 YXRpYyB1aW50NjRfdCBnZXRfdmJsYW5rX2V2ZW50X25zKGRhdGFfdCAqZGF0YSkKK3sKKwlzdHJ1 Y3QgZHJtX2V2ZW50X3ZibGFuayBldjsKKworCWlndF9zZXRfdGltZW91dCgxLCAiV2FpdGluZyBm b3IgdmJsYW5rIGV2ZW50XG4iKTsKKwlpZ3RfYXNzZXJ0X2VxKHJlYWQoZGF0YS0+ZHJtX2ZkLCAm ZXYsIHNpemVvZihldikpLCBzaXplb2YoZXYpKTsKKwlpZ3RfcmVzZXRfdGltZW91dCgpOworCisJ cmV0dXJuIGV2LnR2X3NlYyAqIE5TRUNTX1BFUl9TRUMgKyBldi50dl91c2VjICogMTAwMHVsbDsK K30KKworLyoKKyAqIFJldHVybnMgdGhlIGN1cnJlbnQgQ0xPQ0tfTU9OT1RPTklDIHRpbWUgaW4g bmFub3NlY29uZHMuCisgKiBUaGUgcmVndWxhciBJR1QgaGVscGVycyBjYW4ndCBiZSB1c2VkIHNp bmNlIHRoZXkgZGVmYXVsdCB0bworICogQ0xPQ0tfTU9OT1RPTklDX1JBVyAtIHdoaWNoIGlzbid0 IHdoYXQgdGhlIGtlcm5lbCB1c2VzIGZvciBpdHMgdGltZXN0YW1wcy4KKyAqLworc3RhdGljIHVp bnQ2NF90IGdldF90aW1lX25zKHZvaWQpCit7CisJc3RydWN0IHRpbWVzcGVjIHRzOworCW1lbXNl dCgmdHMsIDAsIHNpemVvZih0cykpOworCWVycm5vID0gMDsKKworCWlmICghY2xvY2tfZ2V0dGlt ZShDTE9DS19NT05PVE9OSUMsICZ0cykpCisJCXJldHVybiB0aW1lc3BlY190b19ucygmdHMpOwor CisJaWd0X3dhcm4oIkNvdWxkIG5vdCByZWFkIG1vbm90b25pYyB0aW1lOiAlc1xuIiwgc3RyZXJy b3IoZXJybm8pKTsKKwlpZ3RfZmFpbCgtZXJybm8pOworCisJcmV0dXJuIDA7Cit9CisKKy8qIFJl dHVybnMgdGhlIHJhdGUgZHVyYXRpb24gaW4gbmFub3NlY29uZHMgZm9yIHRoZSBnaXZlbiByZWZy ZXNoIHJhdGUuICovCitzdGF0aWMgdWludDY0X3QgcmF0ZV9mcm9tX3JlZnJlc2godWludDY0X3Qg cmVmcmVzaCkKK3sKKwlyZXR1cm4gTlNFQ1NfUEVSX1NFQyAvIHJlZnJlc2g7Cit9CisKKy8qIFJl dHVybnMgdGhlIG1pbiBhbmQgbWF4IHZyciByYW5nZSBmcm9tIHRoZSBjb25uZWN0b3IgZGVidWdm cy4gKi8KK3N0YXRpYyByYW5nZV90IGdldF92cnJfcmFuZ2UoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0 cHV0X3QgKm91dHB1dCkKK3sKKwljaGFyIGJ1ZlsyNTZdOworCWNoYXIgKnN0YXJ0X2xvYzsKKwlp bnQgZmQsIHJlczsKKwlyYW5nZV90IHJhbmdlOworCisJZmQgPSBpZ3RfZGVidWdmc19jb25uZWN0 b3JfZGlyKGRhdGEtPmRybV9mZCwgb3V0cHV0LT5uYW1lLCBPX1JET05MWSk7CisJaWd0X2Fzc2Vy dChmZCA+PSAwKTsKKworCXJlcyA9IGlndF9kZWJ1Z2ZzX3NpbXBsZV9yZWFkKGZkLCAidnJyX3Jh bmdlIiwgYnVmLCBzaXplb2YoYnVmKSk7CisJaWd0X3JlcXVpcmUocmVzID4gMCk7CisKKwljbG9z ZShmZCk7CisKKwlpZ3RfYXNzZXJ0KHN0YXJ0X2xvYyA9IHN0cnN0cihidWYsICJNaW46ICIpKTsK KwlpZ3RfYXNzZXJ0X2VxKHNzY2FuZihzdGFydF9sb2MsICJNaW46ICV1IiwgJnJhbmdlLm1pbiks IDEpOworCisJaWd0X2Fzc2VydChzdGFydF9sb2MgPSBzdHJzdHIoYnVmLCAiTWF4OiAiKSk7CisJ aWd0X2Fzc2VydF9lcShzc2NhbmYoc3RhcnRfbG9jLCAiTWF4OiAldSIsICZyYW5nZS5tYXgpLCAx KTsKKworCXJldHVybiByYW5nZTsKK30KKworLyogUmV0dXJucyBhIHN1aXRhYmxlIHZyciB0ZXN0 IGZyZXF1ZW5jeS4gKi8KK3N0YXRpYyB1aW50MzJfdCBnZXRfdGVzdF9yYXRlX25zKGRhdGFfdCAq ZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQpCit7CisJZHJtTW9kZU1vZGVJbmZvICptb2RlID0g aWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpOworCXJhbmdlX3QgcmFuZ2U7CisJdWludDMyX3Qg dnRlc3Q7CisKKwkvKgorCSAqIFRoZSBmcmVxdWVuY3kgd2l0aCB0aGUgZmFzdGVzdCBjb252ZXJn ZW5jZSBzcGVlZCBzaG91bGQgYmUKKwkgKiB0aGUgbWlkcG9pbnQgYmV0d2VlbiB0aGUgY3VycmVu dCBtb2RlIHZmcmVxIGFuZCB0aGUgbWluCisJICogc3VwcG9ydGVkIHZmcmVxLgorCSAqLworCXJh bmdlID0gZ2V0X3Zycl9yYW5nZShkYXRhLCBvdXRwdXQpOworCWlndF9yZXF1aXJlKG1vZGUtPnZy ZWZyZXNoID4gcmFuZ2UubWluKTsKKworCXZ0ZXN0ID0gKG1vZGUtPnZyZWZyZXNoIC0gcmFuZ2Uu bWluKSAvIDIgKyByYW5nZS5taW47CisJaWd0X3JlcXVpcmUodnRlc3QgPCBtb2RlLT52cmVmcmVz aCk7CisKKwlyZXR1cm4gcmF0ZV9mcm9tX3JlZnJlc2godnRlc3QpOworfQorCisvKiBSZXR1cm5z IHRydWUgaWYgYW4gb3V0cHV0IHN1cHBvcnRzIFZSUi4gKi8KK3N0YXRpYyBib29sIGhhc192cnIo aWd0X291dHB1dF90ICpvdXRwdXQpCit7CisJcmV0dXJuIGlndF9vdXRwdXRfaGFzX3Byb3Aob3V0 cHV0LCBJR1RfQ09OTkVDVE9SX1ZSUl9DQVBBQkxFKSAmJgorCSAgICAgICBpZ3Rfb3V0cHV0X2dl dF9wcm9wKG91dHB1dCwgSUdUX0NPTk5FQ1RPUl9WUlJfQ0FQQUJMRSk7Cit9CisKKy8qIFRvZ2ds ZXMgdmFyaWFibGUgcmVmcmVzaCByYXRlIG9uIHRoZSBwaXBlLiAqLworc3RhdGljIHZvaWQgc2V0 X3Zycl9vbl9waXBlKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUsIGJvb2wgZW5hYmxlZCkK K3sKKwlpZ3RfcGlwZV9zZXRfcHJvcF92YWx1ZSgmZGF0YS0+ZGlzcGxheSwgcGlwZSwgSUdUX0NS VENfVlJSX0VOQUJMRUQsCisJCQkJZW5hYmxlZCk7CisJaWd0X2Rpc3BsYXlfY29tbWl0X2F0b21p YygmZGF0YS0+ZGlzcGxheSwgMCwgTlVMTCk7Cit9CisKKy8qIFByZXBhcmUgdGhlIGRpc3BsYXkg Zm9yIHRlc3Rpbmcgb24gdGhlIGdpdmVuIHBpcGUuICovCitzdGF0aWMgdm9pZCBwcmVwYXJlX3Rl c3QoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bSBwaXBlIHBpcGUpCit7 CisJZHJtTW9kZU1vZGVJbmZvIG1vZGUgPSAqaWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpOwor CWlndF9wbGFuZV90ICpwcmltYXJ5OworCWNhaXJvX3QgKmNyOworCisJLyogUmVzZXQgb3V0cHV0 ICovCisJaWd0X2Rpc3BsYXlfcmVzZXQoJmRhdGEtPmRpc3BsYXkpOworCWlndF9vdXRwdXRfc2V0 X3BpcGUob3V0cHV0LCBwaXBlKTsKKworCS8qIFByZXBhcmUgcmVzb3VyY2VzICovCisJaWd0X3Jl bW92ZV9mYihkYXRhLT5kcm1fZmQsICZkYXRhLT5mYjEpOworCWlndF9yZW1vdmVfZmIoZGF0YS0+ ZHJtX2ZkLCAmZGF0YS0+ZmIwKTsKKworCWlndF9jcmVhdGVfY29sb3JfZmIoZGF0YS0+ZHJtX2Zk LCBtb2RlLmhkaXNwbGF5LCBtb2RlLnZkaXNwbGF5LAorCQkJICAgIERSTV9GT1JNQVRfWFJHQjg4 ODgsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCisJCQkgICAgMC41MCwgMC41MCwgMC41MCwg JmRhdGEtPmZiMCk7CisKKwlpZ3RfY3JlYXRlX2NvbG9yX2ZiKGRhdGEtPmRybV9mZCwgbW9kZS5o ZGlzcGxheSwgbW9kZS52ZGlzcGxheSwKKwkJCSAgICBEUk1fRk9STUFUX1hSR0I4ODg4LCBMT0NB TF9EUk1fRk9STUFUX01PRF9OT05FLAorCQkJICAgIDAuNTAsIDAuNTAsIDAuNTAsICZkYXRhLT5m YjEpOworCisJY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChkYXRhLT5kcm1fZmQsICZkYXRhLT5mYjAp OworCisJaWd0X3BhaW50X2NvbG9yKGNyLCAwLCAwLCBtb2RlLmhkaXNwbGF5IC8gMTAsIG1vZGUu dmRpc3BsYXkgLyAxMCwKKwkJCTEuMDAsIDAuMDAsIDAuMDApOworCisJLyogVGFrZSBjYXJlIG9m IGFueSByZXF1aXJlZCBtb2Rlc2V0dGluZyBiZWZvcmUgdGhlIHRlc3QgYmVnaW5zLiAqLworCXBy aW1hcnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKG91dHB1dCwgRFJNX1BMQU5FX1RZUEVf UFJJTUFSWSk7CisJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmZGF0YS0+ZmIwKTsKKworCWln dF9kaXNwbGF5X2NvbW1pdF9hdG9taWMoJmRhdGEtPmRpc3BsYXksCisJCQkJICBEUk1fTU9ERV9B VE9NSUNfQUxMT1dfTU9ERVNFVCwgTlVMTCk7Cit9CisKKy8qIFdhaXRzIGZvciB0aGUgdmJsYW5r IGludGVydmFsLiBSZXR1cm5zIHRoZSB2YmxhbmsgdGltZXN0YW1wIGluIG5zLiAqLworc3RhdGlj IHVpbnQ2NF90Cit3YWl0X2Zvcl92YmxhbmsoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSkK K3sKKwlkcm1WQmxhbmsgdmJsID0geyAwIH07CisKKwl2YmwucmVxdWVzdC50eXBlID0ga21zdGVz dF9nZXRfdmJsX2ZsYWcocGlwZSk7CisJdmJsLnJlcXVlc3QudHlwZSB8PSBEUk1fVkJMQU5LX1JF TEFUSVZFIHwgRFJNX1ZCTEFOS19FVkVOVDsKKwl2YmwucmVxdWVzdC5zZXF1ZW5jZSA9IDE7CisJ ZHJtV2FpdFZCbGFuayhkYXRhLT5kcm1fZmQsICZ2YmwpOworCisJcmV0dXJuIGdldF92Ymxhbmtf ZXZlbnRfbnMoZGF0YSk7Cit9CisKKy8qIFBlcmZvcm1zIGFuIGFzeW5jaHJvbm91cyBub24tYmxv Y2tpbmcgcGFnZS1mbGlwIG9uIGEgcGlwZS4gKi8KK3N0YXRpYyBpbnQKK2RvX2ZsaXAoZGF0YV90 ICpkYXRhLCBlbnVtIHBpcGUgcGlwZV9pZCwgaWd0X2ZiX3QgKmZiKQoreworCWlndF9waXBlX3Qg KnBpcGUgPSAmZGF0YS0+ZGlzcGxheS5waXBlc1twaXBlX2lkXTsKKwlpbnQgcmV0OworCisJaWd0 X3NldF90aW1lb3V0KDEsICJTY2hlZHVsaW5nIHBhZ2UgZmxpcFxuIik7CisKKwkvKgorCSAqIE9u bHkgdGhlIGxlZ2FjeSBmbGlwIGlvY3RsIHN1cHBvcnRzIGFzeW5jIGZsaXBzLgorCSAqIEl0J3Mg YWxzbyBub24tYmxvY2tpbmcsIGJ1dCByZXR1cm5zIC1FQlVTWSBpZiBmbGlwcGluZyB0b28gZmFz dC4KKwkgKiAyeCBtb25pdG9yIHRlc3RzIHdpbGwgbmVlZCBhc3luYyBmbGlwcyBpbiB0aGUgYXRv bWljIEFQSS4KKwkgKi8KKwlkbyB7CisJCXJldCA9IGRybU1vZGVQYWdlRmxpcChkYXRhLT5kcm1f ZmQsIHBpcGUtPmNydGNfaWQsCisJCQkJICAgICAgZmItPmZiX2lkLAorCQkJCSAgICAgIERSTV9N T0RFX1BBR0VfRkxJUF9FVkVOVCB8CisJCQkJICAgICAgRFJNX01PREVfUEFHRV9GTElQX0FTWU5D LAorCQkJCSAgICAgIGRhdGEpOworCX0gd2hpbGUgKHJldCA9PSAtRUJVU1kpOworCisJaWd0X2Fz c2VydF9lcShyZXQsIDApOworCWlndF9yZXNldF90aW1lb3V0KCk7CisKKwlyZXR1cm4gMDsKK30K KworLyoKKyAqIEZsaXBzIGF0IHRoZSBnaXZlbiByYXRlIGFuZCBtZWFzdXJlcyBhZ2FpbnN0IHRo ZSBleHBlY3RlZCB2YWx1ZS4KKyAqIFJldHVybnMgdGhlIHBhc3MgcmF0ZSBhcyBhIHBlcmNlbnRh Z2UgZnJvbSAwIC0gMTAwLgorICoKKyAqIFRoZSBWUlIgQVBJIGlzIHF1aXRlIGZsZXhpYmxlIGlu IHRlcm1zIG9mIGRlZmluaXRpb24gLSB0aGUgZHJpdmVyCisgKiBjYW4gYXJiaXRyYXJpbHkgcmVz dHJpY3QgdGhlIGJvdW5kcyBmdXJ0aGVyIHRoYW4gdGhlIGFic29sdXRlCisgKiBtaW4gYW5kIG1h eCByYW5nZS4gQnV0IFZSUiBpcyByZWFsbHkgYWJvdXQgZXh0ZW5kaW5nIHRoZSBmbGlwCisgKiB0 byBwcmV2ZW50IHN0dXR0ZXJpbmcgb3IgdG8gbWF0Y2ggYSBzb3VyY2UgY29udGVudCByYXRlLgor ICoKKyAqIFRoZSBvbmx5IHdheSB0byAicHJlc2VudCIgYXQgYSBmaXhlZCByYXRlIGxpa2UgdXNl cnNwYWNlIGluIGEgdmVuZG9yCisgKiBuZXV0cmFsIG1hbm5lciBpcyB0byBkbyBpdCB3aXRoIGFz eW5jIGZsaXBzLiBUaGlzIGF2b2lkcyB0aGUgbmVlZAorICogdG8gd2FpdCBmb3IgbmV4dCB2Ymxh bmsgYW5kIGl0IHNob3VsZCBldmVudHVhbGx5IGNvbnZlcmdlIGF0IHRoZQorICogZGVzaXJlZCBy YXRlLgorICovCitzdGF0aWMgdWludDMyX3QKK2ZsaXBfYW5kX21lYXN1cmUoZGF0YV90ICpkYXRh LCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bSBwaXBlIHBpcGUsCisJCSB1aW50NjRfdCByYXRl X25zLCB1aW50NjRfdCBkdXJhdGlvbl9ucykKK3sKKwl1aW50NjRfdCBzdGFydF9ucywgbGFzdF92 YmxhbmtfbnM7CisJdWludDMyX3QgdG90YWxfZmxpcCA9IDAsIHRvdGFsX3Bhc3MgPSAwOworCWJv b2wgZnJvbnQgPSBmYWxzZTsKKworCS8qIEFsaWduIHdpdGggdGhlIHZibGFuayByZWdpb24gdG8g c3BlZWQgdXAgY29udmVyZ2VuY2UuICovCisJbGFzdF92YmxhbmtfbnMgPSB3YWl0X2Zvcl92Ymxh bmsoZGF0YSwgcGlwZSk7CisJc3RhcnRfbnMgPSBnZXRfdGltZV9ucygpOworCisJZm9yICg7Oykg eworCQl1aW50NjRfdCBub3dfbnMsIHZibGFua19ucywgd2FpdF9ucywgdGFyZ2V0X25zOworCQlp bnQ2NF90IGRpZmZfbnM7CisKKwkJZnJvbnQgPSAhZnJvbnQ7CisJCWRvX2ZsaXAoZGF0YSwgcGlw ZSwgZnJvbnQgPyAmZGF0YS0+ZmIxIDogJmRhdGEtPmZiMCk7CisKKwkJdmJsYW5rX25zID0gZ2V0 X3ZibGFua19ldmVudF9ucyhkYXRhKTsKKwkJZGlmZl9ucyA9IHJhdGVfbnMgLSAodmJsYW5rX25z IC0gbGFzdF92YmxhbmtfbnMpOworCQlsYXN0X3ZibGFua19ucyA9IHZibGFua19uczsKKworCQl0 b3RhbF9mbGlwICs9IDE7CisKKwkJLyoKKwkJICogQ2hlY2sgaWYgdGhlIGRpZmZlcmVuY2UgYmV0 d2VlbiB0aGUgdHdvIGZsaXAgdGltZXN0YW1wcworCQkgKiB3YXMgd2l0aGluIHRoZSByZXF1aXJl ZCB0aHJlc2hvbGQgZnJvbSB0aGUgZXhwZWN0ZWQgcmF0ZS4KKwkJICoKKwkJICogQSB+NTB1cyB0 aHJlc2hvbGQgaXMgYXJiaXRyYXJ5LCBidXQgaXQncyByb3VnaGx5IHRoZQorCQkgKiBkaWZmZXJl bmNlIGJldHdlZW4gMTQ0SHogYW5kIDE0M0h6IHdoaWNoIHNob3VsZCBnaXZlIHRoaXMKKwkJICog ZW5vdWdoIGFjY3VyYWN5IGZvciBtb3N0IHVzZSBjYXNlcy4KKwkJICovCisJCWlmIChsbGFicyhk aWZmX25zKSA8IDUwMDAwbGwpCisJCQl0b3RhbF9wYXNzICs9IDE7CisKKwkJbm93X25zID0gZ2V0 X3RpbWVfbnMoKTsKKwkJaWYgKG5vd19ucyAtIHN0YXJ0X25zID4gZHVyYXRpb25fbnMpCisJCQli cmVhazsKKworCQkvKgorCQkgKiBCdXJuIENQVSB1bnRpbCBuZXh0IHRpbWVzdGFtcCwgc2xlZXBp bmcgaXNuJ3QgYWNjdXJhdGUgZW5vdWdoLgorCQkgKiBJdCdzIHdvcnRoIG5vdGluZyB0aGF0IHRo ZSB0YXJnZXQgdGltZXN0YW1wIGlzIGJhc2VkIG9uIGFic29sdXRlCisJCSAqIHRpbWVzdGFtcCBy YXRoZXIgdGhhbiBhIGRlbHRhIHRvIGF2b2lkIGFjY3VtdWxhdGlvbiBlcnJvcnMuCisJCSAqLwor CQlkaWZmX25zID0gbm93X25zIC0gc3RhcnRfbnM7CisJCXdhaXRfbnMgPSAoKGRpZmZfbnMgKyBy YXRlX25zIC0gMSkgLyByYXRlX25zKSAqIHJhdGVfbnM7CisJCXRhcmdldF9ucyA9IHN0YXJ0X25z ICsgd2FpdF9ucyAtIDEwOworCisJCXdoaWxlIChnZXRfdGltZV9ucygpIDwgdGFyZ2V0X25zKTsK Kwl9CisKKwlpZ3RfaW5mbygiQ29tcGxldGVkICV1IGZsaXBzLCAldSB3ZXJlIGluIHRocmVzaG9s ZCBmb3IgJWx1bnMuXG4iLAorCQkgdG90YWxfZmxpcCwgdG90YWxfcGFzcywgcmF0ZV9ucyk7CisK KwlyZXR1cm4gdG90YWxfZmxpcCA/ICgodG90YWxfcGFzcyAqIDEwMCkgLyB0b3RhbF9mbGlwKSA6 IDA7Cit9CisKKy8qIEJhc2ljIFZSUiBmbGlwIGZ1bmN0aW9uYWxpdHkgdGVzdCAtIGVuYWJsZSwg bWVhc3VyZSwgZGlzYWJsZSwgbWVhc3VyZSAqLworc3RhdGljIHZvaWQKK3Rlc3RfYmFzaWMoZGF0 YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSwgaWd0X291dHB1dF90ICpvdXRwdXQsIHVpbnQzMl90 IGZsYWdzKQoreworCXVpbnQ2NF90IHJhdGU7CisJdWludDMyX3QgcmVzdWx0OworCisJcmF0ZSA9 IGdldF90ZXN0X3JhdGVfbnMoZGF0YSwgb3V0cHV0KTsKKworCXByZXBhcmVfdGVzdChkYXRhLCBv dXRwdXQsIHBpcGUpOworCisJc2V0X3Zycl9vbl9waXBlKGRhdGEsIHBpcGUsIDEpOworCisJLyoK KwkgKiBEbyBhIHNob3J0IHJ1biB3aXRoIFZSUiwgYnV0IGRvbid0IGNoZWNrIHRoZSByZXN1bHQu CisJICogVGhpcyBpcyB0byBtYWtlIHN1cmUgd2Ugd2VyZSBhY3R1YWxseSBpbiB0aGUgbWlkZGxl IG9mCisJICogYWN0aXZlIGZsaXBwaW5nIGJlZm9yZSBkb2luZyB0aGUgRFBNUy9zdXNwZW5kIHN0 ZXBzLgorCSAqLworCWZsaXBfYW5kX21lYXN1cmUoZGF0YSwgb3V0cHV0LCBwaXBlLCByYXRlLCAy NTAwMDAwMDB1bGwpOworCisJaWYgKGZsYWdzICYgVEVTVF9EUE1TKSB7CisJCWttc3Rlc3Rfc2V0 X2Nvbm5lY3Rvcl9kcG1zKG91dHB1dC0+ZGlzcGxheS0+ZHJtX2ZkLAorCQkJCQkgICBvdXRwdXQt PmNvbmZpZy5jb25uZWN0b3IsCisJCQkJCSAgIERSTV9NT0RFX0RQTVNfT0ZGKTsKKwkJa21zdGVz dF9zZXRfY29ubmVjdG9yX2RwbXMob3V0cHV0LT5kaXNwbGF5LT5kcm1fZmQsCisJCQkJCSAgIG91 dHB1dC0+Y29uZmlnLmNvbm5lY3RvciwKKwkJCQkJICAgRFJNX01PREVfRFBNU19PTik7CisJfQor CisJaWYgKGZsYWdzICYgVEVTVF9TVVNQRU5EKQorCQlpZ3Rfc3lzdGVtX3N1c3BlbmRfYXV0b3Jl c3VtZShTVVNQRU5EX1NUQVRFX01FTSwKKwkJCQkJICAgICAgU1VTUEVORF9URVNUX05PTkUpOwor CisJcmVzdWx0ID0gZmxpcF9hbmRfbWVhc3VyZShkYXRhLCBvdXRwdXQsIHBpcGUsIHJhdGUsIFRF U1RfRFVSQVRJT05fTlMpOworCisJc2V0X3Zycl9vbl9waXBlKGRhdGEsIHBpcGUsIDApOworCisJ LyogVGhpcyBjaGVjayBpcyBkZWxheWVkIHVudGlsIGFmdGVyIFZSUiBpcyBkaXNhYmxlZCBzbyBp dCBpc24ndAorCSAqIGxlZnQgZW5hYmxlZCBpZiB0aGUgdGVzdCBmYWlscy4gKi8KKwlpZ3RfYXNz ZXJ0X2YocmVzdWx0ID4gNzUsCisJCSAgICAgIlRhcmdldCBWUlIgb24gdGhyZXNob2xkIG5vdCBy ZWFjaGVkLCByZXN1bHQgd2FzICV1JSVcbiIsCisJCSAgICAgcmVzdWx0KTsKKworCXJlc3VsdCA9 IGZsaXBfYW5kX21lYXN1cmUoZGF0YSwgb3V0cHV0LCBwaXBlLCByYXRlLCBURVNUX0RVUkFUSU9O X05TKTsKKworCWlndF9hc3NlcnRfZihyZXN1bHQgPCAxMCwKKwkJICAgICAiVGFyZ2V0IFZSUiBv ZmYgdGhyZXNob2xkIGV4Y2VlZGVkLCByZXN1bHQgd2FzICV1JSVcbiIsCisJCSAgICAgcmVzdWx0 KTsKK30KKworLyogUnVucyB0ZXN0cyBvbiBvdXRwdXRzIHRoYXQgYXJlIFZSUiBjYXBhYmxlLiAq Lworc3RhdGljIHZvaWQKK3J1bl92cnJfdGVzdChkYXRhX3QgKmRhdGEsIHRlc3RfdCB0ZXN0LCB1 aW50MzJfdCBmbGFncykKK3sKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKKwlib29sIGZvdW5kID0g ZmFsc2U7CisKKwlmb3JfZWFjaF9jb25uZWN0ZWRfb3V0cHV0KCZkYXRhLT5kaXNwbGF5LCBvdXRw dXQpIHsKKwkJZW51bSBwaXBlIHBpcGU7CisKKwkJaWYgKCFoYXNfdnJyKG91dHB1dCkpCisJCQlj b250aW51ZTsKKworCQlmb3JfZWFjaF9waXBlKCZkYXRhLT5kaXNwbGF5LCBwaXBlKQorCQkJaWYg KGlndF9waXBlX2Nvbm5lY3Rvcl92YWxpZChwaXBlLCBvdXRwdXQpKSB7CisJCQkJdGVzdChkYXRh LCBwaXBlLCBvdXRwdXQsIGZsYWdzKTsKKwkJCQlmb3VuZCA9IHRydWU7CisJCQkJYnJlYWs7CisJ CQl9CisJfQorCisJaWYgKCFmb3VuZCkKKwkJaWd0X3NraXAoIk5vIHZyciBjYXBhYmxlIG91dHB1 dHMgZm91bmQuXG4iKTsKK30KKworaWd0X21haW4KK3sKKwlkYXRhX3QgZGF0YSA9IHsgMCB9Owor CisJaWd0X3NraXBfb25fc2ltdWxhdGlvbigpOworCisJaWd0X2ZpeHR1cmUgeworCQlkYXRhLmRy bV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0FOWSk7CisKKwkJa21zdGVzdF9z ZXRfdnRfZ3JhcGhpY3NfbW9kZSgpOworCisJCWlndF9kaXNwbGF5X3JlcXVpcmUoJmRhdGEuZGlz cGxheSwgZGF0YS5kcm1fZmQpOworCQlpZ3RfcmVxdWlyZShkYXRhLmRpc3BsYXkuaXNfYXRvbWlj KTsKKwkJaWd0X2Rpc3BsYXlfcmVxdWlyZV9vdXRwdXQoJmRhdGEuZGlzcGxheSk7CisJfQorCisJ aWd0X3N1YnRlc3QoImZsaXAtYmFzaWMiKQorCQlydW5fdnJyX3Rlc3QoJmRhdGEsIHRlc3RfYmFz aWMsIDApOworCisJaWd0X3N1YnRlc3QoImZsaXAtZHBtcyIpCisJCXJ1bl92cnJfdGVzdCgmZGF0 YSwgdGVzdF9iYXNpYywgVEVTVF9EUE1TKTsKKworCWlndF9zdWJ0ZXN0KCJmbGlwLXN1c3BlbmQi KQorCQlydW5fdnJyX3Rlc3QoJmRhdGEsIHRlc3RfYmFzaWMsIFRFU1RfU1VTUEVORCk7CisKKwlp Z3RfZml4dHVyZSB7CisJCWlndF9kaXNwbGF5X2ZpbmkoJmRhdGEuZGlzcGxheSk7CisJfQorfQpk aWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAppbmRleCBi OGE2ZTYxYi4uZTg4N2YxMzEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkCisrKyBiL3Rl c3RzL21lc29uLmJ1aWxkCkBAIC01OSw2ICs1OSw3IEBAIHRlc3RfcHJvZ3MgPSBbCiAJJ2ttc190 dl9sb2FkX2RldGVjdCcsCiAJJ2ttc191bml2ZXJzYWxfcGxhbmUnLAogCSdrbXNfdmJsYW5rJywK Kwkna21zX3ZycicsCiAJJ21ldGFfdGVzdCcsCiAJJ3BlcmYnLAogCSdwbV9iYWNrbGlnaHQnLAot LSAKMi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK