From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-eopbgr790041.outbound.protection.outlook.com [40.107.79.41]) by gabe.freedesktop.org (Postfix) with ESMTPS id 322936E4E3 for ; Mon, 28 Jan 2019 15:42:19 +0000 (UTC) From: Nicholas Kazlauskas Date: Mon, 28 Jan 2019 10:42:11 -0500 Message-ID: <20190128154211.19558-1-nicholas.kazlauskas@amd.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t v2] 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 bmFsaXR5LgoKVGhlIHRlc3RzIG1lYXN1cmUgZmxpcHBpbmcgYXQgdGhlIGF2ZXJhZ2UgYmV0d2Vl biB0aGUgY3VycmVudCBtb2RlCnJlZnJlc2ggcmF0ZSBhbmQgdGhlIG1pbmltdW0gc3VwcG9ydGVk IHZhcmlhYmxlIHJlZnJlc2ggcmF0ZS4KCkl0IHRlc3RzIHRoYXQgVlJSIGlzIGVuYWJsZWQgYW5k IHRoYXQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBmbGlwCnRpbWVzdGFtcHMgY29udmVyZ2VzIHRv IHRoZSByZXF1ZXN0ZWQgcmF0ZS4gSXQgYWxzbyB0ZXN0cyB0aGlzIHVuZGVyCmJvdGggUzMgYW5k IERQTVMuCgpQb3RlbnRpYWwgaWRlYXMgZm9yIGZ1dHVyZSB0ZXN0czoKLSBUZXN0IGJlaGF2aW9y IGluc2lkZSBWUlIgcmFuZ2Ugd2l0aCBhIHN0ZXBwaW5nIHRlc3QKLSBUZXN0IGJlaGF2aW9yIG91 dHNpZGUgb2YgVlJSIHJhbmdlCi0gTXVsdGktbW9uaXRvciAobGltaXRlZCBieSBubyBhc3luYyBw YWdlZmxpcHMgaW4gRFJNIGF0b21pYyBBUEkpCgpDYzogSGFycnkgV2VudGxhbmQgPGhhcnJ5Lndl bnRsYW5kQGFtZC5jb20+CkNjOiBMZW8gTGkgPHN1bnBlbmcubGlAYW1kLmNvbT4KQ2M6IE1hbmFz aSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IE5pY2hv bGFzIEthemxhdXNrYXMgPG5pY2hvbGFzLmthemxhdXNrYXNAYW1kLmNvbT4KLS0tCiBsaWIvaWd0 X2ttcy5jICAgICAgICAgIHwgICAzICsKIGxpYi9pZ3Rfa21zLmggICAgICAgICAgfCAgIDIgKwog dGVzdHMvTWFrZWZpbGUuc291cmNlcyB8ICAgMSArCiB0ZXN0cy9rbXNfdnJyLmMgICAgICAgIHwg NDE3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB0ZXN0cy9tZXNv bi5idWlsZCAgICAgIHwgICAxICsKIDUgZmlsZXMgY2hhbmdlZCwgNDI0IGluc2VydGlvbnMoKykK IGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9rbXNfdnJyLmMKCmRpZmYgLS1naXQgYS9saWIvaWd0 X2ttcy5jIGIvbGliL2lndF9rbXMuYwppbmRleCA2ODRhNTk5Yy4uMmVkZjE5ZWMgMTAwNjQ0Ci0t LSBhL2xpYi9pZ3Rfa21zLmMKKysrIGIvbGliL2lndF9rbXMuYwpAQCAtMTg5LDYgKzE4OSw3IEBA IGNvbnN0IGNoYXIgKiBjb25zdCBpZ3RfY3J0Y19wcm9wX25hbWVzW0lHVF9OVU1fQ1JUQ19QUk9Q U10gPSB7CiAJW0lHVF9DUlRDX01PREVfSURdID0gIk1PREVfSUQiLAogCVtJR1RfQ1JUQ19BQ1RJ VkVdID0gIkFDVElWRSIsCiAJW0lHVF9DUlRDX09VVF9GRU5DRV9QVFJdID0gIk9VVF9GRU5DRV9Q VFIiLAorCVtJR1RfQ1JUQ19WUlJfRU5BQkxFRF0gPSAiVlJSX0VOQUJMRUQiLAogfTsKIAogY29u c3QgY2hhciAqIGNvbnN0IGlndF9jb25uZWN0b3JfcHJvcF9uYW1lc1tJR1RfTlVNX0NPTk5FQ1RP Ul9QUk9QU10gPSB7CkBAIC0xOTcsNiArMTk4LDcgQEAgY29uc3QgY2hhciAqIGNvbnN0IGlndF9j b25uZWN0b3JfcHJvcF9uYW1lc1tJR1RfTlVNX0NPTk5FQ1RPUl9QUk9QU10gPSB7CiAJW0lHVF9D T05ORUNUT1JfRFBNU10gPSAiRFBNUyIsCiAJW0lHVF9DT05ORUNUT1JfQlJPQURDQVNUX1JHQl0g PSAiQnJvYWRjYXN0IFJHQiIsCiAJW0lHVF9DT05ORUNUT1JfQ09OVEVOVF9QUk9URUNUSU9OXSA9 ICJDb250ZW50IFByb3RlY3Rpb24iLAorCVtJR1RfQ09OTkVDVE9SX1ZSUl9DQVBBQkxFXSA9ICJ2 cnJfY2FwYWJsZSIsCiB9OwogCiAvKgpAQCAtMTc4Niw2ICsxNzg4LDcgQEAgc3RhdGljIHZvaWQg aWd0X3BpcGVfcmVzZXQoaWd0X3BpcGVfdCAqcGlwZSkKIHsKIAlpZ3RfcGlwZV9vYmpfc2V0X3By b3BfdmFsdWUocGlwZSwgSUdUX0NSVENfTU9ERV9JRCwgMCk7CiAJaWd0X3BpcGVfb2JqX3NldF9w cm9wX3ZhbHVlKHBpcGUsIElHVF9DUlRDX0FDVElWRSwgMCk7CisJaWd0X3BpcGVfb2JqX3NldF9w cm9wX3ZhbHVlKHBpcGUsIElHVF9DUlRDX1ZSUl9FTkFCTEVELCAwKTsKIAlpZ3RfcGlwZV9vYmpf Y2xlYXJfcHJvcF9jaGFuZ2VkKHBpcGUsIElHVF9DUlRDX09VVF9GRU5DRV9QVFIpOwogCiAJcGlw ZS0+b3V0X2ZlbmNlX2ZkID0gLTE7CmRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5oIGIvbGliL2ln dF9rbXMuaAppbmRleCA0YTdjM2M5Ny4uNjc5ZDRlODQgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rfa21z LmgKKysrIGIvbGliL2lndF9rbXMuaApAQCAtMTA0LDYgKzEwNCw3IEBAIGVudW0gaWd0X2F0b21p Y19jcnRjX3Byb3BlcnRpZXMgewogICAgICAgIElHVF9DUlRDX01PREVfSUQsCiAgICAgICAgSUdU X0NSVENfQUNUSVZFLAogICAgICAgIElHVF9DUlRDX09VVF9GRU5DRV9QVFIsCisgICAgICAgSUdU X0NSVENfVlJSX0VOQUJMRUQsCiAgICAgICAgSUdUX05VTV9DUlRDX1BST1BTCiB9OwogCkBAIC0x MjEsNiArMTIyLDcgQEAgZW51bSBpZ3RfYXRvbWljX2Nvbm5lY3Rvcl9wcm9wZXJ0aWVzIHsKICAg ICAgICBJR1RfQ09OTkVDVE9SX0RQTVMsCiAgICAgICAgSUdUX0NPTk5FQ1RPUl9CUk9BRENBU1Rf UkdCLAogICAgICAgIElHVF9DT05ORUNUT1JfQ09OVEVOVF9QUk9URUNUSU9OLAorICAgICAgIElH VF9DT05ORUNUT1JfVlJSX0NBUEFCTEUsCiAgICAgICAgSUdUX05VTV9DT05ORUNUT1JfUFJPUFMK IH07CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmls ZS5zb3VyY2VzCmluZGV4IDUxOWVhYzc5Li43ZGYyYmNhNCAxMDA2NDQKLS0tIGEvdGVzdHMvTWFr ZWZpbGUuc291cmNlcworKysgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCkBAIC04OSw2ICs4OSw3 IEBAIFRFU1RTX3Byb2dzID0gXAogCWttc190dl9sb2FkX2RldGVjdCBcCiAJa21zX3VuaXZlcnNh bF9wbGFuZSBcCiAJa21zX3ZibGFuayBcCisJa21zX3ZyciBcCiAJa21zX3NlcXVlbmNlIFwKIAlt ZXRhX3Rlc3QgXAogCXBlcmYgXApkaWZmIC0tZ2l0IGEvdGVzdHMva21zX3Zyci5jIGIvdGVzdHMv a21zX3Zyci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5jNmI4OGU1Mwot LS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2ttc192cnIuYwpAQCAtMCwwICsxLDQxNyBAQAorLyoK KyAqIENvcHlyaWdodCAyMDE4IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KKyAqCisgKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24K KyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJu aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoK KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IHNoYWxsIGJlIGluY2x1ZGVkIGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp b25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBDT1BZUklHSFQgSE9MREVSKFMp IE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgorICogT1RI RVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP VEhFUldJU0UsCisgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZU V0FSRS4KKyAqLworCisjaW5jbHVkZSAiaWd0LmgiCisjaW5jbHVkZSAic3dfc3luYy5oIgorI2lu Y2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisKKyNkZWZpbmUgTlNFQ1NfUEVS X1NFQyAoMTAwMDAwMDAwMHVsbCkKKworLyoKKyAqIEVhY2ggdGVzdCBtZWFzdXJlbWVudCBzdGVw IHJ1bnMgZm9yIH41IHNlY29uZHMuCisgKiBUaGlzIGdpdmVzIGEgZGVjZW50IHNhbXBsZSBzaXpl ICsgZW5vdWdoIHRpbWUgZm9yIGFueSBhZGFwdGF0aW9uIHRvIG9jY3VyIGlmIG5lY2Vzc2FyeS4K KyAqLworI2RlZmluZSBURVNUX0RVUkFUSU9OX05TICg1MDAwMDAwMDAwdWxsKQorCitlbnVtIHsK KwlURVNUX05PTkUgPSAwLAorCVRFU1RfRFBNUyA9IDEgPDwgMCwKKwlURVNUX1NVU1BFTkQgPSAx IDw8IDEsCit9OworCit0eXBlZGVmIHN0cnVjdCByYW5nZSB7CisJdW5zaWduZWQgaW50IG1pbjsK Kwl1bnNpZ25lZCBpbnQgbWF4OworfSByYW5nZV90OworCit0eXBlZGVmIHN0cnVjdCBkYXRhIHsK KwlpZ3RfZGlzcGxheV90IGRpc3BsYXk7CisJaW50IGRybV9mZDsKKwlpZ3RfZmJfdCBmYjA7CisJ aWd0X2ZiX3QgZmIxOworfSBkYXRhX3Q7CisKK3R5cGVkZWYgdm9pZCAoKnRlc3RfdCkoZGF0YV90 KiwgZW51bSBwaXBlLCBpZ3Rfb3V0cHV0X3QqLCB1aW50MzJfdCk7CisKKy8qIENvbnZlcnRzIGEg dGltZXNwZWMgc3RydWN0dXJlIHRvIG5hbm9zZWNvbmRzLiAqLworc3RhdGljIHVpbnQ2NF90IHRp bWVzcGVjX3RvX25zKHN0cnVjdCB0aW1lc3BlYyAqdHMpCit7CisJcmV0dXJuIHRzLT50dl9zZWMg KiBOU0VDU19QRVJfU0VDICsgdHMtPnR2X25zZWM7Cit9CisKKy8qCisgKiBHZXRzIGEgdmJsYW5r IGV2ZW50IGZyb20gRFJNIGFuZCByZXR1cm5zIGl0cyB0aW1lc3RhbXAgaW4gbmFub3NlY29uZHMu CisgKiBUaGlzIGJsb2NrcyB1bnRpbCB0aGUgZXZlbnQgaXMgcmVjZWl2ZWQuCisgKi8KK3N0YXRp YyB1aW50NjRfdCBnZXRfdmJsYW5rX2V2ZW50X25zKGRhdGFfdCAqZGF0YSkKK3sKKwlzdHJ1Y3Qg ZHJtX2V2ZW50X3ZibGFuayBldjsKKworCWlndF9zZXRfdGltZW91dCgxLCAiV2FpdGluZyBmb3Ig dmJsYW5rIGV2ZW50XG4iKTsKKwlpZ3RfYXNzZXJ0X2VxKHJlYWQoZGF0YS0+ZHJtX2ZkLCAmZXYs IHNpemVvZihldikpLCBzaXplb2YoZXYpKTsKKwlpZ3RfcmVzZXRfdGltZW91dCgpOworCisJcmV0 dXJuIGV2LnR2X3NlYyAqIE5TRUNTX1BFUl9TRUMgKyBldi50dl91c2VjICogMTAwMHVsbDsKK30K KworLyoKKyAqIFJldHVybnMgdGhlIGN1cnJlbnQgQ0xPQ0tfTU9OT1RPTklDIHRpbWUgaW4gbmFu b3NlY29uZHMuCisgKiBUaGUgcmVndWxhciBJR1QgaGVscGVycyBjYW4ndCBiZSB1c2VkIHNpbmNl IHRoZXkgZGVmYXVsdCB0bworICogQ0xPQ0tfTU9OT1RPTklDX1JBVyAtIHdoaWNoIGlzbid0IHdo YXQgdGhlIGtlcm5lbCB1c2VzIGZvciBpdHMgdGltZXN0YW1wcy4KKyAqLworc3RhdGljIHVpbnQ2 NF90IGdldF90aW1lX25zKHZvaWQpCit7CisJc3RydWN0IHRpbWVzcGVjIHRzOworCW1lbXNldCgm dHMsIDAsIHNpemVvZih0cykpOworCWVycm5vID0gMDsKKworCWlmICghY2xvY2tfZ2V0dGltZShD TE9DS19NT05PVE9OSUMsICZ0cykpCisJCXJldHVybiB0aW1lc3BlY190b19ucygmdHMpOworCisJ aWd0X3dhcm4oIkNvdWxkIG5vdCByZWFkIG1vbm90b25pYyB0aW1lOiAlc1xuIiwgc3RyZXJyb3Io ZXJybm8pKTsKKwlpZ3RfZmFpbCgtZXJybm8pOworCisJcmV0dXJuIDA7Cit9CisKKy8qIFJldHVy bnMgdGhlIHJhdGUgZHVyYXRpb24gaW4gbmFub3NlY29uZHMgZm9yIHRoZSBnaXZlbiByZWZyZXNo IHJhdGUuICovCitzdGF0aWMgdWludDY0X3QgcmF0ZV9mcm9tX3JlZnJlc2godWludDY0X3QgcmVm cmVzaCkKK3sKKwlyZXR1cm4gTlNFQ1NfUEVSX1NFQyAvIHJlZnJlc2g7Cit9CisKKy8qIFJldHVy bnMgdGhlIG1pbiBhbmQgbWF4IHZyciByYW5nZSBmcm9tIHRoZSBjb25uZWN0b3IgZGVidWdmcy4g Ki8KK3N0YXRpYyByYW5nZV90IGdldF92cnJfcmFuZ2UoZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0 X3QgKm91dHB1dCkKK3sKKwljaGFyIGJ1ZlsyNTZdOworCWNoYXIgKnN0YXJ0X2xvYzsKKwlpbnQg ZmQsIHJlczsKKwlyYW5nZV90IHJhbmdlOworCisJZmQgPSBpZ3RfZGVidWdmc19jb25uZWN0b3Jf ZGlyKGRhdGEtPmRybV9mZCwgb3V0cHV0LT5uYW1lLCBPX1JET05MWSk7CisJaWd0X2Fzc2VydChm ZCA+PSAwKTsKKworCXJlcyA9IGlndF9kZWJ1Z2ZzX3NpbXBsZV9yZWFkKGZkLCAidnJyX3Jhbmdl IiwgYnVmLCBzaXplb2YoYnVmKSk7CisJaWd0X3JlcXVpcmUocmVzID4gMCk7CisKKwljbG9zZShm ZCk7CisKKwlpZ3RfYXNzZXJ0KHN0YXJ0X2xvYyA9IHN0cnN0cihidWYsICJNaW46ICIpKTsKKwlp Z3RfYXNzZXJ0X2VxKHNzY2FuZihzdGFydF9sb2MsICJNaW46ICV1IiwgJnJhbmdlLm1pbiksIDEp OworCisJaWd0X2Fzc2VydChzdGFydF9sb2MgPSBzdHJzdHIoYnVmLCAiTWF4OiAiKSk7CisJaWd0 X2Fzc2VydF9lcShzc2NhbmYoc3RhcnRfbG9jLCAiTWF4OiAldSIsICZyYW5nZS5tYXgpLCAxKTsK KworCXJldHVybiByYW5nZTsKK30KKworLyogUmV0dXJucyBhIHN1aXRhYmxlIHZyciB0ZXN0IGZy ZXF1ZW5jeS4gKi8KK3N0YXRpYyB1aW50MzJfdCBnZXRfdGVzdF9yYXRlX25zKGRhdGFfdCAqZGF0 YSwgaWd0X291dHB1dF90ICpvdXRwdXQpCit7CisJZHJtTW9kZU1vZGVJbmZvICptb2RlID0gaWd0 X291dHB1dF9nZXRfbW9kZShvdXRwdXQpOworCXJhbmdlX3QgcmFuZ2U7CisJdWludDMyX3QgdnRl c3Q7CisKKwkvKgorCSAqIFRoZSBmcmVxdWVuY3kgd2l0aCB0aGUgZmFzdGVzdCBjb252ZXJnZW5j ZSBzcGVlZCBzaG91bGQgYmUKKwkgKiB0aGUgbWlkcG9pbnQgYmV0d2VlbiB0aGUgY3VycmVudCBt b2RlIHZmcmVxIGFuZCB0aGUgbWluCisJICogc3VwcG9ydGVkIHZmcmVxLgorCSAqLworCXJhbmdl ID0gZ2V0X3Zycl9yYW5nZShkYXRhLCBvdXRwdXQpOworCWlndF9yZXF1aXJlKG1vZGUtPnZyZWZy ZXNoID4gcmFuZ2UubWluKTsKKworCXZ0ZXN0ID0gKG1vZGUtPnZyZWZyZXNoIC0gcmFuZ2UubWlu KSAvIDIgKyByYW5nZS5taW47CisJaWd0X3JlcXVpcmUodnRlc3QgPCBtb2RlLT52cmVmcmVzaCk7 CisKKwlyZXR1cm4gcmF0ZV9mcm9tX3JlZnJlc2godnRlc3QpOworfQorCisvKiBSZXR1cm5zIHRy dWUgaWYgYW4gb3V0cHV0IHN1cHBvcnRzIFZSUi4gKi8KK3N0YXRpYyBib29sIGhhc192cnIoaWd0 X291dHB1dF90ICpvdXRwdXQpCit7CisJcmV0dXJuIGlndF9vdXRwdXRfaGFzX3Byb3Aob3V0cHV0 LCBJR1RfQ09OTkVDVE9SX1ZSUl9DQVBBQkxFKSAmJgorCSAgICAgICBpZ3Rfb3V0cHV0X2dldF9w cm9wKG91dHB1dCwgSUdUX0NPTk5FQ1RPUl9WUlJfQ0FQQUJMRSk7Cit9CisKKy8qIFRvZ2dsZXMg dmFyaWFibGUgcmVmcmVzaCByYXRlIG9uIHRoZSBwaXBlLiAqLworc3RhdGljIHZvaWQgc2V0X3Zy cl9vbl9waXBlKGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUsIGJvb2wgZW5hYmxlZCkKK3sK KwlpZ3RfcGlwZV9zZXRfcHJvcF92YWx1ZSgmZGF0YS0+ZGlzcGxheSwgcGlwZSwgSUdUX0NSVENf VlJSX0VOQUJMRUQsCisJCQkJZW5hYmxlZCk7CisJaWd0X2Rpc3BsYXlfY29tbWl0X2F0b21pYygm ZGF0YS0+ZGlzcGxheSwgMCwgTlVMTCk7Cit9CisKKy8qIFByZXBhcmUgdGhlIGRpc3BsYXkgZm9y IHRlc3Rpbmcgb24gdGhlIGdpdmVuIHBpcGUuICovCitzdGF0aWMgdm9pZCBwcmVwYXJlX3Rlc3Qo ZGF0YV90ICpkYXRhLCBpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bSBwaXBlIHBpcGUpCit7CisJ ZHJtTW9kZU1vZGVJbmZvIG1vZGUgPSAqaWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpOworCWln dF9wbGFuZV90ICpwcmltYXJ5OworCWNhaXJvX3QgKmNyOworCisJLyogUmVzZXQgb3V0cHV0ICov CisJaWd0X2Rpc3BsYXlfcmVzZXQoJmRhdGEtPmRpc3BsYXkpOworCWlndF9vdXRwdXRfc2V0X3Bp cGUob3V0cHV0LCBwaXBlKTsKKworCS8qIFByZXBhcmUgcmVzb3VyY2VzICovCisJaWd0X3JlbW92 ZV9mYihkYXRhLT5kcm1fZmQsICZkYXRhLT5mYjEpOworCWlndF9yZW1vdmVfZmIoZGF0YS0+ZHJt X2ZkLCAmZGF0YS0+ZmIwKTsKKworCWlndF9jcmVhdGVfY29sb3JfZmIoZGF0YS0+ZHJtX2ZkLCBt b2RlLmhkaXNwbGF5LCBtb2RlLnZkaXNwbGF5LAorCQkJICAgIERSTV9GT1JNQVRfWFJHQjg4ODgs IExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCisJCQkgICAgMC41MCwgMC41MCwgMC41MCwgJmRh dGEtPmZiMCk7CisKKwlpZ3RfY3JlYXRlX2NvbG9yX2ZiKGRhdGEtPmRybV9mZCwgbW9kZS5oZGlz cGxheSwgbW9kZS52ZGlzcGxheSwKKwkJCSAgICBEUk1fRk9STUFUX1hSR0I4ODg4LCBMT0NBTF9E Uk1fRk9STUFUX01PRF9OT05FLAorCQkJICAgIDAuNTAsIDAuNTAsIDAuNTAsICZkYXRhLT5mYjEp OworCisJY3IgPSBpZ3RfZ2V0X2NhaXJvX2N0eChkYXRhLT5kcm1fZmQsICZkYXRhLT5mYjApOwor CisJaWd0X3BhaW50X2NvbG9yKGNyLCAwLCAwLCBtb2RlLmhkaXNwbGF5IC8gMTAsIG1vZGUudmRp c3BsYXkgLyAxMCwKKwkJCTEuMDAsIDAuMDAsIDAuMDApOworCisJLyogVGFrZSBjYXJlIG9mIGFu eSByZXF1aXJlZCBtb2Rlc2V0dGluZyBiZWZvcmUgdGhlIHRlc3QgYmVnaW5zLiAqLworCXByaW1h cnkgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKG91dHB1dCwgRFJNX1BMQU5FX1RZUEVfUFJJ TUFSWSk7CisJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCAmZGF0YS0+ZmIwKTsKKworCWlndF9k aXNwbGF5X2NvbW1pdF9hdG9taWMoJmRhdGEtPmRpc3BsYXksCisJCQkJICBEUk1fTU9ERV9BVE9N SUNfQUxMT1dfTU9ERVNFVCwgTlVMTCk7Cit9CisKKy8qIFdhaXRzIGZvciB0aGUgdmJsYW5rIGlu dGVydmFsLiBSZXR1cm5zIHRoZSB2YmxhbmsgdGltZXN0YW1wIGluIG5zLiAqLworc3RhdGljIHVp bnQ2NF90Cit3YWl0X2Zvcl92YmxhbmsoZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSkKK3sK Kwlkcm1WQmxhbmsgdmJsID0geyAwIH07CisKKwl2YmwucmVxdWVzdC50eXBlID0ga21zdGVzdF9n ZXRfdmJsX2ZsYWcocGlwZSk7CisJdmJsLnJlcXVlc3QudHlwZSB8PSBEUk1fVkJMQU5LX1JFTEFU SVZFIHwgRFJNX1ZCTEFOS19FVkVOVDsKKwl2YmwucmVxdWVzdC5zZXF1ZW5jZSA9IDE7CisJZHJt V2FpdFZCbGFuayhkYXRhLT5kcm1fZmQsICZ2YmwpOworCisJcmV0dXJuIGdldF92YmxhbmtfZXZl bnRfbnMoZGF0YSk7Cit9CisKKy8qIFBlcmZvcm1zIGFuIGFzeW5jaHJvbm91cyBub24tYmxvY2tp bmcgcGFnZS1mbGlwIG9uIGEgcGlwZS4gKi8KK3N0YXRpYyBpbnQKK2RvX2ZsaXAoZGF0YV90ICpk YXRhLCBlbnVtIHBpcGUgcGlwZV9pZCwgaWd0X2ZiX3QgKmZiKQoreworCWlndF9waXBlX3QgKnBp cGUgPSAmZGF0YS0+ZGlzcGxheS5waXBlc1twaXBlX2lkXTsKKwlpbnQgcmV0OworCisJaWd0X3Nl dF90aW1lb3V0KDEsICJTY2hlZHVsaW5nIHBhZ2UgZmxpcFxuIik7CisKKwkvKgorCSAqIE9ubHkg dGhlIGxlZ2FjeSBmbGlwIGlvY3RsIHN1cHBvcnRzIGFzeW5jIGZsaXBzLgorCSAqIEl0J3MgYWxz byBub24tYmxvY2tpbmcsIGJ1dCByZXR1cm5zIC1FQlVTWSBpZiBmbGlwcGluZyB0b28gZmFzdC4K KwkgKiAyeCBtb25pdG9yIHRlc3RzIHdpbGwgbmVlZCBhc3luYyBmbGlwcyBpbiB0aGUgYXRvbWlj IEFQSS4KKwkgKi8KKwlkbyB7CisJCXJldCA9IGRybU1vZGVQYWdlRmxpcChkYXRhLT5kcm1fZmQs IHBpcGUtPmNydGNfaWQsCisJCQkJICAgICAgZmItPmZiX2lkLAorCQkJCSAgICAgIERSTV9NT0RF X1BBR0VfRkxJUF9FVkVOVCB8CisJCQkJICAgICAgRFJNX01PREVfUEFHRV9GTElQX0FTWU5DLAor CQkJCSAgICAgIGRhdGEpOworCX0gd2hpbGUgKHJldCA9PSAtRUJVU1kpOworCisJaWd0X2Fzc2Vy dF9lcShyZXQsIDApOworCWlndF9yZXNldF90aW1lb3V0KCk7CisKKwlyZXR1cm4gMDsKK30KKwor LyoKKyAqIEZsaXBzIGF0IHRoZSBnaXZlbiByYXRlIGFuZCBtZWFzdXJlcyBhZ2FpbnN0IHRoZSBl eHBlY3RlZCB2YWx1ZS4KKyAqIFJldHVybnMgdGhlIHBhc3MgcmF0ZSBhcyBhIHBlcmNlbnRhZ2Ug ZnJvbSAwIC0gMTAwLgorICoKKyAqIFRoZSBWUlIgQVBJIGlzIHF1aXRlIGZsZXhpYmxlIGluIHRl cm1zIG9mIGRlZmluaXRpb24gLSB0aGUgZHJpdmVyCisgKiBjYW4gYXJiaXRyYXJpbHkgcmVzdHJp Y3QgdGhlIGJvdW5kcyBmdXJ0aGVyIHRoYW4gdGhlIGFic29sdXRlCisgKiBtaW4gYW5kIG1heCBy YW5nZS4gQnV0IFZSUiBpcyByZWFsbHkgYWJvdXQgZXh0ZW5kaW5nIHRoZSBmbGlwCisgKiB0byBw cmV2ZW50IHN0dXR0ZXJpbmcgb3IgdG8gbWF0Y2ggYSBzb3VyY2UgY29udGVudCByYXRlLgorICoK KyAqIFRoZSBvbmx5IHdheSB0byAicHJlc2VudCIgYXQgYSBmaXhlZCByYXRlIGxpa2UgdXNlcnNw YWNlIGluIGEgdmVuZG9yCisgKiBuZXV0cmFsIG1hbm5lciBpcyB0byBkbyBpdCB3aXRoIGFzeW5j IGZsaXBzLiBUaGlzIGF2b2lkcyB0aGUgbmVlZAorICogdG8gd2FpdCBmb3IgbmV4dCB2Ymxhbmsg YW5kIGl0IHNob3VsZCBldmVudHVhbGx5IGNvbnZlcmdlIGF0IHRoZQorICogZGVzaXJlZCByYXRl LgorICovCitzdGF0aWMgdWludDMyX3QKK2ZsaXBfYW5kX21lYXN1cmUoZGF0YV90ICpkYXRhLCBp Z3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51bSBwaXBlIHBpcGUsCisJCSB1aW50NjRfdCByYXRlX25z LCB1aW50NjRfdCBkdXJhdGlvbl9ucykKK3sKKwl1aW50NjRfdCBzdGFydF9ucywgbGFzdF92Ymxh bmtfbnM7CisJdWludDMyX3QgdG90YWxfZmxpcCA9IDAsIHRvdGFsX3Bhc3MgPSAwOworCWJvb2wg ZnJvbnQgPSBmYWxzZTsKKworCS8qIEFsaWduIHdpdGggdGhlIHZibGFuayByZWdpb24gdG8gc3Bl ZWQgdXAgY29udmVyZ2VuY2UuICovCisJbGFzdF92YmxhbmtfbnMgPSB3YWl0X2Zvcl92Ymxhbmso ZGF0YSwgcGlwZSk7CisJc3RhcnRfbnMgPSBnZXRfdGltZV9ucygpOworCisJZm9yICg7Oykgewor CQl1aW50NjRfdCBub3dfbnMsIHZibGFua19ucywgd2FpdF9ucywgdGFyZ2V0X25zOworCQlpbnQ2 NF90IGRpZmZfbnM7CisKKwkJZnJvbnQgPSAhZnJvbnQ7CisJCWRvX2ZsaXAoZGF0YSwgcGlwZSwg ZnJvbnQgPyAmZGF0YS0+ZmIxIDogJmRhdGEtPmZiMCk7CisKKwkJdmJsYW5rX25zID0gZ2V0X3Zi bGFua19ldmVudF9ucyhkYXRhKTsKKwkJZGlmZl9ucyA9IHJhdGVfbnMgLSAodmJsYW5rX25zIC0g bGFzdF92YmxhbmtfbnMpOworCQlsYXN0X3ZibGFua19ucyA9IHZibGFua19uczsKKworCQl0b3Rh bF9mbGlwICs9IDE7CisKKwkJLyoKKwkJICogQ2hlY2sgaWYgdGhlIGRpZmZlcmVuY2UgYmV0d2Vl biB0aGUgdHdvIGZsaXAgdGltZXN0YW1wcworCQkgKiB3YXMgd2l0aGluIHRoZSByZXF1aXJlZCB0 aHJlc2hvbGQgZnJvbSB0aGUgZXhwZWN0ZWQgcmF0ZS4KKwkJICoKKwkJICogQSB+NTB1cyB0aHJl c2hvbGQgaXMgYXJiaXRyYXJ5LCBidXQgaXQncyByb3VnaGx5IHRoZQorCQkgKiBkaWZmZXJlbmNl IGJldHdlZW4gMTQ0SHogYW5kIDE0M0h6IHdoaWNoIHNob3VsZCBnaXZlIHRoaXMKKwkJICogZW5v dWdoIGFjY3VyYWN5IGZvciBtb3N0IHVzZSBjYXNlcy4KKwkJICovCisJCWlmIChsbGFicyhkaWZm X25zKSA8IDUwMDAwbGwpCisJCQl0b3RhbF9wYXNzICs9IDE7CisKKwkJbm93X25zID0gZ2V0X3Rp bWVfbnMoKTsKKwkJaWYgKG5vd19ucyAtIHN0YXJ0X25zID4gZHVyYXRpb25fbnMpCisJCQlicmVh azsKKworCQkvKgorCQkgKiBCdXJuIENQVSB1bnRpbCBuZXh0IHRpbWVzdGFtcCwgc2xlZXBpbmcg aXNuJ3QgYWNjdXJhdGUgZW5vdWdoLgorCQkgKiBJdCdzIHdvcnRoIG5vdGluZyB0aGF0IHRoZSB0 YXJnZXQgdGltZXN0YW1wIGlzIGJhc2VkIG9uIGFic29sdXRlCisJCSAqIHRpbWVzdGFtcCByYXRo ZXIgdGhhbiBhIGRlbHRhIHRvIGF2b2lkIGFjY3VtdWxhdGlvbiBlcnJvcnMuCisJCSAqLworCQlk aWZmX25zID0gbm93X25zIC0gc3RhcnRfbnM7CisJCXdhaXRfbnMgPSAoKGRpZmZfbnMgKyByYXRl X25zIC0gMSkgLyByYXRlX25zKSAqIHJhdGVfbnM7CisJCXRhcmdldF9ucyA9IHN0YXJ0X25zICsg d2FpdF9ucyAtIDEwOworCisJCXdoaWxlIChnZXRfdGltZV9ucygpIDwgdGFyZ2V0X25zKTsKKwl9 CisKKwlpZ3RfaW5mbygiQ29tcGxldGVkICV1IGZsaXBzLCAldSB3ZXJlIGluIHRocmVzaG9sZCBm b3IgJWx1bnMuXG4iLAorCQkgdG90YWxfZmxpcCwgdG90YWxfcGFzcywgcmF0ZV9ucyk7CisKKwly ZXR1cm4gdG90YWxfZmxpcCA/ICgodG90YWxfcGFzcyAqIDEwMCkgLyB0b3RhbF9mbGlwKSA6IDA7 Cit9CisKKy8qIEJhc2ljIFZSUiBmbGlwIGZ1bmN0aW9uYWxpdHkgdGVzdCAtIGVuYWJsZSwgbWVh c3VyZSwgZGlzYWJsZSwgbWVhc3VyZSAqLworc3RhdGljIHZvaWQKK3Rlc3RfYmFzaWMoZGF0YV90 ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSwgaWd0X291dHB1dF90ICpvdXRwdXQsIHVpbnQzMl90IGZs YWdzKQoreworCXVpbnQ2NF90IHJhdGU7CisJdWludDMyX3QgcmVzdWx0OworCisJcmF0ZSA9IGdl dF90ZXN0X3JhdGVfbnMoZGF0YSwgb3V0cHV0KTsKKworCXByZXBhcmVfdGVzdChkYXRhLCBvdXRw dXQsIHBpcGUpOworCisJc2V0X3Zycl9vbl9waXBlKGRhdGEsIHBpcGUsIDEpOworCisJLyoKKwkg KiBEbyBhIHNob3J0IHJ1biB3aXRoIFZSUiwgYnV0IGRvbid0IGNoZWNrIHRoZSByZXN1bHQuCisJ ICogVGhpcyBpcyB0byBtYWtlIHN1cmUgd2Ugd2VyZSBhY3R1YWxseSBpbiB0aGUgbWlkZGxlIG9m CisJICogYWN0aXZlIGZsaXBwaW5nIGJlZm9yZSBkb2luZyB0aGUgRFBNUy9zdXNwZW5kIHN0ZXBz LgorCSAqLworCWZsaXBfYW5kX21lYXN1cmUoZGF0YSwgb3V0cHV0LCBwaXBlLCByYXRlLCAyNTAw MDAwMDB1bGwpOworCisJaWYgKGZsYWdzICYgVEVTVF9EUE1TKSB7CisJCWttc3Rlc3Rfc2V0X2Nv bm5lY3Rvcl9kcG1zKG91dHB1dC0+ZGlzcGxheS0+ZHJtX2ZkLAorCQkJCQkgICBvdXRwdXQtPmNv bmZpZy5jb25uZWN0b3IsCisJCQkJCSAgIERSTV9NT0RFX0RQTVNfT0ZGKTsKKwkJa21zdGVzdF9z ZXRfY29ubmVjdG9yX2RwbXMob3V0cHV0LT5kaXNwbGF5LT5kcm1fZmQsCisJCQkJCSAgIG91dHB1 dC0+Y29uZmlnLmNvbm5lY3RvciwKKwkJCQkJICAgRFJNX01PREVfRFBNU19PTik7CisJfQorCisJ aWYgKGZsYWdzICYgVEVTVF9TVVNQRU5EKQorCQlpZ3Rfc3lzdGVtX3N1c3BlbmRfYXV0b3Jlc3Vt ZShTVVNQRU5EX1NUQVRFX01FTSwKKwkJCQkJICAgICAgU1VTUEVORF9URVNUX05PTkUpOworCisJ cmVzdWx0ID0gZmxpcF9hbmRfbWVhc3VyZShkYXRhLCBvdXRwdXQsIHBpcGUsIHJhdGUsIFRFU1Rf RFVSQVRJT05fTlMpOworCisJc2V0X3Zycl9vbl9waXBlKGRhdGEsIHBpcGUsIDApOworCisJLyog VGhpcyBjaGVjayBpcyBkZWxheWVkIHVudGlsIGFmdGVyIFZSUiBpcyBkaXNhYmxlZCBzbyBpdCBp c24ndAorCSAqIGxlZnQgZW5hYmxlZCBpZiB0aGUgdGVzdCBmYWlscy4gKi8KKwlpZ3RfYXNzZXJ0 X2YocmVzdWx0ID4gNzUsCisJCSAgICAgIlRhcmdldCBWUlIgb24gdGhyZXNob2xkIG5vdCByZWFj aGVkLCByZXN1bHQgd2FzICV1JSVcbiIsCisJCSAgICAgcmVzdWx0KTsKKworCXJlc3VsdCA9IGZs aXBfYW5kX21lYXN1cmUoZGF0YSwgb3V0cHV0LCBwaXBlLCByYXRlLCBURVNUX0RVUkFUSU9OX05T KTsKKworCWlndF9hc3NlcnRfZihyZXN1bHQgPCAxMCwKKwkJICAgICAiVGFyZ2V0IFZSUiBvZmYg dGhyZXNob2xkIGV4Y2VlZGVkLCByZXN1bHQgd2FzICV1JSVcbiIsCisJCSAgICAgcmVzdWx0KTsK K30KKworLyogUnVucyB0ZXN0cyBvbiBvdXRwdXRzIHRoYXQgYXJlIFZSUiBjYXBhYmxlLiAqLwor c3RhdGljIHZvaWQKK3J1bl92cnJfdGVzdChkYXRhX3QgKmRhdGEsIHRlc3RfdCB0ZXN0LCB1aW50 MzJfdCBmbGFncykKK3sKKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKKwlib29sIGZvdW5kID0gZmFs c2U7CisKKwlmb3JfZWFjaF9jb25uZWN0ZWRfb3V0cHV0KCZkYXRhLT5kaXNwbGF5LCBvdXRwdXQp IHsKKwkJZW51bSBwaXBlIHBpcGU7CisKKwkJaWYgKCFoYXNfdnJyKG91dHB1dCkpCisJCQljb250 aW51ZTsKKworCQlmb3JfZWFjaF9waXBlKCZkYXRhLT5kaXNwbGF5LCBwaXBlKQorCQkJaWYgKGln dF9waXBlX2Nvbm5lY3Rvcl92YWxpZChwaXBlLCBvdXRwdXQpKSB7CisJCQkJdGVzdChkYXRhLCBw aXBlLCBvdXRwdXQsIGZsYWdzKTsKKwkJCQlmb3VuZCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9 CisJfQorCisJaWYgKCFmb3VuZCkKKwkJaWd0X3NraXAoIk5vIHZyciBjYXBhYmxlIG91dHB1dHMg Zm91bmQuXG4iKTsKK30KKworaWd0X21haW4KK3sKKwlkYXRhX3QgZGF0YSA9IHsgMCB9OworCisJ aWd0X3NraXBfb25fc2ltdWxhdGlvbigpOworCisJaWd0X2ZpeHR1cmUgeworCQlkYXRhLmRybV9m ZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0FOWSk7CisKKwkJa21zdGVzdF9zZXRf dnRfZ3JhcGhpY3NfbW9kZSgpOworCisJCWlndF9kaXNwbGF5X3JlcXVpcmUoJmRhdGEuZGlzcGxh eSwgZGF0YS5kcm1fZmQpOworCQlpZ3RfcmVxdWlyZShkYXRhLmRpc3BsYXkuaXNfYXRvbWljKTsK KwkJaWd0X2Rpc3BsYXlfcmVxdWlyZV9vdXRwdXQoJmRhdGEuZGlzcGxheSk7CisJfQorCisJaWd0 X3N1YnRlc3QoImZsaXAtYmFzaWMiKQorCQlydW5fdnJyX3Rlc3QoJmRhdGEsIHRlc3RfYmFzaWMs IDApOworCisJaWd0X3N1YnRlc3QoImZsaXAtZHBtcyIpCisJCXJ1bl92cnJfdGVzdCgmZGF0YSwg dGVzdF9iYXNpYywgVEVTVF9EUE1TKTsKKworCWlndF9zdWJ0ZXN0KCJmbGlwLXN1c3BlbmQiKQor CQlydW5fdnJyX3Rlc3QoJmRhdGEsIHRlc3RfYmFzaWMsIFRFU1RfU1VTUEVORCk7CisKKwlpZ3Rf Zml4dHVyZSB7CisJCWlndF9kaXNwbGF5X2ZpbmkoJmRhdGEuZGlzcGxheSk7CisJfQorfQpkaWZm IC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAppbmRleCBlMTRh YjJiNC4uZmI3NTczODYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkCisrKyBiL3Rlc3Rz L21lc29uLmJ1aWxkCkBAIC02MCw2ICs2MCw3IEBAIHRlc3RfcHJvZ3MgPSBbCiAJJ2ttc190dl9s b2FkX2RldGVjdCcsCiAJJ2ttc191bml2ZXJzYWxfcGxhbmUnLAogCSdrbXNfdmJsYW5rJywKKwkn a21zX3ZycicsCiAJJ21ldGFfdGVzdCcsCiAJJ3BlcmYnLAogCSdwbV9iYWNrbGlnaHQnLAotLSAK Mi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpp Z3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK