From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCHv2 4/4] drm/i915/dp: Enable Upfront link training for typeC DP support on BXT Date: Fri, 12 Feb 2016 18:43:28 +0200 Message-ID: <1455295408.2720.50.camel@gmail.com> References: <1454335073-20405-1-git-send-email-durgadoss.r@intel.com> <1454335073-20405-5-git-send-email-durgadoss.r@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f46.google.com (mail-pa0-f46.google.com [209.85.220.46]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0FCCF6EB0C for ; Fri, 12 Feb 2016 08:44:19 -0800 (PST) Received: by mail-pa0-f46.google.com with SMTP id fy10so9757065pac.1 for ; Fri, 12 Feb 2016 08:44:19 -0800 (PST) In-Reply-To: <1454335073-20405-5-git-send-email-durgadoss.r@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Durgadoss R , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAyMDE2LTAyLTAxIGF0IDE5OjI3ICswNTMwLCBEdXJnYWRvc3MgUiB3cm90ZToKPiBU byBzdXBwb3J0IFVTQiB0eXBlIEMgYWx0ZXJuYXRlIERQIG1vZGUsIHRoZSBkaXNwbGF5IGRyaXZl ciBuZWVkcyB0bwo+IGtub3cgdGhlIG51bWJlciBvZiBsYW5lcyByZXF1aXJlZCBieSB0aGUgRFAg cGFuZWwgYXMgd2VsbCBhcyBudW1iZXIKPiBvZiBsYW5lcyB0aGF0IGNhbiBiZSBzdXBwb3J0ZWQg YnkgdGhlIHR5cGUtQyBjYWJsZS4gU29tZXRpbWVzLCB0aGUKPiB0eXBlLUMgY2FibGUgbWF5IGxp bWl0IHRoZSBiYW5kd2lkdGggZXZlbiBpZiBQYW5lbCBjYW4gc3VwcG9ydAo+IG1vcmUgbGFuZXMu IFRvIGFkZHJlc3MgdGhlc2Ugc2NlbmFyaW9zLCB0aGUgZGlzcGxheSBkcml2ZXIgd2lsbAo+IHN0 YXJ0IGxpbmsgdHJhaW5pbmcgd2l0aCBtYXggbGFuZXMsIGFuZCBpZiB0aGF0IGZhaWxzLCB0aGUg ZHJpdmVyCj4gZmFsbHMgYmFjayB0byB4MiBsYW5lczsgYW5kIHJlcGVhdHMgdGhpcyBwcm9jZWR1 cmUgZm9yIGFsbAo+IGJhbmR3aWR0aC9sYW5lIGNvbmZpZ3VyYXRpb25zLgo+IAo+ICogU2luY2Ug bGluayB0cmFpbmluZyBpcyBkb25lIGJlZm9yZSBtb2Rlc2V0IG9ubHkgdGhlIHBvcnQKPiAgIChh bmQgbm90IHBpcGUvcGxhbmVzKSBhbmQgaXRzIGFzc29jaWF0ZWQgUExMcyBhcmUgZW5hYmxlZC4K PiAqIE9uIERQIGhvdHBsdWc6IERpcmVjdGx5IHN0YXJ0IGxpbmsgdHJhaW5pbmcgb24gdGhlIGNy dGMKPiAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgRFAgZW5jb2Rlci4KPiAqIE9uIENvbm5lY3RlZCBi b290IHNjZW5hcmlvczogV2hlbiBib290ZWQgd2l0aCBhbiBMRlAgYW5kIGEgRFAsCj4gICB0eXBp Y2FsbHksIEJJT1MgYnJpbmdzIHVwIERQLiBJbiB0aGVzZSBjYXNlcywgd2UgZGlzYWJsZSB0aGUK PiAgIGNydGMsIGRvIHVwZnJvbnQgbGluayB0cmFpbmluZyBhbmQgdGhlbiByZS1lbmFibGUgaXQg YmFjay4KPiAqIEFsbCBsb2NhbCBjaGFuZ2VzIG1hZGUgZm9yIHVwZnJvbnQgbGluayB0cmFpbmlu ZyBhcmUgcmVzZXQKPiAgIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyBvbmNlIGl0IGlzIGRvbmU7 IHNvIHRoYXQgdGhlCj4gICBzdWJzZXF1ZW50IG1vZGVzZXQgaXMgbm90IGF3YXJlIG9mIHRoZXNl IGNoYW5nZXMuCj4gCgpQbGVhc2UgYWx3YXlzIGluY2x1ZGUgYSBjaGFuZ2Vsb2cgd2hlbiBzZW5k aW5nIGEgbmV3IHZlcnNpb24gb2YgYSBwYXRjaC4KCj4gU2lnbmVkLW9mZi1ieTogRHVyZ2Fkb3Nz IFIgPGR1cmdhZG9zcy5yQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGRpLmMgICAgIHwgMTAyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAzOCArKysrKysrKysrLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgfCAxMjIgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+IC0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggICAgIHwgIDEwICsrKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDI3MCBpbnNlcnRpb25zKCspLCAy IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kZGkuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiBpbmRleCAzZmI5 YTAzLi5jYzVjYWQ1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rk aS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiBAQCAtMzIxNyw2 ICszMjE3LDEwOCBAQCBpbnRlbF9kZGlfaW5pdF9oZG1pX2Nvbm5lY3RvcihzdHJ1Y3QKPiBpbnRl bF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQo+ICAJcmV0dXJuIGNvbm5lY3RvcjsKPiAg fQo+ICAKPiArc3RhdGljIHZvaWQgaW50ZWxfZGRpX2NvbW1pdF91cGZyb250X3BsbF9jb25maWco c3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiArCQkJCQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2Rw bGwgKnBsbCkKPiArewo+ICsJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZpZyB0bXBfY29u ZmlnOwo+ICsKPiArCS8qCj4gKwkgKiBUaGUgc2hhcmVkX2RwbGxfY29uZmlnIGlzIGNvbXB1dGVk IGluIGludGVsX2dldF9zaGFyZWRfZHBsbCgpLgo+ICsJICogSXQgaXMgY29tbWl0dGVkIHRvICdw bGwtPmNvbmZpZycgaGVyZSB0byBiZSB1c2VkIGluCj4gKwkgKiBpbnRlbF9lbmFibGUvZGlzYWJs ZV9zaGFyZWRfZHBsbCBmdW5jdGlvbnMuIEJlZm9yZSBjb21taXR0aW5nLgo+ICsJICogc2F2ZSB0 aGUgZXhpc3RpbmcgY29uZmlnLCBzbyB0aGF0IG9uY2UgdXBmcm9udCBsaW5rIHRyYWluaW5nIGlz Cj4gKwkgKiBkb25lLCB0aGUgb3JpZ2luYWwgdmFsdWUgb2YgJ3BsbC0+Y29uZmlnJyBjYW4gYmUg cmVzdG9yZWQuCj4gKwkgKi8KPiArCXRtcF9jb25maWcgPSBwbGwtPmNvbmZpZzsKPiArCXBsbC0+ Y29uZmlnID0gaW50ZWxfZHAtPnVwZnJvbnRfcGxsX2NvbmZpZzsKPiArCWludGVsX2RwLT51cGZy b250X3BsbF9jb25maWcgPSB0bXBfY29uZmlnOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGlu dGVsX3NoYXJlZF9kcGxsICppbnRlbF9kZGlfc2VsZWN0X3VwZnJvbnRfcGxsX2NvbmZpZygKPiAr CQkJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4g K3sKPiArCWlmICghaW50ZWxfZGRpX3BsbF9zZWxlY3QoY3J0YywgY3J0Yy0+Y29uZmlnKSkKPiAr CQlyZXR1cm4gTlVMTDsKPiArCj4gKwlyZXR1cm4gaW50ZWxfY3J0Y190b19zaGFyZWRfZHBsbChj cnRjKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaW50ZWxfZGRpX2NsZWFyX3VwZnJvbnRfcGxs X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICsJCQkJCXN0cnVjdCBpbnRlbF9z aGFyZWRfZHBsbCAqcGxsKQo+ICt7Cj4gKwlwbGwtPmNvbmZpZyA9IGludGVsX2RwLT51cGZyb250 X3BsbF9jb25maWc7Cj4gK30KPiArCgpUaGUgc2hhcmVkIHBsbCBpbnRlcmZhY2UgaXMgcmVhbGx5 IGdldHRpbmcgaW4gdGhlIHdheSBoZXJlLiBBbmQgQlhUIHBsbHMgYXJlbid0CmV2ZW4gc2hhcmVk LiBXZSBhcmUganVtcGluZyB0aHJvdWdoIGhvb3BzIHRvIGdldCB0aGUgcGxsIHRoYXQgbWF0Y2hl cyB0aGUgZ2l2ZW4KZW5jb2RlciBhbmQgdG8gY2FsbCB0aGUgY29kZSB0aGF0IGNhbGN1bGF0ZXMg dGhlIGRwbGxfaHdfc3RhdGUgYmFzZWQgb24gdGhlIERQCmxpbmsgcmF0ZS4gSSdkIGxpa2UgdG8g Z2V0IHRoYXQgaW50ZXJmYWNlIGZpeGVkIGJ1dCBJIHJlY2tvbiBpdCB3aWxsIGJlIHRyaWNreQp0 byBmaW5kIHNvbWV0aGluZyB0aGF0IHdvcmtzIGZvciBhbGwgdGhlIHBsYXRmb3JtcyB3ZSBzdXBw b3J0LiBUaGF0J3MgdGhlIG5leHQKdGhpbmcgb24gbXkgdG9kbyBsaXN0LgoKSWYgd2UgaGF2ZSB0 byBsaXZlIHdpdGggc29tZSBpbnRlcm1lZGlhcnkgc29sdXRpb24sIEkgdGhpbmsgaXQgd291bGQg YmUgYmV0dGVyCnRvIChhbG1vc3QpIGNvbXBsZXRlbHkgYnlwYXNzIHRoZSBzaGFyZWQgZHBsbCBz dHVmZi4gRmlyc3Qgd2Ugd291bGQgbmVlZCB0bwpzcGxpdCBieHRfZGRpX3BsbF9zZWwoKSBzbyB0 aGF0IHdlIHdvdWxkIGhhdmUgYSBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSBsaW5rCmJhbmR3aWR0 aCBhbmQgc3BpdHMgb3V0IGEgZHBsbF9od19zdGF0ZSB3aXRob3V0IGxvb2tpbmcgYXQgY3J0Y19z dGF0ZS4gVGhlbiB3ZQp3b3VsZCBqdXN0IHRha2UgdGhlIHJpZ2h0IHBsbCBiYXNlZCBvbiBkaWdf cG9ydC0+cG9ydCwgbWFrZSBzdXJlIGl0IGlzIG5vdCBiZWluZwp1c2VkIGFuZCBwcm9ncmFtIGl0 IHdpdGggdGhlIGh3IHN0YXRlIHdlIGdldCBmcm9tIHRoYXQgbmV3IGZ1bmN0aW9uLgoKSSB3cm90 ZSBhIHBhdGNoIHRvIGRvIHRoYXQgc3BsaXQuIFdpdGggaXQsIHRoZSBQTEwgZW5hYmxlIGxvZ2lj IGluIHRoZSB1cGZyb250CmxpbmsgdHJhaW4gbG9naWMgd291bGQgbG9vayBhIGJpdCBsaWtlIGJl bG93LiBUaGVyZSBpcyBzb21lIHBvdGVudGlhbCBmb3IKcHJvYmxlbXMgd2l0aCB0aGUgc3RhdGUg Y2hlY2tlciwgYnV0IGl0IHNob3VsZCBiZSBmaW5lIGFzIGxvbmcgYXMgdGhlIG9sZCBkcGxsCmh3 IHN0YXRlIGlzIHNhdmVkIGFuZCByZXN0b3JlZCB3aGVuIGV2ZXJ5dGhpbmcgaXMgb3Zlci4KCgov KiBGSVhNRTogdGhpcyBvbmx5IHdvcmtzIGZvciBCWFQgKi8KZHBsbF9pZCA9IChlbnVtIGludGVs X2RwbGxfaWQpIGRpZ19wb3J0LT5wb3J0OwpwbGwgPSBkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW2Rw bGxfaWRdOwoKaWYgKFdBUk5fT04ocGxsLT5jb25maWcuY3J0Y19tYXNrKSB8fCBXQVJOX09OKHBs bC0+YWN0aXZlKSkKCWdvdG8gZXhpdDsKCmJ4dF9kZGlfZHBfcGxsX2RpdmlkZXJzKGNydGMtPmNv bmZpZy0+cG9ydF9jbG9jaywgJmNsa19kaXYpOwppZiAoIWJ4dF9kZGlfc2V0X2RwbGxfaHdfc3Rh dGUoY2xvY2ssICZjbGtfZGl2LAoJCQkgICAgICAgJnBsbC0+Y29uZmlnLmh3X3N0YXRlKSkgewoJ RFJNX0VSUk9SKCJDb3VsZCBub3Qgc2V0dXAgRFBMTFxuIik7Cglnb3RvIGV4aXQ7Cn0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgCi8qIEVuYWJsZSBQTEwgZm9sbG93ZWQgYnkgcG9ydCAq LwpwbGwtPmVuYWJsZShkZXZfcHJpdiwgcGxsKTsKZW5jb2Rlci0+cHJlX2VuYWJsZShlbmNvZGVy KTsKCgpUaGlzIHNvbHV0aW9uIHdvdWxkIHJlbW92ZSB0aGUgbmVlZCBmb3IgcGF0Y2hlcyAxIGFu ZCAzLgoKV2hhdCBkbyB5b3UgdGhpbms/Cgo+ICtpbnQgaW50ZWxfZGRpX3VwZnJvbnRfbGlua190 cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICsJCQkJc3RydWN0IGludGVsX2NydGMg KmNydGMpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGludGVs X2RwLT5hdHRhY2hlZF9jb25uZWN0b3I7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciA9IGNvbm5lY3Rvci0+ZW5jb2RlcjsKPiArCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxs ID0gTlVMTDsKPiArCXN0cnVjdCBkcm1fY3J0YyAqZHJtX2NydGMgPSBOVUxMOwo+ICsJc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnRtcF9jcnRjX2NvbmZpZzsKPiArCXVpbnQ4X3QgbGlua19idywg bGFuZV9jb3VudDsKPiArCj4gKwlpZiAoIWNydGMpIHsKPiArCQlkcm1fY3J0YyA9IGludGVsX2dl dF91bnVzZWRfY3J0YygmZW5jb2Rlci0+YmFzZSk7Cj4gKwkJaWYgKCFkcm1fY3J0Yykgewo+ICsJ CQlEUk1fRVJST1IoIk5vIGNydGMgZm9yIHVwZnJvbnQgbGluayB0cmFpbmluZ1xuIik7Cj4gKwkJ CXJldHVybiAtRUlOVkFMOwo+ICsJCX0KPiArCQllbmNvZGVyLT5iYXNlLmNydGMgPSBkcm1fY3J0 YzsKPiArCQljcnRjID0gdG9faW50ZWxfY3J0Yyhkcm1fY3J0Yyk7Cj4gKwl9Cj4gKwo+ICsJLyog SW5pdGlhbGl6ZSB3aXRoIE1heCBMaW5rIHJhdGUgJiBsYW5lIGNvdW50IHN1cHBvcnRlZCBieSBw YW5lbCAqLwo+ICsJbGlua19idyA9ICBpbnRlbF9kcC0+ZHBjZFtEUF9NQVhfTElOS19SQVRFXTsK PiArCWxhbmVfY291bnQgPSBkcm1fZHBfbWF4X2xhbmVfY291bnQoaW50ZWxfZHAtPmRwY2QpOwo+ ICsKPiArCS8qIFNhdmUgdGhlIGNydGMtPmNvbmZpZyAqLwo+ICsJdG1wX2NydGNfY29uZmlnID0g Y3J0Yy0+Y29uZmlnOwo+ICsKPiArCURSTV9ERUJVR19LTVMoIlVzaW5nIHBpcGUgJWNcbiIsIHBp cGVfbmFtZShjcnRjLT5waXBlKSk7Cj4gKwlkbyB7Cj4gKwkJY3J0Yy0+Y29uZmlnLT5wb3J0X2Ns b2NrID0KPiBkcm1fZHBfYndfY29kZV90b19saW5rX3JhdGUobGlua19idyk7Cj4gKwkJY3J0Yy0+ Y29uZmlnLT5sYW5lX2NvdW50ID0gbGFuZV9jb3VudDsKPiArCj4gKwkJcGxsID0gaW50ZWxfZGRp X3NlbGVjdF91cGZyb250X3BsbF9jb25maWcoaW50ZWxfZHAsIGNydGMpOwo+ICsJCWlmICghcGxs KSB7Cj4gKwkJCURSTV9FUlJPUigiQ291bGQgbm90IGdldCBzaGFyZWQgRFBMTFxuIik7Cj4gKwkJ CWdvdG8gZXhpdDsKPiArCQl9Cj4gKwo+ICsJCWludGVsX2RkaV9jb21taXRfdXBmcm9udF9wbGxf Y29uZmlnKGludGVsX2RwLCBwbGwpOwo+ICsKPiArCQkvKiBFbmFibGUgUExMIGZvbGxvd2VkIGJ5 IHBvcnQgKi8KPiArCQlpbnRlbF9lbmFibGVfc2hhcmVkX2RwbGwoY3J0Yyk7Cj4gKwkJZW5jb2Rl ci0+cHJlX2VuYWJsZShlbmNvZGVyKTsKPiArCj4gKwkJLyogQ2hlY2sgaWYgbGluayB0cmFpbmlu ZyBwYXNzZWQ7IGlmIHNvIHVwZGF0ZSBEUENEICovCj4gKwkJaWYgKGludGVsX2RwLT50cmFpbl9z ZXRfdmFsaWQpCj4gKwkJCWludGVsX2RwX3VwZGF0ZV9kcGNkX3BhcmFtcyhpbnRlbF9kcCk7Cj4g Kwo+ICsJCS8qIERpc2FibGUgcG9ydCBmb2xsb3dlZCBieSBQTEwgZm9yIG5leHQgcmV0cnkvY2xl YW4gdXAgKi8KPiArCQllbmNvZGVyLT5wb3N0X2Rpc2FibGUoZW5jb2Rlcik7Cj4gKwkJaW50ZWxf ZGlzYWJsZV9zaGFyZWRfZHBsbChjcnRjKTsKPiArCj4gKwkJaW50ZWxfZGRpX2NsZWFyX3VwZnJv bnRfcGxsX2NvbmZpZyhpbnRlbF9kcCwgcGxsKTsKPiArCj4gKwl9IHdoaWxlICghaW50ZWxfZHAt PnRyYWluX3NldF92YWxpZCAmJgo+ICsJCWludGVsX2RwX2dldF9saW5rX3JldHJ5X3BhcmFtcyhp bnRlbF9kcCwgJmxhbmVfY291bnQsCj4gJmxpbmtfYncpKTsKPiArZXhpdDoKPiArCS8qIFJlc2V0 IGxvY2FsIGFzc29jaWF0aW9ucyBtYWRlICovCj4gKwlpZiAoZHJtX2NydGMpCj4gKwkJZW5jb2Rl ci0+YmFzZS5jcnRjID0gTlVMTDsKPiArCj4gKwkvKiBSZXN0b3JlIGNydGMgY29uZmlnICovCj4g KwljcnRjLT5jb25maWcgPSB0bXBfY3J0Y19jb25maWc7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygi VXBmcm9udCBsaW5rIHRyYWluICVzOiBsYW5lczolZCBidzolZFxuIiwKPiArCWludGVsX2RwLT50 cmFpbl9zZXRfdmFsaWQgPyAiUGFzc2VkIiA6ICJGYWlsZWQiLCBsYW5lX2NvdW50LAo+IGxpbmtf YncpOwo+ICsKPiArCXJldHVybiBpbnRlbF9kcC0+dHJhaW5fc2V0X3ZhbGlkID8gMCA6IC0xOwo+ ICt9Cj4gKwo+ICB2b2lkIGludGVsX2RkaV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVu dW0gcG9ydCBwb3J0KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ IGluZGV4IGFmNTBlNjEuLjZhNjUwYWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCj4gQEAgLTQyMzgsMTYgKzQyMzgsNDUgQEAgc3RhdGljIHZvaWQgbHB0X3BjaF9lbmFi bGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJbHB0X2VuYWJsZV9wY2hfdHJhbnNjb2Rlcihk ZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIpOwo+ICB9Cj4gIAo+ICtzdGF0aWMKPiArdm9pZCBpbnRl bF9nZXRfbmV3X3NoYXJlZF9kcGxsX2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gKwkJCQkgIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9jb25maWcKPiAqc2hhcmVk X2RwbGwpCj4gK3sKPiArCWVudW0gaW50ZWxfZHBsbF9pZCBpOwo+ICsKPiArCS8qIENyZWF0ZSBh IG5ldyBzaGFyZWQgZHBsbCBjb25maWcgYnkgZHVwbGljYXRpbmcgcGxsLT5jb25maWcgKi8KPiAr CWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+bnVtX3NoYXJlZF9kcGxsOyBpKyspIHsKPiArCQlz dHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCA9ICZkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW2ld Owo+ICsJCXNoYXJlZF9kcGxsW2ldID0gcGxsLT5jb25maWc7Cj4gKwkJc2hhcmVkX2RwbGxbaV0u Y3J0Y19tYXNrID0gMDsKPiArCX0KPiArfQo+ICsKPiAgc3RydWN0IGludGVsX3NoYXJlZF9kcGxs ICppbnRlbF9nZXRfc2hhcmVkX2RwbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJCQkJ CXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlCj4gKmNydGNfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNydGMtPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsK PiAgCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+ICAJc3RydWN0IGludGVsX3NoYXJl ZF9kcGxsX2NvbmZpZyAqc2hhcmVkX2RwbGw7Cj4gKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxf Y29uZmlnIHRtcF9jb25maWdbSTkxNV9OVU1fUExMU107Cj4gIAllbnVtIGludGVsX2RwbGxfaWQg aTsKPiAgCWludCBtYXggPSBkZXZfcHJpdi0+bnVtX3NoYXJlZF9kcGxsOwo+ICAKPiAtCXNoYXJl ZF9kcGxsID0gaW50ZWxfYXRvbWljX2dldF9zaGFyZWRfZHBsbF9zdGF0ZShjcnRjX3N0YXRlCj4g LT5iYXNlLnN0YXRlKTsKPiArCS8qCj4gKwkgKiBpbnRlbF9nZXRfc2hhcmVkX2RwbGwgbmVlZHMg YSBzaGFyZWRfZHBsbFtdIHRvIHN0b3JlIHRoZSBjb21wdXRlZAo+ICsJICogZHBsbF9jb25maWcg dmFsdWVzLiBGb3IgYXRvbWljIHBhdGgsIGl0IGlzIHN0b3JlZCBpbgo+ICsJICogaW50ZWxfYXRv bWljX3N0YXRlLT5zaGFyZWRfZHBsbFtdLCB3aGljaCBpcyBsYXRlciBjb21taXR0ZWQgdG8KPiAr CSAqIGRldl9wcml2LT5zaGFyZWRfZHBsbFtdIGluIGF0b21pYyBjb21taXQuIEZvciBub24tYXRv bWljIHBhdGgsCj4gKwkgKiAod2hlcmUgaW50ZWxfYXRvbWljX3N0YXRlIGRvZXMgbm90IGV4aXN0 KSB0aGUgZHBsbF9jb25maWcgdmFsdWVzCj4gKwkgKiBhcmUgc3RvcmVkIGluICd0bXBfY29uZmln W10nIGFuZCBjb3BpZWQgdG8gZW5jb2RlciBzdHJ1Y3R1cmVzCj4gKwkgKiBmb3IgbGF0ZXIgdXNl Lgo+ICsJICovCj4gKwlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSkgewo+ICsJCXNoYXJlZF9k cGxsID0gaW50ZWxfYXRvbWljX2dldF9zaGFyZWRfZHBsbF9zdGF0ZShjcnRjX3N0YXRlCj4gLT5i YXNlLnN0YXRlKTsKPiArCX0gZWxzZSB7Cj4gKwkJaW50ZWxfZ2V0X25ld19zaGFyZWRfZHBsbF9j b25maWcoZGV2X3ByaXYsIHRtcF9jb25maWcpOwo+ICsJCXNoYXJlZF9kcGxsID0gdG1wX2NvbmZp ZzsKPiArCX0KPiAgCj4gIAlpZiAoSEFTX1BDSF9JQlgoZGV2X3ByaXYtPmRldikpIHsKPiAgCQkv KiBJcm9ubGFrZSBQQ0ggaGFzIGEgZml4ZWQgUExMLT5QQ0ggcGlwZSBtYXBwaW5nLiAqLwo+IEBA IC00Mjc3LDYgKzQzMDYsNyBAQCBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKmludGVsX2dldF9z aGFyZWRfZHBsbChzdHJ1Y3QKPiBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCXBsbCA9ICZkZXZfcHJp di0+c2hhcmVkX2RwbGxzW2ldOwo+ICAJCURSTV9ERUJVR19LTVMoIkNSVEM6JWQgdXNpbmcgcHJl LWFsbG9jYXRlZCAlc1xuIiwKPiAgCQkJY3J0Yy0+YmFzZS5iYXNlLmlkLCBwbGwtPm5hbWUpOwo+ ICsKPiAgCQlXQVJOX09OKHNoYXJlZF9kcGxsW2ldLmNydGNfbWFzayk7Cj4gIAo+ICAJCWdvdG8g Zm91bmQ7Cj4gQEAgLTQzMjUsNiArNDM1NSwxMiBAQCBmb3VuZDoKPiAgCj4gIAlzaGFyZWRfZHBs bFtpXS5jcnRjX21hc2sgfD0gMSA8PCBjcnRjLT5waXBlOwo+ICAKPiArCS8qCj4gKwkgKiBGb3Ig RFAsIHRoaXMgc2hhcmVkIGRwbGwgY29uZmlnIGlzIHNhdmVkIHRvIGludGVsX2RwLAo+ICsJICog YW5kIHVzZWQgYnkgdXBmcm9udCBsaW5rIHRyYWluIGxvZ2ljIHN1YnNlcXVlbnRseS4KPiArCSAq Lwo+ICsJaW50ZWxfZHBfdXBkYXRlX3NoYXJlZF9kcGxsX2NvbmZpZyhjcnRjX3N0YXRlLCBzaGFy ZWRfZHBsbFtpXSk7Cj4gKwo+ICAJcmV0dXJuIHBsbDsKPiAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMKPiBpbmRleCBlMmJlYTcxMC4uY2M3YjZmMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwo+IEBAIC0xNjc5LDYgKzE2NzksNTUgQEAgdm9pZCBpbnRlbF9kcF9zZXRfbGlua19w YXJhbXMoc3RydWN0IGludGVsX2RwCj4gKmludGVsX2RwLAo+ICAJaW50ZWxfZHAtPmxhbmVfY291 bnQgPSBwaXBlX2NvbmZpZy0+bGFuZV9jb3VudDsKPiAgfQo+ICAKPiArdm9pZCBpbnRlbF9kcF91 cGRhdGVfZHBjZF9wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiArewo+ICsJaW50 ZWxfZHAtPmRwY2RbRFBfTUFYX0xBTkVfQ09VTlRdICY9IH5EUF9NQVhfTEFORV9DT1VOVF9NQVNL Owo+ICsJaW50ZWxfZHAtPmRwY2RbRFBfTUFYX0xBTkVfQ09VTlRdIHw9Cj4gKwkJCWludGVsX2Rw LT5sYW5lX2NvdW50ICYgRFBfTUFYX0xBTkVfQ09VTlRfTUFTSzsKPiArCj4gKwlpbnRlbF9kcC0+ ZHBjZFtEUF9NQVhfTElOS19SQVRFXSA9Cj4gKwkJCWRybV9kcF9saW5rX3JhdGVfdG9fYndfY29k ZShpbnRlbF9kcC0+bGlua19yYXRlKTsKCk1heWJlIGl0IHdvdWxkIGJlIGdvb2QgdG8gaGF2ZSBh biBleHBsaWNpdCBmaWVsZCBmb3IgYWN0dWFsIG1heCBsYW5lIGNvdW50IGFuZApsaW5rIHJhdGUu IFRoYXQgd2F5LCByZWFkaW5nIHRoZSBEUENEIGZyb20gZGVidWdmcyB3aWxsIGdpdmUgdGhlIGFj dHVhbCByZXN1bHRzCnJlYWQgZnJvbSB0aGUgc2luayBpbnN0ZWFkIG9mIGFuIGVkaXRlZCB2YWx1 ZS4KCj4gK30KPiArCj4gK2Jvb2wgaW50ZWxfZHBfZ2V0X2xpbmtfcmV0cnlfcGFyYW1zKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gKwkJCXVpbnQ4X3QgKmxhbmVfY291bnQsIHVpbnQ4X3Qg KmxpbmtfYncpCj4gK3sKPiArCS8qCj4gKwkgKiBBcyBwZXIgRFAxLjMgU3BlYywgcmV0cnkgYWxs IGxpbmsgcmF0ZXMgZm9yIGEgcGFydGljdWxhcgo+ICsJICogbGFuZSBjb3VudCB2YWx1ZSwgYmVm b3JlIHJlZHVjaW5nIG51bWJlciBvZiBsYW5lcy4KPiArCSAqLwo+ICsJaWYgKCpsaW5rX2J3ID09 IERQX0xJTktfQldfNV80KSB7Cj4gKwkJKmxpbmtfYncgPSBEUF9MSU5LX0JXXzJfNzsKPiArCX0g ZWxzZSBpZiAoKmxpbmtfYncgPT0gRFBfTElOS19CV18yXzcpIHsKPiArCQkqbGlua19idyA9IERQ X0xJTktfQldfMV82MjsKPiArCX0gZWxzZSBpZiAoKmxhbmVfY291bnQgPT0gNCkgewo+ICsJCSps YW5lX2NvdW50ID0gMjsKPiArCQkqbGlua19idyA9IGludGVsX2RwX21heF9saW5rX2J3KGludGVs X2RwKTsKPiArCX0gZWxzZSBpZiAoKmxhbmVfY291bnQgPT0gMikgewo+ICsJCSpsYW5lX2NvdW50 ID0gMTsKPiArCQkqbGlua19idyA9IGludGVsX2RwX21heF9saW5rX2J3KGludGVsX2RwKTsKPiAr CX0gZWxzZSB7Cj4gKwkJLyogVHJpZWQgYWxsIGNvbWJpbmF0aW9ucywgc28gZXhpdCAqLwo+ICsJ CXJldHVybiBmYWxzZTsKPiArCX0KPiArCj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArdm9p ZCBpbnRlbF9kcF91cGRhdGVfc2hhcmVkX2RwbGxfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpwaXBlX2NvbmZpZywKPiArCQkJCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9jb25maWcg Y29uZmlnKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKPiArCXN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHA7Cj4gKwo+ICsJZW5jb2RlciA9IGludGVsX2RkaV9nZXRfY3J0 Y19uZXdfZW5jb2RlcihwaXBlX2NvbmZpZyk7Cj4gKwlpZiAoIWVuY29kZXIgfHwgZW5jb2Rlci0+ dHlwZSAhPSBJTlRFTF9PVVRQVVRfRElTUExBWVBPUlQpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWlu dGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKPiArCWludGVsX2RwLT51 cGZyb250X3BsbF9jb25maWcgPSBjb25maWc7Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkIGludGVs X2RwX3ByZXBhcmUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIHsKPiAgCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKPiBAQCAtNDYwMSw2ICs0NjUw LDY2IEBAIGludGVsX2RwX3Vuc2V0X2VkaWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAg CWludGVsX2RwLT5oYXNfYXVkaW8gPSBmYWxzZTsKPiAgfQo+ICAKPiArc3RhdGljIGJvb2wgaW50 ZWxfZHBfdXBmcm9udF9saW5rX3RyYWluKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Ip Cj4gK3sKPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBpbnRlbF9hdHRhY2hlZF9kcChj b25uZWN0b3IpOwo+ICsJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQg PSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50 ZWxfZW5jb2RlciA9ICZpbnRlbF9kaWdfcG9ydC0+YmFzZTsKPiArCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBpbnRlbF9lbmNvZGVyLT5iYXNlLmRldjsKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YyA9IGludGVsX2RpZ19wb3J0LT5iYXNlLmJhc2UuY3J0YzsKPiArCXN0cnVjdCBkcm1fbW9kZV9j b25maWcgKmNvbmZpZyA9ICZkZXYtPm1vZGVfY29uZmlnOwo+ICsJc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSBjcnRjID8gdG9faW50ZWxfY3J0YyhjcnRjKSA6IE5VTEw7Cj4gKwlzdHJ1 Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggY3R4LCAqb2xkX2N0eCA9IE5VTEw7Cj4gKwlib29s IG5lZWRfZHBtc19vbiA9IGZhbHNlOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoIUlTX0JST1hU T04oZGV2KSkKPiArCQlyZXR1cm4gdHJ1ZTsKPiArCj4gKwkvKgo+ICsJICogT24gaG90cGx1ZyBj YXNlcywgd2UgY2FsbCBfdXBmcm9udF9saW5rX3RyYWluIGRpcmVjdGx5Lgo+ICsJICogSW4gY29u bmVjdGVkIGJvb3Qgc2NlbmFyaW9zIChib290IHdpdGgge01JUEkvZURQfSArIERQKSwKPiArCSAq IEJJT1MgdHlwaWNhbGx5IGJyaW5ncyB1cCBEUC4gSGVuY2UsIHdlIGRpc2FibGUgdGhlIGNydGMK PiArCSAqIHRvIGRvIF91cGZyb250X2xpbmtfdHJhaW5pbmcgYW5kIHRoZW4gcmUtZW5hYmxlIGl0 IGJhY2suCj4gKwkgKi8KPiArCWlmIChjcnRjICYmIGNydGMtPmVuYWJsZWQgJiYgaW50ZWxfY3J0 Yy0+YWN0aXZlKSB7Cj4gKwkJb2xkX2N0eCA9IGNydGMtPmFjcXVpcmVfY3R4Owo+ICsJCWRybV9t b2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKPiArcmV0cnk6Cj4gKwkJcmV0ID0gZHJtX21v ZGVzZXRfbG9jaygmY29uZmlnLT5jb25uZWN0aW9uX211dGV4LCAmY3R4KTsKPiArCQlpZiAocmV0 ID09IC1FREVBRExLKSB7Cj4gKwkJCWRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7Cj4gKwkJCWdv dG8gcmV0cnk7Cj4gKwkJfQoKV2UgbmVlZCB0byBhY3F1aXJlIHRob3NlIGxvY2tzIGV2ZW4gaWYg dGhlIGNydGMgaXMgZGlzYWJsZWQsIG90aGVyd2lzZSBhIG1vZGVzZXQKY291bGQgc25lYWsgcGFz dCBhbmQgd3JlYWsgaGF2b2Mgd2hpbGUgd2UgYXJlIGRvaW5nIHRoZSBsaW5rIHRyYWluaW5nIGFu ZApmaWRkbGluZyB3aXRoIHRoZSBwbGxzLgoKPiArCj4gKwkJY3J0Yy0+YWNxdWlyZV9jdHggPSAm Y3R4Owo+ICsJCXJldCA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kcG1zKGNvbm5lY3Rv ciwKPiBEUk1fTU9ERV9EUE1TX09GRik7CgpUaGUgY3J0Yy0+YWNxdWlyZV9jdHggb3ZlcnJpZGUg c2VlbXMgd3JvbmcuIE9uZSB0aGluZyB0aGF0IHNsaXBwZWQgYnkgbWUgd2hlbiBJCmxvb2tlZCBh dCB0aGUgcHJldmlvdXMgdmVyc2lvbiBvZiB0aGlzIHBhdGNoIGlzIHRoYXQgd2UgbmVlZCB0byBh Y3F1aXJlIHNvbWUKbG9ja3MgZXZlbiBpZiB0aGUgY3J0YyBpcyBhbHJlYWR5IG9mZi4gU28gaXQg aXMgcHJvYmFibHkgYmV0dGVyIHRvIHdyaXRlIGEKc2VwYXJhdGUgZnVuY3Rpb24gdGhhdCB0YWtl cyBhbiBhY3F1aXJlIGNvbnRleHQgYW5kIHVzZXMgYXRvbWljIHRvIHNldApjcnRjX3N0YXRlLT5h Y3RpdmUgdG8gZmFsc2UgYW5kIGNhbGxzIGRybV9hdG9taWNfY29tbWl0KCkuCgo+ICsJCWlmIChy ZXQpIHsKPiArCQkJRFJNX0VSUk9SKCJEUE1TIG9mZiBmYWlsZWQ6JWRcbiIsIHJldCk7Cj4gKwkJ CWdvdG8gZXhpdF91bmxvY2s7Cj4gKwkJfQo+ICsKPiArCQluZWVkX2RwbXNfb24gPSB0cnVlOwo+ ICsJfQo+ICsKPiArCWlmIChIQVNfRERJKGRldikpCj4gKwkJcmV0ID0gaW50ZWxfZGRpX3VwZnJv bnRfbGlua190cmFpbihpbnRlbF9kcCwgaW50ZWxfY3J0Yyk7Cj4gKwkJLyogT3RoZXIgcGxhdGZv cm1zIHVwZnJvbnQgbGluayB0cmFpbiBjYWxsIGdvZXMgaGVyZS4uKi8KPiArCj4gKwlpZiAoIW5l ZWRfZHBtc19vbikKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXJldCA9IGRybV9hdG9taWNfaGVs cGVyX2Nvbm5lY3Rvcl9kcG1zKGNvbm5lY3RvciwgRFJNX01PREVfRFBNU19PTik7Cj4gKwlpZiAo cmV0KQo+ICsJCURSTV9FUlJPUigiRFBNUyBvbiBmYWlsZWQ6JWRcbiIsIHJldCk7Cj4gKwo+ICtl eGl0X3VubG9jazoKPiArCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7Cj4gKwlkcm1fbW9k ZXNldF9hY3F1aXJlX2ZpbmkoJmN0eCk7Cj4gKwljcnRjLT5hY3F1aXJlX2N0eCA9IG9sZF9jdHg7 Cj4gKwlyZXR1cm4gcmV0OwoKVGhlIHJldHVybiB0eXBlIG9mIHRoaXMgZnVuY3Rpb24gaXMgYm9v bC4gVGhlIGNvbnZlcnNpb24gaGVyZSB3aWxsIGRvIHRoZSB3cm9uZwp0aGluZywgc2luY2UgcmV0 IHBvdGVudGlhbGx5IGhhcyB0aGUgcmV0dXJuIHZhbHVlIG9mIGZ1bmN0aW9ucyB0aGF0IHJldHVy biBub24KLXplcm8gb24gZmFpbHVyZS4KCj4gK30KPiArCj4gIHN0YXRpYyBlbnVtIGRybV9jb25u ZWN0b3Jfc3RhdHVzCj4gIGludGVsX2RwX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLCBib29sIGZvcmNlKQo+ICB7Cj4gQEAgLTQ2MTAsNyArNDcxOSw4IEBAIGludGVsX2Rw X2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sCj4gZm9yY2UpCj4g IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7Cj4gIAllbnVtIGRybV9j b25uZWN0b3Jfc3RhdHVzIHN0YXR1czsKPiAgCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21h aW4gcG93ZXJfZG9tYWluOwo+IC0JYm9vbCByZXQ7Cj4gKwlib29sIGRvX3VwZnJvbnRfbGlua190 cmFpbjsKPiArCWludCByZXQ7Cj4gIAl1OCBzaW5rX2lycV92ZWN0b3I7Cj4gIAo+ICAJRFJNX0RF QlVHX0tNUygiW0NPTk5FQ1RPUjolZDolc11cbiIsCj4gQEAgLTQ2ODQsNiArNDc5NCwxNiBAQCBp bnRlbF9kcF9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbAo+IGZv cmNlKQo+ICAJCQlEUk1fREVCVUdfRFJJVkVSKCJDUCBvciBzaW5rIHNwZWNpZmljIGlycQo+IHVu aGFuZGxlZFxuIik7Cj4gIAl9Cj4gIAo+ICsJLyogRG8gbm90IGRvIHVwZnJvbnQgbGluayB0cmFp biwgaWYgaXQgaXMgYSBjb21wbGlhbmNlIHJlcXVlc3QgKi8KPiArCWRvX3VwZnJvbnRfbGlua190 cmFpbiA9Cj4gKwkJaW50ZWxfZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRElTUExBWVBP UlQgJiYKPiArCQlpbnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X3R5cGUgIT0gRFBfVEVTVF9MSU5L X1RSQUlOSU5HOwo+ICsKPiArCWlmIChkb191cGZyb250X2xpbmtfdHJhaW4pIHsKPiArCQlyZXQg PSBpbnRlbF9kcF91cGZyb250X2xpbmtfdHJhaW4oY29ubmVjdG9yKTsKPiArCQlpZiAocmV0KQo+ ICsJCQlzdGF0dXMgPSBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKPiArCX0KClNvIGlm IHVwZnJvbnQgbGluayB0cmFpbmluZyBmYWlscyBiZWNhdXNlIHRoZXJlIGlzIG5vIHVudXNlZCBj cnRjIHdlJ2xsIHNheSB0aGF0CnRoZSBjb25uZWN0b3IgaXMgZGlzY29ubmVjdGVkPwoKCkFuZGVy Cgo+ICBvdXQ6Cj4gIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dCh0b19pOTE1KGRldiksIHBvd2Vy X2RvbWFpbik7Cj4gIAlyZXR1cm4gc3RhdHVzOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK PiBpbmRleCA5ZmU3YzRiLi5jNWNhNGFiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK PiBAQCAtODEyLDYgKzgxMiw5IEBAIHN0cnVjdCBpbnRlbF9kcCB7Cj4gIAl1bnNpZ25lZCBsb25n IGNvbXBsaWFuY2VfdGVzdF90eXBlOwo+ICAJdW5zaWduZWQgbG9uZyBjb21wbGlhbmNlX3Rlc3Rf ZGF0YTsKPiAgCWJvb2wgY29tcGxpYW5jZV90ZXN0X2FjdGl2ZTsKPiArCj4gKwkvKiBVc2VkIHRv IHN0b3JlIHBsbCBjb25maWcgZm9yIHVwZnJvbnQgbGluayB0cmFpbmluZyAqLwo+ICsJc3RydWN0 IGludGVsX3NoYXJlZF9kcGxsX2NvbmZpZyB1cGZyb250X3BsbF9jb25maWc7Cj4gIH07Cj4gIAo+ ICBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0IHsKPiBAQCAtMTAzMSw2ICsxMDM0LDggQEAgdm9p ZCBpbnRlbF9kZGlfY2xvY2tfZ2V0KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJ CQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKPiAgdm9pZCBpbnRlbF9k ZGlfc2V0X3ZjX3BheWxvYWRfYWxsb2Moc3RydWN0IGRybV9jcnRjICpjcnRjLCBib29sIHN0YXRl KTsKPiAgdWludDMyX3QgZGRpX3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCk7Cj4gK2ludCBpbnRlbF9kZGlfdXBmcm9udF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsCj4gKwkJCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7Cj4gIAo+ICAvKiBpbnRl bF9mcm9udGJ1ZmZlci5jICovCj4gIHZvaWQgaW50ZWxfZmJfb2JqX2ludmFsaWRhdGUoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiBAQCAtMTIzOSw2ICsxMjQ0LDkgQEAgYm9vbCBp bnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0Cj4gKmludGVs X2RpZ19wb3J0LAo+ICAJCQkgICAgIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5l Y3Rvcik7Cj4gIHZvaWQgaW50ZWxfZHBfc2V0X2xpbmtfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsCj4gIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBl X2NvbmZpZyk7Cj4gK3ZvaWQgaW50ZWxfZHBfdXBkYXRlX2RwY2RfcGFyYW1zKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApOwo+ICtib29sIGludGVsX2RwX2dldF9saW5rX3JldHJ5X3BhcmFtcyhz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICsJCQkJdWludDhfdCAqbGFuZV9jb3VudCwgdWlu dDhfdCAqbGlua19idyk7Cj4gIHZvaWQgaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKTsKPiAgdm9pZCBpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gIHZvaWQgaW50ZWxfZHBfc2lua19kcG1zKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBtb2RlKTsKPiBAQCAtMTI0Niw2ICsxMjU0LDggQEAg dm9pZCBpbnRlbF9kcF9lbmNvZGVyX2Rlc3Ryb3koc3RydWN0IGRybV9lbmNvZGVyCj4gKmVuY29k ZXIpOwo+ICBpbnQgaW50ZWxfZHBfc2lua19jcmMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwg dTggKmNyYyk7Cj4gIGJvb2wgaW50ZWxfZHBfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCj4gIAkJCSAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVf Y29uZmlnKTsKPiArdm9pZCBpbnRlbF9kcF91cGRhdGVfc2hhcmVkX2RwbGxfY29uZmlnKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiArCQkJCXN0cnVjdCBpbnRlbF9zaGFy ZWRfZHBsbF9jb25maWcgY29uZmlnKTsKPiAgYm9vbCBpbnRlbF9kcF9pc19lZHAoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgZW51bSBwb3J0IHBvcnQpOwo+ICBlbnVtIGlycXJldHVybiBpbnRlbF9k cF9ocGRfcHVsc2Uoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4g IAkJCQkgIGJvb2wgbG9uZ19ocGQpOwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK