From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [RFC v2] drm/i915/bdw+: Do not emit user interrupts when not needed Date: Mon, 21 Dec 2015 15:33:01 +0000 Message-ID: <1450711981-20117-1-git-send-email-tvrtko.ursulin@linux.intel.com> 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 ESMTP id 3555A6E475 for ; Mon, 21 Dec 2015 07:33:06 -0800 (PST) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkN1cnJlbnRs eSBhIHNpbmdsZSByZXF1ZXN0IHN1Ym1pc3Npb24gaW4gZXhlY2xpc3QgbW9kZSByZXN1bHRzCmlu IHR3byBlbWl0dGVkIGludGVycnVwdHMuIEZpcnN0IHRoZSB1c2VyIGludGVycnVwdCBhcnJpdmVz IGFuZAppcyB0aGVuIGZvbGxvd2VkIGJ5IHRoZSBjb250ZXh0IGNvbXBsZXRlIGludGVycnVwdC4g KFRoaXMgdGltZQpkZWxheSBpcyBjYXVzZWQgYnkgdGhlIHRpbWUgdGFrZW4gYnkgdGhlIEdQVSB0 byB3cml0ZSBvdXQgdGhlCmNvbnRleHQgYW5kIHVwZGF0ZSB0aGUgQ1NCLikKClRoaXMgYWxzbyBt ZWFucyBldmVyeSBpbmRpdmlkdWFsIGJhdGNoIHN1Ym1pc3Npb24sIGFuZCBhbHNvIHRoZQplbmQg b2YgdGhlIGNvYWxlc2NlZCByZXF1ZXN0IHN1Ym1pc3Npb24sIHdpbGwgcmVzdWx0IGluIHR3bwpp bnRlcnJ1cHRzIGluc3RlYWQgb2YgcG90ZW50aWFsbHkgb25lLgoKSWYgd2UgbWFrZSBzdXJlIHRo YXQgdGhlIGxhc3Qgb3Igc29saXRhcnkgcmVxdWVzdCBkb2VzIG5vdCBlbWl0CnRoZSBNSV9VU0VS X0lOVEVSUlVQVCwgYnV0IGluc3RlYWQgcmVseSBvbiBjb250ZXh0IGNvbXBsZXRlIHRvCndha2Ug dXAgdGhlIHdhaXRlcnMsIHdlIGNhbiByZWR1Y2UgdGhlIENQVSB0aW1lIHNwZW50IGluCmludGVy cnVwdCBoYW5kbGVycy4KCkluIHNvbWUgaW50ZXJydXB0IGhlYXZ5IGJlbmNobWFya3MgdGhpcyBj YW4gYmUgZXZlbiA1MCUgZmV3ZXIKaW50ZXJydXB0cyBhbmQgMS0yJSByZWR1Y2VkIENQVSB1c2Fn ZSAoaXQgaGFsdmVkIHRoZSB0aW1lIHNwZW50CmluIGludGVycnVwdCBoYW5kbGVycyBvbiBhbiBp NyBCRFcpLiBCdXQgb24gdGhlIG90aGVyIGhhbmQgdGhpcwphbHNvIGhhcyB0aGUgdGhlb3JldGlj YWwgcG90ZW50aWFsIG9mIGluY3JlYXNpbmcgdGhlIHdha2UtdXAKbGF0ZW5jeSAoc2VlIGVhcmxp ZXIgcmVmZXJlbmNlIGZvciB0aGUgZGVsYXkgYmV0d2VlbiBlbWl0dGluZwp0aGUgdXNlciBpbnRl cnJ1cHQgYW5kIGNvbnRleHQgY29tcGxldGUpLgoKdjI6IENsZWFyIE1JX1VTRVJfSU5URVJSVVBU IGluc3RydWN0aW9ucyB3aGVuIGFwcGxpY2FibGUKICAgIHJhdGhlciB0aGFuIGVtaXR0aW5nIHRo ZW0gZm9yIHBvdGVudGlhbGx5IG1vcmUgcm9idXN0bmVzcwogICAgYW5kIG5vdCBicmVha2luZyBH dUMgc3VibWlzc2lvbi4KClNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJz dWxpbkBpbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51 az4KLS0tCkkgZmFpbGVkIHRvIGZpbmQgYSBiZW5jaG1hcmssIG9yIGEgdGVzdCwgd2hpY2ggd291 bGQgcmVsaWFibHkKc2hvdyBhIHdpbiAob3IgbG9zZSkgd2l0aCB0aGlzIHBhdGNoLgoKVGhlcmVm b3JlIEkgZG8gbm90IHRoaW5rIGl0IGlzIHdvcnRoIHRoZSBjb21wbGV4aXR5IGFuZCBhbQpmaWxp bmcgaXQgZm9yIHJlZmVyZW5jZSBvbmx5LgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggIHwgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgfCAyNCArKysr KysrKysrKystLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIHwg MzcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2Vk LCA1MCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAppbmRleCA5YjgyYzQ1MzI4OTMuLjk0ZDEwODRhMDkwYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCkBAIC0yODI1LDYgKzI4MjUsNyBAQCBpYnhfZGlzYWJsZV9kaXNwbGF5X2ludGVycnVwdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVpbnQzMl90IGJpdHMpCiAJaWJ4X2Rp c3BsYXlfaW50ZXJydXB0X3VwZGF0ZShkZXZfcHJpdiwgYml0cywgMCk7CiB9CiAKK3ZvaWQgaW50 ZWxfbm90aWZ5X3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyk7CiAKIC8qIGk5MTVf Z2VtLmMgKi8KIGludCBpOTE1X2dlbV9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJx LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCmluZGV4IDNmOGM3NTM5OTdiYS4u YTIwODdiYWQwZDY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKQEAgLTk5NCw3ICs5OTQsNyBA QCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9ycHNfY2hhbmdlX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCiAJcmV0dXJuOwogfQogCi1zdGF0aWMgdm9pZCBub3RpZnlfcmluZyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQordm9pZCBpbnRlbF9ub3RpZnlfcmluZyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nKQogewogCWlmICghaW50ZWxfcmluZ19pbml0aWFsaXplZChy aW5nKSkKIAkJcmV0dXJuOwpAQCAtMTI5MSw5ICsxMjkxLDkgQEAgc3RhdGljIHZvaWQgaWxrX2d0 X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiB7CiAJaWYgKGd0X2lpciAmCiAJ ICAgIChHVF9SRU5ERVJfVVNFUl9JTlRFUlJVUFQgfCBHVF9SRU5ERVJfUElQRUNUTF9OT1RJRllf SU5URVJSVVBUKSkKLQkJbm90aWZ5X3JpbmcoJmRldl9wcml2LT5yaW5nW1JDU10pOworCQlpbnRl bF9ub3RpZnlfcmluZygmZGV2X3ByaXYtPnJpbmdbUkNTXSk7CiAJaWYgKGd0X2lpciAmIElMS19C U0RfVVNFUl9JTlRFUlJVUFQpCi0JCW5vdGlmeV9yaW5nKCZkZXZfcHJpdi0+cmluZ1tWQ1NdKTsK KwkJaW50ZWxfbm90aWZ5X3JpbmcoJmRldl9wcml2LT5yaW5nW1ZDU10pOwogfQogCiBzdGF0aWMg dm9pZCBzbmJfZ3RfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKQEAgLTEzMDMs MTEgKzEzMDMsMTEgQEAgc3RhdGljIHZvaWQgc25iX2d0X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAKIAlpZiAoZ3RfaWlyICYKIAkgICAgKEdUX1JFTkRFUl9VU0VSX0lOVEVS UlVQVCB8IEdUX1JFTkRFUl9QSVBFQ1RMX05PVElGWV9JTlRFUlJVUFQpKQotCQlub3RpZnlfcmlu ZygmZGV2X3ByaXYtPnJpbmdbUkNTXSk7CisJCWludGVsX25vdGlmeV9yaW5nKCZkZXZfcHJpdi0+ cmluZ1tSQ1NdKTsKIAlpZiAoZ3RfaWlyICYgR1RfQlNEX1VTRVJfSU5URVJSVVBUKQotCQlub3Rp ZnlfcmluZygmZGV2X3ByaXYtPnJpbmdbVkNTXSk7CisJCWludGVsX25vdGlmeV9yaW5nKCZkZXZf cHJpdi0+cmluZ1tWQ1NdKTsKIAlpZiAoZ3RfaWlyICYgR1RfQkxUX1VTRVJfSU5URVJSVVBUKQot CQlub3RpZnlfcmluZygmZGV2X3ByaXYtPnJpbmdbQkNTXSk7CisJCWludGVsX25vdGlmeV9yaW5n KCZkZXZfcHJpdi0+cmluZ1tCQ1NdKTsKIAogCWlmIChndF9paXIgJiAoR1RfQkxUX0NTX0VSUk9S X0lOVEVSUlVQVCB8CiAJCSAgICAgIEdUX0JTRF9DU19FUlJPUl9JTlRFUlJVUFQgfApAQCAtMTMy Miw3ICsxMzIyLDcgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkCiBnZW44X2NzX2lycV9o YW5kbGVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIHUzMiBpaXIsIGludCB0ZXN0X3No aWZ0KQogewogCWlmIChpaXIgJiAoR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUIDw8IHRlc3Rfc2hp ZnQpKQotCQlub3RpZnlfcmluZyhyaW5nKTsKKwkJaW50ZWxfbm90aWZ5X3JpbmcocmluZyk7CiAJ aWYgKGlpciAmIChHVF9DT05URVhUX1NXSVRDSF9JTlRFUlJVUFQgPDwgdGVzdF9zaGlmdCkpCiAJ CWludGVsX2xyY19pcnFfaGFuZGxlcihyaW5nKTsKIH0KQEAgLTE2MjksNyArMTYyOSw3IEBAIHN0 YXRpYyB2b2lkIGdlbjZfcnBzX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgdTMyIHBtX2lpcikKIAogCWlmIChIQVNfVkVCT1goZGV2X3ByaXYtPmRldikpIHsK IAkJaWYgKHBtX2lpciAmIFBNX1ZFQk9YX1VTRVJfSU5URVJSVVBUKQotCQkJbm90aWZ5X3Jpbmco JmRldl9wcml2LT5yaW5nW1ZFQ1NdKTsKKwkJCWludGVsX25vdGlmeV9yaW5nKCZkZXZfcHJpdi0+ cmluZ1tWRUNTXSk7CiAKIAkJaWYgKHBtX2lpciAmIFBNX1ZFQk9YX0NTX0VSUk9SX0lOVEVSUlVQ VCkKIAkJCURSTV9ERUJVRygiQ29tbWFuZCBwYXJzZXIgZXJyb3IsIHBtX2lpciAweCUwOHhcbiIs IHBtX2lpcik7CkBAIC0zOTYxLDcgKzM5NjEsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgaTh4eF9p cnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCiAJCW5ld19paXIgPSBJOTE1X1JFQUQxNihJ SVIpOyAvKiBGbHVzaCBwb3N0ZWQgd3JpdGVzICovCiAKIAkJaWYgKGlpciAmIEk5MTVfVVNFUl9J TlRFUlJVUFQpCi0JCQlub3RpZnlfcmluZygmZGV2X3ByaXYtPnJpbmdbUkNTXSk7CisJCQlpbnRl bF9ub3RpZnlfcmluZygmZGV2X3ByaXYtPnJpbmdbUkNTXSk7CiAKIAkJZm9yX2VhY2hfcGlwZShk ZXZfcHJpdiwgcGlwZSkgewogCQkJaW50IHBsYW5lID0gcGlwZTsKQEAgLTQxNTcsNyArNDE1Nyw3 IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBpOTE1X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFy ZykKIAkJbmV3X2lpciA9IEk5MTVfUkVBRChJSVIpOyAvKiBGbHVzaCBwb3N0ZWQgd3JpdGVzICov CiAKIAkJaWYgKGlpciAmIEk5MTVfVVNFUl9JTlRFUlJVUFQpCi0JCQlub3RpZnlfcmluZygmZGV2 X3ByaXYtPnJpbmdbUkNTXSk7CisJCQlpbnRlbF9ub3RpZnlfcmluZygmZGV2X3ByaXYtPnJpbmdb UkNTXSk7CiAKIAkJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkgewogCQkJaW50IHBsYW5l ID0gcGlwZTsKQEAgLTQzODcsOSArNDM4Nyw5IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBpOTY1X2ly cV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKIAkJbmV3X2lpciA9IEk5MTVfUkVBRChJSVIp OyAvKiBGbHVzaCBwb3N0ZWQgd3JpdGVzICovCiAKIAkJaWYgKGlpciAmIEk5MTVfVVNFUl9JTlRF UlJVUFQpCi0JCQlub3RpZnlfcmluZygmZGV2X3ByaXYtPnJpbmdbUkNTXSk7CisJCQlpbnRlbF9u b3RpZnlfcmluZygmZGV2X3ByaXYtPnJpbmdbUkNTXSk7CiAJCWlmIChpaXIgJiBJOTE1X0JTRF9V U0VSX0lOVEVSUlVQVCkKLQkJCW5vdGlmeV9yaW5nKCZkZXZfcHJpdi0+cmluZ1tWQ1NdKTsKKwkJ CWludGVsX25vdGlmeV9yaW5nKCZkZXZfcHJpdi0+cmluZ1tWQ1NdKTsKIAogCQlmb3JfZWFjaF9w aXBlKGRldl9wcml2LCBwaXBlKSB7CiAJCQlpZiAocGlwZV9zdGF0c1twaXBlXSAmIFBJUEVfU1RB UlRfVkJMQU5LX0lOVEVSUlVQVF9TVEFUVVMgJiYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5k ZXggMjdmMDYxOThhNTFlLi4xNzNiM2ZhZjVhMmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j CkBAIC0zNTksNiArMzU5LDIwIEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19lbHNwX3dyaXRlKHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEwLAogCXNwaW5fdW5sb2NrKCZkZXZfcHJpdi0+ dW5jb3JlLmxvY2spOwogfQogCitzdGF0aWMgdm9pZCBleGVjbGlzdHNfY2xlYXJfdXNlcl9pbnRl cnJ1cHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCit7CisJc3RydWN0IGludGVs X3JpbmdidWZmZXIgKnJpbmdidWYgPSByZXEtPnJpbmdidWY7CisKKwlpb3dyaXRlMzIoTUlfTk9P UCwgcmluZ2J1Zi0+dmlydHVhbF9zdGFydCArIHJlcS0+dGFpbCAtIDgpOworfQorCitzdGF0aWMg dm9pZCBleGVjbGlzdHNfZW1pdF91c2VyX2ludGVycnVwdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKK3sKKwlzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJlcS0+ cmluZ2J1ZjsKKworCWlvd3JpdGUzMihNSV9VU0VSX0lOVEVSUlVQVCwgcmluZ2J1Zi0+dmlydHVh bF9zdGFydCArIHJlcS0+dGFpbCAtIDgpOworfQorCiBzdGF0aWMgaW50IGV4ZWNsaXN0c191cGRh dGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQogewogCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcgPSBycS0+cmluZzsKQEAgLTQzMyw2ICs0NDcsMTQgQEAgc3Rh dGljIHZvaWQgZXhlY2xpc3RzX2NvbnRleHRfdW5xdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nKQogCQkJY3Vyc29yLT5lbHNwX3N1Ym1pdHRlZCA9IHJlcTAtPmVsc3Bfc3VibWl0dGVk OwogCQkJbGlzdF9tb3ZlX3RhaWwoJnJlcTAtPmV4ZWNsaXN0X2xpbmssCiAJCQkJICAgICAgICZy aW5nLT5leGVjbGlzdF9yZXRpcmVkX3JlcV9saXN0KTsKKwkJCS8qCisJCQkgKiBXaGVuIGNvYWxl c2NpbmcgcHJldmlvc2x5IHN1Ym1pdHRlZCByZXF1ZXN0LAorCQkJICogaXQgbWlnaHQgaGF2ZSBi ZWVuIHRoZSBsYXN0IG9uZSBpbiB0aGUgcHJldmlvdXMKKwkJCSAqIHN1Ym1pc3Npb24gc28gaGFk IGl0cyB1c2VyIGludGVycnVwdCBjbGVhcmVkLgorCQkJICogUHV0IGl0IGJhY2sgaW4uCisJCQkg Ki8KKwkJCWlmIChyZXEwLT5lbHNwX3N1Ym1pdHRlZCkKKwkJCQlleGVjbGlzdHNfZW1pdF91c2Vy X2ludGVycnVwdChyZXEwKTsKIAkJCXJlcTAgPSBjdXJzb3I7CiAJCX0gZWxzZSB7CiAJCQlyZXEx ID0gY3Vyc29yOwpAQCAtNDQwLDYgKzQ2MiwxNSBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfY29u dGV4dF91bnF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiAJCX0KIAl9CiAKKwkv KgorCSAqIExhc3QgcmVxdWVzdHMgc3VibWl0dGVkIG9uIGVhY2ggcG9ydCBkbyBub3QgbmVlZCB0 byBnZW5lcmF0ZQorCSAqIHVzZXIgaW50ZXJydXB0cyBzaW5jZSB3ZSB3aWxsIGdldCBjb250ZXh0 IGNvbXBsZXRlLgorCSAqLworCWlmIChyZXEwLT5lbHNwX3N1Ym1pdHRlZCA9PSAwKQorCQlleGVj bGlzdHNfY2xlYXJfdXNlcl9pbnRlcnJ1cHQocmVxMCk7CisJaWYgKHJlcTEgJiYgcmVxMS0+ZWxz cF9zdWJtaXR0ZWQgPT0gMCkKKwkJZXhlY2xpc3RzX2NsZWFyX3VzZXJfaW50ZXJydXB0KHJlcTEp OworCiAJaWYgKElTX0dFTjgocmluZy0+ZGV2KSB8fCBJU19HRU45KHJpbmctPmRldikpIHsKIAkJ LyoKIAkJICogV2FJZGxlTGl0ZVJlc3RvcmU6IG1ha2Ugc3VyZSB3ZSBuZXZlciBjYXVzZSBhIGxp dGUKQEAgLTQ3Miw2ICs1MDMsMTIgQEAgc3RhdGljIGJvb2wgZXhlY2xpc3RzX2NoZWNrX3JlbW92 ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCiAKIAlhc3NlcnRfc3Bpbl9s b2NrZWQoJnJpbmctPmV4ZWNsaXN0X2xvY2spOwogCisJLyoKKwkgKiBUaGlzIGlzIGVmZmVjdGl2 ZWx5IGEgY29udGV4dCBjb21wbGV0ZSBpbnRlcnJ1cHQgc28gd2FrZQorCSAqIHVwIHBvdGVudGlh bCB3YWl0ZXJzIG9uIHRoaXMgcmluZy4KKwkgKi8KKwlpbnRlbF9ub3RpZnlfcmluZyhyaW5nKTsK KwogCWhlYWRfcmVxID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZyaW5nLT5leGVjbGlzdF9x dWV1ZSwKIAkJCQkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCwKIAkJCQkJICAgIGV4 ZWNsaXN0X2xpbmspOwotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==