From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carlos Santa Subject: Re: [PATCH v5 3/5] drm/i915: Watchdog timeout: Ringbuffer command emission for gen8+ Date: Mon, 01 Apr 2019 17:57:10 -0700 Message-ID: <926e77bc13e29a2742aa2c398dcd8b21bbc53e1e.camel@intel.com> References: <20190322234118.65980-1-carlos.santa@intel.com> <20190322234118.65980-4-carlos.santa@intel.com> <155393647005.24691.2200638315146110295@skylake-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 21F0C6E2B3 for ; Tue, 2 Apr 2019 00:57:54 +0000 (UTC) In-Reply-To: <155393647005.24691.2200638315146110295@skylake-alporthouse-com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org Cc: Michel Thierry List-Id: intel-gfx@lists.freedesktop.org T24gU2F0LCAyMDE5LTAzLTMwIGF0IDA5OjAxICswMDAwLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4g UXVvdGluZyBDYXJsb3MgU2FudGEgKDIwMTktMDMtMjIgMjM6NDE6MTYpCj4gPiBGcm9tOiBNaWNo ZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVycnlAaW50ZWwuY29tPgo+ID4gCj4gPiBFbWl0IHRoZSBy ZXF1aXJlZCBjb21tYW5kcyBpbnRvIHRoZSByaW5nIGJ1ZmZlciBmb3Igc3RhcnRpbmcgYW5kCj4g PiBzdG9wcGluZyB0aGUgd2F0Y2hkb2cgdGltZXIgYmVmb3JlL2FmdGVyIGJhdGNoIGJ1ZmZlciBz dGFydCBkdXJpbmcKPiA+IGJhdGNoIGJ1ZmZlciBzdWJtaXNzaW9uLgo+IAo+IEknbSBleHBlY3Rp bmcgdG8gc2VlIHNvbWUgZGlzY3Vzc2lvbiBvZiBob3cgdGhpcyBpcyBoYW5kbGVkIGFjcm9zcwo+ IHByZWVtcHRpb24gaGVyZSBzaW5jZSB5b3UgYXJlIGluc2lkZSBhbiBhcmJpdHJhdGlvbiBlbmFi bGVkIHNlY3Rpb24uCj4gIAo+ID4gdjI6IFN1cHBvcnQgd2F0Y2hkb2cgdGhyZXNob2xkIHBlciBj b250ZXh0IGVuZ2luZSwgbWVyZ2UgbHJpCj4gPiBjb21tYW5kcywKPiA+IGFuZCBtb3ZlIHdhdGNo ZG9nIGNvbW1hbmRzIGVtaXNzaW9uIHRvIGVtaXRfYmJfc3RhcnQuIFJlcXVlc3Qgc3BhY2UKPiA+ IG9mCj4gPiBjb21iaW5lZCBzdGFydF93YXRjaGRvZywgYmJfc3RhcnQgYW5kIHN0b3Bfd2F0Y2hk b2cgdG8gYXZvaWQgYW55Cj4gPiBlcnJvcgo+ID4gYWZ0ZXIgZW1pdHRpbmcgYmJfc3RhcnQuCj4g PiAKPiA+IHYzOiBUaGVyZSB3ZXJlIHRvbyBtYW55IHJlcS0+ZW5naW5lIGluIGVtaXRfYmJfc3Rh cnQuCj4gPiBVc2UgR0VNX0JVR19PTiBpbnN0ZWFkIG9mIHJldHVybmluZyBhIHZlcnkgbGF0ZSBF SU5WQUwgaW4gdGhlCj4gPiByZW1vdGUKPiA+IGNhc2Ugb2Ygd2F0Y2hkb2cgbWlzcHJvZ3JhbW1p bmc7IHNldCBjb3JyZWN0IExSSSBjbWQgc2l6ZSBpbgo+ID4gZW1pdF9zdG9wX3dhdGNoZG9nLiAo Q2hyaXMpCj4gPiAKPiA+IHY0OiBSZWJhc2UuCj4gPiB2NTogdXNlIHRvX2ludGVsX2NvbnRleHQg aW5zdGVhZCBvZiBjdHgtPmVuZ2luZS4KPiA+IHY2OiBSZWJhc2UuCj4gPiB2NzogUmViYXNlLAo+ ID4gICAgIFN0b3JlIGdwdSB3YXRjaGRvZyBjYXBhYmlsaXR5IGluIGVuZ2luZSBmbGFnIChUdnJ0 a28pCj4gPiAgICAgU3RvcmUgV0FUQ0hET0dfRElTQUJMRSBtYWdpYyAjIGluIGVuZ2luZSAoVHZy dGtvKQo+ID4gICAgIE5vIG5lZWQgdG8gZGVjbGFyZSBlbWl0X3tzdGFydHxzdG9wfV93YXRjaGRv ZyBhcyB2ZnVuY3MKPiA+IChUdnJ0a28pCj4gPiAgICAgUmVwbGFjZSBmbGFnIHdhdGNoZG9nX3J1 bm5pbmcgd2l0aCBlbmFibGVfd2F0Y2hkb2cgKFR2cnRrbykKPiA+ICAgICBFbWl0IGEgc2luZ2xl IE1JX05PT1AgYnkgY29uZGl0aW9uYWxseSBjaGVja2luZyB3aGV0aGVyIHRoZSAjCj4gPiAgICAg b2YgZW1pdHRlZCBPUHMgaXMgb2RkIChUdnJ0a28pCj4gPiB2ODogUmViYXNlCj4gPiAKPiA+IENj OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiA+IENjOiBBbnRvbmlv IEFyZ2Vuemlhbm8gPGFudG9uaW8uYXJnZW56aWFub0BpbnRlbC5jb20+Cj4gPiBDYzogVHZydGtv IFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGxpbnV4LmludGVsLmNvbT4KPiA+IFNpZ25lZC1vZmYt Ynk6IE1pY2hlbCBUaGllcnJ5IDxtaWNoZWwudGhpZXJyeUBpbnRlbC5jb20+Cj4gPiBTaWduZWQt b2ZmLWJ5OiBDYXJsb3MgU2FudGEgPGNhcmxvcy5zYW50YUBpbnRlbC5jb20+Cj4gPiAtLS0KPiA+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb250ZXh0X3R5cGVzLmggfCAgNCArCj4gPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgICAgIHwgIDIgKwo+ID4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV90eXBlcy5oICB8IDE3ICsrKystCj4gPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICAgIHwgODkKPiA+ICsrKysr KysrKysrKysrKysrKysrKy0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaCAg ICAgICAgICAgfCAgMiArCj4gPiAgNSBmaWxlcyBjaGFuZ2VkLCAxMDYgaW5zZXJ0aW9ucygrKSwg OCBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2NvbnRleHRfdHlwZXMuaAo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9j b250ZXh0X3R5cGVzLmgKPiA+IGluZGV4IDZkYzliNGI5MDY3Yi4uZTU2ZmMyNjM1NjhlIDEwMDY0 NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY29udGV4dF90eXBlcy5oCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb250ZXh0X3R5cGVzLmgKPiA+IEBA IC01MSw2ICs1MSwxMCBAQCBzdHJ1Y3QgaW50ZWxfY29udGV4dCB7Cj4gPiAgICAgICAgIHU2NCBs cmNfZGVzYzsKPiA+ICAKPiA+ICAgICAgICAgYXRvbWljX3QgcGluX2NvdW50Owo+ID4gKyAgICAg ICAvKiogd2F0Y2hkb2dfdGhyZXNob2xkOiBodyB3YXRjaGRvZyB0aHJlc2hvbGQgdmFsdWUsCj4g PiArICAgICAgICAqIGluIGNsb2NrIGNvdW50cwo+ID4gKyAgICAgICAgKi8KPiAKPiBHYWguIFdo eSB3b3VsZCB5b3UgcHV0IGl0IGhlcmU/IEJldHdlZW4gYSB0aWdodGx5IGNvdXBsZWQgY291bnQg Kwo+IG11dGV4Lgo+IAo+ID4gKyAgICAgICB1MzIgd2F0Y2hkb2dfdGhyZXNob2xkOwo+ID4gICAg ICAgICBzdHJ1Y3QgbXV0ZXggcGluX211dGV4OyAvKiBndWFyZHMgcGlubmluZyBhbmQgYXNzb2Np YXRlZAo+ID4gb24tZ3B1aW5nICovCj4gPiAgCj4gPiAgICAgICAgIC8qKgo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gPiBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gPiBpbmRleCA4OGNmMGZjMDc2MjMuLmQ0 ZWEwN2I3MDkwNCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Vu Z2luZV9jcy5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3Mu Ywo+ID4gQEAgLTMyNCw2ICszMjQsOCBAQCBpbnRlbF9lbmdpbmVfc2V0dXAoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUKPiA+ICpkZXZfcHJpdiwKPiA+ICAgICAgICAgaWYgKGVuZ2luZS0+Y29udGV4 dF9zaXplKQo+ID4gICAgICAgICAgICAgICAgIERSSVZFUl9DQVBTKGRldl9wcml2KS0+aGFzX2xv Z2ljYWxfY29udGV4dHMgPSB0cnVlOwo+ID4gIAo+ID4gKyAgICAgICBlbmdpbmUtPndhdGNoZG9n X2Rpc2FibGVfaWQgPSBnZXRfd2F0Y2hkb2dfZGlzYWJsZShlbmdpbmUpOwo+ID4gKwo+ID4gICAg ICAgICAvKiBOb3RoaW5nIHRvIGRvIGhlcmUsIGV4ZWN1dGUgaW4gb3JkZXIgb2YgZGVwZW5kZW5j aWVzICovCj4gPiAgICAgICAgIGVuZ2luZS0+c2NoZWR1bGUgPSBOVUxMOwo+ID4gIAo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV90eXBlcy5oCj4gPiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV90eXBlcy5oCj4gPiBpbmRleCBjNGY2 NmI3NzRlN2MuLjFmOTliNTM2NDcxZCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2VuZ2luZV90eXBlcy5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9lbmdpbmVfdHlwZXMuaAo+ID4gQEAgLTI2MCw2ICsyNjAsNyBAQCBzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzIHsKPiA+ICAgICAgICAgdW5zaWduZWQgaW50IGd1Y19pZDsKPiA+ICAgICAgICAg aW50ZWxfZW5naW5lX21hc2tfdCBtYXNrOwo+ID4gIAo+ID4gKyAgICAgICB1MzIgd2F0Y2hkb2df ZGlzYWJsZV9pZDsKPiAKPiBZb3UndmUganVzdCBwdXQgdGhpcyBiZXR3ZWVuIGEgcGFpciBvZiB1 OHMuCj4gCj4gPiAgICAgICAgIHU4IHVhYmlfY2xhc3M7Cj4gPiAgCj4gPiAgICAgICAgIHU4IGNs YXNzOwo+ID4gQEAgLTQyMiwxMCArNDIzLDEyIEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mgewo+ ID4gIAo+ID4gICAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2hhbmdjaGVjayBoYW5nY2hlY2s7 Cj4gPiAgCj4gPiAtI2RlZmluZSBJOTE1X0VOR0lORV9ORUVEU19DTURfUEFSU0VSIEJJVCgwKQo+ ID4gLSNkZWZpbmUgSTkxNV9FTkdJTkVfU1VQUE9SVFNfU1RBVFMgICBCSVQoMSkKPiA+IC0jZGVm aW5lIEk5MTVfRU5HSU5FX0hBU19QUkVFTVBUSU9OICAgQklUKDIpCj4gPiAtI2RlZmluZSBJOTE1 X0VOR0lORV9IQVNfU0VNQVBIT1JFUyAgIEJJVCgzKQo+ID4gKyNkZWZpbmUgSTkxNV9FTkdJTkVf TkVFRFNfQ01EX1BBUlNFUiAgQklUKDApCj4gPiArI2RlZmluZSBJOTE1X0VOR0lORV9TVVBQT1JU U19TVEFUUyAgICBCSVQoMSkKPiA+ICsjZGVmaW5lIEk5MTVfRU5HSU5FX0hBU19QUkVFTVBUSU9O ICAgIEJJVCgyKQo+ID4gKyNkZWZpbmUgSTkxNV9FTkdJTkVfSEFTX1NFTUFQSE9SRVMgICAgQklU KDMpCj4gPiArI2RlZmluZSBJOTE1X0VOR0lORV9TVVBQT1JUU19XQVRDSERPRyBCSVQoNCkKPiA+ ICsKPiA+ICAgICAgICAgdW5zaWduZWQgaW50IGZsYWdzOwo+ID4gIAo+ID4gICAgICAgICAvKgo+ ID4gQEAgLTUwOSw2ICs1MTIsMTIgQEAgaW50ZWxfZW5naW5lX2hhc19zZW1hcGhvcmVzKGNvbnN0 IHN0cnVjdAo+ID4gaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gPiAgICAgICAgIHJldHVybiBl bmdpbmUtPmZsYWdzICYgSTkxNV9FTkdJTkVfSEFTX1NFTUFQSE9SRVM7Cj4gPiAgfQo+ID4gIAo+ ID4gK3N0YXRpYyBpbmxpbmUgYm9vbAo+ID4gK2ludGVsX2VuZ2luZV9zdXBwb3J0c193YXRjaGRv Zyhjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzCj4gPiAqZW5naW5lKQo+ID4gK3sKPiA+ICsg ICAgICAgcmV0dXJuIGVuZ2luZS0+ZmxhZ3MgJiBJOTE1X0VOR0lORV9TVVBQT1JUU19XQVRDSERP RzsKPiA+ICt9Cj4gPiArCj4gPiAgI2RlZmluZSBpbnN0ZG9uZV9zbGljZV9tYXNrKGRldl9wcml2 X18pIFwKPiA+ICAgICAgICAgKElTX0dFTihkZXZfcHJpdl9fLCA3KSA/IFwKPiA+ICAgICAgICAg IDEgOiBSVU5USU1FX0lORk8oZGV2X3ByaXZfXyktPnNzZXUuc2xpY2VfbWFzaykKPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ID4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ID4gaW5kZXggODU3ODVhOTRmNmFlLi43OGVhNTRhNWRi YzMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiA+IEBAIC0yMDM2LDE2ICsy MDM2LDc1IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldF9maW5pc2goc3RydWN0Cj4gPiBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiA+ICAgICAgICAgICAgICAgICAgIGF0b21pY19yZWFk KCZleGVjbGlzdHMtPnRhc2tsZXQuY291bnQpKTsKPiA+ICB9Cj4gPiAgCj4gPiArc3RhdGljIHUz MiAqZ2VuOF9lbWl0X3N0YXJ0X3dhdGNoZG9nKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIK PiA+ICpjcykKPiA+ICt7Cj4gPiArICAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSA9IHJxLT5lbmdpbmU7Cj4gPiArICAgICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgg PSBycS0+Z2VtX2NvbnRleHQ7Cj4gPiArICAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9 IGludGVsX2NvbnRleHRfbG9va3VwKGN0eCwKPiA+IGVuZ2luZSk7Cj4gPiArCj4gPiArICAgICAg IEdFTV9CVUdfT04oIWludGVsX2VuZ2luZV9zdXBwb3J0c193YXRjaGRvZyhlbmdpbmUpKTsKPiA+ ICsKPiA+ICsgICAgICAgLyoKPiA+ICsgICAgICAgICogd2F0Y2hkb2cgcmVnaXN0ZXIgbXVzdCBu ZXZlciBiZSBwcm9ncmFtbWVkIHRvIHplcm8uIFRoaXMKPiA+IHdvdWxkCj4gPiArICAgICAgICAq IGNhdXNlIHRoZSB3YXRjaGRvZyBjb3VudGVyIHRvIGV4Y2VlZCBhbmQgbm90IGFsbG93IHRoZQo+ ID4gZW5naW5lIHRvCj4gPiArICAgICAgICAqIGdvIGludG8gSURMRSBzdGF0ZQo+ID4gKyAgICAg ICAgKi8KPiA+ICsgICAgICAgR0VNX0JVR19PTihjZS0+d2F0Y2hkb2dfdGhyZXNob2xkID09IDAp Owo+ID4gKwo+ID4gKyAgICAgICAvKiBTZXQgY291bnRlciBwZXJpb2QgKi8KPiA+ICsgICAgICAg KmNzKysgPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSgyKTsKPiA+ICsgICAgICAgKmNzKysgPSBpOTE1 X21taW9fcmVnX29mZnNldChSSU5HX1RIUkVTSChlbmdpbmUtCj4gPiA+bW1pb19iYXNlKSk7Cj4g PiArICAgICAgICpjcysrID0gY2UtPndhdGNoZG9nX3RocmVzaG9sZDsKPiA+ICsgICAgICAgLyog U3RhcnQgY291bnRlciAqLwo+ID4gKyAgICAgICAqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0 KFJJTkdfQ05UUihlbmdpbmUtPm1taW9fYmFzZSkpOwo+ID4gKyAgICAgICAqY3MrKyA9IEdFTjhf V0FUQ0hET0dfRU5BQkxFOwo+IAo+IEhtbSwgc28gbm8gd2F0Y2hkb2cgc2Vxbm8uCj4gCj4gPiAr ICAgICAgIHJldHVybiBjczsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHUzMiAqZ2VuOF9lbWl0 X3N0b3Bfd2F0Y2hkb2coc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMgo+ID4gKmNzKQo+ID4g K3sKPiA+ICsgICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcnEtPmVuZ2lu ZTsKPiA+ICsKPiA+ICsgICAgICAgR0VNX0JVR19PTighaW50ZWxfZW5naW5lX3N1cHBvcnRzX3dh dGNoZG9nKGVuZ2luZSkpOwo+ID4gKwo+ID4gKyAgICAgICAqY3MrKyA9IE1JX0xPQURfUkVHSVNU RVJfSU1NKDEpOwo+ID4gKyAgICAgICAqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KFJJTkdf Q05UUihlbmdpbmUtPm1taW9fYmFzZSkpOwo+ID4gKyAgICAgICAqY3MrKyA9IGVuZ2luZS0+d2F0 Y2hkb2dfZGlzYWJsZV9pZDsKPiA+ICsKPiA+ICsgICAgICAgcmV0dXJuIGNzOwo+ID4gK30KPiA+ ICsKPiA+ICBzdGF0aWMgaW50IGdlbjhfZW1pdF9iYl9zdGFydChzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU2NCBvZmZzZXQsIHUzMiBs ZW4sCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQg ZmxhZ3MpCj4gPiAgewo+ID4gKyAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUg PSBycS0+ZW5naW5lOwo+ID4gKyAgICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4ID0g cnEtPmdlbV9jb250ZXh0Owo+ID4gKyAgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBp bnRlbF9jb250ZXh0X2xvb2t1cChjdHgsCj4gPiBlbmdpbmUpOwo+IAo+IEFoZW0uIFRoaXMga2Vl cHMgb24gZ2V0dGluZyB3b3JzZS4KCkNhbiB5b3UgZXhwbGFpbiBhIGJpdCBtb3JlIHdoeT8KCj4g Cj4gPiAgICAgICAgIHUzMiAqY3M7Cj4gPiArICAgICAgIHUzMiBudW1fZHdvcmRzOwo+ID4gKyAg ICAgICBib29sIGVuYWJsZV93YXRjaGRvZyA9IGZhbHNlOwo+ID4gIAo+ID4gLSAgICAgICBjcyA9 IGludGVsX3JpbmdfYmVnaW4ocnEsIDYpOwo+ID4gKyAgICAgICAvKiBiYl9zdGFydCBvbmx5ICov Cj4gPiArICAgICAgIG51bV9kd29yZHMgPSA2Owo+ID4gKwo+ID4gKyAgICAgICAvKiBjaGVjayBp ZiB3YXRjaGRvZyB3aWxsIGJlIHJlcXVpcmVkICovCj4gPiArICAgICAgIGlmIChjZS0+d2F0Y2hk b2dfdGhyZXNob2xkICE9IDApIHsKPiA+ICsgICAgICAgICAgICAgICAvKiArIHN0YXJ0X3dhdGNo ZG9nICg2KSArIHN0b3Bfd2F0Y2hkb2cgKDQpICovCj4gPiArICAgICAgICAgICAgICAgbnVtX2R3 b3JkcyArPSAxMDsKPiA+ICsgICAgICAgICAgICAgICBlbmFibGVfd2F0Y2hkb2cgPSB0cnVlOwo+ ID4gKyAgICAgICB9Cj4gPiArCj4gPiArICAgICAgIGNzID0gaW50ZWxfcmluZ19iZWdpbihycSwg bnVtX2R3b3Jkcyk7Cj4gPiAgICAgICAgIGlmIChJU19FUlIoY3MpKQo+ID4gICAgICAgICAgICAg ICAgIHJldHVybiBQVFJfRVJSKGNzKTsKPiA+ICAKPiA+ICsgICAgICAgaWYgKGVuYWJsZV93YXRj aGRvZykgewo+ID4gKyAgICAgICAgICAgICAgIC8qIFN0YXJ0IHdhdGNoZG9nIHRpbWVyICovCj4g Cj4gUGxlYXNlIGRvbid0IHNpbXBseSByZXBlYXQgY29kZSBpbiBjb21tZW50cy4KCkFjay4KCj4g Cj4gPiArICAgICAgICAgICAgICAgY3MgPSBnZW44X2VtaXRfc3RhcnRfd2F0Y2hkb2cocnEsIGNz KTsKPiA+ICsgICAgICAgfQo+ID4gKwo+ID4gICAgICAgICAvKgo+ID4gICAgICAgICAgKiBXYURp c2FibGVDdHhSZXN0b3JlQXJiaXRyYXRpb246YmR3LGNodgo+ID4gICAgICAgICAgKgo+ID4gQEAg LTIwNzIsMTAgKzIxMzEsMTYgQEAgc3RhdGljIGludCBnZW44X2VtaXRfYmJfc3RhcnQoc3RydWN0 Cj4gPiBpOTE1X3JlcXVlc3QgKnJxLAo+ID4gICAgICAgICAqY3MrKyA9IHVwcGVyXzMyX2JpdHMo b2Zmc2V0KTsKPiA+ICAKPiA+ICAgICAgICAgKmNzKysgPSBNSV9BUkJfT05fT0ZGIHwgTUlfQVJC X0RJU0FCTEU7Cj4gPiAtICAgICAgICpjcysrID0gTUlfTk9PUDsKPiA+ICAKPiA+IC0gICAgICAg aW50ZWxfcmluZ19hZHZhbmNlKHJxLCBjcyk7Cj4gPiArICAgICAgIGlmIChlbmFibGVfd2F0Y2hk b2cpIHsKPiA+ICsgICAgICAgICAgICAgICAvKiBDYW5jZWwgd2F0Y2hkb2cgdGltZXIgKi8KPiA+ ICsgICAgICAgICAgICAgICBjcyA9IGdlbjhfZW1pdF9zdG9wX3dhdGNoZG9nKHJxLCBjcyk7Cj4g PiArICAgICAgIH0KPiA+ICsKPiA+ICsgICAgICAgaWYgKCpjcyUyICE9IDApCj4gPiArICAgICAg ICAgICAgICAgKmNzKysgPSBNSV9OT09QOwo+IAo+IFRoaXMgaXMgd3JvbmcuIGNzIHBvaW50cyBp bnRvIHRoZSB1bnNldCBwb3J0aW9uIG9mIHRoZSByaW5nLiBUaGUKPiB3YXRjaGRvZyBjb21tYW5k cyBhcmUgZXZlbiwgc28gdGhlcmUgaXMgbm8gcmVhc29uIHRvIG1vdmUgdGhlCj4gb3JpZ2luYWwK PiBOT09QLCBvciBhdCBsZWFzdCBubyByZWFzb24gdG8gbWFrZSBpdCBjb25kaXRpb25hbC4KCk9r LCBJIGluaXRpYWxseSB0b29rIHRoZSBzdWdnZXN0aW9uIGZyb20gVHZydGtvIGZyb20gd2F5IGJh Y2ssIHdoZXJlIHdlCndlcmUgdHJ5aW5nIHRvIGdldCByaWQgb2YgdG9vIG1hbnkgTUlfTk9PUHMg YnkgZW1pdHRpbmcgdGhlbQpjb25kaXRpb25hbGx5IGJhc2VkIG9uIHdoZXRoZXIgdGhlIGNzIHBv aW50ZXIgd2FzIG9kZC4uLiAKCkNhcmxvcwoKCj4gLUNocmlzCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=