From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH 6/7] drm/i915: expose command stream timestamp frequency to userspace Date: Fri, 01 Dec 2017 18:02:22 -0200 Message-ID: <1512158542.1025.3.camel@intel.com> References: <20171110190845.32574-1-lionel.g.landwerlin@intel.com> <20171110190845.32574-7-lionel.g.landwerlin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id AEF6F6E02C for ; Fri, 1 Dec 2017 20:02:44 +0000 (UTC) In-Reply-To: <20171110190845.32574-7-lionel.g.landwerlin@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lionel Landwerlin , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RW0gU2V4LCAyMDE3LTExLTEwIMOgcyAxOTowOCArMDAwMCwgTGlvbmVsIExhbmR3ZXJsaW4gZXNj cmV2ZXU6Cj4gV2UgdXNlIHRvIGhhdmUgdGhpcyBmaXhlZCBwZXIgZ2VuZXJhdGlvbiwgYnV0IHN0 YXJ0aW5nIHdpdGggQ05MCj4gdXNlcnNwYWNlCj4gY2Fubm90IHRlbGwganVzdCBvZmYgdGhlIFBD SSBJRC4gTGV0J3MgbWFrZSB0aGlzIGluZm9ybWF0aW9uCj4gYXZhaWxhYmxlLiBUaGlzCj4gaXMg cGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyB3aGVyZSBtdWNo IG9mIHRoZQo+IG5vcm1hbGl6YXRpb24gd29yayBpcyBkb25lIHVzaW5nIHRob3NlIHRpbWVzdGFt cHMgKHRoaXMgaW5jbHVkZQo+IHBpcGVsaW5lCj4gc3RhdGlzdGljcyBpbiBib3RoIEdMICYgVnVs a2FuIGFzIHdlbGwgYXMgT0EgcmVwb3J0cykuCj4gCj4gdjI6IFVzZSB2YXJpYWJsZXMgZm9yIDI0 TUh6LzE5LjJNSHogdmFsdWVzIChFd2VsaW5hKQo+IMKgwqDCoMKgUmVuYW1lZCBmdW5jdGlvbiAm IGNvZGluZyBzdHlsZSAoU2FnYXIpCj4gCj4gdjM6IEZpeCBmcmVxdWVuY3kgcmVhZCBvbiBCcm9h ZHdlbGwgKFNhZ2FyKQo+IMKgwqDCoMKgRml4IG1pc3NpbmcgZGl2aWRlIGJ5IDQgb24gPD0gZ2Vu NCAoU2FnYXIpCj4gCj4gU2lnbmVkLW9mZi1ieTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5n LmxhbmR3ZXJsaW5AaW50ZWwuY29tPgo+IFRlc3RlZC1ieTogUmFmYWVsIEFudG9nbm9sbGkgPHJh ZmFlbC5hbnRvZ25vbGxpQGludGVsLmNvbT4KPiAtLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jwqDCoMKgwqDCoMKgfMKgwqDCoDIgKwo+IMKgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuY8KgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDMgKwo+IMKgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDIgKwo+ IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKg wqAyMSArKysrKysKPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMg fCAxMDcKPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gwqBpbmNsdWRlL3VhcGkv ZHJtL2k5MTVfZHJtLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqDCoDYgKysKPiDC oDYgZmlsZXMgY2hhbmdlZCwgMTQxIGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggNTMzYmEwOTZiOWE2Li41NzQ4NWYyOWQ3YzkgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0zMjQ1LDYgKzMyNDUsOCBAQCBz dGF0aWMgaW50IGk5MTVfZW5naW5lX2luZm8oc3RydWN0IHNlcV9maWxlICptLAo+IHZvaWQgKnVu dXNlZCkKPiDCoAkJwqDCoMKgeWVzbm8oZGV2X3ByaXYtPmd0LmF3YWtlKSk7Cj4gwqAJc2VxX3By aW50ZihtLCAiR2xvYmFsIGFjdGl2ZSByZXF1ZXN0czogJWRcbiIsCj4gwqAJCcKgwqDCoGRldl9w cml2LT5ndC5hY3RpdmVfcmVxdWVzdHMpOwo+ICsJc2VxX3ByaW50ZihtLCAiQ1MgdGltZXN0YW1w IGZyZXF1ZW5jeTogJWxsdSBIelxuIiwKPiArCQnCoMKgwqBkZXZfcHJpdi0+aW5mby5jc190aW1l c3RhbXBfZnJlcXVlbmN5KTsKPiDCoAo+IMKgCXAgPSBkcm1fc2VxX2ZpbGVfcHJpbnRlcihtKTsK PiDCoAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMKPiBpbmRleCBkOTdmZTljOTQzOWEuLmRiZDA0ZDVmNzVlZSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBAIC00MTksNiArNDE5LDkgQEAgc3RhdGljIGludCBpOTE1 X2dldHBhcmFtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gdm9pZCAqZGF0YSwKPiDCoAkJaWYg KCF2YWx1ZSkKPiDCoAkJCXJldHVybiAtRU5PREVWOwo+IMKgCQlicmVhazsKPiArCWNhc2UgSTkx NV9QQVJBTV9DU19USU1FU1RBTVBfRlJFUVVFTkNZOgo+ICsJCXZhbHVlID0gSU5URUxfSU5GTyhk ZXZfcHJpdiktCj4gPmNzX3RpbWVzdGFtcF9mcmVxdWVuY3k7Cj4gKwkJYnJlYWs7Cj4gwqAJZGVm YXVsdDoKPiDCoAkJRFJNX0RFQlVHKCJVbmtub3duIHBhcmFtZXRlciAlZFxuIiwgcGFyYW0tPnBh cmFtKTsKPiDCoAkJcmV0dXJuIC1FSU5WQUw7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBp bmRleCA5ZjI2YzM0ZTBlNTIuLmViYzQ5Y2E1OGViNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+IEBAIC04ODUsNiArODg1LDggQEAgc3RydWN0IGludGVsX2RldmljZV9pbmZvIHsKPiDC oAkvKiBTbGljZS9zdWJzbGljZS9FVSBpbmZvICovCj4gwqAJc3RydWN0IHNzZXVfZGV2X2luZm8g c3NldTsKPiDCoAo+ICsJdTY0IGNzX3RpbWVzdGFtcF9mcmVxdWVuY3k7Cj4gKwo+IMKgCXN0cnVj dCBjb2xvcl9sdXRzIHsKPiDCoAkJdTE2IGRlZ2FtbWFfbHV0X3NpemU7Cj4gwqAJCXUxNiBnYW1t YV9sdXRfc2l6ZTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IGluZGV4IDdhYTdkYzBjMzM2 Yi4uZWM5ZmFhMTFlMzA1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAgLTExMTks OSArMTExOSwyNCBAQCBzdGF0aWMgaW5saW5lIGJvb2wKPiBpOTE1X21taW9fcmVnX3ZhbGlkKGk5 MTVfcmVnX3QgcmVnKQo+IMKgCj4gwqAvKiBSUE0gdW5pdCBjb25maWcgKEdlbjgrKSAqLwo+IMKg I2RlZmluZSBSUE1fQ09ORklHMAnCoMKgwqDCoF9NTUlPKDB4MEQwMCkKPiArI2RlZmluZcKgwqBH RU45X1JQTV9DT05GSUcwX0NSWVNUQUxfQ0xPQ0tfRlJFUV9TSElGVAkzCj4gKyNkZWZpbmXCoMKg R0VOOV9SUE1fQ09ORklHMF9DUllTVEFMX0NMT0NLX0ZSRVFfTUFTSwkoMSA8PAo+IEdFTjlfUlBN X0NPTkZJRzBfQ1JZU1RBTF9DTE9DS19GUkVRX1NISUZUKQo+ICsjZGVmaW5lwqDCoEdFTjlfUlBN X0NPTkZJRzBfQ1JZU1RBTF9DTE9DS19GUkVRXzE5XzJfTUhaCTAKPiArI2RlZmluZcKgwqBHRU45 X1JQTV9DT05GSUcwX0NSWVNUQUxfQ0xPQ0tfRlJFUV8yNF9NSFoJMQo+ICsjZGVmaW5lwqDCoEdF TjEwX1JQTV9DT05GSUcwX0NUQ19TSElGVF9QQVJBTUVURVJfU0hJRlQJMQo+ICsjZGVmaW5lwqDC oEdFTjEwX1JQTV9DT05GSUcwX0NUQ19TSElGVF9QQVJBTUVURVJfTUFTSwkoMHgzIDw8Cj4gR0VO MTBfUlBNX0NPTkZJRzBfQ1RDX1NISUZUX1BBUkFNRVRFUl9TSElGVCkKPiArCj4gwqAjZGVmaW5l IFJQTV9DT05GSUcxCcKgwqDCoMKgX01NSU8oMHgwRDA0KQo+IMKgI2RlZmluZcKgwqBHRU4xMF9H VF9OT0FfRU5BQkxFwqDCoCgxIDw8IDkpCj4gwqAKPiArLyogR1BNIHVuaXQgY29uZmlnIChHZW45 KykgKi8KPiArI2RlZmluZSBDVENfTU9ERQkJCV9NTUlPKDB4QTI2QykKPiArI2RlZmluZcKgwqBD VENfU09VUkNFX1BBUkFNRVRFUl9NQVNLIDEKPiArI2RlZmluZcKgwqBDVENfU09VUkNFX0NSWVNU QUxfQ0xPQ0sJMAo+ICsjZGVmaW5lwqDCoENUQ19TT1VSQ0VfRElWSURFX0xPR0lDCTEKPiArI2Rl ZmluZcKgwqBDVENfU0hJRlRfUEFSQU1FVEVSX1NISUZUCTEKPiArI2RlZmluZcKgwqBDVENfU0hJ RlRfUEFSQU1FVEVSX01BU0sJKDB4MyA8PAo+IENUQ19TSElGVF9QQVJBTUVURVJfU0hJRlQpCj4g Kwo+IMKgLyogUkNQIHVuaXQgY29uZmlnIChHZW44KykgKi8KPiDCoCNkZWZpbmUgUkNQX0NPTkZJ RwnCoMKgwqDCoF9NTUlPKDB4MEQwOCkKPiDCoAo+IEBAIC04ODY2LDYgKzg4ODEsMTIgQEAgZW51 bSBza2xfcG93ZXJfZ2F0ZSB7Cj4gwqAjZGVmaW5lIElMS19USU1FU1RBTVBfSEkJX01NSU8oMHg3 MDA3MCkKPiDCoCNkZWZpbmUgSVZCX1RJTUVTVEFNUF9DVFIJX01NSU8oMHg0NDA3MCkKPiDCoAo+ ICsjZGVmaW5lIEdFTjlfVElNRVNUQU1QX09WRVJSSURFCQkJCV9NTUlPCj4gKDB4NDQwNzQpCj4g KyNkZWZpbmXCoMKgR0VOOV9USU1FU1RBTVBfT1ZFUlJJREVfVVNfQ09VTlRFUl9ESVZJREVSX1NI SUZUCTAKPiArI2RlZmluZcKgwqBHRU45X1RJTUVTVEFNUF9PVkVSUklERV9VU19DT1VOVEVSX0RJ VklERVJfTUFTSwkweDNmCj4gZgo+ICsjZGVmaW5lwqDCoEdFTjlfVElNRVNUQU1QX09WRVJSSURF X1VTX0NPVU5URVJfREVOT01JTkFUT1JfU0hJRlQJCj4gMTIKPiArI2RlZmluZcKgwqBHRU45X1RJ TUVTVEFNUF9PVkVSUklERV9VU19DT1VOVEVSX0RFTk9NSU5BVE9SX01BU0sJCj4gKDB4ZiA8PCAx MikKPiArCj4gwqAjZGVmaW5lIF9QSVBFX0ZSTVRNU1RNUF9BCQkweDcwMDQ4Cj4gwqAjZGVmaW5l IFBJUEVfRlJNVE1TVE1QKHBpcGUpCQlcCj4gwqAJCQlfTU1JT19QSVBFMihwaXBlLCBfUElQRV9G Uk1UTVNUTVBfQSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2 aWNlX2luZm8uYwo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYwo+ IGluZGV4IGRiMDNkMTc5ZmM4NS4uNzhiZjczNzRmYmRkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCj4gQEAgLTMyOSw2ICszMjksMTA4IEBAIHN0YXRpYyB2 b2lkIGJyb2Fkd2VsbF9zc2V1X2luZm9faW5pdChzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiDCoAlzc2V1LT5oYXNfZXVfcGcgPSAwOwo+IMKgfQo+IMKgCj4gK3N0YXRpYyB1 NjQgcmVhZF9yZWZlcmVuY2VfdHNfZnJlcShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gK3sKPiArCXUzMiB0c19vdmVycmlkZSA9IEk5MTVfUkVBRChHRU45X1RJTUVTVEFNUF9P VkVSUklERSk7Cj4gKwl1NjQgYmFzZV9mcmVxLCBmcmFjX2ZyZXE7Cj4gKwo+ICsJYmFzZV9mcmVx ID0gKCh0c19vdmVycmlkZSAmCj4gR0VOOV9USU1FU1RBTVBfT1ZFUlJJREVfVVNfQ09VTlRFUl9E SVZJREVSX01BU0spID4+Cj4gKwkJwqDCoMKgwqDCoEdFTjlfVElNRVNUQU1QX09WRVJSSURFX1VT X0NPVU5URVJfRElWSURFUl9TSElGCj4gVCkgKyAxOwo+ICsJYmFzZV9mcmVxICo9IDEwMDAwMDA7 Cj4gKwo+ICsJZnJhY19mcmVxID0gKCh0c19vdmVycmlkZSAmCj4gKwkJwqDCoMKgwqDCoMKgR0VO OV9USU1FU1RBTVBfT1ZFUlJJREVfVVNfQ09VTlRFUl9ERU5PTUlOQVRPUgo+IF9NQVNLKSA+Pgo+ ICsJCcKgwqDCoMKgwqBHRU45X1RJTUVTVEFNUF9PVkVSUklERV9VU19DT1VOVEVSX0RFTk9NSU5B VE9SXwo+IFNISUZUKTsKPiArCWlmIChmcmFjX2ZyZXEgIT0gMCkKPiArCQlmcmFjX2ZyZXEgPSAx MDAwMDAwIC8gKGZyYWNfZnJlcSArIDEpOwo+ICsKPiArCXJldHVybiBiYXNlX2ZyZXEgKyBmcmFj X2ZyZXE7Cj4gK30KPiArCj4gK3N0YXRpYyB1NjQgcmVhZF90aW1lc3RhbXBfZnJlcXVlbmN5KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gKmRldl9wcml2KQo+ICt7Cj4gKwl1NjQgZjEyXzVfbWh6 ID0gMTI1MDAwMDA7Cj4gKwl1NjQgZjE5XzJfbWh6ID0gMTkyMDAwMDA7Cj4gKwl1NjQgZjI0X21o eiA9IDI0MDAwMDAwOwo+ICsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDQpIHsKPiAr CQkvKiBQUk1zIHNheToKPiArCQnCoCoKPiArCQnCoCrCoMKgwqDCoMKgIlRoZSB2YWx1ZSBpbiB0 aGlzIHJlZ2lzdGVyIGluY3JlbWVudHMgb25jZQo+IGV2ZXJ5IDE2Cj4gKwkJwqAqwqDCoMKgwqDC oMKgaGNsa3MuIiAodGhyb3VnaCB0aGUg4oCcQ2xvY2tpbmcKPiBDb25maWd1cmF0aW9u4oCdCj4g KwkJwqAqwqDCoMKgwqDCoMKgKOKAnENMS0NGR+KAnSkgTUNIQkFSIHJlZ2lzdGVyKQo+ICsJCcKg Ki8KPiArCQlyZXR1cm4gKGRldl9wcml2LT5yYXdjbGtfZnJlcSAqIDEwMDApIC8gMTY7Cj4gKwl9 IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gOCkgewo+ICsJCS8qIFBSTXMgc2F5Ogo+ ICsJCcKgKgo+ICsJCcKgKsKgwqDCoMKgwqAiVGhlIFBDVSBUU0MgY291bnRzIDEwbnMgaW5jcmVt ZW50czsgdGhpcwo+IHRpbWVzdGFtcAo+ICsJCcKgKsKgwqDCoMKgwqDCoHJlZmxlY3RzIGJpdHMg Mzg6MyBvZiB0aGUgVFNDIChpLmUuIDgwbnMKPiBncmFudWxhcml0eSwKPiArCQnCoCrCoMKgwqDC oMKgwqByb2xsaW5nIG92ZXIgZXZlcnkgMS41IGhvdXJzKS4KPiArCQnCoCovCj4gKwkJcmV0dXJu IGYxMl81X21oejsKPiArCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA5KSB7Cj4g KwkJdTMyIGN0Y19yZWcgPSBJOTE1X1JFQUQoQ1RDX01PREUpOwo+ICsJCXU2NCBmcmVxID0gMDsK PiArCj4gKwkJaWYgKChjdGNfcmVnICYgQ1RDX1NPVVJDRV9QQVJBTUVURVJfTUFTSykgPT0KPiBD VENfU09VUkNFX0RJVklERV9MT0dJQykgewo+ICsJCQlmcmVxID0gcmVhZF9yZWZlcmVuY2VfdHNf ZnJlcShkZXZfcHJpdik7Cj4gKwkJfSBlbHNlIHsKPiArCQkJZnJlcSA9IElTX0dFTjlfTFAoZGV2 X3ByaXYpID8gZjE5XzJfbWh6IDoKPiBmMjRfbWh6Owo+ICsKPiArCQkJLyogTm93IGZpZ3VyZSBv dXQgaG93IHRoZSBjb21tYW5kIHN0cmVhbSdzCj4gdGltZXN0YW1wCj4gKwkJCcKgKiByZWdpc3Rl ciBpbmNyZW1lbnRzIGZyb20gdGhpcyBmcmVxdWVuY3kKPiAoaXQgbWlnaHQKPiArCQkJwqAqIGlu Y3JlbWVudCBvbmx5IGV2ZXJ5IGZldyBjbG9jayBjeWNsZSkuCj4gKwkJCcKgKi8KPiArCQkJZnJl cSA+Pj0gMyAtICgoY3RjX3JlZyAmCj4gQ1RDX1NISUZUX1BBUkFNRVRFUl9NQVNLKSA+Pgo+ICsJ CQkJwqDCoMKgwqDCoMKgQ1RDX1NISUZUX1BBUkFNRVRFUl9TSElGVCk7Cj4gKwkJfQo+ICsKPiAr CQlyZXR1cm4gZnJlcTsKPiArCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSAxMCkg ewo+ICsJCXUzMiBjdGNfcmVnID0gSTkxNV9SRUFEKENUQ19NT0RFKTsKPiArCQl1NjQgZnJlcSA9 IDA7Cj4gKwkJdTMyIHJwbV9jb25maWdfcmVnID0gMDsKPiArCj4gKwkJLyogRmlyc3QgZmlndXJl IG91dCB0aGUgcmVmZXJlbmNlIGZyZXF1ZW5jeS4gVGhlcmUKPiBhcmUgMiB3YXlzCj4gKwkJwqAq IHdlIGNhbiBjb21wdXRlIHRoZSBmcmVxdWVuY3ksIGVpdGhlciB0aHJvdWdoIHRoZQo+ICsJCcKg KiBUSU1FU1RBTVBfT1ZFUlJJREUgcmVnaXN0ZXIgb3IgdGhyb3VnaAo+IFJQTV9DT05GSUcuIENU Q19NT0RFCj4gKwkJwqAqIHRlbGxzIHVzIHdoaWNoIG9uZSB3ZSBzaG91bGQgdXNlLgo+ICsJCcKg Ki8KPiArCQlpZiAoKGN0Y19yZWcgJiBDVENfU09VUkNFX1BBUkFNRVRFUl9NQVNLKSA9PQo+IENU Q19TT1VSQ0VfRElWSURFX0xPR0lDKSB7Cj4gKwkJCWZyZXEgPSByZWFkX3JlZmVyZW5jZV90c19m cmVxKGRldl9wcml2KTsKPiArCQl9IGVsc2Ugewo+ICsJCQl1MzIgY3J5c3RhbF9jbG9jazsKPiAr Cj4gKwkJCXJwbV9jb25maWdfcmVnID0gSTkxNV9SRUFEKFJQTV9DT05GSUcwKTsKPiArCQkJY3J5 c3RhbF9jbG9jayA9IChycG1fY29uZmlnX3JlZyAmCj4gKwkJCQkJwqBHRU45X1JQTV9DT05GSUcw X0NSWVNUQUxfQ0wKPiBPQ0tfRlJFUV9NQVNLKSA+Pgo+ICsJCQkJR0VOOV9SUE1fQ09ORklHMF9D UllTVEFMX0NMT0NLX0ZSRVFfCj4gU0hJRlQ7Cj4gKwkJCXN3aXRjaCAoY3J5c3RhbF9jbG9jaykg ewo+ICsJCQljYXNlCj4gR0VOOV9SUE1fQ09ORklHMF9DUllTVEFMX0NMT0NLX0ZSRVFfMTlfMl9N SFo6Cj4gKwkJCQlmcmVxID0gZjE5XzJfbWh6Owo+ICsJCQkJYnJlYWs7Cj4gKwkJCWNhc2UKPiBH RU45X1JQTV9DT05GSUcwX0NSWVNUQUxfQ0xPQ0tfRlJFUV8yNF9NSFo6Cj4gKwkJCQlmcmVxID0g ZjI0X21oejsKPiArCQkJCWJyZWFrOwo+ICsJCQl9Cj4gKwkJfQo+ICsKPiArCQkvKiBOb3cgZmln dXJlIG91dCBob3cgdGhlIGNvbW1hbmQgc3RyZWFtJ3MgdGltZXN0YW1wCj4gcmVnaXN0ZXIKPiAr CQnCoCogaW5jcmVtZW50cyBmcm9tIHRoaXMgZnJlcXVlbmN5IChpdCBtaWdodAo+IGluY3JlbWVu dCBvbmx5Cj4gKwkJwqAqIGV2ZXJ5IGZldyBjbG9jayBjeWNsZSkuCj4gKwkJwqAqLwo+ICsJCWZy ZXEgPj49IDMgLSAoKHJwbV9jb25maWdfcmVnICYKPiArCQkJwqDCoMKgwqDCoMKgwqBHRU4xMF9S UE1fQ09ORklHMF9DVENfU0hJRlRfUEFSQU1FVEVSCj4gX01BU0spID4+Cj4gKwkJCcKgwqDCoMKg wqDCoEdFTjEwX1JQTV9DT05GSUcwX0NUQ19TSElGVF9QQVJBTUVURVJfCj4gU0hJRlQpOwoKSSd2 ZSBiZWVuIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoaXMgY29kZS4gV2hhdCdzIGNvbmZ1c2luZyB0 byBtZSBpcwp0aGF0IG9uIGdlbiA5IHRoZSBmcmVxdWVuY3kgc2hpZnRpbmcgb25seSBoYXBwZW5z IGZvciB0aGUgbm9uLQpESVZJREVSX0xPR0lDIGNhc2UsIHdoaWxlIGhlcmUgdGhlIGZyZXF1ZW5j eSBzaGlmdGluZyAoYXBwYXJlbnRseSkKYXBwbGllcyB0byBib3RoIERJVklERVJfTE9HSUMgY2Fz ZXMgc2luY2UgaXQgaXMgb3V0c2lkZSB0aGUgaWYKc3RhdGVtZW50LgoKT24gdGhlIG90aGVyIGhh bmQsIHRoaXMgY29kZSBoZXJlIHVzZXMgInJwbV9jb25maWdfcmVnIiB3aGljaCBpcyAwIGZvcgp0 aGUgbm9uLURJVklERVJfTE9HSUMgY2FzZSwgc2luY2Ugd2Ugb25seSBJOTE1X1JFQUQgcnBtX2Nv bmZpZ19yZWcKaW5zaWRlIHRoZSAiZWxzZSIgc3RhdGVtZW50LiBFaXRoZXIgdGhpcyBpcyBhIGJ1 Zywgb3IgaXQncyBhIHJlYWxseQpub24tdHJpdmlhbCB3YXkgb2Ygd3JpdGluZyBjb2RlIGFuZCB3 ZSBzaG91bGQganVzdCBkbyAiZnJlcSA+Pj0gMyIgaW4KdGhlIGZpcnN0IHBhcnQgb2YgdGhlIGlm IHN0YXRlbWVudCBhbmQgZG8gdGhlIGFwcHJvcHJpYXRlIGRpdmlzaW9uIGluCnRoZSBlbHNlIGNh c2UuCgpBcyBhIG5vdGUsIGluIG91ciBkcml2ZXIgd2UgZ2VuZXJhbGx5IGRvbid0IHplcm8taW5p dGlhbGl6ZSB2YXJpYWJsZXMKd2hlbiB3ZSBkb24ndCBuZWVkLiBJIGtub3cgdGhhdCBkb2luZyB6 ZXJvIGluaXRpYWxpemF0aW9uIGhhcyBpdHMKYWR2YW50YWdlcywgYnV0IHRoZSBncmVhdCBhZHZh bnRhZ2Ugb2Ygbm90IHplcm8gaW5pdGlhbGl6aW5nIHRoaW5ncyBpcwp0aGF0IGl0IGFsbG93cyBH Q0MgdG8gY2F0Y2ggYnVncyBzdWNoIGFzIHRoZSBvbmUgdGhhdCdzIGFwcGFyZW50bHkKaGFwcGVu aW5nIGhlcmUuIEFub3RoZXIgdGhpbmcgd2hpY2ggd2UgdHJ5IHRvIGRvIGlzIHRvIGxpbWl0IHZh cmlhYmxlcwp0byB0aGUgbmFycm93ZXN0IHNjb3BlIHdoZXJlIHRoZXkgYXJlIG5lZWRlZCwgdGhp cyB3YXkgdGhleSBjYW4ndCBldmVuCmJlIGFjY2Vzc2VkIG91dHNpZGUgdGhlaXIgc2NvcGU6IGRv aW5nIHRoaXMgd291bGQgYWxzbyBoYXZlIGhlbHBlZApwcmV2ZW50aW5nIHRoZSBhcHBhcmVudCBw cm9ibGVtIHdlIGhhdmUgaGVyZS4KClNvOiBpZiB0aGlzIGNvZGUgaXMgaGFzIGEgYnVnLCB3ZSBu ZWVkIHRvIGZpeCBpdCAocG9zc2libHkgYnkgcmVhZGluZwpSUE1fQ09ORklHMCBvdXRzaWRlIHRo ZSBpZiBzdGF0ZW1lbnQpLiBJZiB0aGlzIGNvZGUgaXMgYWN0dWFsbHkgd29ya2luZwphcyBpbnRl bmRlZCwgd2UgbmVlZCB0byBtYWtlIGl0IGEgbGl0dGxlIGxlc3MgY29udHJpdmVkLiBJIHNwZW50 IGEgbG9uZwp0aW1lIHN0YXJpbmcgYXQgb3VyIHNwZWMgYW5kIEknbSBub3Qgc3VyZSB3aGF0IHNo b3VsZCBiZSBkb25lLgoKQXMgYW4gYWRkaXRpb25hbCBzdWdnZXN0aW9uLCB5b3UgY291bGQgYWxz byBleHRyYWN0IHRoZSBjb2RlIHRoYXQgZGVhbHMKd2l0aCB0aGUgImVsc2UiIHN0YXRlbWVudCB0 byBpdHMgb3duIGZ1bmN0aW9uLCBqdXN0IGxpa2UgeW91IGRpZCB3aXRoCnJlYWRfcmVmZXJlbmNl X3RzX2ZyZXEoKS4KClRoYW5rcywKUGF1bG8KCj4gKwo+ICsJCXJldHVybiBmcmVxOwo+ICsJfQo+ ICsKPiArCURSTV9FUlJPUigiVW5rbm93biBnZW4sIHVuYWJsZSB0byBjb21wdXRlIGNvbW1hbmQg c3RyZWFtCj4gdGltZXN0YW1wIGZyZXF1ZW5jeVxuIik7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsK PiDCoC8qCj4gwqAgKiBEZXRlcm1pbmUgdmFyaW91cyBpbnRlbF9kZXZpY2VfaW5mbyBmaWVsZHMg YXQgcnVudGltZS4KPiDCoCAqCj4gQEAgLTQ1MCw2ICs1NTIsOSBAQCB2b2lkIGludGVsX2Rldmlj ZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiDCoAllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKQo+IMKgCQlnZW4xMF9zc2V1 X2luZm9faW5pdChkZXZfcHJpdik7Cj4gwqAKPiArCS8qIEluaXRpYWxpemUgY29tbWFuZCBzdHJl YW0gdGltZXN0YW1wIGZyZXF1ZW5jeSAqLwo+ICsJaW5mby0+Y3NfdGltZXN0YW1wX2ZyZXF1ZW5j eSA9Cj4gcmVhZF90aW1lc3RhbXBfZnJlcXVlbmN5KGRldl9wcml2KTsKPiArCj4gwqAJRFJNX0RF QlVHX0RSSVZFUigic2xpY2UgbWFzazogJTA0eFxuIiwgaW5mby0KPiA+c3NldS5zbGljZV9tYXNr KTsKPiDCoAlEUk1fREVCVUdfRFJJVkVSKCJzbGljZSB0b3RhbDogJXVcbiIsIGh3ZWlnaHQ4KGlu Zm8tCj4gPnNzZXUuc2xpY2VfbWFzaykpOwo+IMKgCURSTV9ERUJVR19EUklWRVIoInN1YnNsaWNl IHRvdGFsOiAldVxuIiwKPiBAQCAtNDY1LDQgKzU3MCw2IEBAIHZvaWQgaW50ZWxfZGV2aWNlX2lu Zm9fcnVudGltZV9pbml0KHN0cnVjdAo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKg CQkJwqBpbmZvLT5zc2V1Lmhhc19zdWJzbGljZV9wZyA/ICJ5IiA6ICJuIik7Cj4gwqAJRFJNX0RF QlVHX0RSSVZFUigiaGFzIEVVIHBvd2VyIGdhdGluZzogJXNcbiIsCj4gwqAJCQnCoGluZm8tPnNz ZXUuaGFzX2V1X3BnID8gInkiIDogIm4iKTsKPiArCURSTV9ERUJVR19EUklWRVIoIkNTIHRpbWVz dGFtcCBmcmVxdWVuY3k6ICVsbHVcbiIsCj4gKwkJCcKgaW5mby0+Y3NfdGltZXN0YW1wX2ZyZXF1 ZW5jeSk7Cj4gwqB9Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+ IGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gaW5kZXggNmMwMmNlZDY2M2Y4Li5iNTc5 ODU5Mjk1NTMgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gKysr IGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gQEAgLTQ4MSw2ICs0ODEsMTIgQEAgdHlw ZWRlZiBzdHJ1Y3QgZHJtX2k5MTVfaXJxX3dhaXQgewo+IMKgICovCj4gwqAjZGVmaW5lIEk5MTVf UEFSQU1fSEFTX0NPTlRFWFRfSVNPTEFUSU9OIDUwCj4gwqAKPiArLyogRnJlcXVlbmN5IG9mIHRo ZSBjb21tYW5kIHN0cmVhbWVyIHRpbWVzdGFtcHMgZ2l2ZW4gYnkgdGhlCj4gKl9USU1FU1RBTVAK PiArICogcmVnaXN0ZXJzLiBUaGlzIHVzZWQgdG8gYmUgZml4ZWQgcGVyIHBsYXRmb3JtIGJ1dCBm cm9tIENOTAo+IG9ud2FyZHMsIHRoaXMKPiArICogbWlnaHQgdmFyeSBkZXBlbmRpbmcgb24gdGhl IHBhcnRzLgo+ICsgKi8KPiArI2RlZmluZSBJOTE1X1BBUkFNX0NTX1RJTUVTVEFNUF9GUkVRVUVO Q1kgNTEKPiArCj4gwqB0eXBlZGVmIHN0cnVjdCBkcm1faTkxNV9nZXRwYXJhbSB7Cj4gwqAJX19z MzIgcGFyYW07Cj4gwqAJLyoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==