From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: [PATCH v4 07/18] drm/i915/gen8: Add 4 level switching infrastructure and lrc support Date: Tue, 7 Jul 2015 16:14:52 +0100 Message-ID: <1436282103-5854-8-git-send-email-michel.thierry@intel.com> References: <1436282103-5854-1-git-send-email-michel.thierry@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 9DC7A6EA45 for ; Tue, 7 Jul 2015 08:15:12 -0700 (PDT) In-Reply-To: <1436282103-5854-1-git-send-email-michel.thierry@intel.com> 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 Cc: akash.goel@intel.com List-Id: intel-gfx@lists.freedesktop.org SW4gNjRiICg0OGJpdCBjYW5vbmljYWwpIFBQR1RUIGFkZHJlc3NpbmcsIHRoZSBQRFAwIHJlZ2lz dGVyIGNvbnRhaW5zCnRoZSBiYXNlIGFkZHJlc3MgdG8gUE1MNCwgd2hpbGUgdGhlIG90aGVyIFBE UCByZWdpc3RlcnMgYXJlIGlnbm9yZWQuCgpJbiBMUkMsIHRoZSBhZGRyZXNzaW5nIG1vZGUgbXVz dCBiZSBzcGVjaWZpZWQgaW4gZXZlcnkgY29udGV4dCBkZXNjcmlwdG9yLgoKdjI6IFBNTDQgdXBk YXRlIGluIGxlZ2FjeSBjb250ZXh0IHN3aXRjaCBpcyBsZWZ0IGZvciBoaXN0b3JpYyByZWFzb25z LAp0aGUgcHJlZmVycmVkIG1vZGUgb2Ygb3BlcmF0aW9uIGlzIHdpdGggbHJjIGNvbnRleHQgYmFz ZWQgc3VibWlzc2lvbi4KdjM6IHMvZ2VuOF9tYXBfcGFnZV9kaXJlY3RvcnkvZ2VuOF9zZXR1cF9w YWdlX2RpcmVjdG9yeSBhbmQKcy9nZW44X21hcF9wYWdlX2RpcmVjdG9yeV9wb2ludGVyL2dlbjhf c2V0dXBfcGFnZV9kaXJlY3RvcnlfcG9pbnRlci4KQWxzbywgY2xmbHVzaCB3aWxsIGJlIG5lZWRl ZCBmb3IgYnh0LiAoQWthc2gpCnY0OiBTcXVhc2hlZCBscmMtc3BlY2lmaWMgY29kZSBhbmQgdXNl IGEgbWFjcm8gdG8gc2V0IFBNTDQgcmVnaXN0ZXIuCnY1OiBSZWJhc2UgYWZ0ZXIgTWlrYSdzIHBw Z3R0IGNsZWFudXAgLyBzY3JhdGNoIG1lcmdlIHBhdGNoIHNlcmllcy4KUERQIHVwZGF0ZSBpbiBi Yl9zdGFydCBpcyBvbmx5IGZvciBsZWdhY3kgMzJiIG1vZGUuCnY2OiBSZWJhc2UgYWZ0ZXIgZmlu YWwgbWVyZ2VkIHZlcnNpb24gb2YgTWlrYSdzIHBwZ3R0L3NjcmF0Y2gKcGF0Y2hlcy4KCkNjOiBB a2FzaCBHb2VsIDxha2FzaC5nb2VsQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogQmVuIFdpZGF3 c2t5IDxiZW5AYndpZGF3c2submV0PgpTaWduZWQtb2ZmLWJ5OiBNaWNoZWwgVGhpZXJyeSA8bWlj aGVsLnRoaWVycnlAaW50ZWwuY29tPiAodjIrKQotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jIHwgNTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCB8ICAyICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oICAgICB8ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j ICAgIHwgNjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogNCBmaWxlcyBj aGFuZ2VkLCA5OSBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5jCmluZGV4IDMzZGY5YjcuLjg0NGNhNmUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5jCkBAIC0yMTEsNiArMjExLDkgQEAgc3RhdGljIGdlbjhfcGRlX3QgZ2Vu OF9wZGVfZW5jb2RlKGNvbnN0IGRtYV9hZGRyX3QgYWRkciwKIAlyZXR1cm4gcGRlOwogfQogCisj ZGVmaW5lIGdlbjhfcGRwZV9lbmNvZGUgZ2VuOF9wZGVfZW5jb2RlCisjZGVmaW5lIGdlbjhfcG1s NGVfZW5jb2RlIGdlbjhfcGRlX2VuY29kZQorCiBzdGF0aWMgZ2VuNl9wdGVfdCBzbmJfcHRlX2Vu Y29kZShkbWFfYWRkcl90IGFkZHIsCiAJCQkJIGVudW0gaTkxNV9jYWNoZV9sZXZlbCBsZXZlbCwK IAkJCQkgYm9vbCB2YWxpZCwgdTMyIHVudXNlZCkKQEAgLTYwMCw2ICs2MDMsMzUgQEAgc3RhdGlj IHZvaWQgZnJlZV9wZHAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAl9CiB9CiAKK3N0YXRpYyB2 b2lkCitnZW44X3NldHVwX3BhZ2VfZGlyZWN0b3J5KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0 dCwKKwkJCSAgc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwLAorCQkJICBz dHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSAqcGQsCisJCQkgIGludCBpbmRleCkKK3sKKwlnZW44 X3BwZ3R0X3BkcGVfdCAqcGFnZV9kaXJlY3RvcnlwbzsKKworCWlmICghVVNFU19GVUxMXzQ4QklU X1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpCisJCXJldHVybjsKKworCXBhZ2VfZGlyZWN0b3J5cG8g PSBrbWFwX3B4KHBkcCk7CisJcGFnZV9kaXJlY3Rvcnlwb1tpbmRleF0gPSBnZW44X3BkcGVfZW5j b2RlKHB4X2RtYShwZCksIEk5MTVfQ0FDSEVfTExDKTsKKwlrdW5tYXBfcHgocHBndHQsIHBhZ2Vf ZGlyZWN0b3J5cG8pOworfQorCitzdGF0aWMgdm9pZAorZ2VuOF9zZXR1cF9wYWdlX2RpcmVjdG9y eV9wb2ludGVyKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKKwkJCQkgIHN0cnVjdCBpOTE1 X3BtbDQgKnBtbDQsCisJCQkJICBzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeV9wb2ludGVyICpw ZHAsCisJCQkJICBpbnQgaW5kZXgpCit7CisJZ2VuOF9wcGd0dF9wbWw0ZV90ICpwYWdlbWFwID0g a21hcF9weChwbWw0KTsKKworCVdBUk5fT04oIVVTRVNfRlVMTF80OEJJVF9QUEdUVChwcGd0dC0+ YmFzZS5kZXYpKTsKKwlwYWdlbWFwW2luZGV4XSA9IGdlbjhfcG1sNGVfZW5jb2RlKHB4X2RtYShw ZHApLCBJOTE1X0NBQ0hFX0xMQyk7CisJa3VubWFwX3B4KHBwZ3R0LCBwYWdlbWFwKTsKK30KKwog LyogQnJvYWR3ZWxsIFBhZ2UgRGlyZWN0b3J5IFBvaW50ZXIgRGVzY3JpcHRvcnMgKi8KIHN0YXRp YyBpbnQgZ2VuOF93cml0ZV9wZHAoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJ CQkgIHVuc2lnbmVkIGVudHJ5LApAQCAtNjI1LDggKzY1Nyw4IEBAIHN0YXRpYyBpbnQgZ2VuOF93 cml0ZV9wZHAoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCiAJcmV0dXJuIDA7CiB9 CiAKLXN0YXRpYyBpbnQgZ2VuOF9tbV9zd2l0Y2goc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0 LAotCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKK3N0YXRpYyBpbnQgZ2Vu OF9sZWdhY3lfbW1fc3dpdGNoKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKKwkJCQkgc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiB7CiAJaW50IGksIHJldDsKIApAQCAtNjQx LDYgKzY3MywxMiBAQCBzdGF0aWMgaW50IGdlbjhfbW1fc3dpdGNoKHN0cnVjdCBpOTE1X2h3X3Bw Z3R0ICpwcGd0dCwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBnZW44XzQ4Yl9tbV9zd2l0 Y2goc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAorCQkJICAgICAgc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEpCit7CisJcmV0dXJuIGdlbjhfd3JpdGVfcGRwKHJlcSwgMCwgcHhf ZG1hKCZwcGd0dC0+cG1sNCkpOworfQorCiBzdGF0aWMgdm9pZCBnZW44X3BwZ3R0X2NsZWFyX3Jh bmdlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCQkJCSAgIHVpbnQ2NF90IHN0YXJ0 LAogCQkJCSAgIHVpbnQ2NF90IGxlbmd0aCwKQEAgLTExMDAsNiArMTEzOCw3IEBAIHN0YXRpYyBp bnQgZ2VuOF9hbGxvY192YV9yYW5nZV8zbHZsKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZt LAogCiAJCWt1bm1hcF9weChwcGd0dCwgcGFnZV9kaXJlY3RvcnkpOwogCQlfX3NldF9iaXQocGRw ZSwgcGRwLT51c2VkX3BkcGVzKTsKKwkJZ2VuOF9zZXR1cF9wYWdlX2RpcmVjdG9yeShwcGd0dCwg cGRwLCBwZCwgcGRwZSk7CiAJfQogCiAJZnJlZV9nZW44X3RlbXBfYml0bWFwcyhuZXdfcGFnZV9k aXJzLCBuZXdfcGFnZV90YWJsZXMsIHBkcGVzKTsKQEAgLTExMjYsNiArMTE2NSw4IEBAIHN0YXRp YyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZV80bHZsKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtLAogCQkJCSAgICB1aW50NjRfdCBsZW5ndGgpCiB7CiAJREVDTEFSRV9CSVRNQVAobmV3X3Bk cHMsIEdFTjhfUE1MNEVTX1BFUl9QTUw0KTsKKwlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQg PQorCQkJY29udGFpbmVyX29mKHZtLCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwgYmFzZSk7CiAJc3Ry dWN0IGk5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRlciAqcGRwOwogCWNvbnN0IHVpbnQ2NF90IG9y aWdfc3RhcnQgPSBzdGFydDsKIAljb25zdCB1aW50NjRfdCBvcmlnX2xlbmd0aCA9IGxlbmd0aDsK QEAgLTExNjgsNiArMTIwOSw4IEBAIHN0YXRpYyBpbnQgZ2VuOF9hbGxvY192YV9yYW5nZV80bHZs KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAogCQlyZXQgPSBnZW44X2FsbG9jX3ZhX3Jh bmdlXzNsdmwodm0sIHBkcCwgc3RhcnQsIGxlbmd0aCk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIGVy cl9vdXQ7CisKKwkJZ2VuOF9zZXR1cF9wYWdlX2RpcmVjdG9yeV9wb2ludGVyKHBwZ3R0LCBwbWw0 LCBwZHAsIHBtbDRlKTsKIAl9CiAKIAliaXRtYXBfb3IocG1sNC0+dXNlZF9wbWw0ZXMsIG5ld19w ZHBzLCBwbWw0LT51c2VkX3BtbDRlcywKQEAgLTEyMTcsMTQgKzEyNjAsMTMgQEAgc3RhdGljIGlu dCBnZW44X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQogCXBwZ3R0LT5i YXNlLnVuYmluZF92bWEgPSBwcGd0dF91bmJpbmRfdm1hOwogCXBwZ3R0LT5iYXNlLmJpbmRfdm1h ID0gcHBndHRfYmluZF92bWE7CiAKLQlwcGd0dC0+c3dpdGNoX21tID0gZ2VuOF9tbV9zd2l0Y2g7 Ci0KIAlpZiAoVVNFU19GVUxMXzQ4QklUX1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpIHsKIAkJcmV0 ID0gc2V0dXBfcHgocHBndHQtPmJhc2UuZGV2LCAmcHBndHQtPnBtbDQpOwogCQlpZiAocmV0KQog CQkJZ290byBmcmVlX3NjcmF0Y2g7CiAKIAkJcHBndHQtPmJhc2UudG90YWwgPSAxVUxMIDw8IDQ4 OworCQlwcGd0dC0+c3dpdGNoX21tID0gZ2VuOF80OGJfbW1fc3dpdGNoOwogCX0gZWxzZSB7CiAJ CXJldCA9IF9fcGRwX2luaXQoZmFsc2UsICZwcGd0dC0+cGRwKTsKIAkJaWYgKHJldCkKQEAgLTEy MzksNiArMTI4MSw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9pbml0KHN0cnVjdCBpOTE1X2h3 X3BwZ3R0ICpwcGd0dCkKIAkJCSAqLwogCQkJcHBndHQtPmJhc2UudG90YWwgPSB0b19pOTE1KHBw Z3R0LT5iYXNlLmRldiktPmd0dC5iYXNlLnRvdGFsOwogCisJCXBwZ3R0LT5zd2l0Y2hfbW0gPSBn ZW44X2xlZ2FjeV9tbV9zd2l0Y2g7CiAJCXRyYWNlX2k5MTVfcGFnZV9kaXJlY3RvcnlfcG9pbnRl cl9lbnRyeV9hbGxvYygmcHBndHQtPmJhc2UsCiAJCQkJCQkJICAgICAgMCwgMCwKIAkJCQkJCQkg ICAgICBHRU44X1BNTDRFX1NISUZUKTsKQEAgLTE0MzYsOCArMTQ3OSw5IEBAIHN0YXRpYyB2b2lk IGdlbjhfcHBndHRfZW5hYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaW50IGo7CiAKIAlm b3JfZWFjaF9yaW5nKHJpbmcsIGRldl9wcml2LCBqKSB7CisJCXUzMiBmb3VyX2xldmVsID0gVVNF U19GVUxMXzQ4QklUX1BQR1RUKGRldikgPyBHRU44X0dGWF9QUEdUVF80OEIgOiAwOwogCQlJOTE1 X1dSSVRFKFJJTkdfTU9ERV9HRU43KHJpbmcpLAotCQkJICAgX01BU0tFRF9CSVRfRU5BQkxFKEdG WF9QUEdUVF9FTkFCTEUpKTsKKwkJCSAgIF9NQVNLRURfQklUX0VOQUJMRShHRlhfUFBHVFRfRU5B QkxFIHwgZm91cl9sZXZlbCkpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu aAppbmRleCA2NjBjOWE1Li5hZTk0NjNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu aApAQCAtMzksNiArMzksOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlOwogdHlwZWRl ZiB1aW50MzJfdCBnZW42X3B0ZV90OwogdHlwZWRlZiB1aW50NjRfdCBnZW44X3B0ZV90OwogdHlw ZWRlZiB1aW50NjRfdCBnZW44X3BkZV90OwordHlwZWRlZiB1aW50NjRfdCBnZW44X3BwZ3R0X3Bk cGVfdDsKK3R5cGVkZWYgdWludDY0X3QgZ2VuOF9wcGd0dF9wbWw0ZV90OwogCiAjZGVmaW5lIGd0 dF90b3RhbF9lbnRyaWVzKGd0dCkgKChndHQpLmJhc2UudG90YWwgPj4gUEFHRV9TSElGVCkKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXggMmEyOWJjYy4uZDczMDFmYyAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oCkBAIC0xNjY5LDYgKzE2NjksNyBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dl bGxzIHsKICNkZWZpbmUgICBHRlhfUkVQTEFZX01PREUJCSgxPDwxMSkKICNkZWZpbmUgICBHRlhf UFNNSV9HUkFOVUxBUklUWQkJKDE8PDEwKQogI2RlZmluZSAgIEdGWF9QUEdUVF9FTkFCTEUJCSgx PDw5KQorI2RlZmluZSAgIEdFTjhfR0ZYX1BQR1RUXzQ4QgkJKDE8PDcpCiAKICNkZWZpbmUgVkxW X0RJU1BMQVlfQkFTRSAweDE4MDAwMAogI2RlZmluZSBWTFZfTUlQSV9CQVNFIFZMVl9ESVNQTEFZ X0JBU0UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggZDRmOGI0My4uZDJhOTVhZiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAgLTE5NSwxMyArMTk1LDIxIEBACiAJcmVnX3N0YXRl W0NUWF9QRFAgIyMgbiAjIyBfTERXKzFdID0gbG93ZXJfMzJfYml0cyhfYWRkcik7IFwKIH0KIAor I2RlZmluZSBBU1NJR05fQ1RYX1BNTDQocHBndHQsIHJlZ19zdGF0ZSkgeyBcCisJcmVnX3N0YXRl W0NUWF9QRFAwX1VEVyArIDFdID0gdXBwZXJfMzJfYml0cyhweF9kbWEoJnBwZ3R0LT5wbWw0KSk7 IFwKKwlyZWdfc3RhdGVbQ1RYX1BEUDBfTERXICsgMV0gPSBsb3dlcl8zMl9iaXRzKHB4X2RtYSgm cHBndHQtPnBtbDQpKTsgXAorfQorCiBlbnVtIHsKIAlBRFZBTkNFRF9DT05URVhUID0gMCwKLQlM RUdBQ1lfQ09OVEVYVCwKKwlMRUdBQ1lfMzJCX0NPTlRFWFQsCiAJQURWQU5DRURfQURfQ09OVEVY VCwKIAlMRUdBQ1lfNjRCX0NPTlRFWFQKIH07Ci0jZGVmaW5lIEdFTjhfQ1RYX01PREVfU0hJRlQg MworI2RlZmluZSBHRU44X0NUWF9BRERSRVNTSU5HX01PREVfU0hJRlQgMworI2RlZmluZSBHRU44 X0NUWF9BRERSRVNTSU5HX01PREUoZGV2KSAgKFVTRVNfRlVMTF80OEJJVF9QUEdUVChkZXYpID9c CisJCUxFR0FDWV82NEJfQ09OVEVYVCA6XAorCQlMRUdBQ1lfMzJCX0NPTlRFWFQpCiBlbnVtIHsK IAlGQVVMVF9BTkRfSEFORyA9IDAsCiAJRkFVTFRfQU5EX0hBTFQsIC8qIERlYnVnIG9ubHkgKi8K QEAgLTI3Miw3ICsyODAsNyBAQCBzdGF0aWMgdWludDY0X3QgZXhlY2xpc3RzX2N0eF9kZXNjcmlw dG9yKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCiAJV0FSTl9PTihscmNhICYgMHhG RkZGRkZGRjAwMDAwRkZGVUxMKTsKIAogCWRlc2MgPSBHRU44X0NUWF9WQUxJRDsKLQlkZXNjIHw9 IExFR0FDWV9DT05URVhUIDw8IEdFTjhfQ1RYX01PREVfU0hJRlQ7CisJZGVzYyB8PSBHRU44X0NU WF9BRERSRVNTSU5HX01PREUoZGV2KSA8PCBHRU44X0NUWF9BRERSRVNTSU5HX01PREVfU0hJRlQ7 CiAJaWYgKElTX0dFTjgoY3R4X29iai0+YmFzZS5kZXYpKQogCQlkZXNjIHw9IEdFTjhfQ1RYX0wz TExDX0NPSEVSRU5UOwogCWRlc2MgfD0gR0VOOF9DVFhfUFJJVklMRUdFOwpAQCAtMzQ3LDEwICsz NTUsMTYgQEAgc3RhdGljIGludCBleGVjbGlzdHNfdXBkYXRlX2NvbnRleHQoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpycSkKIAlyZWdfc3RhdGVbQ1RYX1JJTkdfVEFJTCsxXSA9IHJxLT50 YWlsOwogCXJlZ19zdGF0ZVtDVFhfUklOR19CVUZGRVJfU1RBUlQrMV0gPSBpOTE1X2dlbV9vYmpf Z2d0dF9vZmZzZXQocmJfb2JqKTsKIAotCS8qIFRydWUgUFBHVFQgd2l0aCBkeW5hbWljIHBhZ2Ug YWxsb2NhdGlvbjogdXBkYXRlIFBEUCByZWdpc3RlcnMgYW5kCi0JICogcG9pbnQgdGhlIHVuYWxs b2NhdGVkIFBEUHMgdG8gdGhlIHNjcmF0Y2ggcGFnZQotCSAqLwotCWlmIChwcGd0dCkgeworCWlm IChwcGd0dCAmJiBVU0VTX0ZVTExfNDhCSVRfUFBHVFQocHBndHQtPmJhc2UuZGV2KSkgeworCQkv KiBUcnVlIDY0YiBQUEdUVCAoNDhiaXQgY2Fub25pY2FsKQorCQkgKiBQRFAwX0RFU0NSSVBUT1Ig Y29udGFpbnMgdGhlIGJhc2UgYWRkcmVzcyB0byBQTUw0IGFuZAorCQkgKiBvdGhlciBQRFAgRGVz Y3JpcHRvcnMgYXJlIGlnbm9yZWQKKwkJICovCisJCUFTU0lHTl9DVFhfUE1MNChwcGd0dCwgcmVn X3N0YXRlKTsKKwl9IGVsc2UgaWYgKHBwZ3R0KSB7CisJCS8qIFRydWUgMzJiIFBQR1RUIHdpdGgg ZHluYW1pYyBwYWdlIGFsbG9jYXRpb246IHVwZGF0ZSBQRFAKKwkJICogcmVnaXN0ZXJzIGFuZCBw b2ludCB0aGUgdW5hbGxvY2F0ZWQgUERQcyB0byB0aGUgc2NyYXRjaCBwYWdlCisJCSAqLwogCQlB U1NJR05fQ1RYX1BEUChwcGd0dCwgcmVnX3N0YXRlLCAzKTsKIAkJQVNTSUdOX0NUWF9QRFAocHBn dHQsIHJlZ19zdGF0ZSwgMik7CiAJCUFTU0lHTl9DVFhfUERQKHBwZ3R0LCByZWdfc3RhdGUsIDEp OwpAQCAtMTQzMiwxMiArMTQ0NiwxNiBAQCBzdGF0aWMgaW50IGdlbjhfZW1pdF9iYl9zdGFydChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkgKiBJZGVhbGx5LCB3ZSBzaG91bGQg c2V0IEZvcmNlIFBEIFJlc3RvcmUgaW4gY3R4IGRlc2NyaXB0b3IsCiAJICogYnV0IHdlIGNhbid0 LiBGb3JjZSBSZXN0b3JlIHdvdWxkIGJlIGEgc2Vjb25kIG9wdGlvbiwgYnV0CiAJICogaXQgaXMg dW5zYWZlIGluIGNhc2Ugb2YgbGl0ZS1yZXN0b3JlIChiZWNhdXNlIHRoZSBjdHggaXMKLQkgKiBu b3QgaWRsZSkuICovCisJICogbm90IGlkbGUpLiBQTUw0IGlzIGFsbG9jYXRlZCBkdXJpbmcgcHBn dHQgaW5pdCBzbyB0aGlzIGlzCisJICogbm90IG5lZWRlZCBpbiA0OC1iaXQuKi8KIAlpZiAocmVx LT5jdHgtPnBwZ3R0ICYmCiAJICAgIChpbnRlbF9yaW5nX2ZsYWcocmVxLT5yaW5nKSAmIHJlcS0+ Y3R4LT5wcGd0dC0+cGRfZGlydHlfcmluZ3MpKSB7Ci0JCXJldCA9IGludGVsX2xvZ2ljYWxfcmlu Z19lbWl0X3BkcHMocmVxKTsKLQkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7CisJCWlmIChHRU44 X0NUWF9BRERSRVNTSU5HX01PREUocmVxLT5pOTE1KSA9PSBMRUdBQ1lfMzJCX0NPTlRFWFQpewor CQkJcmV0ID0gaW50ZWxfbG9naWNhbF9yaW5nX2VtaXRfcGRwcyhyZXEpOworCisJCQlpZiAocmV0 KQorCQkJCXJldHVybiByZXQ7CisJCX0KIAogCQlyZXEtPmN0eC0+cHBndHQtPnBkX2RpcnR5X3Jp bmdzICY9IH5pbnRlbF9yaW5nX2ZsYWcocmVxLT5yaW5nKTsKIAl9CkBAIC0yMTA0LDEzICsyMTIy LDI0IEBAIHBvcHVsYXRlX2xyX2NvbnRleHQoc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vCiAJcmVnX3N0YXRlW0NUWF9QRFAwX1VEV10g PSBHRU44X1JJTkdfUERQX1VEVyhyaW5nLCAwKTsKIAlyZWdfc3RhdGVbQ1RYX1BEUDBfTERXXSA9 IEdFTjhfUklOR19QRFBfTERXKHJpbmcsIDApOwogCi0JLyogV2l0aCBkeW5hbWljIHBhZ2UgYWxs b2NhdGlvbiwgUERQcyBtYXkgbm90IGJlIGFsbG9jYXRlZCBhdCB0aGlzIHBvaW50LAotCSAqIFBv aW50IHRoZSB1bmFsbG9jYXRlZCBQRFBzIHRvIHRoZSBzY3JhdGNoIHBhZ2UKLQkgKi8KLQlBU1NJ R05fQ1RYX1BEUChwcGd0dCwgcmVnX3N0YXRlLCAzKTsKLQlBU1NJR05fQ1RYX1BEUChwcGd0dCwg cmVnX3N0YXRlLCAyKTsKLQlBU1NJR05fQ1RYX1BEUChwcGd0dCwgcmVnX3N0YXRlLCAxKTsKLQlB U1NJR05fQ1RYX1BEUChwcGd0dCwgcmVnX3N0YXRlLCAwKTsKKwlpZiAoVVNFU19GVUxMXzQ4QklU X1BQR1RUKHBwZ3R0LT5iYXNlLmRldikpIHsKKwkJLyogNjRiIFBQR1RUICg0OGJpdCBjYW5vbmlj YWwpCisJCSAqIFBEUDBfREVTQ1JJUFRPUiBjb250YWlucyB0aGUgYmFzZSBhZGRyZXNzIHRvIFBN TDQgYW5kCisJCSAqIG90aGVyIFBEUCBEZXNjcmlwdG9ycyBhcmUgaWdub3JlZC4KKwkJICovCisJ CUFTU0lHTl9DVFhfUE1MNChwcGd0dCwgcmVnX3N0YXRlKTsKKwl9IGVsc2UgeworCQkvKiAzMmIg UFBHVFQKKwkJICogUERQKl9ERVNDUklQVE9SIGNvbnRhaW5zIHRoZSBiYXNlIGFkZHJlc3Mgb2Yg c3BhY2Ugc3VwcG9ydGVkLgorCQkgKiBXaXRoIGR5bmFtaWMgcGFnZSBhbGxvY2F0aW9uLCBQRFBz IG1heSBub3QgYmUgYWxsb2NhdGVkIGF0CisJCSAqIHRoaXMgcG9pbnQuIFBvaW50IHRoZSB1bmFs bG9jYXRlZCBQRFBzIHRvIHRoZSBzY3JhdGNoIHBhZ2UKKwkJICovCisJCUFTU0lHTl9DVFhfUERQ KHBwZ3R0LCByZWdfc3RhdGUsIDMpOworCQlBU1NJR05fQ1RYX1BEUChwcGd0dCwgcmVnX3N0YXRl LCAyKTsKKwkJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMSk7CisJCUFTU0lHTl9D VFhfUERQKHBwZ3R0LCByZWdfc3RhdGUsIDApOworCX0KKwogCWlmIChyaW5nLT5pZCA9PSBSQ1Mp IHsKIAkJcmVnX3N0YXRlW0NUWF9MUklfSEVBREVSXzJdID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0o MSk7CiAJCXJlZ19zdGF0ZVtDVFhfUl9QV1JfQ0xLX1NUQVRFXSA9IEdFTjhfUl9QV1JfQ0xLX1NU QVRFOwotLSAKMi40LjUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4Cg==