From mboxrd@z Thu Jan 1 00:00:00 1970 From: Abdiel Janulgue Subject: [i-g-t PATCH v14 3/6] lib: add igt_dummyload Date: Fri, 25 Nov 2016 16:41:14 +0200 Message-ID: <1480084874-12943-2-git-send-email-abdiel.janulgue@linux.intel.com> References: <20161125115456.GL26057@nuc-i3427.alporthouse.com> <1480084874-12943-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 mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 64C2F89D4D for ; Fri, 25 Nov 2016 14:41:25 +0000 (UTC) In-Reply-To: <1480084874-12943-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 b3Zlcmx5IGxvbmcgcnVudGltZXMKb24gc29tZSBmYXN0L3Nsb3cgcGxhdGZvcm1zLiBUaGlzIGxp YnJhcnkgY29udGFpbnMgZnVuY3Rpb25hbGl0eQp0byBzdWJtaXQgR1BVIHdvcmtsb2FkcyB0aGF0 IHNob3VsZCBjb25zdW1lIGV4YWN0bHkgYSBzcGVjaWZpYwphbW91bnQgb2YgdGltZS4KCnYxMDog U3BsaXQgdGltZW91dCBmdW5jdGlvbi4gQ2xhcmlmeSBmdW5jdGlvbiBuYW1lcyAoQ2hyaXMpCnYx MTogRnJvbSBDaHJpczoKICAgICAqIEFkZCBnZW1fcXVpZXNjZW50X2dwdSBleGl0IGhhbmRsZXIK ICAgICAqIFVzZSBnZW1fYm9fYnVzeQogICAgICogU2tpcCBzcGluLT5oYW5kbGUgPiAwIGNoZWNr cwogICAgICogRW5zdXJlIHRlcm1pbmF0ZSBiYXRjaCBvbiBmcmVlCiAgICAgKiBSZW1vdmUgaWd0 X3NwaW5fYmF0Y2hfd2FpdAogICAgICogUmVtb3ZlIHNpbmdsZS1yaW5nIGxpbWl0YXRpb24KdjEy OiBIb29rIGludG8gZ2VtX3F1aWVzY2VudF9ncHUgZXhpdCBoYW5kbGVyIHRvIGlkbGUgdGhlIEdQ VSBpZgogICAgIHRoZSB1c2VyIHRlcm1pbmF0ZXMgdGVzdHMgd2l0aCBeQwp2MTM6IFVzZSB0aGUg a2VybmVsJ3MgbGlzdCB0byBoYW5kbGUgc3Bpbm5lciBvYmplY3RzCnYxNDogVXNlIG11bHRpcGxl IHNpZ25hbHMsIGN5Y2xlIGF2YWlsYWJsZSBzaWduYWxzIGZyb20KICAgICBTSUdSVE1JTiB0byBT SUdSVE1BWC4gUmV1c2UgbGlzdCBkZWZpbml0aW9uIGZyb20gQ2hhbWVsaXVtCiAgICAgcGF0Y2hl cy4KCkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgpDYzogVmlsbGUg U3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IENocmlzIFdpbHNv biA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogdG9tZXVAdG9tZXV2aXpvc28ubmV0ClJl dmlld2VkLWJ5OiBUb21ldSBWaXpvc28gPHRvbWV1LnZpem9zb0Bjb2xsYWJvcmEuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBBYmRpZWwgSmFudWxndWUgPGFiZGllbC5qYW51bGd1ZUBsaW51eC5pbnRlbC5j b20+Ci0tLQogLi4uL2ludGVsLWdwdS10b29scy9pbnRlbC1ncHUtdG9vbHMtZG9jcy54bWwgICAg ICAgfCAgIDEgKwogbGliL01ha2VmaWxlLnNvdXJjZXMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDIgKwogbGliL2RybXRlc3QuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDMgKwogbGliL2lndC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDEgKwogbGliL2lndF9kdW1teWxvYWQuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAzMDAgKysrKysrKysrKysrKysrKysrKysrCiBsaWIvaWd0X2R1bW15 bG9hZC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0OSArKysrCiA2IGZpbGVz IGNoYW5nZWQsIDM1NiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2lndF9k dW1teWxvYWQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pZ3RfZHVtbXlsb2FkLmgKCmRpZmYg LS1naXQgYS9kb2NzL3JlZmVyZW5jZS9pbnRlbC1ncHUtdG9vbHMvaW50ZWwtZ3B1LXRvb2xzLWRv Y3MueG1sIGIvZG9jcy9yZWZlcmVuY2UvaW50ZWwtZ3B1LXRvb2xzL2ludGVsLWdwdS10b29scy1k b2NzLnhtbAppbmRleCBjODYyZjJhLi41NTkwMmFiIDEwMDY0NAotLS0gYS9kb2NzL3JlZmVyZW5j ZS9pbnRlbC1ncHUtdG9vbHMvaW50ZWwtZ3B1LXRvb2xzLWRvY3MueG1sCisrKyBiL2RvY3MvcmVm ZXJlbmNlL2ludGVsLWdwdS10b29scy9pbnRlbC1ncHUtdG9vbHMtZG9jcy54bWwKQEAgLTMyLDYg KzMyLDcgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvaW50ZWxfaW8ueG1sIi8+CiAgICAg PHhpOmluY2x1ZGUgaHJlZj0ieG1sL2lndF92YzQueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJl Zj0ieG1sL2lndF92Z2VtLnhtbCIvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pZ3RfZHVt bXlsb2FkLnhtbCIvPgogICA8L2NoYXB0ZXI+CiAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pZ3Rf dGVzdF9wcm9ncmFtcy54bWwiLz4KIApkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMg Yi9saWIvTWFrZWZpbGUuc291cmNlcwppbmRleCBlOGUyNzdiLi43ZmM1ZWMyIDEwMDY0NAotLS0g YS9saWIvTWFrZWZpbGUuc291cmNlcworKysgYi9saWIvTWFrZWZpbGUuc291cmNlcwpAQCAtNzUs NiArNzUsOCBAQCBsaWJfc291cmNlX2xpc3QgPQkgCVwKIAlpZ3RfZHJhdy5oCQlcCiAJaWd0X3Bt LmMJCVwKIAlpZ3RfcG0uaAkJXAorCWlndF9kdW1teWxvYWQuYwkJXAorCWlndF9kdW1teWxvYWQu aAkJXAogCXV3aWxkbWF0L3V3aWxkbWF0LmgJXAogCXV3aWxkbWF0L3V3aWxkbWF0LmMJXAogCSQo TlVMTCkKZGlmZiAtLWdpdCBhL2xpYi9kcm10ZXN0LmMgYi9saWIvZHJtdGVzdC5jCmluZGV4IDQ0 YWJjN2UuLmJlMWRjOTMgMTAwNjQ0Ci0tLSBhL2xpYi9kcm10ZXN0LmMKKysrIGIvbGliL2RybXRl c3QuYwpAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImlu dGVsX3JlZy5oIgogI2luY2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiCisjaW5jbHVkZSAiaWd0X2R1 bW15bG9hZC5oIgogCiAvKioKICAqIFNFQ1RJT046ZHJtdGVzdApAQCAtMTU5LDYgKzE2MCw4IEBA IHZvaWQgZ2VtX3F1aWVzY2VudF9ncHUoaW50IGZkKQogCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhl Y19vYmplY3QyIG9iajsKIAl1bnNpZ25lZCByaW5nOwogCisJaWd0X3Rlcm1pbmF0ZV9zcGluX2Jh dGNoZXMoKTsKKwogCW1lbXNldCgmb2JqLCAwLCBzaXplb2Yob2JqKSk7CiAJb2JqLmhhbmRsZSA9 IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwogCWdlbV93cml0ZShmZCwgb2JqLmhhbmRsZSwgMCwgJmJi ZSwgc2l6ZW9mKCZiYmUpKTsKZGlmZiAtLWdpdCBhL2xpYi9pZ3QuaCBiL2xpYi9pZ3QuaAppbmRl eCBkNzUxZjI0Li5hMDAyOGQ1IDEwMDY0NAotLS0gYS9saWIvaWd0LmgKKysrIGIvbGliL2lndC5o CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiaWd0X2NvcmUuaCIKICNpbmNsdWRlICJpZ3Rf ZGVidWdmcy5oIgogI2luY2x1ZGUgImlndF9kcmF3LmgiCisjaW5jbHVkZSAiaWd0X2R1bW15bG9h ZC5oIgogI2luY2x1ZGUgImlndF9mYi5oIgogI2luY2x1ZGUgImlndF9ndC5oIgogI2luY2x1ZGUg ImlndF9rbXMuaCIKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZHVtbXlsb2FkLmMgYi9saWIvaWd0X2R1 bW15bG9hZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzODhmNmUKLS0t IC9kZXYvbnVsbAorKysgYi9saWIvaWd0X2R1bW15bG9hZC5jCkBAIC0wLDAgKzEsMzAwIEBACisv KgorICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50 YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJl IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRo ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNs dWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFM TAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS IERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNpbmNsdWRlICJpZ3Qu aCIKKyNpbmNsdWRlICJpZ3RfZHVtbXlsb2FkLmgiCisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1 ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisKKy8qKgorICogU0VDVElP TjppZ3RfZHVtbXlsb2FkCisgKiBAc2hvcnRfZGVzY3JpcHRpb246IExpYnJhcnkgZm9yIHN1Ym1p dHRpbmcgR1BVIHdvcmtsb2FkcworICogQHRpdGxlOiBEdW1teWxvYWQKKyAqIEBpbmNsdWRlOiBp Z3QuaAorICoKKyAqIEEgbG90IG9mIGlndCB0ZXN0Y2FzZXMgbmVlZCBzb21lIEdQVSB3b3JrbG9h ZCB0byBtYWtlIHN1cmUgYSByYWNlIHdpbmRvdyBpcworICogYmlnIGVub3VnaC4gVW5mb3J0dW5h dGVseSBoYXZpbmcgYSBmaXhlZCBhbW91bnQgb2Ygd29ya2xvYWQgbGVhZHMgdG8KKyAqIHNwdXJp b3VzIHRlc3QgZmFpbHVyZXMgb3Igb3Zlcmx5IGxvbmcgcnVudGltZXMgb24gc29tZSBmYXN0L3Ns b3cgcGxhdGZvcm1zLgorICogVGhpcyBsaWJyYXJ5IGNvbnRhaW5zIGZ1bmN0aW9uYWxpdHkgdG8g c3VibWl0IEdQVSB3b3JrbG9hZHMgdGhhdCBzaG91bGQKKyAqIGNvbnN1bWUgZXhhY3RseSBhIHNw ZWNpZmljIGFtb3VudCBvZiB0aW1lLgorICovCisKKyNkZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0JT RF9TSElGVCAgICAgICgxMykKKyNkZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0JTRF9NQVNLICAgICAg ICgzIDw8IExPQ0FMX0k5MTVfRVhFQ19CU0RfU0hJRlQpCisKKyNkZWZpbmUgRU5HSU5FX01BU0sg IChJOTE1X0VYRUNfUklOR19NQVNLIHwgTE9DQUxfSTkxNV9FWEVDX0JTRF9NQVNLKQorCitzdGF0 aWMgY29uc3QgaW50IGJvX3NpemUgPSA0MDk2Oworc3RhdGljIHN0cnVjdCBpZ3RfbGlzdCBzcGlu X2xpc3QgPSB7ICYoc3Bpbl9saXN0KSwgJihzcGluX2xpc3QpIH07CitzdGF0aWMgaW50IHNwaW5f b2JqZWN0X3RpbWVyX2lkID0gMDsKKworc3RhdGljIHZvaWQKK2ZpbGxfb2JqZWN0KHN0cnVjdCBk cm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpvYmosIHVpbnQzMl90IGdlbV9oYW5kbGUsCisJICAg IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2NzLCB1aW50MzJfdCBj b3VudCkKK3sKKwltZW1zZXQob2JqLCAwLCBzaXplb2YoKm9iaikpOworCW9iai0+aGFuZGxlID0g Z2VtX2hhbmRsZTsKKwlvYmotPnJlbG9jYXRpb25fY291bnQgPSBjb3VudDsKKwlvYmotPnJlbG9j c19wdHIgPSAodWludHB0cl90KXJlbG9jczsKK30KKworc3RhdGljIHZvaWQKK2ZpbGxfcmVsb2Mo c3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5ICpyZWxvYywKKwkgICB1aW50MzJf dCBnZW1faGFuZGxlLCB1aW50MzJfdCBvZmZzZXQsCisJICAgdWludDMyX3QgcmVhZF9kb21haW5z LCB1aW50MzJfdCB3cml0ZV9kb21haW5zKQoreworCXJlbG9jLT50YXJnZXRfaGFuZGxlID0gZ2Vt X2hhbmRsZTsKKwlyZWxvYy0+ZGVsdGEgPSAwOworCXJlbG9jLT5vZmZzZXQgPSBvZmZzZXQgKiBz aXplb2YodWludDMyX3QpOworCXJlbG9jLT5wcmVzdW1lZF9vZmZzZXQgPSAwOworCXJlbG9jLT5y ZWFkX2RvbWFpbnMgPSByZWFkX2RvbWFpbnM7CisJcmVsb2MtPndyaXRlX2RvbWFpbiA9IHdyaXRl X2RvbWFpbnM7Cit9CisKKy8qCisgKiBOZWVkcyB0byBiZSBnbG9iYWwuIFNpZ25hbCBoYW5kbGVy cyBkb24ndCBhY2NlcHQgYXJndW1lbnRzCisgKi8KK3N0YXRpYyB1aW50MzJfdCAqYmF0Y2g7CisK K3N0YXRpYyB1aW50MzJfdCBlbWl0X3JlY3Vyc2l2ZV9iYXRjaChpbnQgZmQsIGludCBlbmdpbmUs CisJCQkJICAgICB1bnNpZ25lZCBpbnQgZGVwX2hhbmRsZSkKK3sKKwljb25zdCBpbnQgZ2VuID0g aW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2V4ZWNfb2JqZWN0MiBvYmpbMl07CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2Vu dHJ5IHJlbG9jc1syXTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7 CisJdW5zaWduZWQgaW50IGVuZ2luZXNbMTZdOworCXVuc2lnbmVkIGludCBuZW5naW5lLCBoYW5k bGU7CisJaW50IGkgPSAwLCByZWxvY19jb3VudCA9IDAsIGJ1Zl9jb3VudCA9IDA7CisKKwlidWZf Y291bnQgPSAwOworCW5lbmdpbmUgPSAwOworCWlmIChlbmdpbmUgPCAwKSB7CisJCWZvcl9lYWNo X2VuZ2luZShmZCwgZW5naW5lKQorCQkJaWYgKGVuZ2luZSkKKwkJCQllbmdpbmVzW25lbmdpbmUr K10gPSBlbmdpbmU7CisJfSBlbHNlIHsKKwkJZ2VtX3JlcXVpcmVfcmluZyhmZCwgZW5naW5lKTsK KwkJZW5naW5lc1tuZW5naW5lKytdID0gZW5naW5lOworCX0KKwlpZ3RfcmVxdWlyZShuZW5naW5l KTsKKworCW1lbXNldCgmZXhlY2J1ZiwgMCwgc2l6ZW9mKGV4ZWNidWYpKTsKKwltZW1zZXQob2Jq LCAwLCBzaXplb2Yob2JqKSk7CisJbWVtc2V0KHJlbG9jcywgMCwgc2l6ZW9mKHJlbG9jcykpOwor CisJZXhlY2J1Zi5idWZmZXJzX3B0ciA9ICh1aW50cHRyX3QpIG9iajsKKwloYW5kbGUgPSBnZW1f Y3JlYXRlKGZkLCBib19zaXplKTsKKwliYXRjaCA9IGdlbV9tbWFwX19ndHQoZmQsIGhhbmRsZSwg Ym9fc2l6ZSwgUFJPVF9XUklURSk7CisJaWd0X2Fzc2VydChiYXRjaCk7CisJZ2VtX3NldF9kb21h aW4oZmQsIGhhbmRsZSwKKwkJCUk5MTVfR0VNX0RPTUFJTl9HVFQsIEk5MTVfR0VNX0RPTUFJTl9H VFQpOworCisJaWYgKGRlcF9oYW5kbGUgPiAwKSB7CisJCS8qIGR1bW15IHdyaXRlIHRvIGRlcGVu ZGVuY3kgKi8KKwkJZmlsbF9vYmplY3QoJm9ialtidWZfY291bnRdLCBkZXBfaGFuZGxlLCBOVUxM LCAwKTsKKwkJYnVmX2NvdW50Kys7CisKKwkJZmlsbF9yZWxvYygmcmVsb2NzW3JlbG9jX2NvdW50 XSwgZGVwX2hhbmRsZSwgMjU2LAorCQkJICAgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwKKwkJCSAg IEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIpOworCQlyZWxvY19jb3VudCsrOworCX0KKworCWlmIChn ZW4gPj0gOCkgeworCQliYXRjaFtpKytdID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwgMSA8PCA4 IHwgMTsKKwkJLyogcmVjdXJzZSAqLworCQlmaWxsX3JlbG9jKCZyZWxvY3NbcmVsb2NfY291bnRd LCBoYW5kbGUsIGksCisJCQkgICBJOTE1X0dFTV9ET01BSU5fQ09NTUFORCwgMCk7CisJCWJhdGNo W2krK10gPSAwOworCQliYXRjaFtpKytdID0gMDsKKwl9IGVsc2UgaWYgKGdlbiA+PSA2KSB7CisJ CWJhdGNoW2krK10gPSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCAxIDw8IDg7CisJCS8qIHJlY3Vy c2UgKi8KKwkJZmlsbF9yZWxvYygmcmVsb2NzW3JlbG9jX2NvdW50XSwgaGFuZGxlLCBpLAorCQkJ ICAgSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQsIDApOworCQliYXRjaFtpKytdID0gMDsKKwl9IGVs c2UgeworCQliYXRjaFtpKytdID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwgMiA8PCA2IHwKKwkJ CSgoZ2VuIDwgNCkgPyAxIDogMCk7CisJCS8qIHJlY3Vyc2UgKi8KKwkJZmlsbF9yZWxvYygmcmVs b2NzW3JlbG9jX2NvdW50XSwgaGFuZGxlLCBpLAorCQkJICAgSTkxNV9HRU1fRE9NQUlOX0NPTU1B TkQsIDApOworCQliYXRjaFtpKytdID0gMDsKKwkJaWYgKGdlbiA8IDQpCisJCQlyZWxvY3NbcmVs b2NfY291bnRdLmRlbHRhID0gMTsKKwl9CisJcmVsb2NfY291bnQrKzsKKworCWZpbGxfb2JqZWN0 KCZvYmpbYnVmX2NvdW50XSwgaGFuZGxlLCByZWxvY3MsIHJlbG9jX2NvdW50KTsKKwlidWZfY291 bnQrKzsKKworCWZvciAoaSA9IDA7IGkgPCBuZW5naW5lOyBpKyspIHsKKwkJZXhlY2J1Zi5mbGFn cyA9IGVuZ2luZXNbaV07CisJCWV4ZWNidWYuZmxhZ3MgJj0gfkVOR0lORV9NQVNLOworCQlleGVj YnVmLmJ1ZmZlcl9jb3VudCA9IGJ1Zl9jb3VudDsKKwkJZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVm KTsKKwl9CisKKwlyZXR1cm4gaGFuZGxlOworfQorCitzdGF0aWMgdm9pZCBleGl0X2JhdGNoX2hh bmRsZXIoaW50IHNpZywgc2lnaW5mb190ICppbmZvLCB2b2lkICpzcGluKQoreworCXN0cnVjdCBz aWdhY3Rpb24gYWN0OworCisJKmJhdGNoID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKKwlfX3N5bmNf c3luY2hyb25pemUoKTsKKworCW1lbXNldCgmYWN0LCAwLCBzaXplb2YoYWN0KSk7CisJYWN0LnNh X2hhbmRsZXIgPSBTSUdfREZMOworCWlndF9hc3NlcnQoc2lnYWN0aW9uKGluZm8tPnNpX3NpZ25v LCAmYWN0LCBOVUxMKSA9PSAwKTsKK30KKworCit2b2lkIGlndF90ZXJtaW5hdGVfc3Bpbl9iYXRj aGVzKHZvaWQpCit7CisJc3RydWN0IGlndF9zcGluICppdGVyLCAqdG1wOworCisJaWd0X2xpc3Rf Zm9yX2VhY2hfc2FmZShpdGVyLCB0bXAsICZzcGluX2xpc3QsIGxpbmspCisJCWlndF9zcGluX2Jh dGNoX2VuZChpdGVyKTsKK30KKworLyoqCisgKiBpZ3Rfc3Bpbl9iYXRjaF9uZXc6CisgKiBAZmQ6 IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCisgKiBAZW5naW5lOiBSaW5nIHRvIGV4ZWN1 dGUgYmF0Y2ggT1InZCB3aXRoIGV4ZWNidWYgZmxhZ3MuIElmIHZhbHVlIGlzIGxlc3MKKyAqICAg ICAgICAgIHRoYW4gMCwgZXhlY3V0ZSBvbiBhbGwgYXZhaWxhYmxlIHJpbmdzLgorICogQGRlcF9o YW5kbGU6IGhhbmRsZSB0byBhIGJ1ZmZlciBvYmplY3QgZGVwZW5kZW5jeS4gSWYgZ3JlYXRlciB0 aGFuIDAsIGFkZCBhCisgKiAgICAgICAgICAgICAgcmVsb2NhdGlvbiBlbnRyeSB0byB0aGlzIGJ1 ZmZlciB3aXRoaW4gdGhlIGJhdGNoLgorICoKKyAqIFN0YXJ0IGEgcmVjdXJzaXZlIGJhdGNoIG9u IGEgcmluZy4gSW1tZWRpYXRlbHkgcmV0dXJucyBhICNpZ3Rfc3Bpbl90IHRoYXQKKyAqIGNvbnRh aW5zIHRoZSBiYXRjaCdzIGhhbmRsZSB0aGF0IGNhbiBiZSB3YWl0ZWQgdXBvbi4gVGhlIHJldHVy bmVkIHN0cnVjdHVyZQorICogbXVzdCBiZSBwYXNzZWQgdG8gaWd0X3NwaW5fYmF0Y2hfZnJlZSgp IGZvciBwb3N0LXByb2Nlc3NpbmcuCisgKgorICogUmV0dXJuczoKKyAqIFN0cnVjdHVyZSB3aXRo IGhlbHBlciBpbnRlcm5hbCBzdGF0ZSBmb3IgaWd0X3NwaW5fYmF0Y2hfZnJlZSgpLgorICovCitp Z3Rfc3Bpbl90ICoKK2lndF9zcGluX2JhdGNoX25ldyhpbnQgZmQsIGludCBlbmdpbmUsIHVuc2ln bmVkIGludCBkZXBfaGFuZGxlKQoreworCWlndF9zcGluX3QgKnNwaW4gPSBjYWxsb2MoMSwgc2l6 ZW9mKHN0cnVjdCBpZ3Rfc3BpbikpOworCXVpbnQzMl90IGhhbmRsZSA9IGVtaXRfcmVjdXJzaXZl X2JhdGNoKGZkLCBlbmdpbmUsIGRlcF9oYW5kbGUpOworCisJaWd0X2Fzc2VydChnZW1fYm9fYnVz eShmZCwgaGFuZGxlKSk7CisJaWd0X2xpc3RfaW5pdCgmc3Bpbi0+bGluayk7CisJc3Bpbi0+aGFu ZGxlID0gaGFuZGxlOworCXNwaW4tPmJhdGNoID0gYmF0Y2g7CisJc3Bpbi0+dGltZXIgPSBOVUxM OworCWlndF9saXN0X2FkZCgmc3Bpbl9saXN0LCAmc3Bpbi0+bGluayk7CisKKwlyZXR1cm4gc3Bp bjsKK30KKworLyoqCisgKiBpZ3Rfc3Bpbl9iYXRjaF9zZXRfdGltZW91dDoKKyAqIEBzcGluOiBz cGluIGJhdGNoIHN0YXRlIGZyb20gaWd0X3NwaW5fYmF0Y2hfbmV3KCkKKyAqIEBuczogYW1vdW50 IG9mIHRpbWUgaW4gbmFub3NlY29uZHMgdGhlIGJhdGNoIGNvbnRpbnVlcyB0byBleGVjdXRlCisg KiAgICAgIGJlZm9yZSBmaW5pc2hpbmcuCisgKgorICogU3BlY2lmeSBhIHRpbWVvdXQuIFRoaXMg ZW5kcyB0aGUgcmVjdXJzaXZlIGJhdGNoIGFzc29jaWF0ZWQgd2l0aCBAc3BpbiBhZnRlcgorICog dGhlIHRpbWVvdXQgaGFzIGVsYXBzZWQuCisgKi8KK3ZvaWQgaWd0X3NwaW5fYmF0Y2hfc2V0X3Rp bWVvdXQoaWd0X3NwaW5fdCAqc3BpbiwgaW50NjRfdCBucykKK3sKKwl0aW1lcl90IHRpbWVyOwor CXN0cnVjdCBzaWdldmVudCBzZXY7CisJc3RydWN0IHNpZ2FjdGlvbiBhY3QsIG9sZGFjdDsKKwlz dHJ1Y3QgaXRpbWVyc3BlYyBpdHM7CisJaW50IHNpZ251bTsKKworCWlndF9hc3NlcnQobnMgPiAw KTsKKwlpZiAoIXNwaW4pCisJCXJldHVybjsKKworCWlmIChzcGluX29iamVjdF90aW1lcl9pZCA+ IFNJR1JUTUFYIC0gMSkKKwkJc3Bpbl9vYmplY3RfdGltZXJfaWQgPSAwOworCXNpZ251bSA9IFNJ R1JUTUlOICsgc3Bpbl9vYmplY3RfdGltZXJfaWQrKzsKKworCW1lbXNldCgmc2V2LCAwLCBzaXpl b2Yoc2V2KSk7CisJc2V2LnNpZ2V2X25vdGlmeSA9IFNJR0VWX1NJR05BTCB8IFNJR0VWX1RIUkVB RF9JRDsKKwlzZXYuc2lnZXZfbm90aWZ5X3RocmVhZF9pZCA9IGdldHRpZCgpOworCXNldi5zaWdl dl9zaWdubyA9IHNpZ251bTsKKwlpZ3RfYXNzZXJ0KHRpbWVyX2NyZWF0ZShDTE9DS19NT05PVE9O SUMsICZzZXYsICZ0aW1lcikgPT0gMCk7CisJaWd0X2Fzc2VydCh0aW1lciA+IDApOworCisJbWVt c2V0KCZvbGRhY3QsIDAsIHNpemVvZihvbGRhY3QpKTsKKwltZW1zZXQoJmFjdCwgMCwgc2l6ZW9m KGFjdCkpOworCWFjdC5zYV9zaWdhY3Rpb24gPSBleGl0X2JhdGNoX2hhbmRsZXI7CisJYWN0LnNh X2ZsYWdzID0gU0FfU0lHSU5GTzsKKwlpZ3RfYXNzZXJ0KHNpZ2FjdGlvbihzaWdudW0sICZhY3Qs ICZvbGRhY3QpID09IDApOworCWlndF9hc3NlcnQob2xkYWN0LnNhX3NpZ2FjdGlvbiA9PSBOVUxM KTsKKworCW1lbXNldCgmaXRzLCAwLCBzaXplb2YoaXRzKSk7CisJaXRzLml0X3ZhbHVlLnR2X3Nl YyA9IG5zIC8gTlNFQ19QRVJfU0VDOworCWl0cy5pdF92YWx1ZS50dl9uc2VjID0gbnMgJSBOU0VD X1BFUl9TRUM7CisJaWd0X2Fzc2VydCh0aW1lcl9zZXR0aW1lKHRpbWVyLCAwLCAmaXRzLCBOVUxM KSA9PSAwKTsKKworCXNwaW4tPnRpbWVyID0gdGltZXI7Cit9CisKKy8qKgorICogaWd0X3NwaW5f YmF0Y2hfZW5kOgorICogQHNwaW46IHNwaW4gYmF0Y2ggc3RhdGUgZnJvbSBpZ3Rfc3Bpbl9iYXRj aF9uZXcoKQorICoKKyAqIEVuZCB0aGUgcmVjdXJzaXZlIGJhdGNoIGFzc29jaWF0ZWQgd2l0aCBA c3BpbiBtYW51YWxseS4KKyAqLwordm9pZCBpZ3Rfc3Bpbl9iYXRjaF9lbmQoaWd0X3NwaW5fdCAq c3BpbikKK3sKKwlpZiAoIXNwaW4pCisJCXJldHVybjsKKworCSpzcGluLT5iYXRjaCA9IE1JX0JB VENIX0JVRkZFUl9FTkQ7CisJX19zeW5jX3N5bmNocm9uaXplKCk7Cit9CisKKy8qKgorICogaWd0 X3NwaW5fYmF0Y2hfZnJlZToKKyAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IK KyAqIEBzcGluOiBzcGluIGJhdGNoIHN0YXRlIGZyb20gaWd0X3NwaW5fYmF0Y2hfbmV3KCkKKyAq CisgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIG5lY2Vzc2FyeSBwb3N0LXByb2Nlc3NpbmcgYWZ0 ZXIgc3RhcnRpbmcgYSByZWN1cnNpdmUKKyAqIGJhdGNoIHdpdGggaWd0X3NwaW5fYmF0Y2hfbmV3 KCkuCisgKi8KK3ZvaWQgaWd0X3NwaW5fYmF0Y2hfZnJlZShpbnQgZmQsIGlndF9zcGluX3QgKnNw aW4pCit7CisJaWYgKCFzcGluKQorCQlyZXR1cm47CisKKwlpZiAoc3Bpbi0+dGltZXIgPiAwKQor CQl0aW1lcl9kZWxldGUoc3Bpbi0+dGltZXIpOworCisJaWd0X3NwaW5fYmF0Y2hfZW5kKHNwaW4p OworCW11bm1hcChzcGluLT5iYXRjaCwgYm9fc2l6ZSk7CisJZ2VtX2Nsb3NlKGZkLCBzcGluLT5o YW5kbGUpOworCWlndF9saXN0X2RlbCgmc3Bpbi0+bGluayk7CisJZnJlZShzcGluKTsKK30KZGlm ZiAtLWdpdCBhL2xpYi9pZ3RfZHVtbXlsb2FkLmggYi9saWIvaWd0X2R1bW15bG9hZC5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyNTBmOGYKLS0tIC9kZXYvbnVsbAorKysg Yi9saWIvaWd0X2R1bW15bG9hZC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg wqkgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmlj dGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisg KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAor ICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9S UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP UiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNU SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElO IFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX0lHVF9EVU1NWUxPQURfSF9fCisj ZGVmaW5lIF9fSUdUX0RVTU1ZTE9BRF9IX18KKworI2luY2x1ZGUgImlndF9hdXguaCIKKwordHlw ZWRlZiBzdHJ1Y3QgaWd0X3NwaW4geworCXVuc2lnbmVkIGludCBoYW5kbGU7CisJdWludDMyX3Qg KmJhdGNoOworCXRpbWVyX3QgdGltZXI7CisJc3RydWN0IGlndF9saXN0IGxpbms7Cit9IGlndF9z cGluX3Q7CisKKworaWd0X3NwaW5fdCAqCitpZ3Rfc3Bpbl9iYXRjaF9uZXcoaW50IGZkLCBpbnQg ZW5naW5lLCB1bnNpZ25lZCBpbnQgZGVwX2hhbmRsZSk7CisKK3ZvaWQgaWd0X3NwaW5fYmF0Y2hf c2V0X3RpbWVvdXQoaWd0X3NwaW5fdCAqc3BpbiwgaW50NjRfdCBucyk7CisKK3ZvaWQgaWd0X3Nw aW5fYmF0Y2hfZW5kKGlndF9zcGluX3QgKnNwaW4pOworCit2b2lkIGlndF9zcGluX2JhdGNoX2Zy ZWUoaW50IGZkLCBpZ3Rfc3Bpbl90ICpzcGluKTsKKwordm9pZCBpZ3RfdGVybWluYXRlX3NwaW5f YmF0Y2hlcyh2b2lkKTsKKworI2VuZGlmIC8qIF9fSUdUX0RVTU1ZTE9BRF9IX18gKi8KLS0gCjIu Ny40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK