From mboxrd@z Thu Jan 1 00:00:00 1970 From: Abdiel Janulgue Subject: [i-g-t PATCH v7 2/5] lib: add igt_dummyload Date: Wed, 16 Nov 2016 23:18:01 +0200 Message-ID: <1479331084-11891-3-git-send-email-abdiel.janulgue@linux.intel.com> References: <1479331084-11891-1-git-send-email-abdiel.janulgue@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 919E36E6A0 for ; Wed, 16 Nov 2016 13:22:19 +0000 (UTC) In-Reply-To: <1479331084-11891-1-git-send-email-abdiel.janulgue@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org QSBsb3Qgb2YgaWd0IHRlc3RjYXNlcyBuZWVkIHNvbWUgR1BVIHdvcmtsb2FkIHRvIG1ha2Ugc3Vy ZSBhIHJhY2UKd2luZG93IGlzIGJpZyBlbm91Z2guIFVuZm9ydHVuYXRlbHkgaGF2aW5nIGEgZml4 ZWQgYW1vdW50IG9mCndvcmtsb2FkIGxlYWRzIHRvIHNwdXJpb3VzIHRlc3QgZmFpbHVyZXMgb3Ig b3ZlcnRseSBsb25nIHJ1bnRpbWVzCm9uIHNvbWUgZmFzdC9zbG93IHBsYXRmb3Jtcy4gVGhpcyBs aWJyYXJ5IGNvbnRhaW5zIGZ1bmN0aW9uYWxpdHkKdG8gc3VibWl0IEdQVSB3b3JrbG9hZHMgdGhh dCBzaG91bGQgY29uc3VtZSBleGFjdGx5IGEgc3BlY2lmaWMKYW1vdW50IG9mIHRpbWUuCgp2MiA6 IEFkZCByZWN1cnNpdmUgYmF0Y2ggZmVhdHVyZSBmcm9tIENocmlzCnYzIDogRHJvcCBhdXRvLXR1 bmVkIHN0dWZmLiBBZGQgYm8gZGVwZW5kZWN5IHRvIHJlY3Vyc2l2ZSBiYXRjaAogICAgIGJ5IGFk ZGluZyBhIGR1bW15IHJlbG9jIHRvIHRoZSBibyBhcyBzdWdnZXN0ZWQgYnkgVmlsbGUuCnY0OiAg Rml4IGRlcGVuZGVuY3kgcmVsb2MgYXMgd3JpdGUgaW5zdGVhZCBvZiByZWFkIChWaWxsZSkuCiAg ICAgRml4IHdyb25nIGhhbmRsaW5nIG9mIGJhdGNoYnVmZmVyIHN0YXJ0IG9uIElMSyBjYXVzaW5n CiAgICAgdGVzdCBmYWlsdXJlCnY1OiAgQ29udmVydCBrbXNfYnVzeSB0byB1c2UgdGhpcyBhcGkK djY6ICBBZGQgdGhpcyBsaWJyYXJ5IHRvIGRvY3MKdjc6ICBEb2N1bWVudCBnbG9iYWwgdXNlIG9m IGJhdGNoLCByZXVzZSBkZWZpbmVzCiAgICAgTWlub3IgY29kZSBjbGVhbnVwcy4KICAgICBSZW5h bWUgaWd0X3NwaW5fYmF0Y2ggYW5kIGlndF9wb3N0X3NwaW5fYmF0Y2ggdG8KICAgICBpZ3Rfc3Bp bl9iYXRjaF9uZXcgYW5kIGlndF9zcGluX2JhdGNoX2ZyZWUKICAgICByZXNwZWN0aXZlbHkgKFRv bWV1IFZpem9zbykuCiAgICAgRml4IGVycm9yIGluIGRlcGVuZGVuY3kgcmVsb2NhdGlvbiBoYW5k bGluZyBpbiBIU1cgY2F1c2luZwogICAgIHRlc3RzIHRvIGZhaWwuCgpDYzogRGFuaWVsIFZldHRl ciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3ly amFsYUBsaW51eC5pbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNv bi5jby51az4KQ2M6IHRvbWV1QHRvbWV1dml6b3NvLm5ldApTaWduZWQtb2ZmLWJ5OiBBYmRpZWwg SmFudWxndWUgPGFiZGllbC5qYW51bGd1ZUBsaW51eC5pbnRlbC5jb20+Ci0tLQogLi4uL2ludGVs LWdwdS10b29scy9pbnRlbC1ncHUtdG9vbHMtZG9jcy54bWwgICAgICAgfCAgIDEgKwogbGliL01h a2VmaWxlLnNvdXJjZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogbGli L2lndC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwog bGliL2lndF9kdW1teWxvYWQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyODEg KysrKysrKysrKysrKysrKysrKysrCiBsaWIvaWd0X2R1bW15bG9hZC5oICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICA0MyArKysrCiA1IGZpbGVzIGNoYW5nZWQsIDMyOCBpbnNlcnRp b25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2lndF9kdW1teWxvYWQuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGxpYi9pZ3RfZHVtbXlsb2FkLmgKCmRpZmYgLS1naXQgYS9kb2NzL3JlZmVyZW5j ZS9pbnRlbC1ncHUtdG9vbHMvaW50ZWwtZ3B1LXRvb2xzLWRvY3MueG1sIGIvZG9jcy9yZWZlcmVu Y2UvaW50ZWwtZ3B1LXRvb2xzL2ludGVsLWdwdS10b29scy1kb2NzLnhtbAppbmRleCBjODYyZjJh Li41NTkwMmFiIDEwMDY0NAotLS0gYS9kb2NzL3JlZmVyZW5jZS9pbnRlbC1ncHUtdG9vbHMvaW50 ZWwtZ3B1LXRvb2xzLWRvY3MueG1sCisrKyBiL2RvY3MvcmVmZXJlbmNlL2ludGVsLWdwdS10b29s cy9pbnRlbC1ncHUtdG9vbHMtZG9jcy54bWwKQEAgLTMyLDYgKzMyLDcgQEAKICAgICA8eGk6aW5j bHVkZSBocmVmPSJ4bWwvaW50ZWxfaW8ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1s L2lndF92YzQueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2lndF92Z2VtLnhtbCIv PgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pZ3RfZHVtbXlsb2FkLnhtbCIvPgogICA8L2No YXB0ZXI+CiAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pZ3RfdGVzdF9wcm9ncmFtcy54bWwiLz4K IApkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMgYi9saWIvTWFrZWZpbGUuc291cmNl cwppbmRleCBlOGUyNzdiLi43ZmM1ZWMyIDEwMDY0NAotLS0gYS9saWIvTWFrZWZpbGUuc291cmNl cworKysgYi9saWIvTWFrZWZpbGUuc291cmNlcwpAQCAtNzUsNiArNzUsOCBAQCBsaWJfc291cmNl X2xpc3QgPQkgCVwKIAlpZ3RfZHJhdy5oCQlcCiAJaWd0X3BtLmMJCVwKIAlpZ3RfcG0uaAkJXAor CWlndF9kdW1teWxvYWQuYwkJXAorCWlndF9kdW1teWxvYWQuaAkJXAogCXV3aWxkbWF0L3V3aWxk bWF0LmgJXAogCXV3aWxkbWF0L3V3aWxkbWF0LmMJXAogCSQoTlVMTCkKZGlmZiAtLWdpdCBhL2xp Yi9pZ3QuaCBiL2xpYi9pZ3QuaAppbmRleCBkNzUxZjI0Li5hMDAyOGQ1IDEwMDY0NAotLS0gYS9s aWIvaWd0LmgKKysrIGIvbGliL2lndC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiaWd0 X2NvcmUuaCIKICNpbmNsdWRlICJpZ3RfZGVidWdmcy5oIgogI2luY2x1ZGUgImlndF9kcmF3Lmgi CisjaW5jbHVkZSAiaWd0X2R1bW15bG9hZC5oIgogI2luY2x1ZGUgImlndF9mYi5oIgogI2luY2x1 ZGUgImlndF9ndC5oIgogI2luY2x1ZGUgImlndF9rbXMuaCIKZGlmZiAtLWdpdCBhL2xpYi9pZ3Rf ZHVtbXlsb2FkLmMgYi9saWIvaWd0X2R1bW15bG9hZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmQyNjYxOTUKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvaWd0X2R1bW15bG9h ZC5jCkBAIC0wLDAgKzEsMjgxIEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwgQ29y cG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAq IHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29w aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisg KiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hh bGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0 aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJ TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ TElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H RU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisg KgorICovCisKKyNpbmNsdWRlICJpZ3QuaCIKKyNpbmNsdWRlICJpZ3RfZHVtbXlsb2FkLmgiCisj aW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHN5cy9zeXNj YWxsLmg+CisKKy8qKgorICogU0VDVElPTjppZ3RfZHVtbXlsb2FkCisgKiBAc2hvcnRfZGVzY3Jp cHRpb246IExpYnJhcnkgZm9yIHN1Ym1pdHRpbmcgR1BVIHdvcmtsb2FkcworICogQHRpdGxlOiBE dW1teWxvYWQKKyAqIEBpbmNsdWRlOiBpZ3QuaAorICoKKyAqIEEgbG90IG9mIGlndCB0ZXN0Y2Fz ZXMgbmVlZCBzb21lIEdQVSB3b3JrbG9hZCB0byBtYWtlIHN1cmUgYSByYWNlIHdpbmRvdyBpcwor ICogYmlnIGVub3VnaC4gVW5mb3J0dW5hdGVseSBoYXZpbmcgYSBmaXhlZCBhbW91bnQgb2Ygd29y a2xvYWQgbGVhZHMgdG8KKyAqIHNwdXJpb3VzIHRlc3QgZmFpbHVyZXMgb3Igb3Zlcmx5IGxvbmcg cnVudGltZXMgb24gc29tZSBmYXN0L3Nsb3cgcGxhdGZvcm1zLgorICogVGhpcyBsaWJyYXJ5IGNv bnRhaW5zIGZ1bmN0aW9uYWxpdHkgdG8gc3VibWl0IEdQVSB3b3JrbG9hZHMgdGhhdCBzaG91bGQK KyAqIGNvbnN1bWUgZXhhY3RseSBhIHNwZWNpZmljIGFtb3VudCBvZiB0aW1lLgorICovCisKKyNk ZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0JTRF9TSElGVCAgICAgICgxMykKKyNkZWZpbmUgTE9DQUxf STkxNV9FWEVDX0JTRF9NQVNLICAgICAgICgzIDw8IExPQ0FMX0k5MTVfRVhFQ19CU0RfU0hJRlQp CisKKyNkZWZpbmUgRU5HSU5FX01BU0sgIChJOTE1X0VYRUNfUklOR19NQVNLIHwgTE9DQUxfSTkx NV9FWEVDX0JTRF9NQVNLKQorCitzdGF0aWMgY29uc3QgaW50IGJvX3NpemUgPSA0MDk2OworCitz dGF0aWMgdm9pZAorZmlsbF9vYmplY3Qoc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIg Km9iaiwgdWludDMyX3QgZ2VtX2hhbmRsZSwKKwkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZWxv Y2F0aW9uX2VudHJ5ICpyZWxvY3MsIHVpbnQzMl90IGNvdW50KQoreworCW1lbXNldChvYmosIDAs IHNpemVvZigqb2JqKSk7CisJb2JqLT5oYW5kbGUgPSBnZW1faGFuZGxlOworCW9iai0+cmVsb2Nh dGlvbl9jb3VudCA9IGNvdW50OworCW9iai0+cmVsb2NzX3B0ciA9ICh1aW50cHRyX3QpcmVsb2Nz OworfQorCitzdGF0aWMgdm9pZAorZmlsbF9yZWxvYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9j YXRpb25fZW50cnkgKnJlbG9jLAorCSAgIHVpbnQzMl90IGdlbV9oYW5kbGUsIHVpbnQzMl90IG9m ZnNldCwKKwkgICB1aW50MzJfdCByZWFkX2RvbWFpbnMsIHVpbnQzMl90IHdyaXRlX2RvbWFpbnMp Cit7CisJcmVsb2MtPnRhcmdldF9oYW5kbGUgPSBnZW1faGFuZGxlOworCXJlbG9jLT5kZWx0YSA9 IDA7CisJcmVsb2MtPm9mZnNldCA9IG9mZnNldCAqIHNpemVvZih1aW50MzJfdCk7CisJcmVsb2Mt PnByZXN1bWVkX29mZnNldCA9IDA7CisJcmVsb2MtPnJlYWRfZG9tYWlucyA9IHJlYWRfZG9tYWlu czsKKwlyZWxvYy0+d3JpdGVfZG9tYWluID0gd3JpdGVfZG9tYWluczsKK30KKworLyoKKyAqIE5l ZWRzIHRvIGJlIGdsb2JhbC4gU2lnbmFsIGhhbmRsZXJzIGRvbid0IGFjY2VwdCBhcmd1bWVudHMK KyAqLworc3RhdGljIHVpbnQzMl90ICpiYXRjaDsKKworc3RhdGljIHVpbnQzMl90IGVtaXRfcmVj dXJzaXZlX2JhdGNoKGludCBmZCwgaW50IGVuZ2luZSwgdW5zaWduZWQgZGVwX2hhbmRsZSkKK3sK Kwljb25zdCBpbnQgZ2VuID0gaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKTsKKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBvYmpbMl07CisJc3RydWN0IGRybV9pOTE1 X2dlbV9yZWxvY2F0aW9uX2VudHJ5IHJlbG9jc1syXTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4 ZWNidWZmZXIyIGV4ZWNidWY7CisJdW5zaWduZWQgZW5naW5lc1sxNl07CisJdW5zaWduZWQgbmVu Z2luZSwgaGFuZGxlOworCWludCBpID0gMCwgcmVsb2NfY291bnQgPSAwLCBidWZfY291bnQgPSAw OworCisJYnVmX2NvdW50ID0gMDsKKwluZW5naW5lID0gMDsKKwlpZiAoZW5naW5lIDwgMCkgewor CQlmb3JfZWFjaF9lbmdpbmUoZmQsIGVuZ2luZSkKKwkJCWlmIChlbmdpbmUpCisJCQkJZW5naW5l c1tuZW5naW5lKytdID0gZW5naW5lOworCX0gZWxzZSB7CisJCWdlbV9yZXF1aXJlX3JpbmcoZmQs IGVuZ2luZSk7CisJCWVuZ2luZXNbbmVuZ2luZSsrXSA9IGVuZ2luZTsKKwl9CisJaWd0X3JlcXVp cmUobmVuZ2luZSk7CisKKwltZW1zZXQoJmV4ZWNidWYsIDAsIHNpemVvZihleGVjYnVmKSk7CisJ bWVtc2V0KG9iaiwgMCwgc2l6ZW9mKG9iaikpOworCW1lbXNldChyZWxvY3MsIDAsIHNpemVvZihy ZWxvY3MpKTsKKworCWV4ZWNidWYuYnVmZmVyc19wdHIgPSAodWludHB0cl90KSBvYmo7CisJaGFu ZGxlID0gZ2VtX2NyZWF0ZShmZCwgYm9fc2l6ZSk7CisJYmF0Y2ggPSBnZW1fbW1hcF9fZ3R0KGZk LCBoYW5kbGUsIGJvX3NpemUsIFBST1RfV1JJVEUpOworCWlndF9hc3NlcnQoYmF0Y2gpOworCWdl bV9zZXRfZG9tYWluKGZkLCBoYW5kbGUsCisJCQlJOTE1X0dFTV9ET01BSU5fR1RULCBJOTE1X0dF TV9ET01BSU5fR1RUKTsKKworCWlmIChnZW4gPj0gOCkgeworCQliYXRjaFtpKytdID0gTUlfQkFU Q0hfQlVGRkVSX1NUQVJUIHwgMSA8PCA4IHwgMTsKKwkJLyogcmVjdXJzZSAqLworCQlmaWxsX3Jl bG9jKCZyZWxvY3NbcmVsb2NfY291bnRdLCBoYW5kbGUsIGksCisJCQkgICBJOTE1X0dFTV9ET01B SU5fQ09NTUFORCwgMCk7CisJCWJhdGNoW2krK10gPSAwOworCQliYXRjaFtpKytdID0gMDsKKwl9 IGVsc2UgaWYgKGdlbiA+PSA2KSB7CisJCWJhdGNoW2krK10gPSBNSV9CQVRDSF9CVUZGRVJfU1RB UlQgfCAxIDw8IDg7CisJCS8qIHJlY3Vyc2UgKi8KKwkJZmlsbF9yZWxvYygmcmVsb2NzW3JlbG9j X2NvdW50XSwgaGFuZGxlLCBpLAorCQkJICAgSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQsIDApOwor CQliYXRjaFtpKytdID0gMDsKKwl9IGVsc2UgeworCQliYXRjaFtpKytdID0gTUlfQkFUQ0hfQlVG RkVSX1NUQVJUIHwgMiA8PCA2IHwKKwkJCSgoZ2VuIDwgNCkgPyAxIDogMCk7CisJCS8qIHJlY3Vy c2UgKi8KKwkJZmlsbF9yZWxvYygmcmVsb2NzW3JlbG9jX2NvdW50XSwgaGFuZGxlLCBpLAorCQkJ ICAgSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQsIDApOworCQliYXRjaFtpKytdID0gMDsKKwkJaWYg KGdlbiA8IDQpCisJCQlyZWxvY3NbcmVsb2NfY291bnRdLmRlbHRhID0gMTsKKwl9CisJcmVsb2Nf Y291bnQrKzsKKworCWlmIChkZXBfaGFuZGxlID4gMCkgeworCQlpZ3RfYXNzZXJ0KG5lbmdpbmUg PT0gMSk7CisJCS8qIGR1bW15IHdyaXRlIHRvIGRlcGVuZGVuY3kgKi8KKwkJZmlsbF9vYmplY3Qo Jm9ialtidWZfY291bnRdLCBkZXBfaGFuZGxlLCBOVUxMLCAwKTsKKwkJYnVmX2NvdW50Kys7CisK KwkJZmlsbF9yZWxvYygmcmVsb2NzW3JlbG9jX2NvdW50XSwgZGVwX2hhbmRsZSwgMjU2LAorCQkJ ICAgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwKKwkJCSAgIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIp OworCQlyZWxvY19jb3VudCsrOworCX0KKworCWZpbGxfb2JqZWN0KCZvYmpbYnVmX2NvdW50XSwg aGFuZGxlLCByZWxvY3MsIHJlbG9jX2NvdW50KTsKKwlidWZfY291bnQrKzsKKworCWZvciAoaSA9 IDA7IGkgPCBuZW5naW5lOyBpKyspIHsKKwkJZXhlY2J1Zi5mbGFncyAmPSB+RU5HSU5FX01BU0s7 CisJCWV4ZWNidWYuZmxhZ3MgPSBlbmdpbmVzW2ldOworCQlleGVjYnVmLmJ1ZmZlcl9jb3VudCA9 IGJ1Zl9jb3VudDsKKwkJZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKTsKKwl9CisKKwlyZXR1cm4g aGFuZGxlOworfQorCitzdGF0aWMgdm9pZCBzaWdpdGVyKGludCBzaWcsIHNpZ2luZm9fdCAqaW5m bywgdm9pZCAqYXJnKQoreworCSpiYXRjaCA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisJX19zeW5j X3N5bmNocm9uaXplKCk7Cit9CisKK3N0YXRpYyB0aW1lcl90IHNldHVwX2JhdGNoX2V4aXRfdGlt ZXIoaW50NjRfdCBucykKK3sKKwl0aW1lcl90IHRpbWVyOworCXN0cnVjdCBzaWdldmVudCBzZXY7 CisJc3RydWN0IHNpZ2FjdGlvbiBhY3Q7CisJc3RydWN0IGl0aW1lcnNwZWMgaXRzOworCisJbWVt c2V0KCZzZXYsIDAsIHNpemVvZihzZXYpKTsKKwlzZXYuc2lnZXZfbm90aWZ5ID0gU0lHRVZfU0lH TkFMIHwgU0lHRVZfVEhSRUFEX0lEOworCXNldi5zaWdldl9ub3RpZnlfdGhyZWFkX2lkID0gZ2V0 dGlkKCk7CisJc2V2LnNpZ2V2X3NpZ25vID0gU0lHUlRNSU4gKyAxOworCWlndF9hc3NlcnQodGlt ZXJfY3JlYXRlKENMT0NLX01PTk9UT05JQywgJnNldiwgJnRpbWVyKSA9PSAwKTsKKwlpZ3RfYXNz ZXJ0KHRpbWVyID4gMCk7CisKKwltZW1zZXQoJmFjdCwgMCwgc2l6ZW9mKGFjdCkpOworCWFjdC5z YV9zaWdhY3Rpb24gPSBzaWdpdGVyOworCWFjdC5zYV9mbGFncyA9IFNBX1NJR0lORk87CisJaWd0 X2Fzc2VydChzaWdhY3Rpb24oU0lHUlRNSU4gKyAxLCAmYWN0LCBOVUxMKSA9PSAwKTsKKworCW1l bXNldCgmaXRzLCAwLCBzaXplb2YoaXRzKSk7CisJaXRzLml0X3ZhbHVlLnR2X3NlYyA9IG5zIC8g TlNFQ19QRVJfU0VDOworCWl0cy5pdF92YWx1ZS50dl9uc2VjID0gbnMgJSBOU0VDX1BFUl9TRUM7 CisJaWd0X2Fzc2VydCh0aW1lcl9zZXR0aW1lKHRpbWVyLCAwLCAmaXRzLCBOVUxMKSA9PSAwKTsK KworCXJldHVybiB0aW1lcjsKK30KKworLyoqCisgKiBpZ3Rfc3Bpbl9iYXRjaF9uZXc6CisgKiBA ZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCisgKiBAbnM6IGFtb3VudCBvZiB0aW1l IGluIG5hbm9zZWNvbmRzIHRoZSBiYXRjaCBleGVjdXRlcyBhZnRlciB0ZXJtaW5hdGluZy4KKyAq ICAgICAgSWYgdmFsdWUgaXMgbGVzcyB0aGFuIDAsIGV4ZWN1dGUgYmF0Y2ggZm9yZXZlci4KKyAq IEBlbmdpbmU6IFJpbmcgdG8gZXhlY3V0ZSBiYXRjaCBPUidkIHdpdGggZXhlY2J1ZiBmbGFncy4g SWYgdmFsdWUgaXMgbGVzcworICogICAgICAgICAgdGhhbiAwLCBleGVjdXRlIG9uIGFsbCBhdmFp bGFibGUgcmluZ3MuCisgKiBAZGVwX2hhbmRsZTogaGFuZGxlIHRvIGEgYnVmZmVyIG9iamVjdCBk ZXBlbmRlbmN5LiBJZiBncmVhdGVyIHRoYW4gMCwgYWRkIGEKKyAqICAgICAgICAgICAgICByZWxv Y2F0aW9uIGVudHJ5IHRvIHRoaXMgYnVmZmVyIHdpdGhpbiB0aGUgYmF0Y2guCisgKgorICogU3Rh cnQgYSByZWN1cnNpdmUgYmF0Y2ggb24gYSByaW5nIHRoYXQgdGVybWluYXRlcyBhZnRlciBhbiBl eGFjdCBhbW91bnQKKyAqIG9mIHRpbWUgaGFzIGVsYXBzZWQuIEltbWVkaWF0ZWx5IHJldHVybnMg YSAjaWd0X3NwaW5fdCB0aGF0IGNvbnRhaW5zIHRoZQorICogYmF0Y2gncyBoYW5kbGUgdGhhdCBj YW4gYmUgd2FpdGVkIHVwb24uIFRoZSByZXR1cm5lZCBzdHJ1Y3R1cmUgbXVzdCBiZSBwYXNzZWQg dG8KKyAqIGlndF9zcGluX2JhdGNoX2ZyZWUoKSBmb3IgcG9zdC1wcm9jZXNzaW5nLgorICoKKyAq IFJldHVybnM6CisgKiBTdHJ1Y3R1cmUgd2l0aCBoZWxwZXIgaW50ZXJuYWwgc3RhdGUgZm9yIGln dF9zcGluX2JhdGNoX2ZyZWUoKS4KKyAqLworaWd0X3NwaW5fdCAqCitpZ3Rfc3Bpbl9iYXRjaF9u ZXcoaW50IGZkLCBpbnQ2NF90IG5zLCBpbnQgZW5naW5lLCB1bnNpZ25lZCBkZXBfaGFuZGxlKQor eworCXRpbWVyX3QgdGltZXI7CisJaWd0X3NwaW5fdCAqc3BpbiA9IGNhbGxvYygxLCBzaXplb2Yo c3RydWN0IGlndF9zcGluKSk7CisJdWludDMyX3QgaGFuZGxlID0gZW1pdF9yZWN1cnNpdmVfYmF0 Y2goZmQsIGVuZ2luZSwgZGVwX2hhbmRsZSk7CisJaW50NjRfdCB3YWl0X3RpbWVvdXQgPSAwOwor CWlndF9hc3NlcnRfZXEoZ2VtX3dhaXQoZmQsIGhhbmRsZSwgJndhaXRfdGltZW91dCksIC1FVElN RSk7CisKKwlzcGluLT5oYW5kbGUgPSBoYW5kbGU7CisJc3Bpbi0+YmF0Y2ggPSBiYXRjaDsKKwlz cGluLT50aW1lciA9IE5VTEw7CisJaWYgKG5zID09IDApIHsKKwkJKmJhdGNoID0gTUlfQkFUQ0hf QlVGRkVSX0VORDsKKwkJX19zeW5jX3N5bmNocm9uaXplKCk7CisJfSBlbHNlIGlmIChucyA+IDAp IHsKKwkJdGltZXIgPSBzZXR1cF9iYXRjaF9leGl0X3RpbWVyKG5zKTsKKwkJc3Bpbi0+dGltZXIg PSB0aW1lcjsKKwl9CisKKwlyZXR1cm4gc3BpbjsKK30KKworLyoqCisgKiBpZ3Rfc3Bpbl9iYXRj aF9mcmVlOgorICogQGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgorICogQGFyZzog c3BpbiBiYXRjaCBzdGF0ZSBmcm9tIGlndF9zcGluX2JhdGNoKCkKKyAqCisgKiBUaGlzIGZ1bmN0 aW9uIGRvZXMgdGhlIG5lY2Vzc2FyeSBwb3N0LXByb2Nlc3NpbmcgYWZ0ZXIgc3RhcnRpbmcgYSBy ZWN1cnNpdmUKKyAqIGJhdGNoIHdpdGggaWd0X3NwaW5fYmF0Y2goKS4KKyAqLwordm9pZCBpZ3Rf c3Bpbl9iYXRjaF9mcmVlKGludCBmZCwgaWd0X3NwaW5fdCAqYXJnKQoreworCWlmICghYXJnKQor CQlyZXR1cm47CisKKwlpZiAoYXJnLT5oYW5kbGUgPT0gMCkKKwkJcmV0dXJuOworCisJaWYgKGFy Zy0+dGltZXIgPiAwKQorCQl0aW1lcl9kZWxldGUoYXJnLT50aW1lcik7CisKKwlnZW1fY2xvc2Uo ZmQsIGFyZy0+aGFuZGxlKTsKKwltdW5tYXAoYXJnLT5iYXRjaCwgYm9fc2l6ZSk7CisJZnJlZShh cmcpOworfQorCisvKioKKyAqIGlndF9zcGluX2JhdGNoX3dhaXQ6CisgKiBAZmQ6IG9wZW4gaTkx NSBkcm0gZmlsZSBkZXNjcmlwdG9yCisgKiBAbnM6IGFtb3VudCBvZiB0aW1lIGluIG5hbm9zZWNv bmRzIHRoZSBiYXRjaCBleGVjdXRlcyBhZnRlciB0ZXJtaW5hdGluZy4KKyAqICAgICAgSWYgdmFs dWUgaXMgbGVzcyB0aGFuIDAsIGV4ZWN1dGUgYmF0Y2ggZm9yZXZlci4KKyAqIEBlbmdpbmU6IHJp bmcgdG8gZXhlY3V0ZSBiYXRjaCBPUidkIHdpdGggZXhlY2J1ZiBmbGFncy4gSWYgdmFsdWUgaXMg bGVzcworICogICAgICAgICAgdGhhbiAwLCBleGVjdXRlIG9uIGFsbCBhdmFpbGFibGUgcmluZ3Mu CisgKiBAZGVwX2hhbmRsZTogaGFuZGxlIHRvIGEgYnVmZmVyIG9iamVjdCBkZXBlbmRlbmN5LiBJ ZiBncmVhdGVyIHRoYW4gMCwgaW5jbHVkZQorICogICAgICAgICAgICAgIHRoaXMgYnVmZmVyIG9u IHRoZSB3YWl0IGRlcGVuZGVuY3kKKyAqCisgKiBUaGlzIGlzIHNpbWlsYXIgdG8gaWd0X3NwaW5f YmF0Y2hfbmV3KCksIGJ1dCB3YWl0cyBvbiB0aGUgcmVjdXJzaXZlIGJhdGNoIHRvIGZpbmlzaAor ICogaW5zdGVhZCBvZiByZXR1cm5pbmcgcmlnaHQgYXdheS4gVGhlIGZ1bmN0aW9uIGFsc28gZG9l cyB0aGUgbmVjZXNzYXJ5CisgKiBwb3N0LXByb2Nlc3NpbmcgYXV0b21hdGljYWxseSBpZiBzZXQg dG8gdGltZW91dC4KKyAqLwordm9pZCBpZ3Rfc3Bpbl9iYXRjaF93YWl0KGludCBmZCwgaW50NjRf dCBucywgaW50IGVuZ2luZSwgdW5zaWduZWQgZGVwX2hhbmRsZSkKK3sKKwlpZ3Rfc3Bpbl90ICpz cGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGZkLCBucywgZW5naW5lLCBkZXBfaGFuZGxlKTsKKwlp bnQ2NF90IHdhaXRfdGltZW91dCA9IG5zICsgKDAuNSAqIE5TRUNfUEVSX1NFQyk7CisJaWd0X2Fz c2VydF9lcShnZW1fd2FpdChmZCwgc3Bpbi0+aGFuZGxlLCAmd2FpdF90aW1lb3V0KSwgMCk7CisK KwlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGZkLCBzcGluKTsKK30KZGlmZiAtLWdpdCBhL2xpYi9pZ3Rf ZHVtbXlsb2FkLmggYi9saWIvaWd0X2R1bW15bG9hZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmYwNmU4NGIKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvaWd0X2R1bW15bG9h ZC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNiBJbnRlbCBDb3Jw b3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICog dG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFs bCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo ZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us IEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAq CisgKi8KKworI2lmbmRlZiBfX0lHVF9EVU1NWUxPQURfSF9fCisjZGVmaW5lIF9fSUdUX0RVTU1Z TE9BRF9IX18KKwordHlwZWRlZiBzdHJ1Y3QgaWd0X3NwaW4geworCXVuc2lnbmVkIGhhbmRsZTsK Kwl1aW50MzJfdCAqYmF0Y2g7CisJdGltZXJfdCB0aW1lcjsKK30gaWd0X3NwaW5fdDsKKworCitp Z3Rfc3Bpbl90ICoKK2lndF9zcGluX2JhdGNoX25ldyhpbnQgZmQsIGludDY0X3QgbnMsIGludCBl bmdpbmUsIHVuc2lnbmVkIGRlcF9oYW5kbGUpOworCit2b2lkIGlndF9zcGluX2JhdGNoX2ZyZWUo aW50IGZkLCBpZ3Rfc3Bpbl90ICphcmcpOworCit2b2lkIGlndF9zcGluX2JhdGNoX3dhaXQoaW50 IGZkLCBpbnQ2NF90IG5zLCBpbnQgZW5naW5lLCB1bnNpZ25lZCBkZXBfaGFuZGxlKTsKKworCisj ZW5kaWYgLyogX19JR1RfRFVNTVlMT0FEX0hfXyAqLwotLSAKMi43LjQKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=