From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3 1/3] lib: add igt_dummyload Date: Thu, 3 Nov 2016 16:38:53 +0200 Message-ID: <20161103143853.GU4617@intel.com> References: <20161028160228.GJ4617@intel.com> <20161103094038.4843-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4344A6E6FF for ; Thu, 3 Nov 2016 14:39:04 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20161103094038.4843-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: Abdiel Janulgue Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBOb3YgMDMsIDIwMTYgYXQgMTE6NDA6MzZBTSArMDIwMCwgQWJkaWVsIEphbnVsZ3Vl IHdyb3RlOgo+IEEgbG90IG9mIGlndCB0ZXN0Y2FzZXMgbmVlZCBzb21lIEdQVSB3b3JrbG9hZCB0 byBtYWtlIHN1cmUgYSByYWNlCj4gd2luZG93IGlzIGJpZyBlbm91Z2guIFVuZm9ydHVuYXRlbHkg aGF2aW5nIGEgZml4ZWQgYW1vdW50IG9mCj4gd29ya2xvYWQgbGVhZHMgdG8gc3B1cmlvdXMgdGVz dCBmYWlsdXJlcyBvciBvdmVydGx5IGxvbmcgcnVudGltZXMKPiBvbiBzb21lIGZhc3Qvc2xvdyBw bGF0Zm9ybXMuIFRoaXMgbGlicmFyeSBjb250YWlucyBmdW5jdGlvbmFsaXR5Cj4gdG8gc3VibWl0 IEdQVSB3b3JrbG9hZHMgdGhhdCBzaG91bGQgY29uc3VtZSBleGFjdGx5IGEgc3BlY2lmaWMKPiBh bW91bnQgb2YgdGltZS4KPiAKPiB2MiA6IEFkZCByZWN1cnNpdmUgYmF0Y2ggZmVhdHVyZSBmcm9t IENocmlzCj4gdjMgOiBEcm9wIGF1dG8tdHVuZWQgc3R1ZmYuIEFkZCBibyBkZXBlbmRlY3kgdG8g cmVjdXJzaXZlIGJhdGNoCj4gICAgICBieSBhZGRpbmcgYSBkdW1teSByZWxvYyB0byB0aGUgYm8g YXMgc3VnZ2VzdGVkIGJ5IFZpbGxlLgo+IAo+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0 dGVyQGZmd2xsLmNoPgo+IENjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXgu aW50ZWwuY29tPgo+IENjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4K PiBTaWduZWQtb2ZmLWJ5OiBBYmRpZWwgSmFudWxndWUgPGFiZGllbC5qYW51bGd1ZUBsaW51eC5p bnRlbC5jb20+Cj4gLS0tCj4gIGxpYi9NYWtlZmlsZS5zb3VyY2VzIHwgICAyICsKPiAgbGliL2ln dC5oICAgICAgICAgICAgfCAgIDEgKwo+ICBsaWIvaWd0X2R1bW15bG9hZC5jICB8IDI3NCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgbGliL2ln dF9kdW1teWxvYWQuaCAgfCAgNDIgKysrKysrKysKPiAgNCBmaWxlcyBjaGFuZ2VkLCAzMTkgaW5z ZXJ0aW9ucygrKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2lndF9kdW1teWxvYWQuYwo+ICBj cmVhdGUgbW9kZSAxMDA2NDQgbGliL2lndF9kdW1teWxvYWQuaAo+IAo+IGRpZmYgLS1naXQgYS9s aWIvTWFrZWZpbGUuc291cmNlcyBiL2xpYi9NYWtlZmlsZS5zb3VyY2VzCj4gaW5kZXggZThlMjc3 Yi4uN2ZjNWVjMiAxMDA2NDQKPiAtLS0gYS9saWIvTWFrZWZpbGUuc291cmNlcwo+ICsrKyBiL2xp Yi9NYWtlZmlsZS5zb3VyY2VzCj4gQEAgLTc1LDYgKzc1LDggQEAgbGliX3NvdXJjZV9saXN0ID0J IAlcCj4gIAlpZ3RfZHJhdy5oCQlcCj4gIAlpZ3RfcG0uYwkJXAo+ICAJaWd0X3BtLmgJCVwKPiAr CWlndF9kdW1teWxvYWQuYwkJXAo+ICsJaWd0X2R1bW15bG9hZC5oCQlcCj4gIAl1d2lsZG1hdC91 d2lsZG1hdC5oCVwKPiAgCXV3aWxkbWF0L3V3aWxkbWF0LmMJXAo+ICAJJChOVUxMKQo+IGRpZmYg LS1naXQgYS9saWIvaWd0LmggYi9saWIvaWd0LmgKPiBpbmRleCBkNzUxZjI0Li5hMDAyOGQ1IDEw MDY0NAo+IC0tLSBhL2xpYi9pZ3QuaAo+ICsrKyBiL2xpYi9pZ3QuaAo+IEBAIC0zMiw2ICszMiw3 IEBACj4gICNpbmNsdWRlICJpZ3RfY29yZS5oIgo+ICAjaW5jbHVkZSAiaWd0X2RlYnVnZnMuaCIK PiAgI2luY2x1ZGUgImlndF9kcmF3LmgiCj4gKyNpbmNsdWRlICJpZ3RfZHVtbXlsb2FkLmgiCj4g ICNpbmNsdWRlICJpZ3RfZmIuaCIKPiAgI2luY2x1ZGUgImlndF9ndC5oIgo+ICAjaW5jbHVkZSAi aWd0X2ttcy5oIgo+IGRpZmYgLS1naXQgYS9saWIvaWd0X2R1bW15bG9hZC5jIGIvbGliL2lndF9k dW1teWxvYWQuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uZDM3YTMw Ygo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWIvaWd0X2R1bW15bG9hZC5jCj4gQEAgLTAsMCAr MSwyNzQgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24K PiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICog dG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwg Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl Cj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFy YWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUg QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN QUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICoKPiArICovCj4gKwo+ICsjaW5jbHVkZSAi aWd0LmgiCj4gKyNpbmNsdWRlICJpZ3RfZHVtbXlsb2FkLmgiCj4gKyNpbmNsdWRlIDx0aW1lLmg+ Cj4gKyNpbmNsdWRlIDxzaWduYWwuaD4KPiArI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Cj4gKwo+ ICsvKioKPiArICogU0VDVElPTjppZ3RfZHVtbXlsb2FkCj4gKyAqIEBzaG9ydF9kZXNjcmlwdGlv bjogTGlicmFyeSBmb3Igc3VibWl0dGluZyBHUFUgd29ya2xvYWRzCj4gKyAqIEB0aXRsZTogRHVt bXlsb2FkCj4gKyAqIEBpbmNsdWRlOiBpZ3QuaAo+ICsgKgo+ICsgKiBBIGxvdCBvZiBpZ3QgdGVz dGNhc2VzIG5lZWQgc29tZSBHUFUgd29ya2xvYWQgdG8gbWFrZSBzdXJlIGEgcmFjZSB3aW5kb3cg aXMKPiArICogYmlnIGVub3VnaC4gVW5mb3J0dW5hdGVseSBoYXZpbmcgYSBmaXhlZCBhbW91bnQg b2Ygd29ya2xvYWQgbGVhZHMgdG8KPiArICogc3B1cmlvdXMgdGVzdCBmYWlsdXJlcyBvciBvdmVy dGx5IGxvbmcgcnVudGltZXMgb24gc29tZSBmYXN0L3Nsb3cgcGxhdGZvcm1zLgo+ICsgKiBUaGlz IGxpYnJhcnkgY29udGFpbnMgZnVuY3Rpb25hbGl0eSB0byBzdWJtaXQgR1BVIHdvcmtsb2FkcyB0 aGF0IHNob3VsZAo+ICsgKiBjb25zdW1lIGV4YWN0bHkgYSBzcGVjaWZpYyBhbW91bnQgb2YgdGlt ZS4KPiArICovCj4gKwo+ICsjZGVmaW5lIE5TRUNfUEVSX1NFQyAxMDAwMDAwMDAwTAo+ICsKPiAr I2RlZmluZSBnZXR0aWQoKSBzeXNjYWxsKF9fTlJfZ2V0dGlkKQo+ICsjZGVmaW5lIHNpZ2V2X25v dGlmeV90aHJlYWRfaWQgX3NpZ2V2X3VuLl90aWQKPiArCj4gKyNkZWZpbmUgTE9DQUxfSTkxNV9F WEVDX0JTRF9TSElGVCAgICAgICgxMykKPiArI2RlZmluZSBMT0NBTF9JOTE1X0VYRUNfQlNEX01B U0sgICAgICAgKDMgPDwgTE9DQUxfSTkxNV9FWEVDX0JTRF9TSElGVCkKPiArCj4gKyNkZWZpbmUg RU5HSU5FX01BU0sgIChJOTE1X0VYRUNfUklOR19NQVNLIHwgTE9DQUxfSTkxNV9FWEVDX0JTRF9N QVNLKQo+ICsKPiArc3RhdGljIHZvaWQKPiArZmlsbF9vYmplY3Qoc3RydWN0IGRybV9pOTE1X2dl bV9leGVjX29iamVjdDIgKm9iaiwgdWludDMyX3QgZ2VtX2hhbmRsZSwKPiArCSAgICBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgKnJlbG9jcywgdWludDMyX3QgY291bnQpCj4g K3sKPiArCW1lbXNldChvYmosIDAsIHNpemVvZigqb2JqKSk7Cj4gKwlvYmotPmhhbmRsZSA9IGdl bV9oYW5kbGU7Cj4gKwlvYmotPnJlbG9jYXRpb25fY291bnQgPSBjb3VudDsKPiArCW9iai0+cmVs b2NzX3B0ciA9ICh1aW50cHRyX3QpcmVsb2NzOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZAo+ICtm aWxsX3JlbG9jKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVsb2NhdGlvbl9lbnRyeSAqcmVsb2MsCj4g KwkgICB1aW50MzJfdCBnZW1faGFuZGxlLCB1aW50MzJfdCBvZmZzZXQsCj4gKwkgICB1aW50MzJf dCByZWFkX2RvbWFpbnMsIHVpbnQzMl90IHdyaXRlX2RvbWFpbnMpCj4gK3sKPiArCXJlbG9jLT50 YXJnZXRfaGFuZGxlID0gZ2VtX2hhbmRsZTsKPiArCXJlbG9jLT5kZWx0YSA9IDA7Cj4gKwlyZWxv Yy0+b2Zmc2V0ID0gb2Zmc2V0ICogc2l6ZW9mKHVpbnQzMl90KTsKPiArCXJlbG9jLT5wcmVzdW1l ZF9vZmZzZXQgPSAwOwo+ICsJcmVsb2MtPnJlYWRfZG9tYWlucyA9IHJlYWRfZG9tYWluczsKPiAr CXJlbG9jLT53cml0ZV9kb21haW4gPSB3cml0ZV9kb21haW5zOwo+ICt9Cj4gKwo+ICsKPiArc3Rh dGljIHVpbnQzMl90ICpiYXRjaDsKPiArCj4gK3N0YXRpYyB1aW50MzJfdCBlbWl0X3JlY3Vyc2l2 ZV9iYXRjaChpbnQgZmQsIGludCBlbmdpbmUsIHVuc2lnbmVkIGRlcF9oYW5kbGUpCj4gK3sKPiAr CWNvbnN0IGludCBnZW4gPSBpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZpZChmZCkpOwo+ICsJ c3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqWzJdOwo+ICsJc3RydWN0IGRybV9p OTE1X2dlbV9yZWxvY2F0aW9uX2VudHJ5IHJlbG9jc1syXTsKPiArCXN0cnVjdCBkcm1faTkxNV9n ZW1fZXhlY2J1ZmZlcjIgZXhlY2J1ZjsKPiArCXVuc2lnbmVkIGVuZ2luZXNbMTZdOwo+ICsJdW5z aWduZWQgbmVuZ2luZSwgaGFuZGxlOwo+ICsJaW50IGkgPSAwLCByZWxvY19jb3VudCA9IDAsIGJ1 Zl9jb3VudCA9IDA7Cj4gKwo+ICsJYnVmX2NvdW50ID0gMDsKPiArCW5lbmdpbmUgPSAwOwo+ICsJ aWYgKGVuZ2luZSA8IDApIHsKPiArCQlmb3JfZWFjaF9lbmdpbmUoZmQsIGVuZ2luZSkKPiArCQkJ aWYgKGVuZ2luZSkKPiArCQkJCWVuZ2luZXNbbmVuZ2luZSsrXSA9IGVuZ2luZTsKPiArCX0gZWxz ZSB7Cj4gKwkJaWd0X3JlcXVpcmUoZ2VtX2hhc19yaW5nKGZkLCBlbmdpbmUpKTsKPiArCQllbmdp bmVzW25lbmdpbmUrK10gPSBlbmdpbmU7Cj4gKwl9Cj4gKwlpZ3RfcmVxdWlyZShuZW5naW5lKTsK PiArCj4gKwltZW1zZXQoJmV4ZWNidWYsIDAsIHNpemVvZihleGVjYnVmKSk7Cj4gKwltZW1zZXQo b2JqLCAwLCBzaXplb2Yob2JqKSk7Cj4gKwltZW1zZXQocmVsb2NzLCAwLCBzaXplb2YocmVsb2Nz KSk7Cj4gKwo+ICsJZXhlY2J1Zi5idWZmZXJzX3B0ciA9ICh1aW50cHRyX3QpIG9iajsKPiArCWhh bmRsZSA9IGdlbV9jcmVhdGUoZmQsIDQwOTYpOwo+ICsJYmF0Y2ggPSBnZW1fbW1hcF9fZ3R0KGZk LCBoYW5kbGUsIDQwOTYsIFBST1RfV1JJVEUpOwo+ICsJZ2VtX3NldF9kb21haW4oZmQsIGhhbmRs ZSwKPiArCQkJSTkxNV9HRU1fRE9NQUlOX0dUVCwgSTkxNV9HRU1fRE9NQUlOX0dUVCk7Cj4gKwo+ ICsJaWYgKGRlcF9oYW5kbGUgPiAwKSB7Cj4gKwkJZmlsbF9vYmplY3QoJm9ialtidWZfY291bnRd LCBkZXBfaGFuZGxlLCBOVUxMLCAwKTsKPiArCQlidWZfY291bnQrKzsKPiArCj4gKwkJZmlsbF9y ZWxvYygmcmVsb2NzW3JlbG9jX2NvdW50XSwgZGVwX2hhbmRsZSwgaSwKPiArCQkJICAgSTkxNV9H RU1fRE9NQUlOX0NPTU1BTkQsIDApOwoKRG9uJ3Qgd2UgbmVlZCB0aGlzIHRvIGJlIGEgd3JpdGU/ IEEgcmVhZCBzaG91bGRuJ3QgYmxvY2sgYW55IHN1YnNlcXVlbnQKZmxpcC4KCj4gKwkJYmF0Y2hb aSsrXSA9IDA7IC8qIHJlbG9jICovCj4gKwkJcmVsb2NfY291bnQrKzsKPiArCQliYXRjaFtpKytd ID0gTUlfTk9PUDsKPiArCX0KPiArCj4gKwlpZiAoZ2VuID49IDgpIHsKPiArCQliYXRjaFtpKytd ID0gTUlfQkFUQ0hfQlVGRkVSX1NUQVJUIHwgMSA8PCA4IHwgMTsKPiArCQkvKiByZWN1cnNlICov Cj4gKwkJZmlsbF9yZWxvYygmcmVsb2NzW3JlbG9jX2NvdW50XSwgaGFuZGxlLCBpLAo+ICsJCQkg ICBJOTE1X0dFTV9ET01BSU5fQ09NTUFORCwgMCk7Cj4gKwkJYmF0Y2hbaSsrXSA9IDA7Cj4gKwkJ YmF0Y2hbaSsrXSA9IDA7Cj4gKwl9IGVsc2UgaWYgKGdlbiA+PSA2KSB7Cj4gKwkJYmF0Y2hbaSsr XSA9IE1JX0JBVENIX0JVRkZFUl9TVEFSVCB8IDEgPDwgODsKPiArCQkvKiByZWN1cnNlICovCj4g KwkJZmlsbF9yZWxvYygmcmVsb2NzW3JlbG9jX2NvdW50XSwgaGFuZGxlLCBpLAo+ICsJCQkgICBJ OTE1X0dFTV9ET01BSU5fQ09NTUFORCwgMCk7Cj4gKwkJYmF0Y2hbaSsrXSA9IDA7Cj4gKwl9IGVs c2Ugewo+ICsJCWJhdGNoW2krK10gPSBNSV9CQVRDSF9CVUZGRVJfU1RBUlQgfCAyIDw8IDYgfAo+ ICsJCQkoZ2VuIDwgNCkgPyAxIDogMDsKPiArCQkvKiByZWN1cnNlICovCj4gKwkJZmlsbF9yZWxv YygmcmVsb2NzW3JlbG9jX2NvdW50XSwgaGFuZGxlLCBpLAo+ICsJCQkgICBJOTE1X0dFTV9ET01B SU5fQ09NTUFORCwgMCk7Cj4gKwkJYmF0Y2hbaSsrXSA9IDA7Cj4gKwkJaWYgKGdlbiA8IDQpCj4g KwkJCXJlbG9jc1tyZWxvY19jb3VudF0uZGVsdGEgPSAxOwo+ICsJfQo+ICsJcmVsb2NfY291bnQr KzsKPiArCj4gKwlmaWxsX29iamVjdCgmb2JqW2J1Zl9jb3VudF0sIGhhbmRsZSwgcmVsb2NzLCBy ZWxvY19jb3VudCk7Cj4gKwlidWZfY291bnQrKzsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgbmVu Z2luZTsgaSsrKSB7Cj4gKwkJZXhlY2J1Zi5mbGFncyAmPSB+RU5HSU5FX01BU0s7Cj4gKwkJZXhl Y2J1Zi5mbGFncyA9IGVuZ2luZXNbaV07Cj4gKwkJZXhlY2J1Zi5idWZmZXJfY291bnQgPSBidWZf Y291bnQ7Cj4gKwkJZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKTsKPiArCX0KPiArCj4gKwlyZXR1 cm4gaGFuZGxlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBzaWdpdGVyKGludCBzaWcsIHNpZ2lu Zm9fdCAqaW5mbywgdm9pZCAqYXJnKQo+ICt7Cj4gKwkqYmF0Y2ggPSBNSV9CQVRDSF9CVUZGRVJf RU5EOwo+ICsJX19zeW5jX3N5bmNocm9uaXplKCk7Cj4gK30KPiArCj4gK3N0YXRpYyB0aW1lcl90 IHNldHVwX2JhdGNoX2V4aXRfdGltZXIoaW50NjRfdCBucykKPiArewo+ICsJdGltZXJfdCB0aW1l cjsKPiArCXN0cnVjdCBzaWdldmVudCBzZXY7Cj4gKwlzdHJ1Y3Qgc2lnYWN0aW9uIGFjdDsKPiAr CXN0cnVjdCBpdGltZXJzcGVjIGl0czsKPiArCj4gKwltZW1zZXQoJnNldiwgMCwgc2l6ZW9mKHNl dikpOwo+ICsJc2V2LnNpZ2V2X25vdGlmeSA9IFNJR0VWX1NJR05BTCB8IFNJR0VWX1RIUkVBRF9J RDsKPiArCXNldi5zaWdldl9ub3RpZnlfdGhyZWFkX2lkID0gZ2V0dGlkKCk7Cj4gKwlzZXYuc2ln ZXZfc2lnbm8gPSBTSUdSVE1JTiArIDE7Cj4gKwlpZ3RfYXNzZXJ0KHRpbWVyX2NyZWF0ZShDTE9D S19NT05PVE9OSUMsICZzZXYsICZ0aW1lcikgPT0gMCk7Cj4gKwlpZ3RfYXNzZXJ0KHRpbWVyID4g MCk7Cj4gKwo+ICsJbWVtc2V0KCZhY3QsIDAsIHNpemVvZihhY3QpKTsKPiArCWFjdC5zYV9zaWdh Y3Rpb24gPSBzaWdpdGVyOwo+ICsJYWN0LnNhX2ZsYWdzID0gU0FfU0lHSU5GTzsKPiArCWlndF9h c3NlcnQoc2lnYWN0aW9uKFNJR1JUTUlOICsgMSwgJmFjdCwgTlVMTCkgPT0gMCk7Cj4gKwo+ICsJ bWVtc2V0KCZpdHMsIDAsIHNpemVvZihpdHMpKTsKPiArCWl0cy5pdF92YWx1ZS50dl9zZWMgPSBu cyAvIE5TRUNfUEVSX1NFQzsKPiArCWl0cy5pdF92YWx1ZS50dl9uc2VjID0gbnMgJSBOU0VDX1BF Ul9TRUM7Cj4gKwlpZ3RfYXNzZXJ0KHRpbWVyX3NldHRpbWUodGltZXIsIDAsICZpdHMsIE5VTEwp ID09IDApOwo+ICsKPiArCXJldHVybiB0aW1lcjsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGlndF9z cGluX2JhdGNoOgo+ICsgKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCj4gKyAq IEBuczogYW1vdW50IG9mIHRpbWUgaW4gbmFub3NlY29uZHMgdGhlIGJhdGNoIGV4ZWN1dGVzIGFm dGVyIHRlcm1pbmF0aW5nLgo+ICsgKiAgICAgIElmIHZhbHVlIGlzIGxlc3MgdGhhbiAwLCBleGVj dXRlIGJhdGNoIGZvcmV2ZXIuCj4gKyAqIEBlbmdpbmU6IFJpbmcgdG8gZXhlY3V0ZSBiYXRjaCBP UidkIHdpdGggZXhlY2J1ZiBmbGFncy4gSWYgdmFsdWUgaXMgbGVzcwo+ICsgKiAgICAgICAgICB0 aGFuIDAsIGV4ZWN1dGUgb24gYWxsIGF2YWlsYWJsZSByaW5ncy4KPiArICogQGRlcF9oYW5kbGU6 IGhhbmRsZSB0byBhIGJ1ZmZlciBvYmplY3QgZGVwZW5kZW5jeS4gSWYgZ3JlYXRlciB0aGFuIDAs IGFkZCBhCj4gKyAqICAgICAgICAgICAgICByZWxvY2F0aW9uIGVudHJ5IHRvIHRoaXMgYnVmZmVy IHdpdGhpbiB0aGUgYmF0Y2guCj4gKyAqCj4gKyAqIFN0YXJ0IGEgcmVjdXJzaXZlIGJhdGNoIG9u IGEgcmluZyB0aGF0IHRlcm1pbmF0ZXMgYWZ0ZXIgYW4gZXhhY3QgYW1vdW50Cj4gKyAqIG9mIHRp bWUgaGFzIGVsYXBzZWQuIEltbWVkaWF0ZWx5IHJldHVybnMgYSAjaWd0X3NwaW5fdCB0aGF0IGNv bnRhaW5zIHRoZQo+ICsgKiBiYXRjaCdzIGhhbmRsZSB0aGF0IGNhbiBiZSB3YWl0ZWQgdXBvbi4g VGhlIHJldHVybmVkIHN0cnVjdHVyZSBtdXN0IGJlIHBhc3NlZCB0bwo+ICsgKiBpZ3RfcG9zdF9z cGluX2JhdGNoKCkgZm9yIHBvc3QtcHJvY2Vzc2luZy4KPiArICoKPiArICogUmV0dXJuczoKPiAr ICogU3RydWN0dXJlIHdpdGggaGVscGVyIGludGVybmFsIHN0YXRlIGZvciBpZ3RfcG9zdF9zcGlu X2JhdGNoKCkuCj4gKyAqLwo+ICtpZ3Rfc3Bpbl90IGlndF9zcGluX2JhdGNoKGludCBmZCwgaW50 NjRfdCBucywgaW50IGVuZ2luZSwgdW5zaWduZWQgZGVwX2hhbmRsZSkKPiArewo+ICsJdGltZXJf dCB0aW1lcjsKPiArCXVpbnQzMl90IGhhbmRsZSA9IGVtaXRfcmVjdXJzaXZlX2JhdGNoKGZkLCBl bmdpbmUsIGRlcF9oYW5kbGUpOwo+ICsJaW50NjRfdCB3YWl0X3RpbWVvdXQgPSAwOwo+ICsJaWd0 X2Fzc2VydF9lcShnZW1fd2FpdChmZCwgaGFuZGxlLCAmd2FpdF90aW1lb3V0KSwgLUVUSU1FKTsK PiArCj4gKwlpZiAobnMgPCAxKSB7Cj4gKwkJaWYgKG5zID09IDApIHsKPiArCQkJKmJhdGNoID0g TUlfQkFUQ0hfQlVGRkVSX0VORDsKPiArCQkJX19zeW5jX3N5bmNocm9uaXplKCk7Cj4gKwkJCXJl dHVybiAoaWd0X3NwaW5fdCl7IGhhbmRsZSwgYmF0Y2gsIDB9Owo+ICsJCX0KCldoeSB0aGUgc3Bl Y2lhbCBoYW5kbGluZyBmb3IgPT0wID8gV291bGRuJ3QgaXQganVzdCB3b3JrIGlmIHlvdSBsZXQg aXQKZ28gdmlhIHRoZSB0aW1lcj8KCj4gKwkJcmV0dXJuIChpZ3Rfc3Bpbl90KXsgaGFuZGxlLCBi YXRjaCwgMCB9Owo+ICsJfQo+ICsJdGltZXIgPSBzZXR1cF9iYXRjaF9leGl0X3RpbWVyKG5zKTsK PiArCj4gKwlyZXR1cm4gKGlndF9zcGluX3QpeyBoYW5kbGUsIGJhdGNoLCB0aW1lciB9Owo+ICt9 Cj4gKwo+ICsvKioKPiArICogaWd0X3Bvc3Rfc3Bpbl9iYXRjaDoKPiArICogQGZkOiBvcGVuIGk5 MTUgZHJtIGZpbGUgZGVzY3JpcHRvcgo+ICsgKiBAYXJnOiBzcGluIGJhdGNoIHN0YXRlIGZyb20g aWd0X3NwaW5fYmF0Y2goKQo+ICsgKgo+ICsgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIG5lY2Vz c2FyeSBwb3N0LXByb2Nlc3NpbmcgYWZ0ZXIgc3RhcnRpbmcgYSByZWN1cnNpdmUKPiArICogYmF0 Y2ggd2l0aCBpZ3Rfc3Bpbl9iYXRjaCgpLgo+ICsgKi8KPiArdm9pZCBpZ3RfcG9zdF9zcGluX2Jh dGNoKGludCBmZCwgaWd0X3NwaW5fdCBhcmcpCj4gK3sKPiArCWlmIChhcmcuaGFuZGxlID09IDAp Cj4gKwkJcmV0dXJuOwo+ICsKPiArCWlmIChhcmcudGltZXIgPiAwKQo+ICsJCXRpbWVyX2RlbGV0 ZShhcmcudGltZXIpOwo+ICsKPiArCWdlbV9jbG9zZShmZCwgYXJnLmhhbmRsZSk7Cj4gKwltdW5t YXAoYXJnLmJhdGNoLCA0MDk2KTsKPiArfQo+ICsKPiArCj4gKy8qKgo+ICsgKiBpZ3Rfc3Bpbl9i YXRjaF93YWl0Ogo+ICsgKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCj4gKyAq IEBuczogYW1vdW50IG9mIHRpbWUgaW4gbmFub3NlY29uZHMgdGhlIGJhdGNoIGV4ZWN1dGVzIGFm dGVyIHRlcm1pbmF0aW5nLgo+ICsgKiAgICAgIElmIHZhbHVlIGlzIGxlc3MgdGhhbiAwLCBleGVj dXRlIGJhdGNoIGZvcmV2ZXIuCj4gKyAqIEBlbmdpbmU6IHJpbmcgdG8gZXhlY3V0ZSBiYXRjaCBP UidkIHdpdGggZXhlY2J1ZiBmbGFncy4gSWYgdmFsdWUgaXMgbGVzcwo+ICsgKiAgICAgICAgICB0 aGFuIDAsIGV4ZWN1dGUgb24gYWxsIGF2YWlsYWJsZSByaW5ncy4KPiArICogQGRlcF9oYW5kbGU6 IGhhbmRsZSB0byBhIGJ1ZmZlciBvYmplY3QgZGVwZW5kZW5jeS4gSWYgZ3JlYXRlciB0aGFuIDAs IGluY2x1ZGUKPiArICogICAgICAgICAgICAgIHRoaXMgYnVmZmVyIG9uIHRoZSB3YWl0IGRlcGVu ZGVuY3kKPiArICoKPiArICogVGhpcyBpcyBzaW1pbGFyIHRvIGlndF9zcGluX2JhdGNoKCksIGJ1 dCB3YWl0cyBvbiB0aGUgcmVjdXJzaXZlIGJhdGNoIHRvIGZpbmlzaAo+ICsgKiBpbnN0ZWFkIG9m IHJldHVybmluZyByaWdodCBhd2F5LiBUaGUgZnVuY3Rpb24gYWxzbyBkb2VzIHRoZSBuZWNlc3Nh cnkKPiArICogcG9zdC1wcm9jZXNzaW5nIGF1dG9tYXRpY2FsbHkgaWYgc2V0IHRvIHRpbWVvdXQu Cj4gKyAqLwo+ICt2b2lkIGlndF9zcGluX2JhdGNoX3dhaXQoaW50IGZkLCBpbnQ2NF90IG5zLCBp bnQgZW5naW5lLCB1bnNpZ25lZCBkZXBfaGFuZGxlKQo+ICt7Cj4gKwlpZ3Rfc3Bpbl90IHNwaW4g PSBpZ3Rfc3Bpbl9iYXRjaChmZCwgbnMsIGVuZ2luZSwgZGVwX2hhbmRsZSk7Cj4gKwlpbnQ2NF90 IHdhaXRfdGltZW91dCA9IG5zICsgKDAuNSAqIE5TRUNfUEVSX1NFQyk7Cj4gKwlpZ3RfYXNzZXJ0 X2VxKGdlbV93YWl0KGZkLCBzcGluLmhhbmRsZSwgJndhaXRfdGltZW91dCksIDApOwo+ICsKPiAr CWlndF9wb3N0X3NwaW5fYmF0Y2goZmQsIHNwaW4pOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2xpYi9p Z3RfZHVtbXlsb2FkLmggYi9saWIvaWd0X2R1bW15bG9hZC5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPiBpbmRleCAwMDAwMDAwLi43OWVhZDJjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2xpYi9p Z3RfZHVtbXlsb2FkLmgKPiBAQCAtMCwwICsxLDQyIEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDC qSAyMDE2IEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5 IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAq IGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz ICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0 cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp Y2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8g ZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBU aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5j bHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxs IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4g KyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4g Tk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg T1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAq Cj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX0lHVF9EVU1NWUxPQURfSF9fCj4gKyNkZWZpbmUgX19J R1RfRFVNTVlMT0FEX0hfXwo+ICsKPiArdHlwZWRlZiBzdHJ1Y3QgaWd0X3NwaW4gewo+ICsJdW5z aWduZWQgaGFuZGxlOwo+ICsJdWludDMyX3QgKmJhdGNoOwo+ICsJdGltZXJfdCB0aW1lcjsKPiAr fSBpZ3Rfc3Bpbl90Owo+ICsKPiArCj4gK2lndF9zcGluX3QgaWd0X3NwaW5fYmF0Y2goaW50IGZk LCBpbnQ2NF90IG5zLCBpbnQgZW5naW5lLCB1bnNpZ25lZCBkZXBfaGFuZGxlKTsKPiArCj4gK3Zv aWQgaWd0X3Bvc3Rfc3Bpbl9iYXRjaChpbnQgZmQsIGlndF9zcGluX3QgYXJnKTsKPiArCj4gK3Zv aWQgaWd0X3NwaW5fYmF0Y2hfd2FpdChpbnQgZmQsIGludDY0X3QgbnMsIGludCBlbmdpbmUsIHVu c2lnbmVkIGRlcF9oYW5kbGUpOwo+ICsKPiArCj4gKyNlbmRpZiAvKiBfX0lHVF9EVU1NWUxPQURf SF9fICovCj4gLS0gCj4gMi43LjAKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=