From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: [PATCH v8 5/9] drm/i915/dp: Enable Upfront link training for typeC DP support on BXT Date: Mon, 8 Aug 2016 19:33:14 -0700 Message-ID: <1470709998-10751-6-git-send-email-manasi.d.navare@intel.com> References: <1470709998-10751-1-git-send-email-manasi.d.navare@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 46DF06E21F for ; Tue, 9 Aug 2016 02:20:22 +0000 (UTC) In-Reply-To: <1470709998-10751-1-git-send-email-manasi.d.navare@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogRHVyZ2Fkb3NzIFIgPGR1cmdhZG9zcy5yQGludGVsLmNvbT4KClRvIHN1cHBvcnQgVVNC IHR5cGUgQyBhbHRlcm5hdGUgRFAgbW9kZSwgdGhlIGRpc3BsYXkgZHJpdmVyIG5lZWRzIHRvCmtu b3cgdGhlIG51bWJlciBvZiBsYW5lcyByZXF1aXJlZCBieSB0aGUgRFAgcGFuZWwgYXMgd2VsbCBh cyBudW1iZXIKb2YgbGFuZXMgdGhhdCBjYW4gYmUgc3VwcG9ydGVkIGJ5IHRoZSB0eXBlLUMgY2Fi bGUuIFNvbWV0aW1lcywgdGhlCnR5cGUtQyBjYWJsZSBtYXkgbGltaXQgdGhlIGJhbmR3aWR0aCBl dmVuIGlmIFBhbmVsIGNhbiBzdXBwb3J0Cm1vcmUgbGFuZXMuIFRvIGFkZHJlc3MgdGhlc2Ugc2Nl bmFyaW9zLCB0aGUgZGlzcGxheSBkcml2ZXIgd2lsbApzdGFydCBsaW5rIHRyYWluaW5nIHdpdGgg bWF4IGxhbmVzLCBhbmQgaWYgdGhhdCBmYWlscywgdGhlIGRyaXZlcgpmYWxscyBiYWNrIHRvIHgy IGxhbmVzOyBhbmQgcmVwZWF0cyB0aGlzIHByb2NlZHVyZSBmb3IgYWxsCmJhbmR3aWR0aC9sYW5l IGNvbmZpZ3VyYXRpb25zLgoKKiBTaW5jZSBsaW5rIHRyYWluaW5nIGlzIGRvbmUgYmVmb3JlIG1v ZGVzZXQgb25seSB0aGUgcG9ydAogIChhbmQgbm90IHBpcGUvcGxhbmVzKSBhbmQgaXRzIGFzc29j aWF0ZWQgUExMcyBhcmUgZW5hYmxlZC4KKiBPbiBEUCBob3RwbHVnOiBEaXJlY3RseSBzdGFydCBs aW5rIHRyYWluaW5nIG9uIHRoZSBEUCBlbmNvZGVyLgoqIE9uIENvbm5lY3RlZCBib290IHNjZW5h cmlvczogV2hlbiBib290ZWQgd2l0aCBhbiBMRlAgYW5kIGEgRFAsCiAgc29tZXRpbWVzIEJJT1Mg YnJpbmdzIHVwIERQLiBJbiB0aGVzZSBjYXNlcywgd2UgZGlzYWJsZSB0aGUKICBjcnRjIGFuZCB0 aGVuIGRvIHVwZnJvbnQgbGluayB0cmFpbmluZzsgYW5kIGJyaW5nIGl0IGJhY2sgdXAuCiogQWxs IGxvY2FsIGNoYW5nZXMgbWFkZSBmb3IgdXBmcm9udCBsaW5rIHRyYWluaW5nIGFyZSByZXNldAog IHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyBvbmNlIGl0IGlzIGRvbmU7IHNvIHRoYXQgdGhlCiAg c3Vic2VxdWVudCBtb2Rlc2V0IGlzIG5vdCBhd2FyZSBvZiB0aGVzZSBjaGFuZ2VzLgoKQ2hhbmdl cyBzaW5jZSB2NzoKKiBNb3ZlIHRoZSB1cGZyb250IGxpbmsgdHJhaW5pbmcgdG8gaW50ZWxfZHBf bW9kZV92YWxpZCgpCiAgdG8gYXZvaWQgYSByYWNlIGNvbmRpdGlvbiB3aXRoIERQIE1TVCBzaWRl YmFuZCBjb21tcy4gKFZpbGxlKQpDaGFuZ2VzIHNpbmNlIHY2OgoqIEZpeCBzb21lIGluaXRpYWxp emF0aW9uIGJ1Z3Mgb24gbGlua19yYXRlIChKaW0gQnJpZGUpCiogVXNlIGxpbmtfcmF0ZSAoYW5k IG5vdCBsaW5rX2J3KSBmb3IgdXBmcm9udCAoVmlsbGUpCiogTWFrZSBpbnRlbF9kcF91cGZyb250 KigpIGFzIGEgdmZ1bmMgKEFuZGVyKQoqIFRoZSB0cmFpbl9zZXRfdmFsaWQgdmFyaWFibGUgaW4g aW50ZWxfZHAgd2FzIHJlbW92ZWQgZHVlIHRvCiAgaXNzdWVzIGluIGZhc3QgbGluayB0cmFpbmlu Zy4gU28sIHRvIGluZGljYXRlIHRoZSBsaW5rIHRyYWluCiAgc3RhdHVzLCBtb3ZlIHRoZSBjaGFu bmVsX2VxIGluc2lkZSBpbnRlbF9kcC4KQ2hhbmdlcyBzaW5jZSB2NToKKiBNb3ZlZCByZXRyeSBs b2dpYyBpbiB1cGZyb250IHRvIGludGVsX2RwLmMgc28gdGhhdCBpdAogIGNhbiBiZSB1c2VkIGZv ciBhbGwgcGxhdGZvcm1zLgpDaGFuZ2VzIHNpbmNlIHY0OgoqIFJlbW92ZWQgdXNhZ2Ugb2YgY3J0 Y19zdGF0ZSBpbiB1cGZyb250IGxpbmsgdHJhaW5pbmc7CiAgSGVuY2Ugbm8gbmVlZCB0byBmaW5k IGZyZWUgY3J0YyB0byBkbyB1cGZyb250IG5vdy4KKiBSZS1lbmFibGUgY3J0YyBpZiBpdCB3YXMg ZGlzYWJsZWQgZm9yIHVwZnJvbnQuCiogVXNlIHNlcGFyYXRlIHZhcmlhYmxlcyB0byB0cmFjayBt YXggbGFuZSBjb3VudAogIGFuZCBsaW5rIHJhdGUgZm91bmQgYnkgdXBmcm9udCwgd2l0aG91dCBt b2RpZnlpbmcKICB0aGUgb3JpZ2luYWwgRFBDRCByZWFkIGZyb20gcGFuZWwuCkNoYW5nZXMgc2lu Y2UgdjM6CiogRml4ZWQgYSByZXR1cm4gdmFsdWUgb24gQlhUIGNoZWNrCiogUmV3b3JrZWQgb24g dG9wIG9mIGJ4dF9kZGlfcGxsX3NlbGVjdCBzcGxpdCBmcm9tIEFuZGVyCiogUmVuYW1lZCBmcm9t IGRkaV91cGZyb250IHRvIGJ4dF91cGZyb250IHNpbmNlIHRoZQogIHVwZnJvbnQgbG9naWMgaW5j bHVkZXMgQlhUIHNwZWNpZmljIGZ1bmN0aW9ucyBmb3Igbm93LgpDaGFuZ2VzIHNpbmNlIHYyOgoq IFJlYmFzZWQgb24gdG9wIG9mIGxhdGVzdCBkcGxsX21nci5jIGNvZGUgYW5kCiAgbGF0ZXN0IEhQ RCByZWxhdGVkIGNsZWFuIHVwcy4KKiBDb3JyZWN0ZWQgcmV0dXJuIHZhbHVlcyBmcm9tIHVwZnJv bnQgKEFuZGVyKQoqIENvcnJlY3RlZCBhdG9taWMgbG9ja2luZyBmb3IgdXBmcm9udCBpbiBpbnRl bF9kcC5jIChWaWxsZSkKQ2hhbmdlcyBzaW5jZSB2MToKKiAgYWxsIHBsbCByZWxhdGVkIGZ1bmN0 aW9ucyBpbnNpZGUgZGRpLmMKClNpZ25lZC1vZmYtYnk6IER1cmdhZG9zcyBSIDxkdXJnYWRvc3Mu ckBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEppbSBCcmlkZSA8amltLmJyaWRlQGxpbnV4Lmlu dGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGlu dGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyAgICAgICAgICAg ICAgfCAgNDcgKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgICAgICAg ICAgIHwgMzcwICsrKysrKysrKysrKysrKysrKystLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMgfCAgIDcgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oICAgICAgICAgICAgICB8ICAxNiArKwogNCBmaWxlcyBjaGFuZ2VkLCAzMzcg aW5zZXJ0aW9ucygrKSwgMTAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMK aW5kZXggZGZiM2ZiNi4uMzkyMTIzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGRpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKQEAgLTIz NzgsNiArMjM3OCw1MyBAQCBpbnRlbF9kZGlfaW5pdF9oZG1pX2Nvbm5lY3RvcihzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKIAlyZXR1cm4gY29ubmVjdG9yOwogfQog CisKK2Jvb2wgaW50ZWxfYnh0X3VwZnJvbnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLAorCQkJCSAgaW50IGNsb2NrLCB1aW50OF90IGxhbmVfY291bnQsCisJCQkJICBib29s IGxpbmtfbXN0KQoreworCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGludGVs X2RwLT5hdHRhY2hlZF9jb25uZWN0b3I7CisJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIg PSBjb25uZWN0b3ItPmVuY29kZXI7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7CisJc3RydWN0IGludGVsX3NoYXJlZF9kcGxs ICpwbGw7CisJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZpZyB0bXBfcGxsX2NvbmZpZzsK KwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGlu dGVsX2RwKTsKKwllbnVtIGludGVsX2RwbGxfaWQgZHBsbF9pZCA9IChlbnVtIGludGVsX2RwbGxf aWQpZGlnX3BvcnQtPnBvcnQ7CisKKwkvKgorCSAqIEZJWE1FOiBXb3JrcyBvbmx5IGZvciBCWFQu CisJICogU2VsZWN0IHRoZSByZXF1aXJlZCBQTEwuIFRoaXMgd29ya3MgZm9yIHBsYXRmb3JtcyB3 aGVyZQorCSAqIHRoZXJlIGlzIG5vIHNoYXJlZCBEUExMLgorCSAqLworCXBsbCA9ICZkZXZfcHJp di0+c2hhcmVkX2RwbGxzW2RwbGxfaWRdOworCWlmIChXQVJOX09OKHBsbC0+YWN0aXZlX21hc2sp KSB7CisJCURSTV9FUlJPUigiU2hhcmVkIERQTEwgYWxyZWFkeSBpbiB1c2UuIGFjdGl2ZV9tYXNr OiV4XG4iLCBwbGwtPmFjdGl2ZV9tYXNrKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCXRtcF9w bGxfY29uZmlnID0gcGxsLT5jb25maWc7CisKKwlpZiAoIWJ4dF9kZGlfZHBfc2V0X2RwbGxfaHdf c3RhdGUoY2xvY2ssICZwbGwtPmNvbmZpZy5od19zdGF0ZSkpIHsKKwkJRFJNX0VSUk9SKCJDb3Vs ZCBub3Qgc2V0dXAgRFBMTFxuIik7CisJCXBsbC0+Y29uZmlnID0gdG1wX3BsbF9jb25maWc7CisJ CXJldHVybiBmYWxzZTsKKwl9CisKKwkvKiBFbmFibGUgUExMIGZvbGxvd2VkIGJ5IHBvcnQgKi8K KwlwbGwtPmZ1bmNzLmVuYWJsZShkZXZfcHJpdiwgcGxsKTsKKwlpbnRlbF9kZGlfcHJlX2VuYWJs ZV9kcChlbmNvZGVyLCBjbG9jaywgbGFuZV9jb3VudCwgcGxsLCBsaW5rX21zdCk7CisKKwlEUk1f REVCVUdfS01TKCJVcGZyb250IGxpbmsgdHJhaW4gJXM6IGxpbmtfY2xvY2s6JWQgbGFuZXM6JWRc biIsCisJaW50ZWxfZHAtPmNoYW5uZWxfZXFfc3RhdHVzID8gIlBhc3NlZCIgOiAiRmFpbGVkIiwg Y2xvY2ssIGxhbmVfY291bnQpOworCisJLyogRGlzYWJsZSBwb3J0IGZvbGxvd2VkIGJ5IFBMTCBm b3IgbmV4dCByZXRyeS9jbGVhbiB1cCAqLworCWludGVsX2RkaV9wb3N0X2Rpc2FibGUoZW5jb2Rl cik7CisJcGxsLT5mdW5jcy5kaXNhYmxlKGRldl9wcml2LCBwbGwpOworCisJcGxsLT5jb25maWcg PSB0bXBfcGxsX2NvbmZpZzsKKwlyZXR1cm4gaW50ZWxfZHAtPmNoYW5uZWxfZXFfc3RhdHVzOwor fQorCiB2b2lkIGludGVsX2RkaV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcG9y dCBwb3J0KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCmluZGV4IDM5ZDViZTUuLjRjMDNlMjggMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYwpAQCAtMTUzLDEyICsxNTMsMjEgQEAgaW50ZWxfZHBfbWF4X2xp bmtfYncoc3RydWN0IGludGVsX2RwICAqaW50ZWxfZHApCiBzdGF0aWMgdTggaW50ZWxfZHBfbWF4 X2xhbmVfY291bnQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIHsKIAlzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsK LQl1OCBzb3VyY2VfbWF4LCBzaW5rX21heDsKKwl1OCB0ZW1wLCBzb3VyY2VfbWF4LCBzaW5rX21h eDsKIAogCXNvdXJjZV9tYXggPSBpbnRlbF9kaWdfcG9ydC0+bWF4X2xhbmVzOwogCXNpbmtfbWF4 ID0gZHJtX2RwX21heF9sYW5lX2NvdW50KGludGVsX2RwLT5kcGNkKTsKIAotCXJldHVybiBtaW4o c291cmNlX21heCwgc2lua19tYXgpOworCXRlbXAgPSBtaW4oc291cmNlX21heCwgc2lua19tYXgp OworCisJLyoKKwkgKiBMaW1pdCBtYXggbGFuZXMgdy5yLnQgdG8gdGhlIG1heCB2YWx1ZSBmb3Vu ZAorCSAqIHVzaW5nIFVwZnJvbnQgbGluayB0cmFpbmluZyBhbHNvLgorCSAqLworCWlmIChpbnRl bF9kcC0+bWF4X2xhbmVzX3VwZnJvbnQpCisJCXJldHVybiBtaW4odGVtcCwgaW50ZWxfZHAtPm1h eF9sYW5lc191cGZyb250KTsKKwllbHNlCisJCXJldHVybiB0ZW1wOwogfQogCiAvKgpAQCAtMTkw LDYgKzE5OSwyMjQgQEAgaW50ZWxfZHBfbWF4X2RhdGFfcmF0ZShpbnQgbWF4X2xpbmtfY2xvY2ss IGludCBtYXhfbGFuZXMpCiAJcmV0dXJuIChtYXhfbGlua19jbG9jayAqIG1heF9sYW5lcyAqIDgp IC8gMTA7CiB9CiAKK3N0YXRpYyBpbnQgaW50ZWxfZHBfdXBmcm9udF9jcnRjX2Rpc2FibGUoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCisJCQkJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4 ICpjdHgsCisJCQkJYm9vbCBlbmFibGUpCit7CisJaW50IHJldDsKKwlzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGU7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CisJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OworCWVudW0gcGlwZSBwaXBl ID0gY3J0Yy0+cGlwZTsKKworCXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhkZXYpOwor CWlmICghc3RhdGUpCisJCXJldHVybiAtRU5PTUVNOworCisJc3RhdGUtPmFjcXVpcmVfY3R4ID0g Y3R4OworCisJY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwg Y3J0Yyk7CisJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkgeworCQlyZXQgPSBQVFJfRVJSKGNydGNf c3RhdGUpOworCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOworCQlyZXR1cm4gcmV0Owor CX0KKworCURSTV9ERUJVR19LTVMoIiVzYWJsaW5nIGNydGMgJWMgJXMgdXBmcm9udCBsaW5rIHRy YWluXG4iLAorCQkJZW5hYmxlID8gIkVuIiA6ICJEaXMiLAorCQkJcGlwZV9uYW1lKHBpcGUpLAor CQkJZW5hYmxlID8gImFmdGVyIiA6ICJiZWZvcmUiKTsKKworCWNydGNfc3RhdGUtPmJhc2UuYWN0 aXZlID0gZW5hYmxlOworCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsKKwlpZiAocmV0 KQorCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOworCisJcmV0dXJuIHJldDsKK30KKwor c3RhdGljIGludAoraW50ZWxfZHBfc2lua19yYXRlcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw LCBjb25zdCBpbnQgKipzaW5rX3JhdGVzKQoreworCWlmIChpbnRlbF9kcC0+bnVtX3NpbmtfcmF0 ZXMpIHsKKwkJKnNpbmtfcmF0ZXMgPSBpbnRlbF9kcC0+c2lua19yYXRlczsKKwkJcmV0dXJuIGlu dGVsX2RwLT5udW1fc2lua19yYXRlczsKKwl9CisKKwkqc2lua19yYXRlcyA9IGRlZmF1bHRfcmF0 ZXM7CisKKwlyZXR1cm4gKGludGVsX2RwX21heF9saW5rX2J3KGludGVsX2RwKSA+PiAzKSArIDE7 Cit9CisKK2Jvb2wgaW50ZWxfZHBfc291cmNlX3N1cHBvcnRzX2hicjIoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGRw X3RvX2RpZ19wb3J0KGludGVsX2RwKTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGlnX3Bv cnQtPmJhc2UuYmFzZS5kZXY7CisKKwkvKiBXYURpc2FibGVIQlIyOnNrbCAqLworCWlmIChJU19T S0xfUkVWSUQoZGV2LCAwLCBTS0xfUkVWSURfQjApKQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAo KElTX0hBU1dFTEwoZGV2KSAmJiAhSVNfSFNXX1VMWChkZXYpKSB8fCBJU19CUk9BRFdFTEwoZGV2 KSB8fAorCSAgICAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkpCisJCXJldHVybiB0cnVlOwor CWVsc2UKKwkJcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgaW50CitpbnRlbF9kcF9zb3VyY2Vf cmF0ZXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgY29uc3QgaW50ICoqc291cmNlX3JhdGVz KQoreworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZHBfdG9fZGlnX3Bv cnQoaW50ZWxfZHApOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkaWdfcG9ydC0+YmFzZS5i YXNlLmRldjsKKwlpbnQgc2l6ZTsKKworCWlmIChJU19CUk9YVE9OKGRldikpIHsKKwkJKnNvdXJj ZV9yYXRlcyA9IGJ4dF9yYXRlczsKKwkJc2l6ZSA9IEFSUkFZX1NJWkUoYnh0X3JhdGVzKTsKKwl9 IGVsc2UgaWYgKElTX1NLWUxBS0UoZGV2KSB8fCBJU19LQUJZTEFLRShkZXYpKSB7CisJCSpzb3Vy Y2VfcmF0ZXMgPSBza2xfcmF0ZXM7CisJCXNpemUgPSBBUlJBWV9TSVpFKHNrbF9yYXRlcyk7CisJ fSBlbHNlIHsKKwkJKnNvdXJjZV9yYXRlcyA9IGRlZmF1bHRfcmF0ZXM7CisJCXNpemUgPSBBUlJB WV9TSVpFKGRlZmF1bHRfcmF0ZXMpOworCX0KKworCS8qIFRoaXMgZGVwZW5kcyBvbiB0aGUgZmFj dCB0aGF0IDUuNCBpcyBsYXN0IHZhbHVlIGluIHRoZSBhcnJheSAqLworCWlmICghaW50ZWxfZHBf c291cmNlX3N1cHBvcnRzX2hicjIoaW50ZWxfZHApKQorCQlzaXplLS07CisKKwlyZXR1cm4gc2l6 ZTsKK30KKworc3RhdGljIGludCBpbnRlcnNlY3RfcmF0ZXMoY29uc3QgaW50ICpzb3VyY2VfcmF0 ZXMsIGludCBzb3VyY2VfbGVuLAorCQkJICAgY29uc3QgaW50ICpzaW5rX3JhdGVzLCBpbnQgc2lu a19sZW4sCisJCQkgICBpbnQgKmNvbW1vbl9yYXRlcykKK3sKKwlpbnQgaSA9IDAsIGogPSAwLCBr ID0gMDsKKworCXdoaWxlIChpIDwgc291cmNlX2xlbiAmJiBqIDwgc2lua19sZW4pIHsKKwkJaWYg KHNvdXJjZV9yYXRlc1tpXSA9PSBzaW5rX3JhdGVzW2pdKSB7CisJCQlpZiAoV0FSTl9PTihrID49 IERQX01BWF9TVVBQT1JURURfUkFURVMpKQorCQkJCXJldHVybiBrOworCQkJY29tbW9uX3JhdGVz W2tdID0gc291cmNlX3JhdGVzW2ldOworCQkJKytrOworCQkJKytpOworCQkJKytqOworCQl9IGVs c2UgaWYgKHNvdXJjZV9yYXRlc1tpXSA8IHNpbmtfcmF0ZXNbal0pIHsKKwkJCSsraTsKKwkJfSBl bHNlIHsKKwkJCSsrajsKKwkJfQorCX0KKwlyZXR1cm4gazsKK30KKworc3RhdGljIGludCBpbnRl bF9kcF9jb21tb25fcmF0ZXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJCQkgaW50ICpj b21tb25fcmF0ZXMpCit7CisJY29uc3QgaW50ICpzb3VyY2VfcmF0ZXMsICpzaW5rX3JhdGVzOwor CWludCBzb3VyY2VfbGVuLCBzaW5rX2xlbjsKKworCXNpbmtfbGVuID0gaW50ZWxfZHBfc2lua19y YXRlcyhpbnRlbF9kcCwgJnNpbmtfcmF0ZXMpOworCisJLyogQ2FwIHNpbmsgcmF0ZXMgdy5yLnQg dXBmcm9udCB2YWx1ZXMgKi8KKwlpZiAoaW50ZWxfZHAtPm1heF9saW5rX3JhdGVfdXBmcm9udCkg eworCQlpbnQgbGVuID0gc2lua19sZW4gLSAxOworCQl3aGlsZSAobGVuID4gMCAmJiBzaW5rX3Jh dGVzW2xlbl0gPiBpbnRlbF9kcC0+bWF4X2xpbmtfcmF0ZV91cGZyb250KQorCQkJbGVuLS07CisJ CXNpbmtfbGVuID0gbGVuICsgMTsKKwl9CisKKwlzb3VyY2VfbGVuID0gaW50ZWxfZHBfc291cmNl X3JhdGVzKGludGVsX2RwLCAmc291cmNlX3JhdGVzKTsKKworCXJldHVybiBpbnRlcnNlY3RfcmF0 ZXMoc291cmNlX3JhdGVzLCBzb3VyY2VfbGVuLAorCQkJICAgICAgIHNpbmtfcmF0ZXMsIHNpbmtf bGVuLAorCQkJICAgICAgIGNvbW1vbl9yYXRlcyk7Cit9CisKK3N0YXRpYyBib29sIGludGVsX2Rw X3VwZnJvbnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQoreworCXN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50 ZWxfZHApOworCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0gJmludGVsX2Rp Z19wb3J0LT5iYXNlOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9lbmNvZGVyLT5i YXNlLmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRl dik7CisJc3RydWN0IGRybV9tb2RlX2NvbmZpZyAqY29uZmlnID0gJmRldi0+bW9kZV9jb25maWc7 CisJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsKKwlzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YzsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBOVUxMOworCWludCByZXQ7 CisJYm9vbCBkb25lID0gZmFsc2UsIGhhc19tc3QgPSBmYWxzZTsKKwl1aW50OF90IGxhbmVfY291 bnQsIG1heF9sYW5lcyA9IDQ7CisJaW50IGNvbW1vbl9yYXRlc1tEUF9NQVhfU1VQUE9SVEVEX1JB VEVTXSA9IHt9OworCWludCBjbG9jaywgY29tbW9uX2xlbjsKKwllbnVtIGludGVsX2Rpc3BsYXlf cG93ZXJfZG9tYWluIHBvd2VyX2RvbWFpbjsKKworCXBvd2VyX2RvbWFpbiA9IGludGVsX2Rpc3Bs YXlfcG9ydF9wb3dlcl9kb21haW4oaW50ZWxfZW5jb2Rlcik7CisJaW50ZWxfZGlzcGxheV9wb3dl cl9nZXQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbik7CisKKwljb21tb25fbGVuID0gaW50ZWxfZHBf Y29tbW9uX3JhdGVzKGludGVsX2RwLCBjb21tb25fcmF0ZXMpOworCWlmIChXQVJOX09OKGNvbW1v bl9sZW4gPD0gMCkpCisJCXJldHVybiB0cnVlOworCisJZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0 KCZjdHgsIDApOworcmV0cnk6CisJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY29uZmlnLT5jb25u ZWN0aW9uX211dGV4LCAmY3R4KTsKKwlpZiAocmV0KQorCQlnb3RvIGV4aXRfZmFpbDsKKworCWlm IChpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGMpIHsKKwkJY3J0YyA9IGludGVsX2VuY29kZXItPmJh c2UuY3J0YzsKKworCQlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5tdXRleCwgJmN0eCk7 CisJCWlmIChyZXQpCisJCQlnb3RvIGV4aXRfZmFpbDsKKworCQlyZXQgPSBkcm1fbW9kZXNldF9s b2NrKCZjcnRjLT5wcmltYXJ5LT5tdXRleCwgJmN0eCk7CisJCWlmIChyZXQpCisJCQlnb3RvIGV4 aXRfZmFpbDsKKworCQlpbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKwkJaGFzX21z dCA9IGludGVsX2NydGNfaGFzX3R5cGUoaW50ZWxfY3J0Yy0+Y29uZmlnLAorCQkJCQkgICAgICBJ TlRFTF9PVVRQVVRfRFBfTVNUKTsKKwkJcmV0ID0gaW50ZWxfZHBfdXBmcm9udF9jcnRjX2Rpc2Fi bGUoaW50ZWxfY3J0YywgJmN0eCwgZmFsc2UpOworCQlpZiAocmV0KQorCQkJZ290byBleGl0X2Zh aWw7CisJfQorCisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRwbGxfbG9jayk7CisKKwlmb3IgKGxh bmVfY291bnQgPSBtYXhfbGFuZXM7IGxhbmVfY291bnQgPj0gMSAmJiAhZG9uZTsKKwkgICAgIGxh bmVfY291bnQgPj49IDEpIHsKKwkJZm9yIChjbG9jayA9IGNvbW1vbl9sZW4gLSAxOyBjbG9jayA+ PSAwICYmICFkb25lOyBjbG9jay0tKSB7CisJCQlkb25lID0gaW50ZWxfZHAtPnVwZnJvbnRfbGlu a190cmFpbihpbnRlbF9kcCwKKwkJCQkJCQkgICAgY29tbW9uX3JhdGVzW2Nsb2NrXSwKKwkJCQkJ CQkgICAgbGFuZV9jb3VudCwKKwkJCQkJCQkgICAgaGFzX21zdCk7CisJCQlpZiAoZG9uZSkgewor CQkJCWludGVsX2RwLT5tYXhfbGFuZXNfdXBmcm9udCA9IGxhbmVfY291bnQ7CisJCQkJaW50ZWxf ZHAtPm1heF9saW5rX3JhdGVfdXBmcm9udCA9IGNvbW1vbl9yYXRlc1tjbG9ja107CisJCQkJYnJl YWs7CisJCQl9CisJCX0KKwl9CisKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5kcGxsX2xvY2sp OworCisJaWYgKGNydGMpCisJCXJldCA9IGludGVsX2RwX3VwZnJvbnRfY3J0Y19kaXNhYmxlKGlu dGVsX2NydGMsICZjdHgsIHRydWUpOworCitleGl0X2ZhaWw6CisJaWYgKHJldCA9PSAtRURFQURM SykgeworCQlkcm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOworCQlnb3RvIHJldHJ5OworCX0KKwlk cm1fbW9kZXNldF9kcm9wX2xvY2tzKCZjdHgpOworCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgm Y3R4KTsKKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKTsK KwlyZXR1cm4gZG9uZTsKK30KKwogc3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVzCiBpbnRlbF9k cF9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCSAgICBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKQEAgLTIxMSw2ICs0MzgsMTkgQEAgaW50ZWxfZHBf bW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCQl0YXJnZXRfY2xv Y2sgPSBmaXhlZF9tb2RlLT5jbG9jazsKIAl9CiAKKwlpZiAoaW50ZWxfZHAtPnVwZnJvbnRfbGlu a190cmFpbiAmJiAhaW50ZWxfZHAtPnVwZnJvbnRfZG9uZSkgeworCQlib29sIGRvX3VwZnJvbnRf bGlua190cmFpbjsKKwkJLyogRG8gbm90IGRvIHVwZnJvbnQgbGluayB0cmFpbiwgaWYgaXQgaXMg YSBjb21wbGlhbmNlCisJCSAqIHJlcXVlc3QKKwkJICovCisJCWRvX3VwZnJvbnRfbGlua190cmFp biA9ICFpbnRlbF9kcC0+dXBmcm9udF9kb25lICYmCisJCQkoaW50ZWxfZHAtPmNvbXBsaWFuY2Vf dGVzdF90eXBlICE9CisJCQkgRFBfVEVTVF9MSU5LX1RSQUlOSU5HKTsKKworCQlpZiAoZG9fdXBm cm9udF9saW5rX3RyYWluKQorCQkJaW50ZWxfZHAtPnVwZnJvbnRfZG9uZSA9IGludGVsX2RwX3Vw ZnJvbnRfbGlua190cmFpbihpbnRlbF9kcCk7CisJfQorCiAJbWF4X2xpbmtfY2xvY2sgPSBpbnRl bF9kcF9tYXhfbGlua19yYXRlKGludGVsX2RwKTsKIAltYXhfbGFuZXMgPSBpbnRlbF9kcF9tYXhf bGFuZV9jb3VudChpbnRlbF9kcCk7CiAKQEAgLTEyNjMsNjAgKzE1MDMsNiBAQCBpbnRlbF9kcF9h dXhfaW5pdChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpCiAJaW50ZWxfZHAtPmF1eC50cmFuc2ZlciA9IGludGVsX2RwX2F1eF90cmFu c2ZlcjsKIH0KIAotc3RhdGljIGludAotaW50ZWxfZHBfc2lua19yYXRlcyhzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwLCBjb25zdCBpbnQgKipzaW5rX3JhdGVzKQotewotCWlmIChpbnRlbF9kcC0+ bnVtX3NpbmtfcmF0ZXMpIHsKLQkJKnNpbmtfcmF0ZXMgPSBpbnRlbF9kcC0+c2lua19yYXRlczsK LQkJcmV0dXJuIGludGVsX2RwLT5udW1fc2lua19yYXRlczsKLQl9Ci0KLQkqc2lua19yYXRlcyA9 IGRlZmF1bHRfcmF0ZXM7Ci0KLQlyZXR1cm4gKGludGVsX2RwX21heF9saW5rX2J3KGludGVsX2Rw KSA+PiAzKSArIDE7Ci19Ci0KLWJvb2wgaW50ZWxfZHBfc291cmNlX3N1cHBvcnRzX2hicjIoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCkKLXsKLQlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpk aWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKLQlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXY7Ci0KLQkvKiBXYURpc2FibGVIQlIyOnNrbCAq LwotCWlmIChJU19TS0xfUkVWSUQoZGV2LCAwLCBTS0xfUkVWSURfQjApKQotCQlyZXR1cm4gZmFs c2U7Ci0KLQlpZiAoKElTX0hBU1dFTEwoZGV2KSAmJiAhSVNfSFNXX1VMWChkZXYpKSB8fCBJU19C Uk9BRFdFTEwoZGV2KSB8fAotCSAgICAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkpCi0JCXJl dHVybiB0cnVlOwotCWVsc2UKLQkJcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgaW50Ci1pbnRl bF9kcF9zb3VyY2VfcmF0ZXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgY29uc3QgaW50ICoq c291cmNlX3JhdGVzKQotewotCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0g ZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkaWdf cG9ydC0+YmFzZS5iYXNlLmRldjsKLQlpbnQgc2l6ZTsKLQotCWlmIChJU19CUk9YVE9OKGRldikp IHsKLQkJKnNvdXJjZV9yYXRlcyA9IGJ4dF9yYXRlczsKLQkJc2l6ZSA9IEFSUkFZX1NJWkUoYnh0 X3JhdGVzKTsKLQl9IGVsc2UgaWYgKElTX1NLWUxBS0UoZGV2KSB8fCBJU19LQUJZTEFLRShkZXYp KSB7Ci0JCSpzb3VyY2VfcmF0ZXMgPSBza2xfcmF0ZXM7Ci0JCXNpemUgPSBBUlJBWV9TSVpFKHNr bF9yYXRlcyk7Ci0JfSBlbHNlIHsKLQkJKnNvdXJjZV9yYXRlcyA9IGRlZmF1bHRfcmF0ZXM7Ci0J CXNpemUgPSBBUlJBWV9TSVpFKGRlZmF1bHRfcmF0ZXMpOwotCX0KLQotCS8qIFRoaXMgZGVwZW5k cyBvbiB0aGUgZmFjdCB0aGF0IDUuNCBpcyBsYXN0IHZhbHVlIGluIHRoZSBhcnJheSAqLwotCWlm ICghaW50ZWxfZHBfc291cmNlX3N1cHBvcnRzX2hicjIoaW50ZWxfZHApKQotCQlzaXplLS07Ci0K LQlyZXR1cm4gc2l6ZTsKLX0KLQogc3RhdGljIHZvaWQKIGludGVsX2RwX3NldF9jbG9jayhzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KnBpcGVfY29uZmlnKQpAQCAtMTM1MCw0MiArMTUzNiw2IEBAIGludGVsX2RwX3NldF9jbG9jayhz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAl9CiB9CiAKLXN0YXRpYyBpbnQgaW50ZXJz ZWN0X3JhdGVzKGNvbnN0IGludCAqc291cmNlX3JhdGVzLCBpbnQgc291cmNlX2xlbiwKLQkJCSAg IGNvbnN0IGludCAqc2lua19yYXRlcywgaW50IHNpbmtfbGVuLAotCQkJICAgaW50ICpjb21tb25f cmF0ZXMpCi17Ci0JaW50IGkgPSAwLCBqID0gMCwgayA9IDA7Ci0KLQl3aGlsZSAoaSA8IHNvdXJj ZV9sZW4gJiYgaiA8IHNpbmtfbGVuKSB7Ci0JCWlmIChzb3VyY2VfcmF0ZXNbaV0gPT0gc2lua19y YXRlc1tqXSkgewotCQkJaWYgKFdBUk5fT04oayA+PSBEUF9NQVhfU1VQUE9SVEVEX1JBVEVTKSkK LQkJCQlyZXR1cm4gazsKLQkJCWNvbW1vbl9yYXRlc1trXSA9IHNvdXJjZV9yYXRlc1tpXTsKLQkJ CSsrazsKLQkJCSsraTsKLQkJCSsrajsKLQkJfSBlbHNlIGlmIChzb3VyY2VfcmF0ZXNbaV0gPCBz aW5rX3JhdGVzW2pdKSB7Ci0JCQkrK2k7Ci0JCX0gZWxzZSB7Ci0JCQkrK2o7Ci0JCX0KLQl9Ci0J cmV0dXJuIGs7Ci19Ci0KLXN0YXRpYyBpbnQgaW50ZWxfZHBfY29tbW9uX3JhdGVzKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsCi0JCQkJIGludCAqY29tbW9uX3JhdGVzKQotewotCWNvbnN0IGlu dCAqc291cmNlX3JhdGVzLCAqc2lua19yYXRlczsKLQlpbnQgc291cmNlX2xlbiwgc2lua19sZW47 Ci0KLQlzaW5rX2xlbiA9IGludGVsX2RwX3NpbmtfcmF0ZXMoaW50ZWxfZHAsICZzaW5rX3JhdGVz KTsKLQlzb3VyY2VfbGVuID0gaW50ZWxfZHBfc291cmNlX3JhdGVzKGludGVsX2RwLCAmc291cmNl X3JhdGVzKTsKLQotCXJldHVybiBpbnRlcnNlY3RfcmF0ZXMoc291cmNlX3JhdGVzLCBzb3VyY2Vf bGVuLAotCQkJICAgICAgIHNpbmtfcmF0ZXMsIHNpbmtfbGVuLAotCQkJICAgICAgIGNvbW1vbl9y YXRlcyk7Ci19CiAKIHN0YXRpYyB2b2lkIHNucHJpbnRmX2ludF9hcnJheShjaGFyICpzdHIsIHNp emVfdCBsZW4sCiAJCQkgICAgICAgY29uc3QgaW50ICphcnJheSwgaW50IG5lbGVtKQpAQCAtMTQ0 Myw2ICsxNTkzLDkgQEAgaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKQogCWludCByYXRlc1tEUF9NQVhfU1VQUE9SVEVEX1JBVEVTXSA9IHt9OwogCWludCBs ZW47CiAKKwlpZiAoaW50ZWxfZHAtPm1heF9saW5rX3JhdGVfdXBmcm9udCkKKwkJcmV0dXJuIGlu dGVsX2RwLT5tYXhfbGlua19yYXRlX3VwZnJvbnQ7CisKIAlsZW4gPSBpbnRlbF9kcF9jb21tb25f cmF0ZXMoaW50ZWxfZHAsIHJhdGVzKTsKIAlpZiAoV0FSTl9PTihsZW4gPD0gMCkpCiAJCXJldHVy biAxNjIwMDA7CkBAIC0xNDc5LDcgKzE2MzIsNyBAQCBpbnRlbF9kcF9jb21wdXRlX2NvbmZpZyhz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAllbnVtIHBvcnQgcG9ydCA9IGRwX3RvX2Rp Z19wb3J0KGludGVsX2RwKS0+cG9ydDsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9 IHRvX2ludGVsX2NydGMocGlwZV9jb25maWctPmJhc2UuY3J0Yyk7CiAJc3RydWN0IGludGVsX2Nv bm5lY3RvciAqaW50ZWxfY29ubmVjdG9yID0gaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3RvcjsK LQlpbnQgbGFuZV9jb3VudCwgY2xvY2s7CisJaW50IGxhbmVfY291bnQsIGNsb2NrID0gMDsKIAlp bnQgbWluX2xhbmVfY291bnQgPSAxOwogCWludCBtYXhfbGFuZV9jb3VudCA9IGludGVsX2RwX21h eF9sYW5lX2NvdW50KGludGVsX2RwKTsKIAkvKiBDb252ZW5pZW50bHksIHRoZSBsaW5rIEJXIGNv bnN0YW50cyBiZWNvbWUgaW5kaWNlcyB3aXRoIGEgc2hpZnQuLi4qLwpAQCAtMTU1OCwxMSArMTcx MSwyMyBAQCBpbnRlbF9kcF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKIAlmb3IgKDsgYnBwID49IDYqMzsgYnBwIC09IDIqMykgewogCQltb2RlX3JhdGUgPSBp bnRlbF9kcF9saW5rX3JlcXVpcmVkKGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2ssCiAJCQkJCQkg ICBicHApOworCQlpZiAoIWlzX2VkcChpbnRlbF9kcCkgJiYgaW50ZWxfZHAtPnVwZnJvbnRfZG9u ZSkgeworCQkJY2xvY2sgPSBtYXhfY2xvY2s7CisJCQlsYW5lX2NvdW50ID0gaW50ZWxfZHAtPm1h eF9sYW5lc191cGZyb250OworCQkJbGlua19jbG9jayA9IGludGVsX2RwLT5tYXhfbGlua19yYXRl X3VwZnJvbnQ7CisJCQlsaW5rX2F2YWlsID0gaW50ZWxfZHBfbWF4X2RhdGFfcmF0ZShsaW5rX2Ns b2NrLCBsYW5lX2NvdW50KTsKKwkJCW1vZGVfcmF0ZSA9IGludGVsX2RwX2xpbmtfcmVxdWlyZWQo YWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jaywKKwkJCQkJCQkgICBicHApOworCQkJaWYgKG1vZGVf cmF0ZSA8PSBsaW5rX2F2YWlsKQorCQkJCWdvdG8gZm91bmQ7CisJCQllbHNlCisJCQkJY29udGlu dWU7CisJCX0KIAogCQlmb3IgKGNsb2NrID0gbWluX2Nsb2NrOyBjbG9jayA8PSBtYXhfY2xvY2s7 IGNsb2NrKyspIHsKIAkJCWZvciAobGFuZV9jb3VudCA9IG1pbl9sYW5lX2NvdW50OwotCQkJCWxh bmVfY291bnQgPD0gbWF4X2xhbmVfY291bnQ7Ci0JCQkJbGFuZV9jb3VudCA8PD0gMSkgeworCQkJ ICAgICBsYW5lX2NvdW50IDw9IG1heF9sYW5lX2NvdW50OworCQkJICAgICBsYW5lX2NvdW50IDw8 PSAxKSB7CiAKIAkJCQlsaW5rX2Nsb2NrID0gY29tbW9uX3JhdGVzW2Nsb2NrXTsKIAkJCQlsaW5r X2F2YWlsID0gaW50ZWxfZHBfbWF4X2RhdGFfcmF0ZShsaW5rX2Nsb2NrLApAQCAtMTU3Miw2ICsx NzM3LDcgQEAgaW50ZWxfZHBfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCiAJCQkJCWdvdG8gZm91bmQ7CiAJCQkJfQogCQkJfQorCiAJCX0KIAl9CiAKQEAgLTE1 OTIsNyArMTc1OCw2IEBAIGZvdW5kOgogCX0KIAogCXBpcGVfY29uZmlnLT5sYW5lX2NvdW50ID0g bGFuZV9jb3VudDsKLQogCXBpcGVfY29uZmlnLT5waXBlX2JwcCA9IGJwcDsKIAlwaXBlX2NvbmZp Zy0+cG9ydF9jbG9jayA9IGNvbW1vbl9yYXRlc1tjbG9ja107CiAKQEAgLTQyNTAsNyArNDQxNSw3 IEBAIGludGVsX2RwX2xvbmdfcHVsc2Uoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29u bmVjdG9yKQogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsKIAllbnVt IGRybV9jb25uZWN0b3Jfc3RhdHVzIHN0YXR1czsKIAllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJf ZG9tYWluIHBvd2VyX2RvbWFpbjsKLQl1OCBzaW5rX2lycV92ZWN0b3IgPSAwOworCXU4IHNpbmtf aXJxX3ZlY3RvcjsKIAogCXBvd2VyX2RvbWFpbiA9IGludGVsX2Rpc3BsYXlfcG9ydF9hdXhfcG93 ZXJfZG9tYWluKGludGVsX2VuY29kZXIpOwogCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KHRvX2k5 MTUoZGV2KSwgcG93ZXJfZG9tYWluKTsKQEAgLTQzNDMsOSArNDUwOCwxMCBAQCBpbnRlbF9kcF9s b25nX3B1bHNlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKIAl9CiAK IG91dDoKLQlpZiAoKHN0YXR1cyAhPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkgJiYKLQkg ICAgKGludGVsX2RwLT5pc19tc3QgPT0gZmFsc2UpKQorCWlmIChzdGF0dXMgIT0gY29ubmVjdG9y X3N0YXR1c19jb25uZWN0ZWQpIHsKIAkJaW50ZWxfZHBfdW5zZXRfZWRpZChpbnRlbF9kcCk7CisJ CWludGVsX2RwLT51cGZyb250X2RvbmUgPSBmYWxzZTsKKwl9CiAKIAlpbnRlbF9kaXNwbGF5X3Bv d2VyX3B1dCh0b19pOTE1KGRldiksIHBvd2VyX2RvbWFpbik7CiAJcmV0dXJuOwpAQCAtNTU5NCw2 ICs1NzYwLDEyIEBAIGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmludGVsX2RpZ19wb3J0LAogCWlmICh0eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9l RFApCiAJCWludGVsX2VuY29kZXItPnR5cGUgPSBJTlRFTF9PVVRQVVRfRURQOwogCisJLyogSW5p dGlhbGl6ZSB1cGZyb250IGxpbmsgdHJhaW5pbmcgdmZ1bmMgZm9yIERQICovCisJaWYgKGludGVs X2VuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0VEUCkgeworCQlpZiAoSVNfQlJPWFRPTihk ZXYpKQorCQkJaW50ZWxfZHAtPnVwZnJvbnRfbGlua190cmFpbiA9IGludGVsX2J4dF91cGZyb250 X2xpbmtfdHJhaW47CisJfQorCiAJLyogZURQIG9ubHkgb24gcG9ydCBCIGFuZC9vciBDIG9uIHZs di9jaHYgKi8KIAlpZiAoV0FSTl9PTigoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJ RVcoZGV2KSkgJiYKIAkJICAgIGlzX2VkcChpbnRlbF9kcCkgJiYgcG9ydCAhPSBQT1JUX0IgJiYg cG9ydCAhPSBQT1JUX0MpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHBfbGlua190cmFpbmluZy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190 cmFpbmluZy5jCmluZGV4IDYwZmIzOWMuLmU1ODQ0MmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMKQEAgLTIzMiw3ICsyMzIsNiBAQCBzdGF0aWMg dTMyIGludGVsX2RwX3RyYWluaW5nX3BhdHRlcm4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK IHN0YXRpYyB2b2lkCiBpbnRlbF9kcF9saW5rX3RyYWluaW5nX2NoYW5uZWxfZXF1YWxpemF0aW9u KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7Ci0JYm9vbCBjaGFubmVsX2VxID0gZmFsc2U7 CiAJaW50IHRyaWVzLCBjcl90cmllczsKIAl1MzIgdHJhaW5pbmdfcGF0dGVybjsKIApAQCAtMjQ4 LDcgKzI0Nyw3IEBAIGludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2hhbm5lbF9lcXVhbGl6YXRpb24o c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAogCXRyaWVzID0gMDsKIAljcl90cmllcyA9IDA7 Ci0JY2hhbm5lbF9lcSA9IGZhbHNlOworCWludGVsX2RwLT5jaGFubmVsX2VxX3N0YXR1cyA9IGZh bHNlOwogCWZvciAoOzspIHsKIAkJdWludDhfdCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19T SVpFXTsKIApAQCAtMjc2LDcgKzI3NSw3IEBAIGludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2hhbm5l bF9lcXVhbGl6YXRpb24oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAogCQlpZiAoZHJtX2Rw X2NoYW5uZWxfZXFfb2sobGlua19zdGF0dXMsCiAJCQkJCSBpbnRlbF9kcC0+bGFuZV9jb3VudCkp IHsKLQkJCWNoYW5uZWxfZXEgPSB0cnVlOworCQkJaW50ZWxfZHAtPmNoYW5uZWxfZXFfc3RhdHVz ID0gdHJ1ZTsKIAkJCWJyZWFrOwogCQl9CiAKQEAgLTMwMiw3ICszMDEsNyBAQCBpbnRlbF9kcF9s aW5rX3RyYWluaW5nX2NoYW5uZWxfZXF1YWxpemF0aW9uKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCiAKIAlpbnRlbF9kcF9zZXRfaWRsZV9saW5rX3RyYWluKGludGVsX2RwKTsKIAotCWlmIChj aGFubmVsX2VxKQorCWlmIChpbnRlbF9kcC0+Y2hhbm5lbF9lcV9zdGF0dXMpCiAJCURSTV9ERUJV R19LTVMoIkNoYW5uZWwgRVEgZG9uZS4gRFAgVHJhaW5pbmcgc3VjY2Vzc2Z1bFxuIik7CiB9CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggNjIzMzQ4Ny4uYmMwM2NlOCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTg0OSw2ICs4NDksMTUgQEAgc3RydWN0IGludGVsX2RwIHsK IAllbnVtIGhkbWlfZm9yY2VfYXVkaW8gZm9yY2VfYXVkaW87CiAJYm9vbCBsaW1pdGVkX2NvbG9y X3JhbmdlOwogCWJvb2wgY29sb3JfcmFuZ2VfYXV0bzsKKworCS8qIFdoZXRoZXIgQ2hhbm5lbCBF cXVhbGl6YXRpb24gd2FzIGFjaGlldmVkIGR1cmluZyBMaW5rIHRyYWluaW5nICovCisJYm9vbCBj aGFubmVsX2VxX3N0YXR1czsKKworCS8qIFVwZnJvbnQgbGluayB0cmFpbiBwYXJhbWV0ZXJzICov CisJaW50IG1heF9saW5rX3JhdGVfdXBmcm9udDsKKwl1aW50OF90IG1heF9sYW5lc191cGZyb250 OworCWJvb2wgdXBmcm9udF9kb25lOworCiAJdWludDhfdCBkcGNkW0RQX1JFQ0VJVkVSX0NBUF9T SVpFXTsKIAl1aW50OF90IHBzcl9kcGNkW0VEUF9QU1JfUkVDRUlWRVJfQ0FQX1NJWkVdOwogCXVp bnQ4X3QgZG93bnN0cmVhbV9wb3J0c1tEUF9NQVhfRE9XTlNUUkVBTV9QT1JUU107CkBAIC05MDYs NiArOTE1LDEwIEBAIHN0cnVjdCBpbnRlbF9kcCB7CiAJLyogVGhpcyBpcyBjYWxsZWQgYmVmb3Jl IGEgbGluayB0cmFpbmluZyBpcyBzdGFydGVyZCAqLwogCXZvaWQgKCpwcmVwYXJlX2xpbmtfcmV0 cmFpbikoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7CiAKKwkvKiBGb3IgVXBmcm9udCBsaW5r IHRyYWluaW5nICovCisJYm9vbCAoKnVwZnJvbnRfbGlua190cmFpbikoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCwgaW50IGNsb2NrLAorCQkJCSAgIHVpbnQ4X3QgbGFuZV9jb3VudCwgYm9vbCBs aW5rX21zdCk7CisKIAkvKiBEaXNwbGF5cG9ydCBjb21wbGlhbmNlIHRlc3RpbmcgKi8KIAl1bnNp Z25lZCBsb25nIGNvbXBsaWFuY2VfdGVzdF90eXBlOwogCXVuc2lnbmVkIGxvbmcgY29tcGxpYW5j ZV90ZXN0X2RhdGE7CkBAIC0xMTI1LDYgKzExMzgsOSBAQCB2b2lkIGludGVsX2RkaV9jbG9ja19n ZXQoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCQkgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKnBpcGVfY29uZmlnKTsKIHZvaWQgaW50ZWxfZGRpX3NldF92Y19wYXlsb2FkX2FsbG9j KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbCBzdGF0ZSk7CiB1aW50MzJfdCBkZGlfc2lnbmFs X2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKK2Jvb2wgaW50ZWxfYnh0X3VwZnJv bnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAorCQkJCSAgaW50IGNsb2Nr LCB1aW50OF90IGxhbmVfY291bnQsCisJCQkJICBib29sIGxpbmtfbXN0KTsKIAogdW5zaWduZWQg aW50IGludGVsX2ZiX2FsaWduX2hlaWdodChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSAg IHVuc2lnbmVkIGludCBoZWlnaHQsCi0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==