From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH 08/15] drm/i915: Implement PHY lane power gating for CHV Date: Wed, 8 Jul 2015 23:45:54 +0300 Message-ID: <1436388361-11130-9-git-send-email-ville.syrjala@linux.intel.com> References: <1436388361-11130-1-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 4D2096EBDA for ; Wed, 8 Jul 2015 13:46:43 -0700 (PDT) In-Reply-To: <1436388361-11130-1-git-send-email-ville.syrjala@linux.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: "Deepak S"@freedesktop.org, deepak.s@intel.com List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClBv d2VyZ2F0ZSB0aGUgUEhZIGxhbmVzIHdoZW4gdGhleSdyZSBub3QgbmVlZGVkLiBGb3IgSERNSSBh bGwgZm91ciBsYW5lcwphcmUgbmVlZGVkIGFsd2F5cywgYnV0IGZvciBEUCB3ZSBjYW4gZW5hYmxl IG9ubHkgdGhlIG5lZWRlZCBsYW5lcy4gVG8KcG93ZXIgZG93biB0aGUgdW51c2VkIGxhbmVzIHdl IHVzZSBzb21lIHBvd2VyIGRvd24gb3ZlcnJpZGUgYml0cyBpbiB0aGUKRElTUExBWV9QSFlfQ09O VFJPTCByZWdpc3Rlci4gV2l0aG91dCB0aGUgb3ZlcnJpZGVzIGl0IGFwcGVhcnMgdGhhdCB0aGUK aGFyZHdhcmUgYWx3YXlzIHBvd2VycyBvbiBhbGwgdGhlIGxhbmVzLiBXaGVuIHRoZSBwb3J0IGlz IGRpc2FibGVkIHRoZQpwb3dlciBkb3duIG92ZXJyaWRlIGlzIG5vdCBuZWVkZWQgYW5kIHRoZSBs YW5lcyB3aWxsIHNodXQgb2ZmIG9uIHRoZWlyCm93bi4gVGhhdCBhbHNvIG1lYW5zIHRoZSBvdmVy cmlkZSBpcyBjcml0aWNhbCB0byBhY3R1YWxseSBiZSBhYmxlIHRvCmFjY2VzcyB0aGUgRFBJTyBy ZWdpc3RlcnMgYmVmb3JlIHRoZSBwb3J0IGlzIGFjdHVhbGx5IGVuYWJsZWQuCgpBZGRpdGlvbmFs bHkgdGhlIGNvbW1vbiBsYW5lcyB3aWxsIHBvd2VyIGRvd24gd2hlbiBub3QgbmVlZGVkLiBDTDEK cmVtYWlucyBvbiBhcyBsb25nIGFzIGFueXRoaW5nIGVsc2UgaXMgb24sIENMMiB3aWxsIHNodXQg ZG93biB3aGVuCmFsbCB0aGUgbGFuZXMgaW4gdGhlIHNhbWUgY2hhbm5lbCB3aWxsIHNodXQgZG93 bi4gVGhlcmUgaXMgb25lIGV4Y2VwdGlvbgpmb3IgQ0wyIHRoYXQgd2lsbCBiZSBkZWFsdCBpbiBh IHNlcGFyYXRlIHBhdGNoIGZvciBjbGFyaXR5LgoKV2l0aCBwb3RlbnRpYWxseSBzb21lIGxhbmVz IHBvd2VyZWQgZG93biwgdGhlIERQIGNvZGUgbm93IGhhcyB0byBjaGVjawp0aGUgbnVtYmVyIG9m IGFjdGl2ZSBsYW5lcyBiZWZvcmUgYWNjZXNzaW5nIFBDUy9UWCByZWdpc3RlcnMuIEFsbApyZWdp c3RlcnMgaW4gcG93ZXJlZCBkb3duIGJsb2NrcyB3aWxsIHJlYWRzIGFzIDB4ZmZmZmZmZmYsIGFu ZCBzb2Ugd2UKd291bGQgZHJvd24gaW4gd2FybmluZ3MgZnJvbSB2bHZfZHBpb19yZWFkKCkgaWYg d2UgYWxsb3dlZCB0aGUgY29kZQp0byBhY2Nlc3MgYWxsIHRob3NlIHJlZ2lzdGVycy4KCkFub3Ro ZXIgaW1wb3J0YW50IGRldGFpbCBpbiB0aGUgRFAgY29kZSBpcyB0aGUgIlRYIGxhdGVuY3kgb3B0 aW1hbCIKc2V0dGluZy4gTm9ybWFsbHkgdGhlIHNlY29uZCBUWCBsYW5lIGFjdHMgYXMgc29tZSBr aW5kIG9mIHJlc2V0IG1hc3RlciwKd2l0aCB0aGUgb3RoZXIgbGFuZXMgYXMgc2xhdmVzLiBCdXQg d2hlbiBvbmx5IGEgc2luZ2xlIGxhbmUgaXMgZW5hYmxlZCwKdGhhdCBzaW5nbGUgbGFuZSBvYnZp b3VzbHkgaGFzIHRvIGJlIHRoZSBtYXN0ZXIuCgpBIGJpdCBvZiBleHRyYSBjYXJlIGlzIG5lZWRl ZCB0byByZWNvbnN0cnVjdCB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUKRElTUExBWV9QSFlfQ09O VFJPTCByZWdpc3RlciBzaW5jZSBpdCBjYW4ndCBiZSByZWFkIHNhZmVseS4gU28gaW5zdGVhZApy ZWFkIHRoZSBhY3R1YWwgbGFuZSBzdGF0dXMgZnJvbSB0aGUgRFBMTC9QSFlfU1RBVFVTIHJlZ2lz dGVycyBhbmQKdXNlIHRoYXQgdG8gZGV0ZXJtaW5lIHdoaWNoIGxhbmVzIG91Z2h0IHRvIGJlIHBv d2VyZ2F0ZWQgaW5pdGlhbGx5LgoKV2UgYWxzbyBuZWVkIHRvIHN3aXRjaCB0aGUgUEhZIHBvd2Vy IG1vZGVzIHRvICJkZWVwIFBTUiIgdG8gYXZvaWQKYSBoYXJkIHN5c3RlbSBoYW5nIHdoZW4gcG93 ZXJpbmcgZG93biB0aGUgc2luZ2xlIGNoYW5uZWwgUEhZLgoKQWxzbyBzcHJpbmtsZSBhIGZldyBk ZWJ1ZyBwcmludHMgYXJvdW5kIHNvIHRoYXQgd2UgY2FuIG1vbml0b3IgdGhlCkRJU1BMQVlfUEhZ X1NUQVRVUyBjaGFuZ2VzIHdpdGhvdXQgaGF2aW5nIHRvIHJlYWQgaXQgYW5kIHJpc2sKY29ycnVw dGluZyBpdC4KCnYyOiBBZGQgbG9ja2luZyB0byBjaHZfcG93ZXJnYXRlX3BoeV9sYW5lcygpCnYz OiBBY3R1YWxseSBlbmFibGUgZHluYW1pYyBwb3dlcmRvd24gaW4gdGhlIFBIWSBhbmQgZGVhbCB3 aXRoIHRoZQogICAgZmFsbG91dAoKU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxs ZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oICAgICAgICAgfCAgIDggKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMg ICAgICAgICB8IDE0MSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hkbWkuYyAgICAgICB8ICAgNCArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ydW50aW1lX3BtLmMgfCAxMjMgKysrKysrKysrKysrKysrKysrKysrKysrKystLQogNSBmaWxl cyBjaGFuZ2VkLCAyMjEgaW5zZXJ0aW9ucygrKSwgNTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmgKaW5kZXggMTdjYjdlNS4uYmNmY2JiNjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaApAQCAtMTEyNSw5ICsxMTI1LDE1IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewog CiAjZGVmaW5lIF9DSFZfQ01OX0RXMTlfQ0gwCQkweDgxNGMKICNkZWZpbmUgX0NIVl9DTU5fRFc2 X0NIMQkJMHg4MDk4CisjZGVmaW5lICAgRFBJT19EWU5QV1JET1dORU5fQ0gxCQkoMSA8PCAyOCkg LyogQ0wyIERXNiBvbmx5ICovCiAjZGVmaW5lICAgQ0hWX0NNTl9VU0VEQ0xLQ0hBTk5FTAkoMSA8 PCAxMykKKwogI2RlZmluZSBDSFZfQ01OX0RXMTkoY2gpIF9QSVBFKGNoLCBfQ0hWX0NNTl9EVzE5 X0NIMCwgX0NIVl9DTU5fRFc2X0NIMSkKIAorI2RlZmluZSBDSFZfQ01OX0RXMjgJCQkweDgxNzAK KyNkZWZpbmUgICBEUElPX0NMMVBPV0VSRE9XTkVOCQkoMSA8PCAyMykKKyNkZWZpbmUgICBEUElP X0RZTlBXUkRPV05FTl9DSDAJCSgxIDw8IDIyKQorCiAjZGVmaW5lIENIVl9DTU5fRFczMAkJCTB4 ODE3OAogI2RlZmluZSAgIERQSU9fTFJDX0JZUEFTUwkJKDEgPDwgMykKIApAQCAtMjE3NSwxMCAr MjE4MSwxMiBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKICNkZWZpbmUgRFBJT19QSFlf U1RBVFVTCQkJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDYyNDApCiAjZGVmaW5lICAgRFBMTF9QT1JU RF9SRUFEWV9NQVNLCQkoMHhmKQogI2RlZmluZSBESVNQTEFZX1BIWV9DT05UUk9MIChWTFZfRElT UExBWV9CQVNFICsgMHg2MDEwMCkKKyNkZWZpbmUgICBQSFlfQ0hfUE9XRVJfRE9XTl9PVlJEX0VO KHBoeSwgY2gpCSgxIDw8ICgyKihwaHkpKyhjaCkrMjcpKQogI2RlZmluZSAgIFBIWV9MRE9fREVM QVlfME5TCQkJMHgwCiAjZGVmaW5lICAgUEhZX0xET19ERUxBWV8yMDBOUwkJCTB4MQogI2RlZmlu ZSAgIFBIWV9MRE9fREVMQVlfNjAwTlMJCQkweDIKICNkZWZpbmUgICBQSFlfTERPX1NFUV9ERUxB WShkZWxheSwgcGh5KQkJKChkZWxheSkgPDwgKDIqKHBoeSkrMjMpKQorI2RlZmluZSAgIFBIWV9D SF9QT1dFUl9ET1dOX09WUkQobWFzaywgcGh5LCBjaCkJKChtYXNrKSA8PCAoOCoocGh5KSs0Kihj aCkrMTEpKQogI2RlZmluZSAgIFBIWV9DSF9TVV9QU1IJCQkJMHgxCiAjZGVmaW5lICAgUEhZX0NI X0RFRVBfUFNSCQkJMHg3CiAjZGVmaW5lICAgUEhZX0NIX1BPV0VSX01PREUobW9kZSwgcGh5LCBj aCkJKChtb2RlKSA8PCAoNioocGh5KSszKihjaCkrMikpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwpp bmRleCA0MGI4NDMwLi42MDU4MTI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKQEAgLTEzMyw2 ICsxMzMsMTEgQEAgc3RhdGljIHZvaWQgdmx2X2luaXRfcGFuZWxfcG93ZXJfc2VxdWVuY2VyKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwogc3RhdGljIHZvaWQgdmx2X3N0ZWFsX3Bvd2VyX3Nl cXVlbmNlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSAgICAgIGVudW0gcGlwZSBwaXBl KTsKIAorc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9kcF91bnVzZWRfbGFuZV9tYXNrKGludCBs YW5lX2NvdW50KQoreworCXJldHVybiB+KCgxIDw8IGxhbmVfY291bnQpIC0gMSkgJiAweGY7Cit9 CisKIHN0YXRpYyBpbnQKIGludGVsX2RwX21heF9saW5rX2J3KHN0cnVjdCBpbnRlbF9kcCAgKmlu dGVsX2RwKQogewpAQCAtMjM5NSwxNyArMjQwMCwyMSBAQCBzdGF0aWMgdm9pZCBjaHZfcG9zdF9k aXNhYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQogCXZhbCB8PSBDSFZfUENT X1JFUV9TT0ZUUkVTRVRfRU47CiAJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9Q Q1MwMV9EVzEoY2gpLCB2YWwpOwogCi0JdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlw ZSwgVkxWX1BDUzIzX0RXMShjaCkpOwotCXZhbCB8PSBDSFZfUENTX1JFUV9TT0ZUUkVTRVRfRU47 Ci0Jdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEoY2gpLCB2YWwp OworCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxhbmVfY291bnQgPiAyKSB7CisJCXZhbCA9IHZs dl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzEoY2gpKTsKKwkJdmFsIHw9 IENIVl9QQ1NfUkVRX1NPRlRSRVNFVF9FTjsKKwkJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBp cGUsIFZMVl9QQ1MyM19EVzEoY2gpLCB2YWwpOworCX0KIAogCXZhbCA9IHZsdl9kcGlvX3JlYWQo ZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzAoY2gpKTsKIAl2YWwgJj0gfihEUElPX1BDU19U WF9MQU5FMl9SRVNFVCB8IERQSU9fUENTX1RYX0xBTkUxX1JFU0VUKTsKIAl2bHZfZHBpb193cml0 ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMChjaCksIHZhbCk7CiAKLQl2YWwgPSB2bHZf ZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcwKGNoKSk7Ci0JdmFsICY9IH4o RFBJT19QQ1NfVFhfTEFORTJfUkVTRVQgfCBEUElPX1BDU19UWF9MQU5FMV9SRVNFVCk7Ci0Jdmx2 X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzAoY2gpLCB2YWwpOworCWlm IChpbnRlbF9jcnRjLT5jb25maWctPmxhbmVfY291bnQgPiAyKSB7CisJCXZhbCA9IHZsdl9kcGlv X3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzAoY2gpKTsKKwkJdmFsICY9IH4oRFBJ T19QQ1NfVFhfTEFORTJfUkVTRVQgfCBEUElPX1BDU19UWF9MQU5FMV9SRVNFVCk7CisJCXZsdl9k cGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcwKGNoKSwgdmFsKTsKKwl9CiAK IAltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKIH0KQEAgLTI1MjUsNyArMjUzNCw2 IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlcikKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2 YXRlOwogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5i YXNlLmNydGMpOwogCXVpbnQzMl90IGRwX3JlZyA9IEk5MTVfUkVBRChpbnRlbF9kcC0+b3V0cHV0 X3JlZyk7Ci0JdW5zaWduZWQgaW50IGxhbmVfbWFzayA9IDB4MDsKIAogCWlmIChXQVJOX09OKGRw X3JlZyAmIERQX1BPUlRfRU4pKQogCQlyZXR1cm47CkBAIC0yNTQzLDkgKzI1NTEsMTUgQEAgc3Rh dGljIHZvaWQgaW50ZWxfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQog CiAJcHBzX3VubG9jayhpbnRlbF9kcCk7CiAKLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpKQorCWlm IChJU19WQUxMRVlWSUVXKGRldikpIHsKKwkJdW5zaWduZWQgaW50IGxhbmVfbWFzayA9IDB4MDsK KworCQlpZiAoSVNfQ0hFUlJZVklFVyhkZXYpKQorCQkJbGFuZV9tYXNrID0gaW50ZWxfZHBfdW51 c2VkX2xhbmVfbWFzayhjcnRjLT5jb25maWctPmxhbmVfY291bnQpOworCiAJCXZsdl93YWl0X3Bv cnRfcmVhZHkoZGV2X3ByaXYsIGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKSwKIAkJCQkgICAgbGFu ZV9tYXNrKTsKKwl9CiAKIAlpbnRlbF9kcF9zaW5rX2RwbXMoaW50ZWxfZHAsIERSTV9NT0RFX0RQ TVNfT04pOwogCWludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oaW50ZWxfZHApOwpAQCAtMjc3Miwz MSArMjc4Niw0MCBAQCBzdGF0aWMgdm9pZCBjaHZfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlcikKIAl2YWwgJj0gfkRQSU9fTEFORURFU0tFV19TVFJBUF9PVlJEOwog CXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFcxMShjaCksIHZhbCk7 CiAKLQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxMShj aCkpOwotCXZhbCAmPSB+RFBJT19MQU5FREVTS0VXX1NUUkFQX09WUkQ7Ci0Jdmx2X2RwaW9fd3Jp dGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzExKGNoKSwgdmFsKTsKKwlpZiAoaW50ZWxf Y3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50ID4gMikgeworCQl2YWwgPSB2bHZfZHBpb19yZWFkKGRl dl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxMShjaCkpOworCQl2YWwgJj0gfkRQSU9fTEFORURF U0tFV19TVFJBUF9PVlJEOworCQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BD UzIzX0RXMTEoY2gpLCB2YWwpOworCX0KIAogCS8qIERlYXNzZXJ0IHNvZnQgZGF0YSBsYW5lIHJl c2V0Ki8KIAl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFcx KGNoKSk7CiAJdmFsIHw9IENIVl9QQ1NfUkVRX1NPRlRSRVNFVF9FTjsKIAl2bHZfZHBpb193cml0 ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMShjaCksIHZhbCk7CiAKLQl2YWwgPSB2bHZf ZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxKGNoKSk7Ci0JdmFsIHw9IENI Vl9QQ1NfUkVRX1NPRlRSRVNFVF9FTjsKLQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwg VkxWX1BDUzIzX0RXMShjaCksIHZhbCk7CisJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+bGFuZV9j b3VudCA+IDIpIHsKKwkJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BD UzIzX0RXMShjaCkpOworCQl2YWwgfD0gQ0hWX1BDU19SRVFfU09GVFJFU0VUX0VOOworCQl2bHZf ZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXMShjaCksIHZhbCk7CisJfQog CiAJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMChjaCkp OwogCXZhbCB8PSAoRFBJT19QQ1NfVFhfTEFORTJfUkVTRVQgfCBEUElPX1BDU19UWF9MQU5FMV9S RVNFVCk7CiAJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzAoY2gp LCB2YWwpOwogCi0JdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIz X0RXMChjaCkpOwotCXZhbCB8PSAoRFBJT19QQ1NfVFhfTEFORTJfUkVTRVQgfCBEUElPX1BDU19U WF9MQU5FMV9SRVNFVCk7Ci0Jdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1My M19EVzAoY2gpLCB2YWwpOworCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxhbmVfY291bnQgPiAy KSB7CisJCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19EVzAo Y2gpKTsKKwkJdmFsIHw9IChEUElPX1BDU19UWF9MQU5FMl9SRVNFVCB8IERQSU9fUENTX1RYX0xB TkUxX1JFU0VUKTsKKwkJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19E VzAoY2gpLCB2YWwpOworCX0KIAogCS8qIFByb2dyYW0gVHggbGFuZSBsYXRlbmN5IG9wdGltYWwg c2V0dGluZyovCi0JZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCBp bnRlbF9jcnRjLT5jb25maWctPmxhbmVfY291bnQ7IGkrKykgewogCQkvKiBTZXQgdGhlIHVwYXIg Yml0ICovCi0JCWRhdGEgPSAoaSA9PSAxKSA/IDB4MCA6IDB4MTsKKwkJaWYgKGludGVsX2NydGMt PmNvbmZpZy0+bGFuZV9jb3VudCA9PSAxKQorCQkJZGF0YSA9IDB4MDsKKwkJZWxzZQorCQkJZGF0 YSA9IChpID09IDEpID8gMHgwIDogMHgxOwogCQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlw ZSwgQ0hWX1RYX0RXMTQoY2gsIGkpLAogCQkJCWRhdGEgPDwgRFBJT19VUEFSX1NISUZUKTsKIAl9 CkBAIC0yODE3LDkgKzI4NDAsMTEgQEAgc3RhdGljIHZvaWQgY2h2X3ByZV9lbmFibGVfZHAoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiAJdmFsIHw9IERQSU9fVFgyX1NUQUdHRVJfTUFT SygweDFmKTsKIAl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMTEo Y2gpLCB2YWwpOwogCi0JdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BD UzIzX0RXMTEoY2gpKTsKLQl2YWwgfD0gRFBJT19UWDJfU1RBR0dFUl9NQVNLKDB4MWYpOwotCXZs dl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxMShjaCksIHZhbCk7CisJ aWYgKGludGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3VudCA+IDIpIHsKKwkJdmFsID0gdmx2X2Rw aW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXMTEoY2gpKTsKKwkJdmFsIHw9IERQ SU9fVFgyX1NUQUdHRVJfTUFTSygweDFmKTsKKwkJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBp cGUsIFZMVl9QQ1MyM19EVzExKGNoKSwgdmFsKTsKKwl9CiAKIAl2bHZfZHBpb193cml0ZShkZXZf cHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMTIoY2gpLAogCQkgICAgICAgRFBJT19MQU5FU1RBR0dF Ul9TVFJBUChzdGFnZ2VyKSB8CkBAIC0yODI4LDEyICsyODUzLDE0IEBAIHN0YXRpYyB2b2lkIGNo dl9wcmVfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQogCQkgICAgICAg RFBJT19UWDFfU1RBR0dFUl9NVUxUKDYpIHwKIAkJICAgICAgIERQSU9fVFgyX1NUQUdHRVJfTVVM VCgwKSk7CiAKLQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXMTIo Y2gpLAotCQkgICAgICAgRFBJT19MQU5FU1RBR0dFUl9TVFJBUChzdGFnZ2VyKSB8Ci0JCSAgICAg ICBEUElPX0xBTkVTVEFHR0VSX1NUUkFQX09WUkQgfAotCQkgICAgICAgRFBJT19UWDFfU1RBR0dF Ul9NQVNLKDB4MWYpIHwKLQkJICAgICAgIERQSU9fVFgxX1NUQUdHRVJfTVVMVCg3KSB8Ci0JCSAg ICAgICBEUElPX1RYMl9TVEFHR0VSX01VTFQoNSkpOworCWlmIChpbnRlbF9jcnRjLT5jb25maWct PmxhbmVfY291bnQgPiAyKSB7CisJCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZf UENTMjNfRFcxMihjaCksCisJCQkgICAgICAgRFBJT19MQU5FU1RBR0dFUl9TVFJBUChzdGFnZ2Vy KSB8CisJCQkgICAgICAgRFBJT19MQU5FU1RBR0dFUl9TVFJBUF9PVlJEIHwKKwkJCSAgICAgICBE UElPX1RYMV9TVEFHR0VSX01BU0soMHgxZikgfAorCQkJICAgICAgIERQSU9fVFgxX1NUQUdHRVJf TVVMVCg3KSB8CisJCQkgICAgICAgRFBJT19UWDJfU1RBR0dFUl9NVUxUKDUpKTsKKwl9CiAKIAlt dXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKIApAQCAtMjg0OSwxMCArMjg3NiwxNCBA QCBzdGF0aWMgdm9pZCBjaHZfZHBfcHJlX3BsbF9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIpCiAJCXRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKIAllbnVtIGRw aW9fY2hhbm5lbCBjaCA9IHZsdl9kcG9ydF90b19jaGFubmVsKGRwb3J0KTsKIAllbnVtIHBpcGUg cGlwZSA9IGludGVsX2NydGMtPnBpcGU7CisJdW5zaWduZWQgaW50IGxhbmVfbWFzayA9CisJCWlu dGVsX2RwX3VudXNlZF9sYW5lX21hc2soaW50ZWxfY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50KTsK IAl1MzIgdmFsOwogCiAJaW50ZWxfZHBfcHJlcGFyZShlbmNvZGVyKTsKIAorCWNodl9waHlfcG93 ZXJnYXRlX2xhbmVzKGVuY29kZXIsIHRydWUsIGxhbmVfbWFzayk7CisKIAltdXRleF9sb2NrKCZk ZXZfcHJpdi0+c2JfbG9jayk7CiAKIAkvKiBwcm9ncmFtIGxlZnQvcmlnaHQgY2xvY2sgZGlzdHJp YnV0aW9uICovCkBAIC0yODgzLDEzICsyOTE0LDE1IEBAIHN0YXRpYyB2b2lkIGNodl9kcF9wcmVf cGxsX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAkJdmFsIHw9IENIVl9Q Q1NfVVNFRENMS0NIQU5ORUw7CiAJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9Q Q1MwMV9EVzgoY2gpLCB2YWwpOwogCi0JdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlw ZSwgVkxWX1BDUzIzX0RXOChjaCkpOwotCXZhbCB8PSBDSFZfUENTX1VTRURDTEtDSEFOTkVMX09W UlJJREU7Ci0JaWYgKHBpcGUgIT0gUElQRV9CKQotCQl2YWwgJj0gfkNIVl9QQ1NfVVNFRENMS0NI QU5ORUw7Ci0JZWxzZQotCQl2YWwgfD0gQ0hWX1BDU19VU0VEQ0xLQ0hBTk5FTDsKLQl2bHZfZHBp b193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXOChjaCksIHZhbCk7CisJaWYgKGlu dGVsX2NydGMtPmNvbmZpZy0+bGFuZV9jb3VudCA+IDIpIHsKKwkJdmFsID0gdmx2X2RwaW9fcmVh ZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RXOChjaCkpOworCQl2YWwgfD0gQ0hWX1BDU19V U0VEQ0xLQ0hBTk5FTF9PVlJSSURFOworCQlpZiAocGlwZSAhPSBQSVBFX0IpCisJCQl2YWwgJj0g fkNIVl9QQ1NfVVNFRENMS0NIQU5ORUw7CisJCWVsc2UKKwkJCXZhbCB8PSBDSFZfUENTX1VTRURD TEtDSEFOTkVMOworCQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzIzX0RX OChjaCksIHZhbCk7CisJfQogCiAJLyoKIAkgKiBUaGlzIGEgYSBiaXQgd2VpcmQgc2luY2UgZ2Vu ZXJhbGx5IENMCkBAIC0yOTI2LDYgKzI5NTksOCBAQCBzdGF0aWMgdm9pZCBjaHZfZHBfcG9zdF9w bGxfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAl9CiAKIAltdXRleF91 bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKKworCWNodl9waHlfcG93ZXJnYXRlX2xhbmVzKGVu Y29kZXIsIGZhbHNlLCAweDApOwogfQogCiAvKgpAQCAtMzI2MSwyNCArMzI5NiwyOCBAQCBzdGF0 aWMgdWludDMyX3QgY2h2X3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK IAl2YWwgfD0gRFBJT19QQ1NfVFgxREVFTVBfOVA1IHwgRFBJT19QQ1NfVFgyREVFTVBfOVA1Owog CXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFcxMChjaCksIHZhbCk7 CiAKLQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFcxMChj aCkpOwotCXZhbCAmPSB+KERQSU9fUENTX1NXSU5HX0NBTENfVFgwX1RYMiB8IERQSU9fUENTX1NX SU5HX0NBTENfVFgxX1RYMyk7Ci0JdmFsICY9IH4oRFBJT19QQ1NfVFgxREVFTVBfTUFTSyB8IERQ SU9fUENTX1RYMkRFRU1QX01BU0spOwotCXZhbCB8PSBEUElPX1BDU19UWDFERUVNUF85UDUgfCBE UElPX1BDU19UWDJERUVNUF85UDU7Ci0Jdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZM Vl9QQ1MyM19EVzEwKGNoKSwgdmFsKTsKKwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5sYW5lX2Nv dW50ID4gMikgeworCQl2YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENT MjNfRFcxMChjaCkpOworCQl2YWwgJj0gfihEUElPX1BDU19TV0lOR19DQUxDX1RYMF9UWDIgfCBE UElPX1BDU19TV0lOR19DQUxDX1RYMV9UWDMpOworCQl2YWwgJj0gfihEUElPX1BDU19UWDFERUVN UF9NQVNLIHwgRFBJT19QQ1NfVFgyREVFTVBfTUFTSyk7CisJCXZhbCB8PSBEUElPX1BDU19UWDFE RUVNUF85UDUgfCBEUElPX1BDU19UWDJERUVNUF85UDU7CisJCXZsdl9kcGlvX3dyaXRlKGRldl9w cml2LCBwaXBlLCBWTFZfUENTMjNfRFcxMChjaCksIHZhbCk7CisJfQogCiAJdmFsID0gdmx2X2Rw aW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXOShjaCkpOwogCXZhbCAmPSB+KERQ SU9fUENTX1RYMU1BUkdJTl9NQVNLIHwgRFBJT19QQ1NfVFgyTUFSR0lOX01BU0spOwogCXZhbCB8 PSBEUElPX1BDU19UWDFNQVJHSU5fMDAwIHwgRFBJT19QQ1NfVFgyTUFSR0lOXzAwMDsKIAl2bHZf ZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXOShjaCksIHZhbCk7CiAKLQl2 YWwgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFc5KGNoKSk7Ci0J dmFsICY9IH4oRFBJT19QQ1NfVFgxTUFSR0lOX01BU0sgfCBEUElPX1BDU19UWDJNQVJHSU5fTUFT Syk7Ci0JdmFsIHw9IERQSU9fUENTX1RYMU1BUkdJTl8wMDAgfCBEUElPX1BDU19UWDJNQVJHSU5f MDAwOwotCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFc5KGNoKSwg dmFsKTsKKwlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50ID4gMikgeworCQl2YWwg PSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFc5KGNoKSk7CisJCXZh bCAmPSB+KERQSU9fUENTX1RYMU1BUkdJTl9NQVNLIHwgRFBJT19QQ1NfVFgyTUFSR0lOX01BU0sp OworCQl2YWwgfD0gRFBJT19QQ1NfVFgxTUFSR0lOXzAwMCB8IERQSU9fUENTX1RYMk1BUkdJTl8w MDA7CisJCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTMjNfRFc5KGNoKSwg dmFsKTsKKwl9CiAKIAkvKiBQcm9ncmFtIHN3aW5nIGRlZW1waCAqLwotCWZvciAoaSA9IDA7IGkg PCA0OyBpKyspIHsKKwlmb3IgKGkgPSAwOyBpIDwgaW50ZWxfY3J0Yy0+Y29uZmlnLT5sYW5lX2Nv dW50OyBpKyspIHsKIAkJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hWX1RY X0RXNChjaCwgaSkpOwogCQl2YWwgJj0gfkRQSU9fU1dJTkdfREVFTVBIOVA1X01BU0s7CiAJCXZh bCB8PSBkZWVtcGhfcmVnX3ZhbHVlIDw8IERQSU9fU1dJTkdfREVFTVBIOVA1X1NISUZUOwpAQCAt MzI4Niw3ICszMzI1LDcgQEAgc3RhdGljIHVpbnQzMl90IGNodl9zaWduYWxfbGV2ZWxzKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJfQogCiAJLyogUHJvZ3JhbSBzd2luZyBtYXJnaW4gKi8K LQlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IGludGVsX2NydGMt PmNvbmZpZy0+bGFuZV9jb3VudDsgaSsrKSB7CiAJCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3By aXYsIHBpcGUsIENIVl9UWF9EVzIoY2gsIGkpKTsKIAogCQl2YWwgJj0gfkRQSU9fU1dJTkdfTUFS R0lOMDAwX01BU0s7CkBAIC0zMzA5LDcgKzMzNDgsNyBAQCBzdGF0aWMgdWludDMyX3QgY2h2X3Np Z25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAkgKiBGb3Igbm93LCBmb3Ig dGhpcyB1bmlxdWUgdHJhbnNpdGlvbiBzY2FsZSBzZWxlY3Rpb24sIHNldCBiaXQKIAkgKiAyNyBm b3IgY2gwIGFuZCBjaDEuCiAJICovCi0JZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworCWZvciAo aSA9IDA7IGkgPCBpbnRlbF9jcnRjLT5jb25maWctPmxhbmVfY291bnQ7IGkrKykgewogCQl2YWwg PSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBDSFZfVFhfRFczKGNoLCBpKSk7CiAJCWlm IChjaHZfbmVlZF91bmlxX3RyYW5zX3NjYWxlKHRyYWluX3NldCkpCiAJCQl2YWwgfD0gRFBJT19U WF9VTklRX1RSQU5TX1NDQUxFX0VOOwpAQCAtMzMyMyw5ICszMzYyLDExIEBAIHN0YXRpYyB1aW50 MzJfdCBjaHZfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCXZhbCB8 PSBEUElPX1BDU19TV0lOR19DQUxDX1RYMF9UWDIgfCBEUElPX1BDU19TV0lOR19DQUxDX1RYMV9U WDM7CiAJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzEwKGNoKSwg dmFsKTsKIAotCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MyM19E VzEwKGNoKSk7Ci0JdmFsIHw9IERQSU9fUENTX1NXSU5HX0NBTENfVFgwX1RYMiB8IERQSU9fUENT X1NXSU5HX0NBTENfVFgxX1RYMzsKLQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxW X1BDUzIzX0RXMTAoY2gpLCB2YWwpOworCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmxhbmVfY291 bnQgPiAyKSB7CisJCXZhbCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1My M19EVzEwKGNoKSk7CisJCXZhbCB8PSBEUElPX1BDU19TV0lOR19DQUxDX1RYMF9UWDIgfCBEUElP X1BDU19TV0lOR19DQUxDX1RYMV9UWDM7CisJCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBl LCBWTFZfUENTMjNfRFcxMChjaCksIHZhbCk7CisJfQogCiAJLyogTFJDIEJ5cGFzcyAqLwogCXZh bCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYsIHBpcGUsIENIVl9DTU5fRFczMCk7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCmluZGV4IDIzZDVlNDYuLmY4YTE2ZGMgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCkBAIC0xMzcwLDYgKzEzNzAsMTAgQEAgdm9pZCBpbnRlbF9ydW50aW1lX3BtX3B1 dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogCiB2b2lkIGludGVsX2Rpc3Bs YXlfc2V0X2luaXRfcG93ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldiwgYm9vbCBlbmFi bGUpOwogCit2b2lkIGNodl9waHlfcG93ZXJnYXRlX2xhbmVzKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAorCQkJICAgICBib29sIG92ZXJyaWRlLCB1bnNpZ25lZCBpbnQgbWFzayk7CisK KwogLyogaW50ZWxfcG0uYyAqLwogdm9pZCBpbnRlbF9pbml0X2Nsb2NrX2dhdGluZyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKIHZvaWQgaW50ZWxfc3VzcGVuZF9odyhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwppbmRleCA4NmIxYTJjLi5iM2Y2Yzlm IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCkBAIC0xNjI1LDYgKzE2MjUsOCBAQCBzdGF0 aWMgdm9pZCBjaHZfaGRtaV9wcmVfcGxsX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlcikKIAogCWludGVsX2hkbWlfcHJlcGFyZShlbmNvZGVyKTsKIAorCWNodl9waHlfcG93ZXJn YXRlX2xhbmVzKGVuY29kZXIsIHRydWUsIDB4MCk7CisKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ c2JfbG9jayk7CiAKIAkvKiBwcm9ncmFtIGxlZnQvcmlnaHQgY2xvY2sgZGlzdHJpYnV0aW9uICov CkBAIC0xNjk4LDYgKzE3MDAsOCBAQCBzdGF0aWMgdm9pZCBjaHZfaGRtaV9wb3N0X3BsbF9kaXNh YmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQogCX0KIAogCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPnNiX2xvY2spOworCisJY2h2X3BoeV9wb3dlcmdhdGVfbGFuZXMoZW5jb2Rlciwg ZmFsc2UsIDB4MCk7CiB9CiAKIHN0YXRpYyB2b2lkIHZsdl9oZG1pX3Bvc3RfZGlzYWJsZShzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3J1bnRpbWVfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRp bWVfcG0uYwppbmRleCBkYWIxZGE5Li41MDZhOGNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcnVudGltZV9wbS5jCkBAIC05NDYsMTQgKzk0NiwxOSBAQCBzdGF0aWMgdm9pZCBjaHZfZHBp b19jbW5fcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAogCQkJCQkgICBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dlcl93ZWxsKQogewogCWVudW0g ZHBpb19waHkgcGh5OworCWVudW0gcGlwZSBwaXBlOworCXVpbnQzMl90IHRtcDsKIAogCVdBUk5f T05fT05DRShwb3dlcl93ZWxsLT5kYXRhICE9IFBVTklUX1BPV0VSX1dFTExfRFBJT19DTU5fQkMg JiYKIAkJICAgICBwb3dlcl93ZWxsLT5kYXRhICE9IFBVTklUX1BPV0VSX1dFTExfRFBJT19DTU5f RCk7CiAKLQlpZiAocG93ZXJfd2VsbC0+ZGF0YSA9PSBQVU5JVF9QT1dFUl9XRUxMX0RQSU9fQ01O X0JDKQorCWlmIChwb3dlcl93ZWxsLT5kYXRhID09IFBVTklUX1BPV0VSX1dFTExfRFBJT19DTU5f QkMpIHsKKwkJcGlwZSA9IFBJUEVfQTsKIAkJcGh5ID0gRFBJT19QSFkwOwotCWVsc2UKKwl9IGVs c2UgeworCQlwaXBlID0gUElQRV9DOwogCQlwaHkgPSBEUElPX1BIWTE7CisJfQogCiAJLyogc2lu Y2UgcmVmL2NyaSBjbG9jayB3YXMgZW5hYmxlZCAqLwogCXVkZWxheSgxKTsgLyogPjEwbnMgZm9y IGNtbnJlc2V0LCA+MG5zIGZvciBzaWRlcmVzZXQgKi8KQEAgLTk2Myw4ICs5NjgsMjYgQEAgc3Rh dGljIHZvaWQgY2h2X2RwaW9fY21uX3Bvd2VyX3dlbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAlpZiAod2FpdF9mb3IoSTkxNV9SRUFEKERJU1BMQVlfUEhZX1NU QVRVUykgJiBQSFlfUE9XRVJHT09EKHBoeSksIDEpKQogCQlEUk1fRVJST1IoIkRpc3BsYXkgUEhZ ICVkIGlzIG5vdCBwb3dlciB1cFxuIiwgcGh5KTsKIAorCW11dGV4X2xvY2soJmRldl9wcml2LT5z Yl9sb2NrKTsKKworCS8qIEVuYWJsZSBkeW5hbWljIHBvd2VyIGRvd24gKi8KKwl0bXAgPSB2bHZf ZHBpb19yZWFkKGRldl9wcml2LCBwaXBlLCBDSFZfQ01OX0RXMjgpOworCXRtcCB8PSBEUElPX0RZ TlBXUkRPV05FTl9DSDAgfCBEUElPX0NMMVBPV0VSRE9XTkVOOworCXZsdl9kcGlvX3dyaXRlKGRl dl9wcml2LCBwaXBlLCBDSFZfQ01OX0RXMjgsIHRtcCk7CisKKwlpZiAocG93ZXJfd2VsbC0+ZGF0 YSA9PSBQVU5JVF9QT1dFUl9XRUxMX0RQSU9fQ01OX0JDKSB7CisJCXRtcCA9IHZsdl9kcGlvX3Jl YWQoZGV2X3ByaXYsIHBpcGUsIF9DSFZfQ01OX0RXNl9DSDEpOworCQl0bXAgfD0gRFBJT19EWU5Q V1JET1dORU5fQ0gxOworCQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgX0NIVl9DTU5f RFc2X0NIMSwgdG1wKTsKKwl9CisKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsK KwogCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgfD0gUEhZX0NPTV9MQU5FX1JFU0VUX0RFQVNT RVJUKHBoeSk7CiAJSTkxNV9XUklURShESVNQTEFZX1BIWV9DT05UUk9MLCBkZXZfcHJpdi0+Y2h2 X3BoeV9jb250cm9sKTsKKworCURSTV9ERUJVR19LTVMoIkVuYWJsZWQgRFBJTyBQSFklZCAoUEhZ X0NPTlRST0w9MHglMDh4KVxuIiwKKwkJICAgICAgcGh5LCBkZXZfcHJpdi0+Y2h2X3BoeV9jb250 cm9sKTsKIH0KIAogc3RhdGljIHZvaWQgY2h2X2RwaW9fY21uX3Bvd2VyX3dlbGxfZGlzYWJsZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCkBAIC05ODgsNiArMTAxMSwzNSBAQCBz dGF0aWMgdm9pZCBjaHZfZHBpb19jbW5fcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKIAlJOTE1X1dSSVRFKERJU1BMQVlfUEhZX0NPTlRST0wsIGRl dl9wcml2LT5jaHZfcGh5X2NvbnRyb2wpOwogCiAJdmx2X3NldF9wb3dlcl93ZWxsKGRldl9wcml2 LCBwb3dlcl93ZWxsLCBmYWxzZSk7CisKKwlEUk1fREVCVUdfS01TKCJEaXNhYmxlZCBEUElPIFBI WSVkIChQSFlfQ09OVFJPTD0weCUwOHgpXG4iLAorCQkgICAgICBwaHksIGRldl9wcml2LT5jaHZf cGh5X2NvbnRyb2wpOworfQorCit2b2lkIGNodl9waHlfcG93ZXJnYXRlX2xhbmVzKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgICBib29sIG92ZXJyaWRlLCB1bnNpZ25lZCBp bnQgbWFzaykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGVuY29kZXItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9k b21haW5zID0gJmRldl9wcml2LT5wb3dlcl9kb21haW5zOworCWVudW0gZHBpb19waHkgcGh5ID0g dmx2X2Rwb3J0X3RvX3BoeShlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpKTsKKwllbnVt IGRwaW9fY2hhbm5lbCBjaCA9IHZsdl9kcG9ydF90b19jaGFubmVsKGVuY190b19kaWdfcG9ydCgm ZW5jb2Rlci0+YmFzZSkpOworCisJbXV0ZXhfbG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7CisK KwlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sICY9IH5QSFlfQ0hfUE9XRVJfRE9XTl9PVlJEKDB4 ZiwgcGh5LCBjaCk7CisJZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCB8PSBQSFlfQ0hfUE9XRVJf RE9XTl9PVlJEKG1hc2ssIHBoeSwgY2gpOworCisJaWYgKG92ZXJyaWRlKQorCQlkZXZfcHJpdi0+ Y2h2X3BoeV9jb250cm9sIHw9IFBIWV9DSF9QT1dFUl9ET1dOX09WUkRfRU4ocGh5LCBjaCk7CisJ ZWxzZQorCQlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sICY9IH5QSFlfQ0hfUE9XRVJfRE9XTl9P VlJEX0VOKHBoeSwgY2gpOworCisJSTkxNV9XUklURShESVNQTEFZX1BIWV9DT05UUk9MLCBkZXZf cHJpdi0+Y2h2X3BoeV9jb250cm9sKTsKKworCURSTV9ERUJVR19LTVMoIlBvd2VyIGdhdGluZyBE UElPIFBIWSVkIENIJWQgbGFuZXMgMHgleCAoUEhZX0NPTlRST0w9MHglMDh4KVxuIiwKKwkJICAg ICAgcGh5LCBjaCwgbWFzaywgZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCk7CisKKwltdXRleF91 bmxvY2soJnBvd2VyX2RvbWFpbnMtPmxvY2spOwogfQogCiBzdGF0aWMgYm9vbCBjaHZfcGlwZV9w b3dlcl93ZWxsX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LApAQCAt MTYyMCwxOSArMTY3Miw3MiBAQCBzdGF0aWMgdm9pZCBjaHZfcGh5X2NvbnRyb2xfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJICogRElTUExBWV9QSFlfQ09OVFJPTCBj YW4gZ2V0IGNvcnJ1cHRlZCBpZiByZWFkLiBBcyBhCiAJICogd29ya2Fyb3VuZCBuZXZlciBldmVy IHJlYWQgRElTUExBWV9QSFlfQ09OVFJPTCwgYW5kCiAJICogaW5zdGVhZCBtYWludGFpbiBhIHNo YWRvdyBjb3B5IG91cnNlbHZlcy4gVXNlIHRoZSBhY3R1YWwKLQkgKiBwb3dlciB3ZWxsIHN0YXRl IHRvIHJlY29uc3RydWN0IHRoZSBleHBlY3RlZCBpbml0aWFsCi0JICogdmFsdWUuCisJICogcG93 ZXIgd2VsbCBzdGF0ZSBhbmQgbGFuZSBzdGF0dXMgdG8gcmVjb25zdHJ1Y3QgdGhlCisJICogZXhw ZWN0ZWQgaW5pdGlhbCB2YWx1ZS4KIAkgKi8KIAlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sID0K IAkJUEhZX0xET19TRVFfREVMQVkoUEhZX0xET19ERUxBWV82MDBOUywgRFBJT19QSFkwKSB8CiAJ CVBIWV9MRE9fU0VRX0RFTEFZKFBIWV9MRE9fREVMQVlfNjAwTlMsIERQSU9fUEhZMSkgfAotCQlQ SFlfQ0hfUE9XRVJfTU9ERShQSFlfQ0hfU1VfUFNSLCBEUElPX1BIWTAsIERQSU9fQ0gwKSB8Ci0J CVBIWV9DSF9QT1dFUl9NT0RFKFBIWV9DSF9TVV9QU1IsIERQSU9fUEhZMCwgRFBJT19DSDEpIHwK LQkJUEhZX0NIX1BPV0VSX01PREUoUEhZX0NIX1NVX1BTUiwgRFBJT19QSFkxLCBEUElPX0NIMCk7 Ci0JaWYgKGNtbl9iYy0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBjbW5fYmMpKQorCQlQSFlf Q0hfUE9XRVJfTU9ERShQSFlfQ0hfREVFUF9QU1IsIERQSU9fUEhZMCwgRFBJT19DSDApIHwKKwkJ UEhZX0NIX1BPV0VSX01PREUoUEhZX0NIX0RFRVBfUFNSLCBEUElPX1BIWTAsIERQSU9fQ0gxKSB8 CisJCVBIWV9DSF9QT1dFUl9NT0RFKFBIWV9DSF9ERUVQX1BTUiwgRFBJT19QSFkxLCBEUElPX0NI MCk7CisKKwkvKgorCSAqIElmIGFsbCBsYW5lcyBhcmUgZGlzYWJsZWQgd2UgbGVhdmUgdGhlIG92 ZXJyaWRlIGRpc2FibGVkCisJICogd2l0aCBhbGwgcG93ZXIgZG93biBiaXRzIGNsZWFyZWQgdG8g bWF0Y2ggdGhlIHN0YXRlIHdlCisJICogd291bGQgdXNlIGFmdGVyIGRpc2FibGluZyB0aGUgcG9y dC4gT3RoZXJ3aXNlIGVuYWJsZSB0aGUKKwkgKiBvdmVycmlkZSBhbmQgc2V0IHRoZSBsYW5lIHBv d2VyZG93biBiaXRzIGFjY2RpbmcgdG8gdGhlCisJICogY3VycmVudCBsYW5lIHN0YXR1cy4KKwkg Ki8KKwlpZiAoY21uX2JjLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIGNtbl9iYykpIHsKKwkJ dWludDMyX3Qgc3RhdHVzID0gSTkxNV9SRUFEKERQTEwoUElQRV9BKSk7CisJCXVuc2lnbmVkIGlu dCBtYXNrOworCisJCW1hc2sgPSBzdGF0dXMgJiBEUExMX1BPUlRCX1JFQURZX01BU0s7CisJCWlm IChtYXNrID09IDB4ZikKKwkJCW1hc2sgPSAweDA7CisJCWVsc2UKKwkJCWRldl9wcml2LT5jaHZf cGh5X2NvbnRyb2wgfD0KKwkJCQlQSFlfQ0hfUE9XRVJfRE9XTl9PVlJEX0VOKERQSU9fUEhZMCwg RFBJT19DSDApOworCisJCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgfD0KKwkJCVBIWV9DSF9Q T1dFUl9ET1dOX09WUkQobWFzaywgRFBJT19QSFkwLCBEUElPX0NIMCk7CisKKwkJbWFzayA9IChz dGF0dXMgJiBEUExMX1BPUlRDX1JFQURZX01BU0spID4+IDQ7CisJCWlmIChtYXNrID09IDB4ZikK KwkJCW1hc2sgPSAweDA7CisJCWVsc2UKKwkJCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgfD0K KwkJCQlQSFlfQ0hfUE9XRVJfRE9XTl9PVlJEX0VOKERQSU9fUEhZMCwgRFBJT19DSDEpOworCisJ CWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgfD0KKwkJCVBIWV9DSF9QT1dFUl9ET1dOX09WUkQo bWFzaywgRFBJT19QSFkwLCBEUElPX0NIMSk7CisKIAkJZGV2X3ByaXYtPmNodl9waHlfY29udHJv bCB8PSBQSFlfQ09NX0xBTkVfUkVTRVRfREVBU1NFUlQoRFBJT19QSFkwKTsKLQlpZiAoY21uX2Qt Pm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwgY21uX2QpKQorCX0KKworCWlmIChjbW5fZC0+b3Bz LT5pc19lbmFibGVkKGRldl9wcml2LCBjbW5fZCkpIHsKKwkJdWludDMyX3Qgc3RhdHVzID0gSTkx NV9SRUFEKERQSU9fUEhZX1NUQVRVUyk7CisJCXVuc2lnbmVkIGludCBtYXNrOworCisJCW1hc2sg PSBzdGF0dXMgJiBEUExMX1BPUlREX1JFQURZX01BU0s7CisKKwkJaWYgKG1hc2sgPT0gMHhmKQor CQkJbWFzayA9IDB4MDsKKwkJZWxzZQorCQkJZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCB8PQor CQkJCVBIWV9DSF9QT1dFUl9ET1dOX09WUkRfRU4oRFBJT19QSFkxLCBEUElPX0NIMCk7CisKKwkJ ZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCB8PQorCQkJUEhZX0NIX1BPV0VSX0RPV05fT1ZSRCht YXNrLCBEUElPX1BIWTEsIERQSU9fQ0gwKTsKKwogCQlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9s IHw9IFBIWV9DT01fTEFORV9SRVNFVF9ERUFTU0VSVChEUElPX1BIWTEpOworCX0KKworCUk5MTVf V1JJVEUoRElTUExBWV9QSFlfQ09OVFJPTCwgZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCk7CisK KwlEUk1fREVCVUdfS01TKCJJbml0aWFsIFBIWV9DT05UUk9MPTB4JTA4eFxuIiwKKwkJICAgICAg ZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCk7CiB9CiAKIHN0YXRpYyB2b2lkIHZsdl9jbW5sYW5l X3dhKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKLS0gCjIuMy42CgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=