From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan de Oliveira Subject: [PATCH v4 9/9] drm/i915: Address broxton phy registers based on phy and channel number Date: Wed, 19 Oct 2016 10:54:26 +0300 Message-ID: <1476863666-5729-1-git-send-email-ander.conselvan.de.oliveira@intel.com> References: <1476100421.10695.5.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 317E76E85D for ; Wed, 19 Oct 2016 07:56:55 +0000 (UTC) In-Reply-To: <1476100421.10695.5.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: imre.deak@intel.com, intel-gfx@lists.freedesktop.org Cc: m.deepak@intel.com, Ander Conselvan de Oliveira List-Id: intel-gfx@lists.freedesktop.org VGhlIHBvcnQgcmVnaXN0ZXJzIHJlbGF0ZWQgdG8gdGhlIHBoeXMgaW4gYnJveHRvbiBtYXAgdG8g ZGlmZmVyZW50CmNoYW5uZWxzIGFuZCBzcGVjaWZpYyBwaHlzLiBNYWtlIHRoYXQgbWFwcGluZyBl eHBsaWNpdC4KCnYyOiBQYXNzIGVudW0gZHBpb19waHkgdG8gbWFjcm9zIGluc3RlYWQgb2YgbW1p byBiYXNlLiAoSW1yZSkKCnYzOiBGaXggdHlwbyBpbiBtYWNyb3MuIChJbXJlKQoKdjQ6IEFsc28g Y2hhbmdlIHZhcmlhYmxlcyBmcm9tIHUzMiB0byBlbnVtIGRwaW9fcGh5LiAoSW1yZSkKICAgIFJl bW92ZSBsZWZ0b3ZlcnMgZnJvbSBwcmV2aW91cyB2ZXJzaW9uLiAoSW1yZSkKClNpZ25lZC1vZmYt Ynk6IEFuZGVyIENvbnNlbHZhbiBkZSBPbGl2ZWlyYSA8YW5kZXIuY29uc2VsdmFuLmRlLm9saXZl aXJhQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNv bT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgIHwgICAyICsKIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICAgfCAxNDEgKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBpb19waHku YyB8ICA4MCArKysrKysrKysrKysrKystLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cGxsX21nci5jIHwgIDg0ICsrKysrKysrKysrLS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDE4 NSBpbnNlcnRpb25zKCspLCAxMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK aW5kZXggMzEyMGVmNS4uYTMzMjNiN2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMzc0 Niw2ICszNzQ2LDggQEAgdTMyIHZsdl9mbGlzZHNpX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCB1MzIgcmVnKTsKIHZvaWQgdmx2X2ZsaXNkc2lfd3JpdGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcmVnLCB1MzIgdmFsKTsKIAogLyogaW50ZWxf ZHBpb19waHkuYyAqLwordm9pZCBieHRfcG9ydF90b19waHlfY2hhbm5lbChlbnVtIHBvcnQgcG9y dCwKKwkJCSAgICAgZW51bSBkcGlvX3BoeSAqcGh5LCBlbnVtIGRwaW9fY2hhbm5lbCAqY2gpOwog dm9pZCBieHRfZGRpX3BoeV9zZXRfc2lnbmFsX2xldmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAkJCQkgIGVudW0gcG9ydCBwb3J0LCB1MzIgbWFyZ2luLCB1MzIgc2NhbGUs CiAJCQkJICB1MzIgZW5hYmxlLCB1MzIgZGVlbXBoYXNpcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aAppbmRleCA2NTc1MzkwLi5iOTcyZDFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAgLTEx ODYsNyArMTE4NiwxOSBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKICNkZWZpbmUgICBE UElPX1VQQVJfU0hJRlQJCTMwCiAKIC8qIEJYVCBQSFkgcmVnaXN0ZXJzICovCi0jZGVmaW5lIF9C WFRfUEhZKHBoeSwgYSwgYikJCV9NTUlPX1BJUEUoKHBoeSksIChhKSwgKGIpKQorI2RlZmluZSBf QlhUX1BIWTBfQkFTRQkJCTB4NkMwMDAKKyNkZWZpbmUgX0JYVF9QSFkxX0JBU0UJCQkweDE2MjAw MAorI2RlZmluZSBCWFRfUEhZX0JBU0UocGh5KQkJX1BJUEUoKHBoeSksIF9CWFRfUEhZMF9CQVNF LCBcCisJCQkJCQkgICAgIF9CWFRfUEhZMV9CQVNFKQorCisjZGVmaW5lIF9CWFRfUEhZKHBoeSwg cmVnKQkJCQkJCVwKKwlfTU1JTyhCWFRfUEhZX0JBU0UocGh5KSAtIF9CWFRfUEhZMF9CQVNFICsg KHJlZykpCisKKyNkZWZpbmUgX0JYVF9QSFlfQ0gocGh5LCBjaCwgcmVnX2NoMCwgcmVnX2NoMSkJ CVwKKwkoQlhUX1BIWV9CQVNFKHBoeSkgKyBfUElQRSgoY2gpLCAocmVnX2NoMCkgLSBfQlhUX1BI WTBfQkFTRSwJXAorCQkJCQkgKHJlZ19jaDEpIC0gX0JYVF9QSFkwX0JBU0UpKQorI2RlZmluZSBf TU1JT19CWFRfUEhZX0NIKHBoeSwgY2gsIHJlZ19jaDAsIHJlZ19jaDEpCQlcCisJX01NSU8oX0JY VF9QSFlfQ0gocGh5LCBjaCwgcmVnX2NoMCwgcmVnX2NoMSkpCiAKICNkZWZpbmUgQlhUX1BfQ1Jf R1RfRElTUF9QV1JPTgkJX01NSU8oMHgxMzgwOTApCiAjZGVmaW5lICAgR1RfRElTUExBWV9QT1dF Ul9PTihwaHkpCSgxIDw8IChwaHkpKQpAQCAtMTIwMyw4ICsxMjE1LDggQEAgZW51bSBza2xfZGlz cF9wb3dlcl93ZWxscyB7CiAjZGVmaW5lIF9QSFlfQ1RMX0ZBTUlMWV9FRFAJCTB4NjRDODAKICNk ZWZpbmUgX1BIWV9DVExfRkFNSUxZX0RESQkJMHg2NEM5MAogI2RlZmluZSAgIENPTU1PTl9SRVNF VF9ESVMJCSgxIDw8IDMxKQotI2RlZmluZSBCWFRfUEhZX0NUTF9GQU1JTFkocGh5KQkJX0JYVF9Q SFkoKHBoeSksIF9QSFlfQ1RMX0ZBTUlMWV9EREksIFwKLQkJCQkJCQlfUEhZX0NUTF9GQU1JTFlf RURQKQorI2RlZmluZSBCWFRfUEhZX0NUTF9GQU1JTFkocGh5KQkJX01NSU9fUElQRSgocGh5KSwg X1BIWV9DVExfRkFNSUxZX0RESSwgXAorCQkJCQkJCSAgX1BIWV9DVExfRkFNSUxZX0VEUCkKIAog LyogQlhUIFBIWSBQTEwgcmVnaXN0ZXJzICovCiAjZGVmaW5lIF9QT1JUX1BMTF9BCQkJMHg0NjA3 NApAQCAtMTIyNCwxOCArMTIzNiwxOCBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKICNk ZWZpbmUgICBQT1JUX1BMTF9QMl9TSElGVAkJOAogI2RlZmluZSAgIFBPUlRfUExMX1AyX01BU0sJ CSgweDFmIDw8IFBPUlRfUExMX1AyX1NISUZUKQogI2RlZmluZSAgIFBPUlRfUExMX1AyKHgpCQko KHgpICA8PCBQT1JUX1BMTF9QMl9TSElGVCkKLSNkZWZpbmUgQlhUX1BPUlRfUExMX0VCQl8wKHBv cnQpCV9NTUlPX1BPUlQzKHBvcnQsIF9QT1JUX1BMTF9FQkJfMF9BLCBcCi0JCQkJCQlfUE9SVF9Q TExfRUJCXzBfQiwJXAotCQkJCQkJX1BPUlRfUExMX0VCQl8wX0MpCisjZGVmaW5lIEJYVF9QT1JU X1BMTF9FQkJfMChwaHksIGNoKQlfTU1JT19CWFRfUEhZX0NIKHBoeSwgY2gsIFwKKwkJCQkJCQkg X1BPUlRfUExMX0VCQl8wX0IsIFwKKwkJCQkJCQkgX1BPUlRfUExMX0VCQl8wX0MpCiAKICNkZWZp bmUgX1BPUlRfUExMX0VCQl80X0EJCTB4MTYyMDM4CiAjZGVmaW5lIF9QT1JUX1BMTF9FQkJfNF9C CQkweDZDMDM4CiAjZGVmaW5lIF9QT1JUX1BMTF9FQkJfNF9DCQkweDZDMzQ0CiAjZGVmaW5lICAg UE9SVF9QTExfMTBCSVRfQ0xLX0VOQUJMRQkoMSA8PCAxMykKICNkZWZpbmUgICBQT1JUX1BMTF9S RUNBTElCUkFURQkJKDEgPDwgMTQpCi0jZGVmaW5lIEJYVF9QT1JUX1BMTF9FQkJfNChwb3J0KQlf TU1JT19QT1JUMyhwb3J0LCBfUE9SVF9QTExfRUJCXzRfQSwgXAotCQkJCQkJX1BPUlRfUExMX0VC Ql80X0IsCVwKLQkJCQkJCV9QT1JUX1BMTF9FQkJfNF9DKQorI2RlZmluZSBCWFRfUE9SVF9QTExf RUJCXzQocGh5LCBjaCkJX01NSU9fQlhUX1BIWV9DSChwaHksIGNoLCBcCisJCQkJCQkJIF9QT1JU X1BMTF9FQkJfNF9CLCBcCisJCQkJCQkJIF9QT1JUX1BMTF9FQkJfNF9DKQogCiAjZGVmaW5lIF9Q T1JUX1BMTF8wX0EJCQkweDE2MjEwMAogI2RlZmluZSBfUE9SVF9QTExfMF9CCQkJMHg2QzEwMApA QCAtMTI2Niw2MiArMTI3OCw1NiBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKICNkZWZp bmUgIFBPUlRfUExMX0RDT19BTVBfREVGQVVMVAkxNQogI2RlZmluZSAgUE9SVF9QTExfRENPX0FN UF9NQVNLCQkweDNjMDAKICNkZWZpbmUgIFBPUlRfUExMX0RDT19BTVAoeCkJCSgoeCk8PDEwKQot I2RlZmluZSBfUE9SVF9QTExfQkFTRShwb3J0KQkJX1BPUlQzKHBvcnQsIF9QT1JUX1BMTF8wX0Es CVwKLQkJCQkJCV9QT1JUX1BMTF8wX0IsCQlcCi0JCQkJCQlfUE9SVF9QTExfMF9DKQotI2RlZmlu ZSBCWFRfUE9SVF9QTEwocG9ydCwgaWR4KQkJX01NSU8oX1BPUlRfUExMX0JBU0UocG9ydCkgKyAo aWR4KSAqIDQpCisjZGVmaW5lIF9QT1JUX1BMTF9CQVNFKHBoeSwgY2gpCQlfQlhUX1BIWV9DSChw aHksIGNoLCBcCisJCQkJCQkgICAgX1BPUlRfUExMXzBfQiwgXAorCQkJCQkJICAgIF9QT1JUX1BM TF8wX0MpCisjZGVmaW5lIEJYVF9QT1JUX1BMTChwaHksIGNoLCBpZHgpCV9NTUlPKF9QT1JUX1BM TF9CQVNFKHBoeSwgY2gpICsgXAorCQkJCQkgICAgICAoaWR4KSAqIDQpCiAKIC8qIEJYVCBQSFkg Y29tbW9uIGxhbmUgcmVnaXN0ZXJzICovCiAjZGVmaW5lIF9QT1JUX0NMMUNNX0RXMF9BCQkweDE2 MjAwMAogI2RlZmluZSBfUE9SVF9DTDFDTV9EVzBfQkMJCTB4NkMwMDAKICNkZWZpbmUgICBQSFlf UE9XRVJfR09PRAkJKDEgPDwgMTYpCiAjZGVmaW5lICAgUEhZX1JFU0VSVkVECQkJKDEgPDwgNykK LSNkZWZpbmUgQlhUX1BPUlRfQ0wxQ01fRFcwKHBoeSkJCV9CWFRfUEhZKChwaHkpLCBfUE9SVF9D TDFDTV9EVzBfQkMsIFwKLQkJCQkJCQlfUE9SVF9DTDFDTV9EVzBfQSkKKyNkZWZpbmUgQlhUX1BP UlRfQ0wxQ01fRFcwKHBoeSkJCV9CWFRfUEhZKChwaHkpLCBfUE9SVF9DTDFDTV9EVzBfQkMpCiAK ICNkZWZpbmUgX1BPUlRfQ0wxQ01fRFc5X0EJCTB4MTYyMDI0CiAjZGVmaW5lIF9QT1JUX0NMMUNN X0RXOV9CQwkJMHg2QzAyNAogI2RlZmluZSAgIElSRUYwUkNfT0ZGU0VUX1NISUZUCQk4CiAjZGVm aW5lICAgSVJFRjBSQ19PRkZTRVRfTUFTSwkJKDB4RkYgPDwgSVJFRjBSQ19PRkZTRVRfU0hJRlQp Ci0jZGVmaW5lIEJYVF9QT1JUX0NMMUNNX0RXOShwaHkpCQlfQlhUX1BIWSgocGh5KSwgX1BPUlRf Q0wxQ01fRFc5X0JDLCBcCi0JCQkJCQkJX1BPUlRfQ0wxQ01fRFc5X0EpCisjZGVmaW5lIEJYVF9Q T1JUX0NMMUNNX0RXOShwaHkpCQlfQlhUX1BIWSgocGh5KSwgX1BPUlRfQ0wxQ01fRFc5X0JDKQog CiAjZGVmaW5lIF9QT1JUX0NMMUNNX0RXMTBfQQkJMHgxNjIwMjgKICNkZWZpbmUgX1BPUlRfQ0wx Q01fRFcxMF9CQwkJMHg2QzAyOAogI2RlZmluZSAgIElSRUYxUkNfT0ZGU0VUX1NISUZUCQk4CiAj ZGVmaW5lICAgSVJFRjFSQ19PRkZTRVRfTUFTSwkJKDB4RkYgPDwgSVJFRjFSQ19PRkZTRVRfU0hJ RlQpCi0jZGVmaW5lIEJYVF9QT1JUX0NMMUNNX0RXMTAocGh5KQlfQlhUX1BIWSgocGh5KSwgX1BP UlRfQ0wxQ01fRFcxMF9CQywgXAotCQkJCQkJCV9QT1JUX0NMMUNNX0RXMTBfQSkKKyNkZWZpbmUg QlhUX1BPUlRfQ0wxQ01fRFcxMChwaHkpCV9CWFRfUEhZKChwaHkpLCBfUE9SVF9DTDFDTV9EVzEw X0JDKQogCiAjZGVmaW5lIF9QT1JUX0NMMUNNX0RXMjhfQQkJMHgxNjIwNzAKICNkZWZpbmUgX1BP UlRfQ0wxQ01fRFcyOF9CQwkJMHg2QzA3MAogI2RlZmluZSAgIE9DTDFfUE9XRVJfRE9XTl9FTgkJ KDEgPDwgMjMpCiAjZGVmaW5lICAgRFcyOF9PTERPX0RZTl9QV1JfRE9XTl9FTgkoMSA8PCAyMikK ICNkZWZpbmUgICBTVVNfQ0xLX0NPTkZJRwkJMHgzCi0jZGVmaW5lIEJYVF9QT1JUX0NMMUNNX0RX MjgocGh5KQlfQlhUX1BIWSgocGh5KSwgX1BPUlRfQ0wxQ01fRFcyOF9CQywgXAotCQkJCQkJCV9Q T1JUX0NMMUNNX0RXMjhfQSkKKyNkZWZpbmUgQlhUX1BPUlRfQ0wxQ01fRFcyOChwaHkpCV9CWFRf UEhZKChwaHkpLCBfUE9SVF9DTDFDTV9EVzI4X0JDKQogCiAjZGVmaW5lIF9QT1JUX0NMMUNNX0RX MzBfQQkJMHgxNjIwNzgKICNkZWZpbmUgX1BPUlRfQ0wxQ01fRFczMF9CQwkJMHg2QzA3OAogI2Rl ZmluZSAgIE9DTDJfTERPRlVTRV9QV1JfRElTCQkoMSA8PCA2KQotI2RlZmluZSBCWFRfUE9SVF9D TDFDTV9EVzMwKHBoeSkJX0JYVF9QSFkoKHBoeSksIF9QT1JUX0NMMUNNX0RXMzBfQkMsIFwKLQkJ CQkJCQlfUE9SVF9DTDFDTV9EVzMwX0EpCisjZGVmaW5lIEJYVF9QT1JUX0NMMUNNX0RXMzAocGh5 KQlfQlhUX1BIWSgocGh5KSwgX1BPUlRfQ0wxQ01fRFczMF9CQykKIAogLyogVGhlIHNwZWMgZGVm aW5lcyB0aGlzIG9ubHkgZm9yIEJYVCBQSFkwLCBidXQgbGV0cyBhc3N1bWUgdGhhdCB0aGlzCiAg KiB3b3VsZCBleGlzdCBmb3IgUEhZMSB0b28gaWYgaXQgaGFkIGEgc2Vjb25kIGNoYW5uZWwuCiAg Ki8KICNkZWZpbmUgX1BPUlRfQ0wyQ01fRFc2X0EJCTB4MTYyMzU4CiAjZGVmaW5lIF9QT1JUX0NM MkNNX0RXNl9CQwkJMHg2QzM1OAotI2RlZmluZSBCWFRfUE9SVF9DTDJDTV9EVzYocGh5KQkJX0JY VF9QSFkoKHBoeSksIF9QT1JUX0NMMkNNX0RXNl9CQywgXAotCQkJCQkJCV9QT1JUX0NMMkNNX0RX Nl9BKQorI2RlZmluZSBCWFRfUE9SVF9DTDJDTV9EVzYocGh5KQkJX0JYVF9QSFkoKHBoeSksIF9Q T1JUX0NMMkNNX0RXNl9CQykKICNkZWZpbmUgICBEVzZfT0xET19EWU5fUFdSX0RPV05fRU4JKDEg PDwgMjgpCiAKIC8qIEJYVCBQSFkgUmVmIHJlZ2lzdGVycyAqLwogI2RlZmluZSBfUE9SVF9SRUZf RFczX0EJCQkweDE2MjE4QwogI2RlZmluZSBfUE9SVF9SRUZfRFczX0JDCQkweDZDMThDCiAjZGVm aW5lICAgR1JDX0RPTkUJCQkoMSA8PCAyMikKLSNkZWZpbmUgQlhUX1BPUlRfUkVGX0RXMyhwaHkp CQlfQlhUX1BIWSgocGh5KSwgX1BPUlRfUkVGX0RXM19CQywgXAotCQkJCQkJCV9QT1JUX1JFRl9E VzNfQSkKKyNkZWZpbmUgQlhUX1BPUlRfUkVGX0RXMyhwaHkpCQlfQlhUX1BIWSgocGh5KSwgX1BP UlRfUkVGX0RXM19CQykKIAogI2RlZmluZSBfUE9SVF9SRUZfRFc2X0EJCQkweDE2MjE5OAogI2Rl ZmluZSBfUE9SVF9SRUZfRFc2X0JDCQkweDZDMTk4CkBAIC0xMzMyLDE1ICsxMzM4LDEzIEBAIGVu dW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewogI2RlZmluZSAgIEdSQ19DT0RFX1NMT1dfU0hJRlQJ CTgKICNkZWZpbmUgICBHUkNfQ09ERV9TTE9XX01BU0sJCSgweEZGIDw8IEdSQ19DT0RFX1NMT1df U0hJRlQpCiAjZGVmaW5lICAgR1JDX0NPREVfTk9NX01BU0sJCTB4RkYKLSNkZWZpbmUgQlhUX1BP UlRfUkVGX0RXNihwaHkpCQlfQlhUX1BIWSgocGh5KSwgX1BPUlRfUkVGX0RXNl9CQywJXAotCQkJ CQkJICAgICAgX1BPUlRfUkVGX0RXNl9BKQorI2RlZmluZSBCWFRfUE9SVF9SRUZfRFc2KHBoeSkJ CV9CWFRfUEhZKChwaHkpLCBfUE9SVF9SRUZfRFc2X0JDKQogCiAjZGVmaW5lIF9QT1JUX1JFRl9E VzhfQQkJCTB4MTYyMUEwCiAjZGVmaW5lIF9QT1JUX1JFRl9EVzhfQkMJCTB4NkMxQTAKICNkZWZp bmUgICBHUkNfRElTCQkJKDEgPDwgMTUpCiAjZGVmaW5lICAgR1JDX1JEWV9PVlJECQkJKDEgPDwg MSkKLSNkZWZpbmUgQlhUX1BPUlRfUkVGX0RXOChwaHkpCQlfQlhUX1BIWSgocGh5KSwgX1BPUlRf UkVGX0RXOF9CQywJXAotCQkJCQkJICAgICAgX1BPUlRfUkVGX0RXOF9BKQorI2RlZmluZSBCWFRf UE9SVF9SRUZfRFc4KHBoeSkJCV9CWFRfUEhZKChwaHkpLCBfUE9SVF9SRUZfRFc4X0JDKQogCiAv KiBCWFQgUEhZIFBDUyByZWdpc3RlcnMgKi8KICNkZWZpbmUgX1BPUlRfUENTX0RXMTBfTE4wMV9B CQkweDE2MjQyOApAQCAtMTM0OSwxMiArMTM1MywxMyBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dl bGxzIHsKICNkZWZpbmUgX1BPUlRfUENTX0RXMTBfR1JQX0EJCTB4MTYyQzI4CiAjZGVmaW5lIF9Q T1JUX1BDU19EVzEwX0dSUF9CCQkweDZDQzI4CiAjZGVmaW5lIF9QT1JUX1BDU19EVzEwX0dSUF9D CQkweDZDRTI4Ci0jZGVmaW5lIEJYVF9QT1JUX1BDU19EVzEwX0xOMDEocG9ydCkJX01NSU9fUE9S VDMocG9ydCwgX1BPUlRfUENTX0RXMTBfTE4wMV9BLCBcCi0JCQkJCQkgICAgIF9QT1JUX1BDU19E VzEwX0xOMDFfQiwgXAotCQkJCQkJICAgICBfUE9SVF9QQ1NfRFcxMF9MTjAxX0MpCi0jZGVmaW5l IEJYVF9QT1JUX1BDU19EVzEwX0dSUChwb3J0KQlfTU1JT19QT1JUMyhwb3J0LCBfUE9SVF9QQ1Nf RFcxMF9HUlBfQSwgIFwKLQkJCQkJCSAgICAgX1BPUlRfUENTX0RXMTBfR1JQX0IsICBcCi0JCQkJ CQkgICAgIF9QT1JUX1BDU19EVzEwX0dSUF9DKQorI2RlZmluZSBCWFRfUE9SVF9QQ1NfRFcxMF9M TjAxKHBoeSwgY2gpCV9NTUlPX0JYVF9QSFlfQ0gocGh5LCBjaCwgXAorCQkJCQkJCSBfUE9SVF9Q Q1NfRFcxMF9MTjAxX0IsIFwKKwkJCQkJCQkgX1BPUlRfUENTX0RXMTBfTE4wMV9DKQorI2RlZmlu ZSBCWFRfUE9SVF9QQ1NfRFcxMF9HUlAocGh5LCBjaCkJX01NSU9fQlhUX1BIWV9DSChwaHksIGNo LCBcCisJCQkJCQkJIF9QT1JUX1BDU19EVzEwX0dSUF9CLCBcCisJCQkJCQkJIF9QT1JUX1BDU19E VzEwX0dSUF9DKQorCiAjZGVmaW5lICAgVFgyX1NXSU5HX0NBTENfSU5JVAkJKDEgPDwgMzEpCiAj ZGVmaW5lICAgVFgxX1NXSU5HX0NBTENfSU5JVAkJKDEgPDwgMzApCiAKQEAgLTEzNjksMTUgKzEz NzQsMTUgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7CiAjZGVmaW5lIF9QT1JUX1BDU19E VzEyX0dSUF9DCQkweDZDRTMwCiAjZGVmaW5lICAgTEFORVNUQUdHRVJfU1RSQVBfT1ZSRAkoMSA8 PCA2KQogI2RlZmluZSAgIExBTkVfU1RBR0dFUl9NQVNLCQkweDFGCi0jZGVmaW5lIEJYVF9QT1JU X1BDU19EVzEyX0xOMDEocG9ydCkJX01NSU9fUE9SVDMocG9ydCwgX1BPUlRfUENTX0RXMTJfTE4w MV9BLCBcCi0JCQkJCQkgICAgIF9QT1JUX1BDU19EVzEyX0xOMDFfQiwgXAotCQkJCQkJICAgICBf UE9SVF9QQ1NfRFcxMl9MTjAxX0MpCi0jZGVmaW5lIEJYVF9QT1JUX1BDU19EVzEyX0xOMjMocG9y dCkJX01NSU9fUE9SVDMocG9ydCwgX1BPUlRfUENTX0RXMTJfTE4yM19BLCBcCi0JCQkJCQkgICAg IF9QT1JUX1BDU19EVzEyX0xOMjNfQiwgXAotCQkJCQkJICAgICBfUE9SVF9QQ1NfRFcxMl9MTjIz X0MpCi0jZGVmaW5lIEJYVF9QT1JUX1BDU19EVzEyX0dSUChwb3J0KQlfTU1JT19QT1JUMyhwb3J0 LCBfUE9SVF9QQ1NfRFcxMl9HUlBfQSwgXAotCQkJCQkJICAgICBfUE9SVF9QQ1NfRFcxMl9HUlBf QiwgXAotCQkJCQkJICAgICBfUE9SVF9QQ1NfRFcxMl9HUlBfQykKKyNkZWZpbmUgQlhUX1BPUlRf UENTX0RXMTJfTE4wMShwaHksIGNoKQlfTU1JT19CWFRfUEhZX0NIKHBoeSwgY2gsIFwKKwkJCQkJ CQkgX1BPUlRfUENTX0RXMTJfTE4wMV9CLCBcCisJCQkJCQkJIF9QT1JUX1BDU19EVzEyX0xOMDFf QykKKyNkZWZpbmUgQlhUX1BPUlRfUENTX0RXMTJfTE4yMyhwaHksIGNoKQlfTU1JT19CWFRfUEhZ X0NIKHBoeSwgY2gsIFwKKwkJCQkJCQkgX1BPUlRfUENTX0RXMTJfTE4yM19CLCBcCisJCQkJCQkJ IF9QT1JUX1BDU19EVzEyX0xOMjNfQykKKyNkZWZpbmUgQlhUX1BPUlRfUENTX0RXMTJfR1JQKHBo eSwgY2gpCV9NTUlPX0JYVF9QSFlfQ0gocGh5LCBjaCwgXAorCQkJCQkJCSBfUE9SVF9QQ1NfRFcx Ml9HUlBfQiwgXAorCQkJCQkJCSBfUE9SVF9QQ1NfRFcxMl9HUlBfQykKIAogLyogQlhUIFBIWSBU WCByZWdpc3RlcnMgKi8KICNkZWZpbmUgX0JYVF9MQU5FX09GRlNFVChsYW5lKSAgICAgICAgICAg KCgobGFuZSkgPj4gMSkgKiAweDIwMCArCVwKQEAgLTEzODksMTIgKzEzOTQsMTIgQEAgZW51bSBz a2xfZGlzcF9wb3dlcl93ZWxscyB7CiAjZGVmaW5lIF9QT1JUX1RYX0RXMl9HUlBfQQkJMHgxNjJE MDgKICNkZWZpbmUgX1BPUlRfVFhfRFcyX0dSUF9CCQkweDZDRDA4CiAjZGVmaW5lIF9QT1JUX1RY X0RXMl9HUlBfQwkJMHg2Q0YwOAotI2RlZmluZSBCWFRfUE9SVF9UWF9EVzJfR1JQKHBvcnQpCV9N TUlPX1BPUlQzKHBvcnQsIF9QT1JUX1RYX0RXMl9HUlBfQSwgIFwKLQkJCQkJCSAgICAgX1BPUlRf VFhfRFcyX0dSUF9CLCAgXAotCQkJCQkJICAgICBfUE9SVF9UWF9EVzJfR1JQX0MpCi0jZGVmaW5l IEJYVF9QT1JUX1RYX0RXMl9MTjAocG9ydCkJX01NSU9fUE9SVDMocG9ydCwgX1BPUlRfVFhfRFcy X0xOMF9BLCAgXAotCQkJCQkJICAgICBfUE9SVF9UWF9EVzJfTE4wX0IsICBcCi0JCQkJCQkgICAg IF9QT1JUX1RYX0RXMl9MTjBfQykKKyNkZWZpbmUgQlhUX1BPUlRfVFhfRFcyX0xOMChwaHksIGNo KQlfTU1JT19CWFRfUEhZX0NIKHBoeSwgY2gsIFwKKwkJCQkJCQkgX1BPUlRfVFhfRFcyX0xOMF9C LCBcCisJCQkJCQkJIF9QT1JUX1RYX0RXMl9MTjBfQykKKyNkZWZpbmUgQlhUX1BPUlRfVFhfRFcy X0dSUChwaHksIGNoKQlfTU1JT19CWFRfUEhZX0NIKHBoeSwgY2gsIFwKKwkJCQkJCQkgX1BPUlRf VFhfRFcyX0dSUF9CLCBcCisJCQkJCQkJIF9QT1JUX1RYX0RXMl9HUlBfQykKICNkZWZpbmUgICBN QVJHSU5fMDAwX1NISUZUCQkxNgogI2RlZmluZSAgIE1BUkdJTl8wMDAJCQkoMHhGRiA8PCBNQVJH SU5fMDAwX1NISUZUKQogI2RlZmluZSAgIFVOSVFfVFJBTlNfU0NBTEVfU0hJRlQJOApAQCAtMTQw NiwxMiArMTQxMSwxMiBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKICNkZWZpbmUgX1BP UlRfVFhfRFczX0dSUF9BCQkweDE2MkQwQwogI2RlZmluZSBfUE9SVF9UWF9EVzNfR1JQX0IJCTB4 NkNEMEMKICNkZWZpbmUgX1BPUlRfVFhfRFczX0dSUF9DCQkweDZDRjBDCi0jZGVmaW5lIEJYVF9Q T1JUX1RYX0RXM19HUlAocG9ydCkJX01NSU9fUE9SVDMocG9ydCwgX1BPUlRfVFhfRFczX0dSUF9B LCAgXAotCQkJCQkJICAgICBfUE9SVF9UWF9EVzNfR1JQX0IsICBcCi0JCQkJCQkgICAgIF9QT1JU X1RYX0RXM19HUlBfQykKLSNkZWZpbmUgQlhUX1BPUlRfVFhfRFczX0xOMChwb3J0KQlfTU1JT19Q T1JUMyhwb3J0LCBfUE9SVF9UWF9EVzNfTE4wX0EsICBcCi0JCQkJCQkgICAgIF9QT1JUX1RYX0RX M19MTjBfQiwgIFwKLQkJCQkJCSAgICAgX1BPUlRfVFhfRFczX0xOMF9DKQorI2RlZmluZSBCWFRf UE9SVF9UWF9EVzNfTE4wKHBoeSwgY2gpCV9NTUlPX0JYVF9QSFlfQ0gocGh5LCBjaCwgXAorCQkJ CQkJCSBfUE9SVF9UWF9EVzNfTE4wX0IsIFwKKwkJCQkJCQkgX1BPUlRfVFhfRFczX0xOMF9DKQor I2RlZmluZSBCWFRfUE9SVF9UWF9EVzNfR1JQKHBoeSwgY2gpCV9NTUlPX0JYVF9QSFlfQ0gocGh5 LCBjaCwgXAorCQkJCQkJCSBfUE9SVF9UWF9EVzNfR1JQX0IsIFwKKwkJCQkJCQkgX1BPUlRfVFhf RFczX0dSUF9DKQogI2RlZmluZSAgIFNDQUxFX0RDT01QX01FVEhPRAkJKDEgPDwgMjYpCiAjZGVm aW5lICAgVU5JUVVFX1RSQU5HRV9FTl9NRVRIT0QJKDEgPDwgMjcpCiAKQEAgLTE0MjEsMTIgKzE0 MjYsMTIgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7CiAjZGVmaW5lIF9QT1JUX1RYX0RX NF9HUlBfQQkJMHgxNjJEMTAKICNkZWZpbmUgX1BPUlRfVFhfRFc0X0dSUF9CCQkweDZDRDEwCiAj ZGVmaW5lIF9QT1JUX1RYX0RXNF9HUlBfQwkJMHg2Q0YxMAotI2RlZmluZSBCWFRfUE9SVF9UWF9E VzRfTE4wKHBvcnQpCV9NTUlPX1BPUlQzKHBvcnQsIF9QT1JUX1RYX0RXNF9MTjBfQSwgIFwKLQkJ CQkJCSAgICAgX1BPUlRfVFhfRFc0X0xOMF9CLCAgXAotCQkJCQkJICAgICBfUE9SVF9UWF9EVzRf TE4wX0MpCi0jZGVmaW5lIEJYVF9QT1JUX1RYX0RXNF9HUlAocG9ydCkJX01NSU9fUE9SVDMocG9y dCwgX1BPUlRfVFhfRFc0X0dSUF9BLCAgXAotCQkJCQkJICAgICBfUE9SVF9UWF9EVzRfR1JQX0Is ICBcCi0JCQkJCQkgICAgIF9QT1JUX1RYX0RXNF9HUlBfQykKKyNkZWZpbmUgQlhUX1BPUlRfVFhf RFc0X0xOMChwaHksIGNoKQlfTU1JT19CWFRfUEhZX0NIKHBoeSwgY2gsIFwKKwkJCQkJCQkgX1BP UlRfVFhfRFc0X0xOMF9CLCBcCisJCQkJCQkJIF9QT1JUX1RYX0RXNF9MTjBfQykKKyNkZWZpbmUg QlhUX1BPUlRfVFhfRFc0X0dSUChwaHksIGNoKQlfTU1JT19CWFRfUEhZX0NIKHBoeSwgY2gsIFwK KwkJCQkJCQkgX1BPUlRfVFhfRFc0X0dSUF9CLCBcCisJCQkJCQkJIF9QT1JUX1RYX0RXNF9HUlBf QykKICNkZWZpbmUgICBERUVNUEhfU0hJRlQJCQkyNAogI2RlZmluZSAgIERFX0VNUEhBU0lTCQkJ KDB4RkYgPDwgREVFTVBIX1NISUZUKQogCkBAIC0xNDM1LDEwICsxNDQwLDEwIEBAIGVudW0gc2ts X2Rpc3BfcG93ZXJfd2VsbHMgewogI2RlZmluZSBfUE9SVF9UWF9EVzE0X0xOMF9DCQkweDZDOTM4 CiAjZGVmaW5lICAgTEFURU5DWV9PUFRJTV9TSElGVAkJMzAKICNkZWZpbmUgICBMQVRFTkNZX09Q VElNCQkJKDEgPDwgTEFURU5DWV9PUFRJTV9TSElGVCkKLSNkZWZpbmUgQlhUX1BPUlRfVFhfRFcx NF9MTihwb3J0LCBsYW5lKQlfTU1JTyhfUE9SVDMoKHBvcnQpLCBfUE9SVF9UWF9EVzE0X0xOMF9B LCAgIFwKLQkJCQkJCQlfUE9SVF9UWF9EVzE0X0xOMF9CLCAgIFwKLQkJCQkJCQlfUE9SVF9UWF9E VzE0X0xOMF9DKSArIFwKLQkJCQkJIF9CWFRfTEFORV9PRkZTRVQobGFuZSkpCisjZGVmaW5lIEJY VF9QT1JUX1RYX0RXMTRfTE4ocGh5LCBjaCwgbGFuZSkJCQkJXAorCV9NTUlPKF9CWFRfUEhZX0NI KHBoeSwgY2gsIF9QT1JUX1RYX0RXMTRfTE4wX0IsCQkJXAorCQkJCSAgIF9QT1JUX1RYX0RXMTRf TE4wX0MpICsJCVwKKwkgICAgICBfQlhUX0xBTkVfT0ZGU0VUKGxhbmUpKQogCiAvKiBVQUlNSSBz Y3JhdGNoIHBhZCByZWdpc3RlciAxICovCiAjZGVmaW5lIFVBSU1JX1NQUjEJCQlfTU1JTygweDRG MDc0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBpb19waHkuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwaW9fcGh5LmMKaW5kZXggNjcxMWUzYS4uMGEz ZDZhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBpb19waHkuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGlvX3BoeS5jCkBAIC0xNjcsMjYgKzE2 Nyw1OCBAQCBzdGF0aWMgdTMyIGJ4dF9waHlfcG9ydF9tYXNrKGNvbnN0IHN0cnVjdCBieHRfZGRp X3BoeV9pbmZvICpwaHlfaW5mbykKIAkJQklUKHBoeV9pbmZvLT5jaGFubmVsW0RQSU9fQ0gwXS5w b3J0KTsKIH0KIAordm9pZCBieHRfcG9ydF90b19waHlfY2hhbm5lbChlbnVtIHBvcnQgcG9ydCwK KwkJCSAgICAgZW51bSBkcGlvX3BoeSAqcGh5LCBlbnVtIGRwaW9fY2hhbm5lbCAqY2gpCit7CisJ Y29uc3Qgc3RydWN0IGJ4dF9kZGlfcGh5X2luZm8gKnBoeV9pbmZvOworCWludCBpOworCisJZm9y IChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYnh0X2RkaV9waHlfaW5mbyk7IGkrKykgeworCQlwaHlf aW5mbyA9ICZieHRfZGRpX3BoeV9pbmZvW2ldOworCisJCWlmIChwb3J0ID09IHBoeV9pbmZvLT5j aGFubmVsW0RQSU9fQ0gwXS5wb3J0KSB7CisJCQkqcGh5ID0gaTsKKwkJCSpjaCA9IERQSU9fQ0gw OworCQkJcmV0dXJuOworCQl9CisKKwkJaWYgKHBoeV9pbmZvLT5kdWFsX2NoYW5uZWwgJiYKKwkJ ICAgIHBvcnQgPT0gcGh5X2luZm8tPmNoYW5uZWxbRFBJT19DSDFdLnBvcnQpIHsKKwkJCSpwaHkg PSBpOworCQkJKmNoID0gRFBJT19DSDE7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwlXQVJOKDEs ICJQSFkgbm90IGZvdW5kIGZvciBQT1JUICVjIiwgcG9ydF9uYW1lKHBvcnQpKTsKKwkqcGh5ID0g RFBJT19QSFkwOworCSpjaCA9IERQSU9fQ0gwOworfQorCiB2b2lkIGJ4dF9kZGlfcGh5X3NldF9z aWduYWxfbGV2ZWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgZW51 bSBwb3J0IHBvcnQsIHUzMiBtYXJnaW4sIHUzMiBzY2FsZSwKIAkJCQkgIHUzMiBlbmFibGUsIHUz MiBkZWVtcGhhc2lzKQogewogCXUzMiB2YWw7CisJZW51bSBkcGlvX3BoeSBwaHk7CisJZW51bSBk cGlvX2NoYW5uZWwgY2g7CisKKwlieHRfcG9ydF90b19waHlfY2hhbm5lbChwb3J0LCAmcGh5LCAm Y2gpOwogCiAJLyoKIAkgKiBXaGlsZSB3ZSB3cml0ZSB0byB0aGUgZ3JvdXAgcmVnaXN0ZXIgdG8g cHJvZ3JhbSBhbGwgbGFuZXMgYXQgb25jZSB3ZQogCSAqIGNhbiByZWFkIG9ubHkgbGFuZSByZWdp c3RlcnMgYW5kIHdlIHBpY2sgbGFuZXMgMC8xIGZvciB0aGF0LgogCSAqLwotCXZhbCA9IEk5MTVf UkVBRChCWFRfUE9SVF9QQ1NfRFcxMF9MTjAxKHBvcnQpKTsKKwl2YWwgPSBJOTE1X1JFQUQoQlhU X1BPUlRfUENTX0RXMTBfTE4wMShwaHksIGNoKSk7CiAJdmFsICY9IH4oVFgyX1NXSU5HX0NBTENf SU5JVCB8IFRYMV9TV0lOR19DQUxDX0lOSVQpOwotCUk5MTVfV1JJVEUoQlhUX1BPUlRfUENTX0RX MTBfR1JQKHBvcnQpLCB2YWwpOworCUk5MTVfV1JJVEUoQlhUX1BPUlRfUENTX0RXMTBfR1JQKHBo eSwgY2gpLCB2YWwpOwogCi0JdmFsID0gSTkxNV9SRUFEKEJYVF9QT1JUX1RYX0RXMl9MTjAocG9y dCkpOworCXZhbCA9IEk5MTVfUkVBRChCWFRfUE9SVF9UWF9EVzJfTE4wKHBoeSwgY2gpKTsKIAl2 YWwgJj0gfihNQVJHSU5fMDAwIHwgVU5JUV9UUkFOU19TQ0FMRSk7CiAJdmFsIHw9IG1hcmdpbiA8 PCBNQVJHSU5fMDAwX1NISUZUIHwgc2NhbGUgPDwgVU5JUV9UUkFOU19TQ0FMRV9TSElGVDsKLQlJ OTE1X1dSSVRFKEJYVF9QT1JUX1RYX0RXMl9HUlAocG9ydCksIHZhbCk7CisJSTkxNV9XUklURShC WFRfUE9SVF9UWF9EVzJfR1JQKHBoeSwgY2gpLCB2YWwpOwogCi0JdmFsID0gSTkxNV9SRUFEKEJY VF9QT1JUX1RYX0RXM19MTjAocG9ydCkpOworCXZhbCA9IEk5MTVfUkVBRChCWFRfUE9SVF9UWF9E VzNfTE4wKHBoeSwgY2gpKTsKIAl2YWwgJj0gflNDQUxFX0RDT01QX01FVEhPRDsKIAlpZiAoZW5h YmxlKQogCQl2YWwgfD0gU0NBTEVfRENPTVBfTUVUSE9EOwpAQCAtMTk0LDE2ICsyMjYsMTYgQEAg dm9pZCBieHRfZGRpX3BoeV9zZXRfc2lnbmFsX2xldmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAlpZiAoKHZhbCAmIFVOSVFVRV9UUkFOR0VfRU5fTUVUSE9EKSAmJiAhKHZh bCAmIFNDQUxFX0RDT01QX01FVEhPRCkpCiAJCURSTV9FUlJPUigiRGlzYWJsZWQgc2NhbGluZyB3 aGlsZSBvdW5pcWV0cmFuZ2VubWV0aG9kIHdhcyBzZXQiKTsKIAotCUk5MTVfV1JJVEUoQlhUX1BP UlRfVFhfRFczX0dSUChwb3J0KSwgdmFsKTsKKwlJOTE1X1dSSVRFKEJYVF9QT1JUX1RYX0RXM19H UlAocGh5LCBjaCksIHZhbCk7CiAKLQl2YWwgPSBJOTE1X1JFQUQoQlhUX1BPUlRfVFhfRFc0X0xO MChwb3J0KSk7CisJdmFsID0gSTkxNV9SRUFEKEJYVF9QT1JUX1RYX0RXNF9MTjAocGh5LCBjaCkp OwogCXZhbCAmPSB+REVfRU1QSEFTSVM7CiAJdmFsIHw9IGRlZW1waGFzaXMgPDwgREVFTVBIX1NI SUZUOwotCUk5MTVfV1JJVEUoQlhUX1BPUlRfVFhfRFc0X0dSUChwb3J0KSwgdmFsKTsKKwlJOTE1 X1dSSVRFKEJYVF9QT1JUX1RYX0RXNF9HUlAocGh5LCBjaCksIHZhbCk7CiAKLQl2YWwgPSBJOTE1 X1JFQUQoQlhUX1BPUlRfUENTX0RXMTBfTE4wMShwb3J0KSk7CisJdmFsID0gSTkxNV9SRUFEKEJY VF9QT1JUX1BDU19EVzEwX0xOMDEocGh5LCBjaCkpOwogCXZhbCB8PSBUWDJfU1dJTkdfQ0FMQ19J TklUIHwgVFgxX1NXSU5HX0NBTENfSU5JVDsKLQlJOTE1X1dSSVRFKEJYVF9QT1JUX1BDU19EVzEw X0dSUChwb3J0KSwgdmFsKTsKKwlJOTE1X1dSSVRFKEJYVF9QT1JUX1BDU19EVzEwX0dSUChwaHks IGNoKSwgdmFsKTsKIH0KIAogYm9vbCBieHRfZGRpX3BoeV9pc19lbmFibGVkKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKQEAgLTI1Niw3ICsyODgsMTEgQEAgYm9vbCBieHRfZGRp X3BoeV9pc19lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogc3Rh dGljIHUzMiBieHRfZ2V0X2dyYyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVu dW0gZHBpb19waHkgcGh5KQogewotCXUzMiB2YWwgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUkVGX0RX NihwaHkpKTsKKwljb25zdCBzdHJ1Y3QgYnh0X2RkaV9waHlfaW5mbyAqcGh5X2luZm87CisJdTMy IHZhbDsKKworCXBoeV9pbmZvID0gJmJ4dF9kZGlfcGh5X2luZm9bcGh5XTsKKwl2YWwgPSBJOTE1 X1JFQUQoQlhUX1BPUlRfUkVGX0RXNihwaHkpKTsKIAogCXJldHVybiAodmFsICYgR1JDX0NPREVf TUFTSykgPj4gR1JDX0NPREVfU0hJRlQ7CiB9CkBAIC0yNjQsNiArMzAwLDEwIEBAIHN0YXRpYyB1 MzIgYnh0X2dldF9ncmMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIGRw aW9fcGh5IHBoeSkKIHN0YXRpYyB2b2lkIGJ4dF9waHlfd2FpdF9ncmNfZG9uZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJICBlbnVtIGRwaW9fcGh5IHBoeSkKIHsKKwlj b25zdCBzdHJ1Y3QgYnh0X2RkaV9waHlfaW5mbyAqcGh5X2luZm87CisKKwlwaHlfaW5mbyA9ICZi eHRfZGRpX3BoeV9pbmZvW3BoeV07CisKIAlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2 X3ByaXYsCiAJCQkJICAgIEJYVF9QT1JUX1JFRl9EVzMocGh5KSwKIAkJCQkgICAgR1JDX0RPTkUs IEdSQ19ET05FLApAQCAtNDg5LDggKzUyOSw4IEBAIGJvb2wgYnh0X2RkaV9waHlfdmVyaWZ5X3N0 YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAgIGdyY19jb2RlOwog CQltYXNrID0gR1JDX0NPREVfRkFTVF9NQVNLIHwgR1JDX0NPREVfU0xPV19NQVNLIHwKIAkJICAg ICAgIEdSQ19DT0RFX05PTV9NQVNLOwotCQlvayAmPSBfQ0hLKEJYVF9QT1JUX1JFRl9EVzYocGh5 KSwgbWFzaywgZ3JjX2NvZGUsCi0JCQkgICAgIkJYVF9QT1JUX1JFRl9EVzYoJWQpIiwgcGh5KTsK KwkJb2sgJj0gX0NISyhCWFRfUE9SVF9SRUZfRFc2KHBoeSksIG1hc2ssCisJCQkgICBncmNfY29k ZSwgIkJYVF9QT1JUX1JFRl9EVzYoJWQpIiwgcGh5KTsKIAogCQltYXNrID0gR1JDX0RJUyB8IEdS Q19SRFlfT1ZSRDsKIAkJb2sgJj0gX0NISyhCWFRfUE9SVF9SRUZfRFc4KHBoeSksIG1hc2ssIG1h c2ssCkBAIC01MjUsMTAgKzU2NSwxNCBAQCB2b2lkIGJ4dF9kZGlfcGh5X3NldF9sYW5lX29wdGlt X21hc2soc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqZHBvcnQgPSBlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpOwogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZHBvcnQtPmJhc2UuYmFzZS5k ZXYpOwogCWVudW0gcG9ydCBwb3J0ID0gZHBvcnQtPnBvcnQ7CisJZW51bSBkcGlvX3BoeSBwaHk7 CisJZW51bSBkcGlvX2NoYW5uZWwgY2g7CiAJaW50IGxhbmU7CiAKKwlieHRfcG9ydF90b19waHlf Y2hhbm5lbChwb3J0LCAmcGh5LCAmY2gpOworCiAJZm9yIChsYW5lID0gMDsgbGFuZSA8IDQ7IGxh bmUrKykgewotCQl1MzIgdmFsID0gSTkxNV9SRUFEKEJYVF9QT1JUX1RYX0RXMTRfTE4ocG9ydCwg bGFuZSkpOworCQl1MzIgdmFsID0gSTkxNV9SRUFEKEJYVF9QT1JUX1RYX0RXMTRfTE4ocGh5LCBj aCwgbGFuZSkpOwogCiAJCS8qCiAJCSAqIE5vdGUgdGhhdCBvbiBDSFYgdGhpcyBmbGFnIGlzIGNh bGxlZCBVUEFSLCBidXQgaGFzCkBAIC01MzgsNyArNTgyLDcgQEAgdm9pZCBieHRfZGRpX3BoeV9z ZXRfbGFuZV9vcHRpbV9tYXNrKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQlpZiAo bGFuZV9sYXRfb3B0aW1fbWFzayAmIEJJVChsYW5lKSkKIAkJCXZhbCB8PSBMQVRFTkNZX09QVElN OwogCi0JCUk5MTVfV1JJVEUoQlhUX1BPUlRfVFhfRFcxNF9MTihwb3J0LCBsYW5lKSwgdmFsKTsK KwkJSTkxNV9XUklURShCWFRfUE9SVF9UWF9EVzE0X0xOKHBoeSwgY2gsIGxhbmUpLCB2YWwpOwog CX0KIH0KIApAQCAtNTQ4LDEyICs1OTIsMTYgQEAgYnh0X2RkaV9waHlfZ2V0X2xhbmVfbGF0X29w dGltX21hc2soc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiAJc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqZHBvcnQgPSBlbmNfdG9fZGlnX3BvcnQoJmVuY29kZXItPmJhc2UpOwogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZHBvcnQtPmJhc2UuYmFz ZS5kZXYpOwogCWVudW0gcG9ydCBwb3J0ID0gZHBvcnQtPnBvcnQ7CisJZW51bSBkcGlvX3BoeSBw aHk7CisJZW51bSBkcGlvX2NoYW5uZWwgY2g7CiAJaW50IGxhbmU7CiAJdWludDhfdCBtYXNrOwog CisJYnh0X3BvcnRfdG9fcGh5X2NoYW5uZWwocG9ydCwgJnBoeSwgJmNoKTsKKwogCW1hc2sgPSAw OwogCWZvciAobGFuZSA9IDA7IGxhbmUgPCA0OyBsYW5lKyspIHsKLQkJdTMyIHZhbCA9IEk5MTVf UkVBRChCWFRfUE9SVF9UWF9EVzE0X0xOKHBvcnQsIGxhbmUpKTsKKwkJdTMyIHZhbCA9IEk5MTVf UkVBRChCWFRfUE9SVF9UWF9EVzE0X0xOKHBoeSwgY2gsIGxhbmUpKTsKIAogCQlpZiAodmFsICYg TEFURU5DWV9PUFRJTSkKIAkJCW1hc2sgfD0gQklUKGxhbmUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwbGxfbWdyLmMKaW5kZXggNjA1ZDBiNS4uMjE4NTNhMSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBsbF9tZ3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcGxsX21nci5jCkBAIC0xMzcxLDYgKzEzNzEsMTAgQEAgc3RhdGljIHZvaWQgYnh0 X2RkaV9wbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHsKIAl1 aW50MzJfdCB0ZW1wOwogCWVudW0gcG9ydCBwb3J0ID0gKGVudW0gcG9ydClwbGwtPmlkOwkvKiAx OjEgcG9ydC0+UExMIG1hcHBpbmcgKi8KKwllbnVtIGRwaW9fcGh5IHBoeTsKKwllbnVtIGRwaW9f Y2hhbm5lbCBjaDsKKworCWJ4dF9wb3J0X3RvX3BoeV9jaGFubmVsKHBvcnQsICZwaHksICZjaCk7 CiAKIAkvKiBOb24tU1NDIHJlZmVyZW5jZSAqLwogCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRf UExMX0VOQUJMRShwb3J0KSk7CkBAIC0xMzc4LDcyICsxMzgyLDcyIEBAIHN0YXRpYyB2b2lkIGJ4 dF9kZGlfcGxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJSTkx NV9XUklURShCWFRfUE9SVF9QTExfRU5BQkxFKHBvcnQpLCB0ZW1wKTsKIAogCS8qIERpc2FibGUg MTAgYml0IGNsb2NrICovCi0JdGVtcCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTExfRUJCXzQocG9y dCkpOworCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMX0VCQl80KHBoeSwgY2gpKTsKIAl0 ZW1wICY9IH5QT1JUX1BMTF8xMEJJVF9DTEtfRU5BQkxFOwotCUk5MTVfV1JJVEUoQlhUX1BPUlRf UExMX0VCQl80KHBvcnQpLCB0ZW1wKTsKKwlJOTE1X1dSSVRFKEJYVF9QT1JUX1BMTF9FQkJfNChw aHksIGNoKSwgdGVtcCk7CiAKIAkvKiBXcml0ZSBQMSAmIFAyICovCi0JdGVtcCA9IEk5MTVfUkVB RChCWFRfUE9SVF9QTExfRUJCXzAocG9ydCkpOworCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRf UExMX0VCQl8wKHBoeSwgY2gpKTsKIAl0ZW1wICY9IH4oUE9SVF9QTExfUDFfTUFTSyB8IFBPUlRf UExMX1AyX01BU0spOwogCXRlbXAgfD0gcGxsLT5jb25maWcuaHdfc3RhdGUuZWJiMDsKLQlJOTE1 X1dSSVRFKEJYVF9QT1JUX1BMTF9FQkJfMChwb3J0KSwgdGVtcCk7CisJSTkxNV9XUklURShCWFRf UE9SVF9QTExfRUJCXzAocGh5LCBjaCksIHRlbXApOwogCiAJLyogV3JpdGUgTTIgaW50ZWdlciAq LwotCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBvcnQsIDApKTsKKwl0ZW1wID0gSTkx NV9SRUFEKEJYVF9QT1JUX1BMTChwaHksIGNoLCAwKSk7CiAJdGVtcCAmPSB+UE9SVF9QTExfTTJf TUFTSzsKIAl0ZW1wIHw9IHBsbC0+Y29uZmlnLmh3X3N0YXRlLnBsbDA7Ci0JSTkxNV9XUklURShC WFRfUE9SVF9QTEwocG9ydCwgMCksIHRlbXApOworCUk5MTVfV1JJVEUoQlhUX1BPUlRfUExMKHBo eSwgY2gsIDApLCB0ZW1wKTsKIAogCS8qIFdyaXRlIE4gKi8KLQl0ZW1wID0gSTkxNV9SRUFEKEJY VF9QT1JUX1BMTChwb3J0LCAxKSk7CisJdGVtcCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocGh5 LCBjaCwgMSkpOwogCXRlbXAgJj0gflBPUlRfUExMX05fTUFTSzsKIAl0ZW1wIHw9IHBsbC0+Y29u ZmlnLmh3X3N0YXRlLnBsbDE7Ci0JSTkxNV9XUklURShCWFRfUE9SVF9QTEwocG9ydCwgMSksIHRl bXApOworCUk5MTVfV1JJVEUoQlhUX1BPUlRfUExMKHBoeSwgY2gsIDEpLCB0ZW1wKTsKIAogCS8q IFdyaXRlIE0yIGZyYWN0aW9uICovCi0JdGVtcCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocG9y dCwgMikpOworCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBoeSwgY2gsIDIpKTsKIAl0 ZW1wICY9IH5QT1JUX1BMTF9NMl9GUkFDX01BU0s7CiAJdGVtcCB8PSBwbGwtPmNvbmZpZy5od19z dGF0ZS5wbGwyOwotCUk5MTVfV1JJVEUoQlhUX1BPUlRfUExMKHBvcnQsIDIpLCB0ZW1wKTsKKwlJ OTE1X1dSSVRFKEJYVF9QT1JUX1BMTChwaHksIGNoLCAyKSwgdGVtcCk7CiAKIAkvKiBXcml0ZSBN MiBmcmFjdGlvbiBlbmFibGUgKi8KLQl0ZW1wID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTChwb3J0 LCAzKSk7CisJdGVtcCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocGh5LCBjaCwgMykpOwogCXRl bXAgJj0gflBPUlRfUExMX00yX0ZSQUNfRU5BQkxFOwogCXRlbXAgfD0gcGxsLT5jb25maWcuaHdf c3RhdGUucGxsMzsKLQlJOTE1X1dSSVRFKEJYVF9QT1JUX1BMTChwb3J0LCAzKSwgdGVtcCk7CisJ STkxNV9XUklURShCWFRfUE9SVF9QTEwocGh5LCBjaCwgMyksIHRlbXApOwogCiAJLyogV3JpdGUg Y29lZmYgKi8KLQl0ZW1wID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTChwb3J0LCA2KSk7CisJdGVt cCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocGh5LCBjaCwgNikpOwogCXRlbXAgJj0gflBPUlRf UExMX1BST1BfQ09FRkZfTUFTSzsKIAl0ZW1wICY9IH5QT1JUX1BMTF9JTlRfQ09FRkZfTUFTSzsK IAl0ZW1wICY9IH5QT1JUX1BMTF9HQUlOX0NUTF9NQVNLOwogCXRlbXAgfD0gcGxsLT5jb25maWcu aHdfc3RhdGUucGxsNjsKLQlJOTE1X1dSSVRFKEJYVF9QT1JUX1BMTChwb3J0LCA2KSwgdGVtcCk7 CisJSTkxNV9XUklURShCWFRfUE9SVF9QTEwocGh5LCBjaCwgNiksIHRlbXApOwogCiAJLyogV3Jp dGUgY2FsaWJyYXRpb24gdmFsICovCi0JdGVtcCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocG9y dCwgOCkpOworCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBoeSwgY2gsIDgpKTsKIAl0 ZW1wICY9IH5QT1JUX1BMTF9UQVJHRVRfQ05UX01BU0s7CiAJdGVtcCB8PSBwbGwtPmNvbmZpZy5o d19zdGF0ZS5wbGw4OwotCUk5MTVfV1JJVEUoQlhUX1BPUlRfUExMKHBvcnQsIDgpLCB0ZW1wKTsK KwlJOTE1X1dSSVRFKEJYVF9QT1JUX1BMTChwaHksIGNoLCA4KSwgdGVtcCk7CiAKLQl0ZW1wID0g STkxNV9SRUFEKEJYVF9QT1JUX1BMTChwb3J0LCA5KSk7CisJdGVtcCA9IEk5MTVfUkVBRChCWFRf UE9SVF9QTEwocGh5LCBjaCwgOSkpOwogCXRlbXAgJj0gflBPUlRfUExMX0xPQ0tfVEhSRVNIT0xE X01BU0s7CiAJdGVtcCB8PSBwbGwtPmNvbmZpZy5od19zdGF0ZS5wbGw5OwotCUk5MTVfV1JJVEUo QlhUX1BPUlRfUExMKHBvcnQsIDkpLCB0ZW1wKTsKKwlJOTE1X1dSSVRFKEJYVF9QT1JUX1BMTChw aHksIGNoLCA5KSwgdGVtcCk7CiAKLQl0ZW1wID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTChwb3J0 LCAxMCkpOworCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBoeSwgY2gsIDEwKSk7CiAJ dGVtcCAmPSB+UE9SVF9QTExfRENPX0FNUF9PVlJfRU5fSDsKIAl0ZW1wICY9IH5QT1JUX1BMTF9E Q09fQU1QX01BU0s7CiAJdGVtcCB8PSBwbGwtPmNvbmZpZy5od19zdGF0ZS5wbGwxMDsKLQlJOTE1 X1dSSVRFKEJYVF9QT1JUX1BMTChwb3J0LCAxMCksIHRlbXApOworCUk5MTVfV1JJVEUoQlhUX1BP UlRfUExMKHBoeSwgY2gsIDEwKSwgdGVtcCk7CiAKIAkvKiBSZWNhbGlicmF0ZSB3aXRoIG5ldyBz ZXR0aW5ncyAqLwotCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMX0VCQl80KHBvcnQpKTsK Kwl0ZW1wID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTF9FQkJfNChwaHksIGNoKSk7CiAJdGVtcCB8 PSBQT1JUX1BMTF9SRUNBTElCUkFURTsKLQlJOTE1X1dSSVRFKEJYVF9QT1JUX1BMTF9FQkJfNChw b3J0KSwgdGVtcCk7CisJSTkxNV9XUklURShCWFRfUE9SVF9QTExfRUJCXzQocGh5LCBjaCksIHRl bXApOwogCXRlbXAgJj0gflBPUlRfUExMXzEwQklUX0NMS19FTkFCTEU7CiAJdGVtcCB8PSBwbGwt PmNvbmZpZy5od19zdGF0ZS5lYmI0OwotCUk5MTVfV1JJVEUoQlhUX1BPUlRfUExMX0VCQl80KHBv cnQpLCB0ZW1wKTsKKwlJOTE1X1dSSVRFKEJYVF9QT1JUX1BMTF9FQkJfNChwaHksIGNoKSwgdGVt cCk7CiAKIAkvKiBFbmFibGUgUExMICovCiAJdGVtcCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTExf RU5BQkxFKHBvcnQpKTsKQEAgLTE0NTksMTEgKzE0NjMsMTEgQEAgc3RhdGljIHZvaWQgYnh0X2Rk aV9wbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkgKiBXaGls ZSB3ZSB3cml0ZSB0byB0aGUgZ3JvdXAgcmVnaXN0ZXIgdG8gcHJvZ3JhbSBhbGwgbGFuZXMgYXQg b25jZSB3ZQogCSAqIGNhbiByZWFkIG9ubHkgbGFuZSByZWdpc3RlcnMgYW5kIHdlIHBpY2sgbGFu ZXMgMC8xIGZvciB0aGF0LgogCSAqLwotCXRlbXAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUENTX0RX MTJfTE4wMShwb3J0KSk7CisJdGVtcCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QQ1NfRFcxMl9MTjAx KHBoeSwgY2gpKTsKIAl0ZW1wICY9IH5MQU5FX1NUQUdHRVJfTUFTSzsKIAl0ZW1wICY9IH5MQU5F U1RBR0dFUl9TVFJBUF9PVlJEOwogCXRlbXAgfD0gcGxsLT5jb25maWcuaHdfc3RhdGUucGNzZHcx MjsKLQlJOTE1X1dSSVRFKEJYVF9QT1JUX1BDU19EVzEyX0dSUChwb3J0KSwgdGVtcCk7CisJSTkx NV9XUklURShCWFRfUE9SVF9QQ1NfRFcxMl9HUlAocGh5LCBjaCksIHRlbXApOwogfQogCiBzdGF0 aWMgdm9pZCBieHRfZGRpX3BsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKQEAgLTE0ODUsNiArMTQ4OSwxMCBAQCBzdGF0aWMgYm9vbCBieHRfZGRpX3BsbF9nZXRf aHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWVudW0gcG9ydCBw b3J0ID0gKGVudW0gcG9ydClwbGwtPmlkOwkvKiAxOjEgcG9ydC0+UExMIG1hcHBpbmcgKi8KIAl1 aW50MzJfdCB2YWw7CiAJYm9vbCByZXQ7CisJZW51bSBkcGlvX3BoeSBwaHk7CisJZW51bSBkcGlv X2NoYW5uZWwgY2g7CisKKwlieHRfcG9ydF90b19waHlfY2hhbm5lbChwb3J0LCAmcGh5LCAmY2gp OwogCiAJaWYgKCFpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBQ T1dFUl9ET01BSU5fUExMUykpCiAJCXJldHVybiBmYWxzZTsKQEAgLTE0OTUsMzYgKzE1MDMsMzYg QEAgc3RhdGljIGJvb2wgYnh0X2RkaV9wbGxfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAlpZiAoISh2YWwgJiBQT1JUX1BMTF9FTkFCTEUpKQogCQlnb3Rv IG91dDsKIAotCWh3X3N0YXRlLT5lYmIwID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTF9FQkJfMChw b3J0KSk7CisJaHdfc3RhdGUtPmViYjAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMX0VCQl8wKHBo eSwgY2gpKTsKIAlod19zdGF0ZS0+ZWJiMCAmPSBQT1JUX1BMTF9QMV9NQVNLIHwgUE9SVF9QTExf UDJfTUFTSzsKIAotCWh3X3N0YXRlLT5lYmI0ID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTF9FQkJf NChwb3J0KSk7CisJaHdfc3RhdGUtPmViYjQgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMX0VCQl80 KHBoeSwgY2gpKTsKIAlod19zdGF0ZS0+ZWJiNCAmPSBQT1JUX1BMTF8xMEJJVF9DTEtfRU5BQkxF OwogCi0JaHdfc3RhdGUtPnBsbDAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBvcnQsIDApKTsK Kwlod19zdGF0ZS0+cGxsMCA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocGh5LCBjaCwgMCkpOwog CWh3X3N0YXRlLT5wbGwwICY9IFBPUlRfUExMX00yX01BU0s7CiAKLQlod19zdGF0ZS0+cGxsMSA9 IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocG9ydCwgMSkpOworCWh3X3N0YXRlLT5wbGwxID0gSTkx NV9SRUFEKEJYVF9QT1JUX1BMTChwaHksIGNoLCAxKSk7CiAJaHdfc3RhdGUtPnBsbDEgJj0gUE9S VF9QTExfTl9NQVNLOwogCi0JaHdfc3RhdGUtPnBsbDIgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExM KHBvcnQsIDIpKTsKKwlod19zdGF0ZS0+cGxsMiA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwocGh5 LCBjaCwgMikpOwogCWh3X3N0YXRlLT5wbGwyICY9IFBPUlRfUExMX00yX0ZSQUNfTUFTSzsKIAot CWh3X3N0YXRlLT5wbGwzID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTChwb3J0LCAzKSk7CisJaHdf c3RhdGUtPnBsbDMgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBoeSwgY2gsIDMpKTsKIAlod19z dGF0ZS0+cGxsMyAmPSBQT1JUX1BMTF9NMl9GUkFDX0VOQUJMRTsKIAotCWh3X3N0YXRlLT5wbGw2 ID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTChwb3J0LCA2KSk7CisJaHdfc3RhdGUtPnBsbDYgPSBJ OTE1X1JFQUQoQlhUX1BPUlRfUExMKHBoeSwgY2gsIDYpKTsKIAlod19zdGF0ZS0+cGxsNiAmPSBQ T1JUX1BMTF9QUk9QX0NPRUZGX01BU0sgfAogCQkJICBQT1JUX1BMTF9JTlRfQ09FRkZfTUFTSyB8 CiAJCQkgIFBPUlRfUExMX0dBSU5fQ1RMX01BU0s7CiAKLQlod19zdGF0ZS0+cGxsOCA9IEk5MTVf UkVBRChCWFRfUE9SVF9QTEwocG9ydCwgOCkpOworCWh3X3N0YXRlLT5wbGw4ID0gSTkxNV9SRUFE KEJYVF9QT1JUX1BMTChwaHksIGNoLCA4KSk7CiAJaHdfc3RhdGUtPnBsbDggJj0gUE9SVF9QTExf VEFSR0VUX0NOVF9NQVNLOwogCi0JaHdfc3RhdGUtPnBsbDkgPSBJOTE1X1JFQUQoQlhUX1BPUlRf UExMKHBvcnQsIDkpKTsKKwlod19zdGF0ZS0+cGxsOSA9IEk5MTVfUkVBRChCWFRfUE9SVF9QTEwo cGh5LCBjaCwgOSkpOwogCWh3X3N0YXRlLT5wbGw5ICY9IFBPUlRfUExMX0xPQ0tfVEhSRVNIT0xE X01BU0s7CiAKLQlod19zdGF0ZS0+cGxsMTAgPSBJOTE1X1JFQUQoQlhUX1BPUlRfUExMKHBvcnQs IDEwKSk7CisJaHdfc3RhdGUtPnBsbDEwID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BMTChwaHksIGNo LCAxMCkpOwogCWh3X3N0YXRlLT5wbGwxMCAmPSBQT1JUX1BMTF9EQ09fQU1QX09WUl9FTl9IIHwK IAkJCSAgIFBPUlRfUExMX0RDT19BTVBfTUFTSzsKIApAQCAtMTUzMywxMSArMTU0MSwxMSBAQCBz dGF0aWMgYm9vbCBieHRfZGRpX3BsbF9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogCSAqIGNhbiByZWFkIG9ubHkgbGFuZSByZWdpc3RlcnMuIFdlIGNvbmZp Z3VyZSBhbGwgbGFuZXMgdGhlIHNhbWUgd2F5LCBzbwogCSAqIGhlcmUganVzdCByZWFkIG91dCBs YW5lcyAwLzEgYW5kIG91dHB1dCBhIG5vdGUgaWYgbGFuZXMgMi8zIGRpZmZlci4KIAkgKi8KLQlo d19zdGF0ZS0+cGNzZHcxMiA9IEk5MTVfUkVBRChCWFRfUE9SVF9QQ1NfRFcxMl9MTjAxKHBvcnQp KTsKLQlpZiAoSTkxNV9SRUFEKEJYVF9QT1JUX1BDU19EVzEyX0xOMjMocG9ydCkpICE9IGh3X3N0 YXRlLT5wY3NkdzEyKQorCWh3X3N0YXRlLT5wY3NkdzEyID0gSTkxNV9SRUFEKEJYVF9QT1JUX1BD U19EVzEyX0xOMDEocGh5LCBjaCkpOworCWlmIChJOTE1X1JFQUQoQlhUX1BPUlRfUENTX0RXMTJf TE4yMyhwaHksIGNoKSkgIT0gaHdfc3RhdGUtPnBjc2R3MTIpCiAJCURSTV9ERUJVR19EUklWRVIo ImxhbmUgc3RhZ2dlciBjb25maWcgZGlmZmVyZW50IGZvciBsYW5lIDAxICglMDh4KSBhbmQgMjMg KCUwOHgpXG4iLAogCQkJCSBod19zdGF0ZS0+cGNzZHcxMiwKLQkJCQkgSTkxNV9SRUFEKEJYVF9Q T1JUX1BDU19EVzEyX0xOMjMocG9ydCkpKTsKKwkJCQkgSTkxNV9SRUFEKEJYVF9QT1JUX1BDU19E VzEyX0xOMjMocGh5LCBjaCkpKTsKIAlod19zdGF0ZS0+cGNzZHcxMiAmPSBMQU5FX1NUQUdHRVJf TUFTSyB8IExBTkVTVEFHR0VSX1NUUkFQX09WUkQ7CiAKIAlyZXQgPSB0cnVlOwotLSAKMi41LjUK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=