From mboxrd@z Thu Jan 1 00:00:00 1970 From: Abdiel Janulgue Subject: [i-g-t PATCH v13 3/6] lib: add igt_dummyload Date: Fri, 25 Nov 2016 13:40:32 +0200 Message-ID: <1480074032-26818-2-git-send-email-abdiel.janulgue@linux.intel.com> References: <20161125091750.GB26057@nuc-i3427.alporthouse.com> <1480074032-26818-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2A07A6E141 for ; Fri, 25 Nov 2016 11:40:47 +0000 (UTC) In-Reply-To: <1480074032-26818-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 a2VybmVsJ3MgbGlzdCB0byBoYW5kbGUgc3BpbmVyIG9iamVjdHMKCkNjOiBEYW5pZWwgVmV0dGVy IDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29u LmNvLnVrPgpDYzogdG9tZXVAdG9tZXV2aXpvc28ubmV0ClJldmlld2VkLWJ5OiBUb21ldSBWaXpv c28gPHRvbWV1LnZpem9zb0Bjb2xsYWJvcmEuY29tPgpTaWduZWQtb2ZmLWJ5OiBBYmRpZWwgSmFu dWxndWUgPGFiZGllbC5qYW51bGd1ZUBsaW51eC5pbnRlbC5jb20+Ci0tLQogLi4uL2ludGVsLWdw dS10b29scy9pbnRlbC1ncHUtdG9vbHMtZG9jcy54bWwgICAgICAgfCAgIDEgKwogbGliL01ha2Vm aWxlLnNvdXJjZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogbGliL2Ry bXRlc3QuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogbGli L2lndC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwog bGliL2lndF9kdW1teWxvYWQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyODUg KysrKysrKysrKysrKysrKysrKysrCiBsaWIvaWd0X2R1bW15bG9hZC5oICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICA0OSArKysrCiA2IGZpbGVzIGNoYW5nZWQsIDM0MSBpbnNlcnRp b25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2lndF9kdW1teWxvYWQuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGxpYi9pZ3RfZHVtbXlsb2FkLmgKCmRpZmYgLS1naXQgYS9kb2NzL3JlZmVyZW5j ZS9pbnRlbC1ncHUtdG9vbHMvaW50ZWwtZ3B1LXRvb2xzLWRvY3MueG1sIGIvZG9jcy9yZWZlcmVu Y2UvaW50ZWwtZ3B1LXRvb2xzL2ludGVsLWdwdS10b29scy1kb2NzLnhtbAppbmRleCBjODYyZjJh Li41NTkwMmFiIDEwMDY0NAotLS0gYS9kb2NzL3JlZmVyZW5jZS9pbnRlbC1ncHUtdG9vbHMvaW50 ZWwtZ3B1LXRvb2xzLWRvY3MueG1sCisrKyBiL2RvY3MvcmVmZXJlbmNlL2ludGVsLWdwdS10b29s cy9pbnRlbC1ncHUtdG9vbHMtZG9jcy54bWwKQEAgLTMyLDYgKzMyLDcgQEAKICAgICA8eGk6aW5j bHVkZSBocmVmPSJ4bWwvaW50ZWxfaW8ueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1s L2lndF92YzQueG1sIi8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2lndF92Z2VtLnhtbCIv PgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pZ3RfZHVtbXlsb2FkLnhtbCIvPgogICA8L2No YXB0ZXI+CiAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pZ3RfdGVzdF9wcm9ncmFtcy54bWwiLz4K IApkaWZmIC0tZ2l0IGEvbGliL01ha2VmaWxlLnNvdXJjZXMgYi9saWIvTWFrZWZpbGUuc291cmNl cwppbmRleCBlOGUyNzdiLi43ZmM1ZWMyIDEwMDY0NAotLS0gYS9saWIvTWFrZWZpbGUuc291cmNl cworKysgYi9saWIvTWFrZWZpbGUuc291cmNlcwpAQCAtNzUsNiArNzUsOCBAQCBsaWJfc291cmNl X2xpc3QgPQkgCVwKIAlpZ3RfZHJhdy5oCQlcCiAJaWd0X3BtLmMJCVwKIAlpZ3RfcG0uaAkJXAor CWlndF9kdW1teWxvYWQuYwkJXAorCWlndF9kdW1teWxvYWQuaAkJXAogCXV3aWxkbWF0L3V3aWxk bWF0LmgJXAogCXV3aWxkbWF0L3V3aWxkbWF0LmMJXAogCSQoTlVMTCkKZGlmZiAtLWdpdCBhL2xp Yi9kcm10ZXN0LmMgYi9saWIvZHJtdGVzdC5jCmluZGV4IDQ0YWJjN2UuLmJlMWRjOTMgMTAwNjQ0 Ci0tLSBhL2xpYi9kcm10ZXN0LmMKKysrIGIvbGliL2RybXRlc3QuYwpAQCAtNTcsNiArNTcsNyBA QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgImludGVsX3JlZy5oIgogI2luY2x1ZGUg ImlvY3RsX3dyYXBwZXJzLmgiCisjaW5jbHVkZSAiaWd0X2R1bW15bG9hZC5oIgogCiAvKioKICAq IFNFQ1RJT046ZHJtdGVzdApAQCAtMTU5LDYgKzE2MCw4IEBAIHZvaWQgZ2VtX3F1aWVzY2VudF9n cHUoaW50IGZkKQogCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyIG9iajsKIAl1bnNp Z25lZCByaW5nOwogCisJaWd0X3Rlcm1pbmF0ZV9zcGluX2JhdGNoZXMoKTsKKwogCW1lbXNldCgm b2JqLCAwLCBzaXplb2Yob2JqKSk7CiAJb2JqLmhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYp OwogCWdlbV93cml0ZShmZCwgb2JqLmhhbmRsZSwgMCwgJmJiZSwgc2l6ZW9mKCZiYmUpKTsKZGlm ZiAtLWdpdCBhL2xpYi9pZ3QuaCBiL2xpYi9pZ3QuaAppbmRleCBkNzUxZjI0Li5hMDAyOGQ1IDEw MDY0NAotLS0gYS9saWIvaWd0LmgKKysrIGIvbGliL2lndC5oCkBAIC0zMiw2ICszMiw3IEBACiAj aW5jbHVkZSAiaWd0X2NvcmUuaCIKICNpbmNsdWRlICJpZ3RfZGVidWdmcy5oIgogI2luY2x1ZGUg ImlndF9kcmF3LmgiCisjaW5jbHVkZSAiaWd0X2R1bW15bG9hZC5oIgogI2luY2x1ZGUgImlndF9m Yi5oIgogI2luY2x1ZGUgImlndF9ndC5oIgogI2luY2x1ZGUgImlndF9rbXMuaCIKZGlmZiAtLWdp dCBhL2xpYi9pZ3RfZHVtbXlsb2FkLmMgYi9saWIvaWd0X2R1bW15bG9hZC5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkNmUyN2EKLS0tIC9kZXYvbnVsbAorKysgYi9saWIv aWd0X2R1bW15bG9hZC5jCkBAIC0wLDAgKzEsMjg1IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIw MTYgSW50ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m dHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5k L29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv IHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90 aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBh cmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw b3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9W SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisg KiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1Ig Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI RVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg T1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUg U09GVFdBUkUuCisgKgorICovCisKKyNpbmNsdWRlICJpZ3QuaCIKKyNpbmNsdWRlICJpZ3RfZHVt bXlsb2FkLmgiCisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1 ZGUgPHN5cy9zeXNjYWxsLmg+CisKKy8qKgorICogU0VDVElPTjppZ3RfZHVtbXlsb2FkCisgKiBA c2hvcnRfZGVzY3JpcHRpb246IExpYnJhcnkgZm9yIHN1Ym1pdHRpbmcgR1BVIHdvcmtsb2Fkcwor ICogQHRpdGxlOiBEdW1teWxvYWQKKyAqIEBpbmNsdWRlOiBpZ3QuaAorICoKKyAqIEEgbG90IG9m IGlndCB0ZXN0Y2FzZXMgbmVlZCBzb21lIEdQVSB3b3JrbG9hZCB0byBtYWtlIHN1cmUgYSByYWNl IHdpbmRvdyBpcworICogYmlnIGVub3VnaC4gVW5mb3J0dW5hdGVseSBoYXZpbmcgYSBmaXhlZCBh bW91bnQgb2Ygd29ya2xvYWQgbGVhZHMgdG8KKyAqIHNwdXJpb3VzIHRlc3QgZmFpbHVyZXMgb3Ig b3Zlcmx5IGxvbmcgcnVudGltZXMgb24gc29tZSBmYXN0L3Nsb3cgcGxhdGZvcm1zLgorICogVGhp cyBsaWJyYXJ5IGNvbnRhaW5zIGZ1bmN0aW9uYWxpdHkgdG8gc3VibWl0IEdQVSB3b3JrbG9hZHMg dGhhdCBzaG91bGQKKyAqIGNvbnN1bWUgZXhhY3RseSBhIHNwZWNpZmljIGFtb3VudCBvZiB0aW1l LgorICovCisKKyNkZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0JTRF9TSElGVCAgICAgICgxMykKKyNk ZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0JTRF9NQVNLICAgICAgICgzIDw8IExPQ0FMX0k5MTVfRVhF Q19CU0RfU0hJRlQpCisKKyNkZWZpbmUgRU5HSU5FX01BU0sgIChJOTE1X0VYRUNfUklOR19NQVNL IHwgTE9DQUxfSTkxNV9FWEVDX0JTRF9NQVNLKQorCitzdGF0aWMgY29uc3QgaW50IGJvX3NpemUg PSA0MDk2OworCitzdGF0aWMgdm9pZAorZmlsbF9vYmplY3Qoc3RydWN0IGRybV9pOTE1X2dlbV9l eGVjX29iamVjdDIgKm9iaiwgdWludDMyX3QgZ2VtX2hhbmRsZSwKKwkgICAgc3RydWN0IGRybV9p OTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5ICpyZWxvY3MsIHVpbnQzMl90IGNvdW50KQoreworCW1l bXNldChvYmosIDAsIHNpemVvZigqb2JqKSk7CisJb2JqLT5oYW5kbGUgPSBnZW1faGFuZGxlOwor CW9iai0+cmVsb2NhdGlvbl9jb3VudCA9IGNvdW50OworCW9iai0+cmVsb2NzX3B0ciA9ICh1aW50 cHRyX3QpcmVsb2NzOworfQorCitzdGF0aWMgdm9pZAorZmlsbF9yZWxvYyhzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgKnJlbG9jLAorCSAgIHVpbnQzMl90IGdlbV9oYW5kbGUs IHVpbnQzMl90IG9mZnNldCwKKwkgICB1aW50MzJfdCByZWFkX2RvbWFpbnMsIHVpbnQzMl90IHdy aXRlX2RvbWFpbnMpCit7CisJcmVsb2MtPnRhcmdldF9oYW5kbGUgPSBnZW1faGFuZGxlOworCXJl bG9jLT5kZWx0YSA9IDA7CisJcmVsb2MtPm9mZnNldCA9IG9mZnNldCAqIHNpemVvZih1aW50MzJf dCk7CisJcmVsb2MtPnByZXN1bWVkX29mZnNldCA9IDA7CisJcmVsb2MtPnJlYWRfZG9tYWlucyA9 IHJlYWRfZG9tYWluczsKKwlyZWxvYy0+d3JpdGVfZG9tYWluID0gd3JpdGVfZG9tYWluczsKK30K KworLyoKKyAqIE5lZWRzIHRvIGJlIGdsb2JhbC4gU2lnbmFsIGhhbmRsZXJzIGRvbid0IGFjY2Vw dCBhcmd1bWVudHMKKyAqLworc3RhdGljIHVpbnQzMl90ICpiYXRjaDsKKworc3RhdGljIHVpbnQz Ml90IGVtaXRfcmVjdXJzaXZlX2JhdGNoKGludCBmZCwgaW50IGVuZ2luZSwKKwkJCQkgICAgIHVu c2lnbmVkIGludCBkZXBfaGFuZGxlKQoreworCWNvbnN0IGludCBnZW4gPSBpbnRlbF9nZW4oaW50 ZWxfZ2V0X2RybV9kZXZpZChmZCkpOworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3Qy IG9ialsyXTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgcmVsb2NzWzJd OworCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKKwl1bnNpZ25lZCBp bnQgZW5naW5lc1sxNl07CisJdW5zaWduZWQgaW50IG5lbmdpbmUsIGhhbmRsZTsKKwlpbnQgaSA9 IDAsIHJlbG9jX2NvdW50ID0gMCwgYnVmX2NvdW50ID0gMDsKKworCWJ1Zl9jb3VudCA9IDA7CisJ bmVuZ2luZSA9IDA7CisJaWYgKGVuZ2luZSA8IDApIHsKKwkJZm9yX2VhY2hfZW5naW5lKGZkLCBl bmdpbmUpCisJCQlpZiAoZW5naW5lKQorCQkJCWVuZ2luZXNbbmVuZ2luZSsrXSA9IGVuZ2luZTsK Kwl9IGVsc2UgeworCQlnZW1fcmVxdWlyZV9yaW5nKGZkLCBlbmdpbmUpOworCQllbmdpbmVzW25l bmdpbmUrK10gPSBlbmdpbmU7CisJfQorCWlndF9yZXF1aXJlKG5lbmdpbmUpOworCisJbWVtc2V0 KCZleGVjYnVmLCAwLCBzaXplb2YoZXhlY2J1ZikpOworCW1lbXNldChvYmosIDAsIHNpemVvZihv YmopKTsKKwltZW1zZXQocmVsb2NzLCAwLCBzaXplb2YocmVsb2NzKSk7CisKKwlleGVjYnVmLmJ1 ZmZlcnNfcHRyID0gKHVpbnRwdHJfdCkgb2JqOworCWhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIGJv X3NpemUpOworCWJhdGNoID0gZ2VtX21tYXBfX2d0dChmZCwgaGFuZGxlLCBib19zaXplLCBQUk9U X1dSSVRFKTsKKwlpZ3RfYXNzZXJ0KGJhdGNoKTsKKwlnZW1fc2V0X2RvbWFpbihmZCwgaGFuZGxl LAorCQkJSTkxNV9HRU1fRE9NQUlOX0dUVCwgSTkxNV9HRU1fRE9NQUlOX0dUVCk7CisKKwlpZiAo ZGVwX2hhbmRsZSA+IDApIHsKKwkJLyogZHVtbXkgd3JpdGUgdG8gZGVwZW5kZW5jeSAqLworCQlm aWxsX29iamVjdCgmb2JqW2J1Zl9jb3VudF0sIGRlcF9oYW5kbGUsIE5VTEwsIDApOworCQlidWZf Y291bnQrKzsKKworCQlmaWxsX3JlbG9jKCZyZWxvY3NbcmVsb2NfY291bnRdLCBkZXBfaGFuZGxl LCAyNTYsCisJCQkgICBJOTE1X0dFTV9ET01BSU5fUkVOREVSLAorCQkJICAgSTkxNV9HRU1fRE9N QUlOX1JFTkRFUik7CisJCXJlbG9jX2NvdW50Kys7CisJfQorCisJaWYgKGdlbiA+PSA4KSB7CisJ CWJhdGNoW2krK10gPSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCAxIDw8IDggfCAxOworCQkvKiBy ZWN1cnNlICovCisJCWZpbGxfcmVsb2MoJnJlbG9jc1tyZWxvY19jb3VudF0sIGhhbmRsZSwgaSwK KwkJCSAgIEk5MTVfR0VNX0RPTUFJTl9DT01NQU5ELCAwKTsKKwkJYmF0Y2hbaSsrXSA9IDA7CisJ CWJhdGNoW2krK10gPSAwOworCX0gZWxzZSBpZiAoZ2VuID49IDYpIHsKKwkJYmF0Y2hbaSsrXSA9 IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IDEgPDwgODsKKwkJLyogcmVjdXJzZSAqLworCQlmaWxs X3JlbG9jKCZyZWxvY3NbcmVsb2NfY291bnRdLCBoYW5kbGUsIGksCisJCQkgICBJOTE1X0dFTV9E T01BSU5fQ09NTUFORCwgMCk7CisJCWJhdGNoW2krK10gPSAwOworCX0gZWxzZSB7CisJCWJhdGNo W2krK10gPSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCAyIDw8IDYgfAorCQkJKChnZW4gPCA0KSA/ IDEgOiAwKTsKKwkJLyogcmVjdXJzZSAqLworCQlmaWxsX3JlbG9jKCZyZWxvY3NbcmVsb2NfY291 bnRdLCBoYW5kbGUsIGksCisJCQkgICBJOTE1X0dFTV9ET01BSU5fQ09NTUFORCwgMCk7CisJCWJh dGNoW2krK10gPSAwOworCQlpZiAoZ2VuIDwgNCkKKwkJCXJlbG9jc1tyZWxvY19jb3VudF0uZGVs dGEgPSAxOworCX0KKwlyZWxvY19jb3VudCsrOworCisJZmlsbF9vYmplY3QoJm9ialtidWZfY291 bnRdLCBoYW5kbGUsIHJlbG9jcywgcmVsb2NfY291bnQpOworCWJ1Zl9jb3VudCsrOworCisJZm9y IChpID0gMDsgaSA8IG5lbmdpbmU7IGkrKykgeworCQlleGVjYnVmLmZsYWdzID0gZW5naW5lc1tp XTsKKwkJZXhlY2J1Zi5mbGFncyAmPSB+RU5HSU5FX01BU0s7CisJCWV4ZWNidWYuYnVmZmVyX2Nv dW50ID0gYnVmX2NvdW50OworCQlnZW1fZXhlY2J1ZihmZCwgJmV4ZWNidWYpOworCX0KKworCXJl dHVybiBoYW5kbGU7Cit9CisKK3N0YXRpYyB2b2lkIGV4aXRfYmF0Y2hfaGFuZGxlcihpbnQgc2ln LCBzaWdpbmZvX3QgKmluZm8sIHZvaWQgKnNwaW4pCit7CisJKmJhdGNoID0gTUlfQkFUQ0hfQlVG RkVSX0VORDsKKwlfX3N5bmNfc3luY2hyb25pemUoKTsKK30KKworTElTVF9IRUFEKHNwaW5fb2Jq ZWN0cyk7CisKK3ZvaWQgaWd0X3Rlcm1pbmF0ZV9zcGluX2JhdGNoZXModm9pZCkKK3sKKwlzdHJ1 Y3QgaWd0X3NwaW4gKml0ZXIgPSBOVUxMOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShpdGVyLCAm c3Bpbl9vYmplY3RzLCBsaW5rKQorCQlpZ3Rfc3Bpbl9iYXRjaF9lbmQoaXRlcik7Cit9CisKKy8q KgorICogaWd0X3NwaW5fYmF0Y2hfbmV3OgorICogQGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVz Y3JpcHRvcgorICogQGVuZ2luZTogUmluZyB0byBleGVjdXRlIGJhdGNoIE9SJ2Qgd2l0aCBleGVj YnVmIGZsYWdzLiBJZiB2YWx1ZSBpcyBsZXNzCisgKiAgICAgICAgICB0aGFuIDAsIGV4ZWN1dGUg b24gYWxsIGF2YWlsYWJsZSByaW5ncy4KKyAqIEBkZXBfaGFuZGxlOiBoYW5kbGUgdG8gYSBidWZm ZXIgb2JqZWN0IGRlcGVuZGVuY3kuIElmIGdyZWF0ZXIgdGhhbiAwLCBhZGQgYQorICogICAgICAg ICAgICAgIHJlbG9jYXRpb24gZW50cnkgdG8gdGhpcyBidWZmZXIgd2l0aGluIHRoZSBiYXRjaC4K KyAqCisgKiBTdGFydCBhIHJlY3Vyc2l2ZSBiYXRjaCBvbiBhIHJpbmcuIEltbWVkaWF0ZWx5IHJl dHVybnMgYSAjaWd0X3NwaW5fdCB0aGF0CisgKiBjb250YWlucyB0aGUgYmF0Y2gncyBoYW5kbGUg dGhhdCBjYW4gYmUgd2FpdGVkIHVwb24uIFRoZSByZXR1cm5lZCBzdHJ1Y3R1cmUKKyAqIG11c3Qg YmUgcGFzc2VkIHRvIGlndF9zcGluX2JhdGNoX2ZyZWUoKSBmb3IgcG9zdC1wcm9jZXNzaW5nLgor ICoKKyAqIFJldHVybnM6CisgKiBTdHJ1Y3R1cmUgd2l0aCBoZWxwZXIgaW50ZXJuYWwgc3RhdGUg Zm9yIGlndF9zcGluX2JhdGNoX2ZyZWUoKS4KKyAqLworaWd0X3NwaW5fdCAqCitpZ3Rfc3Bpbl9i YXRjaF9uZXcoaW50IGZkLCBpbnQgZW5naW5lLCB1bnNpZ25lZCBpbnQgZGVwX2hhbmRsZSkKK3sK KwlpZ3Rfc3Bpbl90ICpzcGluID0gY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgaWd0X3NwaW4pKTsK Kwl1aW50MzJfdCBoYW5kbGUgPSBlbWl0X3JlY3Vyc2l2ZV9iYXRjaChmZCwgZW5naW5lLCBkZXBf aGFuZGxlKTsKKworCWlndF9hc3NlcnQoZ2VtX2JvX2J1c3koZmQsIGhhbmRsZSkpOworCXNwaW4t PmhhbmRsZSA9IGhhbmRsZTsKKwlzcGluLT5iYXRjaCA9IGJhdGNoOworCXNwaW4tPnRpbWVyID0g TlVMTDsKKwlJTklUX0xJU1RfSEVBRCgmc3Bpbi0+bGluayk7CisJbGlzdF9hZGQoJnNwaW4tPmxp bmssICZzcGluX29iamVjdHMpOworCisJcmV0dXJuIHNwaW47Cit9CisKKy8qKgorICogaWd0X3Nw aW5fYmF0Y2hfc2V0X3RpbWVvdXQ6CisgKiBAc3Bpbjogc3BpbiBiYXRjaCBzdGF0ZSBmcm9tIGln dF9zcGluX2JhdGNoX25ldygpCisgKiBAbnM6IGFtb3VudCBvZiB0aW1lIGluIG5hbm9zZWNvbmRz IHRoZSBiYXRjaCBjb250aW51ZXMgdG8gZXhlY3V0ZQorICogICAgICBiZWZvcmUgZmluaXNoaW5n LgorICoKKyAqIFNwZWNpZnkgYSB0aW1lb3V0LiBUaGlzIGVuZHMgdGhlIHJlY3Vyc2l2ZSBiYXRj aCBhc3NvY2lhdGVkIHdpdGggQHNwaW4gYWZ0ZXIKKyAqIHRoZSB0aW1lb3V0IGhhcyBlbGFwc2Vk LgorICovCit2b2lkIGlndF9zcGluX2JhdGNoX3NldF90aW1lb3V0KGlndF9zcGluX3QgKnNwaW4s IGludDY0X3QgbnMpCit7CisJdGltZXJfdCB0aW1lcjsKKwlzdHJ1Y3Qgc2lnZXZlbnQgc2V2Owor CXN0cnVjdCBzaWdhY3Rpb24gYWN0OworCXN0cnVjdCBpdGltZXJzcGVjIGl0czsKKworCWlndF9h c3NlcnQobnMgPiAwKTsKKwlpZiAoIXNwaW4pCisJCXJldHVybjsKKworCW1lbXNldCgmc2V2LCAw LCBzaXplb2Yoc2V2KSk7CisJc2V2LnNpZ2V2X25vdGlmeSA9IFNJR0VWX1NJR05BTCB8IFNJR0VW X1RIUkVBRF9JRDsKKwlzZXYuc2lnZXZfbm90aWZ5X3RocmVhZF9pZCA9IGdldHRpZCgpOworCXNl di5zaWdldl9zaWdubyA9IFNJR1JUTUlOICsgMTsKKwlpZ3RfYXNzZXJ0KHRpbWVyX2NyZWF0ZShD TE9DS19NT05PVE9OSUMsICZzZXYsICZ0aW1lcikgPT0gMCk7CisJaWd0X2Fzc2VydCh0aW1lciA+ IDApOworCisJbWVtc2V0KCZhY3QsIDAsIHNpemVvZihhY3QpKTsKKwlhY3Quc2Ffc2lnYWN0aW9u ID0gZXhpdF9iYXRjaF9oYW5kbGVyOworCWFjdC5zYV9mbGFncyA9IFNBX1NJR0lORk87CisJaWd0 X2Fzc2VydChzaWdhY3Rpb24oU0lHUlRNSU4gKyAxLCAmYWN0LCBOVUxMKSA9PSAwKTsKKworCW1l bXNldCgmaXRzLCAwLCBzaXplb2YoaXRzKSk7CisJaXRzLml0X3ZhbHVlLnR2X3NlYyA9IG5zIC8g TlNFQ19QRVJfU0VDOworCWl0cy5pdF92YWx1ZS50dl9uc2VjID0gbnMgJSBOU0VDX1BFUl9TRUM7 CisJaWd0X2Fzc2VydCh0aW1lcl9zZXR0aW1lKHRpbWVyLCAwLCAmaXRzLCBOVUxMKSA9PSAwKTsK KworCXNwaW4tPnRpbWVyID0gdGltZXI7Cit9CisKKy8qKgorICogaWd0X3NwaW5fYmF0Y2hfZW5k OgorICogQHNwaW46IHNwaW4gYmF0Y2ggc3RhdGUgZnJvbSBpZ3Rfc3Bpbl9iYXRjaF9uZXcoKQor ICoKKyAqIEVuZCB0aGUgcmVjdXJzaXZlIGJhdGNoIGFzc29jaWF0ZWQgd2l0aCBAc3BpbiBtYW51 YWxseS4KKyAqLwordm9pZCBpZ3Rfc3Bpbl9iYXRjaF9lbmQoaWd0X3NwaW5fdCAqc3BpbikKK3sK KwlpZiAoIXNwaW4pCisJCXJldHVybjsKKworCSpzcGluLT5iYXRjaCA9IE1JX0JBVENIX0JVRkZF Ul9FTkQ7CisJX19zeW5jX3N5bmNocm9uaXplKCk7Cit9CisKKy8qKgorICogaWd0X3NwaW5fYmF0 Y2hfZnJlZToKKyAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKKyAqIEBzcGlu OiBzcGluIGJhdGNoIHN0YXRlIGZyb20gaWd0X3NwaW5fYmF0Y2hfbmV3KCkKKyAqCisgKiBUaGlz IGZ1bmN0aW9uIGRvZXMgdGhlIG5lY2Vzc2FyeSBwb3N0LXByb2Nlc3NpbmcgYWZ0ZXIgc3RhcnRp bmcgYSByZWN1cnNpdmUKKyAqIGJhdGNoIHdpdGggaWd0X3NwaW5fYmF0Y2hfbmV3KCkuCisgKi8K K3ZvaWQgaWd0X3NwaW5fYmF0Y2hfZnJlZShpbnQgZmQsIGlndF9zcGluX3QgKnNwaW4pCit7CisJ aWYgKCFzcGluKQorCQlyZXR1cm47CisKKwlpZiAoc3Bpbi0+dGltZXIgPiAwKQorCQl0aW1lcl9k ZWxldGUoc3Bpbi0+dGltZXIpOworCisJaWd0X3NwaW5fYmF0Y2hfZW5kKHNwaW4pOworCW11bm1h cChzcGluLT5iYXRjaCwgYm9fc2l6ZSk7CisJZ2VtX2Nsb3NlKGZkLCBzcGluLT5oYW5kbGUpOwor CWxpc3RfZGVsKCZzcGluLT5saW5rKTsKKwlmcmVlKHNwaW4pOworfQpkaWZmIC0tZ2l0IGEvbGli L2lndF9kdW1teWxvYWQuaCBiL2xpYi9pZ3RfZHVtbXlsb2FkLmgKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uNTg5Nzc2NQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9pZ3RfZHVt bXlsb2FkLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVs IENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0 d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks CisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxs IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo ZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgp IHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg b2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdI VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJF LgorICoKKyAqLworCisjaWZuZGVmIF9fSUdUX0RVTU1ZTE9BRF9IX18KKyNkZWZpbmUgX19JR1Rf RFVNTVlMT0FEX0hfXworCisjaW5jbHVkZSAiaWd0X2F1eC5oIgorCit0eXBlZGVmIHN0cnVjdCBp Z3Rfc3BpbiB7CisJdW5zaWduZWQgaW50IGhhbmRsZTsKKwl1aW50MzJfdCAqYmF0Y2g7CisJdGlt ZXJfdCB0aW1lcjsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7Cit9IGlndF9zcGluX3Q7CisKKwor aWd0X3NwaW5fdCAqCitpZ3Rfc3Bpbl9iYXRjaF9uZXcoaW50IGZkLCBpbnQgZW5naW5lLCB1bnNp Z25lZCBpbnQgZGVwX2hhbmRsZSk7CisKK3ZvaWQgaWd0X3NwaW5fYmF0Y2hfc2V0X3RpbWVvdXQo aWd0X3NwaW5fdCAqc3BpbiwgaW50NjRfdCBucyk7CisKK3ZvaWQgaWd0X3NwaW5fYmF0Y2hfZW5k KGlndF9zcGluX3QgKnNwaW4pOworCit2b2lkIGlndF9zcGluX2JhdGNoX2ZyZWUoaW50IGZkLCBp Z3Rfc3Bpbl90ICpzcGluKTsKKwordm9pZCBpZ3RfdGVybWluYXRlX3NwaW5fYmF0Y2hlcyh2b2lk KTsKKworI2VuZGlmIC8qIF9fSUdUX0RVTU1ZTE9BRF9IX18gKi8KLS0gCjIuNy40CgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK