From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: Re: [PATCH v2 6/9] drm/i915: expose command stream timestamp frequency to userspace Date: Thu, 9 Nov 2017 14:06:31 +0000 Message-ID: References: <20171102162949.22221-1-lionel.g.landwerlin@intel.com> <20171102162949.22221-7-lionel.g.landwerlin@intel.com> <3e18b118-09a9-0401-f592-fd6b586d483c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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 C74BA6E1A3 for ; Thu, 9 Nov 2017 14:06:33 +0000 (UTC) In-Reply-To: <3e18b118-09a9-0401-f592-fd6b586d483c@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Sagar Arun Kamble , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMDkvMTEvMTcgMTE6NTgsIFNhZ2FyIEFydW4gS2FtYmxlIHdyb3RlOgo+Cj4KPiBPbiAxMS8y LzIwMTcgOTo1OSBQTSwgTGlvbmVsIExhbmR3ZXJsaW4gd3JvdGU6Cj4+IFdlIHVzZSB0byBoYXZl IHRoaXMgZml4ZWQgcGVyIGdlbmVyYXRpb24sIGJ1dCBzdGFydGluZyB3aXRoIENOTCAKPj4gdXNl cnNwYWNlCj4+IGNhbm5vdCB0ZWxsIGp1c3Qgb2ZmIHRoZSBQQ0kgSUQuIExldCdzIG1ha2UgdGhp cyBpbmZvcm1hdGlvbiAKPj4gYXZhaWxhYmxlLiBUaGlzCj4+IGlzIHBhcnRpY3VsYXJseSB1c2Vm dWwgZm9yIHBlcmZvcm1hbmNlIG1vbml0b3Jpbmcgd2hlcmUgbXVjaCBvZiB0aGUKPj4gbm9ybWFs aXphdGlvbiB3b3JrIGlzIGRvbmUgdXNpbmcgdGhvc2UgdGltZXN0YW1wcyAodGhpcyBpbmNsdWRl IHBpcGVsaW5lCj4+IHN0YXRpc3RpY3MgaW4gYm90aCBHTCAmIFZ1bGthbiBhcyB3ZWxsIGFzIE9B IHJlcG9ydHMpLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVs LmcubGFuZHdlcmxpbkBpbnRlbC5jb20+Cj4+IC0tLQo+PiDCoCBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuY8KgwqDCoMKgwqAgfMKgIDIgKwo+PiDCoCBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5jwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAzICsKPj4gwqAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMiArCj4+IMKgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmjCoMKgwqDCoMKgwqDCoMKgwqAgfCAyMSArKysr KysrCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMgfCA5OSAK Pj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gwqAgaW5jbHVkZS91YXBpL2Ry bS9pOTE1X2RybS5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDYgKysKPj4gwqAgNiBm aWxlcyBjaGFuZ2VkLCAxMzMgaW5zZXJ0aW9ucygrKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKPj4gaW5kZXggMzk4ODNjZDkxNWRiLi4wODk3ZmQ2MTZhMWYgMTAwNjQ0 Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+IEBAIC0zMjQ2LDYgKzMyNDYsOCBA QCBzdGF0aWMgaW50IGk5MTVfZW5naW5lX2luZm8oc3RydWN0IHNlcV9maWxlICptLCAKPj4gdm9p ZCAqdW51c2VkKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeWVzbm8oZGV2X3ByaXYtPmd0 LmF3YWtlKSk7Cj4+IMKgwqDCoMKgwqAgc2VxX3ByaW50ZihtLCAiR2xvYmFsIGFjdGl2ZSByZXF1 ZXN0czogJWRcbiIsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfcHJpdi0+Z3QuYWN0 aXZlX3JlcXVlc3RzKTsKPj4gK8KgwqDCoCBzZXFfcHJpbnRmKG0sICJDUyB0aW1lc3RhbXAgZnJl cXVlbmN5OiAlbGx1XG4iLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X3ByaXYtPmluZm8u Y3NfdGltZXN0YW1wX2ZyZXF1ZW5jeSk7Cj4gc2hvdWxkIGJlIGFjY2Vzc2VkIHRocm91Z2ggSU5U RUxfSU5GTwo+IEhvdyBhYm91dCBhZGRpbmcgIkh6IiB0byBtZXNzYWdlCgpEb25lLgoKPj4gwqAg wqDCoMKgwqDCoCBwID0gZHJtX3NlcV9maWxlX3ByaW50ZXIobSk7Cj4+IMKgwqDCoMKgwqAgZm9y X2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5jCj4+IGluZGV4IGU3ZTllMDYxMDczYi4uZmRkMjNlNzlmYjQ2IDEwMDY0NAo+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMKPj4gQEAgLTQxNiw2ICs0MTYsOSBAQCBzdGF0aWMgaW50IGk5MTVf Z2V0cGFyYW0oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgCj4+IHZvaWQgKmRhdGEsCj4+IMKgwqDC oMKgwqDCoMKgwqDCoCBpZiAoIXZhbHVlKQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBy ZXR1cm4gLUVOT0RFVjsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiArwqDCoMKgIGNh c2UgSTkxNV9QQVJBTV9DU19USU1FU1RBTVBfRlJFUVVFTkNZOgo+PiArwqDCoMKgwqDCoMKgwqAg dmFsdWUgPSBJTlRFTF9JTkZPKGRldl9wcml2KS0+Y3NfdGltZXN0YW1wX2ZyZXF1ZW5jeTsKPiBs b3NpbmcgdGhlIHByZWNpc2lvbiBoZXJlLiBjYW4gd2UgbWFrZSBjc190aW1lc3RhbXBfZnJlcXVl bmN5IHUzMj8KClllYWgsIEknbSBub3Qgc3VwZXIgaGFwcHkgYWJvdXQgdGhlIGludCogb2YgZ2V0 cGFyYW0uCk1BWF9JTlQgbGltaXRzIHVzIHVwIHRvIH4yR0h6LCB3aGljaCBJIGRvbid0IHRoaW5r IHdlJ2xsIGV2ZXIgcmVhY2guCkRvIHlvdSBhZ3JlZT8gRG8geW91IHRoaW5rIHdlIG5lZWQgdG8g aGFuZGxlIGJpZ2dlciB2YWx1ZXM/CgoKPj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiDCoMKg wqDCoMKgIGRlZmF1bHQ6Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fREVCVUcoIlVua25vd24g cGFyYW1ldGVyICVkXG4iLCBwYXJhbS0+cGFyYW0pOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIC1FSU5WQUw7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oIAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gaW5kZXggNmNiN2Nk N2Y5NDIwLi40ZTgwNGFhZWFhZTEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBA QCAtODg2LDYgKzg4Niw4IEBAIHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyB7Cj4+IMKgwqDCoMKg wqAgLyogU2xpY2Uvc3Vic2xpY2UvRVUgaW5mbyAqLwo+PiDCoMKgwqDCoMKgIHN0cnVjdCBzc2V1 X2Rldl9pbmZvIHNzZXU7Cj4+IMKgICvCoMKgwqAgdWludDY0X3QgY3NfdGltZXN0YW1wX2ZyZXF1 ZW5jeTsKPj4gKwo+IHMvdWludDY0X3QvdTY0IC0gKENocmlzIGhhZCBzdWdnZXN0ZWQgZWFybGll cikKCkRvbmUuCgo+PiDCoMKgwqDCoMKgIHN0cnVjdCBjb2xvcl9sdXRzIHsKPj4gwqDCoMKgwqDC oMKgwqDCoMKgIHUxNiBkZWdhbW1hX2x1dF9zaXplOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgdTE2 IGdhbW1hX2x1dF9zaXplOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZWcuaCAKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+IGluZGV4IGEy MjIzZjAxZWUyYS4uZjM5MmYyOGYyY2ZhIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgK Pj4gQEAgLTExMTksOSArMTExOSwyNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgCj4+IGk5MTVfbW1p b19yZWdfdmFsaWQoaTkxNV9yZWdfdCByZWcpCj4+IMKgIMKgIC8qIFJQTSB1bml0IGNvbmZpZyAo R2VuOCspICovCj4+IMKgICNkZWZpbmUgUlBNX0NPTkZJRzDCoMKgwqDCoMKgwqDCoCBfTU1JTygw eDBEMDApCj4+ICsjZGVmaW5lwqAgR0VOOV9SUE1fQ09ORklHMF9DUllTVEFMX0NMT0NLX0ZSRVFf U0hJRlTCoMKgwqAgMwo+PiArI2RlZmluZcKgIEdFTjlfUlBNX0NPTkZJRzBfQ1JZU1RBTF9DTE9D S19GUkVRX01BU0vCoMKgwqAgKDEgPDwgCj4+IEdFTjlfUlBNX0NPTkZJRzBfQ1JZU1RBTF9DTE9D S19GUkVRX1NISUZUKQo+PiArI2RlZmluZcKgIEdFTjlfUlBNX0NPTkZJRzBfQ1JZU1RBTF9DTE9D S19GUkVRXzE5XzJfTUhawqDCoMKgIDAKPj4gKyNkZWZpbmXCoCBHRU45X1JQTV9DT05GSUcwX0NS WVNUQUxfQ0xPQ0tfRlJFUV8yNF9NSFrCoMKgwqAgMQo+PiArI2RlZmluZcKgIEdFTjEwX1JQTV9D T05GSUcwX0NUQ19TSElGVF9QQVJBTUVURVJfU0hJRlTCoMKgwqAgMQo+PiArI2RlZmluZcKgIEdF TjEwX1JQTV9DT05GSUcwX0NUQ19TSElGVF9QQVJBTUVURVJfTUFTS8KgwqDCoCAoMHgzIDw8IAo+ PiBHRU4xMF9SUE1fQ09ORklHMF9DVENfU0hJRlRfUEFSQU1FVEVSX1NISUZUKQo+PiArCj4+IMKg ICNkZWZpbmUgUlBNX0NPTkZJRzHCoMKgwqDCoMKgwqDCoCBfTU1JTygweDBEMDQpCj4+IMKgICNk ZWZpbmXCoCBHRU4xMF9HVF9OT0FfRU5BQkxFwqAgKDEgPDwgOSkKPj4gwqAgKy8qIEdQTSB1bml0 IGNvbmZpZyAoYXNzdW1pbmcgR2VuOCssIGRvY3VtZW50YXRpb24gaXMgZnV6enkuLi4pICovCj4+ ICsjZGVmaW5lIEdFTjhfQ1RDX01PREXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9NTUlPKDB4QTI2 QykKPj4gKyNkZWZpbmXCoCBHRU44X0NUQ19TT1VSQ0VfUEFSQU1FVEVSX01BU0sgMQo+PiArI2Rl ZmluZcKgIEdFTjhfQ1RDX1NPVVJDRV9DUllTVEFMX0NMT0NLwqDCoMKgIDAKPj4gKyNkZWZpbmXC oCBHRU44X0NUQ19TT1VSQ0VfRElWSURFX0xPR0lDwqDCoMKgIDEKPj4gKyNkZWZpbmXCoCBHRU44 X0NUQ19TSElGVF9QQVJBTUVURVJfU0hJRlTCoMKgwqAgMQo+PiArI2RlZmluZcKgIEdFTjhfQ1RD X1NISUZUX1BBUkFNRVRFUl9NQVNLwqDCoMKgICgweDMgPDwgCj4+IEdFTjhfQ1RDX1NISUZUX1BB UkFNRVRFUl9TSElGVCkKPj4gKwo+PiDCoCAvKiBSUEMgdW5pdCBjb25maWcgKEdlbjgrKSAqLwo+ PiDCoCAjZGVmaW5lIFJQQ19DT05GSUfCoMKgwqDCoMKgwqDCoCBfTU1JTygweDBEMDgpCj4+IMKg IEBAIC04ODY1LDYgKzg4ODAsMTIgQEAgZW51bSBza2xfcG93ZXJfZ2F0ZSB7Cj4+IMKgICNkZWZp bmUgSUxLX1RJTUVTVEFNUF9IScKgwqDCoCBfTU1JTygweDcwMDcwKQo+PiDCoCAjZGVmaW5lIElW Ql9USU1FU1RBTVBfQ1RSwqDCoMKgIF9NTUlPKDB4NDQwNzApCj4+IMKgICsjZGVmaW5lIEdFTjhf VElNRVNUQU1QX09WRVJSSURFwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIF9NTUlPKDB4 NDQwNzQpCj4+ICsjZGVmaW5lwqAgR0VOOF9USU1FU1RBTVBfT1ZFUlJJREVfVVNfQ09VTlRFUl9T SElGVMKgwqDCoMKgwqDCoMKgIDAKPj4gKyNkZWZpbmXCoCBHRU44X1RJTUVTVEFNUF9PVkVSUklE RV9VU19DT1VOVEVSX01BU0vCoMKgwqDCoMKgwqDCoCAweDNmZgo+IFVTX0NPVU5URVJfRElWSURF Ul9NQVNLPwoKU3VyZSwgSSB0aG91Z2h0IGl0IHdhcyBqdXN0IGEgYml0IHRvbyBsb25nIDopCgo+ PiArI2RlZmluZSBHRU44X1RJTUVTVEFNUF9PVkVSUklERV9VU19DT1VOVEVSX0RFTk9NSU5BVE9S X1NISUZUwqDCoMKgIDEyCj4+ICsjZGVmaW5lwqAgR0VOOF9USU1FU1RBTVBfT1ZFUlJJREVfVVNf Q09VTlRFUl9ERU5PTUlOQVRPUl9NQVNLICgweGYgPDwgCj4+IDEyKQo+PiArCj4+IMKgICNkZWZp bmUgX1BJUEVfRlJNVE1TVE1QX0HCoMKgwqDCoMKgwqDCoCAweDcwMDQ4Cj4+IMKgICNkZWZpbmUg UElQRV9GUk1UTVNUTVAocGlwZSnCoMKgwqDCoMKgwqDCoCBcCj4+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIF9NTUlPX1BJUEUyKHBpcGUsIF9QSVBFX0ZSTVRNU1RNUF9BKQo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYyAKPj4gYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCj4+IGluZGV4IGRiMDNkMTc5ZmM4 NS4uOWI3MWE5YjZkODBlIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kZXZpY2VfaW5mby5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rldmlj ZV9pbmZvLmMKPj4gQEAgLTMyOSw2ICszMjksMTAwIEBAIHN0YXRpYyB2b2lkIGJyb2Fkd2VsbF9z c2V1X2luZm9faW5pdChzdHJ1Y3QgCj4+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiDC oMKgwqDCoMKgIHNzZXUtPmhhc19ldV9wZyA9IDA7Cj4+IMKgIH0KPj4gwqAgK3N0YXRpYyB1NjQg cmVhZF90aW1lc3RhbXBfZnJlcXVlbmN5X2Zyb21fZGl2aWRlKHN0cnVjdCAKPj4gZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gU2hvdWxkIHRoaXMgYmUgbmFtZWQgcmVhZF9yZWZlcmVuY2Vf dHNfZnJlcT8KClllcywgdGhhbmtzIQoKPj4gK3sKPj4gK8KgwqDCoCB1MzIgdHNfb3ZlcnJpZGUg PSBJOTE1X1JFQUQoR0VOOF9USU1FU1RBTVBfT1ZFUlJJREUpOwo+PiArwqDCoMKgIHU2NCBiYXNl X2ZyZXEsIGZyYWNfZnJlcTsKPj4gKwo+PiArwqDCoMKgIGJhc2VfZnJlcSA9ICgodHNfb3ZlcnJp ZGUgJiAKPj4gR0VOOF9USU1FU1RBTVBfT1ZFUlJJREVfVVNfQ09VTlRFUl9NQVNLKSA+Pgo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTjhfVElNRVNUQU1QX09WRVJSSURFX1VTX0NPVU5U RVJfU0hJRlQpICsgMTsKPj4gK8KgwqDCoCBiYXNlX2ZyZXEgKj0gMTAwMDAwMDsKPj4gKwo+PiAr wqDCoMKgIGZyYWNfZnJlcSA9ICgodHNfb3ZlcnJpZGUgJgo+PiArIEdFTjhfVElNRVNUQU1QX09W RVJSSURFX1VTX0NPVU5URVJfREVOT01JTkFUT1JfTUFTSykgPj4KPj4gKyBHRU44X1RJTUVTVEFN UF9PVkVSUklERV9VU19DT1VOVEVSX0RFTk9NSU5BVE9SX1NISUZUKTsKPj4gK8KgwqDCoCBpZiAo ZnJhY19mcmVxICE9IDApCj4+ICvCoMKgwqDCoMKgwqDCoCBmcmFjX2ZyZXEgPSAxMDAwMDAwIC8g KGZyYWNfZnJlcSArIDEpOwo+IE5vdCBjb25zaWRlcmluZyBudW1lcmF0b3I/CgpUaGUgZG9jdW1l bnRhdGlvbiBpcyBxdWl0ZSB0ZXJyaWJsZSwgYnV0IG15IHJlYWRpbmcgaXMgdGhhdCB0aGUgCm51 bWVyYXRvciBkb2Vzbid0IGFwcGx5IHRvIGFueSBjdXJyZW50IGdlbmVyYXRpb25zLgoKPj4gKwo+ PiArwqDCoMKgIHJldHVybiBiYXNlX2ZyZXEgKyBmcmFjX2ZyZXE7Cj4+ICt9Cj4+ICsKPj4gK3N0 YXRpYyB1NjQgcmVhZF90aW1lc3RhbXBfZnJlcXVlbmN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPj4gK3sKPj4gK8KgwqDCoCBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA0 KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBQUk1zIHNheToKPj4gK8KgwqDCoMKgwqDCoMKgwqAg Kgo+PiArwqDCoMKgwqDCoMKgwqDCoCAqwqDCoMKgwqAgIlRoZSB2YWx1ZSBpbiB0aGlzIHJlZ2lz dGVyIGluY3JlbWVudHMgb25jZSBldmVyeSAxNgo+PiArwqDCoMKgwqDCoMKgwqDCoCAqwqDCoMKg wqDCoCBoY2xrcy4iICgiQ0xLQ0ZHIiByZWdpc3RlcikKPj4gK8KgwqDCoMKgwqDCoMKgwqAgKgo+ PiArwqDCoMKgwqDCoMKgwqDCoCAqIFNpbmNlIGRldl9wcml2LT5yYXdjbGtfZnJlcSBzdG9yZXMg dGhlIHZhbHVlIGluIGtIeiBkaXZpZGVkCj4+ICvCoMKgwqDCoMKgwqDCoMKgICogYnkgNCwgd2Ug anVzdCBuZWVkIHRvIGRpdmlkZSBpdCBhZ2FpbiBieSA0Lgo+PiArwqDCoMKgwqDCoMKgwqDCoCAq Lwo+IEkgcmVhZCB0aGlzIGFzIGhjbGsgaXMgMS80dGggZnNiIGNsb2NrIGFuZCB0aW1lc3RhbXAg aXMgMS8xNiBvZiBoY2xrIAo+IHNvIHRoaXMgc2hvdWxkIGJlIDE2LgoKWW91J3JlIHJpZ2h0LCBi dXQgYXMgdGhlIGNvbW1lbnQgYWJvdmUgZXhwbGFpbnMsIHJhd2Nsa19mcmVxIGlzIGFscmVhZHkg CmhjbGsgLyA0LgpBbm90aGVyIC8gNCBnaXZlcyB1cyAvIDE2LgoKPj4gK8KgwqDCoMKgwqDCoMKg IHJldHVybiAoZGV2X3ByaXYtPnJhd2Nsa19mcmVxICogMTAwMCkgLyA0Owo+PiArwqDCoMKgIH0g ZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA3KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCAv KiBQUk1zIHNheToKPj4gK8KgwqDCoMKgwqDCoMKgwqAgKgo+PiArwqDCoMKgwqDCoMKgwqDCoCAq wqDCoMKgwqAgIlRoZSBQQ1UgVFNDIGNvdW50cyAxMG5zIGluY3JlbWVudHM7IHRoaXMgdGltZXN0 YW1wCj4+ICvCoMKgwqDCoMKgwqDCoMKgICrCoMKgwqDCoMKgIHJlZmxlY3RzIGJpdHMgMzg6MyBv ZiB0aGUgVFNDIChpLmUuIDgwbnMgZ3JhbnVsYXJpdHksCj4+ICvCoMKgwqDCoMKgwqDCoMKgICrC oMKgwqDCoMKgIHJvbGxpbmcgb3ZlciBldmVyeSAxLjUgaG91cnMpLgo+PiArwqDCoMKgwqDCoMKg wqDCoCAqLwo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDEyNTAwMDAwOwo+PiArwqDCoMKgIH0g ZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA5KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCB1 MzIgY3RjX3JlZyA9IEk5MTVfUkVBRChHRU44X0NUQ19NT0RFKTsKPj4gK8KgwqDCoMKgwqDCoMKg IHU2NCBmcmVxID0gMDsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgaWYgKChjdGNfcmVnICYgR0VO OF9DVENfU09VUkNFX1BBUkFNRVRFUl9NQVNLKSA9PSAKPj4gR0VOOF9DVENfU09VUkNFX0RJVklE RV9MT0dJQykKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZnJlcSA9IHJlYWRfdGltZXN0YW1w X2ZyZXF1ZW5jeV9mcm9tX2RpdmlkZShkZXZfcHJpdik7Cj4+ICvCoMKgwqDCoMKgwqDCoCBlbHNl Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZyZXEgPSBJU19HRU45X0xQKGRldl9wcml2KSA/ IDE5MjAwMDAwIDogMjQwMDAwMDA7Cj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIC8qIE5vdyBmaWd1 cmUgb3V0IGhvdyB0aGUgY29tbWFuZCBzdHJlYW0ncyB0aW1lc3RhbXAgcmVnaXN0ZXIKPj4gK8Kg wqDCoMKgwqDCoMKgwqAgKiBpbmNyZW1lbnRzIGZyb20gdGhpcyBmcmVxdWVuY3kgKGl0IG1pZ2h0 IGluY3JlbWVudCBvbmx5Cj4+ICvCoMKgwqDCoMKgwqDCoMKgICogZXZlcnkgZmV3IGNsb2NrIGN5 Y2xlKS4KPj4gK8KgwqDCoMKgwqDCoMKgwqAgKi8KPj4gK8KgwqDCoMKgwqDCoMKgIGZyZXEgPj49 IDMgLSAoKGN0Y19yZWcgJiBHRU44X0NUQ19TSElGVF9QQVJBTUVURVJfTUFTSykgPj4KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR0VOOF9DVENfU0hJRlRfUEFSQU1FVEVS X1NISUZUKTsKPiBHZW44IGRvY3VtZW50YXRpb24gaXMgaW5kZWVkIGZ1enp5LiBBcmUgd2UgZ2V0 dGluZyAxMi41bWh6IGFmdGVyIHRoaXMgCj4gc2hpZnQgYXMgZG9jIHNheXMgaXQgdG8gaGF2ZSA4 MG5zIGJhc2UuCj4+ICsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBmcmVxOwo+PiArwqDCoMKg IH0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSAxMCkgewo+PiArwqDCoMKgwqDCoMKg wqAgdTMyIGN0Y19yZWcgPSBJOTE1X1JFQUQoR0VOOF9DVENfTU9ERSk7Cj4+ICvCoMKgwqDCoMKg wqDCoCB1NjQgZnJlcSA9IDA7Cj4+ICvCoMKgwqDCoMKgwqDCoCB1MzIgcnBtX2NvbmZpZ19yZWcg PSAwOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBGaXJzdCBmaWd1cmUgb3V0IHRoZSByZWZl cmVuY2UgZnJlcXVlbmN5LiBUaGVyZSBhcmUgMiB3YXlzCj4+ICvCoMKgwqDCoMKgwqDCoMKgICog d2UgY2FuIGNvbXB1dGUgdGhlIGZyZXF1ZW5jeSwgZWl0aGVyIHRocm91Z2ggdGhlCj4+ICvCoMKg wqDCoMKgwqDCoMKgICogVElNRVNUQU1QX09WRVJSSURFIHJlZ2lzdGVyIG9yIHRocm91Z2ggQ1RD X01PREUgJgo+IFJlbW92ZSBDVENfTU9ERSBhcyBpdCBkb2VzIG5vdCBpdHNlbGYgZGV0ZXJtaW5l IHRoZSBmcmVxdWVuY3kuCgpEb25lLCB0aGFua3MuCgo+PiArwqDCoMKgwqDCoMKgwqDCoCAqIFJQ TV9DT05GSUcgJiBDVENfTU9ERSByZWdpc3RlcnMuIENUQ19NT0RFIHRlbGxzIHVzIHdoaWNoCj4+ ICvCoMKgwqDCoMKgwqDCoMKgICogb25lIHdlIHNob3VsZCB1c2UuCj4+ICvCoMKgwqDCoMKgwqDC oMKgICovCj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoKGN0Y19yZWcgJiBHRU44X0NUQ19TT1VSQ0Vf UEFSQU1FVEVSX01BU0spID09IAo+PiBHRU44X0NUQ19TT1VSQ0VfRElWSURFX0xPR0lDKSB7Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZyZXEgPSByZWFkX3RpbWVzdGFtcF9mcmVxdWVuY3lf ZnJvbV9kaXZpZGUoZGV2X3ByaXYpOwo+PiArwqDCoMKgwqDCoMKgwqAgfSBlbHNlIHsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGNyeXN0YWxfY2xvY2s7Cj4+ICsKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcnBtX2NvbmZpZ19yZWcgPSBJOTE1X1JFQUQoUlBNX0NPTkZJRzApOwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjcnlzdGFsX2Nsb2NrID0gKHJwbV9jb25maWdfcmVn ICYKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR0VOOV9SUE1f Q09ORklHMF9DUllTVEFMX0NMT0NLX0ZSRVFfTUFTSykgPj4KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBHRU45X1JQTV9DT05GSUcwX0NSWVNUQUxfQ0xPQ0tfRlJFUV9TSElGVDsK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZnJlcSA9IGNyeXN0YWxfY2xvY2sgPT0gCj4+IEdF TjlfUlBNX0NPTkZJRzBfQ1JZU1RBTF9DTE9DS19GUkVRXzE5XzJfTUhaID8KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxOTIwMDAwMCA6IDI0MDAwMDAwOwo+IHN3aXRjaCBjYXNl IHdvdWxkIGJlIGJldHRlciBpIGd1ZXNzLgoKRG9uZS4KCj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ ICsKPj4gK8KgwqDCoMKgwqDCoMKgIC8qIE5vdyBmaWd1cmUgb3V0IGhvdyB0aGUgY29tbWFuZCBz dHJlYW0ncyB0aW1lc3RhbXAgcmVnaXN0ZXIKPj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBpbmNyZW1l bnRzIGZyb20gdGhpcyBmcmVxdWVuY3kgKGl0IG1pZ2h0IGluY3JlbWVudCBvbmx5Cj4+ICvCoMKg wqDCoMKgwqDCoMKgICogZXZlcnkgZmV3IGNsb2NrIGN5Y2xlKS4KPj4gK8KgwqDCoMKgwqDCoMKg wqAgKi8KPj4gK8KgwqDCoMKgwqDCoMKgIGZyZXEgPj49IDMgLSAoKHJwbV9jb25maWdfcmVnICYK Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRU4xMF9SUE1fQ09ORklH MF9DVENfU0hJRlRfUEFSQU1FVEVSX01BU0spID4+Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIEdFTjEwX1JQTV9DT05GSUcwX0NUQ19TSElGVF9QQVJBTUVURVJfU0hJRlQp Owo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gZnJlcTsKPj4gK8KgwqDCoCB9Cj4+ICsK Pj4gK8KgwqDCoCBEUk1fRVJST1IoIlVua25vd24gZ2VuLCB1bmFibGUgdG8gY29tcHV0ZSBjb21t YW5kIHN0cmVhbSAKPj4gdGltZXN0YW1wIGZyZXF1ZW5jeVxuIik7Cj4+ICvCoMKgwqAgcmV0dXJu IDA7Cj4+ICt9Cj4+ICsKPj4gwqAgLyoKPj4gwqDCoCAqIERldGVybWluZSB2YXJpb3VzIGludGVs X2RldmljZV9pbmZvIGZpZWxkcyBhdCBydW50aW1lLgo+PiDCoMKgICoKPj4gQEAgLTQ1MCw2ICs1 NDQsOSBAQCB2b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3QgCj4+IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiDCoMKgwqDCoMKgIGVsc2UgaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gMTApCj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBnZW4xMF9zc2V1X2luZm9f aW5pdChkZXZfcHJpdik7Cj4+IMKgICvCoMKgwqAgLyogSW5pdGlhbGl6ZSBjb21tYW5kIHN0cmVh bSB0aW1lc3RhbXAgZnJlcXVlbmN5ICovCj4+ICvCoMKgwqAgaW5mby0+Y3NfdGltZXN0YW1wX2Zy ZXF1ZW5jeSA9IHJlYWRfdGltZXN0YW1wX2ZyZXF1ZW5jeShkZXZfcHJpdik7Cj4+ICsKPj4gwqDC oMKgwqDCoCBEUk1fREVCVUdfRFJJVkVSKCJzbGljZSBtYXNrOiAlMDR4XG4iLCBpbmZvLT5zc2V1 LnNsaWNlX21hc2spOwo+PiDCoMKgwqDCoMKgIERSTV9ERUJVR19EUklWRVIoInNsaWNlIHRvdGFs OiAldVxuIiwgCj4+IGh3ZWlnaHQ4KGluZm8tPnNzZXUuc2xpY2VfbWFzaykpOwo+PiDCoMKgwqDC oMKgIERSTV9ERUJVR19EUklWRVIoInN1YnNsaWNlIHRvdGFsOiAldVxuIiwKPj4gQEAgLTQ2NSw0 ICs1NjIsNiBAQCB2b2lkIGludGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3QgCj4+ IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGluZm8tPnNzZXUuaGFzX3N1YnNsaWNlX3BnID8gInkiIDogIm4iKTsKPj4gwqDCoMKgwqDC oCBEUk1fREVCVUdfRFJJVkVSKCJoYXMgRVUgcG93ZXIgZ2F0aW5nOiAlc1xuIiwKPj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbmZvLT5zc2V1Lmhhc19ldV9wZyA/ICJ5IiA6ICJuIik7 Cj4+ICvCoMKgwqAgRFJNX0RFQlVHX0RSSVZFUigiQ1MgdGltZXN0YW1wIGZyZXF1ZW5jeTogJWxs dVxuIiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbmZvLT5jc190aW1lc3RhbXBfZnJl cXVlbmN5KTsKPj4gwqAgfQo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2Ry bS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4+IGluZGV4IDEyNWJkZTdkOTUwNC4u YzNmZjBkNDk0N2FmIDEwMDY0NAo+PiAtLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgK Pj4gKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4+IEBAIC00NTAsNiArNDUwLDEy IEBAIHR5cGVkZWYgc3RydWN0IGRybV9pOTE1X2lycV93YWl0IHsKPj4gwqDCoCAqLwo+PiDCoCAj ZGVmaW5lIEk5MTVfUEFSQU1fSEFTX0VYRUNfRkVOQ0VfQVJSQVnCoCA0OQo+PiDCoCArLyogRnJl cXVlbmN5IG9mIHRoZSBjb21tYW5kIHN0cmVhbWVyIHRpbWVzdGFtcHMgZ2l2ZW4gYnkgdGhlIAo+ PiAqX1RJTUVTVEFNUAo+PiArICogcmVnaXN0ZXJzLiBUaGlzIHVzZWQgdG8gYmUgZml4ZWQgcGVy IHBsYXRmb3JtIGJ1dCBmcm9tIENOTCAKPj4gb253YXJkcywgdGhpcwo+PiArICogbWlnaHQgdmFy eSBkZXBlbmRpbmcgb24gdGhlIHBhcnRzLgo+PiArICovCj4+ICsjZGVmaW5lIEk5MTVfUEFSQU1f Q1NfVElNRVNUQU1QX0ZSRVFVRU5DWcKgwqAgNTAKPj4gKwo+PiDCoCB0eXBlZGVmIHN0cnVjdCBk cm1faTkxNV9nZXRwYXJhbSB7Cj4+IMKgwqDCoMKgwqAgX19zMzIgcGFyYW07Cj4+IMKgwqDCoMKg wqAgLyoKPgo+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK