From mboxrd@z Thu Jan 1 00:00:00 1970 From: Abdiel Janulgue Subject: [i-g-t PATCH v6 1/4] lib: add igt_dummyload Date: Mon, 14 Nov 2016 20:24:39 +0200 Message-ID: <1479147882-27003-2-git-send-email-abdiel.janulgue@linux.intel.com> References: <20161111161652.yucobtlspgf3lulu@phenom.ffwll.local> <1479147882-27003-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 43ED86E39A for ; Mon, 14 Nov 2016 10:28:44 +0000 (UTC) In-Reply-To: <1479147882-27003-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 djY6ICBBZGQgdGhpcyBsaWJyYXJ5IHRvIGRvY3MKCkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwu dmV0dGVyQGZmd2xsLmNoPgpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpT aWduZWQtb2ZmLWJ5OiBBYmRpZWwgSmFudWxndWUgPGFiZGllbC5qYW51bGd1ZUBsaW51eC5pbnRl bC5jb20+Ci0tLQogLi4uL2ludGVsLWdwdS10b29scy9pbnRlbC1ncHUtdG9vbHMtZG9jcy54bWwg ICAgICAgfCAgIDEgKwogbGliL01ha2VmaWxlLnNvdXJjZXMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDIgKwogbGliL2lndC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDEgKwogbGliL2lndF9kdW1teWxvYWQuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAyNzYgKysrKysrKysrKysrKysrKysrKysrCiBsaWIvaWd0X2R1bW15 bG9hZC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0MiArKysrCiA1IGZpbGVz IGNoYW5nZWQsIDMyMiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2lndF9k dW1teWxvYWQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pZ3RfZHVtbXlsb2FkLmgKCmRpZmYg LS1naXQgYS9kb2NzL3JlZmVyZW5jZS9pbnRlbC1ncHUtdG9vbHMvaW50ZWwtZ3B1LXRvb2xzLWRv Y3MueG1sIGIvZG9jcy9yZWZlcmVuY2UvaW50ZWwtZ3B1LXRvb2xzL2ludGVsLWdwdS10b29scy1k b2NzLnhtbAppbmRleCBjODYyZjJhLi41NTkwMmFiIDEwMDY0NAotLS0gYS9kb2NzL3JlZmVyZW5j ZS9pbnRlbC1ncHUtdG9vbHMvaW50ZWwtZ3B1LXRvb2xzLWRvY3MueG1sCisrKyBiL2RvY3MvcmVm ZXJlbmNlL2ludGVsLWdwdS10b29scy9pbnRlbC1ncHUtdG9vbHMtZG9jcy54bWwKQEAgLTMyLDYg KzMyLDcgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvaW50ZWxfaW8ueG1sIi8+CiAgICAg PHhpOmluY2x1ZGUgaHJlZj0ieG1sL2lndF92YzQueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJl Zj0ieG1sL2lndF92Z2VtLnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pZ3RfZHVt bXlsb2FkLnhtbCIvPgogICA8L2NoYXB0ZXI+CiAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pZ3Rf dGVzdF9wcm9ncmFtcy54bWwiLz4KIApkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMg Yi9saWIvTWFrZWZpbGUuc291cmNlcwppbmRleCBlOGUyNzdiLi43ZmM1ZWMyIDEwMDY0NAotLS0g YS9saWIvTWFrZWZpbGUuc291cmNlcworKysgYi9saWIvTWFrZWZpbGUuc291cmNlcwpAQCAtNzUs NiArNzUsOCBAQCBsaWJfc291cmNlX2xpc3QgPQkgCVwKIAlpZ3RfZHJhdy5oCQlcCiAJaWd0X3Bt LmMJCVwKIAlpZ3RfcG0uaAkJXAorCWlndF9kdW1teWxvYWQuYwkJXAorCWlndF9kdW1teWxvYWQu aAkJXAogCXV3aWxkbWF0L3V3aWxkbWF0LmgJXAogCXV3aWxkbWF0L3V3aWxkbWF0LmMJXAogCSQo TlVMTCkKZGlmZiAtLWdpdCBhL2xpYi9pZ3QuaCBiL2xpYi9pZ3QuaAppbmRleCBkNzUxZjI0Li5h MDAyOGQ1IDEwMDY0NAotLS0gYS9saWIvaWd0LmgKKysrIGIvbGliL2lndC5oCkBAIC0zMiw2ICsz Miw3IEBACiAjaW5jbHVkZSAiaWd0X2NvcmUuaCIKICNpbmNsdWRlICJpZ3RfZGVidWdmcy5oIgog I2luY2x1ZGUgImlndF9kcmF3LmgiCisjaW5jbHVkZSAiaWd0X2R1bW15bG9hZC5oIgogI2luY2x1 ZGUgImlndF9mYi5oIgogI2luY2x1ZGUgImlndF9ndC5oIgogI2luY2x1ZGUgImlndF9rbXMuaCIK ZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZHVtbXlsb2FkLmMgYi9saWIvaWd0X2R1bW15bG9hZC5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MzRmZDUKLS0tIC9kZXYvbnVsbAor KysgYi9saWIvaWd0X2R1bW15bG9hZC5jCkBAIC0wLDAgKzEsMjc2IEBACisvKgorICogQ29weXJp Z2h0IMKpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVi eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICog Y29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg KHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw ZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1 YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5l eHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJz dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FS RSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBS RVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFV VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH RVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisg KiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpbmNsdWRlICJpZ3QuaCIKKyNpbmNsdWRl ICJpZ3RfZHVtbXlsb2FkLmgiCisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHNpZ25hbC5o PgorI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisKKy8qKgorICogU0VDVElPTjppZ3RfZHVtbXls b2FkCisgKiBAc2hvcnRfZGVzY3JpcHRpb246IExpYnJhcnkgZm9yIHN1Ym1pdHRpbmcgR1BVIHdv cmtsb2FkcworICogQHRpdGxlOiBEdW1teWxvYWQKKyAqIEBpbmNsdWRlOiBpZ3QuaAorICoKKyAq IEEgbG90IG9mIGlndCB0ZXN0Y2FzZXMgbmVlZCBzb21lIEdQVSB3b3JrbG9hZCB0byBtYWtlIHN1 cmUgYSByYWNlIHdpbmRvdyBpcworICogYmlnIGVub3VnaC4gVW5mb3J0dW5hdGVseSBoYXZpbmcg YSBmaXhlZCBhbW91bnQgb2Ygd29ya2xvYWQgbGVhZHMgdG8KKyAqIHNwdXJpb3VzIHRlc3QgZmFp bHVyZXMgb3Igb3ZlcnRseSBsb25nIHJ1bnRpbWVzIG9uIHNvbWUgZmFzdC9zbG93IHBsYXRmb3Jt cy4KKyAqIFRoaXMgbGlicmFyeSBjb250YWlucyBmdW5jdGlvbmFsaXR5IHRvIHN1Ym1pdCBHUFUg d29ya2xvYWRzIHRoYXQgc2hvdWxkCisgKiBjb25zdW1lIGV4YWN0bHkgYSBzcGVjaWZpYyBhbW91 bnQgb2YgdGltZS4KKyAqLworCisjZGVmaW5lIE5TRUNfUEVSX1NFQyAxMDAwMDAwMDAwTAorCisj ZGVmaW5lIGdldHRpZCgpIHN5c2NhbGwoX19OUl9nZXR0aWQpCisjZGVmaW5lIHNpZ2V2X25vdGlm eV90aHJlYWRfaWQgX3NpZ2V2X3VuLl90aWQKKworI2RlZmluZSBMT0NBTF9JOTE1X0VYRUNfQlNE X1NISUZUICAgICAgKDEzKQorI2RlZmluZSBMT0NBTF9JOTE1X0VYRUNfQlNEX01BU0sgICAgICAg KDMgPDwgTE9DQUxfSTkxNV9FWEVDX0JTRF9TSElGVCkKKworI2RlZmluZSBFTkdJTkVfTUFTSyAg KEk5MTVfRVhFQ19SSU5HX01BU0sgfCBMT0NBTF9JOTE1X0VYRUNfQlNEX01BU0spCisKK3N0YXRp YyB2b2lkCitmaWxsX29iamVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqb2Jq LCB1aW50MzJfdCBnZW1faGFuZGxlLAorCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRp b25fZW50cnkgKnJlbG9jcywgdWludDMyX3QgY291bnQpCit7CisJbWVtc2V0KG9iaiwgMCwgc2l6 ZW9mKCpvYmopKTsKKwlvYmotPmhhbmRsZSA9IGdlbV9oYW5kbGU7CisJb2JqLT5yZWxvY2F0aW9u X2NvdW50ID0gY291bnQ7CisJb2JqLT5yZWxvY3NfcHRyID0gKHVpbnRwdHJfdClyZWxvY3M7Cit9 CisKK3N0YXRpYyB2b2lkCitmaWxsX3JlbG9jKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlv bl9lbnRyeSAqcmVsb2MsCisJICAgdWludDMyX3QgZ2VtX2hhbmRsZSwgdWludDMyX3Qgb2Zmc2V0 LAorCSAgIHVpbnQzMl90IHJlYWRfZG9tYWlucywgdWludDMyX3Qgd3JpdGVfZG9tYWlucykKK3sK KwlyZWxvYy0+dGFyZ2V0X2hhbmRsZSA9IGdlbV9oYW5kbGU7CisJcmVsb2MtPmRlbHRhID0gMDsK KwlyZWxvYy0+b2Zmc2V0ID0gb2Zmc2V0ICogc2l6ZW9mKHVpbnQzMl90KTsKKwlyZWxvYy0+cHJl c3VtZWRfb2Zmc2V0ID0gMDsKKwlyZWxvYy0+cmVhZF9kb21haW5zID0gcmVhZF9kb21haW5zOwor CXJlbG9jLT53cml0ZV9kb21haW4gPSB3cml0ZV9kb21haW5zOworfQorCisKK3N0YXRpYyB1aW50 MzJfdCAqYmF0Y2g7CisKK3N0YXRpYyB1aW50MzJfdCBlbWl0X3JlY3Vyc2l2ZV9iYXRjaChpbnQg ZmQsIGludCBlbmdpbmUsIHVuc2lnbmVkIGRlcF9oYW5kbGUpCit7CisJY29uc3QgaW50IGdlbiA9 IGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSk7CisJc3RydWN0IGRybV9pOTE1X2dl bV9leGVjX29iamVjdDIgb2JqWzJdOworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9l bnRyeSByZWxvY3NbMl07CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVm OworCXVuc2lnbmVkIGVuZ2luZXNbMTZdOworCXVuc2lnbmVkIG5lbmdpbmUsIGhhbmRsZTsKKwlp bnQgaSA9IDAsIHJlbG9jX2NvdW50ID0gMCwgYnVmX2NvdW50ID0gMDsKKworCWJ1Zl9jb3VudCA9 IDA7CisJbmVuZ2luZSA9IDA7CisJaWYgKGVuZ2luZSA8IDApIHsKKwkJZm9yX2VhY2hfZW5naW5l KGZkLCBlbmdpbmUpCisJCQlpZiAoZW5naW5lKQorCQkJCWVuZ2luZXNbbmVuZ2luZSsrXSA9IGVu Z2luZTsKKwl9IGVsc2UgeworCQlpZ3RfcmVxdWlyZShnZW1faGFzX3JpbmcoZmQsIGVuZ2luZSkp OworCQllbmdpbmVzW25lbmdpbmUrK10gPSBlbmdpbmU7CisJfQorCWlndF9yZXF1aXJlKG5lbmdp bmUpOworCisJbWVtc2V0KCZleGVjYnVmLCAwLCBzaXplb2YoZXhlY2J1ZikpOworCW1lbXNldChv YmosIDAsIHNpemVvZihvYmopKTsKKwltZW1zZXQocmVsb2NzLCAwLCBzaXplb2YocmVsb2NzKSk7 CisKKwlleGVjYnVmLmJ1ZmZlcnNfcHRyID0gKHVpbnRwdHJfdCkgb2JqOworCWhhbmRsZSA9IGdl bV9jcmVhdGUoZmQsIDQwOTYpOworCWJhdGNoID0gZ2VtX21tYXBfX2d0dChmZCwgaGFuZGxlLCA0 MDk2LCBQUk9UX1dSSVRFKTsKKwlnZW1fc2V0X2RvbWFpbihmZCwgaGFuZGxlLAorCQkJSTkxNV9H RU1fRE9NQUlOX0dUVCwgSTkxNV9HRU1fRE9NQUlOX0dUVCk7CisKKwlpZiAobmVuZ2luZSA9PSAx ICYmIGRlcF9oYW5kbGUgPiAwKSB7CisJCS8qIGR1bW15IHdyaXRlIHRvIGRlcGVuZGVuY3kgKi8K KwkJZmlsbF9vYmplY3QoJm9ialtidWZfY291bnRdLCBkZXBfaGFuZGxlLCBOVUxMLCAwKTsKKwkJ YnVmX2NvdW50Kys7CisKKwkJZmlsbF9yZWxvYygmcmVsb2NzW3JlbG9jX2NvdW50XSwgZGVwX2hh bmRsZSwgaSwKKwkJCSAgIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIsCisJCQkgICBJOTE1X0dFTV9E T01BSU5fUkVOREVSKTsKKwkJYmF0Y2hbaSsrXSA9IDA7IC8qIHJlbG9jICovCisJCXJlbG9jX2Nv dW50Kys7CisJCWJhdGNoW2krK10gPSBNSV9OT09QOworCX0KKworCWlmIChnZW4gPj0gOCkgewor CQliYXRjaFtpKytdID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwgMSA8PCA4IHwgMTsKKwkJLyog cmVjdXJzZSAqLworCQlmaWxsX3JlbG9jKCZyZWxvY3NbcmVsb2NfY291bnRdLCBoYW5kbGUsIGks CisJCQkgICBJOTE1X0dFTV9ET01BSU5fQ09NTUFORCwgMCk7CisJCWJhdGNoW2krK10gPSAwOwor CQliYXRjaFtpKytdID0gMDsKKwl9IGVsc2UgaWYgKGdlbiA+PSA2KSB7CisJCWJhdGNoW2krK10g PSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCAxIDw8IDg7CisJCS8qIHJlY3Vyc2UgKi8KKwkJZmls bF9yZWxvYygmcmVsb2NzW3JlbG9jX2NvdW50XSwgaGFuZGxlLCBpLAorCQkJICAgSTkxNV9HRU1f RE9NQUlOX0NPTU1BTkQsIDApOworCQliYXRjaFtpKytdID0gMDsKKwl9IGVsc2UgeworCQliYXRj aFtpKytdID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwgMiA8PCA2IHwKKwkJCSgoZ2VuIDwgNCkg PyAxIDogMCk7CisJCS8qIHJlY3Vyc2UgKi8KKwkJZmlsbF9yZWxvYygmcmVsb2NzW3JlbG9jX2Nv dW50XSwgaGFuZGxlLCBpLAorCQkJICAgSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQsIDApOworCQli YXRjaFtpKytdID0gMDsKKwkJaWYgKGdlbiA8IDQpCisJCQlyZWxvY3NbcmVsb2NfY291bnRdLmRl bHRhID0gMTsKKwl9CisJcmVsb2NfY291bnQrKzsKKworCWZpbGxfb2JqZWN0KCZvYmpbYnVmX2Nv dW50XSwgaGFuZGxlLCByZWxvY3MsIHJlbG9jX2NvdW50KTsKKwlidWZfY291bnQrKzsKKworCWZv ciAoaSA9IDA7IGkgPCBuZW5naW5lOyBpKyspIHsKKwkJZXhlY2J1Zi5mbGFncyAmPSB+RU5HSU5F X01BU0s7CisJCWV4ZWNidWYuZmxhZ3MgPSBlbmdpbmVzW2ldOworCQlleGVjYnVmLmJ1ZmZlcl9j b3VudCA9IGJ1Zl9jb3VudDsKKwkJZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKTsKKwl9CisKKwly ZXR1cm4gaGFuZGxlOworfQorCitzdGF0aWMgdm9pZCBzaWdpdGVyKGludCBzaWcsIHNpZ2luZm9f dCAqaW5mbywgdm9pZCAqYXJnKQoreworCSpiYXRjaCA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisJ X19zeW5jX3N5bmNocm9uaXplKCk7Cit9CisKK3N0YXRpYyB0aW1lcl90IHNldHVwX2JhdGNoX2V4 aXRfdGltZXIoaW50NjRfdCBucykKK3sKKwl0aW1lcl90IHRpbWVyOworCXN0cnVjdCBzaWdldmVu dCBzZXY7CisJc3RydWN0IHNpZ2FjdGlvbiBhY3Q7CisJc3RydWN0IGl0aW1lcnNwZWMgaXRzOwor CisJbWVtc2V0KCZzZXYsIDAsIHNpemVvZihzZXYpKTsKKwlzZXYuc2lnZXZfbm90aWZ5ID0gU0lH RVZfU0lHTkFMIHwgU0lHRVZfVEhSRUFEX0lEOworCXNldi5zaWdldl9ub3RpZnlfdGhyZWFkX2lk ID0gZ2V0dGlkKCk7CisJc2V2LnNpZ2V2X3NpZ25vID0gU0lHUlRNSU4gKyAxOworCWlndF9hc3Nl cnQodGltZXJfY3JlYXRlKENMT0NLX01PTk9UT05JQywgJnNldiwgJnRpbWVyKSA9PSAwKTsKKwlp Z3RfYXNzZXJ0KHRpbWVyID4gMCk7CisKKwltZW1zZXQoJmFjdCwgMCwgc2l6ZW9mKGFjdCkpOwor CWFjdC5zYV9zaWdhY3Rpb24gPSBzaWdpdGVyOworCWFjdC5zYV9mbGFncyA9IFNBX1NJR0lORk87 CisJaWd0X2Fzc2VydChzaWdhY3Rpb24oU0lHUlRNSU4gKyAxLCAmYWN0LCBOVUxMKSA9PSAwKTsK KworCW1lbXNldCgmaXRzLCAwLCBzaXplb2YoaXRzKSk7CisJaXRzLml0X3ZhbHVlLnR2X3NlYyA9 IG5zIC8gTlNFQ19QRVJfU0VDOworCWl0cy5pdF92YWx1ZS50dl9uc2VjID0gbnMgJSBOU0VDX1BF Ul9TRUM7CisJaWd0X2Fzc2VydCh0aW1lcl9zZXR0aW1lKHRpbWVyLCAwLCAmaXRzLCBOVUxMKSA9 PSAwKTsKKworCXJldHVybiB0aW1lcjsKK30KKworLyoqCisgKiBpZ3Rfc3Bpbl9iYXRjaDoKKyAq IEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKKyAqIEBuczogYW1vdW50IG9mIHRp bWUgaW4gbmFub3NlY29uZHMgdGhlIGJhdGNoIGV4ZWN1dGVzIGFmdGVyIHRlcm1pbmF0aW5nLgor ICogICAgICBJZiB2YWx1ZSBpcyBsZXNzIHRoYW4gMCwgZXhlY3V0ZSBiYXRjaCBmb3JldmVyLgor ICogQGVuZ2luZTogUmluZyB0byBleGVjdXRlIGJhdGNoIE9SJ2Qgd2l0aCBleGVjYnVmIGZsYWdz LiBJZiB2YWx1ZSBpcyBsZXNzCisgKiAgICAgICAgICB0aGFuIDAsIGV4ZWN1dGUgb24gYWxsIGF2 YWlsYWJsZSByaW5ncy4KKyAqIEBkZXBfaGFuZGxlOiBoYW5kbGUgdG8gYSBidWZmZXIgb2JqZWN0 IGRlcGVuZGVuY3kuIElmIGdyZWF0ZXIgdGhhbiAwLCBhZGQgYQorICogICAgICAgICAgICAgIHJl bG9jYXRpb24gZW50cnkgdG8gdGhpcyBidWZmZXIgd2l0aGluIHRoZSBiYXRjaC4KKyAqCisgKiBT dGFydCBhIHJlY3Vyc2l2ZSBiYXRjaCBvbiBhIHJpbmcgdGhhdCB0ZXJtaW5hdGVzIGFmdGVyIGFu IGV4YWN0IGFtb3VudAorICogb2YgdGltZSBoYXMgZWxhcHNlZC4gSW1tZWRpYXRlbHkgcmV0dXJu cyBhICNpZ3Rfc3Bpbl90IHRoYXQgY29udGFpbnMgdGhlCisgKiBiYXRjaCdzIGhhbmRsZSB0aGF0 IGNhbiBiZSB3YWl0ZWQgdXBvbi4gVGhlIHJldHVybmVkIHN0cnVjdHVyZSBtdXN0IGJlIHBhc3Nl ZCB0bworICogaWd0X3Bvc3Rfc3Bpbl9iYXRjaCgpIGZvciBwb3N0LXByb2Nlc3NpbmcuCisgKgor ICogUmV0dXJuczoKKyAqIFN0cnVjdHVyZSB3aXRoIGhlbHBlciBpbnRlcm5hbCBzdGF0ZSBmb3Ig aWd0X3Bvc3Rfc3Bpbl9iYXRjaCgpLgorICovCitpZ3Rfc3Bpbl90IGlndF9zcGluX2JhdGNoKGlu dCBmZCwgaW50NjRfdCBucywgaW50IGVuZ2luZSwgdW5zaWduZWQgZGVwX2hhbmRsZSkKK3sKKwl0 aW1lcl90IHRpbWVyOworCXVpbnQzMl90IGhhbmRsZSA9IGVtaXRfcmVjdXJzaXZlX2JhdGNoKGZk LCBlbmdpbmUsIGRlcF9oYW5kbGUpOworCWludDY0X3Qgd2FpdF90aW1lb3V0ID0gMDsKKwlpZ3Rf YXNzZXJ0X2VxKGdlbV93YWl0KGZkLCBoYW5kbGUsICZ3YWl0X3RpbWVvdXQpLCAtRVRJTUUpOwor CisJaWYgKG5zIDwgMSkgeworCQlpZiAobnMgPT0gMCkgeworCQkJKmJhdGNoID0gTUlfQkFUQ0hf QlVGRkVSX0VORDsKKwkJCV9fc3luY19zeW5jaHJvbml6ZSgpOworCQkJcmV0dXJuIChpZ3Rfc3Bp bl90KXsgaGFuZGxlLCBiYXRjaCwgMH07CisJCX0KKwkJcmV0dXJuIChpZ3Rfc3Bpbl90KXsgaGFu ZGxlLCBiYXRjaCwgMCB9OworCX0KKwl0aW1lciA9IHNldHVwX2JhdGNoX2V4aXRfdGltZXIobnMp OworCisJcmV0dXJuIChpZ3Rfc3Bpbl90KXsgaGFuZGxlLCBiYXRjaCwgdGltZXIgfTsKK30KKwor LyoqCisgKiBpZ3RfcG9zdF9zcGluX2JhdGNoOgorICogQGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUg ZGVzY3JpcHRvcgorICogQGFyZzogc3BpbiBiYXRjaCBzdGF0ZSBmcm9tIGlndF9zcGluX2JhdGNo KCkKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIG5lY2Vzc2FyeSBwb3N0LXByb2Nlc3Np bmcgYWZ0ZXIgc3RhcnRpbmcgYSByZWN1cnNpdmUKKyAqIGJhdGNoIHdpdGggaWd0X3NwaW5fYmF0 Y2goKS4KKyAqLwordm9pZCBpZ3RfcG9zdF9zcGluX2JhdGNoKGludCBmZCwgaWd0X3NwaW5fdCBh cmcpCit7CisJaWYgKGFyZy5oYW5kbGUgPT0gMCkKKwkJcmV0dXJuOworCisJaWYgKGFyZy50aW1l ciA+IDApCisJCXRpbWVyX2RlbGV0ZShhcmcudGltZXIpOworCisJZ2VtX2Nsb3NlKGZkLCBhcmcu aGFuZGxlKTsKKwltdW5tYXAoYXJnLmJhdGNoLCA0MDk2KTsKK30KKworCisvKioKKyAqIGlndF9z cGluX2JhdGNoX3dhaXQ6CisgKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCisg KiBAbnM6IGFtb3VudCBvZiB0aW1lIGluIG5hbm9zZWNvbmRzIHRoZSBiYXRjaCBleGVjdXRlcyBh ZnRlciB0ZXJtaW5hdGluZy4KKyAqICAgICAgSWYgdmFsdWUgaXMgbGVzcyB0aGFuIDAsIGV4ZWN1 dGUgYmF0Y2ggZm9yZXZlci4KKyAqIEBlbmdpbmU6IHJpbmcgdG8gZXhlY3V0ZSBiYXRjaCBPUidk IHdpdGggZXhlY2J1ZiBmbGFncy4gSWYgdmFsdWUgaXMgbGVzcworICogICAgICAgICAgdGhhbiAw LCBleGVjdXRlIG9uIGFsbCBhdmFpbGFibGUgcmluZ3MuCisgKiBAZGVwX2hhbmRsZTogaGFuZGxl IHRvIGEgYnVmZmVyIG9iamVjdCBkZXBlbmRlbmN5LiBJZiBncmVhdGVyIHRoYW4gMCwgaW5jbHVk ZQorICogICAgICAgICAgICAgIHRoaXMgYnVmZmVyIG9uIHRoZSB3YWl0IGRlcGVuZGVuY3kKKyAq CisgKiBUaGlzIGlzIHNpbWlsYXIgdG8gaWd0X3NwaW5fYmF0Y2goKSwgYnV0IHdhaXRzIG9uIHRo ZSByZWN1cnNpdmUgYmF0Y2ggdG8gZmluaXNoCisgKiBpbnN0ZWFkIG9mIHJldHVybmluZyByaWdo dCBhd2F5LiBUaGUgZnVuY3Rpb24gYWxzbyBkb2VzIHRoZSBuZWNlc3NhcnkKKyAqIHBvc3QtcHJv Y2Vzc2luZyBhdXRvbWF0aWNhbGx5IGlmIHNldCB0byB0aW1lb3V0LgorICovCit2b2lkIGlndF9z cGluX2JhdGNoX3dhaXQoaW50IGZkLCBpbnQ2NF90IG5zLCBpbnQgZW5naW5lLCB1bnNpZ25lZCBk ZXBfaGFuZGxlKQoreworCWlndF9zcGluX3Qgc3BpbiA9IGlndF9zcGluX2JhdGNoKGZkLCBucywg ZW5naW5lLCBkZXBfaGFuZGxlKTsKKwlpbnQ2NF90IHdhaXRfdGltZW91dCA9IG5zICsgKDAuNSAq IE5TRUNfUEVSX1NFQyk7CisJaWd0X2Fzc2VydF9lcShnZW1fd2FpdChmZCwgc3Bpbi5oYW5kbGUs ICZ3YWl0X3RpbWVvdXQpLCAwKTsKKworCWlndF9wb3N0X3NwaW5fYmF0Y2goZmQsIHNwaW4pOwor fQpkaWZmIC0tZ2l0IGEvbGliL2lndF9kdW1teWxvYWQuaCBiL2xpYi9pZ3RfZHVtbXlsb2FkLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzllYWQyYwotLS0gL2Rldi9udWxs CisrKyBiL2xpYi9pZ3RfZHVtbXlsb2FkLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHly aWdodCDCqSAyMDE2IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJl YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAq IGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz ICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z ZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg cGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBz dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBu ZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vi c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ UkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBB VVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1B R0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRS QUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwor ICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaWZuZGVmIF9fSUdUX0RVTU1ZTE9BRF9I X18KKyNkZWZpbmUgX19JR1RfRFVNTVlMT0FEX0hfXworCit0eXBlZGVmIHN0cnVjdCBpZ3Rfc3Bp biB7CisJdW5zaWduZWQgaGFuZGxlOworCXVpbnQzMl90ICpiYXRjaDsKKwl0aW1lcl90IHRpbWVy OworfSBpZ3Rfc3Bpbl90OworCisKK2lndF9zcGluX3QgaWd0X3NwaW5fYmF0Y2goaW50IGZkLCBp bnQ2NF90IG5zLCBpbnQgZW5naW5lLCB1bnNpZ25lZCBkZXBfaGFuZGxlKTsKKwordm9pZCBpZ3Rf cG9zdF9zcGluX2JhdGNoKGludCBmZCwgaWd0X3NwaW5fdCBhcmcpOworCit2b2lkIGlndF9zcGlu X2JhdGNoX3dhaXQoaW50IGZkLCBpbnQ2NF90IG5zLCBpbnQgZW5naW5lLCB1bnNpZ25lZCBkZXBf aGFuZGxlKTsKKworCisjZW5kaWYgLyogX19JR1RfRFVNTVlMT0FEX0hfXyAqLwotLSAKMi43LjQK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=