From mboxrd@z Thu Jan 1 00:00:00 1970 From: Abdiel Janulgue Subject: [i-g-t PATCH v8 2/5] lib: add igt_dummyload Date: Thu, 17 Nov 2016 19:45:17 +0200 Message-ID: <1479404717-10397-1-git-send-email-abdiel.janulgue@linux.intel.com> References: <20161116141758.GF22232@nuc-i3427.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4DD916E2B4 for ; Thu, 17 Nov 2016 09:49:48 +0000 (UTC) In-Reply-To: <20161116141758.GF22232@nuc-i3427.alporthouse.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 c2hvdWxkIGFsd2F5cyBiZSBsYXN0LgoKQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJA ZmZ3bGwuY2g+CkNjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiB0b21l dUB0b21ldXZpem9zby5uZXQKU2lnbmVkLW9mZi1ieTogQWJkaWVsIEphbnVsZ3VlIDxhYmRpZWwu amFudWxndWVAbGludXguaW50ZWwuY29tPgotLS0KIC4uLi9pbnRlbC1ncHUtdG9vbHMvaW50ZWwt Z3B1LXRvb2xzLWRvY3MueG1sICAgICAgIHwgICAxICsKIGxpYi9NYWtlZmlsZS5zb3VyY2VzICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKIGxpYi9pZ3QuaCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGxpYi9pZ3RfZHVtbXlsb2Fk LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjgwICsrKysrKysrKysrKysrKysr KysrKwogbGliL2lndF9kdW1teWxvYWQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgNDMgKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAzMjcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGxpYi9pZ3RfZHVtbXlsb2FkLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvaWd0 X2R1bW15bG9hZC5oCgpkaWZmIC0tZ2l0IGEvZG9jcy9yZWZlcmVuY2UvaW50ZWwtZ3B1LXRvb2xz L2ludGVsLWdwdS10b29scy1kb2NzLnhtbCBiL2RvY3MvcmVmZXJlbmNlL2ludGVsLWdwdS10b29s cy9pbnRlbC1ncHUtdG9vbHMtZG9jcy54bWwKaW5kZXggYzg2MmYyYS4uNTU5MDJhYiAxMDA2NDQK LS0tIGEvZG9jcy9yZWZlcmVuY2UvaW50ZWwtZ3B1LXRvb2xzL2ludGVsLWdwdS10b29scy1kb2Nz LnhtbAorKysgYi9kb2NzL3JlZmVyZW5jZS9pbnRlbC1ncHUtdG9vbHMvaW50ZWwtZ3B1LXRvb2xz LWRvY3MueG1sCkBAIC0zMiw2ICszMiw3IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2lu dGVsX2lvLnhtbCIvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pZ3RfdmM0LnhtbCIvPgog ICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9pZ3RfdmdlbS54bWwiLz4KKyAgICA8eGk6aW5jbHVk ZSBocmVmPSJ4bWwvaWd0X2R1bW15bG9hZC54bWwiLz4KICAgPC9jaGFwdGVyPgogICA8eGk6aW5j bHVkZSBocmVmPSJ4bWwvaWd0X3Rlc3RfcHJvZ3JhbXMueG1sIi8+CiAKZGlmZiAtLWdpdCBhL2xp Yi9NYWtlZmlsZS5zb3VyY2VzIGIvbGliL01ha2VmaWxlLnNvdXJjZXMKaW5kZXggZThlMjc3Yi4u N2ZjNWVjMiAxMDA2NDQKLS0tIGEvbGliL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvbGliL01ha2Vm aWxlLnNvdXJjZXMKQEAgLTc1LDYgKzc1LDggQEAgbGliX3NvdXJjZV9saXN0ID0JIAlcCiAJaWd0 X2RyYXcuaAkJXAogCWlndF9wbS5jCQlcCiAJaWd0X3BtLmgJCVwKKwlpZ3RfZHVtbXlsb2FkLmMJ CVwKKwlpZ3RfZHVtbXlsb2FkLmgJCVwKIAl1d2lsZG1hdC91d2lsZG1hdC5oCVwKIAl1d2lsZG1h dC91d2lsZG1hdC5jCVwKIAkkKE5VTEwpCmRpZmYgLS1naXQgYS9saWIvaWd0LmggYi9saWIvaWd0 LmgKaW5kZXggZDc1MWYyNC4uYTAwMjhkNSAxMDA2NDQKLS0tIGEvbGliL2lndC5oCisrKyBiL2xp Yi9pZ3QuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgImlndF9jb3JlLmgiCiAjaW5jbHVk ZSAiaWd0X2RlYnVnZnMuaCIKICNpbmNsdWRlICJpZ3RfZHJhdy5oIgorI2luY2x1ZGUgImlndF9k dW1teWxvYWQuaCIKICNpbmNsdWRlICJpZ3RfZmIuaCIKICNpbmNsdWRlICJpZ3RfZ3QuaCIKICNp bmNsdWRlICJpZ3Rfa21zLmgiCmRpZmYgLS1naXQgYS9saWIvaWd0X2R1bW15bG9hZC5jIGIvbGli L2lndF9kdW1teWxvYWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTdh MmFjCi0tLSAvZGV2L251bGwKKysrIGIvbGliL2lndF9kdW1teWxvYWQuYwpAQCAtMCwwICsxLDI4 MCBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBvcmF0aW9uCisgKgorICog UGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJz b24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk b2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBT b2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9u CisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz dHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVy bmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAq CisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGlj ZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGlu IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4K KyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5U WSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZF TlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBG T1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g QU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJP TSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP UiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaW5jbHVk ZSAiaWd0LmgiCisjaW5jbHVkZSAiaWd0X2R1bW15bG9hZC5oIgorI2luY2x1ZGUgPHRpbWUuaD4K KyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorCisvKioKKyAq IFNFQ1RJT046aWd0X2R1bW15bG9hZAorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBMaWJyYXJ5IGZv ciBzdWJtaXR0aW5nIEdQVSB3b3JrbG9hZHMKKyAqIEB0aXRsZTogRHVtbXlsb2FkCisgKiBAaW5j bHVkZTogaWd0LmgKKyAqCisgKiBBIGxvdCBvZiBpZ3QgdGVzdGNhc2VzIG5lZWQgc29tZSBHUFUg d29ya2xvYWQgdG8gbWFrZSBzdXJlIGEgcmFjZSB3aW5kb3cgaXMKKyAqIGJpZyBlbm91Z2guIFVu Zm9ydHVuYXRlbHkgaGF2aW5nIGEgZml4ZWQgYW1vdW50IG9mIHdvcmtsb2FkIGxlYWRzIHRvCisg KiBzcHVyaW91cyB0ZXN0IGZhaWx1cmVzIG9yIG92ZXJseSBsb25nIHJ1bnRpbWVzIG9uIHNvbWUg ZmFzdC9zbG93IHBsYXRmb3Jtcy4KKyAqIFRoaXMgbGlicmFyeSBjb250YWlucyBmdW5jdGlvbmFs aXR5IHRvIHN1Ym1pdCBHUFUgd29ya2xvYWRzIHRoYXQgc2hvdWxkCisgKiBjb25zdW1lIGV4YWN0 bHkgYSBzcGVjaWZpYyBhbW91bnQgb2YgdGltZS4KKyAqLworCisjZGVmaW5lIExPQ0FMX0k5MTVf RVhFQ19CU0RfU0hJRlQgICAgICAoMTMpCisjZGVmaW5lIExPQ0FMX0k5MTVfRVhFQ19CU0RfTUFT SyAgICAgICAoMyA8PCBMT0NBTF9JOTE1X0VYRUNfQlNEX1NISUZUKQorCisjZGVmaW5lIEVOR0lO RV9NQVNLICAoSTkxNV9FWEVDX1JJTkdfTUFTSyB8IExPQ0FMX0k5MTVfRVhFQ19CU0RfTUFTSykK Kworc3RhdGljIGNvbnN0IGludCBib19zaXplID0gNDA5NjsKKworc3RhdGljIHZvaWQKK2ZpbGxf b2JqZWN0KHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICpvYmosIHVpbnQzMl90IGdl bV9oYW5kbGUsCisJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVs b2NzLCB1aW50MzJfdCBjb3VudCkKK3sKKwltZW1zZXQob2JqLCAwLCBzaXplb2YoKm9iaikpOwor CW9iai0+aGFuZGxlID0gZ2VtX2hhbmRsZTsKKwlvYmotPnJlbG9jYXRpb25fY291bnQgPSBjb3Vu dDsKKwlvYmotPnJlbG9jc19wdHIgPSAodWludHB0cl90KXJlbG9jczsKK30KKworc3RhdGljIHZv aWQKK2ZpbGxfcmVsb2Moc3RydWN0IGRybV9pOTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5ICpyZWxv YywKKwkgICB1aW50MzJfdCBnZW1faGFuZGxlLCB1aW50MzJfdCBvZmZzZXQsCisJICAgdWludDMy X3QgcmVhZF9kb21haW5zLCB1aW50MzJfdCB3cml0ZV9kb21haW5zKQoreworCXJlbG9jLT50YXJn ZXRfaGFuZGxlID0gZ2VtX2hhbmRsZTsKKwlyZWxvYy0+ZGVsdGEgPSAwOworCXJlbG9jLT5vZmZz ZXQgPSBvZmZzZXQgKiBzaXplb2YodWludDMyX3QpOworCXJlbG9jLT5wcmVzdW1lZF9vZmZzZXQg PSAwOworCXJlbG9jLT5yZWFkX2RvbWFpbnMgPSByZWFkX2RvbWFpbnM7CisJcmVsb2MtPndyaXRl X2RvbWFpbiA9IHdyaXRlX2RvbWFpbnM7Cit9CisKKy8qCisgKiBOZWVkcyB0byBiZSBnbG9iYWwu IFNpZ25hbCBoYW5kbGVycyBkb24ndCBhY2NlcHQgYXJndW1lbnRzCisgKi8KK3N0YXRpYyB1aW50 MzJfdCAqYmF0Y2g7CisKK3N0YXRpYyB1aW50MzJfdCBlbWl0X3JlY3Vyc2l2ZV9iYXRjaChpbnQg ZmQsIGludCBlbmdpbmUsIHVuc2lnbmVkIGRlcF9oYW5kbGUpCit7CisJY29uc3QgaW50IGdlbiA9 IGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSk7CisJc3RydWN0IGRybV9pOTE1X2dl bV9leGVjX29iamVjdDIgb2JqWzJdOworCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9l bnRyeSByZWxvY3NbMl07CisJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVm OworCXVuc2lnbmVkIGVuZ2luZXNbMTZdOworCXVuc2lnbmVkIG5lbmdpbmUsIGhhbmRsZTsKKwlp bnQgaSA9IDAsIHJlbG9jX2NvdW50ID0gMCwgYnVmX2NvdW50ID0gMDsKKworCWJ1Zl9jb3VudCA9 IDA7CisJbmVuZ2luZSA9IDA7CisJaWYgKGVuZ2luZSA8IDApIHsKKwkJZm9yX2VhY2hfZW5naW5l KGZkLCBlbmdpbmUpCisJCQlpZiAoZW5naW5lKQorCQkJCWVuZ2luZXNbbmVuZ2luZSsrXSA9IGVu Z2luZTsKKwl9IGVsc2UgeworCQlnZW1fcmVxdWlyZV9yaW5nKGZkLCBlbmdpbmUpOworCQllbmdp bmVzW25lbmdpbmUrK10gPSBlbmdpbmU7CisJfQorCWlndF9yZXF1aXJlKG5lbmdpbmUpOworCisJ bWVtc2V0KCZleGVjYnVmLCAwLCBzaXplb2YoZXhlY2J1ZikpOworCW1lbXNldChvYmosIDAsIHNp emVvZihvYmopKTsKKwltZW1zZXQocmVsb2NzLCAwLCBzaXplb2YocmVsb2NzKSk7CisKKwlleGVj YnVmLmJ1ZmZlcnNfcHRyID0gKHVpbnRwdHJfdCkgb2JqOworCWhhbmRsZSA9IGdlbV9jcmVhdGUo ZmQsIGJvX3NpemUpOworCWJhdGNoID0gZ2VtX21tYXBfX2d0dChmZCwgaGFuZGxlLCBib19zaXpl LCBQUk9UX1dSSVRFKTsKKwlpZ3RfYXNzZXJ0KGJhdGNoKTsKKwlnZW1fc2V0X2RvbWFpbihmZCwg aGFuZGxlLAorCQkJSTkxNV9HRU1fRE9NQUlOX0dUVCwgSTkxNV9HRU1fRE9NQUlOX0dUVCk7CisK KwlpZiAoZGVwX2hhbmRsZSA+IDApIHsKKwkJaWd0X2Fzc2VydChuZW5naW5lID09IDEpOworCQkv KiBkdW1teSB3cml0ZSB0byBkZXBlbmRlbmN5ICovCisJCWZpbGxfb2JqZWN0KCZvYmpbYnVmX2Nv dW50XSwgZGVwX2hhbmRsZSwgTlVMTCwgMCk7CisJCWJ1Zl9jb3VudCsrOworCisJCWZpbGxfcmVs b2MoJnJlbG9jc1tyZWxvY19jb3VudF0sIGRlcF9oYW5kbGUsIDI1NiwKKwkJCSAgIEk5MTVfR0VN X0RPTUFJTl9SRU5ERVIsCisJCQkgICBJOTE1X0dFTV9ET01BSU5fUkVOREVSKTsKKwkJcmVsb2Nf Y291bnQrKzsKKwl9CisKKwlpZiAoZ2VuID49IDgpIHsKKwkJYmF0Y2hbaSsrXSA9IE1JX0JBVENI X0JVRkZFUl9TVEFSVCB8IDEgPDwgOCB8IDE7CisJCS8qIHJlY3Vyc2UgKi8KKwkJZmlsbF9yZWxv YygmcmVsb2NzW3JlbG9jX2NvdW50XSwgaGFuZGxlLCBpLAorCQkJICAgSTkxNV9HRU1fRE9NQUlO X0NPTU1BTkQsIDApOworCQliYXRjaFtpKytdID0gMDsKKwkJYmF0Y2hbaSsrXSA9IDA7CisJfSBl bHNlIGlmIChnZW4gPj0gNikgeworCQliYXRjaFtpKytdID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJU IHwgMSA8PCA4OworCQkvKiByZWN1cnNlICovCisJCWZpbGxfcmVsb2MoJnJlbG9jc1tyZWxvY19j b3VudF0sIGhhbmRsZSwgaSwKKwkJCSAgIEk5MTVfR0VNX0RPTUFJTl9DT01NQU5ELCAwKTsKKwkJ YmF0Y2hbaSsrXSA9IDA7CisJfSBlbHNlIHsKKwkJYmF0Y2hbaSsrXSA9IE1JX0JBVENIX0JVRkZF Ul9TVEFSVCB8IDIgPDwgNiB8CisJCQkoKGdlbiA8IDQpID8gMSA6IDApOworCQkvKiByZWN1cnNl ICovCisJCWZpbGxfcmVsb2MoJnJlbG9jc1tyZWxvY19jb3VudF0sIGhhbmRsZSwgaSwKKwkJCSAg IEk5MTVfR0VNX0RPTUFJTl9DT01NQU5ELCAwKTsKKwkJYmF0Y2hbaSsrXSA9IDA7CisJCWlmIChn ZW4gPCA0KQorCQkJcmVsb2NzW3JlbG9jX2NvdW50XS5kZWx0YSA9IDE7CisJfQorCXJlbG9jX2Nv dW50Kys7CisKKwlmaWxsX29iamVjdCgmb2JqW2J1Zl9jb3VudF0sIGhhbmRsZSwgcmVsb2NzLCBy ZWxvY19jb3VudCk7CisJYnVmX2NvdW50Kys7CisKKwlmb3IgKGkgPSAwOyBpIDwgbmVuZ2luZTsg aSsrKSB7CisJCWV4ZWNidWYuZmxhZ3MgJj0gfkVOR0lORV9NQVNLOworCQlleGVjYnVmLmZsYWdz ID0gZW5naW5lc1tpXTsKKwkJZXhlY2J1Zi5idWZmZXJfY291bnQgPSBidWZfY291bnQ7CisJCWdl bV9leGVjYnVmKGZkLCAmZXhlY2J1Zik7CisJfQorCisJcmV0dXJuIGhhbmRsZTsKK30KKworc3Rh dGljIHZvaWQgc2lnaXRlcihpbnQgc2lnLCBzaWdpbmZvX3QgKmluZm8sIHZvaWQgKmFyZykKK3sK KwkqYmF0Y2ggPSBNSV9CQVRDSF9CVUZGRVJfRU5EOworCV9fc3luY19zeW5jaHJvbml6ZSgpOwor fQorCitzdGF0aWMgdGltZXJfdCBzZXR1cF9iYXRjaF9leGl0X3RpbWVyKGludDY0X3QgbnMpCit7 CisJdGltZXJfdCB0aW1lcjsKKwlzdHJ1Y3Qgc2lnZXZlbnQgc2V2OworCXN0cnVjdCBzaWdhY3Rp b24gYWN0OworCXN0cnVjdCBpdGltZXJzcGVjIGl0czsKKworCW1lbXNldCgmc2V2LCAwLCBzaXpl b2Yoc2V2KSk7CisJc2V2LnNpZ2V2X25vdGlmeSA9IFNJR0VWX1NJR05BTCB8IFNJR0VWX1RIUkVB RF9JRDsKKwlzZXYuc2lnZXZfbm90aWZ5X3RocmVhZF9pZCA9IGdldHRpZCgpOworCXNldi5zaWdl dl9zaWdubyA9IFNJR1JUTUlOICsgMTsKKwlpZ3RfYXNzZXJ0KHRpbWVyX2NyZWF0ZShDTE9DS19N T05PVE9OSUMsICZzZXYsICZ0aW1lcikgPT0gMCk7CisJaWd0X2Fzc2VydCh0aW1lciA+IDApOwor CisJbWVtc2V0KCZhY3QsIDAsIHNpemVvZihhY3QpKTsKKwlhY3Quc2Ffc2lnYWN0aW9uID0gc2ln aXRlcjsKKwlhY3Quc2FfZmxhZ3MgPSBTQV9TSUdJTkZPOworCWlndF9hc3NlcnQoc2lnYWN0aW9u KFNJR1JUTUlOICsgMSwgJmFjdCwgTlVMTCkgPT0gMCk7CisKKwltZW1zZXQoJml0cywgMCwgc2l6 ZW9mKGl0cykpOworCWl0cy5pdF92YWx1ZS50dl9zZWMgPSBucyAvIE5TRUNfUEVSX1NFQzsKKwlp dHMuaXRfdmFsdWUudHZfbnNlYyA9IG5zICUgTlNFQ19QRVJfU0VDOworCWlndF9hc3NlcnQodGlt ZXJfc2V0dGltZSh0aW1lciwgMCwgJml0cywgTlVMTCkgPT0gMCk7CisKKwlyZXR1cm4gdGltZXI7 Cit9CisKKy8qKgorICogaWd0X3NwaW5fYmF0Y2hfbmV3OgorICogQGZkOiBvcGVuIGk5MTUgZHJt IGZpbGUgZGVzY3JpcHRvcgorICogQG5zOiBhbW91bnQgb2YgdGltZSBpbiBuYW5vc2Vjb25kcyB0 aGUgYmF0Y2ggZXhlY3V0ZXMgYWZ0ZXIgdGVybWluYXRpbmcuCisgKiAgICAgIElmIHZhbHVlIGlz IGxlc3MgdGhhbiAwLCBleGVjdXRlIGJhdGNoIGZvcmV2ZXIuCisgKiBAZW5naW5lOiBSaW5nIHRv IGV4ZWN1dGUgYmF0Y2ggT1InZCB3aXRoIGV4ZWNidWYgZmxhZ3MuIElmIHZhbHVlIGlzIGxlc3MK KyAqICAgICAgICAgIHRoYW4gMCwgZXhlY3V0ZSBvbiBhbGwgYXZhaWxhYmxlIHJpbmdzLgorICog QGRlcF9oYW5kbGU6IGhhbmRsZSB0byBhIGJ1ZmZlciBvYmplY3QgZGVwZW5kZW5jeS4gSWYgZ3Jl YXRlciB0aGFuIDAsIGFkZCBhCisgKiAgICAgICAgICAgICAgcmVsb2NhdGlvbiBlbnRyeSB0byB0 aGlzIGJ1ZmZlciB3aXRoaW4gdGhlIGJhdGNoLgorICoKKyAqIFN0YXJ0IGEgcmVjdXJzaXZlIGJh dGNoIG9uIGEgcmluZyB0aGF0IHRlcm1pbmF0ZXMgYWZ0ZXIgYW4gZXhhY3QgYW1vdW50CisgKiBv ZiB0aW1lIGhhcyBlbGFwc2VkLiBJbW1lZGlhdGVseSByZXR1cm5zIGEgI2lndF9zcGluX3QgdGhh dCBjb250YWlucyB0aGUKKyAqIGJhdGNoJ3MgaGFuZGxlIHRoYXQgY2FuIGJlIHdhaXRlZCB1cG9u LiBUaGUgcmV0dXJuZWQgc3RydWN0dXJlIG11c3QgYmUgcGFzc2VkIHRvCisgKiBpZ3Rfc3Bpbl9i YXRjaF9mcmVlKCkgZm9yIHBvc3QtcHJvY2Vzc2luZy4KKyAqCisgKiBSZXR1cm5zOgorICogU3Ry dWN0dXJlIHdpdGggaGVscGVyIGludGVybmFsIHN0YXRlIGZvciBpZ3Rfc3Bpbl9iYXRjaF9mcmVl KCkuCisgKi8KK2lndF9zcGluX3QgKgoraWd0X3NwaW5fYmF0Y2hfbmV3KGludCBmZCwgaW50NjRf dCBucywgaW50IGVuZ2luZSwgdW5zaWduZWQgZGVwX2hhbmRsZSkKK3sKKwl0aW1lcl90IHRpbWVy OworCWlndF9zcGluX3QgKnNwaW4gPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBpZ3Rfc3Bpbikp OworCXVpbnQzMl90IGhhbmRsZSA9IGVtaXRfcmVjdXJzaXZlX2JhdGNoKGZkLCBlbmdpbmUsIGRl cF9oYW5kbGUpOworCWludDY0X3Qgd2FpdF90aW1lb3V0ID0gMDsKKwlpZ3RfYXNzZXJ0X2VxKGdl bV93YWl0KGZkLCBoYW5kbGUsICZ3YWl0X3RpbWVvdXQpLCAtRVRJTUUpOworCisJc3Bpbi0+aGFu ZGxlID0gaGFuZGxlOworCXNwaW4tPmJhdGNoID0gYmF0Y2g7CisJc3Bpbi0+dGltZXIgPSBOVUxM OworCWlmIChucyA9PSAwKSB7CisJCSpiYXRjaCA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisJCV9f c3luY19zeW5jaHJvbml6ZSgpOworCX0gZWxzZSBpZiAobnMgPiAwKSB7CisJCXRpbWVyID0gc2V0 dXBfYmF0Y2hfZXhpdF90aW1lcihucyk7CisJCXNwaW4tPnRpbWVyID0gdGltZXI7CisJfQorCisJ cmV0dXJuIHNwaW47Cit9CisKKy8qKgorICogaWd0X3NwaW5fYmF0Y2hfZnJlZToKKyAqIEBmZDog b3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKKyAqIEBhcmc6IHNwaW4gYmF0Y2ggc3RhdGUg ZnJvbSBpZ3Rfc3Bpbl9iYXRjaCgpCisgKgorICogVGhpcyBmdW5jdGlvbiBkb2VzIHRoZSBuZWNl c3NhcnkgcG9zdC1wcm9jZXNzaW5nIGFmdGVyIHN0YXJ0aW5nIGEgcmVjdXJzaXZlCisgKiBiYXRj aCB3aXRoIGlndF9zcGluX2JhdGNoX25ldygpLgorICovCit2b2lkIGlndF9zcGluX2JhdGNoX2Zy ZWUoaW50IGZkLCBpZ3Rfc3Bpbl90ICphcmcpCit7CisJaWYgKCFhcmcpCisJCXJldHVybjsKKwor CWlmIChhcmctPmhhbmRsZSA+IDApCisJCWdlbV9jbG9zZShmZCwgYXJnLT5oYW5kbGUpOworCisJ aWYgKGFyZy0+dGltZXIgPiAwKQorCQl0aW1lcl9kZWxldGUoYXJnLT50aW1lcik7CisKKwltdW5t YXAoYXJnLT5iYXRjaCwgYm9fc2l6ZSk7CisJZnJlZShhcmcpOworfQorCisvKioKKyAqIGlndF9z cGluX2JhdGNoX3dhaXQ6CisgKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCisg KiBAbnM6IGFtb3VudCBvZiB0aW1lIGluIG5hbm9zZWNvbmRzIHRoZSBiYXRjaCBleGVjdXRlcyBh ZnRlciB0ZXJtaW5hdGluZy4KKyAqICAgICAgSWYgdmFsdWUgaXMgbGVzcyB0aGFuIDAsIGV4ZWN1 dGUgYmF0Y2ggZm9yZXZlci4KKyAqIEBlbmdpbmU6IHJpbmcgdG8gZXhlY3V0ZSBiYXRjaCBPUidk IHdpdGggZXhlY2J1ZiBmbGFncy4gSWYgdmFsdWUgaXMgbGVzcworICogICAgICAgICAgdGhhbiAw LCBleGVjdXRlIG9uIGFsbCBhdmFpbGFibGUgcmluZ3MuCisgKiBAZGVwX2hhbmRsZTogaGFuZGxl IHRvIGEgYnVmZmVyIG9iamVjdCBkZXBlbmRlbmN5LiBJZiBncmVhdGVyIHRoYW4gMCwgaW5jbHVk ZQorICogICAgICAgICAgICAgIHRoaXMgYnVmZmVyIG9uIHRoZSB3YWl0IGRlcGVuZGVuY3kKKyAq CisgKiBUaGlzIGlzIHNpbWlsYXIgdG8gaWd0X3NwaW5fYmF0Y2hfbmV3KCksIGJ1dCB3YWl0cyBv biB0aGUgcmVjdXJzaXZlIGJhdGNoIHRvIGZpbmlzaAorICogaW5zdGVhZCBvZiByZXR1cm5pbmcg cmlnaHQgYXdheS4gVGhlIGZ1bmN0aW9uIGFsc28gZG9lcyB0aGUgbmVjZXNzYXJ5CisgKiBwb3N0 LXByb2Nlc3NpbmcgYXV0b21hdGljYWxseSBpZiBzZXQgdG8gdGltZW91dC4KKyAqLwordm9pZCBp Z3Rfc3Bpbl9iYXRjaF93YWl0KGludCBmZCwgaW50NjRfdCBucywgaW50IGVuZ2luZSwgdW5zaWdu ZWQgZGVwX2hhbmRsZSkKK3sKKwlpZ3Rfc3Bpbl90ICpzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3 KGZkLCBucywgZW5naW5lLCBkZXBfaGFuZGxlKTsKKwlpbnQ2NF90IHdhaXRfdGltZW91dCA9IG5z ICsgKDAuNSAqIE5TRUNfUEVSX1NFQyk7CisJaWd0X2Fzc2VydF9lcShnZW1fd2FpdChmZCwgc3Bp bi0+aGFuZGxlLCAmd2FpdF90aW1lb3V0KSwgMCk7CisKKwlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGZk LCBzcGluKTsKK30KZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZHVtbXlsb2FkLmggYi9saWIvaWd0X2R1 bW15bG9hZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNmU4NGIKLS0t IC9kZXYvbnVsbAorKysgYi9saWIvaWd0X2R1bW15bG9hZC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8q CisgKiBDb3B5cmlnaHQgwqkgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp bmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhl IHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs IHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0 byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1 ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICog VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z IEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxM CisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD TEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg REVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2lmbmRlZiBfX0lHVF9E VU1NWUxPQURfSF9fCisjZGVmaW5lIF9fSUdUX0RVTU1ZTE9BRF9IX18KKwordHlwZWRlZiBzdHJ1 Y3QgaWd0X3NwaW4geworCXVuc2lnbmVkIGhhbmRsZTsKKwl1aW50MzJfdCAqYmF0Y2g7CisJdGlt ZXJfdCB0aW1lcjsKK30gaWd0X3NwaW5fdDsKKworCitpZ3Rfc3Bpbl90ICoKK2lndF9zcGluX2Jh dGNoX25ldyhpbnQgZmQsIGludDY0X3QgbnMsIGludCBlbmdpbmUsIHVuc2lnbmVkIGRlcF9oYW5k bGUpOworCit2b2lkIGlndF9zcGluX2JhdGNoX2ZyZWUoaW50IGZkLCBpZ3Rfc3Bpbl90ICphcmcp OworCit2b2lkIGlndF9zcGluX2JhdGNoX3dhaXQoaW50IGZkLCBpbnQ2NF90IG5zLCBpbnQgZW5n aW5lLCB1bnNpZ25lZCBkZXBfaGFuZGxlKTsKKworCisjZW5kaWYgLyogX19JR1RfRFVNTVlMT0FE X0hfXyAqLwotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=