From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hans de Goede Subject: [PATCH v4] drm/i915: Deal with upside-down mounted LCD panels Date: Fri, 25 Aug 2017 16:57:30 +0200 Message-ID: <20170825145730.26924-2-hdegoede@redhat.com> References: <20170825145730.26924-1-hdegoede@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170825145730.26924-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 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 b2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KLS0tCkNoYW5nZXMgaW4gdjI6Ci1GaXggYnJvd24g cGFwZXJiYWcgYnVnIHMvdmFsICYgbWFzay92YWwgJiB+bWFzay8gdG8gY2xlYXIgb2xkIHJvdGF0 aW9uIGJpdHMKCkNoYW5nZXMgaW4gdjM6Ci1SZWJhc2Ugb24gY3VycmVudCAoMjAxNyBhdWcuIDIy KSBkcm0taW50ZWwtbmV4dC1xdWV1ZWQKCkNoYW5nZXMgaW4gdjQ6Ci1GaXggY29tcGlsZXIgd2Fy bmluZyBmcm9tIHVuaGFuZGxlZCBjYXNlIGluIGludGVsX2ZpeHVwX2luaXRpYWxfc3VicGl4ZWxf b3JkZXIKLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYyB8ICA3 ICsrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgfCA5MyArKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCAgICAgICAgICB8IDMyICsrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9mYmMuYyAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j ICAgICAgICAgICB8ICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAg ICAgICB8IDE0ICsrLS0tCiA2IGZpbGVzIGNoYW5nZWQsIDEyMyBpbnNlcnRpb25zKCspLCAzMSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9t aWNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCmlu ZGV4IGVlNzZmYWI3YmI2Zi4uODI0YWFiYTUxMTJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdG9taWNfcGxhbmUuYwpAQCAtMTE2LDYgKzExNiw3IEBAIGludCBpbnRlbF9wbGFuZV9h dG9taWNfY2hlY2tfd2l0aF9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxh bmUpOwogCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KIAkJ JmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKKwl1bnNpZ25lZCBpbnQgcm90YXRpb24g PSBpbnRlbF9wbGFuZV9nZXRfcm90YXRpb24oc3RhdGUpOwogCWludCByZXQ7CiAKIAkvKgpAQCAt MTM1LDcgKzEzNiw3IEBAIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2tfd2l0aF9zdGF0ZShz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlpbnRlbF9zdGF0ZS0+Y2xpcC55 MiA9CiAJCWNydGNfc3RhdGUtPmJhc2UuZW5hYmxlID8gY3J0Y19zdGF0ZS0+cGlwZV9zcmNfaCA6 IDA7CiAKLQlpZiAoc3RhdGUtPmZiICYmIGRybV9yb3RhdGlvbl85MF9vcl8yNzAoc3RhdGUtPnJv dGF0aW9uKSkgeworCWlmIChzdGF0ZS0+ZmIgJiYgZHJtX3JvdGF0aW9uXzkwX29yXzI3MChyb3Rh dGlvbikpIHsKIAkJc3RydWN0IGRybV9mb3JtYXRfbmFtZV9idWYgZm9ybWF0X25hbWU7CiAKIAkJ aWYgKHN0YXRlLT5mYi0+bW9kaWZpZXIgIT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQgJiYKQEAg LTE2NCw4ICsxNjUsOCBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrX3dpdGhfc3RhdGUo c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAKIAkvKiBDSFYgaWdub3JlcyB0 aGUgbWlycm9yIGJpdCB3aGVuIHRoZSByb3RhdGUgYml0IGlzIHNldCA6KCAqLwogCWlmIChJU19D SEVSUllWSUVXKGRldl9wcml2KSAmJgotCSAgICBzdGF0ZS0+cm90YXRpb24gJiBEUk1fTU9ERV9S T1RBVEVfMTgwICYmCi0JICAgIHN0YXRlLT5yb3RhdGlvbiAmIERSTV9NT0RFX1JFRkxFQ1RfWCkg eworCSAgICByb3RhdGlvbiAmIERSTV9NT0RFX1JPVEFURV8xODAgJiYKKwkgICAgcm90YXRpb24g JiBEUk1fTU9ERV9SRUZMRUNUX1gpIHsKIAkJRFJNX0RFQlVHX0tNUygiQ2Fubm90IHJvdGF0ZSBh bmQgcmVmbGVjdCBhdCB0aGUgc2FtZSB0aW1lXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IGVkYTFhYTBjMzQzYy4uYTVmZTlm OWYxYmYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC0yMjc3LDcgKzIy NzcsNyBAQCB2b2lkIGludGVsX2FkZF9mYl9vZmZzZXRzKGludCAqeCwgaW50ICp5LAogCiB7CiAJ Y29uc3Qgc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiA9IHRvX2ludGVsX2ZyYW1l YnVmZmVyKHN0YXRlLT5iYXNlLmZiKTsKLQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBzdGF0ZS0+ YmFzZS5yb3RhdGlvbjsKKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBpbnRlbF9wbGFuZV9nZXRf cm90YXRpb24oJnN0YXRlLT5iYXNlKTsKIAogCWlmIChkcm1fcm90YXRpb25fOTBfb3JfMjcwKHJv dGF0aW9uKSkgewogCQkqeCArPSBpbnRlbF9mYi0+cm90YXRlZFtwbGFuZV0ueDsKQEAgLTIzMzAs NyArMjMzMCw3IEBAIHN0YXRpYyB1MzIgaW50ZWxfYWRqdXN0X3RpbGVfb2Zmc2V0KGludCAqeCwg aW50ICp5LAogCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoc3RhdGUtPmJhc2UucGxhbmUtPmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIgPSBzdGF0ZS0+YmFzZS5mYjsKIAl1bnNpZ25lZCBpbnQgY3BwID0gZmItPmZvcm1hdC0+ Y3BwW3BsYW5lXTsKLQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBzdGF0ZS0+YmFzZS5yb3RhdGlv bjsKKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBpbnRlbF9wbGFuZV9nZXRfcm90YXRpb24oJnN0 YXRlLT5iYXNlKTsKIAl1bnNpZ25lZCBpbnQgcGl0Y2ggPSBpbnRlbF9mYl9waXRjaChmYiwgcGxh bmUsIHJvdGF0aW9uKTsKIAogCVdBUk5fT04obmV3X29mZnNldCA+IG9sZF9vZmZzZXQpOwpAQCAt MjQzNCw3ICsyNDM0LDcgQEAgdTMyIGludGVsX2NvbXB1dGVfdGlsZV9vZmZzZXQoaW50ICp4LCBp bnQgKnksCiAJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5l KHN0YXRlLT5iYXNlLnBsYW5lKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGludGVsX3BsYW5lLT5iYXNlLmRldik7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIgPSBzdGF0ZS0+YmFzZS5mYjsKLQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBz dGF0ZS0+YmFzZS5yb3RhdGlvbjsKKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBpbnRlbF9wbGFu ZV9nZXRfcm90YXRpb24oJnN0YXRlLT5iYXNlKTsKIAlpbnQgcGl0Y2ggPSBpbnRlbF9mYl9waXRj aChmYiwgcGxhbmUsIHJvdGF0aW9uKTsKIAl1MzIgYWxpZ25tZW50OwogCkBAIC0yNzkyLDYgKzI3 OTIsNDYgQEAgaW50ZWxfc2V0X3BsYW5lX3Zpc2libGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCiB9CiAKIHN0YXRpYyB2b2lkCitpbnRlbF9maXh1cF9pbml0aWFsX3N1YnBp eGVsX29yZGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJICAgdTggaW5p dGlhbF9yb3RhdGlvbikKK3sKKwllbnVtIHN1YnBpeGVsX29yZGVyIG5ld19vcmRlcjsKKworCS8q IFdlIG9ubHkgc3VwcG9ydCBhbiBpbml0aWFsIHJvdGF0aW9uIG9mIERSTV9NT0RFX1JPVEFURV8x ODAgZm9yIG5vdyAqLworCWlmIChpbml0aWFsX3JvdGF0aW9uICE9IERSTV9NT0RFX1JPVEFURV8x ODApCisJCXJldHVybjsKKworCXN3aXRjaCAoY29ubmVjdG9yLT5kaXNwbGF5X2luZm8uc3VicGl4 ZWxfb3JkZXIpIHsKKwljYXNlIFN1YlBpeGVsSG9yaXpvbnRhbFJHQjogIG5ld19vcmRlciA9IFN1 YlBpeGVsSG9yaXpvbnRhbEJHUjsgIGJyZWFrOworCWNhc2UgU3ViUGl4ZWxIb3Jpem9udGFsQkdS OiAgbmV3X29yZGVyID0gU3ViUGl4ZWxIb3Jpem9udGFsUkdCOyAgYnJlYWs7CisJY2FzZSBTdWJQ aXhlbFZlcnRpY2FsUkdCOiAgICBuZXdfb3JkZXIgPSBTdWJQaXhlbFZlcnRpY2FsQkdSOyAgICBi cmVhazsKKwljYXNlIFN1YlBpeGVsVmVydGljYWxCR1I6ICAgIG5ld19vcmRlciA9IFN1YlBpeGVs VmVydGljYWxSR0I7ICAgIGJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybjsgLyogTGVhdmUgbm9u ZSAvIHVua293biBzdWJwaXhlbCBvcmRlciB1bmNoYW5nZWQuICovCisJfQorCisJY29ubmVjdG9y LT5kaXNwbGF5X2luZm8uc3VicGl4ZWxfb3JkZXIgPSBuZXdfb3JkZXI7Cit9CisKK3N0YXRpYyB2 b2lkCitpbnRlbF9zZXRfaW5pdGlhbF9yb3RhdGlvbihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YywgdTggcm90YXRpb24pCit7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSA9IGlu dGVsX2NydGMtPmJhc2Uuc3RhdGU7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2Ny dGMtPmJhc2UuZGV2OworCXN0cnVjdCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlciBjb25uX2l0ZXI7 CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm47CisKKwlpbnRlbF9jcnRjLT5pbml0aWFsX3Jv dGF0aW9uID0gcm90YXRpb247CisKKwlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9iZWdpbihkZXYs ICZjb25uX2l0ZXIpOworCWRybV9mb3JfZWFjaF9jb25uZWN0b3JfaXRlcihjb25uLCAmY29ubl9p dGVyKSB7CisJCWlmIChzdGF0ZS0+Y29ubmVjdG9yX21hc2sgJiAoMSA8PCBkcm1fY29ubmVjdG9y X2luZGV4KGNvbm4pKSkKKwkJCWludGVsX2ZpeHVwX2luaXRpYWxfc3VicGl4ZWxfb3JkZXIoY29u biwgcm90YXRpb24pOworCX0KKwlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9lbmQoJmNvbm5faXRl cik7Cit9CisKK3N0YXRpYyB2b2lkCiBpbnRlbF9maW5kX2luaXRpYWxfcGxhbmVfb2JqKHN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAogCQkJICAgICBzdHJ1Y3QgaW50ZWxfaW5pdGlhbF9w bGFuZV9jb25maWcgKnBsYW5lX2NvbmZpZykKIHsKQEAgLTI4NTgsOSArMjg5OCwxMSBAQCBpbnRl bF9maW5kX2luaXRpYWxfcGxhbmVfb2JqKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAog CXJldHVybjsKIAogdmFsaWRfZmI6CisJaW50ZWxfc2V0X2luaXRpYWxfcm90YXRpb24oaW50ZWxf Y3J0YywgcGxhbmVfY29uZmlnLT5yb3RhdGlvbik7CisKIAltdXRleF9sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7CiAJaW50ZWxfc3RhdGUtPnZtYSA9Ci0JCWludGVsX3Bpbl9hbmRfZmVuY2VfZmJf b2JqKGZiLCBwcmltYXJ5LT5zdGF0ZS0+cm90YXRpb24pOworCQlpbnRlbF9waW5fYW5kX2ZlbmNl X2ZiX29iaihmYiwgaW50ZWxfY3J0Yy0+aW5pdGlhbF9yb3RhdGlvbik7CiAJbXV0ZXhfdW5sb2Nr KCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJaWYgKElTX0VSUihpbnRlbF9zdGF0ZS0+dm1hKSkgewog CQlEUk1fRVJST1IoImZhaWxlZCB0byBwaW4gYm9vdCBmYiBvbiBwaXBlICVkOiAlbGlcbiIsCkBA IC0yOTg2LDcgKzMwMjgsNyBAQCBzdGF0aWMgYm9vbCBza2xfY2hlY2tfbWFpbl9jY3NfY29vcmRp bmF0ZXMoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZQogc3RhdGljIGludCBz a2xfY2hlY2tfbWFpbl9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpCiB7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+ YmFzZS5mYjsKLQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3Rh dGlvbjsKKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBpbnRlbF9wbGFuZV9nZXRfcm90YXRpb24o JnBsYW5lX3N0YXRlLT5iYXNlKTsKIAlpbnQgeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy54MSA+ PiAxNjsKIAlpbnQgeSA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy55MSA+PiAxNjsKIAlpbnQgdyA9 IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwpAQCAtMzA2NCw3 ICszMTA2LDcgQEAgc3RhdGljIGludCBza2xfY2hlY2tfbWFpbl9zdXJmYWNlKHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiBzdGF0aWMgaW50IHNrbF9jaGVja19udjEyX2F1 eF9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiB7CiAJY29u c3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKLQl1 bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKKwl1bnNp Z25lZCBpbnQgcm90YXRpb24gPSBpbnRlbF9wbGFuZV9nZXRfcm90YXRpb24oJnBsYW5lX3N0YXRl LT5iYXNlKTsKIAlpbnQgbWF4X3dpZHRoID0gc2tsX21heF9wbGFuZV93aWR0aChmYiwgMSwgcm90 YXRpb24pOwogCWludCBtYXhfaGVpZ2h0ID0gNDA5NjsKIAlpbnQgeCA9IHBsYW5lX3N0YXRlLT5i YXNlLnNyYy54MSA+PiAxNzsKQEAgLTMwOTUsNiArMzEzNyw3IEBAIHN0YXRpYyBpbnQgc2tsX2No ZWNrX2Njc19hdXhfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl KQogCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0 ZS0+YmFzZS5wbGFuZSk7CiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRj KHBsYW5lX3N0YXRlLT5iYXNlLmNydGMpOwogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7CisJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gaW50 ZWxfcGxhbmVfZ2V0X3JvdGF0aW9uKCZwbGFuZV9zdGF0ZS0+YmFzZSk7CiAJaW50IHNyY194ID0g cGxhbmVfc3RhdGUtPmJhc2Uuc3JjLngxID4+IDE2OwogCWludCBzcmNfeSA9IHBsYW5lX3N0YXRl LT5iYXNlLnNyYy55MSA+PiAxNjsKIAlpbnQgaHN1YiA9IGZiLT5mb3JtYXQtPmhzdWI7CkBAIC0z MTE3LDcgKzMxNjAsNyBAQCBzdGF0aWMgaW50IHNrbF9jaGVja19jY3NfYXV4X3N1cmZhY2Uoc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAJ fQogCi0JaWYgKHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uICYgfihEUk1fTU9ERV9ST1RBVEVf MCB8IERSTV9NT0RFX1JPVEFURV8xODApKSB7CisJaWYgKHJvdGF0aW9uICYgfihEUk1fTU9ERV9S T1RBVEVfMCB8IERSTV9NT0RFX1JPVEFURV8xODApKSB7CiAJCURSTV9ERUJVR19LTVMoIlJDIHN1 cHBvcnQgb25seSB3aXRoIDAvMTgwIGRlZ3JlZSByb3RhdGlvbiAleFxuIiwKIAkJCSAgICAgIHBs YW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uKTsKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0zMTM2LDcg KzMxNzksNyBAQCBzdGF0aWMgaW50IHNrbF9jaGVja19jY3NfYXV4X3N1cmZhY2Uoc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIGludCBza2xfY2hlY2tfcGxhbmVfc3VyZmFj ZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewogCWNvbnN0IHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Ci0JdW5zaWduZWQg aW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247CisJdW5zaWduZWQgaW50 IHJvdGF0aW9uID0gaW50ZWxfcGxhbmVfZ2V0X3JvdGF0aW9uKCZwbGFuZV9zdGF0ZS0+YmFzZSk7 CiAJaW50IHJldDsKIAogCWlmICghcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKQEAgLTMxODEs NyArMzIyNCw3IEBAIHN0YXRpYyB1MzIgaTl4eF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxh bmUtPmRldik7CiAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNf c3RhdGUtPmJhc2UuY3J0Yyk7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBw bGFuZV9zdGF0ZS0+YmFzZS5mYjsKLQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0 ZS0+YmFzZS5yb3RhdGlvbjsKKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBpbnRlbF9wbGFuZV9n ZXRfcm90YXRpb24oJnBsYW5lX3N0YXRlLT5iYXNlKTsKIAl1MzIgZHNwY250cjsKIAogCWRzcGNu dHIgPSBESVNQTEFZX1BMQU5FX0VOQUJMRSB8IERJU1BQTEFORV9HQU1NQV9FTkFCTEU7CkBAIC0z MjU0LDcgKzMyOTcsOCBAQCBpbnQgaTl4eF9jaGVja19wbGFuZV9zdXJmYWNlKHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiAKIAkvKiBIU1cvQkRXIGRvIHRoaXMgYXV0b21h Z2ljYWxseSBpbiBoYXJkd2FyZSAqLwogCWlmICghSVNfSEFTV0VMTChkZXZfcHJpdikgJiYgIUlT X0JST0FEV0VMTChkZXZfcHJpdikpIHsKLQkJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVf c3RhdGUtPmJhc2Uucm90YXRpb247CisJCXVuc2lnbmVkIGludCByb3RhdGlvbiA9CisJCQlpbnRl bF9wbGFuZV9nZXRfcm90YXRpb24oJnBsYW5lX3N0YXRlLT5iYXNlKTsKIAkJaW50IHNyY193ID0g ZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7CiAJCWludCBzcmNf aCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKIApAQCAt MzUwOCw3ICszNTUyLDcgQEAgdTMyIHNrbF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0KIAkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKIAljb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwotCXVuc2lnbmVk IGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOworCXVuc2lnbmVkIGlu dCByb3RhdGlvbiA9IGludGVsX3BsYW5lX2dldF9yb3RhdGlvbigmcGxhbmVfc3RhdGUtPmJhc2Up OwogCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVf c3RhdGUtPmNrZXk7CiAJdTMyIHBsYW5lX2N0bDsKIApAQCAtMzU0Myw3ICszNTg3LDcgQEAgc3Rh dGljIHZvaWQgc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUg KnBsYW5lLAogCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSBwbGFuZS0+aWQ7CiAJZW51bSBwaXBl IHBpcGUgPSBwbGFuZS0+cGlwZTsKIAl1MzIgcGxhbmVfY3RsID0gcGxhbmVfc3RhdGUtPmN0bDsK LQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKKwl1 bnNpZ25lZCBpbnQgcm90YXRpb24gPSBpbnRlbF9wbGFuZV9nZXRfcm90YXRpb24oJnBsYW5lX3N0 YXRlLT5iYXNlKTsKIAl1MzIgc3RyaWRlID0gc2tsX3BsYW5lX3N0cmlkZShmYiwgMCwgcm90YXRp b24pOwogCXUzMiBhdXhfc3RyaWRlID0gc2tsX3BsYW5lX3N0cmlkZShmYiwgMSwgcm90YXRpb24p OwogCXUzMiBzdXJmX2FkZHIgPSBwbGFuZV9zdGF0ZS0+bWFpbi5vZmZzZXQ7CkBAIC03NTA2LDYg Kzc1NTAsOSBAQCBpOXh4X2dldF9pbml0aWFsX3BsYW5lX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKIAkJCXBsYW5lX2NvbmZpZy0+dGlsaW5nID0gSTkxNV9USUxJTkdfWDsKIAkJCWZi LT5tb2RpZmllciA9IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOwogCQl9CisKKwkJaWYgKHZhbCAm IERJU1BQTEFORV9ST1RBVEVfMTgwKQorCQkJcGxhbmVfY29uZmlnLT5yb3RhdGlvbiA9IERSTV9N T0RFX1JPVEFURV8xODA7CiAJfQogCiAJcGl4ZWxfZm9ybWF0ID0gdmFsICYgRElTUFBMQU5FX1BJ WEZPUk1BVF9NQVNLOwpAQCAtODU1OSw2ICs4NjA2LDkgQEAgc2t5bGFrZV9nZXRfaW5pdGlhbF9w bGFuZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCWdvdG8gZXJyb3I7CiAJfQog CisJaWYgKCh2YWwgJiBQTEFORV9DVExfUk9UQVRFX01BU0spID09IFBMQU5FX0NUTF9ST1RBVEVf MTgwKQorCQlwbGFuZV9jb25maWctPnJvdGF0aW9uID0gRFJNX01PREVfUk9UQVRFXzE4MDsKKwog CWJhc2UgPSBJOTE1X1JFQUQoUExBTkVfU1VSRihwaXBlLCAwKSkgJiAweGZmZmZmMDAwOwogCXBs YW5lX2NvbmZpZy0+YmFzZSA9IGJhc2U7CiAKQEAgLTg2NDQsNiArODY5NCw5IEBAIGlyb25sYWtl X2dldF9pbml0aWFsX3BsYW5lX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCXBs YW5lX2NvbmZpZy0+dGlsaW5nID0gSTkxNV9USUxJTkdfWDsKIAkJCWZiLT5tb2RpZmllciA9IEk5 MTVfRk9STUFUX01PRF9YX1RJTEVEOwogCQl9CisKKwkJaWYgKHZhbCAmIERJU1BQTEFORV9ST1RB VEVfMTgwKQorCQkJcGxhbmVfY29uZmlnLT5yb3RhdGlvbiA9IERSTV9NT0RFX1JPVEFURV8xODA7 CiAJfQogCiAJcGl4ZWxfZm9ybWF0ID0gdmFsICYgRElTUFBMQU5FX1BJWEZPUk1BVF9NQVNLOwpA QCAtOTM0OSw3ICs5NDAyLDcgQEAgc3RhdGljIHUzMiBpbnRlbF9jdXJzb3JfYmFzZShjb25zdCBz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogCiAJLyogSUxLKyBkbyB0aGlz IGF1dG9tYWdpY2FsbHkgKi8KIAlpZiAoSEFTX0dNQ0hfRElTUExBWShkZXZfcHJpdikgJiYKLQkg ICAgcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb24gJiBEUk1fTU9ERV9ST1RBVEVfMTgwKQorCSAg ICBpbnRlbF9wbGFuZV9nZXRfcm90YXRpb24oJnBsYW5lX3N0YXRlLT5iYXNlKSAmIERSTV9NT0RF X1JPVEFURV8xODApCiAJCWJhc2UgKz0gKHBsYW5lX3N0YXRlLT5iYXNlLmNydGNfaCAqCiAJCQkg cGxhbmVfc3RhdGUtPmJhc2UuY3J0Y193IC0gMSkgKiBmYi0+Zm9ybWF0LT5jcHBbMF07CiAKQEAg LTk1NzEsNyArOTYyNCw3IEBAIHN0YXRpYyB1MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQlyZXR1cm4gMDsKIAl9CiAKLQlpZiAo cGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb24gJiBEUk1fTU9ERV9ST1RBVEVfMTgwKQorCWlmIChp bnRlbF9wbGFuZV9nZXRfcm90YXRpb24oJnBsYW5lX3N0YXRlLT5iYXNlKSAmIERSTV9NT0RFX1JP VEFURV8xODApCiAJCWNudGwgfD0gQ1VSU09SX1JPVEFURV8xODA7CiAKIAlyZXR1cm4gY250bDsK QEAgLTk2MDQsNyArOTY1Nyw3IEBAIHN0YXRpYyBib29sIGk5eHhfY3Vyc29yX3NpemVfb2soY29u c3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAkgKiBjdXJzb3JzLgog CSAqLwogCWlmIChIQVNfQ1VSX0ZCQyhkZXZfcHJpdikgJiYKLQkgICAgcGxhbmVfc3RhdGUtPmJh c2Uucm90YXRpb24gJiBEUk1fTU9ERV9ST1RBVEVfMCkgeworCSAgICBpbnRlbF9wbGFuZV9nZXRf cm90YXRpb24oJnBsYW5lX3N0YXRlLT5iYXNlKSAmIERSTV9NT0RFX1JPVEFURV8wKSB7CiAJCWlm IChoZWlnaHQgPCA4IHx8IGhlaWdodCA+IHdpZHRoKQogCQkJcmV0dXJuIGZhbHNlOwogCX0gZWxz ZSB7CkBAIC0xMjc3NSw3ICsxMjgyOCw4IEBAIGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCiAJfSBlbHNlIHsKIAkJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAK LQkJdm1hID0gaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooZmIsIG5ld19zdGF0ZS0+cm90YXRp b24pOworCQl2bWEgPSBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihmYiwKKwkJCQlpbnRlbF9w bGFuZV9nZXRfcm90YXRpb24obmV3X3N0YXRlKSk7CiAJCWlmICghSVNfRVJSKHZtYSkpCiAJCQl0 b19pbnRlbF9wbGFuZV9zdGF0ZShuZXdfc3RhdGUpLT52bWEgPSB2bWE7CiAJCWVsc2UKQEAgLTEz MTU1LDcgKzEzMjA5LDggQEAgaW50ZWxfbGVnYWN5X2N1cnNvcl91cGRhdGUoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCiAJCQlnb3RvIG91dF91bmxvY2s7CiAJCX0KIAl9IGVsc2UgewotCQl2bWEg PSBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihmYiwgbmV3X3BsYW5lX3N0YXRlLT5yb3RhdGlv bik7CisJCXZtYSA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGZiLAorCQkJCWludGVsX3Bs YW5lX2dldF9yb3RhdGlvbihuZXdfcGxhbmVfc3RhdGUpKTsKIAkJaWYgKElTX0VSUih2bWEpKSB7 CiAJCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gcGluIG9iamVjdFxuIik7CiAKQEAgLTE0NjI1 LDcgKzE0NjgwLDkgQEAgaW50IGludGVsX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQogCWRybV9tb2Rlc2V0X3VubG9ja19hbGwoZGV2KTsKIAogCWZvcl9lYWNoX2ludGVsX2Ny dGMoZGV2LCBjcnRjKSB7Ci0JCXN0cnVjdCBpbnRlbF9pbml0aWFsX3BsYW5lX2NvbmZpZyBwbGFu ZV9jb25maWcgPSB7fTsKKwkJc3RydWN0IGludGVsX2luaXRpYWxfcGxhbmVfY29uZmlnIHBsYW5l X2NvbmZpZyA9IHsKKwkJCS5yb3RhdGlvbiA9IERSTV9NT0RFX1JPVEFURV8wCisJCX07CiAKIAkJ aWYgKCFjcnRjLT5hY3RpdmUpCiAJCQljb250aW51ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK aW5kZXggMTc2NDlmMTMwOTFjLi5kZTMzMTRjYThmMGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCkBAIC00NDcsNiArNDQ3LDcgQEAgc3RydWN0IGludGVsX2luaXRpYWxfcGxhbmVfY29uZmln IHsKIAl1bnNpZ25lZCBpbnQgdGlsaW5nOwogCWludCBzaXplOwogCXUzMiBiYXNlOworCXVpbnQ4 X3Qgcm90YXRpb247IC8qIERSTV9NT0RFX1JPVEFURV8qICovCiB9OwogCiAjZGVmaW5lIFNLTF9N SU5fU1JDX1cgOApAQCAtODAyLDYgKzgwMywxMiBAQCBzdHJ1Y3QgaW50ZWxfY3J0YyB7CiAJdW5z aWduZWQgbG9uZyBsb25nIGVuYWJsZWRfcG93ZXJfZG9tYWluczsKIAlzdHJ1Y3QgaW50ZWxfb3Zl cmxheSAqb3ZlcmxheTsKIAorCS8qCisJICogSW5pdGlhbCBEUk1fTU9ERV9ST1RBVEVfKiBhcyBy ZWFkIGJhY2sgZnJvbSB0aGUgaGFyZHdhcmUgYXQgaW5pdCwKKwkgKiB0aGlzIGlzIHVzZWQgdG8g Y29tcGVuc2F0ZSBmb3IgZS5nLiB1cHNpZGUtZG93biBtb3VudGVkIGxjZC1wYW5lbHMuCisJICov CisJdWludDhfdCBpbml0aWFsX3JvdGF0aW9uOworCiAJLyogRGlzcGxheSBzdXJmYWNlIGJhc2Ug YWRkcmVzcyBhZGp1c3RlbWVudCBmb3IgcGFnZWZsaXBzLiBOb3RlIHRoYXQgb24KIAkgKiBnZW40 KyB0aGlzIG9ubHkgYWRqdXN0cyB1cCB0byBhIHRpbGUsIG9mZnNldHMgd2l0aGluIGEgdGlsZSBh cmUKIAkgKiBoYW5kbGVkIGluIHRoZSBodyBpdHNlbGYgKHdpdGggdGhlIFRJTEVPRkYgcmVnaXN0 ZXIpLiAqLwpAQCAtMTQ2NCw2ICsxNDcxLDMxIEBAIHN0YXRpYyBpbmxpbmUgdTMyIGludGVsX3Bs YW5lX2dndHRfb2Zmc2V0KGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCiAJ cmV0dXJuIGk5MTVfZ2d0dF9vZmZzZXQoc3RhdGUtPnZtYSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUg dW5zaWduZWQgaW50CitpbnRlbF9wbGFuZV9nZXRfcm90YXRpb24oY29uc3Qgc3RydWN0IGRybV9w bGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCit7CisJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxh bmVfc3RhdGUtPnJvdGF0aW9uOworCXVuc2lnbmVkIGludCBuZXdfcm90YXRpb24gPSBEUk1fTU9E RV9ST1RBVEVfMDsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKKworCWlmICghcGxh bmVfc3RhdGUtPmNydGMpCisJCXJldHVybiByb3RhdGlvbjsKKworCS8qIFdlIG9ubHkgc3VwcG9y dCBhbiBpbml0aWFsIHJvdGF0aW9uIG9mIERSTV9NT0RFX1JPVEFURV8xODAgZm9yIG5vdyAqLwor CWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKHBsYW5lX3N0YXRlLT5jcnRjKTsKKwlpZiAoaW50 ZWxfY3J0Yy0+aW5pdGlhbF9yb3RhdGlvbiAhPSBEUk1fTU9ERV9ST1RBVEVfMTgwKQorCQlyZXR1 cm4gcm90YXRpb247CisKKwlzd2l0Y2ggKHJvdGF0aW9uICYgRFJNX01PREVfUk9UQVRFX01BU0sp IHsKKwljYXNlIERSTV9NT0RFX1JPVEFURV8wOiAgIG5ld19yb3RhdGlvbiA9IERSTV9NT0RFX1JP VEFURV8xODA7CWJyZWFrOworCWNhc2UgRFJNX01PREVfUk9UQVRFXzkwOiAgbmV3X3JvdGF0aW9u ID0gRFJNX01PREVfUk9UQVRFXzI3MDsJYnJlYWs7CisJY2FzZSBEUk1fTU9ERV9ST1RBVEVfMTgw OiBuZXdfcm90YXRpb24gPSBEUk1fTU9ERV9ST1RBVEVfMDsJYnJlYWs7CisJY2FzZSBEUk1fTU9E RV9ST1RBVEVfMjcwOiBuZXdfcm90YXRpb24gPSBEUk1fTU9ERV9ST1RBVEVfOTA7CWJyZWFrOwor CX0KKworCXJldHVybiAocm90YXRpb24gJiB+RFJNX01PREVfUk9UQVRFX01BU0spIHwgbmV3X3Jv dGF0aW9uOworfQorCiB1MzIgc2tsX3BsYW5lX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSwKIAkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBs YW5lX3N0YXRlKTsKIHUzMiBza2xfcGxhbmVfc3RyaWRlKGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiLCBpbnQgcGxhbmUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9mYmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCmluZGV4IDNmY2E5 ZmEzOWE4ZS4uZWI5MDEwMDYxMzE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9mYmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwpAQCAtNzM3 LDcgKzczNyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2ZiY191cGRhdGVfc3RhdGVfY2FjaGUoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCiAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JS T0FEV0VMTChkZXZfcHJpdikpCiAJCWNhY2hlLT5jcnRjLmhzd19iZHdfcGl4ZWxfcmF0ZSA9IGNy dGNfc3RhdGUtPnBpeGVsX3JhdGU7CiAKLQljYWNoZS0+cGxhbmUucm90YXRpb24gPSBwbGFuZV9z dGF0ZS0+YmFzZS5yb3RhdGlvbjsKKwljYWNoZS0+cGxhbmUucm90YXRpb24gPSBpbnRlbF9wbGFu ZV9nZXRfcm90YXRpb24oJnBsYW5lX3N0YXRlLT5iYXNlKTsKIAkvKgogCSAqIFNyYyBjb29yZGlu YXRlcyBhcmUgYWxyZWFkeSByb3RhdGVkIGJ5IDI3MCBkZWdyZWVzIGZvcgogCSAqIHRoZSA5MC8y NzAgZGVncmVlIHBsYW5lIHJvdGF0aW9uIGNhc2VzICh0byBtYXRjaCB0aGUKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jCmluZGV4IGQ1ZmYwYjlmOTk5Zi4uZGE4ZDY2ZjAwODQ4IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMKQEAgLTQwODAsNiArNDA4MCw3IEBAIHNrbF9kZGJfbWluX2FsbG9jKGNvbnN0 IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZSwKIHsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBzdGF0ZS0+ZmI7CiAJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9w c3RhdGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShwc3RhdGUpOworCXVuc2lnbmVkIGludCByb3Rh dGlvbiA9IGludGVsX3BsYW5lX2dldF9yb3RhdGlvbihwc3RhdGUpOwogCXVpbnQzMl90IHNyY193 LCBzcmNfaDsKIAl1aW50MzJfdCBtaW5fc2NhbmxpbmVzID0gODsKIAl1aW50OF90IHBsYW5lX2Jw cDsKQEAgLTQxMTcsNyArNDExOCw3IEBAIHNrbF9kZGJfbWluX2FsbG9jKGNvbnN0IHN0cnVjdCBk cm1fcGxhbmVfc3RhdGUgKnBzdGF0ZSwKIAllbHNlCiAJCXBsYW5lX2JwcCA9IGZiLT5mb3JtYXQt PmNwcFswXTsKIAotCWlmIChkcm1fcm90YXRpb25fOTBfb3JfMjcwKHBzdGF0ZS0+cm90YXRpb24p KSB7CisJaWYgKGRybV9yb3RhdGlvbl85MF9vcl8yNzAocm90YXRpb24pKSB7CiAJCXN3aXRjaCAo cGxhbmVfYnBwKSB7CiAJCWNhc2UgMToKIAkJCW1pbl9zY2FubGluZXMgPSAzMjsKQEAgLTQzODIs NiArNDM4Myw3IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUg PSB0b19pbnRlbF9wbGFuZShpbnRlbF9wc3RhdGUtPmJhc2UucGxhbmUpOwogCWNvbnN0IHN0cnVj dCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZSA9ICZpbnRlbF9wc3RhdGUtPmJhc2U7CiAJY29uc3Qg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwc3RhdGUtPmZiOworCXVuc2lnbmVkIGludCBy b3RhdGlvbiA9IGludGVsX3BsYW5lX2dldF9yb3RhdGlvbihwc3RhdGUpOwogCXVpbnQzMl90IGxh dGVuY3kgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3lbbGV2ZWxdOwogCXVpbnRfZml4ZWRfMTZf MTZfdCBtZXRob2QxLCBtZXRob2QyOwogCXVpbnRfZml4ZWRfMTZfMTZfdCBwbGFuZV9ibG9ja3Nf cGVyX2xpbmU7CkBAIC00NDM0LDcgKzQ0MzYsNyBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3Bs YW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJCQlm Yi0+Zm9ybWF0LT5jcHBbMF07CiAJcGxhbmVfcGl4ZWxfcmF0ZSA9IHNrbF9hZGp1c3RlZF9wbGFu ZV9waXhlbF9yYXRlKGNzdGF0ZSwgaW50ZWxfcHN0YXRlKTsKIAotCWlmIChkcm1fcm90YXRpb25f OTBfb3JfMjcwKHBzdGF0ZS0+cm90YXRpb24pKSB7CisJaWYgKGRybV9yb3RhdGlvbl85MF9vcl8y NzAocm90YXRpb24pKSB7CiAKIAkJc3dpdGNoIChjcHApIHsKIAkJY2FzZSAxOgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9zcHJpdGUuYwppbmRleCA1MjQ5MzNiMDE0ODMuLmFkMDYxMDc4ZmIwZSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKQEAgLTIzNyw3ICsyMzcsNyBAQCBza2xfdXBk YXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCiAJdTMyIHBsYW5lX2N0bCA9IHBs YW5lX3N0YXRlLT5jdGw7CiAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkg KmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKIAl1MzIgc3VyZl9hZGRyID0gcGxhbmVfc3RhdGUt Pm1haW4ub2Zmc2V0OwotCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNl LnJvdGF0aW9uOworCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IGludGVsX3BsYW5lX2dldF9yb3Rh dGlvbigmcGxhbmVfc3RhdGUtPmJhc2UpOwogCXUzMiBzdHJpZGUgPSBza2xfcGxhbmVfc3RyaWRl KGZiLCAwLCByb3RhdGlvbik7CiAJdTMyIGF1eF9zdHJpZGUgPSBza2xfcGxhbmVfc3RyaWRlKGZi LCAxLCByb3RhdGlvbik7CiAJaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC54MTsK QEAgLTM2Nyw3ICszNjcsNyBAQCBzdGF0aWMgdTMyIHZsdl9zcHJpdGVfY3RsKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Ci0JdW5zaWduZWQgaW50IHJvdGF0aW9uID0g cGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247CisJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gaW50 ZWxfcGxhbmVfZ2V0X3JvdGF0aW9uKCZwbGFuZV9zdGF0ZS0+YmFzZSk7CiAJY29uc3Qgc3RydWN0 IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKIAl1 MzIgc3ByY3RsOwogCkBAIC01MDcsNyArNTA3LDcgQEAgc3RhdGljIHUzMiBpdmJfc3ByaXRlX2N0 bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQogCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBs YW5lLT5kZXYpOwogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3Rh dGUtPmJhc2UuZmI7Ci0JdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uu cm90YXRpb247CisJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gaW50ZWxfcGxhbmVfZ2V0X3JvdGF0 aW9uKCZwbGFuZV9zdGF0ZS0+YmFzZSk7CiAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVf Y29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKIAl1MzIgc3ByY3RsOwogCkBAIC02 NDcsNyArNjQ3LDcgQEAgc3RhdGljIHUzMiBnNHhfc3ByaXRlX2N0bChjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPQogCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwogCWNvbnN0 IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Ci0JdW5z aWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247CisJdW5zaWdu ZWQgaW50IHJvdGF0aW9uID0gaW50ZWxfcGxhbmVfZ2V0X3JvdGF0aW9uKCZwbGFuZV9zdGF0ZS0+ YmFzZSk7CiAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZw bGFuZV9zdGF0ZS0+Y2tleTsKIAl1MzIgZHZzY250cjsKIApAQCAtNzgwLDYgKzc4MCw3IEBAIGlu dGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsK IAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFz ZS5jcnRjKTsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5iYXNlLmZiOwor CXVuc2lnbmVkIGludCByb3RhdGlvbiA9IGludGVsX3BsYW5lX2dldF9yb3RhdGlvbigmc3RhdGUt PmJhc2UpOwogCWludCBjcnRjX3gsIGNydGNfeTsKIAl1bnNpZ25lZCBpbnQgY3J0Y193LCBjcnRj X2g7CiAJdWludDMyX3Qgc3JjX3gsIHNyY195LCBzcmNfdywgc3JjX2g7CkBAIC04MzQsOCArODM1 LDcgQEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUs CiAJICogY29vcmRpbmF0ZXMgYW5kIHNpemVzLiBXZSBwcm9iYWJseSBuZWVkIHNvbWUgd2F5IHRv IGRlY2lkZSB3aGV0aGVyCiAJICogbW9yZSBzdHJpY3QgY2hlY2tpbmcgc2hvdWxkIGJlIGRvbmUg aW5zdGVhZC4KIAkgKi8KLQlkcm1fcmVjdF9yb3RhdGUoc3JjLCBmYi0+d2lkdGggPDwgMTYsIGZi LT5oZWlnaHQgPDwgMTYsCi0JCQlzdGF0ZS0+YmFzZS5yb3RhdGlvbik7CisJZHJtX3JlY3Rfcm90 YXRlKHNyYywgZmItPndpZHRoIDw8IDE2LCBmYi0+aGVpZ2h0IDw8IDE2LCByb3RhdGlvbik7CiAK IAloc2NhbGUgPSBkcm1fcmVjdF9jYWxjX2hzY2FsZV9yZWxheGVkKHNyYywgZHN0LCBtaW5fc2Nh bGUsIG1heF9zY2FsZSk7CiAJQlVHX09OKGhzY2FsZSA8IDApOwpAQCAtODc2LDcgKzg3Niw3IEBA IGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCQkJ CSAgICAgZHJtX3JlY3RfaGVpZ2h0KGRzdCkgKiB2c2NhbGUgLSBkcm1fcmVjdF9oZWlnaHQoc3Jj KSk7CiAKIAkJZHJtX3JlY3Rfcm90YXRlX2ludihzcmMsIGZiLT53aWR0aCA8PCAxNiwgZmItPmhl aWdodCA8PCAxNiwKLQkJCQkgICAgc3RhdGUtPmJhc2Uucm90YXRpb24pOworCQkJCSAgICByb3Rh dGlvbik7CiAKIAkJLyogc2FuaXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3JjIHZpZXdwb3J0 IHdhc24ndCBlbmxhcmdlZCAqLwogCQlXQVJOX09OKHNyYy0+eDEgPCAoaW50KSBzdGF0ZS0+YmFz ZS5zcmNfeCB8fAotLSAKMi4xMy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK