From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: [PATCH v15 13/14] drm/i915/dp: Enable Upfront link training for typeC DP support on HSW/BDW/SKL/BXT (DDI platforms) Date: Thu, 8 Sep 2016 13:02:11 -0700 Message-ID: <1473364931-5657-2-git-send-email-manasi.d.navare@intel.com> References: <1473364931-5657-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8B2B06E24A for ; Thu, 8 Sep 2016 20:02:34 +0000 (UTC) In-Reply-To: <1473364931-5657-1-git-send-email-manasi.d.navare@intel.com> In-Reply-To: <1473355350-29955-1-git-send-email-manasi.d.navare@intel.com> References: <1473355350-29955-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 cyBzaW5jZSB2MTQ6CiogUmViYXNlZCBvbiBuZXcgcmV2aXNpb24gb2YgY29tcHV0ZSBjb25maWcg cGF0Y2ggKE1hbmFzaSkKQ2hhbmdlcyBzaW5jZSB2MTM6CiogRml4IHNvbWUgaW5kZW50YXRpb24g aXNzdWVzIChNaWthIEthaG9sYSkKQ2hhbmdlcyBzaW5jZSB2MTI6CiogRml4IFJlYmFzZSBpc3N1 ZXMgKE1pa2EgS2Fob2xhKQpDaGFuZ2VzIHNpbmNlIHYxMToKKiBDaGFuZ2UgdGhlIGZhbGxiYWNr IGxpbmsgcmF0ZSBsb2dpYyAoTWFuYXNpKQpDaGFuZ2VzIHNpbmNlIHYxMDoKKiBVc2UgdGhlIGRk aSBsaW5rIHRyYWluIGZ1bmN0aW9uIHRoYXQgbG9vcHMgdGhyb3VnaCBhbGwgdGhlIGxpbmsgcmF0 ZXMKYW5kIGxhbmUgY291bnRzIHN0YXJ0aW5nIGZyb20gdGhlIGhpZ2hlc3Qgc3VwcG9ydGVkIChN YW5hc2kpCiogRm9yIHVwZnJvbnQgbGluayB0cmFpbmluZywgc2V0IHRoZSB1cGZyb250IGZsYWcg c28gdGhhdCB0aGUgbGluayBjYW4KYmUgZGlzYWJsZWQgYWZ0ZXIgY2FjaGluZyB1cGZyb250IHZh bHVlcyAoTWFuYXNpKQpDaGFuZ2VzIHNpbmNlIHY5OgoqIENoYW5nZSB0aGUgbWFjcm9zIHRvIHVz ZSBkZXZfcHJpdiBpbiBwbGFjZSBvZiBkZXYgKERhdmlkIFdlaW5laGFsbCkKQ2hhbmdlcyBzaW5j ZSB2ODoKKiBSZXNldCB1cGZyb250IGxhbmUgY291bnQgYW5kIGxpbmsgcmF0ZSB2YWx1ZXMgb24g SFBECmZvciBEUCBjb25uZWN0b3IgcGh5c2ljYWwgZGlzY29ubmVjdCAoTWFuYXNpKQpDaGFuZ2Vz IHNpbmNlIHY3OgoqIE1vdmUgdGhlIHVwZnJvbnQgbGluayB0cmFpbmluZyB0byBpbnRlbF9kcF9t b2RlX3ZhbGlkKCkKICB0byBhdm9pZCBhIHJhY2UgY29uZGl0aW9uIHdpdGggRFAgTVNUIHNpZGVi YW5kIGNvbW1zLiAoVmlsbGUpCkNoYW5nZXMgc2luY2UgdjY6CiogRml4IHNvbWUgaW5pdGlhbGl6 YXRpb24gYnVncyBvbiBsaW5rX3JhdGUgKEppbSBCcmlkZSkKKiBVc2UgbGlua19yYXRlIChhbmQg bm90IGxpbmtfYncpIGZvciB1cGZyb250IChWaWxsZSkKKiBNYWtlIGludGVsX2RwX3VwZnJvbnQq KCkgYXMgYSB2ZnVuYyAoQW5kZXIpCiogVGhlIHRyYWluX3NldF92YWxpZCB2YXJpYWJsZSBpbiBp bnRlbF9kcCB3YXMgcmVtb3ZlZCBkdWUgdG8KICBpc3N1ZXMgaW4gZmFzdCBsaW5rIHRyYWluaW5n LiBTbywgdG8gaW5kaWNhdGUgdGhlIGxpbmsgdHJhaW4KICBzdGF0dXMsIG1vdmUgdGhlIGNoYW5u ZWxfZXEgaW5zaWRlIGludGVsX2RwLgpDaGFuZ2VzIHNpbmNlIHY1OgoqIE1vdmVkIHJldHJ5IGxv Z2ljIGluIHVwZnJvbnQgdG8gaW50ZWxfZHAuYyBzbyB0aGF0IGl0CiAgY2FuIGJlIHVzZWQgZm9y IGFsbCBwbGF0Zm9ybXMuCkNoYW5nZXMgc2luY2UgdjQ6CiogUmVtb3ZlZCB1c2FnZSBvZiBjcnRj X3N0YXRlIGluIHVwZnJvbnQgbGluayB0cmFpbmluZzsKICBIZW5jZSBubyBuZWVkIHRvIGZpbmQg ZnJlZSBjcnRjIHRvIGRvIHVwZnJvbnQgbm93LgoqIFJlLWVuYWJsZSBjcnRjIGlmIGl0IHdhcyBk aXNhYmxlZCBmb3IgdXBmcm9udC4KKiBVc2Ugc2VwYXJhdGUgdmFyaWFibGVzIHRvIHRyYWNrIG1h eCBsYW5lIGNvdW50CiAgYW5kIGxpbmsgcmF0ZSBmb3VuZCBieSB1cGZyb250LCB3aXRob3V0IG1v ZGlmeWluZwogIHRoZSBvcmlnaW5hbCBEUENEIHJlYWQgZnJvbSBwYW5lbC4KQ2hhbmdlcyBzaW5j ZSB2MzoKKiBGaXhlZCBhIHJldHVybiB2YWx1ZSBvbiBCWFQgY2hlY2sKKiBSZXdvcmtlZCBvbiB0 b3Agb2YgYnh0X2RkaV9wbGxfc2VsZWN0IHNwbGl0IGZyb20gQW5kZXIKKiBSZW5hbWVkIGZyb20g ZGRpX3VwZnJvbnQgdG8gYnh0X3VwZnJvbnQgc2luY2UgdGhlCiAgdXBmcm9udCBsb2dpYyBpbmNs dWRlcyBCWFQgc3BlY2lmaWMgZnVuY3Rpb25zIGZvciBub3cuCkNoYW5nZXMgc2luY2UgdjI6Ciog UmViYXNlZCBvbiB0b3Agb2YgbGF0ZXN0IGRwbGxfbWdyLmMgY29kZSBhbmQKICBsYXRlc3QgSFBE IHJlbGF0ZWQgY2xlYW4gdXBzLgoqIENvcnJlY3RlZCByZXR1cm4gdmFsdWVzIGZyb20gdXBmcm9u dCAoQW5kZXIpCiogQ29ycmVjdGVkIGF0b21pYyBsb2NraW5nIGZvciB1cGZyb250IGluIGludGVs X2RwLmMgKFZpbGxlKQpDaGFuZ2VzIHNpbmNlIHYxOgoqICBhbGwgcGxsIHJlbGF0ZWQgZnVuY3Rp b25zIGluc2lkZSBkZGkuYwoKU2lnbmVkLW9mZi1ieTogRHVyZ2Fkb3NzIFIgPGR1cmdhZG9zcy5y QGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogSmltIEJyaWRlIDxqaW0uYnJpZGVAbGludXguaW50 ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50 ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jICAgICAgICAgICAg ICB8ICAyMSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgICAgICAgICAg IHwgMzc3ICsrKysrKysrKysrKysrKysrKystLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcF9saW5rX3RyYWluaW5nLmMgfCAgIDEgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmggICAgICAgICAgICAgIHwgIDE0ICstCiA0IGZpbGVzIGNoYW5nZWQsIDMxMiBpbnNl cnRpb25zKCspLCAxMDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwppbmRl eCAxMjc4ZGFhLi43OTdjM2JiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kZGkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwpAQCAtMTY3Myw3 ICsxNjczLDggQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCiAJcGxsLT5jb25maWcuY3J0Y19tYXNrID0gMDsKIAogCS8q IElmIExpbmsgVHJhaW5pbmcgZmFpbHMsIHNlbmQgYSB1ZXZlbnQgdG8gZ2VuZXJhdGUgYSBob3Rw bHVnICovCi0JaWYgKCEoaW50ZWxfZGRpX2xpbmtfdHJhaW4oaW50ZWxfZHAsIGxpbmtfcmF0ZSwg bGFuZV9jb3VudCwgbGlua19tc3QpKSkKKwlpZiAoIShpbnRlbF9kZGlfbGlua190cmFpbihpbnRl bF9kcCwgbGlua19yYXRlLCBsYW5lX2NvdW50LCBsaW5rX21zdCwKKwkJCQkgICBmYWxzZSkpKQog CQlkcm1fa21zX2hlbHBlcl9ob3RwbHVnX2V2ZW50KGVuY29kZXItPmJhc2UuZGV2KTsKIAlwbGwt PmNvbmZpZyA9IHRtcF9wbGxfY29uZmlnOwogfQpAQCAtMjQ2MSw3ICsyNDYyLDcgQEAgaW50ZWxf ZGRpX2dldF9saW5rX2RwbGwoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IGNsb2NrKQog CiBib29sCiBpbnRlbF9kZGlfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBp bnQgbWF4X2xpbmtfcmF0ZSwKLQkJICAgICB1aW50OF90IG1heF9sYW5lX2NvdW50LCBib29sIGxp bmtfbXN0KQorCQkgICAgIHVpbnQ4X3QgbWF4X2xhbmVfY291bnQsIGJvb2wgbGlua19tc3QsIGJv b2wgaXNfdXBmcm9udCkKIHsKIAlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSBp bnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yOwogCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyID0gY29ubmVjdG9yLT5lbmNvZGVyOwpAQCAtMjUwNyw2ICsyNTA4LDcgQEAgaW50ZWxfZGRp X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IG1heF9saW5rX3JhdGUs CiAJCQlwbGwtPmZ1bmNzLmRpc2FibGUoZGV2X3ByaXYsIHBsbCk7CiAJCQlwbGwtPmNvbmZpZyA9 IHRtcF9wbGxfY29uZmlnOwogCQl9CisKIAkJaWYgKHJldCkgewogCQkJRFJNX0RFQlVHX0tNUygi TGluayBUcmFpbmluZyBzdWNjZXNzZnVsIGF0IGxpbmsgcmF0ZTogIgogCQkJCSAgICAgICIlZCBs YW5lOiVkXG4iLCBsaW5rX3JhdGUsIGxhbmVfY291bnQpOwpAQCAtMjUxNSw2ICsyNTE3LDIxIEBA IGludGVsX2RkaV9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBtYXhf bGlua19yYXRlLAogCX0KIAlpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oaW50ZWxfZHApOwogCisJ aWYgKGlzX3VwZnJvbnQpIHsKKwkJRFJNX0RFQlVHX0tNUygiVXBmcm9udCBsaW5rIHRyYWluICVz OiBsaW5rX2Nsb2NrOiVkIGxhbmVzOiVkXG4iLAorCQkJICAgICAgcmV0ID8gIlBhc3NlZCIgOiAi RmFpbGVkIiwKKwkJCSAgICAgIGxpbmtfcmF0ZSwgbGFuZV9jb3VudCk7CisJCS8qIERpc2FibGUg cG9ydCBmb2xsb3dlZCBieSBQTEwgZm9yIG5leHQgcmV0cnkvY2xlYW4gdXAgKi8KKwkJaW50ZWxf ZGRpX3Bvc3RfZGlzYWJsZShlbmNvZGVyLCBOVUxMLCBOVUxMKTsKKwkJcGxsLT5mdW5jcy5kaXNh YmxlKGRldl9wcml2LCBwbGwpOworCQlwbGwtPmNvbmZpZyA9IHRtcF9wbGxfY29uZmlnOworCQlp ZiAocmV0KSB7CisJCQkvKiBTYXZlIHRoZSB1cGZyb250IHZhbHVlcyAqLworCQkJaW50ZWxfZHAt Pm1heF9sYW5lc191cGZyb250ID0gbGFuZV9jb3VudDsKKwkJCWludGVsX2RwLT5tYXhfbGlua19y YXRlX3VwZnJvbnQgPSBsaW5rX3JhdGU7CisJCX0KKwl9CisKIAlpZiAoIWxhbmVfY291bnQpCiAJ CURSTV9FUlJPUigiTGluayBUcmFpbmluZyBGYWlsZWRcbiIpOwogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYwppbmRleCA2MGM4ODU3Li43YWRmMDkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKQEAg LTE1MywxMiArMTUzLDIxIEBAIGludGVsX2RwX21heF9saW5rX2J3KHN0cnVjdCBpbnRlbF9kcCAg KmludGVsX2RwKQogc3RhdGljIHU4IGludGVsX2RwX21heF9sYW5lX2NvdW50KHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCiB7CiAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGln X3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Ci0JdTggc291cmNlX21heCwgc2lua19t YXg7CisJdTggdGVtcCwgc291cmNlX21heCwgc2lua19tYXg7CiAKIAlzb3VyY2VfbWF4ID0gaW50 ZWxfZGlnX3BvcnQtPm1heF9sYW5lczsKIAlzaW5rX21heCA9IGRybV9kcF9tYXhfbGFuZV9jb3Vu dChpbnRlbF9kcC0+ZHBjZCk7CiAKLQlyZXR1cm4gbWluKHNvdXJjZV9tYXgsIHNpbmtfbWF4KTsK Kwl0ZW1wID0gbWluKHNvdXJjZV9tYXgsIHNpbmtfbWF4KTsKKworCS8qCisJICogTGltaXQgbWF4 IGxhbmVzIHcuci50IHRvIHRoZSBtYXggdmFsdWUgZm91bmQKKwkgKiB1c2luZyBVcGZyb250IGxp bmsgdHJhaW5pbmcgYWxzby4KKwkgKi8KKwlpZiAoaW50ZWxfZHAtPm1heF9sYW5lc191cGZyb250 KQorCQlyZXR1cm4gbWluKHRlbXAsIGludGVsX2RwLT5tYXhfbGFuZXNfdXBmcm9udCk7CisJZWxz ZQorCQlyZXR1cm4gdGVtcDsKIH0KIAogLyoKQEAgLTE5MCw2ICsxOTksMjMwIEBAIGludGVsX2Rw X21heF9kYXRhX3JhdGUoaW50IG1heF9saW5rX2Nsb2NrLCBpbnQgbWF4X2xhbmVzKQogCXJldHVy biAobWF4X2xpbmtfY2xvY2sgKiBtYXhfbGFuZXMgKiA4KSAvIDEwOwogfQogCitzdGF0aWMgaW50 IGludGVsX2RwX3VwZnJvbnRfY3J0Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAor CQkJCQkgc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4ICpjdHgsCisJCQkJCSBib29sIGVu YWJsZSkKK3sKKwlpbnQgcmV0OworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKKwlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gY3J0Yy0+YmFzZS5kZXY7CisJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOworCisJ c3RhdGUgPSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKGRldik7CisJaWYgKCFzdGF0ZSkKKwkJcmV0 dXJuIC1FTk9NRU07CisKKwlzdGF0ZS0+YWNxdWlyZV9jdHggPSBjdHg7CisKKwljcnRjX3N0YXRl ID0gaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKKwlpZiAoSVNfRVJS KGNydGNfc3RhdGUpKSB7CisJCXJldCA9IFBUUl9FUlIoY3J0Y19zdGF0ZSk7CisJCWRybV9hdG9t aWNfc3RhdGVfZnJlZShzdGF0ZSk7CisJCXJldHVybiByZXQ7CisJfQorCisJRFJNX0RFQlVHX0tN UygiJXNhYmxpbmcgY3J0YyAlYyAlcyB1cGZyb250IGxpbmsgdHJhaW5cbiIsCisJCQllbmFibGUg PyAiRW4iIDogIkRpcyIsCisJCQlwaXBlX25hbWUocGlwZSksCisJCQllbmFibGUgPyAiYWZ0ZXIi IDogImJlZm9yZSIpOworCisJY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUgPSBlbmFibGU7CisJcmV0 ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOworCWlmIChyZXQpCisJCWRybV9hdG9taWNfc3Rh dGVfZnJlZShzdGF0ZSk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50CitpbnRlbF9k cF9zaW5rX3JhdGVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGNvbnN0IGludCAqKnNpbmtf cmF0ZXMpCit7CisJaWYgKGludGVsX2RwLT5udW1fc2lua19yYXRlcykgeworCQkqc2lua19yYXRl cyA9IGludGVsX2RwLT5zaW5rX3JhdGVzOworCQlyZXR1cm4gaW50ZWxfZHAtPm51bV9zaW5rX3Jh dGVzOworCX0KKworCSpzaW5rX3JhdGVzID0gZGVmYXVsdF9yYXRlczsKKworCXJldHVybiAoaW50 ZWxfZHBfbWF4X2xpbmtfYncoaW50ZWxfZHApID4+IDMpICsgMTsKK30KKworYm9vbCBpbnRlbF9k cF9zb3VyY2Vfc3VwcG9ydHNfaGJyMihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQoreworCXN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxf ZHApOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3Bv cnQtPmJhc2UuYmFzZS5kZXYpOworCisJLyogV2FEaXNhYmxlSEJSMjpza2wgKi8KKwlpZiAoSVNf U0tMX1JFVklEKGRldl9wcml2LCAwLCBTS0xfUkVWSURfQjApKQorCQlyZXR1cm4gZmFsc2U7CisK KwlpZiAoKElTX0hBU1dFTEwoZGV2X3ByaXYpICYmICFJU19IU1dfVUxYKGRldl9wcml2KSkgfHwK KwkgICAgSVNfQlJPQURXRUxMKGRldl9wcml2KSB8fCAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5 KSkKKwkJcmV0dXJuIHRydWU7CisJZWxzZQorCQlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBp bnQKK2ludGVsX2RwX3NvdXJjZV9yYXRlcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBjb25z dCBpbnQgKipzb3VyY2VfcmF0ZXMpCit7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGln X3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShkaWdfcG9ydC0+YmFzZS5iYXNlLmRldik7CisJaW50IHNp emU7CisKKwlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpIHsKKwkJKnNvdXJjZV9yYXRlcyA9IGJ4 dF9yYXRlczsKKwkJc2l6ZSA9IEFSUkFZX1NJWkUoYnh0X3JhdGVzKTsKKwl9IGVsc2UgaWYgKElT X1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0tBQllMQUtFKGRldl9wcml2KSkgeworCQkqc291cmNl X3JhdGVzID0gc2tsX3JhdGVzOworCQlzaXplID0gQVJSQVlfU0laRShza2xfcmF0ZXMpOworCX0g ZWxzZSB7CisJCSpzb3VyY2VfcmF0ZXMgPSBkZWZhdWx0X3JhdGVzOworCQlzaXplID0gQVJSQVlf U0laRShkZWZhdWx0X3JhdGVzKTsKKwl9CisKKwkvKiBUaGlzIGRlcGVuZHMgb24gdGhlIGZhY3Qg dGhhdCA1LjQgaXMgbGFzdCB2YWx1ZSBpbiB0aGUgYXJyYXkgKi8KKwlpZiAoIWludGVsX2RwX3Nv dXJjZV9zdXBwb3J0c19oYnIyKGludGVsX2RwKSkKKwkJc2l6ZS0tOworCisJcmV0dXJuIHNpemU7 Cit9CisKK3N0YXRpYyBpbnQgaW50ZXJzZWN0X3JhdGVzKGNvbnN0IGludCAqc291cmNlX3JhdGVz LCBpbnQgc291cmNlX2xlbiwKKwkJCSAgIGNvbnN0IGludCAqc2lua19yYXRlcywgaW50IHNpbmtf bGVuLAorCQkJICAgaW50ICpjb21tb25fcmF0ZXMpCit7CisJaW50IGkgPSAwLCBqID0gMCwgayA9 IDA7CisKKwl3aGlsZSAoaSA8IHNvdXJjZV9sZW4gJiYgaiA8IHNpbmtfbGVuKSB7CisJCWlmIChz b3VyY2VfcmF0ZXNbaV0gPT0gc2lua19yYXRlc1tqXSkgeworCQkJaWYgKFdBUk5fT04oayA+PSBE UF9NQVhfU1VQUE9SVEVEX1JBVEVTKSkKKwkJCQlyZXR1cm4gazsKKwkJCWNvbW1vbl9yYXRlc1tr XSA9IHNvdXJjZV9yYXRlc1tpXTsKKwkJCSsrazsKKwkJCSsraTsKKwkJCSsrajsKKwkJfSBlbHNl IGlmIChzb3VyY2VfcmF0ZXNbaV0gPCBzaW5rX3JhdGVzW2pdKSB7CisJCQkrK2k7CisJCX0gZWxz ZSB7CisJCQkrK2o7CisJCX0KKwl9CisJcmV0dXJuIGs7Cit9CisKK3N0YXRpYyBpbnQgaW50ZWxf ZHBfY29tbW9uX3JhdGVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCisJCQkJIGludCAqY29t bW9uX3JhdGVzKQoreworCWNvbnN0IGludCAqc291cmNlX3JhdGVzLCAqc2lua19yYXRlczsKKwlp bnQgc291cmNlX2xlbiwgc2lua19sZW47CisKKwlzaW5rX2xlbiA9IGludGVsX2RwX3NpbmtfcmF0 ZXMoaW50ZWxfZHAsICZzaW5rX3JhdGVzKTsKKworCS8qIENhcCBzaW5rIHJhdGVzIHcuci50IHVw ZnJvbnQgdmFsdWVzICovCisJaWYgKGludGVsX2RwLT5tYXhfbGlua19yYXRlX3VwZnJvbnQpIHsK KwkJaW50IGxlbiA9IHNpbmtfbGVuIC0gMTsKKworCQl3aGlsZSAobGVuID4gMCAmJiBzaW5rX3Jh dGVzW2xlbl0gPgorCQkgICAgICAgaW50ZWxfZHAtPm1heF9saW5rX3JhdGVfdXBmcm9udCkKKwkJ CWxlbi0tOworCQlzaW5rX2xlbiA9IGxlbiArIDE7CisJfQorCisJc291cmNlX2xlbiA9IGludGVs X2RwX3NvdXJjZV9yYXRlcyhpbnRlbF9kcCwgJnNvdXJjZV9yYXRlcyk7CisKKwlyZXR1cm4gaW50 ZXJzZWN0X3JhdGVzKHNvdXJjZV9yYXRlcywgc291cmNlX2xlbiwKKwkJCSAgICAgICBzaW5rX3Jh dGVzLCBzaW5rX2xlbiwKKwkJCSAgICAgICBjb21tb25fcmF0ZXMpOworfQorCitzdGF0aWMgYm9v bCBpbnRlbF9kcF91cGZyb250X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK K3sKKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2Rp Z19wb3J0KGludGVsX2RwKTsKKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9 ICZpbnRlbF9kaWdfcG9ydC0+YmFzZTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxf ZW5jb2Rlci0+YmFzZS5kZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShkZXYpOworCXN0cnVjdCBkcm1fbW9kZV9jb25maWcgKmNvbmZpZyA9ICZkZXYtPm1v ZGVfY29uZmlnOworCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7CisJc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGM7CisJc3RydWN0IGRybV9jcnRjICpjcnRjID0gTlVMTDsK KwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbDsKKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2Rw bGxfY29uZmlnIHRtcF9wbGxfY29uZmlnOworCWJvb2wgZGlzYWJsZV9kcGxsID0gZmFsc2U7CisJ aW50IHJldDsKKwlib29sIGRvbmUgPSBmYWxzZSwgaGFzX21zdCA9IGZhbHNlOworCXVpbnQ4X3Qg bWF4X2xhbmVzOworCWludCBjb21tb25fcmF0ZXNbRFBfTUFYX1NVUFBPUlRFRF9SQVRFU10gPSB7 fTsKKwlpbnQgY29tbW9uX2xlbjsKKwllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIHBv d2VyX2RvbWFpbjsKKworCXBvd2VyX2RvbWFpbiA9IGludGVsX2Rpc3BsYXlfcG9ydF9wb3dlcl9k b21haW4oaW50ZWxfZW5jb2Rlcik7CisJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYs IHBvd2VyX2RvbWFpbik7CisKKwljb21tb25fbGVuID0gaW50ZWxfZHBfY29tbW9uX3JhdGVzKGlu dGVsX2RwLCBjb21tb25fcmF0ZXMpOworCW1heF9sYW5lcyA9IGludGVsX2RwX21heF9sYW5lX2Nv dW50KGludGVsX2RwKTsKKwlpZiAoV0FSTl9PTihjb21tb25fbGVuIDw9IDApKQorCQlyZXR1cm4g dHJ1ZTsKKworCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKK3JldHJ5OgorCXJl dCA9IGRybV9tb2Rlc2V0X2xvY2soJmNvbmZpZy0+Y29ubmVjdGlvbl9tdXRleCwgJmN0eCk7CisJ aWYgKHJldCkKKwkJZ290byBleGl0X2ZhaWw7CisKKwlpZiAoaW50ZWxfZW5jb2Rlci0+YmFzZS5j cnRjKSB7CisJCWNydGMgPSBpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGM7CisKKwkJcmV0ID0gZHJt X21vZGVzZXRfbG9jaygmY3J0Yy0+bXV0ZXgsICZjdHgpOworCQlpZiAocmV0KQorCQkJZ290byBl eGl0X2ZhaWw7CisKKwkJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+cHJpbWFyeS0+bXV0 ZXgsICZjdHgpOworCQlpZiAocmV0KQorCQkJZ290byBleGl0X2ZhaWw7CisKKwkJaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CisJCXBsbCA9IGludGVsX2NydGMtPmNvbmZpZy0+c2hh cmVkX2RwbGw7CisJCWRpc2FibGVfZHBsbCA9IHRydWU7CisJCWhhc19tc3QgPSBpbnRlbF9jcnRj X2hhc190eXBlKGludGVsX2NydGMtPmNvbmZpZywKKwkJCQkJICAgICAgSU5URUxfT1VUUFVUX0RQ X01TVCk7CisJCXJldCA9IGludGVsX2RwX3VwZnJvbnRfY3J0Y19kaXNhYmxlKGludGVsX2NydGMs ICZjdHgsIGZhbHNlKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZXhpdF9mYWlsOworCX0KKworCW11 dGV4X2xvY2soJmRldl9wcml2LT5kcGxsX2xvY2spOworCWlmIChkaXNhYmxlX2RwbGwpIHsKKwkJ LyogQ2xlYXIgdGhlIFBMTCBjb25maWcgc3RhdGUgKi8KKwkJdG1wX3BsbF9jb25maWcgPSBwbGwt PmNvbmZpZzsKKwkJcGxsLT5jb25maWcuY3J0Y19tYXNrID0gMDsKKwl9CisKKwlkb25lID0gaW50 ZWxfZHAtPnVwZnJvbnRfbGlua190cmFpbihpbnRlbF9kcCwKKwkJCQkJICAgIGNvbW1vbl9yYXRl c1tjb21tb25fbGVuLTFdLAorCQkJCQkgICAgbWF4X2xhbmVzLAorCQkJCQkgICAgaGFzX21zdCwK KwkJCQkJICAgIHRydWUpOworCWlmIChkaXNhYmxlX2RwbGwpCisJCXBsbC0+Y29uZmlnID0gdG1w X3BsbF9jb25maWc7CisKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5kcGxsX2xvY2spOworCisJ aWYgKGNydGMpCisJCXJldCA9IGludGVsX2RwX3VwZnJvbnRfY3J0Y19kaXNhYmxlKGludGVsX2Ny dGMsICZjdHgsIHRydWUpOworCitleGl0X2ZhaWw6CisJaWYgKHJldCA9PSAtRURFQURMSykgewor CQlkcm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOworCQlnb3RvIHJldHJ5OworCX0KKwlkcm1fbW9k ZXNldF9kcm9wX2xvY2tzKCZjdHgpOworCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsK KwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKTsKKwlyZXR1 cm4gZG9uZTsKK30KKwogc3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVzCiBpbnRlbF9kcF9tb2Rl X3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCSAgICBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqbW9kZSkKQEAgLTIxMSw2ICs0NDQsMTkgQEAgaW50ZWxfZHBfbW9kZV92 YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCQl0YXJnZXRfY2xvY2sgPSBm aXhlZF9tb2RlLT5jbG9jazsKIAl9CiAKKwlpZiAoaW50ZWxfZHAtPnVwZnJvbnRfbGlua190cmFp biAmJiAhaW50ZWxfZHAtPnVwZnJvbnRfZG9uZSkgeworCQlib29sIGRvX3VwZnJvbnRfbGlua190 cmFpbjsKKwkJLyogRG8gbm90IGRvIHVwZnJvbnQgbGluayB0cmFpbiwgaWYgaXQgaXMgYSBjb21w bGlhbmNlCisJCSAqIHJlcXVlc3QKKwkJICovCisJCWRvX3VwZnJvbnRfbGlua190cmFpbiA9ICFp bnRlbF9kcC0+dXBmcm9udF9kb25lICYmCisJCQkoaW50ZWxfZHAtPmNvbXBsaWFuY2VfdGVzdF90 eXBlICE9CisJCQkgRFBfVEVTVF9MSU5LX1RSQUlOSU5HKTsKKworCQlpZiAoZG9fdXBmcm9udF9s aW5rX3RyYWluKQorCQkJaW50ZWxfZHAtPnVwZnJvbnRfZG9uZSA9IGludGVsX2RwX3VwZnJvbnRf bGlua190cmFpbihpbnRlbF9kcCk7CisJfQorCiAJbWF4X2xpbmtfY2xvY2sgPSBpbnRlbF9kcF9t YXhfbGlua19yYXRlKGludGVsX2RwKTsKIAltYXhfbGFuZXMgPSBpbnRlbF9kcF9tYXhfbGFuZV9j b3VudChpbnRlbF9kcCk7CiAKQEAgLTEyNTYsNjAgKzE1MDIsNiBAQCBpbnRlbF9kcF9hdXhfaW5p dChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IpCiAJaW50ZWxfZHAtPmF1eC50cmFuc2ZlciA9IGludGVsX2RwX2F1eF90cmFuc2ZlcjsK IH0KIAotc3RhdGljIGludAotaW50ZWxfZHBfc2lua19yYXRlcyhzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLCBjb25zdCBpbnQgKipzaW5rX3JhdGVzKQotewotCWlmIChpbnRlbF9kcC0+bnVtX3Np bmtfcmF0ZXMpIHsKLQkJKnNpbmtfcmF0ZXMgPSBpbnRlbF9kcC0+c2lua19yYXRlczsKLQkJcmV0 dXJuIGludGVsX2RwLT5udW1fc2lua19yYXRlczsKLQl9Ci0KLQkqc2lua19yYXRlcyA9IGRlZmF1 bHRfcmF0ZXM7Ci0KLQlyZXR1cm4gKGludGVsX2RwX21heF9saW5rX2J3KGludGVsX2RwKSA+PiAz KSArIDE7Ci19Ci0KLWJvb2wgaW50ZWxfZHBfc291cmNlX3N1cHBvcnRzX2hicjIoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCkKLXsKLQlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9y dCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g ZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXY7Ci0KLQkvKiBXYURpc2FibGVIQlIyOnNrbCAqLwotCWlm IChJU19TS0xfUkVWSUQoZGV2LCAwLCBTS0xfUkVWSURfQjApKQotCQlyZXR1cm4gZmFsc2U7Ci0K LQlpZiAoKElTX0hBU1dFTEwoZGV2KSAmJiAhSVNfSFNXX1VMWChkZXYpKSB8fCBJU19CUk9BRFdF TEwoZGV2KSB8fAotCSAgICAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkpCi0JCXJldHVybiB0 cnVlOwotCWVsc2UKLQkJcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0aWMgaW50Ci1pbnRlbF9kcF9z b3VyY2VfcmF0ZXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgY29uc3QgaW50ICoqc291cmNl X3JhdGVzKQotewotCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZHBfdG9f ZGlnX3BvcnQoaW50ZWxfZHApOwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkaWdfcG9ydC0+ YmFzZS5iYXNlLmRldjsKLQlpbnQgc2l6ZTsKLQotCWlmIChJU19CUk9YVE9OKGRldikpIHsKLQkJ KnNvdXJjZV9yYXRlcyA9IGJ4dF9yYXRlczsKLQkJc2l6ZSA9IEFSUkFZX1NJWkUoYnh0X3JhdGVz KTsKLQl9IGVsc2UgaWYgKElTX1NLWUxBS0UoZGV2KSB8fCBJU19LQUJZTEFLRShkZXYpKSB7Ci0J CSpzb3VyY2VfcmF0ZXMgPSBza2xfcmF0ZXM7Ci0JCXNpemUgPSBBUlJBWV9TSVpFKHNrbF9yYXRl cyk7Ci0JfSBlbHNlIHsKLQkJKnNvdXJjZV9yYXRlcyA9IGRlZmF1bHRfcmF0ZXM7Ci0JCXNpemUg PSBBUlJBWV9TSVpFKGRlZmF1bHRfcmF0ZXMpOwotCX0KLQotCS8qIFRoaXMgZGVwZW5kcyBvbiB0 aGUgZmFjdCB0aGF0IDUuNCBpcyBsYXN0IHZhbHVlIGluIHRoZSBhcnJheSAqLwotCWlmICghaW50 ZWxfZHBfc291cmNlX3N1cHBvcnRzX2hicjIoaW50ZWxfZHApKQotCQlzaXplLS07Ci0KLQlyZXR1 cm4gc2l6ZTsKLX0KLQogc3RhdGljIHZvaWQKIGludGVsX2RwX3NldF9jbG9jayhzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKIAkJICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVf Y29uZmlnKQpAQCAtMTM0Myw0MiArMTUzNSw2IEBAIGludGVsX2RwX3NldF9jbG9jayhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAl9CiB9CiAKLXN0YXRpYyBpbnQgaW50ZXJzZWN0X3Jh dGVzKGNvbnN0IGludCAqc291cmNlX3JhdGVzLCBpbnQgc291cmNlX2xlbiwKLQkJCSAgIGNvbnN0 IGludCAqc2lua19yYXRlcywgaW50IHNpbmtfbGVuLAotCQkJICAgaW50ICpjb21tb25fcmF0ZXMp Ci17Ci0JaW50IGkgPSAwLCBqID0gMCwgayA9IDA7Ci0KLQl3aGlsZSAoaSA8IHNvdXJjZV9sZW4g JiYgaiA8IHNpbmtfbGVuKSB7Ci0JCWlmIChzb3VyY2VfcmF0ZXNbaV0gPT0gc2lua19yYXRlc1tq XSkgewotCQkJaWYgKFdBUk5fT04oayA+PSBEUF9NQVhfU1VQUE9SVEVEX1JBVEVTKSkKLQkJCQly ZXR1cm4gazsKLQkJCWNvbW1vbl9yYXRlc1trXSA9IHNvdXJjZV9yYXRlc1tpXTsKLQkJCSsrazsK LQkJCSsraTsKLQkJCSsrajsKLQkJfSBlbHNlIGlmIChzb3VyY2VfcmF0ZXNbaV0gPCBzaW5rX3Jh dGVzW2pdKSB7Ci0JCQkrK2k7Ci0JCX0gZWxzZSB7Ci0JCQkrK2o7Ci0JCX0KLQl9Ci0JcmV0dXJu IGs7Ci19Ci0KLXN0YXRpYyBpbnQgaW50ZWxfZHBfY29tbW9uX3JhdGVzKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsCi0JCQkJIGludCAqY29tbW9uX3JhdGVzKQotewotCWNvbnN0IGludCAqc291 cmNlX3JhdGVzLCAqc2lua19yYXRlczsKLQlpbnQgc291cmNlX2xlbiwgc2lua19sZW47Ci0KLQlz aW5rX2xlbiA9IGludGVsX2RwX3NpbmtfcmF0ZXMoaW50ZWxfZHAsICZzaW5rX3JhdGVzKTsKLQlz b3VyY2VfbGVuID0gaW50ZWxfZHBfc291cmNlX3JhdGVzKGludGVsX2RwLCAmc291cmNlX3JhdGVz KTsKLQotCXJldHVybiBpbnRlcnNlY3RfcmF0ZXMoc291cmNlX3JhdGVzLCBzb3VyY2VfbGVuLAot CQkJICAgICAgIHNpbmtfcmF0ZXMsIHNpbmtfbGVuLAotCQkJICAgICAgIGNvbW1vbl9yYXRlcyk7 Ci19CiAKIHN0YXRpYyB2b2lkIHNucHJpbnRmX2ludF9hcnJheShjaGFyICpzdHIsIHNpemVfdCBs ZW4sCiAJCQkgICAgICAgY29uc3QgaW50ICphcnJheSwgaW50IG5lbGVtKQpAQCAtMTQzNiw2ICsx NTkyLDkgQEAgaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQogCWludCByYXRlc1tEUF9NQVhfU1VQUE9SVEVEX1JBVEVTXSA9IHt9OwogCWludCBsZW47CiAK KwlpZiAoaW50ZWxfZHAtPm1heF9saW5rX3JhdGVfdXBmcm9udCkKKwkJcmV0dXJuIGludGVsX2Rw LT5tYXhfbGlua19yYXRlX3VwZnJvbnQ7CisKIAlsZW4gPSBpbnRlbF9kcF9jb21tb25fcmF0ZXMo aW50ZWxfZHAsIHJhdGVzKTsKIAlpZiAoV0FSTl9PTihsZW4gPD0gMCkpCiAJCXJldHVybiAxNjIw MDA7CkBAIC0xNDg4LDcgKzE2NDcsNyBAQCBpbnRlbF9kcF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIAllbnVtIHBvcnQgcG9ydCA9IGRwX3RvX2RpZ19wb3J0 KGludGVsX2RwKS0+cG9ydDsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2lu dGVsX2NydGMocGlwZV9jb25maWctPmJhc2UuY3J0Yyk7CiAJc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqaW50ZWxfY29ubmVjdG9yID0gaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3RvcjsKLQlpbnQg bGFuZV9jb3VudCwgY2xvY2s7CisJaW50IGxhbmVfY291bnQsIGNsb2NrID0gMDsKIAlpbnQgbWlu X2xhbmVfY291bnQgPSAxOwogCWludCBtYXhfbGFuZV9jb3VudCA9IGludGVsX2RwX21heF9sYW5l X2NvdW50KGludGVsX2RwKTsKIAkvKiBDb252ZW5pZW50bHksIHRoZSBsaW5rIEJXIGNvbnN0YW50 cyBiZWNvbWUgaW5kaWNlcyB3aXRoIGEgc2hpZnQuLi4qLwpAQCAtMTU2Nyw2ICsxNzI2LDIxIEBA IGludGVsX2RwX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAog CWZvciAoOyBicHAgPj0gNiozOyBicHAgLT0gMiozKSB7CiAJCW1vZGVfcmF0ZSA9IGludGVsX2Rw X2xpbmtfcmVxdWlyZWQoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jaywKIAkJCQkJCSAgIGJwcCk7 CisKKwkJaWYgKCFpc19lZHAoaW50ZWxfZHApICYmIGludGVsX2RwLT51cGZyb250X2RvbmUpIHsK KwkJCWNsb2NrID0gbWF4X2Nsb2NrOworCQkJbGFuZV9jb3VudCA9IGludGVsX2RwLT5tYXhfbGFu ZXNfdXBmcm9udDsKKwkJCWxpbmtfY2xvY2sgPSBpbnRlbF9kcC0+bWF4X2xpbmtfcmF0ZV91cGZy b250OworCQkJbGlua19hdmFpbCA9IGludGVsX2RwX21heF9kYXRhX3JhdGUobGlua19jbG9jaywK KwkJCQkJCQkgICAgbGFuZV9jb3VudCk7CisJCQltb2RlX3JhdGUgPSBpbnRlbF9kcF9saW5rX3Jl cXVpcmVkKGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2ssCisJCQkJCQkJICAgYnBwKTsKKwkJCWlm IChtb2RlX3JhdGUgPD0gbGlua19hdmFpbCkKKwkJCQlnb3RvIGZvdW5kOworCQkJZWxzZQorCQkJ CWNvbnRpbnVlOworCQl9CisKIAkJY2xvY2sgPSBtYXhfY2xvY2s7CiAJCWxhbmVfY291bnQgPSBt YXhfbGFuZV9jb3VudDsKIAkJbGlua19jbG9jayA9IGNvbW1vbl9yYXRlc1tjbG9ja107CkBAIC0x NTk1LDcgKzE3NjksNiBAQCBmb3VuZDoKIAl9CiAKIAlwaXBlX2NvbmZpZy0+bGFuZV9jb3VudCA9 IGxhbmVfY291bnQ7Ci0KIAlwaXBlX2NvbmZpZy0+cGlwZV9icHAgPSBicHA7CiAJcGlwZV9jb25m aWctPnBvcnRfY2xvY2sgPSBjb21tb25fcmF0ZXNbY2xvY2tdOwogCkBAIC00Mjc5LDcgKzQ0NTIs NyBAQCBpbnRlbF9kcF9sb25nX3B1bHNlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nv bm5lY3RvcikKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7CiAJZW51 bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXM7CiAJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2Vy X2RvbWFpbiBwb3dlcl9kb21haW47Ci0JdTggc2lua19pcnFfdmVjdG9yID0gMDsKKwl1OCBzaW5r X2lycV92ZWN0b3I7CiAKIAlwb3dlcl9kb21haW4gPSBpbnRlbF9kaXNwbGF5X3BvcnRfYXV4X3Bv d2VyX2RvbWFpbihpbnRlbF9lbmNvZGVyKTsKIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldCh0b19p OTE1KGRldiksIHBvd2VyX2RvbWFpbik7CkBAIC00MzcyLDkgKzQ1NDUsMTIgQEAgaW50ZWxfZHBf bG9uZ19wdWxzZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IpCiAJfQog CiBvdXQ6Ci0JaWYgKChzdGF0dXMgIT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQpICYmCi0J ICAgIChpbnRlbF9kcC0+aXNfbXN0ID09IGZhbHNlKSkKKwlpZiAoc3RhdHVzICE9IGNvbm5lY3Rv cl9zdGF0dXNfY29ubmVjdGVkKSB7CiAJCWludGVsX2RwX3Vuc2V0X2VkaWQoaW50ZWxfZHApOwor CQlpbnRlbF9kcC0+dXBmcm9udF9kb25lID0gZmFsc2U7CisJCWludGVsX2RwLT5tYXhfbGFuZXNf dXBmcm9udCA9IDA7CisJCWludGVsX2RwLT5tYXhfbGlua19yYXRlX3VwZnJvbnQgPSAwOworCX0K IAogCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KHRvX2k5MTUoZGV2KSwgcG93ZXJfZG9tYWluKTsK IAlyZXR1cm47CkBAIC01NjE4LDYgKzU3OTQsMTMgQEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Io c3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCiAJaWYgKHR5cGUgPT0g RFJNX01PREVfQ09OTkVDVE9SX2VEUCkKIAkJaW50ZWxfZW5jb2Rlci0+dHlwZSA9IElOVEVMX09V VFBVVF9FRFA7CiAKKwkvKiBJbml0aWFsaXplIHVwZnJvbnQgbGluayB0cmFpbmluZyB2ZnVuYyBm b3IgRFAgKi8KKwlpZiAoaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfRURQKSB7 CisJCWlmIChJU19CUk9YVE9OKGRldl9wcml2KSB8fCBJU19TS1lMQUtFKGRldl9wcml2KSB8fAor CQkgICAgSVNfQlJPQURXRUxMKGRldl9wcml2KSB8fCBJU19IQVNXRUxMKGRldl9wcml2KSkKKwkJ CWludGVsX2RwLT51cGZyb250X2xpbmtfdHJhaW4gPSBpbnRlbF9kZGlfbGlua190cmFpbjsKKwl9 CisKIAkvKiBlRFAgb25seSBvbiBwb3J0IEIgYW5kL29yIEMgb24gdmx2L2NodiAqLwogCWlmIChX QVJOX09OKChJU19WQUxMRVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpKSAmJgogCQkg ICAgaXNfZWRwKGludGVsX2RwKSAmJiBwb3J0ICE9IFBPUlRfQiAmJiBwb3J0ICE9IFBPUlRfQykp CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5n LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMKaW5kZXgg ZjFlMDhmMC4uYjZmMzgwYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHBfbGlua190cmFpbmluZy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xp bmtfdHJhaW5pbmcuYwpAQCAtMzA0LDcgKzMwNCw2IEBAIGludGVsX2RwX2xpbmtfdHJhaW5pbmdf Y2hhbm5lbF9lcXVhbGl6YXRpb24oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAlpbnRlbF9k cF9zZXRfaWRsZV9saW5rX3RyYWluKGludGVsX2RwKTsKIAogCXJldHVybiBpbnRlbF9kcC0+Y2hh bm5lbF9lcV9zdGF0dXM7Ci0KIH0KIAogdm9pZCBpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggNWI5 N2E3ZDQuLmU1YWIzNzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC04ODIsNiArODgy LDEyIEBAIHN0cnVjdCBpbnRlbF9kcCB7CiAJZW51bSBoZG1pX2ZvcmNlX2F1ZGlvIGZvcmNlX2F1 ZGlvOwogCWJvb2wgbGltaXRlZF9jb2xvcl9yYW5nZTsKIAlib29sIGNvbG9yX3JhbmdlX2F1dG87 CisKKwkvKiBVcGZyb250IGxpbmsgdHJhaW4gcGFyYW1ldGVycyAqLworCWludCBtYXhfbGlua19y YXRlX3VwZnJvbnQ7CisJdWludDhfdCBtYXhfbGFuZXNfdXBmcm9udDsKKwlib29sIHVwZnJvbnRf ZG9uZTsKKwogCXVpbnQ4X3QgZHBjZFtEUF9SRUNFSVZFUl9DQVBfU0laRV07CiAJdWludDhfdCBw c3JfZHBjZFtFRFBfUFNSX1JFQ0VJVkVSX0NBUF9TSVpFXTsKIAl1aW50OF90IGRvd25zdHJlYW1f cG9ydHNbRFBfTUFYX0RPV05TVFJFQU1fUE9SVFNdOwpAQCAtOTM5LDYgKzk0NSwxMSBAQCBzdHJ1 Y3QgaW50ZWxfZHAgewogCS8qIFRoaXMgaXMgY2FsbGVkIGJlZm9yZSBhIGxpbmsgdHJhaW5pbmcg aXMgc3RhcnRlcmQgKi8KIAl2b2lkICgqcHJlcGFyZV9saW5rX3JldHJhaW4pKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApOwogCisJLyogRm9yIFVwZnJvbnQgbGluayB0cmFpbmluZyAqLworCWJv b2wgKCp1cGZyb250X2xpbmtfdHJhaW4pKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBj bG9jaywKKwkJCQkgICB1aW50OF90IGxhbmVfY291bnQsIGJvb2wgbGlua19tc3QsCisJCQkJICAg Ym9vbCBpc191cGZyb250KTsKKwogCS8qIERpc3BsYXlwb3J0IGNvbXBsaWFuY2UgdGVzdGluZyAq LwogCXVuc2lnbmVkIGxvbmcgY29tcGxpYW5jZV90ZXN0X3R5cGU7CiAJdW5zaWduZWQgbG9uZyBj b21wbGlhbmNlX3Rlc3RfZGF0YTsKQEAgLTExNjEsNyArMTE3Miw4IEBAIHZvaWQgaW50ZWxfZGRp X2Nsb2NrX2dldChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKIHZvaWQgaW50ZWxfZGRp X3NldF92Y19wYXlsb2FkX2FsbG9jKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbCBzdGF0ZSk7 CiB1aW50MzJfdCBkZGlfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsK IGJvb2wgaW50ZWxfZGRpX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50 IG1heF9saW5rX3JhdGUsCi0JCQkgIHVpbnQ4X3QgbWF4X2xhbmVfY291bnQsIGJvb2wgbGlua19t c3QpOworCQkJICB1aW50OF90IG1heF9sYW5lX2NvdW50LCBib29sIGxpbmtfbXN0LAorCQkJICBi b29sIGlzX3VwZnJvbnQpOwogc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICppbnRlbF9kZGlfZ2V0 X2xpbmtfZHBsbChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCQkJCQkJICBpbnQgY2xvY2sp OwogdW5zaWduZWQgaW50IGludGVsX2ZiX2FsaWduX2hlaWdodChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=