From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 3/3] drm/i915: Skip pipestats for GT operations in chv/vlv irq handler Date: Thu, 14 Sep 2017 19:02:12 +0300 Message-ID: <20170914160212.GA4914@intel.com> References: <20170913181846.18121-1-chris@chris-wilson.co.uk> <20170913181846.18121-3-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 686AE6EA76 for ; Thu, 14 Sep 2017 16:03:17 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20170913181846.18121-3-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org, Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBTZXAgMTMsIDIwMTcgYXQgMDc6MTg6NDZQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFdoZW4gaGFuZGxpbmcgY29udGV4dC1zd2l0Y2ggaW50ZXJydXB0cywgd2UgYXJlIHZl cnkgbGF0ZW5jeSBzZW5zaXRpdmU7Cj4gZXZlcnkgdW5uZWNlc3NhcnkgbW1pbyAodW5jYWNoZWQp IHJlYWQgY29udHJpYnV0ZXMgdG93YXJkIGEgbGFyZ2UKPiBkZWNyZWFzZSBpbiByZXF1ZXN0IHRo cm91Z2hwdXQuIEFuIGV4YW1wbGUgaXMgZ2VtX2V4ZWNfd2hpc3Blciwgd2hpY2gKPiBwaW5nLXBv bmdzIGJldHdlZW4gdGhlIGVuZ2luZXMsIHdoZXJlIGF2b2lkaW5nIHRoZSBwaXBlIHVuZGVyZmxv dwo+IGNoZWNraW5nIHJlZHVjZXMgdGhlIHJ1bnRpbWUgb2YgdGhlIHRlc3QgZnJvbSAyOXMgdG8g MjJzLiBPbiB0aGUgb3RoZXIKPiBoYW5kLCB3ZSBhcmUgbm93IG5vdCBjaGVja2luZyBmb3IgcGlw ZSB1bmRlcmZsb3dzIGF0IDEwMEtIeiwgbW9yZSBvcgo+IGxlc3MgcmVkdWNpbmcgaXQgdG8gYSBj aGVjayBldmVyeSBwYWdlZmxpcCAoNjBIeikgb3IgbW9kZXNldCBhdCB3b3JzdC4KPiAKPiBhZGQv cmVtb3ZlOiAwLzAgZ3Jvdy9zaHJpbms6IDEvMiB1cC9kb3duOiAyNC8tNDAgKC0xNikKPiBmdW5j dGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQgICAgIG5ldyAgIGRl bHRhCj4gdmFsbGV5dmlld19waXBlc3RhdF9pcnFfYWNrICAgICAgICAgICAgICAgICAgMjU5ICAg ICAyODMgICAgICsyNAo+IHZhbGxleXZpZXdfaXJxX2hhbmRsZXIgICAgICAgICAgICAgICAgICAg ICAgIDUyMSAgICAgNTE3ICAgICAgLTQKPiBjaGVycnl2aWV3X2lycV9oYW5kbGVyICAgICAgICAg ICAgICAgICAgICAgICA0NTcgICAgIDQyMSAgICAgLTM2Cj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IFZpbGxlIFN5cmrDpGzD pCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IE1pa2EgS3VvcHBhbGEgPG1p a2Eua3VvcHBhbGFAaW50ZWwuY29tPgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3Vs aW5AaW50ZWwuY29tPgo+IENjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51 eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgfCAx MjMgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hh bmdlZCwgNzMgaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2lycS5jCj4gaW5kZXggZTFkNTAzYjczNTJlLi4zNDVkNzNiZDQwMzkgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMKPiBAQCAtMTcwMywxNiArMTcwMywxNyBAQCBzdGF0aWMgdm9pZCBn ZW45X2d1Y19pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUz MiBndF9paXIpCj4gIAl9Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIHZhbGxleXZpZXdfcGlwZXN0 YXRfaXJxX2FjayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gK3N0YXRpYyBi b29sIHZhbGxleXZpZXdfcGlwZXN0YXRfaXJxX2FjayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gIAkJCQkJdTMyIGlpciwgdTMyIHBpcGVfc3RhdHNbSTkxNV9NQVhfUElQRVNd KQo+ICB7Cj4gKwlib29sIGhhbmRsZWQgPSBmYWxzZTsKPiAgCWludCBwaXBlOwo+ICAKPiAgCXNw aW5fbG9jaygmZGV2X3ByaXYtPmlycV9sb2NrKTsKPiAgCj4gIAlpZiAoIWRldl9wcml2LT5kaXNw bGF5X2lycXNfZW5hYmxlZCkgewo+ICAJCXNwaW5fdW5sb2NrKCZkZXZfcHJpdi0+aXJxX2xvY2sp Owo+IC0JCXJldHVybjsKPiArCQlyZXR1cm4gZmFsc2U7Cj4gIAl9Cj4gIAo+ICAJZm9yX2VhY2hf cGlwZShkZXZfcHJpdiwgcGlwZSkgewo+IEBAIC0xNzQ0LDggKzE3NDUsMTAgQEAgc3RhdGljIHZv aWQgdmFsbGV5dmlld19waXBlc3RhdF9pcnFfYWNrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiAgCQlpZiAoaWlyICYgaWlyX2JpdCkKPiAgCQkJbWFzayB8PSBkZXZfcHJpdi0+ cGlwZXN0YXRfaXJxX21hc2tbcGlwZV07Cj4gIAo+IC0JCWlmICghbWFzaykKPiArCQlpZiAoIW1h c2spIHsKPiArCQkJcGlwZV9zdGF0c1twaXBlXSA9IDA7Cj4gIAkJCWNvbnRpbnVlOwo+ICsJCX0K PiAgCj4gIAkJcmVnID0gUElQRVNUQVQocGlwZSk7Cj4gIAkJbWFzayB8PSBQSVBFU1RBVF9JTlRf RU5BQkxFX01BU0s7Cj4gQEAgLTE3NTcsOCArMTc2MCwxMiBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2 aWV3X3BpcGVzdGF0X2lycV9hY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICAJCWlmIChwaXBlX3N0YXRzW3BpcGVdICYgKFBJUEVfRklGT19VTkRFUlJVTl9TVEFUVVMgfAo+ ICAJCQkJCVBJUEVTVEFUX0lOVF9TVEFUVVNfTUFTSykpCj4gIAkJCUk5MTVfV1JJVEUocmVnLCBw aXBlX3N0YXRzW3BpcGVdKTsKPiArCj4gKwkJaGFuZGxlZCA9IHRydWU7Cj4gIAl9Cj4gIAlzcGlu X3VubG9jaygmZGV2X3ByaXYtPmlycV9sb2NrKTsKPiArCj4gKwlyZXR1cm4gaGFuZGxlZDsKPiAg fQo+ICAKPiAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19waXBlc3RhdF9pcnFfaGFuZGxlcihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gQEAgLTE4MzYsOCArMTg0Myw5IEBAIHN0 YXRpYyBpcnFyZXR1cm5fdCB2YWxsZXl2aWV3X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFy ZykKPiAgCj4gIAlkbyB7Cj4gIAkJdTMyIGlpciwgZ3RfaWlyLCBwbV9paXI7Cj4gLQkJdTMyIHBp cGVfc3RhdHNbSTkxNV9NQVhfUElQRVNdID0ge307Cj4gKwkJdTMyIHBpcGVfc3RhdHNbSTkxNV9N QVhfUElQRVNdOwo+ICAJCXUzMiBob3RwbHVnX3N0YXR1cyA9IDA7Cj4gKwkJYm9vbCBoYXNfcGlw ZV9zdGF0czsKPiAgCQl1MzIgaWVyID0gMDsKPiAgCj4gIAkJZ3RfaWlyID0gSTkxNV9SRUFEKEdU SUlSKTsKPiBAQCAtMTg3Niw3ICsxODg0LDggQEAgc3RhdGljIGlycXJldHVybl90IHZhbGxleXZp ZXdfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQo+ICAKPiAgCQkvKiBDYWxsIHJlZ2Fy ZGxlc3MsIGFzIHNvbWUgc3RhdHVzIGJpdHMgbWlnaHQgbm90IGJlCj4gIAkJICogc2lnbmFsbGVk IGluIGlpciAqLwo+IC0JCXZhbGxleXZpZXdfcGlwZXN0YXRfaXJxX2FjayhkZXZfcHJpdiwgaWly LCBwaXBlX3N0YXRzKTsKPiArCQloYXNfcGlwZV9zdGF0cyA9Cj4gKwkJCXZhbGxleXZpZXdfcGlw ZXN0YXRfaXJxX2FjayhkZXZfcHJpdiwgaWlyLCBwaXBlX3N0YXRzKTsKPiAgCj4gIAkJaWYgKGlp ciAmIChJOTE1X0xQRV9QSVBFX0FfSU5URVJSVVBUIHwKPiAgCQkJICAgSTkxNV9MUEVfUElQRV9C X0lOVEVSUlVQVCkpCj4gQEAgLTE5MDEsNyArMTkxMCw4IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCB2 YWxsZXl2aWV3X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKPiAgCQlpZiAoaG90cGx1 Z19zdGF0dXMpCj4gIAkJCWk5eHhfaHBkX2lycV9oYW5kbGVyKGRldl9wcml2LCBob3RwbHVnX3N0 YXR1cyk7Cj4gIAo+IC0JCXZhbGxleXZpZXdfcGlwZXN0YXRfaXJxX2hhbmRsZXIoZGV2X3ByaXYs IHBpcGVfc3RhdHMpOwo+ICsJCWlmIChoYXNfcGlwZV9zdGF0cykKPiArCQkJdmFsbGV5dmlld19w aXBlc3RhdF9pcnFfaGFuZGxlcihkZXZfcHJpdiwgcGlwZV9zdGF0cyk7Cj4gIAl9IHdoaWxlICgw KTsKPiAgCj4gIAllbmFibGVfcnBtX3dha2VyZWZfYXNzZXJ0cyhkZXZfcHJpdik7Cj4gQEAgLTE5 MTQsMjcgKzE5MjQsMTQgQEAgc3RhdGljIGlycXJldHVybl90IGNoZXJyeXZpZXdfaXJxX2hhbmRs ZXIoaW50IGlycSwgdm9pZCAqYXJnKQo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGFyZzsK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAg CWlycXJldHVybl90IHJldCA9IElSUV9OT05FOwo+ICsJdTMyIG1hc3Rlcl9jdGw7Cj4gIAo+ICAJ aWYgKCFpbnRlbF9pcnFzX2VuYWJsZWQoZGV2X3ByaXYpKQo+ICAJCXJldHVybiBJUlFfTk9ORTsK PiAgCj4gLQkvKiBJUlFzIGFyZSBzeW5jZWQgZHVyaW5nIHJ1bnRpbWVfc3VzcGVuZCwgd2UgZG9u J3QgcmVxdWlyZSBhIHdha2VyZWYgKi8KPiAtCWRpc2FibGVfcnBtX3dha2VyZWZfYXNzZXJ0cyhk ZXZfcHJpdik7Cj4gLQo+ICsJbWFzdGVyX2N0bCA9IEk5MTVfUkVBRF9GVyhHRU44X01BU1RFUl9J UlEpOwo+ICAJZG8gewo+IC0JCXUzMiBtYXN0ZXJfY3RsLCBpaXI7Cj4gLQkJdTMyIGd0X2lpcls0 XSA9IHt9Owo+IC0JCXUzMiBwaXBlX3N0YXRzW0k5MTVfTUFYX1BJUEVTXSA9IHt9Owo+IC0JCXUz MiBob3RwbHVnX3N0YXR1cyA9IDA7Cj4gLQkJdTMyIGllciA9IDA7Cj4gLQo+IC0JCW1hc3Rlcl9j dGwgPSBJOTE1X1JFQUQoR0VOOF9NQVNURVJfSVJRKSAmIH5HRU44X01BU1RFUl9JUlFfQ09OVFJP TDsKPiAtCQlpaXIgPSBJOTE1X1JFQUQoVkxWX0lJUik7Cj4gLQo+IC0JCWlmIChtYXN0ZXJfY3Rs ID09IDAgJiYgaWlyID09IDApCj4gLQkJCWJyZWFrOwo+IC0KPiAtCQlyZXQgPSBJUlFfSEFORExF RDsKPiArCQl1MzIgaWlyOwo+ICAKPiAgCQkvKgo+ICAJCSAqIFRoZW9yeSBvbiBpbnRlcnJ1cHQg Z2VuZXJhdGlvbiwgYmFzZWQgb24gZW1waXJpY2FsIGV2aWRlbmNlOgo+IEBAIC0xOTQ5LDQ0ICsx OTQ2LDcwIEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBjaGVycnl2aWV3X2lycV9oYW5kbGVyKGludCBp cnEsIHZvaWQgKmFyZykKPiAgCQkgKiBkb24ndCBlbmQgdXAgY2xlYXJpbmcgYWxsIHRoZSBWTFZf SUlSIGFuZCBHRU44X01BU1RFUl9JUlFfQ09OVFJPTAo+ICAJCSAqIGJpdHMgdGhpcyB0aW1lIGFy b3VuZC4KPiAgCQkgKi8KPiAtCQlJOTE1X1dSSVRFKEdFTjhfTUFTVEVSX0lSUSwgMCk7Cj4gLQkJ aWVyID0gSTkxNV9SRUFEKFZMVl9JRVIpOwo+IC0JCUk5MTVfV1JJVEUoVkxWX0lFUiwgMCk7Cj4g KwkJaWYgKG1hc3Rlcl9jdGwgJiB+R0VOOF9NQVNURVJfSVJRX0NPTlRST0wpIHsKPiArCQkJdTMy IGd0X2lpcls0XTsKPiAgCj4gLQkJZ2VuOF9ndF9pcnFfYWNrKGRldl9wcml2LCBtYXN0ZXJfY3Rs LCBndF9paXIpOwo+ICsJCQlJOTE1X1dSSVRFX0ZXKEdFTjhfTUFTVEVSX0lSUSwgMCk7Cj4gIAo+ IC0JCWlmIChpaXIgJiBJOTE1X0RJU1BMQVlfUE9SVF9JTlRFUlJVUFQpCj4gLQkJCWhvdHBsdWdf c3RhdHVzID0gaTl4eF9ocGRfaXJxX2FjayhkZXZfcHJpdik7Cj4gKwkJCWdlbjhfZ3RfaXJxX2Fj ayhkZXZfcHJpdiwgbWFzdGVyX2N0bCwgZ3RfaWlyKTsKPiAgCj4gLQkJLyogQ2FsbCByZWdhcmRs ZXNzLCBhcyBzb21lIHN0YXR1cyBiaXRzIG1pZ2h0IG5vdCBiZQo+IC0JCSAqIHNpZ25hbGxlZCBp biBpaXIgKi8KPiAtCQl2YWxsZXl2aWV3X3BpcGVzdGF0X2lycV9hY2soZGV2X3ByaXYsIGlpciwg cGlwZV9zdGF0cyk7Cj4gKwkJCUk5MTVfV1JJVEVfRlcoR0VOOF9NQVNURVJfSVJRLCBHRU44X01B U1RFUl9JUlFfQ09OVFJPTCk7Cj4gKwkJCXJldCA9IElSUV9IQU5ETEVEOwoKSSBzdXNwZWN0IHRo aXMgd29uJ3Qgd29yayBjb3JyZWN0bHkuIElmIEknbSBjb3JyZWN0IG9uIGhvdyB0aGUgZWRnZQp0 cmlnZ2VyaW5nIHdvcmtzIHdlIHJlYWxseSBuZWVkIHRvIGhhdmUgYm90aCBNQVNURVJfSVJRX0NP TlRST0wgYW5kIElFUgpkaXNhYmxlZCBhdCB0aGUgc2FtZSB0aW1lLiBPdGhlcndpc2Ugb25lIGNh biBwcmV2ZW50IHRoZSBvdGhlciBmcm9tCmdlbmVyYXRpbmcgYW4gZWRnZSB0byB0aGUgQ1BVIGlu dGVycnVwdCBsb2dpYy4KCj4gIAo+IC0JCWlmIChpaXIgJiAoSTkxNV9MUEVfUElQRV9BX0lOVEVS UlVQVCB8Cj4gLQkJCSAgIEk5MTVfTFBFX1BJUEVfQl9JTlRFUlJVUFQgfAo+IC0JCQkgICBJOTE1 X0xQRV9QSVBFX0NfSU5URVJSVVBUKSkKPiAtCQkJaW50ZWxfbHBlX2F1ZGlvX2lycV9oYW5kbGVy KGRldl9wcml2KTsKPiArCQkJZ2VuOF9ndF9pcnFfaGFuZGxlcihkZXZfcHJpdiwgbWFzdGVyX2N0 bCwgZ3RfaWlyKTsKPiArCQkJbWFzdGVyX2N0bCA9IDA7Cj4gKwkJfQo+ICAKPiAtCQkvKgo+IC0J CSAqIFZMVl9JSVIgaXMgc2luZ2xlIGJ1ZmZlcmVkLCBhbmQgcmVmbGVjdHMgdGhlIGxldmVsCj4g LQkJICogZnJvbSBQSVBFU1RBVC9QT1JUX0hPVFBMVUdfU1RBVCwgaGVuY2UgY2xlYXIgaXQgbGFz dC4KPiAtCQkgKi8KPiAtCQlpZiAoaWlyKQo+IC0JCQlJOTE1X1dSSVRFKFZMVl9JSVIsIGlpcik7 Cj4gKwkJaWlyID0gSTkxNV9SRUFEX0ZXKFZMVl9JSVIpOwo+ICsJCWlmIChpaXIpIHsKPiArCQkJ dTMyIHBpcGVfc3RhdHNbSTkxNV9NQVhfUElQRVNdOwo+ICsJCQl1MzIgaG90cGx1Z19zdGF0dXMg PSAwOwo+ICsJCQlib29sIGhhc19waXBlX3N0YXRzID0gZmFsc2U7Cj4gKwkJCXUzMiBpZXI7Cj4g IAo+IC0JCUk5MTVfV1JJVEUoVkxWX0lFUiwgaWVyKTsKPiAtCQlJOTE1X1dSSVRFKEdFTjhfTUFT VEVSX0lSUSwgR0VOOF9NQVNURVJfSVJRX0NPTlRST0wpOwo+IC0JCVBPU1RJTkdfUkVBRChHRU44 X01BU1RFUl9JUlEpOwo+ICsJCQkvKgo+ICsJCQkgKiBJUlFzIGFyZSBzeW5jZWQgZHVyaW5nIHJ1 bnRpbWVfc3VzcGVuZCwKPiArCQkJICogd2UgZG9uJ3QgcmVxdWlyZSBhIHdha2VyZWYKPiArCQkJ ICovCj4gKwkJCWRpc2FibGVfcnBtX3dha2VyZWZfYXNzZXJ0cyhkZXZfcHJpdik7Cj4gIAo+IC0J CWdlbjhfZ3RfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIG1hc3Rlcl9jdGwsIGd0X2lpcik7Cj4gIAo+ IC0JCWlmIChob3RwbHVnX3N0YXR1cykKPiAtCQkJaTl4eF9ocGRfaXJxX2hhbmRsZXIoZGV2X3By aXYsIGhvdHBsdWdfc3RhdHVzKTsKPiArCQkJaWVyID0gSTkxNV9SRUFEX0ZXKFZMVl9JRVIpOwo+ ICsJCQlJOTE1X1dSSVRFX0ZXKFZMVl9JRVIsIDApOwo+ICAKPiAtCQl2YWxsZXl2aWV3X3BpcGVz dGF0X2lycV9oYW5kbGVyKGRldl9wcml2LCBwaXBlX3N0YXRzKTsKPiAtCX0gd2hpbGUgKDApOwo+ ICsJCQlpZiAoaWlyICYgSTkxNV9ESVNQTEFZX1BPUlRfSU5URVJSVVBUKQo+ICsJCQkJaG90cGx1 Z19zdGF0dXMgPSBpOXh4X2hwZF9pcnFfYWNrKGRldl9wcml2KTsKPiAgCj4gLQllbmFibGVfcnBt X3dha2VyZWZfYXNzZXJ0cyhkZXZfcHJpdik7Cj4gKwkJCWlmIChpaXIgJiAoSTkxNV9MUEVfUElQ RV9BX0lOVEVSUlVQVCB8Cj4gKwkJCQkgICBJOTE1X0xQRV9QSVBFX0JfSU5URVJSVVBUIHwKPiAr CQkJCSAgIEk5MTVfTFBFX1BJUEVfQ19JTlRFUlJVUFQpKQo+ICsJCQkJaW50ZWxfbHBlX2F1ZGlv X2lycV9oYW5kbGVyKGRldl9wcml2KTsKPiArCj4gKwkJCS8qCj4gKwkJCSAqIENhbGwgcmVnYXJk bGVzcywgYXMgc29tZSBzdGF0dXMgYml0cyBtaWdodCBub3QgYmUKPiArCQkJICogc2lnbmFsbGVk IGluIGlpci4KPiArCQkJICovCj4gKwkJCWhhc19waXBlX3N0YXRzID0KPiArCQkJCXZhbGxleXZp ZXdfcGlwZXN0YXRfaXJxX2FjayhkZXZfcHJpdiwgaWlyLCBwaXBlX3N0YXRzKTsKPiArCj4gKwkJ CS8qCj4gKwkJCSAqIFZMVl9JSVIgaXMgc2luZ2xlIGJ1ZmZlcmVkLCBhbmQgcmVmbGVjdHMgdGhl IGxldmVsCj4gKwkJCSAqIGZyb20gUElQRVNUQVQvUE9SVF9IT1RQTFVHX1NUQVQsIGhlbmNlIGNs ZWFyIGl0IGxhc3QuCj4gKwkJCSAqLwo+ICsJCQlJOTE1X1dSSVRFX0ZXKFZMVl9JSVIsIGlpcik7 Cj4gKwkJCUk5MTVfV1JJVEVfRlcoVkxWX0lFUiwgaWVyKTsKPiArCQkJcmV0ID0gSVJRX0hBTkRM RUQ7Cj4gKwo+ICsJCQlpZiAoaG90cGx1Z19zdGF0dXMpCj4gKwkJCQlpOXh4X2hwZF9pcnFfaGFu ZGxlcihkZXZfcHJpdiwgaG90cGx1Z19zdGF0dXMpOwo+ICsKPiArCQkJaWYgKGhhc19waXBlX3N0 YXRzKQo+ICsJCQkJdmFsbGV5dmlld19waXBlc3RhdF9pcnFfaGFuZGxlcihkZXZfcHJpdiwgcGlw ZV9zdGF0cyk7Cj4gKwo+ICsJCQllbmFibGVfcnBtX3dha2VyZWZfYXNzZXJ0cyhkZXZfcHJpdik7 Cj4gKwkJCW1hc3Rlcl9jdGwgPSBJOTE1X1JFQURfRlcoR0VOOF9NQVNURVJfSVJRKTsKPiArCQl9 Cj4gKwl9IHdoaWxlIChtYXN0ZXJfY3RsICYgfkdFTjhfTUFTVEVSX0lSUV9DT05UUk9MKTsKPiAg Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gLS0gCj4gMi4xNC4xCgotLSAKVmlsbGUgU3lyasOkbMOk CkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK