From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hans de Goede Subject: [PATCH 2/2] drm/i915: Deal with upside-down mounted LCD panels Date: Sun, 7 May 2017 11:10:56 +0200 Message-ID: <20170507091056.3406-2-hdegoede@redhat.com> References: <20170507091056.3406-1-hdegoede@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170507091056.3406-1-hdegoede@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter , Jani Nikula , =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= Cc: Hans de Goede , intel-gfx , dri-devel@lists.freedesktop.org, Bastien Nocera List-Id: dri-devel@lists.freedesktop.org T24gc29tZSAoQmF5IFRyYWlsKSBkZXZpY2VzIHRoZSBMQ0QgcGFuZWwgaXMgbW91bnRlZCB1cHNp ZGUtZG93bi4KClRoaXMgY29tbWl0IHVzZXMgdGhlIGNvZGUgdG8gcmVhZCBiYWNrIHRoZSBpbml0 aWFsIHJvdGF0aW9uIG9mIHRoZQpwcmltYXJ5IHBsYW5lIGluIGdldF9pbml0aWFsX3BsYW5lX2Nv bmZpZyBmcm9tIFZpbGxlIFN5cmphbGEncwoiZHJtL2ZiLWhlbHBlcjogSW5oZXJpdCByb3RhdGlv biB3aXAiIHBhdGNoIGFuZCB3aGVuIHJlLXVzaW5nIHRoZQppbml0aWFsIGZiIGl0IHN0b3JlcyB0 aGF0IGluIGludGVsX2NydGMuaW5pdGlhbF9yb3RhdGlvbi4KCkl0IGFkZHMgYW4gaW50ZWxfcGxh bmVfZ2V0X3JvdGF0aW9uIGhlbHBlciB3aGljaCBjb21iaW5lcyB0aGlzCmluaXRpYWxfcm90YXRp b24gd2l0aCBhbnkgcm90YXRpb24gcmVxdWVzdGVkIGJ5IHVzZXJzcGFjZSBhbmQKdXNlcyB0aGlz IGluIGFsbCBwbGFjZXMgd2hpY2ggbG9vayBhdCBhIHBsYW5lcyByb3RhdGlvbiwgdGh1cwp0cmFu c3BhcmVudGx5IGRlYWxpbmcgd2l0aCB1cHNpZGUtZG93biBMQ0QgcGFuZWxzIHdpdGhvdXQgcmVx dWlyaW5nCmFueSB1c2VyLXNwYWNlIG9yIGZiY29uIGNoYW5nZXMuCgpUaGlzIGZpeGVzIHRoZSBr ZXJuZWwgYm9vdCBtZXNzYWdlcyBzd2l0Y2hpbmcgZnJvbSBiZWluZyBzaG93biB0aGUgcmlnaHQK d2F5IHVwIGluIGVmaWZiIHRvIGJlaW5nIHNob3duIHVwc2lkZSBkb3duIGFzIHNvb24gYXMgYSBu YXRpdmUga21zIGRyaXZlcgpsb2FkcywgYXMgd2VsbCBhcyBhbnkgZ3JhcGhpY3MgZGlzcGxheWVk IGJ5IHVzZXJzcGFjZSBiZWluZyB1cHNpZGUtZG93bi4KCk5vdGUgdGhpcyBvbmx5IGRlYWxzIHdp dGggdXBzaWRlLWRvd24gTENEIHBhbmVscyAvIDE4MCBkZWdyZWVzCnJvdGF0aW9uIGFzIHRoZSBo YXJkd2FyZSBpbiBxdWVzdGlvbiBvbmx5IHN1cHBvcnRzIDE4MCBkZWdyZWVzCnJvdGF0aW9uIGlu IGhhcmR3YXJlLiBUaGUgb25lIG1vZGVsIGtub3duIHdoaWNoIGhhcyBhIHBhbmVsIG1vdW50ZWQK d2l0aCA5MC8yNzAgZGVncmVlcyByb3RhdGlvbiB3aWxsIG5lZWQgdG8gYmUgZnVsbHkgZGVhbHQg d2l0aCBpbgp1c2Vyc3BhY2UsIGV2ZW4gdGhlIGZpcm13YXJlIGJvb3Qgc2NyZWVuIC8gbWVudXMg YXJlIHJvdGF0ZWQgOTAgZGVncmVlcwpvbiB0aGlzIG9uZSBhbmQgdGhlcmUgc2ltcGx5IGlzIG5v dGhpbmcgdGhlIGtlcm5lbCBjYW4gZG8gYWJvdXQgdGhpcy4KCkJ1Z0xpbms6IGh0dHBzOi8vYnVn cy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTk0ODk0CkNjOiBWaWxsZSBTeXJqYWxh IDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogSGFucyBkZSBH b2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9hdG9taWNfcGxhbmUuYyB8ICA3ICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jICAgICAgfCA4MCArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgICB8IDMyICsrKysrKysrKysrKysKIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgICAgIHwgMTYgKysrKy0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgICAgICAgfCAxNCArKystLS0KIDYgZmlsZXMgY2hh bmdlZCwgMTEzIGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKaW5kZXggNDFmZDk0ZTYyZDNjLi5kYjY4MWJjNGE5 Y2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCkBAIC0xMzAs NiArMTMwLDcgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jaGVja193aXRoX3N0YXRlKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmRldik7CiAJc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSAqc3RhdGUgPSAmaW50ZWxfc3RhdGUtPmJhc2U7CiAJc3RydWN0IGludGVsX3BsYW5lICppbnRl bF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKKwl1bnNpZ25lZCBpbnQgcm90YXRpb24g PSBpbnRlbF9wbGFuZV9nZXRfcm90YXRpb24oaW50ZWxfc3RhdGUpOwogCWludCByZXQ7CiAKIAkv KgpAQCAtMTQ5LDcgKzE1MCw3IEBAIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2tfd2l0aF9z dGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlpbnRlbF9zdGF0ZS0+ Y2xpcC55MiA9CiAJCWNydGNfc3RhdGUtPmJhc2UuZW5hYmxlID8gY3J0Y19zdGF0ZS0+cGlwZV9z cmNfaCA6IDA7CiAKLQlpZiAoc3RhdGUtPmZiICYmIGRybV9yb3RhdGlvbl85MF9vcl8yNzAoc3Rh dGUtPnJvdGF0aW9uKSkgeworCWlmIChzdGF0ZS0+ZmIgJiYgZHJtX3JvdGF0aW9uXzkwX29yXzI3 MChyb3RhdGlvbikpIHsKIAkJc3RydWN0IGRybV9mb3JtYXRfbmFtZV9idWYgZm9ybWF0X25hbWU7 CiAKIAkJaWYgKHN0YXRlLT5mYi0+bW9kaWZpZXIgIT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQg JiYKQEAgLTE3OCw4ICsxNzksOCBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrX3dpdGhf c3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAKIAkvKiBDSFYgaWdu b3JlcyB0aGUgbWlycm9yIGJpdCB3aGVuIHRoZSByb3RhdGUgYml0IGlzIHNldCA6KCAqLwogCWlm IChJU19DSEVSUllWSUVXKGRldl9wcml2KSAmJgotCSAgICBzdGF0ZS0+cm90YXRpb24gJiBEUk1f Uk9UQVRFXzE4MCAmJgotCSAgICBzdGF0ZS0+cm90YXRpb24gJiBEUk1fUkVGTEVDVF9YKSB7CisJ ICAgIHJvdGF0aW9uICYgRFJNX1JPVEFURV8xODAgJiYKKwkgICAgcm90YXRpb24gJiBEUk1fUkVG TEVDVF9YKSB7CiAJCURSTV9ERUJVR19LTVMoIkNhbm5vdCByb3RhdGUgYW5kIHJlZmxlY3QgYXQg dGhlIHNhbWUgdGltZVxuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwppbmRleCAzNjY0NzA3OTUwYzcuLmQ0ODI0NzAyYmU0ZSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMjI4Niw3ICsyMjg2LDcgQEAgdm9pZCBp bnRlbF9hZGRfZmJfb2Zmc2V0cyhpbnQgKngsIGludCAqeSwKIAogewogCWNvbnN0IHN0cnVjdCBp bnRlbF9mcmFtZWJ1ZmZlciAqaW50ZWxfZmIgPSB0b19pbnRlbF9mcmFtZWJ1ZmZlcihzdGF0ZS0+ YmFzZS5mYik7Ci0JdW5zaWduZWQgaW50IHJvdGF0aW9uID0gc3RhdGUtPmJhc2Uucm90YXRpb247 CisJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gaW50ZWxfcGxhbmVfZ2V0X3JvdGF0aW9uKHN0YXRl KTsKIAogCWlmIChkcm1fcm90YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9uKSkgewogCQkqeCArPSBp bnRlbF9mYi0+cm90YXRlZFtwbGFuZV0ueDsKQEAgLTIzMzksNyArMjMzOSw3IEBAIHN0YXRpYyB1 MzIgaW50ZWxfYWRqdXN0X3RpbGVfb2Zmc2V0KGludCAqeCwgaW50ICp5LAogCWNvbnN0IHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmJhc2UucGxhbmUt PmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBzdGF0ZS0+YmFzZS5m YjsKIAl1bnNpZ25lZCBpbnQgY3BwID0gZmItPmZvcm1hdC0+Y3BwW3BsYW5lXTsKLQl1bnNpZ25l ZCBpbnQgcm90YXRpb24gPSBzdGF0ZS0+YmFzZS5yb3RhdGlvbjsKKwl1bnNpZ25lZCBpbnQgcm90 YXRpb24gPSBpbnRlbF9wbGFuZV9nZXRfcm90YXRpb24oc3RhdGUpOwogCXVuc2lnbmVkIGludCBw aXRjaCA9IGludGVsX2ZiX3BpdGNoKGZiLCBwbGFuZSwgcm90YXRpb24pOwogCiAJV0FSTl9PTihu ZXdfb2Zmc2V0ID4gb2xkX29mZnNldCk7CkBAIC0yNDQ0LDcgKzI0NDQsNyBAQCB1MzIgaW50ZWxf Y29tcHV0ZV90aWxlX29mZnNldChpbnQgKngsIGludCAqeSwKIHsKIAljb25zdCBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLnBsYW5lLT5kZXYp OwogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gc3RhdGUtPmJhc2UuZmI7Ci0J dW5zaWduZWQgaW50IHJvdGF0aW9uID0gc3RhdGUtPmJhc2Uucm90YXRpb247CisJdW5zaWduZWQg aW50IHJvdGF0aW9uID0gaW50ZWxfcGxhbmVfZ2V0X3JvdGF0aW9uKHN0YXRlKTsKIAlpbnQgcGl0 Y2ggPSBpbnRlbF9mYl9waXRjaChmYiwgcGxhbmUsIHJvdGF0aW9uKTsKIAl1MzIgYWxpZ25tZW50 OwogCkBAIC0yNzk4LDkgKzI3OTgsMTAgQEAgaW50ZWxfZmluZF9pbml0aWFsX3BsYW5lX29iaihz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKIAlyZXR1cm47CiAKIHZhbGlkX2ZiOgorCWlu dGVsX2NydGMtPmluaXRpYWxfcm90YXRpb24gPSBwbGFuZV9jb25maWctPnJvdGF0aW9uOwogCW11 dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAlpbnRlbF9zdGF0ZS0+dm1hID0KLQkJaW50 ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooZmIsIHByaW1hcnktPnN0YXRlLT5yb3RhdGlvbik7CisJ CWludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGZiLCBpbnRlbF9jcnRjLT5pbml0aWFsX3JvdGF0 aW9uKTsKIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAlpZiAoSVNfRVJSKGlu dGVsX3N0YXRlLT52bWEpKSB7CiAJCURSTV9FUlJPUigiZmFpbGVkIHRvIHBpbiBib290IGZiIG9u IHBpcGUgJWQ6ICVsaVxuIiwKQEAgLTI4ODIsNyArMjg4Myw3IEBAIHN0YXRpYyBpbnQgc2tsX2No ZWNrX21haW5fc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQog ewogCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxh bmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKLQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBw bGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBpbnRl bF9wbGFuZV9nZXRfcm90YXRpb24ocGxhbmVfc3RhdGUpOwogCWludCB4ID0gcGxhbmVfc3RhdGUt PmJhc2Uuc3JjLngxID4+IDE2OwogCWludCB5ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+ IDE2OwogCWludCB3ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4g MTY7CkBAIC0yOTQxLDcgKzI5NDIsNyBAQCBzdGF0aWMgaW50IHNrbF9jaGVja19tYWluX3N1cmZh Y2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHN0YXRpYyBpbnQgc2ts X2NoZWNrX252MTJfYXV4X3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9z dGF0ZSkKIHsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRl LT5iYXNlLmZiOwotCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNlLnJv dGF0aW9uOworCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IGludGVsX3BsYW5lX2dldF9yb3RhdGlv bihwbGFuZV9zdGF0ZSk7CiAJaW50IG1heF93aWR0aCA9IHNrbF9tYXhfcGxhbmVfd2lkdGgoZmIs IDEsIHJvdGF0aW9uKTsKIAlpbnQgbWF4X2hlaWdodCA9IDQwOTY7CiAJaW50IHggPSBwbGFuZV9z dGF0ZS0+YmFzZS5zcmMueDEgPj4gMTc7CkBAIC0yOTcwLDcgKzI5NzEsNyBAQCBzdGF0aWMgaW50 IHNrbF9jaGVja19udjEyX2F1eF9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUpCiBpbnQgc2tsX2NoZWNrX3BsYW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwotCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5l X3N0YXRlLT5iYXNlLnJvdGF0aW9uOworCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IGludGVsX3Bs YW5lX2dldF9yb3RhdGlvbihwbGFuZV9zdGF0ZSk7CiAJaW50IHJldDsKIAogCWlmICghcGxhbmVf c3RhdGUtPmJhc2UudmlzaWJsZSkKQEAgLTMwMTQsNyArMzAxNSw3IEBAIHN0YXRpYyB2b2lkIGk5 eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwKIAl1MzIg bGluZWFyX29mZnNldDsKIAl1MzIgZHNwY250cjsKIAlpOTE1X3JlZ190IHJlZyA9IERTUENOVFIo cGxhbmUpOwotCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0 aW9uOworCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IGludGVsX3BsYW5lX2dldF9yb3RhdGlvbihw bGFuZV9zdGF0ZSk7CiAJaW50IHggPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueDEgPj4gMTY7CiAJ aW50IHkgPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4gMTY7CiAKQEAgLTMxNDYsNyArMzE0 Nyw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBk cm1fcGxhbmUgKnByaW1hcnksCiAJdTMyIGxpbmVhcl9vZmZzZXQ7CiAJdTMyIGRzcGNudHI7CiAJ aTkxNV9yZWdfdCByZWcgPSBEU1BDTlRSKHBsYW5lKTsKLQl1bnNpZ25lZCBpbnQgcm90YXRpb24g PSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBp bnRlbF9wbGFuZV9nZXRfcm90YXRpb24ocGxhbmVfc3RhdGUpOwogCWludCB4ID0gcGxhbmVfc3Rh dGUtPmJhc2Uuc3JjLngxID4+IDE2OwogCWludCB5ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkx ID4+IDE2OwogCkBAIC0zMzczLDcgKzMzNzQsNyBAQCBzdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0 ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCWVudW0gcGxhbmVfaWQg cGxhbmVfaWQgPSB0b19pbnRlbF9wbGFuZShwbGFuZSktPmlkOwogCWVudW0gcGlwZSBwaXBlID0g dG9faW50ZWxfcGxhbmUocGxhbmUpLT5waXBlOwogCXUzMiBwbGFuZV9jdGw7Ci0JdW5zaWduZWQg aW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247CisJdW5zaWduZWQgaW50 IHJvdGF0aW9uID0gaW50ZWxfcGxhbmVfZ2V0X3JvdGF0aW9uKHBsYW5lX3N0YXRlKTsKIAl1MzIg c3RyaWRlID0gc2tsX3BsYW5lX3N0cmlkZShmYiwgMCwgcm90YXRpb24pOwogCXUzMiBzdXJmX2Fk ZHIgPSBwbGFuZV9zdGF0ZS0+bWFpbi5vZmZzZXQ7CiAJaW50IHNjYWxlcl9pZCA9IHBsYW5lX3N0 YXRlLT5zY2FsZXJfaWQ7CkBAIC00NzM1LDcgKzQ3MzYsNyBAQCBzdGF0aWMgaW50IHNrbF91cGRh dGVfc2NhbGVyX3BsYW5lKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCXJl dCA9IHNrbF91cGRhdGVfc2NhbGVyKGNydGNfc3RhdGUsIGZvcmNlX2RldGFjaCwKIAkJCQlkcm1f cGxhbmVfaW5kZXgoJmludGVsX3BsYW5lLT5iYXNlKSwKIAkJCQkmcGxhbmVfc3RhdGUtPnNjYWxl cl9pZCwKLQkJCQlwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbiwKKwkJCQlpbnRlbF9wbGFuZV9n ZXRfcm90YXRpb24ocGxhbmVfc3RhdGUpLAogCQkJCWRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0 ZS0+YmFzZS5zcmMpID4+IDE2LAogCQkJCWRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJh c2Uuc3JjKSA+PiAxNiwKIAkJCQlkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0 KSwKQEAgLTg3MzMsNiArODczNCw5IEBAIGk5eHhfZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkJcGxhbmVfY29uZmlnLT50aWxpbmcgPSBJOTE1X1RJ TElOR19YOwogCQkJZmItPm1vZGlmaWVyID0gSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ7CiAJCX0K KworCQlpZiAodmFsICYgRElTUFBMQU5FX1JPVEFURV8xODApCisJCQlwbGFuZV9jb25maWctPnJv dGF0aW9uID0gRFJNX1JPVEFURV8xODA7CiAJfQogCiAJcGl4ZWxfZm9ybWF0ID0gdmFsICYgRElT UFBMQU5FX1BJWEZPUk1BVF9NQVNLOwpAQCAtOTc4NCw2ICs5Nzg4LDkgQEAgc2t5bGFrZV9nZXRf aW5pdGlhbF9wbGFuZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCWdvdG8gZXJy b3I7CiAJfQogCisJaWYgKCh2YWwgJiBQTEFORV9DVExfUk9UQVRFX01BU0spID09IFBMQU5FX0NU TF9ST1RBVEVfMTgwKQorCQlwbGFuZV9jb25maWctPnJvdGF0aW9uID0gRFJNX1JPVEFURV8xODA7 CisKIAliYXNlID0gSTkxNV9SRUFEKFBMQU5FX1NVUkYocGlwZSwgMCkpICYgMHhmZmZmZjAwMDsK IAlwbGFuZV9jb25maWctPmJhc2UgPSBiYXNlOwogCkBAIC05ODcyLDYgKzk4NzksOSBAQCBpcm9u bGFrZV9nZXRfaW5pdGlhbF9wbGFuZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJ CQlwbGFuZV9jb25maWctPnRpbGluZyA9IEk5MTVfVElMSU5HX1g7CiAJCQlmYi0+bW9kaWZpZXIg PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDsKIAkJfQorCisJCWlmICh2YWwgJiBESVNQUExBTkVf Uk9UQVRFXzE4MCkKKwkJCXBsYW5lX2NvbmZpZy0+cm90YXRpb24gPSBEUk1fUk9UQVRFXzE4MDsK IAl9CiAKIAlwaXhlbF9mb3JtYXQgPSB2YWwgJiBESVNQUExBTkVfUElYRk9STUFUX01BU0s7CkBA IC0xMDg1Nyw3ICsxMDg2Nyw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX2N1cnNvcihzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsIHUzMiBiYXNlLAogCQlpZiAoSEFTX0RESShkZXZfcHJpdikpCiAJ CQljbnRsIHw9IENVUlNPUl9QSVBFX0NTQ19FTkFCTEU7CiAKLQkJaWYgKHBsYW5lX3N0YXRlLT5i YXNlLnJvdGF0aW9uICYgRFJNX1JPVEFURV8xODApCisJCWlmIChpbnRlbF9wbGFuZV9nZXRfcm90 YXRpb24ocGxhbmVfc3RhdGUpICYgRFJNX1JPVEFURV8xODApCiAJCQljbnRsIHw9IENVUlNPUl9S T1RBVEVfMTgwOwogCX0KIApAQCAtMTA4NzQsNiArMTA4ODQsMjUgQEAgc3RhdGljIHZvaWQgaTl4 eF91cGRhdGVfY3Vyc29yKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgdTMyIGJhc2UsCiAJaW50ZWxf Y3J0Yy0+Y3Vyc29yX2Jhc2UgPSBiYXNlOwogfQogCitzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2dl dF9jdXJzb3JfcG9zKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKKwkJCQkgICAgICBjb25zdCBzdHJ1 Y3QgZHJtX3BsYW5lX3N0YXRlICpjdXJzb3IsCisJCQkJICAgICAgaW50ICp4LCBpbnQgKnkpCit7 CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHJpbWFyeSA9IGNydGMtPnByaW1hcnktPnN0YXRl OworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK KworCSp4ID0gY3Vyc29yLT5jcnRjX3g7CisJKnkgPSBjdXJzb3ItPmNydGNfeTsKKworCWlmICgh cHJpbWFyeSkKKwkJcmV0dXJuOworCisJaWYgKGludGVsX2NydGMtPmluaXRpYWxfcm90YXRpb24g PT0gRFJNX1JPVEFURV8xODApIHsKKwkJKnggPSBwcmltYXJ5LT5jcnRjX3cgLSBjdXJzb3ItPmNy dGNfdyAtICp4OworCQkqeSA9IHByaW1hcnktPmNydGNfaCAtIGN1cnNvci0+Y3J0Y19oIC0gKnk7 CisJfQorfQorCiAvKiBJZiBuby1wYXJ0IG9mIHRoZSBjdXJzb3IgaXMgdmlzaWJsZSBvbiB0aGUg ZnJhbWVidWZmZXIsIHRoZW4gdGhlIEdQVSBtYXkgaGFuZy4uLiAqLwogc3RhdGljIHZvaWQgaW50 ZWxfY3J0Y191cGRhdGVfY3Vyc29yKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCQkgICAgIGNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCkBAIC0xMDg4MSwxMyAr MTA5MTAsMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y191cGRhdGVfY3Vyc29yKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAlzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0JaW50IHBpcGUg PSBpbnRlbF9jcnRjLT5waXBlOworCWludCB4LCB5LCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsK IAl1MzIgYmFzZSA9IGludGVsX2NydGMtPmN1cnNvcl9hZGRyOwogCXUzMiBwb3MgPSAwOwogCiAJ aWYgKHBsYW5lX3N0YXRlKSB7Ci0JCWludCB4ID0gcGxhbmVfc3RhdGUtPmJhc2UuY3J0Y194Owot CQlpbnQgeSA9IHBsYW5lX3N0YXRlLT5iYXNlLmNydGNfeTsKKwkJaW50ZWxfY3J0Y19nZXRfY3Vy c29yX3BvcyhjcnRjLCAmcGxhbmVfc3RhdGUtPmJhc2UsICZ4LCAmeSk7CiAKIAkJaWYgKHggPCAw KSB7CiAJCQlwb3MgfD0gQ1VSU09SX1BPU19TSUdOIDw8IENVUlNPUl9YX1NISUZUOwpAQCAtMTA5 MDMsNyArMTA5MzEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX3VwZGF0ZV9jdXJzb3Ioc3Ry dWN0IGRybV9jcnRjICpjcnRjLAogCiAJCS8qIElMSysgZG8gdGhpcyBhdXRvbWFnaWNhbGx5ICov CiAJCWlmIChIQVNfR01DSF9ESVNQTEFZKGRldl9wcml2KSAmJgotCQkgICAgcGxhbmVfc3RhdGUt PmJhc2Uucm90YXRpb24gJiBEUk1fUk9UQVRFXzE4MCkgeworCQkgICAgaW50ZWxfcGxhbmVfZ2V0 X3JvdGF0aW9uKHBsYW5lX3N0YXRlKSAmIERSTV9ST1RBVEVfMTgwKSB7CiAJCQliYXNlICs9IChw bGFuZV9zdGF0ZS0+YmFzZS5jcnRjX2ggKgogCQkJCSBwbGFuZV9zdGF0ZS0+YmFzZS5jcnRjX3cg LSAxKSAqIDQ7CiAJCX0KQEAgLTEyMTUyLDYgKzEyMTgwLDcgQEAgc3RhdGljIGludCBpbnRlbF9j cnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJZW51bSBwaXBlIHBpcGUgPSBp bnRlbF9jcnRjLT5waXBlOwogCXN0cnVjdCBpbnRlbF9mbGlwX3dvcmsgKndvcms7CiAJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCXVuc2lnbmVkIGludCByb3RhdGlvbjsKIAlib29s IG1taW9fZmxpcDsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Q7CiAJc3Ry dWN0IGk5MTVfdm1hICp2bWE7CkBAIC0xMjI1OCw3ICsxMjI4Nyw4IEBAIHN0YXRpYyBpbnQgaW50 ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJbW1pb19mbGlwID0g dXNlX21taW9fZmxpcChlbmdpbmUsIG9iaik7CiAKLQl2bWEgPSBpbnRlbF9waW5fYW5kX2ZlbmNl X2ZiX29iaihmYiwgcHJpbWFyeS0+c3RhdGUtPnJvdGF0aW9uKTsKKwlyb3RhdGlvbiA9IGludGVs X3BsYW5lX2dldF9yb3RhdGlvbihpbnRlbF9zdGF0ZSk7CisJdm1hID0gaW50ZWxfcGluX2FuZF9m ZW5jZV9mYl9vYmooZmIsIHJvdGF0aW9uKTsKIAlpZiAoSVNfRVJSKHZtYSkpIHsKIAkJcmV0ID0g UFRSX0VSUih2bWEpOwogCQlnb3RvIGNsZWFudXBfcGVuZGluZzsKQEAgLTEyMjY4LDcgKzEyMjk4 LDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCiAJaW50ZWxfc3RhdGUtPnZtYSA9IHZtYTsKIAogCXdvcmstPmd0dF9vZmZzZXQgPSBpOTE1 X2dndHRfb2Zmc2V0KHZtYSkgKyBpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldDsKLQl3b3JrLT5y b3RhdGlvbiA9IGNydGMtPnByaW1hcnktPnN0YXRlLT5yb3RhdGlvbjsKKwl3b3JrLT5yb3RhdGlv biA9IHJvdGF0aW9uOwogCiAJLyoKIAkgKiBUaGVyZSdzIHRoZSBwb3RlbnRpYWwgdGhhdCB0aGUg bmV4dCBmcmFtZSB3aWxsIG5vdCBiZSBjb21wYXRpYmxlIHdpdGgKQEAgLTE0ODQyLDkgKzE0ODcy LDEyIEBAIGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJ CQlyZXR1cm4gcmV0OwogCQl9CiAJfSBlbHNlIHsKKwkJdW5zaWduZWQgaW50IHJvdGF0aW9uOwog CQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAotCQl2bWEgPSBpbnRlbF9waW5fYW5kX2ZlbmNlX2Zi X29iaihmYiwgbmV3X3N0YXRlLT5yb3RhdGlvbik7CisJCXJvdGF0aW9uID0gaW50ZWxfcGxhbmVf Z2V0X3JvdGF0aW9uKAorCQkJCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShuZXdfc3RhdGUpKTsKKwkJ dm1hID0gaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooZmIsIHJvdGF0aW9uKTsKIAkJaWYgKElT X0VSUih2bWEpKSB7CiAJCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gcGluIG9iamVjdFxuIik7 CiAJCQlyZXR1cm4gUFRSX0VSUih2bWEpOwpAQCAtMTUwOTEsOSArMTUxMjQsMTIgQEAgaW50ZWxf bGVnYWN5X2N1cnNvcl91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQlnb3RvIG91 dF91bmxvY2s7CiAJCX0KIAl9IGVsc2UgeworCQl1bnNpZ25lZCBpbnQgcm90YXRpb247CiAJCXN0 cnVjdCBpOTE1X3ZtYSAqdm1hOwogCi0JCXZtYSA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2Jq KGZiLCBuZXdfcGxhbmVfc3RhdGUtPnJvdGF0aW9uKTsKKwkJcm90YXRpb24gPSBpbnRlbF9wbGFu ZV9nZXRfcm90YXRpb24oCisJCQkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKG5ld19wbGFuZV9zdGF0 ZSkpOworCQl2bWEgPSBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihmYiwgcm90YXRpb24pOwog CQlpZiAoSVNfRVJSKHZtYSkpIHsKIAkJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBwaW4gb2Jq ZWN0XG4iKTsKIApAQCAtMTY3MTQsNyArMTY3NTAsOSBAQCBpbnQgaW50ZWxfbW9kZXNldF9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJZHJtX21vZGVzZXRfdW5sb2NrX2FsbChkZXYpOwog CiAJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNydGMpIHsKLQkJc3RydWN0IGludGVsX2luaXRp YWxfcGxhbmVfY29uZmlnIHBsYW5lX2NvbmZpZyA9IHt9OworCQlzdHJ1Y3QgaW50ZWxfaW5pdGlh bF9wbGFuZV9jb25maWcgcGxhbmVfY29uZmlnID0geworCQkJLnJvdGF0aW9uID0gRFJNX1JPVEFU RV8wCisJCX07CiAKIAkJaWYgKCFjcnRjLT5hY3RpdmUpCiAJCQljb250aW51ZTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKaW5kZXggMzQ0ZjIzOGIyODNmLi40Yzk2MjViNjc2MDAgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCkBAIC00MTgsNiArNDE4LDcgQEAgc3RydWN0IGludGVsX2luaXRp YWxfcGxhbmVfY29uZmlnIHsKIAl1bnNpZ25lZCBpbnQgdGlsaW5nOwogCWludCBzaXplOwogCXUz MiBiYXNlOworCXVpbnQ4X3Qgcm90YXRpb247IC8qIERSTV9ST1RBVEVfKiAqLwogfTsKIAogI2Rl ZmluZSBTS0xfTUlOX1NSQ19XIDgKQEAgLTcwNCw2ICs3MDUsMTIgQEAgc3RydWN0IGludGVsX2Ny dGMgewogCiAJYXRvbWljX3QgdW5waW5fd29ya19jb3VudDsKIAorCS8qCisJICogSW5pdGlhbCBE Uk1fUk9UQVRFXyogYXMgcmVhZCBiYWNrIGZyb20gdGhlIGhhcmR3YXJlIGF0IGluaXQsIHRoaXMK KwkgKiBpcyB1c2VkIHRvIGNvbXBlbnNhdGUgZm9yIGUuZy4gdXBzaWRlLWRvd24gbW91bnRlZCBs Y2QtcGFuZWxzLgorCSAqLworCXVpbnQ4X3QgaW5pdGlhbF9yb3RhdGlvbjsKKwogCS8qIERpc3Bs YXkgc3VyZmFjZSBiYXNlIGFkZHJlc3MgYWRqdXN0ZW1lbnQgZm9yIHBhZ2VmbGlwcy4gTm90ZSB0 aGF0IG9uCiAJICogZ2VuNCsgdGhpcyBvbmx5IGFkanVzdHMgdXAgdG8gYSB0aWxlLCBvZmZzZXRz IHdpdGhpbiBhIHRpbGUgYXJlCiAJICogaGFuZGxlZCBpbiB0aGUgaHcgaXRzZWxmICh3aXRoIHRo ZSBUSUxFT0ZGIHJlZ2lzdGVyKS4gKi8KQEAgLTE0MDMsNiArMTQxMCwzMSBAQCBzdGF0aWMgaW5s aW5lIHUzMiBpbnRlbF9wbGFuZV9nZ3R0X29mZnNldChjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnN0YXRlKQogCXJldHVybiBpOTE1X2dndHRfb2Zmc2V0KHN0YXRlLT52bWEpOwogfQog CitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludAoraW50ZWxfcGxhbmVfZ2V0X3JvdGF0aW9uKGNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCit7CisJdW5zaWduZWQg aW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247CisJdW5zaWduZWQgaW50 IG5ld19yb3RhdGlvbiA9IERSTV9ST1RBVEVfMDsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YzsKKworCWlmICghcGxhbmVfc3RhdGUtPmJhc2UuY3J0YykKKwkJcmV0dXJuIHJvdGF0aW9u OworCisJLyogV2Ugb25seSBzdXBwb3J0IGFuIGluaXRpYWwgcm90YXRpb24gb2YgRFJNX1JPVEFU RV8xODAgZm9yIG5vdyAqLworCWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKHBsYW5lX3N0YXRl LT5iYXNlLmNydGMpOworCWlmIChpbnRlbF9jcnRjLT5pbml0aWFsX3JvdGF0aW9uICE9IERSTV9S T1RBVEVfMTgwKQorCQlyZXR1cm4gcm90YXRpb247CisKKwlzd2l0Y2ggKHJvdGF0aW9uICYgRFJN X1JPVEFURV9NQVNLKSB7CisJY2FzZSBEUk1fUk9UQVRFXzA6CW5ld19yb3RhdGlvbiA9IERSTV9S T1RBVEVfMTgwOwlicmVhazsKKwljYXNlIERSTV9ST1RBVEVfOTA6CW5ld19yb3RhdGlvbiA9IERS TV9ST1RBVEVfMjcwOwlicmVhazsKKwljYXNlIERSTV9ST1RBVEVfMTgwOgluZXdfcm90YXRpb24g PSBEUk1fUk9UQVRFXzA7CWJyZWFrOworCWNhc2UgRFJNX1JPVEFURV8yNzA6CW5ld19yb3RhdGlv biA9IERSTV9ST1RBVEVfOTA7CWJyZWFrOworCX0KKworCXJldHVybiAocm90YXRpb24gJiBEUk1f Uk9UQVRFX01BU0spIHwgbmV3X3JvdGF0aW9uOworfQorCiB1MzIgc2tsX3BsYW5lX2N0bF9mb3Jt YXQodWludDMyX3QgcGl4ZWxfZm9ybWF0KTsKIHUzMiBza2xfcGxhbmVfY3RsX3RpbGluZyh1aW50 NjRfdCBmYl9tb2RpZmllcik7CiB1MzIgc2tsX3BsYW5lX2N0bF9yb3RhdGlvbih1bnNpZ25lZCBp bnQgcm90YXRpb24pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJj LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwppbmRleCA4OWZlNWM4NDY0ZGYu LjdkZDJhMGFiNTZmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJj LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKQEAgLTc0Niw3ICs3NDYs NyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9mYmNfdXBkYXRlX3N0YXRlX2NhY2hlKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAogCQljYWNoZS0+Y3J0Yy5oc3dfYmR3X3BpeGVsX3JhdGUgPQogCQkJaWxr X3BpcGVfcGl4ZWxfcmF0ZShjcnRjX3N0YXRlKTsKIAotCWNhY2hlLT5wbGFuZS5yb3RhdGlvbiA9 IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOworCWNhY2hlLT5wbGFuZS5yb3RhdGlvbiA9IGlu dGVsX3BsYW5lX2dldF9yb3RhdGlvbihwbGFuZV9zdGF0ZSk7CiAJY2FjaGUtPnBsYW5lLnNyY193 ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7CiAJY2FjaGUt PnBsYW5lLnNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+ IDE2OwogCWNhY2hlLT5wbGFuZS52aXNpYmxlID0gcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDZhMjk3ODRkMmI0MS4uY2Q3YzYzNzkzZDBmIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTMxODYsNiArMzE4Niw3IEBAIHZvaWQgc2tsX2Rk Yl9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogc3RhdGlj IHVpbnQzMl90CiBza2xfcGxhbmVfZG93bnNjYWxlX2Ftb3VudChjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBzdGF0ZSkKIHsKKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBpbnRlbF9w bGFuZV9nZXRfcm90YXRpb24ocHN0YXRlKTsKIAl1aW50MzJfdCBkb3duc2NhbGVfaCwgZG93bnNj YWxlX3c7CiAJdWludDMyX3Qgc3JjX3csIHNyY19oLCBkc3RfdywgZHN0X2g7CiAKQEAgLTMxOTcs NyArMzE5OCw3IEBAIHNrbF9wbGFuZV9kb3duc2NhbGVfYW1vdW50KGNvbnN0IHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcHN0YXRlKQogCXNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwc3RhdGUt PmJhc2Uuc3JjKTsKIAlkc3RfdyA9IGRybV9yZWN0X3dpZHRoKCZwc3RhdGUtPmJhc2UuZHN0KTsK IAlkc3RfaCA9IGRybV9yZWN0X2hlaWdodCgmcHN0YXRlLT5iYXNlLmRzdCk7Ci0JaWYgKGRybV9y b3RhdGlvbl85MF9vcl8yNzAocHN0YXRlLT5iYXNlLnJvdGF0aW9uKSkKKwlpZiAoZHJtX3JvdGF0 aW9uXzkwX29yXzI3MChyb3RhdGlvbikpCiAJCXN3YXAoZHN0X3csIGRzdF9oKTsKIAogCWRvd25z Y2FsZV9oID0gbWF4KHNyY19oIC8gZHN0X2gsICh1aW50MzJfdClEUk1fUExBTkVfSEVMUEVSX05P X1NDQUxJTkcpOwpAQCAtMzIxMyw2ICszMjE0LDcgQEAgc2tsX3BsYW5lX3JlbGF0aXZlX2RhdGFf cmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCQkJICAgICBpbnQg eSkKIHsKIAlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3BzdGF0ZSA9IHRvX2ludGVs X3BsYW5lX3N0YXRlKHBzdGF0ZSk7CisJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gaW50ZWxfcGxh bmVfZ2V0X3JvdGF0aW9uKGludGVsX3BzdGF0ZSk7CiAJdWludDMyX3QgZG93bl9zY2FsZV9hbW91 bnQsIGRhdGFfcmF0ZTsKIAl1aW50MzJfdCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7CiAJc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmI7CkBAIC0zMjMyLDcgKzMyMzQsNyBAQCBza2xfcGxhbmVfcmVs YXRpdmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJ d2lkdGggPSBkcm1fcmVjdF93aWR0aCgmaW50ZWxfcHN0YXRlLT5iYXNlLnNyYykgPj4gMTY7CiAJ aGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZpbnRlbF9wc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsK IAotCWlmIChkcm1fcm90YXRpb25fOTBfb3JfMjcwKHBzdGF0ZS0+cm90YXRpb24pKQorCWlmIChk cm1fcm90YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9uKSkKIAkJc3dhcCh3aWR0aCwgaGVpZ2h0KTsK IAogCS8qIGZvciBwbGFuYXIgZm9ybWF0ICovCkBAIC0zMzAxLDYgKzMzMDMsNyBAQCBza2xfZGRi X21pbl9hbGxvYyhjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGUsCiB7CiAJc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwc3RhdGUtPmZiOwogCXN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqaW50ZWxfcHN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHN0YXRlKTsKKwl1 bnNpZ25lZCBpbnQgcm90YXRpb24gPSBpbnRlbF9wbGFuZV9nZXRfcm90YXRpb24oaW50ZWxfcHN0 YXRlKTsKIAl1aW50MzJfdCBzcmNfdywgc3JjX2g7CiAJdWludDMyX3QgbWluX3NjYW5saW5lcyA9 IDg7CiAJdWludDhfdCBwbGFuZV9icHA7CkBAIC0zMzIwLDcgKzMzMjMsNyBAQCBza2xfZGRiX21p bl9hbGxvYyhjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGUsCiAJc3JjX3cgPSBk cm1fcmVjdF93aWR0aCgmaW50ZWxfcHN0YXRlLT5iYXNlLnNyYykgPj4gMTY7CiAJc3JjX2ggPSBk cm1fcmVjdF9oZWlnaHQoJmludGVsX3BzdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwogCi0JaWYgKGRy bV9yb3RhdGlvbl85MF9vcl8yNzAocHN0YXRlLT5yb3RhdGlvbikpCisJaWYgKGRybV9yb3RhdGlv bl85MF9vcl8yNzAocm90YXRpb24pKQogCQlzd2FwKHNyY193LCBzcmNfaCk7CiAKIAkvKiBIYWx2 ZSBVViBwbGFuZSB3aWR0aCBhbmQgaGVpZ2h0IGZvciBOVjEyICovCkBAIC0zMzM0LDcgKzMzMzcs NyBAQCBza2xfZGRiX21pbl9hbGxvYyhjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3Rh dGUsCiAJZWxzZQogCQlwbGFuZV9icHAgPSBmYi0+Zm9ybWF0LT5jcHBbMF07CiAKLQlpZiAoZHJt X3JvdGF0aW9uXzkwX29yXzI3MChwc3RhdGUtPnJvdGF0aW9uKSkgeworCWlmIChkcm1fcm90YXRp b25fOTBfb3JfMjcwKHJvdGF0aW9uKSkgewogCQlzd2l0Y2ggKHBsYW5lX2JwcCkgewogCQljYXNl IDE6CiAJCQltaW5fc2NhbmxpbmVzID0gMzI7CkBAIC0zNTY4LDYgKzM1NzEsNyBAQCBzdGF0aWMg aW50IHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGUgPSAmaW50ZWxfcHN0YXRl LT5iYXNlOwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcHN0YXRlLT5mYjsKIAl1aW50 MzJfdCBsYXRlbmN5ID0gZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5W2xldmVsXTsKKwl1bnNpZ25l ZCBpbnQgcm90YXRpb24gPSBpbnRlbF9wbGFuZV9nZXRfcm90YXRpb24oaW50ZWxfcHN0YXRlKTsK IAl1aW50X2ZpeGVkXzE2XzE2X3QgbWV0aG9kMSwgbWV0aG9kMjsKIAl1aW50X2ZpeGVkXzE2XzE2 X3QgcGxhbmVfYmxvY2tzX3Blcl9saW5lOwogCXVpbnRfZml4ZWRfMTZfMTZfdCBzZWxlY3RlZF9y ZXN1bHQ7CkBAIC0zNjAzLDEzICszNjA3LDEzIEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxh bmVfd20oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXdpZHRoID0g ZHJtX3JlY3Rfd2lkdGgoJmludGVsX3BzdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwogCWhlaWdodCA9 IGRybV9yZWN0X2hlaWdodCgmaW50ZWxfcHN0YXRlLT5iYXNlLnNyYykgPj4gMTY7CiAKLQlpZiAo ZHJtX3JvdGF0aW9uXzkwX29yXzI3MChwc3RhdGUtPnJvdGF0aW9uKSkKKwlpZiAoZHJtX3JvdGF0 aW9uXzkwX29yXzI3MChyb3RhdGlvbikpCiAJCXN3YXAod2lkdGgsIGhlaWdodCk7CiAKIAljcHAg PSBmYi0+Zm9ybWF0LT5jcHBbMF07CiAJcGxhbmVfcGl4ZWxfcmF0ZSA9IHNrbF9hZGp1c3RlZF9w bGFuZV9waXhlbF9yYXRlKGNzdGF0ZSwgaW50ZWxfcHN0YXRlKTsKIAotCWlmIChkcm1fcm90YXRp b25fOTBfb3JfMjcwKHBzdGF0ZS0+cm90YXRpb24pKSB7CisJaWYgKGRybV9yb3RhdGlvbl85MF9v cl8yNzAocm90YXRpb24pKSB7CiAJCWludCBjcHAgPSAoZmItPmZvcm1hdC0+Zm9ybWF0ID09IERS TV9GT1JNQVRfTlYxMikgPwogCQkJZmItPmZvcm1hdC0+Y3BwWzFdIDoKIAkJCWZiLT5mb3JtYXQt PmNwcFswXTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKaW5kZXggOTQ4MWNhOWEzYWU3 Li5hZGQxNWYwYzFlMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nw cml0ZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCkBAIC0yMDgs NyArMjA4LDcgQEAgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUs CiAJdTMyIHBsYW5lX2N0bDsKIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtl eSAqa2V5ID0gJnBsYW5lX3N0YXRlLT5ja2V5OwogCXUzMiBzdXJmX2FkZHIgPSBwbGFuZV9zdGF0 ZS0+bWFpbi5vZmZzZXQ7Ci0JdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJh c2Uucm90YXRpb247CisJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gaW50ZWxfcGxhbmVfZ2V0X3Jv dGF0aW9uKHBsYW5lX3N0YXRlKTsKIAl1MzIgc3RyaWRlID0gc2tsX3BsYW5lX3N0cmlkZShmYiwg MCwgcm90YXRpb24pOwogCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7CiAJ aW50IGNydGNfeSA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC55MTsKQEAgLTM0MSw3ICszNDEsNyBA QCB2bHZfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRwbGFuZSwKIAllbnVtIHBsYW5l X2lkIHBsYW5lX2lkID0gaW50ZWxfcGxhbmUtPmlkOwogCXUzMiBzcHJjdGw7CiAJdTMyIHNwcnN1 cmZfb2Zmc2V0LCBsaW5lYXJfb2Zmc2V0OwotCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5l X3N0YXRlLT5iYXNlLnJvdGF0aW9uOworCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IGludGVsX3Bs YW5lX2dldF9yb3RhdGlvbihwbGFuZV9zdGF0ZSk7CiAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9z cHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKIAlpbnQgY3J0Y194ID0g cGxhbmVfc3RhdGUtPmJhc2UuZHN0LngxOwogCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+YmFz ZS5kc3QueTE7CkBAIC00ODYsNyArNDg2LDcgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKIAllbnVtIHBpcGUgcGlwZSA9IGludGVsX3BsYW5lLT5waXBlOwogCXUz MiBzcHJjdGwsIHNwcnNjYWxlID0gMDsKIAl1MzIgc3Byc3VyZl9vZmZzZXQsIGxpbmVhcl9vZmZz ZXQ7Ci0JdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247 CisJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gaW50ZWxfcGxhbmVfZ2V0X3JvdGF0aW9uKHBsYW5l X3N0YXRlKTsKIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0g JnBsYW5lX3N0YXRlLT5ja2V5OwogCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3Qu eDE7CiAJaW50IGNydGNfeSA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC55MTsKQEAgLTYyNCw3ICs2 MjQsNyBAQCBpbGtfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCWludCBw aXBlID0gaW50ZWxfcGxhbmUtPnBpcGU7CiAJdTMyIGR2c2NudHIsIGR2c3NjYWxlOwogCXUzMiBk dnNzdXJmX29mZnNldCwgbGluZWFyX29mZnNldDsKLQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBw bGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBpbnRl bF9wbGFuZV9nZXRfcm90YXRpb24ocGxhbmVfc3RhdGUpOwogCWNvbnN0IHN0cnVjdCBkcm1faW50 ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7CiAJaW50IGNydGNf eCA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC54MTsKIAlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUt PmJhc2UuZHN0LnkxOwpAQCAtNzQ4LDYgKzc0OCw3IEBAIGludGVsX2NoZWNrX3Nwcml0ZV9wbGFu ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CiAJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFu ZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9 IHN0YXRlLT5iYXNlLmZiOworCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IGludGVsX3BsYW5lX2dl dF9yb3RhdGlvbihzdGF0ZSk7CiAJaW50IGNydGNfeCwgY3J0Y195OwogCXVuc2lnbmVkIGludCBj cnRjX3csIGNydGNfaDsKIAl1aW50MzJfdCBzcmNfeCwgc3JjX3ksIHNyY193LCBzcmNfaDsKQEAg LTgwMiw4ICs4MDMsNyBAQCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCiAJICogY29vcmRpbmF0ZXMgYW5kIHNpemVzLiBXZSBwcm9iYWJseSBuZWVkIHNv bWUgd2F5IHRvIGRlY2lkZSB3aGV0aGVyCiAJICogbW9yZSBzdHJpY3QgY2hlY2tpbmcgc2hvdWxk IGJlIGRvbmUgaW5zdGVhZC4KIAkgKi8KLQlkcm1fcmVjdF9yb3RhdGUoc3JjLCBmYi0+d2lkdGgg PDwgMTYsIGZiLT5oZWlnaHQgPDwgMTYsCi0JCQlzdGF0ZS0+YmFzZS5yb3RhdGlvbik7CisJZHJt X3JlY3Rfcm90YXRlKHNyYywgZmItPndpZHRoIDw8IDE2LCBmYi0+aGVpZ2h0IDw8IDE2LCByb3Rh dGlvbik7CiAKIAloc2NhbGUgPSBkcm1fcmVjdF9jYWxjX2hzY2FsZV9yZWxheGVkKHNyYywgZHN0 LCBtaW5fc2NhbGUsIG1heF9zY2FsZSk7CiAJQlVHX09OKGhzY2FsZSA8IDApOwpAQCAtODQ0LDcg Kzg0NCw3IEBAIGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKIAkJCQkgICAgIGRybV9yZWN0X2hlaWdodChkc3QpICogdnNjYWxlIC0gZHJtX3JlY3RfaGVp Z2h0KHNyYykpOwogCiAJCWRybV9yZWN0X3JvdGF0ZV9pbnYoc3JjLCBmYi0+d2lkdGggPDwgMTYs IGZiLT5oZWlnaHQgPDwgMTYsCi0JCQkJICAgIHN0YXRlLT5iYXNlLnJvdGF0aW9uKTsKKwkJCQkg ICAgcm90YXRpb24pOwogCiAJCS8qIHNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgdGhlIHNyYyB2 aWV3cG9ydCB3YXNuJ3QgZW5sYXJnZWQgKi8KIAkJV0FSTl9PTihzcmMtPngxIDwgKGludCkgc3Rh dGUtPmJhc2Uuc3JjX3ggfHwKLS0gCjIuMTIuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==