From mboxrd@z Thu Jan 1 00:00:00 1970 From: Abdiel Janulgue Subject: [i-g-t PATCH v10 2/5] lib: add igt_dummyload Date: Wed, 23 Nov 2016 12:59:40 +0200 Message-ID: <20161123105943.5157-3-abdiel.janulgue@linux.intel.com> References: <20161123105943.5157-1-abdiel.janulgue@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 346F76E7EF for ; Wed, 23 Nov 2016 10:59:50 +0000 (UTC) In-Reply-To: <20161123105943.5157-1-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 IHNob3VsZCBjb25zdW1lIGV4YWN0bHkgYSBzcGVjaWZpYwphbW91bnQgb2YgdGltZS4KCnYyIDog QWRkIHJlY3Vyc2l2ZSBiYXRjaCBmZWF0dXJlIGZyb20gQ2hyaXMKdjMgOiBEcm9wIGF1dG8tdHVu ZWQgc3R1ZmYuIEFkZCBibyBkZXBlbmRlY3kgdG8gcmVjdXJzaXZlIGJhdGNoCiAgICAgYnkgYWRk aW5nIGEgZHVtbXkgcmVsb2MgdG8gdGhlIGJvIGFzIHN1Z2dlc3RlZCBieSBWaWxsZS4KdjQ6ICBG aXggZGVwZW5kZW5jeSByZWxvYyBhcyB3cml0ZSBpbnN0ZWFkIG9mIHJlYWQgKFZpbGxlKS4KICAg ICBGaXggd3JvbmcgaGFuZGxpbmcgb2YgYmF0Y2hidWZmZXIgc3RhcnQgb24gSUxLIGNhdXNpbmcK ICAgICB0ZXN0IGZhaWx1cmUKdjU6ICBDb252ZXJ0IGttc19idXN5IHRvIHVzZSB0aGlzIGFwaQp2 NjogIEFkZCB0aGlzIGxpYnJhcnkgdG8gZG9jcwp2NzogIERvY3VtZW50IGdsb2JhbCB1c2Ugb2Yg YmF0Y2gsIHJldXNlIGRlZmluZXMKICAgICBNaW5vciBjb2RlIGNsZWFudXBzLgogICAgIFJlbmFt ZSBpZ3Rfc3Bpbl9iYXRjaCBhbmQgaWd0X3Bvc3Rfc3Bpbl9iYXRjaCB0bwogICAgIGlndF9zcGlu X2JhdGNoX25ldyBhbmQgaWd0X3NwaW5fYmF0Y2hfZnJlZQogICAgIHJlc3BlY3RpdmVseSAoVG9t ZXUgVml6b3NvKS4KICAgICBGaXggZXJyb3IgaW4gZGVwZW5kZW5jeSByZWxvY2F0aW9uIGhhbmRs aW5nIGluIEhTVyBjYXVzaW5nCiAgICAgdGVzdHMgdG8gZmFpbC4Kdjg6ICBSZXN0b3JlIGNvcnJl Y3Qgb3JkZXIgb2Ygb2JqZWN0cyBpbiB0aGUgZXhlY2J1ZmZlci4gQmF0Y2gKICAgICBvYmplY3Qg c2hvdWxkIGFsd2F5cyBiZSBsYXN0Lgp2OSA6IEFkZCBoZWxwZXIgdG8gdGVybWluYXRlIGJhdGNo IG1hbnVhbGx5CnYxMDogU3BsaXQgdGltZW91dCBmdW5jdGlvbi4gQ2xhcmlmeSBmdW5jdGlvbiBu YW1lcyAoQ2hyaXMpCgpDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4K Q2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+CkNjOiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IHRvbWV1QHRvbWV1dml6 b3NvLm5ldApSZXZpZXdlZC1ieTogVG9tZXUgVml6b3NvIDx0b21ldS52aXpvc29AY29sbGFib3Jh LmNvbT4KU2lnbmVkLW9mZi1ieTogQWJkaWVsIEphbnVsZ3VlIDxhYmRpZWwuamFudWxndWVAbGlu dXguaW50ZWwuY29tPgotLS0KIC4uLi9pbnRlbC1ncHUtdG9vbHMvaW50ZWwtZ3B1LXRvb2xzLWRv Y3MueG1sICAgICAgIHwgICAxICsKIGxpYi9NYWtlZmlsZS5zb3VyY2VzICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAyICsKIGxpYi9pZ3QuaCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGxpYi9pZ3RfZHVtbXlsb2FkLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMjk5ICsrKysrKysrKysrKysrKysrKysrKwogbGliL2ln dF9kdW1teWxvYWQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDcgKysrKwog NSBmaWxlcyBjaGFuZ2VkLCAzNTAgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxp Yi9pZ3RfZHVtbXlsb2FkLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaWd0X2R1bW15bG9hZC5o CgpkaWZmIC0tZ2l0IGEvZG9jcy9yZWZlcmVuY2UvaW50ZWwtZ3B1LXRvb2xzL2ludGVsLWdwdS10 b29scy1kb2NzLnhtbCBiL2RvY3MvcmVmZXJlbmNlL2ludGVsLWdwdS10b29scy9pbnRlbC1ncHUt dG9vbHMtZG9jcy54bWwKaW5kZXggYzg2MmYyYS4uNTU5MDJhYiAxMDA2NDQKLS0tIGEvZG9jcy9y ZWZlcmVuY2UvaW50ZWwtZ3B1LXRvb2xzL2ludGVsLWdwdS10b29scy1kb2NzLnhtbAorKysgYi9k b2NzL3JlZmVyZW5jZS9pbnRlbC1ncHUtdG9vbHMvaW50ZWwtZ3B1LXRvb2xzLWRvY3MueG1sCkBA IC0zMiw2ICszMiw3IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2ludGVsX2lvLnhtbCIv PgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pZ3RfdmM0LnhtbCIvPgogICAgIDx4aTppbmNs dWRlIGhyZWY9InhtbC9pZ3RfdmdlbS54bWwiLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwv aWd0X2R1bW15bG9hZC54bWwiLz4KICAgPC9jaGFwdGVyPgogICA8eGk6aW5jbHVkZSBocmVmPSJ4 bWwvaWd0X3Rlc3RfcHJvZ3JhbXMueG1sIi8+CiAKZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZS5z b3VyY2VzIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKaW5kZXggZThlMjc3Yi4uN2ZjNWVjMiAxMDA2 NDQKLS0tIGEvbGliL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvbGliL01ha2VmaWxlLnNvdXJjZXMK QEAgLTc1LDYgKzc1LDggQEAgbGliX3NvdXJjZV9saXN0ID0JIAlcCiAJaWd0X2RyYXcuaAkJXAog CWlndF9wbS5jCQlcCiAJaWd0X3BtLmgJCVwKKwlpZ3RfZHVtbXlsb2FkLmMJCVwKKwlpZ3RfZHVt bXlsb2FkLmgJCVwKIAl1d2lsZG1hdC91d2lsZG1hdC5oCVwKIAl1d2lsZG1hdC91d2lsZG1hdC5j CVwKIAkkKE5VTEwpCmRpZmYgLS1naXQgYS9saWIvaWd0LmggYi9saWIvaWd0LmgKaW5kZXggZDc1 MWYyNC4uYTAwMjhkNSAxMDA2NDQKLS0tIGEvbGliL2lndC5oCisrKyBiL2xpYi9pZ3QuaApAQCAt MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgImlndF9jb3JlLmgiCiAjaW5jbHVkZSAiaWd0X2RlYnVn ZnMuaCIKICNpbmNsdWRlICJpZ3RfZHJhdy5oIgorI2luY2x1ZGUgImlndF9kdW1teWxvYWQuaCIK ICNpbmNsdWRlICJpZ3RfZmIuaCIKICNpbmNsdWRlICJpZ3RfZ3QuaCIKICNpbmNsdWRlICJpZ3Rf a21zLmgiCmRpZmYgLS1naXQgYS9saWIvaWd0X2R1bW15bG9hZC5jIGIvbGliL2lndF9kdW1teWxv YWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmIwODUxCi0tLSAvZGV2 L251bGwKKysrIGIvbGliL2lndF9kdW1teWxvYWQuYwpAQCAtMCwwICsxLDI5OSBAQAorLyoKKyAq IENvcHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi bGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRv IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJv dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5n IHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAq IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFM SU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaW5jbHVkZSAiaWd0LmgiCisj aW5jbHVkZSAiaWd0X2R1bW15bG9hZC5oIgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxz aWduYWwuaD4KKyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorCisvKioKKyAqIFNFQ1RJT046aWd0 X2R1bW15bG9hZAorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBMaWJyYXJ5IGZvciBzdWJtaXR0aW5n IEdQVSB3b3JrbG9hZHMKKyAqIEB0aXRsZTogRHVtbXlsb2FkCisgKiBAaW5jbHVkZTogaWd0LmgK KyAqCisgKiBBIGxvdCBvZiBpZ3QgdGVzdGNhc2VzIG5lZWQgc29tZSBHUFUgd29ya2xvYWQgdG8g bWFrZSBzdXJlIGEgcmFjZSB3aW5kb3cgaXMKKyAqIGJpZyBlbm91Z2guIFVuZm9ydHVuYXRlbHkg aGF2aW5nIGEgZml4ZWQgYW1vdW50IG9mIHdvcmtsb2FkIGxlYWRzIHRvCisgKiBzcHVyaW91cyB0 ZXN0IGZhaWx1cmVzIG9yIG92ZXJseSBsb25nIHJ1bnRpbWVzIG9uIHNvbWUgZmFzdC9zbG93IHBs YXRmb3Jtcy4KKyAqIFRoaXMgbGlicmFyeSBjb250YWlucyBmdW5jdGlvbmFsaXR5IHRvIHN1Ym1p dCBHUFUgd29ya2xvYWRzIHRoYXQgc2hvdWxkCisgKiBjb25zdW1lIGV4YWN0bHkgYSBzcGVjaWZp YyBhbW91bnQgb2YgdGltZS4KKyAqLworCisjZGVmaW5lIExPQ0FMX0k5MTVfRVhFQ19CU0RfU0hJ RlQgICAgICAoMTMpCisjZGVmaW5lIExPQ0FMX0k5MTVfRVhFQ19CU0RfTUFTSyAgICAgICAoMyA8 PCBMT0NBTF9JOTE1X0VYRUNfQlNEX1NISUZUKQorCisjZGVmaW5lIEVOR0lORV9NQVNLICAoSTkx NV9FWEVDX1JJTkdfTUFTSyB8IExPQ0FMX0k5MTVfRVhFQ19CU0RfTUFTSykKKworc3RhdGljIGNv bnN0IGludCBib19zaXplID0gNDA5NjsKKworc3RhdGljIHZvaWQKK2ZpbGxfb2JqZWN0KHN0cnVj dCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpvYmosIHVpbnQzMl90IGdlbV9oYW5kbGUsCisJ ICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2NzLCB1aW50MzJf dCBjb3VudCkKK3sKKwltZW1zZXQob2JqLCAwLCBzaXplb2YoKm9iaikpOworCW9iai0+aGFuZGxl ID0gZ2VtX2hhbmRsZTsKKwlvYmotPnJlbG9jYXRpb25fY291bnQgPSBjb3VudDsKKwlvYmotPnJl bG9jc19wdHIgPSAodWludHB0cl90KXJlbG9jczsKK30KKworc3RhdGljIHZvaWQKK2ZpbGxfcmVs b2Moc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5ICpyZWxvYywKKwkgICB1aW50 MzJfdCBnZW1faGFuZGxlLCB1aW50MzJfdCBvZmZzZXQsCisJICAgdWludDMyX3QgcmVhZF9kb21h aW5zLCB1aW50MzJfdCB3cml0ZV9kb21haW5zKQoreworCXJlbG9jLT50YXJnZXRfaGFuZGxlID0g Z2VtX2hhbmRsZTsKKwlyZWxvYy0+ZGVsdGEgPSAwOworCXJlbG9jLT5vZmZzZXQgPSBvZmZzZXQg KiBzaXplb2YodWludDMyX3QpOworCXJlbG9jLT5wcmVzdW1lZF9vZmZzZXQgPSAwOworCXJlbG9j LT5yZWFkX2RvbWFpbnMgPSByZWFkX2RvbWFpbnM7CisJcmVsb2MtPndyaXRlX2RvbWFpbiA9IHdy aXRlX2RvbWFpbnM7Cit9CisKKy8qCisgKiBOZWVkcyB0byBiZSBnbG9iYWwuIFNpZ25hbCBoYW5k bGVycyBkb24ndCBhY2NlcHQgYXJndW1lbnRzCisgKi8KK3N0YXRpYyB1aW50MzJfdCAqYmF0Y2g7 CisKK3N0YXRpYyB1aW50MzJfdCBlbWl0X3JlY3Vyc2l2ZV9iYXRjaChpbnQgZmQsIGludCBlbmdp bmUsIHVuc2lnbmVkIGRlcF9oYW5kbGUpCit7CisJY29uc3QgaW50IGdlbiA9IGludGVsX2dlbihp bnRlbF9nZXRfZHJtX2RldmlkKGZkKSk7CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVj dDIgb2JqWzJdOworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSByZWxvY3Nb Ml07CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmOworCXVuc2lnbmVk IGVuZ2luZXNbMTZdOworCXVuc2lnbmVkIG5lbmdpbmUsIGhhbmRsZTsKKwlpbnQgaSA9IDAsIHJl bG9jX2NvdW50ID0gMCwgYnVmX2NvdW50ID0gMDsKKworCWJ1Zl9jb3VudCA9IDA7CisJbmVuZ2lu ZSA9IDA7CisJaWYgKGVuZ2luZSA8IDApIHsKKwkJZm9yX2VhY2hfZW5naW5lKGZkLCBlbmdpbmUp CisJCQlpZiAoZW5naW5lKQorCQkJCWVuZ2luZXNbbmVuZ2luZSsrXSA9IGVuZ2luZTsKKwl9IGVs c2UgeworCQlnZW1fcmVxdWlyZV9yaW5nKGZkLCBlbmdpbmUpOworCQllbmdpbmVzW25lbmdpbmUr K10gPSBlbmdpbmU7CisJfQorCWlndF9yZXF1aXJlKG5lbmdpbmUpOworCisJbWVtc2V0KCZleGVj YnVmLCAwLCBzaXplb2YoZXhlY2J1ZikpOworCW1lbXNldChvYmosIDAsIHNpemVvZihvYmopKTsK KwltZW1zZXQocmVsb2NzLCAwLCBzaXplb2YocmVsb2NzKSk7CisKKwlleGVjYnVmLmJ1ZmZlcnNf cHRyID0gKHVpbnRwdHJfdCkgb2JqOworCWhhbmRsZSA9IGdlbV9jcmVhdGUoZmQsIGJvX3NpemUp OworCWJhdGNoID0gZ2VtX21tYXBfX2d0dChmZCwgaGFuZGxlLCBib19zaXplLCBQUk9UX1dSSVRF KTsKKwlpZ3RfYXNzZXJ0KGJhdGNoKTsKKwlnZW1fc2V0X2RvbWFpbihmZCwgaGFuZGxlLAorCQkJ STkxNV9HRU1fRE9NQUlOX0dUVCwgSTkxNV9HRU1fRE9NQUlOX0dUVCk7CisKKwlpZiAoZGVwX2hh bmRsZSA+IDApIHsKKwkJaWd0X2Fzc2VydChuZW5naW5lID09IDEpOworCQkvKiBkdW1teSB3cml0 ZSB0byBkZXBlbmRlbmN5ICovCisJCWZpbGxfb2JqZWN0KCZvYmpbYnVmX2NvdW50XSwgZGVwX2hh bmRsZSwgTlVMTCwgMCk7CisJCWJ1Zl9jb3VudCsrOworCisJCWZpbGxfcmVsb2MoJnJlbG9jc1ty ZWxvY19jb3VudF0sIGRlcF9oYW5kbGUsIDI1NiwKKwkJCSAgIEk5MTVfR0VNX0RPTUFJTl9SRU5E RVIsCisJCQkgICBJOTE1X0dFTV9ET01BSU5fUkVOREVSKTsKKwkJcmVsb2NfY291bnQrKzsKKwl9 CisKKwlpZiAoZ2VuID49IDgpIHsKKwkJYmF0Y2hbaSsrXSA9IE1JX0JBVENIX0JVRkZFUl9TVEFS VCB8IDEgPDwgOCB8IDE7CisJCS8qIHJlY3Vyc2UgKi8KKwkJZmlsbF9yZWxvYygmcmVsb2NzW3Jl bG9jX2NvdW50XSwgaGFuZGxlLCBpLAorCQkJICAgSTkxNV9HRU1fRE9NQUlOX0NPTU1BTkQsIDAp OworCQliYXRjaFtpKytdID0gMDsKKwkJYmF0Y2hbaSsrXSA9IDA7CisJfSBlbHNlIGlmIChnZW4g Pj0gNikgeworCQliYXRjaFtpKytdID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwgMSA8PCA4Owor CQkvKiByZWN1cnNlICovCisJCWZpbGxfcmVsb2MoJnJlbG9jc1tyZWxvY19jb3VudF0sIGhhbmRs ZSwgaSwKKwkJCSAgIEk5MTVfR0VNX0RPTUFJTl9DT01NQU5ELCAwKTsKKwkJYmF0Y2hbaSsrXSA9 IDA7CisJfSBlbHNlIHsKKwkJYmF0Y2hbaSsrXSA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IDIg PDwgNiB8CisJCQkoKGdlbiA8IDQpID8gMSA6IDApOworCQkvKiByZWN1cnNlICovCisJCWZpbGxf cmVsb2MoJnJlbG9jc1tyZWxvY19jb3VudF0sIGhhbmRsZSwgaSwKKwkJCSAgIEk5MTVfR0VNX0RP TUFJTl9DT01NQU5ELCAwKTsKKwkJYmF0Y2hbaSsrXSA9IDA7CisJCWlmIChnZW4gPCA0KQorCQkJ cmVsb2NzW3JlbG9jX2NvdW50XS5kZWx0YSA9IDE7CisJfQorCXJlbG9jX2NvdW50Kys7CisKKwlm aWxsX29iamVjdCgmb2JqW2J1Zl9jb3VudF0sIGhhbmRsZSwgcmVsb2NzLCByZWxvY19jb3VudCk7 CisJYnVmX2NvdW50Kys7CisKKwlmb3IgKGkgPSAwOyBpIDwgbmVuZ2luZTsgaSsrKSB7CisJCWV4 ZWNidWYuZmxhZ3MgJj0gfkVOR0lORV9NQVNLOworCQlleGVjYnVmLmZsYWdzID0gZW5naW5lc1tp XTsKKwkJZXhlY2J1Zi5idWZmZXJfY291bnQgPSBidWZfY291bnQ7CisJCWdlbV9leGVjYnVmKGZk LCAmZXhlY2J1Zik7CisJfQorCisJcmV0dXJuIGhhbmRsZTsKK30KKworc3RhdGljIHZvaWQgZXhp dF9iYXRjaF9oYW5kbGVyKGludCBzaWcsIHNpZ2luZm9fdCAqaW5mbywgdm9pZCAqc3BpbikKK3sK KwkqYmF0Y2ggPSBNSV9CQVRDSF9CVUZGRVJfRU5EOworCV9fc3luY19zeW5jaHJvbml6ZSgpOwor fQorCisvKioKKyAqIGlndF9zcGluX2JhdGNoX25ldzoKKyAqIEBmZDogb3BlbiBpOTE1IGRybSBm aWxlIGRlc2NyaXB0b3IKKyAqIEBlbmdpbmU6IFJpbmcgdG8gZXhlY3V0ZSBiYXRjaCBPUidkIHdp dGggZXhlY2J1ZiBmbGFncy4gSWYgdmFsdWUgaXMgbGVzcworICogICAgICAgICAgdGhhbiAwLCBl eGVjdXRlIG9uIGFsbCBhdmFpbGFibGUgcmluZ3MuCisgKiBAZGVwX2hhbmRsZTogaGFuZGxlIHRv IGEgYnVmZmVyIG9iamVjdCBkZXBlbmRlbmN5LiBJZiBncmVhdGVyIHRoYW4gMCwgYWRkIGEKKyAq ICAgICAgICAgICAgICByZWxvY2F0aW9uIGVudHJ5IHRvIHRoaXMgYnVmZmVyIHdpdGhpbiB0aGUg YmF0Y2guCisgKgorICogU3RhcnQgYSByZWN1cnNpdmUgYmF0Y2ggb24gYSByaW5nLiBJbW1lZGlh dGVseSByZXR1cm5zIGEgI2lndF9zcGluX3QgdGhhdAorICogY29udGFpbnMgdGhlIGJhdGNoJ3Mg aGFuZGxlIHRoYXQgY2FuIGJlIHdhaXRlZCB1cG9uLiBUaGUgcmV0dXJuZWQgc3RydWN0dXJlCisg KiBtdXN0IGJlIHBhc3NlZCB0byBpZ3Rfc3Bpbl9iYXRjaF9mcmVlKCkgZm9yIHBvc3QtcHJvY2Vz c2luZy4KKyAqCisgKiBSZXR1cm5zOgorICogU3RydWN0dXJlIHdpdGggaGVscGVyIGludGVybmFs IHN0YXRlIGZvciBpZ3Rfc3Bpbl9iYXRjaF9mcmVlKCkuCisgKi8KK2lndF9zcGluX3QgKgoraWd0 X3NwaW5fYmF0Y2hfbmV3KGludCBmZCwgaW50IGVuZ2luZSwgdW5zaWduZWQgZGVwX2hhbmRsZSkK K3sKKwlpZ3Rfc3Bpbl90ICpzcGluID0gY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgaWd0X3NwaW4p KTsKKwl1aW50MzJfdCBoYW5kbGUgPSBlbWl0X3JlY3Vyc2l2ZV9iYXRjaChmZCwgZW5naW5lLCBk ZXBfaGFuZGxlKTsKKwlpbnQ2NF90IHdhaXRfdGltZW91dCA9IDA7CisJaWd0X2Fzc2VydF9lcShn ZW1fd2FpdChmZCwgaGFuZGxlLCAmd2FpdF90aW1lb3V0KSwgLUVUSU1FKTsKKworCXNwaW4tPmhh bmRsZSA9IGhhbmRsZTsKKwlzcGluLT5iYXRjaCA9IGJhdGNoOworCXNwaW4tPnRpbWVyID0gTlVM TDsKKworCXJldHVybiBzcGluOworfQorCisvKioKKyAqIGlndF9zcGluX2JhdGNoX3NldF90aW1l b3V0OgorICogQHNwaW46IHNwaW4gYmF0Y2ggc3RhdGUgZnJvbSBpZ3Rfc3Bpbl9iYXRjaF9uZXco KQorICogQG5zOiBhbW91bnQgb2YgdGltZSBpbiBuYW5vc2Vjb25kcyB0aGUgYmF0Y2ggY29udGlu dWVzIHRvIGV4ZWN1dGUKKyAqICAgICAgYmVmb3JlIGZpbmlzaGluZy4KKyAqCisgKiBTcGVjaWZ5 IGEgdGltZW91dC4gVGhpcyBlbmRzIHRoZSByZWN1cnNpdmUgYmF0Y2ggYXNzb2NpYXRlZCB3aXRo IEBzcGluIGFmdGVyCisgKiB0aGUgdGltZW91dCBoYXMgZWxhcHNlZC4KKyAqLwordm9pZCBpZ3Rf c3Bpbl9iYXRjaF9zZXRfdGltZW91dChpZ3Rfc3Bpbl90ICpzcGluLCBpbnQ2NF90IG5zKQorewor CXRpbWVyX3QgdGltZXI7CisJc3RydWN0IHNpZ2V2ZW50IHNldjsKKwlzdHJ1Y3Qgc2lnYWN0aW9u IGFjdDsKKwlzdHJ1Y3QgaXRpbWVyc3BlYyBpdHM7CisKKwlpZ3RfYXNzZXJ0KG5zID4gMCk7CisJ aWYgKCFzcGluKQorCQlyZXR1cm47CisKKwltZW1zZXQoJnNldiwgMCwgc2l6ZW9mKHNldikpOwor CXNldi5zaWdldl9ub3RpZnkgPSBTSUdFVl9TSUdOQUwgfCBTSUdFVl9USFJFQURfSUQ7CisJc2V2 LnNpZ2V2X25vdGlmeV90aHJlYWRfaWQgPSBnZXR0aWQoKTsKKwlzZXYuc2lnZXZfc2lnbm8gPSBT SUdSVE1JTiArIDE7CisJaWd0X2Fzc2VydCh0aW1lcl9jcmVhdGUoQ0xPQ0tfTU9OT1RPTklDLCAm c2V2LCAmdGltZXIpID09IDApOworCWlndF9hc3NlcnQodGltZXIgPiAwKTsKKworCW1lbXNldCgm YWN0LCAwLCBzaXplb2YoYWN0KSk7CisJYWN0LnNhX3NpZ2FjdGlvbiA9IGV4aXRfYmF0Y2hfaGFu ZGxlcjsKKwlhY3Quc2FfZmxhZ3MgPSBTQV9TSUdJTkZPOworCWlndF9hc3NlcnQoc2lnYWN0aW9u KFNJR1JUTUlOICsgMSwgJmFjdCwgTlVMTCkgPT0gMCk7CisKKwltZW1zZXQoJml0cywgMCwgc2l6 ZW9mKGl0cykpOworCWl0cy5pdF92YWx1ZS50dl9zZWMgPSBucyAvIE5TRUNfUEVSX1NFQzsKKwlp dHMuaXRfdmFsdWUudHZfbnNlYyA9IG5zICUgTlNFQ19QRVJfU0VDOworCWlndF9hc3NlcnQodGlt ZXJfc2V0dGltZSh0aW1lciwgMCwgJml0cywgTlVMTCkgPT0gMCk7CisKKwlzcGluLT50aW1lciA9 IHRpbWVyOworfQorCisvKioKKyAqIGlndF9zcGluX2JhdGNoX2VuZDoKKyAqIEBzcGluOiBzcGlu IGJhdGNoIHN0YXRlIGZyb20gaWd0X3NwaW5fYmF0Y2hfbmV3KCkKKyAqCisgKiBFbmQgdGhlIHJl Y3Vyc2l2ZSBiYXRjaCBhc3NvY2lhdGVkIHdpdGggQHNwaW4gbWFudWFsbHkuCisgKi8KK3ZvaWQg aWd0X3NwaW5fYmF0Y2hfZW5kKGlndF9zcGluX3QgKnNwaW4pCit7CisJaWYgKCFzcGluKQorCQly ZXR1cm47CisKKwlpZiAoc3Bpbi0+aGFuZGxlID4gMCkKKwkJZXhpdF9iYXRjaF9oYW5kbGVyKDAs IE5VTEwsIE5VTEwpOworfQorCisvKioKKyAqIGlndF9zcGluX2JhdGNoX2ZyZWU6CisgKiBAZmQ6 IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCisgKiBAc3Bpbjogc3BpbiBiYXRjaCBzdGF0 ZSBmcm9tIGlndF9zcGluX2JhdGNoX25ldygpCisgKgorICogVGhpcyBmdW5jdGlvbiBkb2VzIHRo ZSBuZWNlc3NhcnkgcG9zdC1wcm9jZXNzaW5nIGFmdGVyIHN0YXJ0aW5nIGEgcmVjdXJzaXZlCisg KiBiYXRjaCB3aXRoIGlndF9zcGluX2JhdGNoX25ldygpLgorICovCit2b2lkIGlndF9zcGluX2Jh dGNoX2ZyZWUoaW50IGZkLCBpZ3Rfc3Bpbl90ICpzcGluKQoreworCWlmICghc3BpbikKKwkJcmV0 dXJuOworCisJaWYgKHNwaW4tPmhhbmRsZSA+IDApCisJCWdlbV9jbG9zZShmZCwgc3Bpbi0+aGFu ZGxlKTsKKworCWlmIChzcGluLT50aW1lciA+IDApCisJCXRpbWVyX2RlbGV0ZShzcGluLT50aW1l cik7CisKKwltdW5tYXAoc3Bpbi0+YmF0Y2gsIGJvX3NpemUpOworCWZyZWUoc3Bpbik7Cit9CisK Ky8qKgorICogaWd0X3NwaW5fYmF0Y2hfd2FpdDoKKyAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxl IGRlc2NyaXB0b3IKKyAqIEBuczogYW1vdW50IG9mIHRpbWUgaW4gbmFub3NlY29uZHMgdGhlIGJh dGNoIGNvbnRpbnVlcyB0byBleGVjdXRlCisgKiAgICAgIGJlZm9yZSBmaW5pc2hpbmcuCisgKiBA ZW5naW5lOiByaW5nIHRvIGV4ZWN1dGUgYmF0Y2ggT1InZCB3aXRoIGV4ZWNidWYgZmxhZ3MuIElm IHZhbHVlIGlzIGxlc3MKKyAqICAgICAgICAgIHRoYW4gMCwgZXhlY3V0ZSBvbiBhbGwgYXZhaWxh YmxlIHJpbmdzLgorICogQGRlcF9oYW5kbGU6IGhhbmRsZSB0byBhIGJ1ZmZlciBvYmplY3QgZGVw ZW5kZW5jeS4gSWYgZ3JlYXRlciB0aGFuIDAsIGluY2x1ZGUKKyAqICAgICAgICAgICAgICB0aGlz IGJ1ZmZlciBvbiB0aGUgd2FpdCBkZXBlbmRlbmN5CisgKgorICogQ29udmVuaWVuY2UgZnVuY3Rp b24gc2ltaWxhciB0byBpZ3Rfc3Bpbl9iYXRjaF9uZXcoKSB0aGVuIHNldHRpbmcgdGhlIHRpbWVv dXQKKyAqIHdpdGggaWd0X3NwaW5fYmF0Y2hfc2V0X3RpbWVvdXQoKSwgYnV0IHdhaXRzIG9uIHRo ZSByZWN1cnNpdmUgYmF0Y2ggdG8gZmluaXNoCisgKiBpbnN0ZWFkIG9mIHJldHVybmluZyByaWdo dCBhd2F5LiBUaGUgZnVuY3Rpb24gYWxzbyBkb2VzIHRoZSBuZWNlc3NhcnkKKyAqIHBvc3QtcHJv Y2Vzc2luZyBhdXRvbWF0aWNhbGx5LgorICovCit2b2lkIGlndF9zcGluX2JhdGNoX3dhaXQoaW50 IGZkLCBpbnQ2NF90IG5zLCBpbnQgZW5naW5lLCB1bnNpZ25lZCBkZXBfaGFuZGxlKQoreworCWln dF9zcGluX3QgKnNwaW4gPSBpZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIGVuZ2luZSwgZGVwX2hhbmRs ZSk7CisJaW50NjRfdCB3YWl0X3RpbWVvdXQgPSBucyArICgwLjUgKiBOU0VDX1BFUl9TRUMpOwor CWlndF9zcGluX2JhdGNoX3NldF90aW1lb3V0KHNwaW4sIHdhaXRfdGltZW91dCk7CisJaWd0X2Fz c2VydF9lcShnZW1fd2FpdChmZCwgc3Bpbi0+aGFuZGxlLCAmd2FpdF90aW1lb3V0KSwgMCk7CisK KwlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGZkLCBzcGluKTsKK30KZGlmZiAtLWdpdCBhL2xpYi9pZ3Rf ZHVtbXlsb2FkLmggYi9saWIvaWd0X2R1bW15bG9hZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjY4ZGMwZDkKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvaWd0X2R1bW15bG9h ZC5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNiBJbnRlbCBDb3Jw b3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICog dG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFs bCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo ZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us IEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAq CisgKi8KKworI2lmbmRlZiBfX0lHVF9EVU1NWUxPQURfSF9fCisjZGVmaW5lIF9fSUdUX0RVTU1Z TE9BRF9IX18KKwordHlwZWRlZiBzdHJ1Y3QgaWd0X3NwaW4geworCXVuc2lnbmVkIGhhbmRsZTsK Kwl1aW50MzJfdCAqYmF0Y2g7CisJdGltZXJfdCB0aW1lcjsKK30gaWd0X3NwaW5fdDsKKworCitp Z3Rfc3Bpbl90ICoKK2lndF9zcGluX2JhdGNoX25ldyhpbnQgZmQsIGludCBlbmdpbmUsIHVuc2ln bmVkIGRlcF9oYW5kbGUpOworCit2b2lkIGlndF9zcGluX2JhdGNoX3NldF90aW1lb3V0KGlndF9z cGluX3QgKnNwaW4sIGludDY0X3QgbnMpOworCit2b2lkIGlndF9zcGluX2JhdGNoX2VuZChpZ3Rf c3Bpbl90ICpzcGluKTsKKwordm9pZCBpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGludCBmZCwgaWd0X3Nw aW5fdCAqc3Bpbik7CisKK3ZvaWQgaWd0X3NwaW5fYmF0Y2hfd2FpdChpbnQgZmQsIGludDY0X3Qg bnMsIGludCBlbmdpbmUsIHVuc2lnbmVkIGRlcF9oYW5kbGUpOworCisKKyNlbmRpZiAvKiBfX0lH VF9EVU1NWUxPQURfSF9fICovCi0tIAoyLjkuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==