From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: [WIP PATCH 03/15] drm/dp_mst: Introduce new refcounting scheme for mstbs and ports Date: Thu, 13 Dec 2018 20:25:32 -0500 Message-ID: <20181214012604.13746-4-lyude@redhat.com> References: <20181214012604.13746-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181214012604.13746-1-lyude-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Sean Paul , Jonathan Corbet , Maxime Ripard , Dave Airlie , linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Maarten Lankhorst , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, David Airlie , Jerry Zuo , Daniel Vetter , David Airlie , Harry Wentland , Juston Li VGhlIGN1cnJlbnQgd2F5IG9mIGhhbmRsaW5nIHJlZmNvdW50aW5nIGluIHRoZSBEUCBNU1QgaGVs cGVycyBpcyByZWFsbHkKY29uZnVzaW5nIGFuZCBwcm9iYWJseSBqdXN0IHBsYWluIHdyb25nIGJl Y2F1c2UgaXQncyBiZWVuIGhhY2tlZCB1cCBtYW55CnRpbWVzIG92ZXIgdGhlIHllYXJzIHdpdGhv dXQgYW55b25lIGFjdHVhbGx5IGdvaW5nIG92ZXIgdGhlIGNvZGUgYW5kCnNlZWluZyBpZiB0aGlu Z3MgY291bGQgYmUgc2ltcGxpZmllZC4KClRvIHRoZSBiZXN0IG9mIG15IHVuZGVyc3RhbmRpbmcs IHRoZSBjdXJyZW50IHNjaGVtZSB3b3JrcyBsaWtlIHRoaXM6CmRybV9kcF9tc3RfcG9ydCBhbmQg ZHJtX2RwX21zdF9icmFuY2ggYm90aCBoYXZlIGEgc2luZ2xlIHJlZmNvdW50LiBXaGVuCnRoaXMg cmVmY291bnQgaGl0cyAwIGZvciBlaXRoZXIgb2YgdGhlIHR3bywgdGhleSdyZSByZW1vdmVkIGZy b20gdGhlCnRvcG9sb2d5IHN0YXRlLCBidXQgbm90IGltbWVkaWF0ZWx5IGZyZWVkLiBCb3RoIHBv cnRzIGFuZCBicmFuY2ggZGV2aWNlcwp3aWxsIHJlaW5pdGlhbGl6ZSB0aGVpciBrcmVmIG9uY2Ug aXQncyBoaXQgMCBiZWZvcmUgYWN0dWFsbHkgZGVzdHJveWluZwp0aGVtc2VsdmVzLiBUaGUgaW50 ZW5kZWQgcHVycG9zZSBiZWhpbmQgdGhpcyBpcyBzbyB0aGF0IHdlIGNhbiBhdm9pZApwcm9ibGVt cyBsaWtlIG5vdCBiZWluZyBhYmxlIHRvIGZyZWUgYSByZW1vdGUgcGF5bG9hZCB0aGF0IG1pZ2h0 IHN0aWxsCmJlIGFjdGl2ZSwgZHVlIHRvIHVzIGhhdmluZyByZW1vdmVkIGFsbCBvZiB0aGUgcG9y dC9icmFuY2ggZGV2aWNlCnN0cnVjdHVyZXMgaW4gbWVtb3J5LCBhcyBwZXI6Cgo5MWEyNWU0NjMx MzAgKCJkcm0vZHAvbXN0OiBkZWFsbG9jYXRlIHBheWxvYWQgb24gcG9ydCBkZXN0cnVjdGlvbiIp CgpXaGljaCBtYXkgaGF2ZSB3b3JrZWQsIGJ1dCB0aGVuIGl0IGNhdXNlZCB1c2UtYWZ0ZXItZnJl ZSBlcnJvcnMuIEJlaW5nCm5ldyB0byBNU1QgYXQgdGhlIHRpbWUsIEkgdHJpZWQgZml4aW5nIGl0 OwoKMjYzZWZkZTMxZjk3ICgiZHJtL2RwL21zdDogR2V0IHZhbGlkYXRlZCBwb3J0IHJlZiBpbiBk cm1fZHBfdXBkYXRlX3BheWxvYWRfcGFydDEoKSIpCgpCdXQsIHRoYXQgd2FzIGJyb2tlbjogYm90 aCBkcm1fZHBfbXN0X3BvcnQgYW5kIGRybV9kcF9tc3RfYnJhbmNoIHN0cnVjdHMKYXJlIHZhbGlk YXRlZCBpbiBhbG1vc3QgZXZlcnkgRFAgTVNUIGhlbHBlciBmdW5jdGlvbi4gU2ltcGx5IHB1dCwg dGhpcwptZWFucyB3ZSBnbyB0aHJvdWdoIHRoZSB0b3BvbG9neSBhbmQgdHJ5IHRvIHNlZSBpZiB0 aGUgZ2l2ZW4KZHJtX2RwX21zdF9icmFuY2ggb3IgZHJtX2RwX21zdF9wb3J0IGlzIHN0aWxsIGF0 dGFjaGVkIHRvIHNvbWV0aGluZwpiZWZvcmUgdHJ5aW5nIHRvIHVzZSBpdCBpbiBvcmRlciB0byBh dm9pZCBkZXJlZmVyZW5jaW5nIGZyZWVkIG1lbW9yeQooc29tZXRoaW5nIHRoYXQgaGFzIGhhcHBl bmVkIGEgTE9UIGluIHRoZSBwYXN0IHdpdGggdGhpcyBsaWJyYXJ5KS4KQmVjYXVzZSBvZiB0aGlz IGl0IGRvZXNuJ3QgYWN0dWFsbHkgbWF0dGVyIHdoZXRoZXIgb3Igbm90IHdlIGtlZXAga2VlcAp0 aGUgcG9ydHMgYW5kIGJyYW5jaGVzIGFyb3VuZCBpbiBtZW1vcnkgYXMgdGhhdCdzIG5vdCBlbm91 Z2gsIGJlY2F1c2UKYW55IGZ1bmN0aW9uIHRoYXQgdmFsaWRhdGVzIHRoZSBicmFuY2hlcyBhbmQg cG9ydHMgcGFzc2VkIHRvIGl0IHdpbGwKc3RpbGwgcmVqZWN0IHRoZW0gYW55d2F5IHNpbmNlIHRo ZXkncmUgbm8gbG9uZ2VyIGluIHRoZSB0b3BvbG9neQpzdHJ1Y3R1cmUuIFNvLCB1c2UtYWZ0ZXIt ZnJlZSBlcnJvcnMgd2VyZSBmaXhlZCBidXQgcGF5bG9hZCBkZWFsbG9jYXRpb24Kd2FzIGNvbXBs ZXRlbHkgYnJva2VuLgoKVHdvIHllYXJzIGxhdGVyLCBBTUQgaW5mb3JtZWQgbWUgYWJvdXQgdGhp cyBpc3N1ZSBhbmQgSSBhdHRlbXB0ZWQgdG8KY29tZSB1cCB3aXRoIGEgdGVtcG9yYXJ5IGZpeCwg cGVuZGluZyBhIGxvbmctb3ZlcmR1ZSBjbGVhbnVwIG9mIHRoaXMKbGlicmFyeToKCmM1NGM3Mzc0 ZmY0NCAoImRybS9kcF9tc3Q6IFNraXAgdmFsaWRhdGluZyBwb3J0cyBkdXJpbmcgZGVzdHJ1Y3Rp b24sIGp1c3QgcmVmIikKCkJ1dCB0aGVuIHRoYXQgaW50cm9kdWNlZCB1c2UtYWZ0ZXItZnJlZSBl cnJvcnMsIHNvIEkgcXVpY2tseSByZXZlcnRlZAppdDoKCjk3NjU2MzViMzA3NSAoIlJldmVydCAi ZHJtL2RwX21zdDogU2tpcCB2YWxpZGF0aW5nIHBvcnRzIGR1cmluZyBkZXN0cnVjdGlvbiwganVz dCByZWYiIikKCkFuZCBpbiB0aGUgcHJvY2VzcywgbGVhcm5lZCB0aGF0IHRoZXJlIGlzIGp1c3Qg bm8gc2ltcGxlIGZpeCBmb3IgdGhpczoKdGhlIGRlc2lnbiBpcyBqdXN0IGJyb2tlbi4gVW5mb3J0 dW50ZWx5LCB0aGUgdXNhZ2Ugb2YgdGhlc2UgaGVscGVycyBhcmUKcXVpdGUgYnJva2VuIGFzIHdl bGwuIFNvbWUgZHJpdmVycyBsaWtlIGk5MTUgaGF2ZSBiZWVuIHNtYXJ0IGVub3VnaCB0bwphdm9p ZCBhY2Nlc3NpbmcgYW55IGtpbmQgb2YgaW5mb3JtYXRpb24gZnJvbSBNU1QgcG9ydCBzdHJ1Y3R1 cmVzLCBidXQKb3RoZXJzIGxpa2Ugbm91dmVhdSBoYXZlIGFzc3VtZWQsIHVuZGVyc3RhbmRhYmx5 IHNvLCB0aGF0CmRybV9kcF9tc3RfcG9ydCBzdHJ1Y3R1cmVzIGFyZSBub3JtYWwgYW5kIGNhbiBq dXN0IGJlIGFjY2Vzc2VkIGF0IGFueQp0aW1lIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgdXNlLWFm dGVyLWZyZWUgZXJyb3JzLgoKQWZ0ZXIgYSBsb3Qgb2YgZGlzY3Vzc2lvbiwgbWUgYW5kIERhbmll bCBWZXR0ZXIgY2FtZSB1cCB3aXRoIGEgYmV0dGVyCmlkZWEgdG8gcmVwbGFjZSBhbGwgb2YgdGhp cy4KClRvIHN1bW1hcml6ZSwgc2luY2UgdGhpcyBpcyBkb2N1bWVudGVkIGZhciBtb3JlIGluZGVw dGggaW4gdGhlCmRvY3VtZW50YXRpb24gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzLCB3ZSBtYWtlIGl0 IHNvIHRoYXQgZHJtX2RwX21zdF9wb3J0CmFuZCBkcm1fZHBfbXN0X2JyYW5jaCBzdHJ1Y3R1cmVz IGhhdmUgdHdvIGRpZmZlcmVudCBjbGFzc2VzIG9mCnJlZmNvdW50czogdG9wb2xvZ3lfa3JlZiwg YW5kIG1hbGxvY19rcmVmLiB0b3BvbG9neV9rcmVmIGNvcnJlc3BvbmRzIHRvCnRoZSBsaWZldGlt ZSBvZiB0aGUgZ2l2ZW4gZHJtX2RwX21zdF9wb3J0IG9yIGRybV9kcF9tc3RfYnJhbmNoIGluIGl0 J3MKZ2l2ZW4gdG9wb2xvZ3kuIE9uY2UgaXQgaGl0cyB6ZXJvLCBhbnkgYXNzb2NpYXRlZCBjb25u ZWN0b3JzIGFyZSByZW1vdmVkCmFuZCB0aGUgYnJhbmNoIG9yIHBvcnQgY2FuIG5vIGxvbmdlciBi ZSB2YWxpZGF0ZWQuIG1hbGxvY19rcmVmCmNvcnJlc3BvbmRzIHRvIHRoZSBsaWZldGltZSBvZiB0 aGUgbWVtb3J5IGFsbG9jYXRpb24gZm9yIHRoZSBhY3R1YWwKc3RydWN0dXJlLCBhbmQgd2lsbCBh bHdheXMgYmUgbm9uLXplcm8gc28gbG9uZyBhcyB0aGUgdG9wb2xvZ3lfa3JlZiBpcwpub24temVy by4gVGhpcyBnaXZlcyB1cyBhIHdheSB0byBhbGxvdyBjYWxsZXJzIHRvIGhvbGQgb250byBwb3J0 IGFuZApicmFuY2ggZGV2aWNlIHN0cnVjdHVyZXMgcGFzdCB0aGVpciB0b3BvbG9neSBsaWZldGlt ZSwgYW5kIGRyYW1hdGljYWxseQpzaW1wbGlmaWVzIHRoZSBsaWZldGltZXMgb2YgYm90aCBzdHJ1 Y3R1cmVzLiBUaGlzIGFsc28gZmluYWxseSBmaXhlcyB0aGUKcG9ydCBkZWFsbG9jYXRpb24gcHJv YmxlbSwgcHJvcGVybHkuCgpBZGRpdGlvbmFsbHk6IHNpbmNlIHRoaXMgbm93IG1lYW5zIHRoYXQg d2UgY2FuIGtlZXAgcG9ydHMgYW5kIGJyYW5jaApkZXZpY2VzIGFsbG9jYXRlZCBpbiBtZW1vcnkg Zm9yIGhvd2V2ZXIgbG9uZyB3ZSBuZWVkLCB3ZSBubyBsb25nZXIgbmVlZAphIHNpZ25pZmljYW50 IGFtb3VudCBvZiB0aGUgcG9ydCB2YWxpZGF0aW9uIHRoYXQgd2UgY3VycmVudGx5IGRvLgoKQWRk aXRpb25hbGx5LCB0aGVyZSBpcyBvbmUgbGFzdCBzY2VuYXJpbyB0aGF0IHRoaXMgZml4ZXMsIHdo aWNoIGNvdWxkbid0CmhhdmUgYmVlbiBmaXhlZCBwcm9wZXJseSBiZWZvcmVoYW5kOgoKLSBDUFUx IHVucmVmcyBwb3J0IGZyb20gdG9wb2xvZ3kgKHJlZmNvdW50IDEtPjApCi0gQ1BVMiByZWZzIHBv cnQgaW4gdG9wb2xvZ3kocmVmY291bnQgMC0+MSkKClNpbmNlIHdlIG5vdyBjYW4gZ3VhcmFudGVl IG1lbW9yeSBzYWZldHkgZm9yIHBvcnRzIGFuZCBicmFuY2hlcwphcy1uZWVkZWQsIHdlIGFsc28g Y2FuIG1ha2Ugb3VyIG1haW4gcmVmZXJlbmNlIGNvdW50aW5nIGZ1bmN0aW9ucyBmaXgKdGhpcyBw cm9ibGVtIGJ5IHVzaW5nIGtyZWZfZ2V0X3VubGVzc196ZXJvKCkgaW50ZXJuYWxseSBzbyB0aGF0 IHRvcG9sb2d5CnJlZmNvdW50cyBjYW4gb25seSBldmVyIHJlYWNoIDAgb25jZS4KClNpZ25lZC1v ZmYtYnk6IEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhhdC5jb20+CkNjOiBEYW5pZWwgVmV0dGVyIDxk YW5pZWxAZmZ3bGwuY2g+CkNjOiBEYXZpZCBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KQ2M6 IEplcnJ5IFp1byA8SmVycnkuWnVvQGFtZC5jb20+CkNjOiBIYXJyeSBXZW50bGFuZCA8aGFycnku d2VudGxhbmRAYW1kLmNvbT4KQ2M6IEp1c3RvbiBMaSA8anVzdG9uLmxpQGludGVsLmNvbT4KLS0t CiAuLi4vZ3B1L2RwLW1zdC90b3BvbG9neS1maWd1cmUtMS5kb3QgICAgICAgICAgfCAgMzEgKysK IC4uLi9ncHUvZHAtbXN0L3RvcG9sb2d5LWZpZ3VyZS0yLmRvdCAgICAgICAgICB8ICAzNyArKwog Li4uL2dwdS9kcC1tc3QvdG9wb2xvZ3ktZmlndXJlLTMuZG90ICAgICAgICAgIHwgIDQwICsrCiBE b2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0ICAgICAgICAgfCAxMjUgKysrKy0K IGRyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMgICAgICAgICB8IDUxMiArKysr KysrKysrKysrLS0tLS0KIGluY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVyLmggICAgICAgICAg ICAgICB8ICAxOSArLQogNiBmaWxlcyBjaGFuZ2VkLCA2MzcgaW5zZXJ0aW9ucygrKSwgMTI3IGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vZ3B1L2RwLW1zdC90 b3BvbG9neS1maWd1cmUtMS5kb3QKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2dw dS9kcC1tc3QvdG9wb2xvZ3ktZmlndXJlLTIuZG90CiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1l bnRhdGlvbi9ncHUvZHAtbXN0L3RvcG9sb2d5LWZpZ3VyZS0zLmRvdAoKZGlmZiAtLWdpdCBhL0Rv Y3VtZW50YXRpb24vZ3B1L2RwLW1zdC90b3BvbG9neS1maWd1cmUtMS5kb3QgYi9Eb2N1bWVudGF0 aW9uL2dwdS9kcC1tc3QvdG9wb2xvZ3ktZmlndXJlLTEuZG90Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uZmI4Mzc4OWUwYTNlCi0tLSAvZGV2L251bGwKKysrIGIvRG9j dW1lbnRhdGlvbi9ncHUvZHAtbXN0L3RvcG9sb2d5LWZpZ3VyZS0xLmRvdApAQCAtMCwwICsxLDMx IEBACitkaWdyYXBoIFQgeworICAgIC8qIFRvcG9sb2d5IHJlZmVyZW5jZXMgKi8KKyAgICBub2Rl IFtzaGFwZT1vdmFsXTsKKyAgICBtc3RiMSAtPiB7cG9ydDEsIHBvcnQyfTsKKyAgICBwb3J0MSAt PiBtc3RiMjsKKyAgICBwb3J0MiAtPiBtc3RiMyAtPiB7cG9ydDMsIHBvcnQ0fTsKKyAgICBwb3J0 MyAtPiBtc3RiNDsKKworICAgIC8qIE1hbGxvYyByZWZlcmVuY2VzICovCisgICAgZWRnZSBbc3R5 bGU9ZGFzaGVkXTsKKyAgICBtc3RiNCAtPiBwb3J0MzsKKyAgICB7cG9ydDQsIHBvcnQzfSAtPiBt c3RiMzsKKyAgICBtc3RiMyAtPiBwb3J0MjsKKyAgICBtc3RiMiAtPiBwb3J0MTsKKyAgICB7cG9y dDEsIHBvcnQyfSAtPiBtc3RiMTsKKworICAgIGVkZ2UgW2Rpcj1iYWNrXTsKKyAgICBub2RlIFtz dHlsZT1maWxsZWQ7c2hhcGU9Ym94O2ZpbGxjb2xvcj1saWdodGJsdWVdOworICAgIHBvcnQxIC0+ ICJQYXlsb2FkICMxIjsKKyAgICBwb3J0MyAtPiAiUGF5bG9hZCAjMiI7CisKKyAgICBtc3RiMSBb bGFiZWw9Ik1TVEIgIzEiO3N0eWxlPWZpbGxlZDtmaWxsY29sb3I9cGFsZWdyZWVuXTsKKyAgICBt c3RiMiBbbGFiZWw9Ik1TVEIgIzIiO3N0eWxlPWZpbGxlZDtmaWxsY29sb3I9cGFsZWdyZWVuXTsK KyAgICBtc3RiMyBbbGFiZWw9Ik1TVEIgIzMiO3N0eWxlPWZpbGxlZDtmaWxsY29sb3I9cGFsZWdy ZWVuXTsKKyAgICBtc3RiNCBbbGFiZWw9Ik1TVEIgIzQiO3N0eWxlPWZpbGxlZDtmaWxsY29sb3I9 cGFsZWdyZWVuXTsKKworICAgIHBvcnQxIFtsYWJlbD0iUG9ydCAjMSJdOworICAgIHBvcnQyIFts YWJlbD0iUG9ydCAjMiJdOworICAgIHBvcnQzIFtsYWJlbD0iUG9ydCAjMyJdOworICAgIHBvcnQ0 IFtsYWJlbD0iUG9ydCAjNCJdOworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHAt bXN0L3RvcG9sb2d5LWZpZ3VyZS0yLmRvdCBiL0RvY3VtZW50YXRpb24vZ3B1L2RwLW1zdC90b3Bv bG9neS1maWd1cmUtMi5kb3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw Li5lZWJjZTU2MGJlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcC1t c3QvdG9wb2xvZ3ktZmlndXJlLTIuZG90CkBAIC0wLDAgKzEsMzcgQEAKK2RpZ3JhcGggVCB7Cisg ICAgLyogVG9wb2xvZ3kgcmVmZXJlbmNlcyAqLworICAgIG5vZGUgW3NoYXBlPW92YWxdOworCisg ICAgbXN0YjEgLT4ge3BvcnQxLCBwb3J0Mn07CisgICAgcG9ydDEgLT4gbXN0YjI7CisgICAgZWRn ZSBbY29sb3I9cmVkXTsKKyAgICBwb3J0MiAtPiBtc3RiMyAtPiB7cG9ydDMsIHBvcnQ0fTsKKyAg ICBwb3J0MyAtPiBtc3RiNDsKKyAgICBlZGdlIFtjb2xvcj0iIl07CisKKyAgICAvKiBNYWxsb2Mg cmVmZXJlbmNlcyAqLworICAgIGVkZ2UgW3N0eWxlPWRhc2hlZF07CisgICAgcG9ydDMgLT4gbXN0 YjM7CisgICAgbXN0YjMgLT4gcG9ydDI7CisgICAgbXN0YjIgLT4gcG9ydDE7CisgICAge3BvcnQx LCBwb3J0Mn0gLT4gbXN0YjE7CisgICAgZWRnZSBbY29sb3I9cmVkXTsKKyAgICBtc3RiNCAtPiBw b3J0MzsKKyAgICBwb3J0NCAtPiBtc3RiMzsKKyAgICBlZGdlIFtjb2xvcj0iIl07CisKKyAgICBl ZGdlIFtkaXI9YmFja107CisgICAgbm9kZSBbc3R5bGU9ZmlsbGVkO3NoYXBlPWJveDtmaWxsY29s b3I9bGlnaHRibHVlXTsKKyAgICBwb3J0MSAtPiAiUGF5bG9hZCAjMSI7CisgICAgcG9ydDMgLT4g IlBheWxvYWQgIzIiOworCisgICAgbXN0YjEgW2xhYmVsPSJNU1RCICMxIjtzdHlsZT1maWxsZWQ7 ZmlsbGNvbG9yPXBhbGVncmVlbl07CisgICAgbXN0YjIgW2xhYmVsPSJNU1RCICMyIjtzdHlsZT1m aWxsZWQ7ZmlsbGNvbG9yPXBhbGVncmVlbl07CisgICAgbXN0YjMgW2xhYmVsPSJNU1RCICMzIjtz dHlsZT1maWxsZWQ7ZmlsbGNvbG9yPXBhbGVncmVlbl07CisgICAgbXN0YjQgW2xhYmVsPSJNU1RC ICM0IjtzdHlsZT1maWxsZWQ7ZmlsbGNvbG9yPWdyZXldOworCisgICAgcG9ydDEgW2xhYmVsPSJQ b3J0ICMxIl07CisgICAgcG9ydDIgW2xhYmVsPSJQb3J0ICMyIl07CisgICAgcG9ydDMgW2xhYmVs PSJQb3J0ICMzIl07CisgICAgcG9ydDQgW2xhYmVsPSJQb3J0ICM0IjtzdHlsZT1maWxsZWQ7Zmls bGNvbG9yPWdyZXldOworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHAtbXN0L3Rv cG9sb2d5LWZpZ3VyZS0zLmRvdCBiL0RvY3VtZW50YXRpb24vZ3B1L2RwLW1zdC90b3BvbG9neS1m aWd1cmUtMy5kb3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45YmYy OGQ4NzE0NGMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcC1tc3QvdG9w b2xvZ3ktZmlndXJlLTMuZG90CkBAIC0wLDAgKzEsNDAgQEAKK2RpZ3JhcGggVCB7CisgICAgLyog VG9wb2xvZ3kgcmVmZXJlbmNlcyAqLworICAgIG5vZGUgW3NoYXBlPW92YWxdOworCisgICAgbXN0 YjEgLT4ge3BvcnQxLCBwb3J0Mn07CisgICAgcG9ydDEgLT4gbXN0YjI7CisgICAgZWRnZSBbY29s b3I9Z3JleV07CisgICAgcG9ydDIgLT4gbXN0YjMgLT4ge3BvcnQzLCBwb3J0NH07CisgICAgcG9y dDMgLT4gbXN0YjQ7CisgICAgZWRnZSBbY29sb3I9IiJdOworCisgICAgLyogTWFsbG9jIHJlZmVy ZW5jZXMgKi8KKyAgICBlZGdlIFtzdHlsZT1kYXNoZWRdOworICAgIHBvcnQzIC0+IG1zdGIzIFtw ZW53aWR0aD0zXTsKKyAgICBtc3RiMyAtPiBwb3J0MiBbcGVud2lkdGg9M107CisgICAgbXN0YjIg LT4gcG9ydDE7CisgICAge3BvcnQxLCBwb3J0Mn0gLT4gbXN0YjE7CisgICAgZWRnZSBbY29sb3I9 Z3JleV07CisgICAgbXN0YjQgLT4gcG9ydDM7CisgICAgcG9ydDQgLT4gbXN0YjM7CisgICAgZWRn ZSBbY29sb3I9IiJdOworCisgICAgZWRnZSBbZGlyPWJhY2tdOworICAgIG5vZGUgW3N0eWxlPWZp bGxlZDtzaGFwZT1ib3g7ZmlsbGNvbG9yPWxpZ2h0Ymx1ZV07CisgICAgcG9ydDEgLT4gcGF5bG9h ZDE7CisgICAgcG9ydDMgLT4gcGF5bG9hZDIgW3BlbndpZHRoPTNdOworCisgICAgbXN0YjEgW2xh YmVsPSJNU1RCICMxIjtzdHlsZT1maWxsZWQ7ZmlsbGNvbG9yPXBhbGVncmVlbl07CisgICAgbXN0 YjIgW2xhYmVsPSJNU1RCICMyIjtzdHlsZT1maWxsZWQ7ZmlsbGNvbG9yPXBhbGVncmVlbl07Cisg ICAgbXN0YjMgW2xhYmVsPSJNU1RCICMzIjtwZW53aWR0aD0zO3N0eWxlPWZpbGxlZDtmaWxsY29s b3I9cGFsZWdyZWVuXTsKKyAgICBtc3RiNCBbbGFiZWw9Ik1TVEIgIzQiO3N0eWxlPWZpbGxlZDtm aWxsY29sb3I9Z3JleV07CisKKyAgICBwb3J0MSBbbGFiZWw9IlBvcnQgIzEiXTsKKyAgICBwb3J0 MiBbbGFiZWw9IlBvcnQgIzIiO3BlbndpZHRoPTNdOworICAgIHBvcnQzIFtsYWJlbD0iUG9ydCAj MyI7cGVud2lkdGg9M107CisgICAgcG9ydDQgW2xhYmVsPSJQb3J0ICM0IjtzdHlsZT1maWxsZWQ7 ZmlsbGNvbG9yPWdyZXldOworCisgICAgcGF5bG9hZDEgW2xhYmVsPSJQYXlsb2FkICMxIl07Cisg ICAgcGF5bG9hZDIgW2xhYmVsPSJQYXlsb2FkICMyIjtwZW53aWR0aD0zXTsKK30KZGlmZiAtLWdp dCBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QgYi9Eb2N1bWVudGF0aW9u L2dwdS9kcm0ta21zLWhlbHBlcnMucnN0CmluZGV4IGI0MjJlYjhlZGYxNi4uYzBmOTk0YzJjNzJm IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0CisrKyBi L0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QKQEAgLTIwOCw4ICsyMDgsMTEg QEAgRGlzcGxheSBQb3J0IER1YWwgTW9kZSBBZGFwdG9yIEhlbHBlciBGdW5jdGlvbnMgUmVmZXJl bmNlCiAuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9kcF9kdWFsX21vZGVfaGVs cGVyLmMKICAgIDpleHBvcnQ6CiAKLURpc3BsYXkgUG9ydCBNU1QgSGVscGVyIEZ1bmN0aW9ucyBS ZWZlcmVuY2UKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0Rp c3BsYXkgUG9ydCBNU1QgSGVscGVycworPT09PT09PT09PT09PT09PT09PT09PT09CisKK0Z1bmN0 aW9ucyBSZWZlcmVuY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLi4ga2VybmVsLWRvYzo6IGRy aXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMKICAgIDpkb2M6IGRwIG1zdCBoZWxw ZXIKQEAgLTIyMCw2ICsyMjMsMTI0IEBAIERpc3BsYXkgUG9ydCBNU1QgSGVscGVyIEZ1bmN0aW9u cyBSZWZlcmVuY2UKIC4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90 b3BvbG9neS5jCiAgICA6ZXhwb3J0OgogCitCcmFuY2ggZGV2aWNlIGFuZCBwb3J0IHJlZmNvdW50 aW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK092ZXJ2aWV3Cit+fn5+ fn5+fgorCitUaGUgcmVmY291bnRpbmcgc2NoZW1lcyBmb3IgOmM6dHlwZTpgc3RydWN0IGRybV9k cF9tc3RfYnJhbmNoYCBhbmQKKzpjOnR5cGU6YHN0cnVjdCBkcm1fZHBfbXN0X3BvcnRgIGFyZSBz b21ld2hhdCB1bnVzdWFsLiBCb3RoIHBvcnRzIGFuZCBicmFuY2gKK2RldmljZXMgaGF2ZSB0d28g ZGlmZmVyZW50IGtpbmRzIG9mIHJlZmNvdW50czogdG9wb2xvZ3kgcmVmY291bnRzLCBhbmQgbWFs bG9jCityZWZjb3VudHMuCisKK1RvcG9sb2d5IHJlZmNvdW50IG92ZXJ2aWV3Cit+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fgorCitUb3BvbG9neSByZWZjb3VudHMgYXJlIG5vdCBleHBvc2VkIHRv IGRyaXZlcnMsIGFuZCBhcmUgaGFuZGxlZCBpbnRlcm5hbGx5IGJ5IHRoZQorRFAgTVNUIGhlbHBl cnMuIFRoZSBoZWxwZXJzIHVzZSB0aGVtIGluIG9yZGVyIHRvIHByZXZlbnQgdGhlIGluLW1lbW9y eSB0b3BvbG9neQorc3RhdGUgZnJvbSBiZWluZyBjaGFuZ2VkIGluIHRoZSBtaWRkbGUgb2YgY3Jp dGljYWwgb3BlcmF0aW9ucyBsaWtlIGNoYW5naW5nIHRoZQoraW50ZXJuYWwgc3RhdGUgb2YgcGF5 bG9hZCBhbGxvY2F0aW9ucy4gVGhpcyBtZWFucyBlYWNoIGJyYW5jaCBhbmQgcG9ydCB3aWxsIGJl Citjb25zaWRlcmVkIHRvIGJlIGNvbm5lY3RlZCB0byB0aGUgcmVzdCBvZiB0aGUgdG9wb2xvZ3kg dW50aWwgaXQncyB0b3BvbG9neQorcmVmY291bnQgcmVhY2hlcyB6ZXJvLiBBZGRpdGlvbmFsbHks IGZvciBwb3J0cyB0aGlzIG1lYW5zIHRoYXQgdGhlaXIgYXNzb2NpYXRlZAorOmM6dHlwZTpgc3Ry dWN0IGRybV9jb25uZWN0b3JgIHdpbGwgc3RheSByZWdpc3RlcmVkIHdpdGggdXNlcnNwYWNlIHVu dGlsIHRoZQorcG9ydCdzIHJlZmNvdW50IHJlYWNoZXMgMC4KKworCitUb3BvbG9neSByZWZjb3Vu dCBmdW5jdGlvbnMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitUaGUgRFAgTVNUIGhl bHBlcnMgdXNlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHRvIG1hbmFnZSB0b3BvbG9neSByZWZj b3VudHM6CisKKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3Bv bG9neS5jCisgICA6ZnVuY3Rpb25zOiBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9wb3J0IGRybV9k cF9tc3RfdG9wb2xvZ3lfcHV0X3BvcnQKKyAgICAgICAgICAgICAgIGRybV9kcF9tc3RfdG9wb2xv Z3lfcmVmX3BvcnQgZHJtX2RwX21zdF90b3BvbG9neV9nZXRfbXN0YgorICAgICAgICAgICAgICAg ZHJtX2RwX21zdF90b3BvbG9neV9wdXRfbXN0YiBkcm1fZHBfbXN0X3RvcG9sb2d5X3JlZl9tc3Ri CisKK01hbGxvYyByZWZjb3VudCBvdmVydmlldworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisK K01hbGxvYyByZWZlcmVuY2VzIGFyZSB1c2VkIHRvIGtlZXAgYSA6Yzp0eXBlOmBzdHJ1Y3QgZHJt X2RwX21zdF9wb3J0YCBvcgorOmM6dHlwZTpgc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoYCBhbGxv Y2F0ZWQgZXZlbiBhZnRlciBhbGwgb2YgaXRzIHRvcG9sb2d5CityZWZlcmVuY2VzIGhhdmUgYmVl biBkcm9wcGVkLCBzbyB0aGF0IHRoZSBkcml2ZXIgb3IgTVNUIGhlbHBlcnMgY2FuIHNhZmVseQor YWNjZXNzIGVhY2ggYnJhbmNoJ3MgbGFzdCBrbm93biBzdGF0ZSBiZWZvcmUgaXQgd2FzIGRpc2Nv bm5lY3RlZCBmcm9tIHRoZQordG9wb2xvZ3kuIFdoZW4gdGhlIG1hbGxvYyByZWZjb3VudCBvZiBh IHBvcnQgb3IgYnJhbmNoIHJlYWNoZXMgMCwgdGhlIG1lbW9yeQorYWxsb2NhdGlvbiBjb250YWlu aW5nIHRoZSA6Yzp0eXBlOmBzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2hgIG9yIDpjOnR5cGU6YHN0 cnVjdAorZHJtX2RwX21zdF9wb3J0YCByZXNwZWN0aXZlbHkgd2lsbCBiZSBmcmVlZC4KKworTWFs bG9jIHJlZmNvdW50cyBmb3IgcG9ydHMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0Zv ciA6Yzp0eXBlOmBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0YCwgbWFsbG9jIHJlZmNvdW50cyBhcmUg ZXhwb3NlZCB0byBkcml2ZXJzCit0aHJvdWdoIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgorCisu LiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYworICAg OmZ1bmN0aW9uczogZHJtX2RwX21zdF9nZXRfcG9ydF9tYWxsb2MgZHJtX2RwX21zdF9wdXRfcG9y dF9tYWxsb2MKKworTWFsbG9jIHJlZmNvdW50cyBmb3IgYnJhbmNoIGRldmljZXMKK35+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0ZvciA6Yzp0eXBlOmBzdHJ1Y3QgZHJtX2Rw X21zdF9icmFuY2hgLCBtYWxsb2MgcmVmY291bnRzIGFyZSBub3QgY3VycmVudGx5CitleHBvc2Vk IHRvIGRyaXZlcnMuIEFzIG9mIHdyaXRpbmcgdGhpcyBkb2N1bWVudGF0aW9uLCB0aGVyZSBhcmUg bm8gZHJpdmVycyB0aGF0CitoYXZlIGEgdXNlY2FzZSBmb3IgYWNjZXNzaW5nIDpjOnR5cGU6YHN0 cnVjdCBkcm1fZHBfbXN0X2JyYW5jaGAgb3V0c2lkZSBvZiB0aGUKK01TVCBoZWxwZXJzLiBFeHBv c2luZyB0aGlzIEFQSSB0byBkcml2ZXJzIGluIGEgcmFjZS1mcmVlIG1hbm5lciB3b3VsZCB0YWtl IG1vcmUKK3R3ZWFraW5nIG9mIHRoZSByZWZjb3VudGluZyBzY2hlbWUsIGhvd2V2ZXIgcGF0Y2hl cyBhcmUgd2VsY29tZSBwcm92aWRlZCB0aGVyZQoraXMgYSBsZWdpdGltYXRlIGRyaXZlciB1c2Vj YXNlIGZvciB0aGlzLgorCitJbnRlcm5hbGx5LCBtYWxsb2MgcmVmY291bnRzIGZvciA6Yzp0eXBl OmBzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2hgIGFyZSBtYW5hZ2VkCitieSB0aGUgRFAgTVNUIGNv cmUgdGhyb3VnaCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKKworLi4ga2VybmVsLWRvYzo6IGRy aXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMKKyAgIDpmdW5jdGlvbnM6IGRybV9k cF9tc3RfZ2V0X21zdGJfbWFsbG9jIGRybV9kcF9tc3RfcHV0X21zdGJfbWFsbG9jCisKK1JlZmNv dW50IHJlbGF0aW9uc2hpcHMgaW4gYSB0b3BvbG9neQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+CisKK0xldCdzIHRha2UgYSBsb29rIGF0IHdoeSB0aGUgcmVsYXRpb25zaGlw IGJldHdlZW4gdG9wb2xvZ3kgYW5kIG1hbGxvYyByZWZjb3VudHMKK2lzIGRlc2lnbmVkIHRoZSB3 YXkgaXQgaXMuCisKKy4uIGtlcm5lbC1maWd1cmU6OiBkcC1tc3QvdG9wb2xvZ3ktZmlndXJlLTEu ZG90CisKKyAgIEFuIGV4YW1wbGUgb2YgdG9wb2xvZ3kgYW5kIG1hbGxvYyByZWZzIGluIGEgRFAg TVNUIHRvcG9sb2d5IHdpdGggdHdvIGFjdGl2ZQorICAgcGF5bG9hZHMuIFRvcG9sb2d5IHJlZmNv dW50IGluY3JlbWVudHMgYXJlIGluZGljYXRlZCBieSBzb2xpZCBsaW5lcywgYW5kCisgICBtYWxs b2MgcmVmY291bnQgaW5jcmVtZW50cyBhcmUgaW5kaWNhdGVkIGJ5IGRhc2hlZCBsaW5lcy4gRWFj aCBzdGFydHMgZnJvbQorICAgdGhlIGJyYW5jaCB3aGljaCBpbmNyZW1lbnRlZCB0aGUgcmVmY291 bnQsIGFuZCBlbmRzIGF0IHRoZSBicmFuY2ggdG8gd2hpY2gKKyAgIHRoZSByZWZjb3VudCBiZWxv bmdzIHRvLgorCitBcyB5b3UgY2FuIHNlZSBpbiBmaWd1cmUgMSwgZXZlcnkgYnJhbmNoIGluY3Jl bWVudHMgdGhlIHRvcG9sb2d5CityZWZjb3VudCBvZiBpdCdzIGNoaWxkcmVuLCBhbmQgaW5jcmVt ZW50cyB0aGUgbWFsbG9jIHJlZmNvdW50IG9mIGl0J3MgcGFyZW50LgorQWRkaXRpb25hbGx5LCBl dmVyeSBwYXlsb2FkIGluY3JlbWVudHMgdGhlIG1hbGxvYyByZWZjb3VudCBvZiBpdCdzIGFzc2ln bmVkIHBvcnQKK2J5IDEuCisKK1NvLCB3aGF0IHdvdWxkIGhhcHBlbiBpZiBNU1RCICMzIGZyb20g dGhlIGFib3ZlIGZpZ3VyZSB3YXMgdW5wbHVnZ2VkIGZyb20gdGhlCitzeXN0ZW0sIGJ1dCB0aGUg ZHJpdmVyIGhhZG4ndCB5ZXQgcmVtb3ZlZCBwYXlsb2FkICMyIGZyb20gcG9ydCAjMz8gVGhlIHRv cG9sb2d5Cit3b3VsZCBzdGFydCB0byBsb29rIGxpa2UgZmlndXJlIDIuCisKKy4uIGtlcm5lbC1m aWd1cmU6OiBkcC1tc3QvdG9wb2xvZ3ktZmlndXJlLTIuZG90CisKKyAgIFBvcnRzIGFuZCBicmFu Y2ggZGV2aWNlcyB3aGljaCBoYXZlIGJlZW4gcmVsZWFzZWQgZnJvbSBtZW1vcnkgYXJlIGNvbG9y ZWQKKyAgIGdyZXksIGFuZCByZWZlcmVuY2VzIHdoaWNoIGhhdmUgYmVlbiByZW1vdmVkIGFyZSBj b2xvcmVkIHJlZC4KKworV2hlbmV2ZXIgYSBwb3J0IG9yIGJyYW5jaCBkZXZpY2UncyB0b3BvbG9n eSByZWZjb3VudCByZWFjaGVzIHplcm8sIGl0IHdpbGwKK2RlY3JlbWVudCB0aGUgdG9wb2xvZ3kg cmVmY291bnRzIG9mIGFsbCBpdHMgY2hpbGRyZW4sIHRoZSBtYWxsb2MgcmVmY291bnQgb2YgaXRz CitwYXJlbnQsIGFuZCBmaW5hbGx5IGl0cyBvd24gbWFsbG9jIHJlZmNvdW50LiBGb3IgTVNUQiAj NCBhbmQgcG9ydCAjNCwgdGhpcyBtZWFucwordGhleSBib3RoIGhhdmUgYmVlbiBkaXNjb25uZWN0 ZWQgZnJvbSB0aGUgdG9wb2xvZ3kgYW5kIGZyZWVkIGZyb20gbWVtb3J5LiBCdXQsCitiZWNhdXNl IHBheWxvYWQgIzIgaXMgc3RpbGwgaG9sZGluZyBhIHJlZmVyZW5jZSB0byBwb3J0ICMzLCBwb3J0 ICMzIGlzIHJlbW92ZWQKK2Zyb20gdGhlIHRvcG9sb2d5IGJ1dCBpdCdzIDpjOnR5cGU6YHN0cnVj dCBkcm1fZHBfbXN0X3BvcnRgIGlzIHN0aWxsIGFjY2Vzc2libGUKK2Zyb20gbWVtb3J5LiBUaGlz IGFsc28gbWVhbnMgcG9ydCAjMyBoYXMgbm90IHlldCBkZWNyZW1lbnRlZCB0aGUgbWFsbG9jIHJl ZmNvdW50CitvZiBNU1RCICMzLCBzbyBpdCdzIDpjOnR5cGU6YHN0cnVjdCBkcm1fZHBfbXN0X2Jy YW5jaGAgd2lsbCBhbHNvIHN0YXkgYWxsb2NhdGVkCitpbiBtZW1vcnkgdW50aWwgcG9ydCAjMydz IG1hbGxvYyByZWZjb3VudCByZWFjaGVzIDAuCisKK1RoaXMgcmVsYXRpb25zaGlwIGlzIG5lY2Vz c2FyeSBiZWNhdXNlIGluIG9yZGVyIHRvIHJlbGVhc2UgcGF5bG9hZCAjMiwgd2UKK25lZWQgdG8g YmUgYWJsZSB0byBmaWd1cmUgb3V0IHRoZSBsYXN0IHJlbGF0aXZlIG9mIHBvcnQgIzMgdGhhdCdz IHN0aWxsCitjb25uZWN0ZWQgdG8gdGhlIHRvcG9sb2d5LiBJbiB0aGlzIGNhc2UsIHdlIHdvdWxk IHRyYXZlbCB1cCB0aGUgdG9wb2xvZ3kgYXMKK3Nob3duIGluIGZpZ3VyZSAzLgorCisuLiBrZXJu ZWwtZmlndXJlOjogZHAtbXN0L3RvcG9sb2d5LWZpZ3VyZS0zLmRvdAorCitBbmQgZmluYWxseSwg cmVtb3ZlIHBheWxvYWQgIzIgYnkgY29tbXVuaWNhdGluZyB3aXRoIHBvcnQgIzIgdGhyb3VnaCBz aWRlYmFuZAordHJhbnNhY3Rpb25zLgorCiBNSVBJIERTSSBIZWxwZXIgRnVuY3Rpb25zIFJlZmVy ZW5jZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fZHBfbXN0X3RvcG9sb2d5LmMKaW5kZXggMmFiMTZjOWU2MjQzLi5jMTk2ZmI1ODBiZWIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYwpAQCAtNDYsNyArNDYsNyBAQCBzdGF0 aWMgYm9vbCBkdW1wX2RwX3BheWxvYWRfdGFibGUoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lf bWdyICptZ3IsCiAJCQkJICBjaGFyICpidWYpOwogc3RhdGljIGludCB0ZXN0X2NhbGNfcGJuX21v ZGUodm9pZCk7CiAKLXN0YXRpYyB2b2lkIGRybV9kcF9wdXRfcG9ydChzdHJ1Y3QgZHJtX2RwX21z dF9wb3J0ICpwb3J0KTsKK3N0YXRpYyB2b2lkIGRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X3BvcnQo c3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCk7CiAKIHN0YXRpYyBpbnQgZHJtX2RwX2RwY2Rf d3JpdGVfcGF5bG9hZChzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKIAkJCQkg ICAgIGludCBpZCwKQEAgLTg1MCw0NiArODUwLDEyMCBAQCBzdGF0aWMgc3RydWN0IGRybV9kcF9t c3RfYnJhbmNoICpkcm1fZHBfYWRkX21zdF9icmFuY2hfZGV2aWNlKHU4IGxjdCwgdTggKnJhZCkK IAlpZiAobGN0ID4gMSkKIAkJbWVtY3B5KG1zdGItPnJhZCwgcmFkLCBsY3QgLyAyKTsKIAlJTklU X0xJU1RfSEVBRCgmbXN0Yi0+cG9ydHMpOwotCWtyZWZfaW5pdCgmbXN0Yi0+a3JlZik7CisJa3Jl Zl9pbml0KCZtc3RiLT50b3BvbG9neV9rcmVmKTsKKwlrcmVmX2luaXQoJm1zdGItPm1hbGxvY19r cmVmKTsKIAlyZXR1cm4gbXN0YjsKIH0KIAogc3RhdGljIHZvaWQgZHJtX2RwX2ZyZWVfbXN0X3Bv cnQoc3RydWN0IGtyZWYgKmtyZWYpOworc3RhdGljIHZvaWQgZHJtX2RwX2ZyZWVfbXN0X2JyYW5j aF9kZXZpY2Uoc3RydWN0IGtyZWYgKmtyZWYpOworCisvKioKKyAqIGRybV9kcF9tc3RfZ2V0X21z dGJfbWFsbG9jKCkgLSBJbmNyZW1lbnQgdGhlIG1hbGxvYyByZWZjb3VudCBvZiBhIGJyYW5jaAor ICogZGV2aWNlCisgKiBAbXN0YjogVGhlICZzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggdG8gaW5j cmVtZW50IHRoZSBtYWxsb2MgcmVmY291bnQgb2YKKyAqCisgKiBJbmNyZW1lbnRzIEBtc3RiLm1h bGxvY19rcmVmLiBXaGVuIEBtc3RiLm1hbGxvY19rcmVmIHJlYWNoZXMgMCwgdGhlIG1lbW9yeQor ICogYWxsb2NhdGlvbiBmb3IgQG1zdGIgd2lsbCBiZSByZWxlYXNlZCBhbmQgQG1zdGIgbWF5IG5v IGxvbmdlciBiZSB1c2VkLgorICoKKyAqIEFueSBtYWxsb2MgcmVmZXJlbmNlcyBhY3F1aXJlZCB3 aXRoIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSByZWxlYXNlZCB3aGVuCisgKiB0aGV5IGFyZSBubyBs b25nZXIgYmVpbmcgdXNlZCBieSBjYWxsaW5nIGRybV9kcF9tc3RfcHV0X21zdGJfbWFsbG9jKCku CisgKgorICogU2VlIGFsc286IGRybV9kcF9tc3RfcHV0X21zdGJfbWFsbG9jKCkKKyAqLworc3Rh dGljIHZvaWQKK2RybV9kcF9tc3RfZ2V0X21zdGJfbWFsbG9jKHN0cnVjdCBkcm1fZHBfbXN0X2Jy YW5jaCAqbXN0YikKK3sKKwlrcmVmX2dldCgmbXN0Yi0+bWFsbG9jX2tyZWYpOworCURSTV9ERUJV RygibXN0YiAlcCAoJWQpXG4iLCBtc3RiLCBrcmVmX3JlYWQoJm1zdGItPm1hbGxvY19rcmVmKSk7 Cit9CisKKy8qKgorICogZHJtX2RwX21zdF9wdXRfbXN0Yl9tYWxsb2MoKSAtIERlY3JlbWVudCB0 aGUgbWFsbG9jIHJlZmNvdW50IG9mIGEgYnJhbmNoCisgKiBkZXZpY2UKKyAqIEBtc3RiOiBUaGUg JnN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCB0byBkZWNyZW1lbnQgdGhlIG1hbGxvYyByZWZjb3Vu dCBvZgorICoKKyAqIERlY3JlbWVudHMgQG1zdGIubWFsbG9jX2tyZWYuIFdoZW4gQG1zdGIubWFs bG9jX2tyZWYgcmVhY2hlcyAwLCB0aGUgbWVtb3J5CisgKiBhbGxvY2F0aW9uIGZvciBAbXN0YiB3 aWxsIGJlIHJlbGVhc2VkIGFuZCBAbXN0YiBtYXkgbm8gbG9uZ2VyIGJlIHVzZWQuCisgKgorICog U2VlIGFsc286IGRybV9kcF9tc3RfZ2V0X21zdGJfbWFsbG9jKCkKKyAqLworc3RhdGljIHZvaWQK K2RybV9kcF9tc3RfcHV0X21zdGJfbWFsbG9jKHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0 YikKK3sKKwlEUk1fREVCVUcoIm1zdGIgJXAgKCVkKVxuIiwgbXN0Yiwga3JlZl9yZWFkKCZtc3Ri LT5tYWxsb2Nfa3JlZiktMSk7CisJa3JlZl9wdXQoJm1zdGItPm1hbGxvY19rcmVmLCBkcm1fZHBf ZnJlZV9tc3RfYnJhbmNoX2RldmljZSk7Cit9CisKKy8qKgorICogZHJtX2RwX21zdF9nZXRfcG9y dF9tYWxsb2MoKSAtIEluY3JlbWVudCB0aGUgbWFsbG9jIHJlZmNvdW50IG9mIGFuIE1TVCBwb3J0 CisgKiBAcG9ydDogVGhlICZzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0IHRvIGluY3JlbWVudCB0aGUg bWFsbG9jIHJlZmNvdW50IG9mCisgKgorICogSW5jcmVtZW50cyBAcG9ydC5tYWxsb2Nfa3JlZi4g V2hlbiBAcG9ydC5tYWxsb2Nfa3JlZiByZWFjaGVzIDAsIHRoZSBtZW1vcnkKKyAqIGFsbG9jYXRp b24gZm9yIEBwb3J0IHdpbGwgYmUgcmVsZWFzZWQgYW5kIEBwb3J0IG1heSBubyBsb25nZXIgYmUg dXNlZC4KKyAqCisgKiBCZWNhdXNlIEBwb3J0IGNvdWxkIHBvdGVudGlhbGx5IGJlIGZyZWVkIGF0 IGFueSB0aW1lIGJ5IHRoZSBEUCBNU1QgaGVscGVycworICogaWYgQHBvcnQubWFsbG9jX2tyZWYg cmVhY2hlcyAwLCBpbmNsdWRpbmcgZHVyaW5nIGEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uLAorICog ZHJpdmVycyB0aGF0IHdoaWNoIHRvIG1ha2UgdXNlIG9mICZzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0 IHNob3VsZCBlbnN1cmUKKyAqIHRoYXQgdGhleSBncmFiIGF0IGxlYXN0IG9uZSBtYWluIG1hbGxv YyByZWZlcmVuY2UgdG8gdGhlaXIgTVNUIHBvcnRzIGluCisgKiAmZHJtX2RwX21zdF90b3BvbG9n eV9jYnMuYWRkX2Nvbm5lY3Rvci4gVGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgYmVmb3JlCisgKiB0 aGVyZSBpcyBhbnkgY2hhbmNlIGZvciBAcG9ydC5tYWxsb2Nfa3JlZiB0byByZWFjaCAwLgorICoK KyAqIEFueSBtYWxsb2MgcmVmZXJlbmNlcyBhY3F1aXJlZCB3aXRoIHRoaXMgZnVuY3Rpb24gbXVz dCBiZSByZWxlYXNlZCB3aGVuCisgKiB0aGV5IGFyZSBubyBsb25nZXIgYmVpbmcgdXNlZCBieSBj YWxsaW5nIGRybV9kcF9tc3RfcHV0X3BvcnRfbWFsbG9jKCkuCisgKgorICogU2VlIGFsc286IGRy bV9kcF9tc3RfcHV0X3BvcnRfbWFsbG9jKCkKKyAqLwordm9pZAorZHJtX2RwX21zdF9nZXRfcG9y dF9tYWxsb2Moc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCkKK3sKKwlrcmVmX2dldCgmcG9y dC0+bWFsbG9jX2tyZWYpOworCURSTV9ERUJVRygicG9ydCAlcCAoJWQpXG4iLCBwb3J0LCBrcmVm X3JlYWQoJnBvcnQtPm1hbGxvY19rcmVmKSk7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9kcF9tc3Rf Z2V0X3BvcnRfbWFsbG9jKTsKKworLyoqCisgKiBkcm1fZHBfbXN0X3B1dF9wb3J0X21hbGxvYygp IC0gRGVjcmVtZW50IHRoZSBtYWxsb2MgcmVmY291bnQgb2YgYW4gTVNUIHBvcnQKKyAqIEBwb3J0 OiBUaGUgJnN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgdG8gZGVjcmVtZW50IHRoZSBtYWxsb2MgcmVm Y291bnQgb2YKKyAqCisgKiBEZWNyZW1lbnRzIEBwb3J0Lm1hbGxvY19rcmVmLiBXaGVuIEBwb3J0 Lm1hbGxvY19rcmVmIHJlYWNoZXMgMCwgdGhlIG1lbW9yeQorICogYWxsb2NhdGlvbiBmb3IgQHBv cnQgd2lsbCBiZSByZWxlYXNlZCBhbmQgQHBvcnQgbWF5IG5vIGxvbmdlciBiZSB1c2VkLgorICoK KyAqIFNlZSBhbHNvOiBkcm1fZHBfbXN0X2dldF9wb3J0X21hbGxvYygpCisgKi8KK3ZvaWQKK2Ry bV9kcF9tc3RfcHV0X3BvcnRfbWFsbG9jKHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpCit7 CisJRFJNX0RFQlVHKCJwb3J0ICVwICglZClcbiIsIHBvcnQsIGtyZWZfcmVhZCgmcG9ydC0+bWFs bG9jX2tyZWYpLTEpOworCWtyZWZfcHV0KCZwb3J0LT5tYWxsb2Nfa3JlZiwgZHJtX2RwX2ZyZWVf bXN0X3BvcnQpOworfQorRVhQT1JUX1NZTUJPTChkcm1fZHBfbXN0X3B1dF9wb3J0X21hbGxvYyk7 CiAKIHN0YXRpYyB2b2lkIGRybV9kcF9mcmVlX21zdF9icmFuY2hfZGV2aWNlKHN0cnVjdCBrcmVm ICprcmVmKQogewotCXN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YiA9IGNvbnRhaW5lcl9v ZihrcmVmLCBzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2gsIGtyZWYpOwotCWlmIChtc3RiLT5wb3J0 X3BhcmVudCkgewotCQlpZiAobGlzdF9lbXB0eSgmbXN0Yi0+cG9ydF9wYXJlbnQtPm5leHQpKQot CQkJa3JlZl9wdXQoJm1zdGItPnBvcnRfcGFyZW50LT5rcmVmLCBkcm1fZHBfZnJlZV9tc3RfcG9y dCk7Ci0JfQorCXN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YiA9CisJCWNvbnRhaW5lcl9v ZihrcmVmLCBzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2gsIG1hbGxvY19rcmVmKTsKKworCWlmICht c3RiLT5wb3J0X3BhcmVudCkKKwkJZHJtX2RwX21zdF9wdXRfcG9ydF9tYWxsb2MobXN0Yi0+cG9y dF9wYXJlbnQpOworCiAJa2ZyZWUobXN0Yik7CiB9CiAKIHN0YXRpYyB2b2lkIGRybV9kcF9kZXN0 cm95X21zdF9icmFuY2hfZGV2aWNlKHN0cnVjdCBrcmVmICprcmVmKQogewotCXN0cnVjdCBkcm1f ZHBfbXN0X2JyYW5jaCAqbXN0YiA9IGNvbnRhaW5lcl9vZihrcmVmLCBzdHJ1Y3QgZHJtX2RwX21z dF9icmFuY2gsIGtyZWYpOworCXN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YiA9CisJCWNv bnRhaW5lcl9vZihrcmVmLCBzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2gsIHRvcG9sb2d5X2tyZWYp OworCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyID0gbXN0Yi0+bWdyOwogCXN0 cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQsICp0bXA7CiAJYm9vbCB3YWtlX3R4ID0gZmFsc2U7 CiAKLQkvKgotCSAqIGluaXQga3JlZiBhZ2FpbiB0byBiZSB1c2VkIGJ5IHBvcnRzIHRvIHJlbW92 ZSBtc3QgYnJhbmNoIHdoZW4gaXQgaXMKLQkgKiBub3QgbmVlZGVkIGFueW1vcmUKLQkgKi8KLQlr cmVmX2luaXQoa3JlZik7Ci0KLQlpZiAobXN0Yi0+cG9ydF9wYXJlbnQgJiYgbGlzdF9lbXB0eSgm bXN0Yi0+cG9ydF9wYXJlbnQtPm5leHQpKQotCQlrcmVmX2dldCgmbXN0Yi0+cG9ydF9wYXJlbnQt PmtyZWYpOwotCi0JLyoKLQkgKiBkZXN0cm95IGFsbCBwb3J0cyAtIGRvbid0IG5lZWQgbG9jawot CSAqIGFzIHRoZXJlIGFyZSBubyBtb3JlIHJlZmVyZW5jZXMgdG8gdGhlIG1zdCBicmFuY2gKLQkg KiBkZXZpY2UgYXQgdGhpcyBwb2ludC4KLQkgKi8KKwltdXRleF9sb2NrKCZtZ3ItPmxvY2spOwog CWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3J0LCB0bXAsICZtc3RiLT5wb3J0cywgbmV4dCkg ewogCQlsaXN0X2RlbCgmcG9ydC0+bmV4dCk7Ci0JCWRybV9kcF9wdXRfcG9ydChwb3J0KTsKKwkJ ZHJtX2RwX21zdF90b3BvbG9neV9wdXRfcG9ydChwb3J0KTsKIAl9CisJbXV0ZXhfdW5sb2NrKCZt Z3ItPmxvY2spOwogCiAJLyogZHJvcCBhbnkgdHggc2xvdHMgbXNnICovCiAJbXV0ZXhfbG9jaygm bXN0Yi0+bWdyLT5xbG9jayk7CkBAIC05MDgsMTQgKzk4Miw4MiBAQCBzdGF0aWMgdm9pZCBkcm1f ZHBfZGVzdHJveV9tc3RfYnJhbmNoX2RldmljZShzdHJ1Y3Qga3JlZiAqa3JlZikKIAlpZiAod2Fr ZV90eCkKIAkJd2FrZV91cF9hbGwoJm1zdGItPm1nci0+dHhfd2FpdHEpOwogCi0Ja3JlZl9wdXQo a3JlZiwgZHJtX2RwX2ZyZWVfbXN0X2JyYW5jaF9kZXZpY2UpOworCWRybV9kcF9tc3RfcHV0X21z dGJfbWFsbG9jKG1zdGIpOwogfQogCi1zdGF0aWMgdm9pZCBkcm1fZHBfcHV0X21zdF9icmFuY2hf ZGV2aWNlKHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YikKKy8qKgorICogZHJtX2RwX21z dF90b3BvbG9neV9nZXRfbXN0YigpIC0gSW5jcmVtZW50IHRoZSB0b3BvbG9neSByZWZjb3VudCBv ZiBhCisgKiBicmFuY2ggZGV2aWNlIHVubGVzcyBpdHMgemVybworICogQG1zdGI6ICZzdHJ1Y3Qg ZHJtX2RwX21zdF9icmFuY2ggdG8gaW5jcmVtZW50IHRoZSB0b3BvbG9neSByZWZjb3VudCBvZgor ICoKKyAqIEF0dGVtcHRzIHRvIGdyYWIgYSB0b3BvbG9neSByZWZlcmVuY2UgdG8gQG1zdGIsIGlm IGl0IGhhc24ndCB5ZXQgYmVlbgorICogcmVtb3ZlZCBmcm9tIHRoZSB0b3BvbG9neSAoZS5nLiBA bXN0Yi50b3BvbG9neV9rcmVmIGhhcyByZWFjaGVkIDApLgorICoKKyAqIEFueSB0b3BvbG9neSBy ZWZlcmVuY2VzIGFjcXVpcmVkIHdpdGggdGhpcyBmdW5jdGlvbiBtdXN0IGJlIHJlbGVhc2VkIHdo ZW4KKyAqIHRoZXkgYXJlIG5vIGxvbmdlciBiZWluZyB1c2VkIGJ5IGNhbGxpbmcgZHJtX2RwX21z dF90b3BvbG9neV9wdXRfbXN0YigpLgorICoKKyAqIFNlZSBhbHNvOgorICogZHJtX2RwX21zdF90 b3BvbG9neV9yZWZfbXN0YigpCisgKiBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9tc3RiKCkKKyAq CisgKiBSZXR1cm5zOgorICogKiAxOiBBIHRvcG9sb2d5IHJlZmVyZW5jZSB3YXMgZ3JhYmJlZCBz dWNjZXNzZnVsbHkKKyAqICogMDogQHBvcnQgaXMgbm8gbG9uZ2VyIGluIHRoZSB0b3BvbG9neSwg bm8gcmVmZXJlbmNlIHdhcyBncmFiYmVkCisgKi8KK3N0YXRpYyBpbnQgX19tdXN0X2NoZWNrCitk cm1fZHBfbXN0X3RvcG9sb2d5X2dldF9tc3RiKHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0 YikKIHsKLQlrcmVmX3B1dCgmbXN0Yi0+a3JlZiwgZHJtX2RwX2Rlc3Ryb3lfbXN0X2JyYW5jaF9k ZXZpY2UpOworCWludCByZXQgPSBrcmVmX2dldF91bmxlc3NfemVybygmbXN0Yi0+dG9wb2xvZ3lf a3JlZik7CisKKwlpZiAocmV0KQorCQlEUk1fREVCVUcoIm1zdGIgJXAgKCVkKVxuIiwgbXN0YiwK KwkJCSAga3JlZl9yZWFkKCZtc3RiLT50b3BvbG9neV9rcmVmKSk7CisKKwlyZXR1cm4gcmV0Owor fQorCisvKioKKyAqIGRybV9kcF9tc3RfdG9wb2xvZ3lfcmVmX21zdGIoKSAtIEluY3JlbWVudCB0 aGUgdG9wb2xvZ3kgcmVmY291bnQgb2YgYQorICogYnJhbmNoIGRldmljZQorICogQG1zdGI6IFRo ZSAmc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoIHRvIGluY3JlbWVudCB0aGUgdG9wb2xvZ3kgcmVm Y291bnQgb2YKKyAqCisgKiBJbmNyZW1lbnRzIEBtc3RiLnRvcG9sb2d5X3JlZmNvdW50IHdpdGhv dXQgY2hlY2tpbmcgd2hldGhlciBvciBub3QgaXQncworICogYWxyZWFkeSByZWFjaGVkIDAuIFRo aXMgaXMgb25seSB2YWxpZCB0byB1c2UgaW4gc2NlbmFyaW9zIHdoZXJlIHlvdSBhcmUKKyAqIGFs cmVhZHkgZ3VhcmFudGVlZCB0byBoYXZlIGF0IGxlYXN0IG9uZSBhY3RpdmUgdG9wb2xvZ3kgcmVm ZXJlbmNlIHRvIEBtc3RiLgorICogT3RoZXJ3aXNlLCBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9t c3RiKCkgc2hvdWxkIGJlIHVzZWQuCisgKgorICogQW55IHRvcG9sb2d5IHJlZmVyZW5jZXMgYWNx dWlyZWQgd2l0aCB0aGlzIGZ1bmN0aW9uIG11c3QgYmUgcmVsZWFzZWQgd2hlbgorICogdGhleSBh cmUgbm8gbG9uZ2VyIGJlaW5nIHVzZWQgYnkgY2FsbGluZyBkcm1fZHBfbXN0X3RvcG9sb2d5X3B1 dF9tc3RiKCkuCisgKgorICogU2VlIGFsc286CisgKiBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9t c3RiKCkKKyAqIGRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X21zdGIoKQorICovCitzdGF0aWMgdm9p ZAorZHJtX2RwX21zdF90b3BvbG9neV9yZWZfbXN0YihzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2gg Km1zdGIpCit7CisJa3JlZl9nZXQoJm1zdGItPnRvcG9sb2d5X2tyZWYpOworCURSTV9ERUJVRygi bXN0YiAlcCAoJWQpXG4iLCBtc3RiLCBrcmVmX3JlYWQoJm1zdGItPnRvcG9sb2d5X2tyZWYpKTsK IH0KIAorLyoqCisgKiBkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9tc3RiKCkgLSByZWxlYXNlIGEg dG9wb2xvZ3kgcmVmZXJlbmNlIHRvIGEgYnJhbmNoCisgKiBkZXZpY2UKKyAqIEBtc3RiOiBUaGUg JnN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCB0byByZWxlYXNlIHRoZSB0b3BvbG9neSByZWZlcmVu Y2UgZnJvbQorICoKKyAqIFJlbGVhc2VzIGEgdG9wb2xvZ3kgcmVmZXJlbmNlIGZyb20gQG1zdGIg YnkgZGVjcmVtZW50aW5nCisgKiBAbXN0Yi50b3BvbG9neV9rcmVmLgorICoKKyAqIFNlZSBhbHNv OgorICogZHJtX2RwX21zdF90b3BvbG9neV9nZXRfbXN0YigpCisgKiBkcm1fZHBfbXN0X3RvcG9s b2d5X3JlZl9tc3RiKCkKKyAqLworc3RhdGljIHZvaWQKK2RybV9kcF9tc3RfdG9wb2xvZ3lfcHV0 X21zdGIoc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICptc3RiKQoreworCURSTV9ERUJVRygibXN0 YiAlcCAoJWQpXG4iLCBtc3RiLCBrcmVmX3JlYWQoJm1zdGItPnRvcG9sb2d5X2tyZWYpLTEpOwor CWtyZWZfcHV0KCZtc3RiLT50b3BvbG9neV9rcmVmLCBkcm1fZHBfZGVzdHJveV9tc3RfYnJhbmNo X2RldmljZSk7Cit9CiAKIHN0YXRpYyB2b2lkIGRybV9kcF9wb3J0X3RlYXJkb3duX3BkdChzdHJ1 Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0LCBpbnQgb2xkX3BkdCkKIHsKQEAgLTkzMCwxNCArMTA3 MiwxNSBAQCBzdGF0aWMgdm9pZCBkcm1fZHBfcG9ydF90ZWFyZG93bl9wZHQoc3RydWN0IGRybV9k cF9tc3RfcG9ydCAqcG9ydCwgaW50IG9sZF9wZHQpCiAJY2FzZSBEUF9QRUVSX0RFVklDRV9NU1Rf QlJBTkNISU5HOgogCQltc3RiID0gcG9ydC0+bXN0YjsKIAkJcG9ydC0+bXN0YiA9IE5VTEw7Ci0J CWRybV9kcF9wdXRfbXN0X2JyYW5jaF9kZXZpY2UobXN0Yik7CisJCWRybV9kcF9tc3RfdG9wb2xv Z3lfcHV0X21zdGIobXN0Yik7CiAJCWJyZWFrOwogCX0KIH0KIAogc3RhdGljIHZvaWQgZHJtX2Rw X2Rlc3Ryb3lfcG9ydChzdHJ1Y3Qga3JlZiAqa3JlZikKIHsKLQlzdHJ1Y3QgZHJtX2RwX21zdF9w b3J0ICpwb3J0ID0gY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQsIGty ZWYpOworCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQgPQorCQljb250YWluZXJfb2Yoa3Jl Ziwgc3RydWN0IGRybV9kcF9tc3RfcG9ydCwgdG9wb2xvZ3lfa3JlZik7CiAJc3RydWN0IGRybV9k cF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IgPSBwb3J0LT5tZ3I7CiAKIAlpZiAoIXBvcnQtPmlucHV0 KSB7CkBAIC05NTYsNyArMTA5OSw2IEBAIHN0YXRpYyB2b2lkIGRybV9kcF9kZXN0cm95X3BvcnQo c3RydWN0IGtyZWYgKmtyZWYpCiAJCQkgKiBmcm9tIGFuIEVESUQgcmV0cmlldmFsICovCiAKIAkJ CW11dGV4X2xvY2soJm1nci0+ZGVzdHJveV9jb25uZWN0b3JfbG9jayk7Ci0JCQlrcmVmX2dldCgm cG9ydC0+cGFyZW50LT5rcmVmKTsKIAkJCWxpc3RfYWRkKCZwb3J0LT5uZXh0LCAmbWdyLT5kZXN0 cm95X2Nvbm5lY3Rvcl9saXN0KTsKIAkJCW11dGV4X3VubG9jaygmbWdyLT5kZXN0cm95X2Nvbm5l Y3Rvcl9sb2NrKTsKIAkJCXNjaGVkdWxlX3dvcmsoJm1nci0+ZGVzdHJveV9jb25uZWN0b3Jfd29y ayk7CkBAIC05NjcsMjUgKzExMDksOTMgQEAgc3RhdGljIHZvaWQgZHJtX2RwX2Rlc3Ryb3lfcG9y dChzdHJ1Y3Qga3JlZiAqa3JlZikKIAkJZHJtX2RwX3BvcnRfdGVhcmRvd25fcGR0KHBvcnQsIHBv cnQtPnBkdCk7CiAJCXBvcnQtPnBkdCA9IERQX1BFRVJfREVWSUNFX05PTkU7CiAJfQotCWtmcmVl KHBvcnQpOworCWRybV9kcF9tc3RfcHV0X3BvcnRfbWFsbG9jKHBvcnQpOwogfQogCi1zdGF0aWMg dm9pZCBkcm1fZHBfcHV0X3BvcnQoc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCkKKy8qKgor ICogZHJtX2RwX21zdF90b3BvbG9neV9nZXRfcG9ydCgpIC0gSW5jcmVtZW50IHRoZSB0b3BvbG9n eSByZWZjb3VudCBvZiBhCisgKiBwb3J0IHVubGVzcyBpdHMgemVybworICogQHBvcnQ6ICZzdHJ1 Y3QgZHJtX2RwX21zdF9wb3J0IHRvIGluY3JlbWVudCB0aGUgdG9wb2xvZ3kgcmVmY291bnQgb2YK KyAqCisgKiBBdHRlbXB0cyB0byBncmFiIGEgdG9wb2xvZ3kgcmVmZXJlbmNlIHRvIEBwb3J0LCBp ZiBpdCBoYXNuJ3QgeWV0IGJlZW4KKyAqIHJlbW92ZWQgZnJvbSB0aGUgdG9wb2xvZ3kgKGUuZy4g QHBvcnQudG9wb2xvZ3lfa3JlZiBoYXMgcmVhY2hlZCAwKS4KKyAqCisgKiBBbnkgdG9wb2xvZ3kg cmVmZXJlbmNlcyBhY3F1aXJlZCB3aXRoIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSByZWxlYXNlZCB3 aGVuCisgKiB0aGV5IGFyZSBubyBsb25nZXIgYmVpbmcgdXNlZCBieSBjYWxsaW5nIGRybV9kcF9t c3RfdG9wb2xvZ3lfcHV0X3BvcnQoKS4KKyAqCisgKiBTZWUgYWxzbzoKKyAqIGRybV9kcF9tc3Rf dG9wb2xvZ3lfcmVmX3BvcnQoKQorICogZHJtX2RwX21zdF90b3BvbG9neV9wdXRfcG9ydCgpCisg KgorICogUmV0dXJuczoKKyAqICogMTogQSB0b3BvbG9neSByZWZlcmVuY2Ugd2FzIGdyYWJiZWQg c3VjY2Vzc2Z1bGx5CisgKiAqIDA6IEBwb3J0IGlzIG5vIGxvbmdlciBpbiB0aGUgdG9wb2xvZ3ks IG5vIHJlZmVyZW5jZSB3YXMgZ3JhYmJlZAorICovCitzdGF0aWMgaW50IF9fbXVzdF9jaGVjawor ZHJtX2RwX21zdF90b3BvbG9neV9nZXRfcG9ydChzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0 KQogewotCWtyZWZfcHV0KCZwb3J0LT5rcmVmLCBkcm1fZHBfZGVzdHJveV9wb3J0KTsKKwlpbnQg cmV0ID0ga3JlZl9nZXRfdW5sZXNzX3plcm8oJnBvcnQtPnRvcG9sb2d5X2tyZWYpOworCisJaWYg KHJldCkKKwkJRFJNX0RFQlVHKCJwb3J0ICVwICglZClcbiIsIHBvcnQsCisJCQkgIGtyZWZfcmVh ZCgmcG9ydC0+dG9wb2xvZ3lfa3JlZikpOworCisJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHN0 cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqZHJtX2RwX21zdF9nZXRfdmFsaWRhdGVkX21zdGJfcmVm X2xvY2tlZChzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKm1zdGIsIHN0cnVjdCBkcm1fZHBfbXN0 X2JyYW5jaCAqdG9fZmluZCkKKy8qKgorICogZHJtX2RwX21zdF90b3BvbG9neV9yZWZfcG9ydCgp IC0gSW5jcmVtZW50IHRoZSB0b3BvbG9neSByZWZjb3VudCBvZiBhIHBvcnQKKyAqIEBwb3J0OiBU aGUgJnN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgdG8gaW5jcmVtZW50IHRoZSB0b3BvbG9neSByZWZj b3VudCBvZgorICoKKyAqIEluY3JlbWVudHMgQHBvcnQudG9wb2xvZ3lfcmVmY291bnQgd2l0aG91 dCBjaGVja2luZyB3aGV0aGVyIG9yIG5vdCBpdCdzCisgKiBhbHJlYWR5IHJlYWNoZWQgMC4gVGhp cyBpcyBvbmx5IHZhbGlkIHRvIHVzZSBpbiBzY2VuYXJpb3Mgd2hlcmUgeW91IGFyZQorICogYWxy ZWFkeSBndWFyYW50ZWVkIHRvIGhhdmUgYXQgbGVhc3Qgb25lIGFjdGl2ZSB0b3BvbG9neSByZWZl cmVuY2UgdG8gQHBvcnQuCisgKiBPdGhlcndpc2UsIGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X3Bv cnQoKSBzaG91bGQgYmUgdXNlZC4KKyAqCisgKiBBbnkgdG9wb2xvZ3kgcmVmZXJlbmNlcyBhY3F1 aXJlZCB3aXRoIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSByZWxlYXNlZCB3aGVuCisgKiB0aGV5IGFy ZSBubyBsb25nZXIgYmVpbmcgdXNlZCBieSBjYWxsaW5nIGRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0 X3BvcnQoKS4KKyAqCisgKiBTZWUgYWxzbzoKKyAqIGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X3Bv cnQoKQorICogZHJtX2RwX21zdF90b3BvbG9neV9wdXRfcG9ydCgpCisgKi8KK3N0YXRpYyB2b2lk IGRybV9kcF9tc3RfdG9wb2xvZ3lfcmVmX3BvcnQoc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9y dCkKK3sKKwlrcmVmX2dldCgmcG9ydC0+dG9wb2xvZ3lfa3JlZik7CisJRFJNX0RFQlVHKCJwb3J0 ICVwICglZClcbiIsIHBvcnQsIGtyZWZfcmVhZCgmcG9ydC0+dG9wb2xvZ3lfa3JlZikpOworfQor CisvKioKKyAqIGRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X3BvcnQoKSAtIHJlbGVhc2UgYSB0b3Bv bG9neSByZWZlcmVuY2UgdG8gYSBwb3J0CisgKiBAcG9ydDogVGhlICZzdHJ1Y3QgZHJtX2RwX21z dF9wb3J0IHRvIHJlbGVhc2UgdGhlIHRvcG9sb2d5IHJlZmVyZW5jZSBmcm9tCisgKgorICogUmVs ZWFzZXMgYSB0b3BvbG9neSByZWZlcmVuY2UgZnJvbSBAcG9ydCBieSBkZWNyZW1lbnRpbmcKKyAq IEBwb3J0LnRvcG9sb2d5X2tyZWYuCisgKgorICogU2VlIGFsc286CisgKiBkcm1fZHBfbXN0X3Rv cG9sb2d5X2dldF9wb3J0KCkKKyAqIGRybV9kcF9tc3RfdG9wb2xvZ3lfcmVmX3BvcnQoKQorICov CitzdGF0aWMgdm9pZCBkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0KHN0cnVjdCBkcm1fZHBf bXN0X3BvcnQgKnBvcnQpCit7CisJRFJNX0RFQlVHKCJwb3J0ICVwICglZClcbiIsIHBvcnQsIGty ZWZfcmVhZCgmcG9ydC0+dG9wb2xvZ3lfa3JlZiktMSk7CisJa3JlZl9wdXQoJnBvcnQtPnRvcG9s b2d5X2tyZWYsIGRybV9kcF9kZXN0cm95X3BvcnQpOworfQorCitzdGF0aWMgc3RydWN0IGRybV9k cF9tc3RfYnJhbmNoICoKK2RybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X21zdGJfdmFsaWRhdGVkX2xv Y2tlZChzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKm1zdGIsCisJCQkJCSAgICAgIHN0cnVjdCBk cm1fZHBfbXN0X2JyYW5jaCAqdG9fZmluZCkKIHsKIAlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpw b3J0OwogCXN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqcm1zdGI7Ci0JaWYgKHRvX2ZpbmQgPT0g bXN0YikgewotCQlrcmVmX2dldCgmbXN0Yi0+a3JlZik7CisKKwlpZiAodG9fZmluZCA9PSBtc3Ri KQogCQlyZXR1cm4gbXN0YjsKLQl9CisKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcnQsICZtc3Ri LT5wb3J0cywgbmV4dCkgewogCQlpZiAocG9ydC0+bXN0YikgewotCQkJcm1zdGIgPSBkcm1fZHBf bXN0X2dldF92YWxpZGF0ZWRfbXN0Yl9yZWZfbG9ja2VkKHBvcnQtPm1zdGIsIHRvX2ZpbmQpOwor CQkJcm1zdGIgPSBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9tc3RiX3ZhbGlkYXRlZF9sb2NrZWQo CisJCQkgICAgcG9ydC0+bXN0YiwgdG9fZmluZCk7CiAJCQlpZiAocm1zdGIpCiAJCQkJcmV0dXJu IHJtc3RiOwogCQl9CkBAIC05OTMsMjcgKzEyMDMsMzcgQEAgc3RhdGljIHN0cnVjdCBkcm1fZHBf bXN0X2JyYW5jaCAqZHJtX2RwX21zdF9nZXRfdmFsaWRhdGVkX21zdGJfcmVmX2xvY2tlZChzdHJ1 Y3QKIAlyZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAq ZHJtX2RwX2dldF92YWxpZGF0ZWRfbXN0Yl9yZWYoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lf bWdyICptZ3IsIHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YikKK3N0YXRpYyBzdHJ1Y3Qg ZHJtX2RwX21zdF9icmFuY2ggKgorZHJtX2RwX21zdF90b3BvbG9neV9nZXRfbXN0Yl92YWxpZGF0 ZWQoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCisJCQkJICAgICAgIHN0cnVj dCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YikKIHsKIAlzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2gg KnJtc3RiID0gTlVMTDsKKwogCW11dGV4X2xvY2soJm1nci0+bG9jayk7Ci0JaWYgKG1nci0+bXN0 X3ByaW1hcnkpCi0JCXJtc3RiID0gZHJtX2RwX21zdF9nZXRfdmFsaWRhdGVkX21zdGJfcmVmX2xv Y2tlZChtZ3ItPm1zdF9wcmltYXJ5LCBtc3RiKTsKKwlpZiAobWdyLT5tc3RfcHJpbWFyeSkgewor CQlybXN0YiA9IGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X21zdGJfdmFsaWRhdGVkX2xvY2tlZCgK KwkJICAgIG1nci0+bXN0X3ByaW1hcnksIG1zdGIpOworCisJCWlmIChybXN0YiAmJiAhZHJtX2Rw X21zdF90b3BvbG9neV9nZXRfbXN0YihybXN0YikpCisJCQlybXN0YiA9IE5VTEw7CisJfQogCW11 dGV4X3VubG9jaygmbWdyLT5sb2NrKTsKIAlyZXR1cm4gcm1zdGI7CiB9CiAKLXN0YXRpYyBzdHJ1 Y3QgZHJtX2RwX21zdF9wb3J0ICpkcm1fZHBfbXN0X2dldF9wb3J0X3JlZl9sb2NrZWQoc3RydWN0 IGRybV9kcF9tc3RfYnJhbmNoICptc3RiLCBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICp0b19maW5k KQorc3RhdGljIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKgorZHJtX2RwX21zdF90b3BvbG9neV9n ZXRfcG9ydF92YWxpZGF0ZWRfbG9ja2VkKHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YiwK KwkJCQkJICAgICAgc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqdG9fZmluZCkKIHsKIAlzdHJ1Y3Qg ZHJtX2RwX21zdF9wb3J0ICpwb3J0LCAqbXBvcnQ7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBv cnQsICZtc3RiLT5wb3J0cywgbmV4dCkgewotCQlpZiAocG9ydCA9PSB0b19maW5kKSB7Ci0JCQlr cmVmX2dldCgmcG9ydC0+a3JlZik7CisJCWlmIChwb3J0ID09IHRvX2ZpbmQpCiAJCQlyZXR1cm4g cG9ydDsKLQkJfQorCiAJCWlmIChwb3J0LT5tc3RiKSB7Ci0JCQltcG9ydCA9IGRybV9kcF9tc3Rf Z2V0X3BvcnRfcmVmX2xvY2tlZChwb3J0LT5tc3RiLCB0b19maW5kKTsKKwkJCW1wb3J0ID0gZHJt X2RwX21zdF90b3BvbG9neV9nZXRfcG9ydF92YWxpZGF0ZWRfbG9ja2VkKAorCQkJICAgIHBvcnQt Pm1zdGIsIHRvX2ZpbmQpOwogCQkJaWYgKG1wb3J0KQogCQkJCXJldHVybiBtcG9ydDsKIAkJfQpA QCAtMTAyMSwxMiArMTI0MSwyMCBAQCBzdGF0aWMgc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqZHJt X2RwX21zdF9nZXRfcG9ydF9yZWZfbG9ja2VkKHN0cnVjdCBkcm1fZHBfbXN0XwogCXJldHVybiBO VUxMOwogfQogCi1zdGF0aWMgc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqZHJtX2RwX2dldF92YWxp ZGF0ZWRfcG9ydF9yZWYoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsIHN0cnVj dCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpCitzdGF0aWMgc3RydWN0IGRybV9kcF9tc3RfcG9ydCAq Citkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9wb3J0X3ZhbGlkYXRlZChzdHJ1Y3QgZHJtX2RwX21z dF90b3BvbG9neV9tZ3IgKm1nciwKKwkJCQkgICAgICAgc3RydWN0IGRybV9kcF9tc3RfcG9ydCAq cG9ydCkKIHsKIAlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpycG9ydCA9IE5VTEw7CisKIAltdXRl eF9sb2NrKCZtZ3ItPmxvY2spOwotCWlmIChtZ3ItPm1zdF9wcmltYXJ5KQotCQlycG9ydCA9IGRy bV9kcF9tc3RfZ2V0X3BvcnRfcmVmX2xvY2tlZChtZ3ItPm1zdF9wcmltYXJ5LCBwb3J0KTsKKwlp ZiAobWdyLT5tc3RfcHJpbWFyeSkgeworCQlycG9ydCA9IGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0 X3BvcnRfdmFsaWRhdGVkX2xvY2tlZCgKKwkJICAgIG1nci0+bXN0X3ByaW1hcnksIHBvcnQpOwor CisJCWlmIChycG9ydCAmJiAhZHJtX2RwX21zdF90b3BvbG9neV9nZXRfcG9ydChycG9ydCkpCisJ CQlycG9ydCA9IE5VTEw7CisJfQogCW11dGV4X3VubG9jaygmbWdyLT5sb2NrKTsKIAlyZXR1cm4g cnBvcnQ7CiB9CkBAIC0xMDM0LDExICsxMjYyLDEyIEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2RwX21z dF9wb3J0ICpkcm1fZHBfZ2V0X3ZhbGlkYXRlZF9wb3J0X3JlZihzdHJ1Y3QgZHJtX2RwX21zdF90 CiBzdGF0aWMgc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqZHJtX2RwX2dldF9wb3J0KHN0cnVjdCBk cm1fZHBfbXN0X2JyYW5jaCAqbXN0YiwgdTggcG9ydF9udW0pCiB7CiAJc3RydWN0IGRybV9kcF9t c3RfcG9ydCAqcG9ydDsKKwlpbnQgcmV0OwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShwb3J0LCAm bXN0Yi0+cG9ydHMsIG5leHQpIHsKIAkJaWYgKHBvcnQtPnBvcnRfbnVtID09IHBvcnRfbnVtKSB7 Ci0JCQlrcmVmX2dldCgmcG9ydC0+a3JlZik7Ci0JCQlyZXR1cm4gcG9ydDsKKwkJCXJldCA9IGRy bV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X3BvcnQocG9ydCk7CisJCQlyZXR1cm4gcmV0ID8gcG9ydCA6 IE5VTEw7CiAJCX0KIAl9CiAKQEAgLTEwODcsNiArMTMxNiwxMSBAQCBzdGF0aWMgYm9vbCBkcm1f ZHBfcG9ydF9zZXR1cF9wZHQoc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCkKIAkJaWYgKHBv cnQtPm1zdGIpIHsKIAkJCXBvcnQtPm1zdGItPm1nciA9IHBvcnQtPm1ncjsKIAkJCXBvcnQtPm1z dGItPnBvcnRfcGFyZW50ID0gcG9ydDsKKwkJCS8qCisJCQkgKiBNYWtlIHN1cmUgdGhpcyBwb3J0 J3MgbWVtb3J5IGFsbG9jYXRpb24gc3RheXMKKwkJCSAqIGFyb3VuZCB1bnRpbCBpdCdzIGNoaWxk IE1TVEIgcmVsZWFzZXMgaXQKKwkJCSAqLworCQkJZHJtX2RwX21zdF9nZXRfcG9ydF9tYWxsb2Mo cG9ydCk7CiAKIAkJCXNlbmRfbGluayA9IHRydWU7CiAJCX0KQEAgLTExNDcsMTcgKzEzODEsMjYg QEAgc3RhdGljIHZvaWQgZHJtX2RwX2FkZF9wb3J0KHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAq bXN0YiwKIAlib29sIGNyZWF0ZWQgPSBmYWxzZTsKIAlpbnQgb2xkX3BkdCA9IDA7CiAJaW50IG9s ZF9kZHBzID0gMDsKKwogCXBvcnQgPSBkcm1fZHBfZ2V0X3BvcnQobXN0YiwgcG9ydF9tc2ctPnBv cnRfbnVtYmVyKTsKIAlpZiAoIXBvcnQpIHsKIAkJcG9ydCA9IGt6YWxsb2Moc2l6ZW9mKCpwb3J0 KSwgR0ZQX0tFUk5FTCk7CiAJCWlmICghcG9ydCkKIAkJCXJldHVybjsKLQkJa3JlZl9pbml0KCZw b3J0LT5rcmVmKTsKKwkJa3JlZl9pbml0KCZwb3J0LT50b3BvbG9neV9rcmVmKTsKKwkJa3JlZl9p bml0KCZwb3J0LT5tYWxsb2Nfa3JlZik7CiAJCXBvcnQtPnBhcmVudCA9IG1zdGI7CiAJCXBvcnQt PnBvcnRfbnVtID0gcG9ydF9tc2ctPnBvcnRfbnVtYmVyOwogCQlwb3J0LT5tZ3IgPSBtc3RiLT5t Z3I7CiAJCXBvcnQtPmF1eC5uYW1lID0gIkRQTVNUIjsKIAkJcG9ydC0+YXV4LmRldiA9IGRldi0+ ZGV2OworCisJCS8qCisJCSAqIE1ha2Ugc3VyZSB0aGUgbWVtb3J5IGFsbG9jYXRpb24gZm9yIG91 ciBwYXJlbnQgYnJhbmNoIHN0YXlzCisJCSAqIGFyb3VuZCB1bnRpbCBvdXIgb3duIG1lbW9yeSBh bGxvY2F0aW9uIGlzIHJlbGVhc2VkCisJCSAqLworCQlkcm1fZHBfbXN0X2dldF9tc3RiX21hbGxv Yyhtc3RiKTsKKwogCQljcmVhdGVkID0gdHJ1ZTsKIAl9IGVsc2UgewogCQlvbGRfcGR0ID0gcG9y dC0+cGR0OwpAQCAtMTE3Nyw3ICsxNDIwLDcgQEAgc3RhdGljIHZvaWQgZHJtX2RwX2FkZF9wb3J0 KHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YiwKIAkgICBmb3IgdGhpcyBsaXN0ICovCiAJ aWYgKGNyZWF0ZWQpIHsKIAkJbXV0ZXhfbG9jaygmbXN0Yi0+bWdyLT5sb2NrKTsKLQkJa3JlZl9n ZXQoJnBvcnQtPmtyZWYpOworCQlkcm1fZHBfbXN0X3RvcG9sb2d5X3JlZl9wb3J0KHBvcnQpOwog CQlsaXN0X2FkZCgmcG9ydC0+bmV4dCwgJm1zdGItPnBvcnRzKTsKIAkJbXV0ZXhfdW5sb2NrKCZt c3RiLT5tZ3ItPmxvY2spOwogCX0KQEAgLTEyMDIsMTcgKzE0NDUsMjEgQEAgc3RhdGljIHZvaWQg ZHJtX2RwX2FkZF9wb3J0KHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YiwKIAlpZiAoY3Jl YXRlZCAmJiAhcG9ydC0+aW5wdXQpIHsKIAkJY2hhciBwcm9wcGF0aFsyNTVdOwogCi0JCWJ1aWxk X21zdF9wcm9wX3BhdGgobXN0YiwgcG9ydC0+cG9ydF9udW0sIHByb3BwYXRoLCBzaXplb2YocHJv cHBhdGgpKTsKLQkJcG9ydC0+Y29ubmVjdG9yID0gKCptc3RiLT5tZ3ItPmNicy0+YWRkX2Nvbm5l Y3RvcikobXN0Yi0+bWdyLCBwb3J0LCBwcm9wcGF0aCk7CisJCWJ1aWxkX21zdF9wcm9wX3BhdGgo bXN0YiwgcG9ydC0+cG9ydF9udW0sIHByb3BwYXRoLAorCQkJCSAgICBzaXplb2YocHJvcHBhdGgp KTsKKwkJcG9ydC0+Y29ubmVjdG9yID0gKCptc3RiLT5tZ3ItPmNicy0+YWRkX2Nvbm5lY3Rvciko bXN0Yi0+bWdyLAorCQkJCQkJCQkgICBwb3J0LAorCQkJCQkJCQkgICBwcm9wcGF0aCk7CiAJCWlm ICghcG9ydC0+Y29ubmVjdG9yKSB7CiAJCQkvKiByZW1vdmUgaXQgZnJvbSB0aGUgcG9ydCBsaXN0 ICovCiAJCQltdXRleF9sb2NrKCZtc3RiLT5tZ3ItPmxvY2spOwogCQkJbGlzdF9kZWwoJnBvcnQt Pm5leHQpOwogCQkJbXV0ZXhfdW5sb2NrKCZtc3RiLT5tZ3ItPmxvY2spOwogCQkJLyogZHJvcCBw b3J0IGxpc3QgcmVmZXJlbmNlICovCi0JCQlkcm1fZHBfcHV0X3BvcnQocG9ydCk7CisJCQlkcm1f ZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0KHBvcnQpOwogCQkJZ290byBvdXQ7CiAJCX0KKwogCQlp ZiAoKHBvcnQtPnBkdCA9PSBEUF9QRUVSX0RFVklDRV9EUF9MRUdBQ1lfQ09OViB8fAogCQkgICAg IHBvcnQtPnBkdCA9PSBEUF9QRUVSX0RFVklDRV9TU1RfU0lOSykgJiYKIAkJICAgIHBvcnQtPnBv cnRfbnVtID49IERQX01TVF9MT0dJQ0FMX1BPUlRfMCkgewpAQCAtMTIyNCw3ICsxNDcxLDcgQEAg c3RhdGljIHZvaWQgZHJtX2RwX2FkZF9wb3J0KHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0 YiwKIAogb3V0OgogCS8qIHB1dCByZWZlcmVuY2UgdG8gdGhpcyBwb3J0ICovCi0JZHJtX2RwX3B1 dF9wb3J0KHBvcnQpOworCWRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X3BvcnQocG9ydCk7CiB9CiAK IHN0YXRpYyB2b2lkIGRybV9kcF91cGRhdGVfcG9ydChzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2gg Km1zdGIsCkBAIC0xMjU5LDcgKzE1MDYsNyBAQCBzdGF0aWMgdm9pZCBkcm1fZHBfdXBkYXRlX3Bv cnQoc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICptc3RiLAogCQkJZG93b3JrID0gdHJ1ZTsKIAl9 CiAKLQlkcm1fZHBfcHV0X3BvcnQocG9ydCk7CisJZHJtX2RwX21zdF90b3BvbG9neV9wdXRfcG9y dChwb3J0KTsKIAlpZiAoZG93b3JrKQogCQlxdWV1ZV93b3JrKHN5c3RlbV9sb25nX3dxLCAmbXN0 Yi0+bWdyLT53b3JrKTsKIApAQCAtMTI3MCw3ICsxNTE3LDcgQEAgc3RhdGljIHN0cnVjdCBkcm1f ZHBfbXN0X2JyYW5jaCAqZHJtX2RwX2dldF9tc3RfYnJhbmNoX2RldmljZShzdHJ1Y3QgZHJtX2Rw X21zdF8KIHsKIAlzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKm1zdGI7CiAJc3RydWN0IGRybV9k cF9tc3RfcG9ydCAqcG9ydDsKLQlpbnQgaTsKKwlpbnQgaSwgcmV0OwogCS8qIGZpbmQgdGhlIHBv cnQgYnkgaXRlcmF0aW5nIGRvd24gKi8KIAogCW11dGV4X2xvY2soJm1nci0+bG9jayk7CkBAIC0x Mjk1LDcgKzE1NDIsOSBAQCBzdGF0aWMgc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICpkcm1fZHBf Z2V0X21zdF9icmFuY2hfZGV2aWNlKHN0cnVjdCBkcm1fZHBfbXN0XwogCQkJfQogCQl9CiAJfQot CWtyZWZfZ2V0KCZtc3RiLT5rcmVmKTsKKwlyZXQgPSBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9t c3RiKG1zdGIpOworCWlmICghcmV0KQorCQltc3RiID0gTlVMTDsKIG91dDoKIAltdXRleF91bmxv Y2soJm1nci0+bG9jayk7CiAJcmV0dXJuIG1zdGI7CkBAIC0xMzI1LDE5ICsxNTc0LDIyIEBAIHN0 YXRpYyBzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKmdldF9tc3RfYnJhbmNoX2RldmljZV9ieV9n dWlkX2hlbHBlcigKIAlyZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIHN0cnVjdCBkcm1fZHBfbXN0 X2JyYW5jaCAqZHJtX2RwX2dldF9tc3RfYnJhbmNoX2RldmljZV9ieV9ndWlkKAotCXN0cnVjdCBk cm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLAotCXVpbnQ4X3QgKmd1aWQpCitzdGF0aWMgc3Ry dWN0IGRybV9kcF9tc3RfYnJhbmNoICoKK2RybV9kcF9nZXRfbXN0X2JyYW5jaF9kZXZpY2VfYnlf Z3VpZChzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKKwkJCQkgICAgIHVpbnQ4 X3QgKmd1aWQpCiB7CiAJc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICptc3RiOworCWludCByZXQ7 CiAKIAkvKiBmaW5kIHRoZSBwb3J0IGJ5IGl0ZXJhdGluZyBkb3duICovCiAJbXV0ZXhfbG9jaygm bWdyLT5sb2NrKTsKIAogCW1zdGIgPSBnZXRfbXN0X2JyYW5jaF9kZXZpY2VfYnlfZ3VpZF9oZWxw ZXIobWdyLT5tc3RfcHJpbWFyeSwgZ3VpZCk7Ci0KLQlpZiAobXN0YikKLQkJa3JlZl9nZXQoJm1z dGItPmtyZWYpOworCWlmIChtc3RiKSB7CisJCXJldCA9IGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0 X21zdGIobXN0Yik7CisJCWlmICghcmV0KQorCQkJbXN0YiA9IE5VTEw7CisJfQogCiAJbXV0ZXhf dW5sb2NrKCZtZ3ItPmxvY2spOwogCXJldHVybiBtc3RiOwpAQCAtMTM2MiwxMCArMTYxNCwxMCBA QCBzdGF0aWMgdm9pZCBkcm1fZHBfY2hlY2tfYW5kX3NlbmRfbGlua19hZGRyZXNzKHN0cnVjdCBk cm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbQogCQkJZHJtX2RwX3NlbmRfZW51bV9wYXRoX3Jlc291 cmNlcyhtZ3IsIG1zdGIsIHBvcnQpOwogCiAJCWlmIChwb3J0LT5tc3RiKSB7Ci0JCQltc3RiX2No aWxkID0gZHJtX2RwX2dldF92YWxpZGF0ZWRfbXN0Yl9yZWYobWdyLCBwb3J0LT5tc3RiKTsKKwkJ CW1zdGJfY2hpbGQgPSBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9tc3RiX3ZhbGlkYXRlZChtZ3Is IHBvcnQtPm1zdGIpOwogCQkJaWYgKG1zdGJfY2hpbGQpIHsKIAkJCQlkcm1fZHBfY2hlY2tfYW5k X3NlbmRfbGlua19hZGRyZXNzKG1nciwgbXN0Yl9jaGlsZCk7Ci0JCQkJZHJtX2RwX3B1dF9tc3Rf YnJhbmNoX2RldmljZShtc3RiX2NoaWxkKTsKKwkJCQlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9t c3RiKG1zdGJfY2hpbGQpOwogCQkJfQogCQl9CiAJfQpAQCAtMTM3NSwxNiArMTYyNywxOSBAQCBz dGF0aWMgdm9pZCBkcm1fZHBfbXN0X2xpbmtfcHJvYmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3Qg KndvcmspCiB7CiAJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IgPSBjb250YWlu ZXJfb2Yod29yaywgc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyLCB3b3JrKTsKIAlzdHJ1 Y3QgZHJtX2RwX21zdF9icmFuY2ggKm1zdGI7CisJaW50IHJldDsKIAogCW11dGV4X2xvY2soJm1n ci0+bG9jayk7CiAJbXN0YiA9IG1nci0+bXN0X3ByaW1hcnk7CiAJaWYgKG1zdGIpIHsKLQkJa3Jl Zl9nZXQoJm1zdGItPmtyZWYpOworCQlyZXQgPSBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9tc3Ri KG1zdGIpOworCQlpZiAoIXJldCkKKwkJCW1zdGIgPSBOVUxMOwogCX0KIAltdXRleF91bmxvY2so Jm1nci0+bG9jayk7CiAJaWYgKG1zdGIpIHsKIAkJZHJtX2RwX2NoZWNrX2FuZF9zZW5kX2xpbmtf YWRkcmVzcyhtZ3IsIG1zdGIpOwotCQlkcm1fZHBfcHV0X21zdF9icmFuY2hfZGV2aWNlKG1zdGIp OworCQlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9tc3RiKG1zdGIpOwogCX0KIH0KIApAQCAtMTY5 NSwyMiArMTk1MCwzMiBAQCBzdGF0aWMgc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqZHJtX2RwX2dl dF9sYXN0X2Nvbm5lY3RlZF9wb3J0X3RvX21zdGIoc3RydWN0IGRybQogCXJldHVybiBkcm1fZHBf Z2V0X2xhc3RfY29ubmVjdGVkX3BvcnRfdG9fbXN0Yihtc3RiLT5wb3J0X3BhcmVudC0+cGFyZW50 KTsKIH0KIAotc3RhdGljIHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqZHJtX2RwX2dldF9sYXN0 X2Nvbm5lY3RlZF9wb3J0X2FuZF9tc3RiKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAq bWdyLAotCQkJCQkJCQkJIHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YiwKLQkJCQkJCQkJ CSBpbnQgKnBvcnRfbnVtKQorc3RhdGljIHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqCitkcm1f ZHBfZ2V0X2xhc3RfY29ubmVjdGVkX3BvcnRfYW5kX21zdGIoc3RydWN0IGRybV9kcF9tc3RfdG9w b2xvZ3lfbWdyICptZ3IsCisJCQkJCXN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YiwKKwkJ CQkJaW50ICpwb3J0X251bSkKIHsKIAlzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKnJtc3RiID0g TlVMTDsKIAlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpmb3VuZF9wb3J0OworCiAJbXV0ZXhfbG9j aygmbWdyLT5sb2NrKTsKLQlpZiAobWdyLT5tc3RfcHJpbWFyeSkgeworCWlmICghbWdyLT5tc3Rf cHJpbWFyeSkKKwkJZ290byBvdXQ7CisKKwlkbyB7CiAJCWZvdW5kX3BvcnQgPSBkcm1fZHBfZ2V0 X2xhc3RfY29ubmVjdGVkX3BvcnRfdG9fbXN0Yihtc3RiKTsKKwkJaWYgKCFmb3VuZF9wb3J0KQor CQkJYnJlYWs7CiAKLQkJaWYgKGZvdW5kX3BvcnQpIHsKKwkJaWYgKGRybV9kcF9tc3RfdG9wb2xv Z3lfZ2V0X21zdGIoZm91bmRfcG9ydC0+cGFyZW50KSkgewogCQkJcm1zdGIgPSBmb3VuZF9wb3J0 LT5wYXJlbnQ7Ci0JCQlrcmVmX2dldCgmcm1zdGItPmtyZWYpOwogCQkJKnBvcnRfbnVtID0gZm91 bmRfcG9ydC0+cG9ydF9udW07CisJCX0gZWxzZSB7CisJCQkvKiBTZWFyY2ggYWdhaW4sIHN0YXJ0 aW5nIGZyb20gdGhpcyBwYXJlbnQgKi8KKwkJCW1zdGIgPSBmb3VuZF9wb3J0LT5wYXJlbnQ7CiAJ CX0KLQl9CisJfSB3aGlsZSAoIXJtc3RiKTsKK291dDoKIAltdXRleF91bmxvY2soJm1nci0+bG9j ayk7CiAJcmV0dXJuIHJtc3RiOwogfQpAQCAtMTcyNiwxNyArMTk5MSwxOSBAQCBzdGF0aWMgaW50 IGRybV9kcF9wYXlsb2FkX3NlbmRfbXNnKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAq bWdyLAogCXU4IHNpbmtzW0RSTV9EUF9NQVhfU0RQX1NUUkVBTVNdOwogCWludCBpOwogCi0JcG9y dCA9IGRybV9kcF9nZXRfdmFsaWRhdGVkX3BvcnRfcmVmKG1nciwgcG9ydCk7CisJcG9ydCA9IGRy bV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X3BvcnRfdmFsaWRhdGVkKG1nciwgcG9ydCk7CiAJaWYgKCFw b3J0KQogCQlyZXR1cm4gLUVJTlZBTDsKIAogCXBvcnRfbnVtID0gcG9ydC0+cG9ydF9udW07Ci0J bXN0YiA9IGRybV9kcF9nZXRfdmFsaWRhdGVkX21zdGJfcmVmKG1nciwgcG9ydC0+cGFyZW50KTsK Kwltc3RiID0gZHJtX2RwX21zdF90b3BvbG9neV9nZXRfbXN0Yl92YWxpZGF0ZWQobWdyLCBwb3J0 LT5wYXJlbnQpOwogCWlmICghbXN0YikgewotCQltc3RiID0gZHJtX2RwX2dldF9sYXN0X2Nvbm5l Y3RlZF9wb3J0X2FuZF9tc3RiKG1nciwgcG9ydC0+cGFyZW50LCAmcG9ydF9udW0pOworCQltc3Ri ID0gZHJtX2RwX2dldF9sYXN0X2Nvbm5lY3RlZF9wb3J0X2FuZF9tc3RiKG1nciwKKwkJCQkJCQkg ICAgICAgcG9ydC0+cGFyZW50LAorCQkJCQkJCSAgICAgICAmcG9ydF9udW0pOwogCiAJCWlmICgh bXN0YikgewotCQkJZHJtX2RwX3B1dF9wb3J0KHBvcnQpOworCQkJZHJtX2RwX21zdF90b3BvbG9n eV9wdXRfcG9ydChwb3J0KTsKIAkJCXJldHVybiAtRUlOVkFMOwogCQl9CiAJfQpAQCAtMTc2Niw4 ICsyMDMzLDggQEAgc3RhdGljIGludCBkcm1fZHBfcGF5bG9hZF9zZW5kX21zZyhzdHJ1Y3QgZHJt X2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKIAl9CiAJa2ZyZWUodHhtc2cpOwogZmFpbF9wdXQ6 Ci0JZHJtX2RwX3B1dF9tc3RfYnJhbmNoX2RldmljZShtc3RiKTsKLQlkcm1fZHBfcHV0X3BvcnQo cG9ydCk7CisJZHJtX2RwX21zdF90b3BvbG9neV9wdXRfbXN0Yihtc3RiKTsKKwlkcm1fZHBfbXN0 X3RvcG9sb2d5X3B1dF9wb3J0KHBvcnQpOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTE3NzcsMTMg KzIwNDQsMTMgQEAgaW50IGRybV9kcF9zZW5kX3Bvd2VyX3VwZG93bl9waHkoc3RydWN0IGRybV9k cF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCiAJc3RydWN0IGRybV9kcF9zaWRlYmFuZF9tc2dfdHgg KnR4bXNnOwogCWludCBsZW4sIHJldDsKIAotCXBvcnQgPSBkcm1fZHBfZ2V0X3ZhbGlkYXRlZF9w b3J0X3JlZihtZ3IsIHBvcnQpOworCXBvcnQgPSBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9wb3J0 X3ZhbGlkYXRlZChtZ3IsIHBvcnQpOwogCWlmICghcG9ydCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAK IAl0eG1zZyA9IGt6YWxsb2Moc2l6ZW9mKCp0eG1zZyksIEdGUF9LRVJORUwpOwogCWlmICghdHht c2cpIHsKLQkJZHJtX2RwX3B1dF9wb3J0KHBvcnQpOworCQlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1 dF9wb3J0KHBvcnQpOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAKQEAgLTE3OTksNyArMjA2Niw3 IEBAIGludCBkcm1fZHBfc2VuZF9wb3dlcl91cGRvd25fcGh5KHN0cnVjdCBkcm1fZHBfbXN0X3Rv cG9sb2d5X21nciAqbWdyLAogCQkJcmV0ID0gMDsKIAl9CiAJa2ZyZWUodHhtc2cpOwotCWRybV9k cF9wdXRfcG9ydChwb3J0KTsKKwlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0KHBvcnQpOwog CiAJcmV0dXJuIHJldDsKIH0KQEAgLTE4ODgsNyArMjE1NSw4IEBAIGludCBkcm1fZHBfdXBkYXRl X3BheWxvYWRfcGFydDEoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IpCiAJCWlm ICh2Y3BpKSB7CiAJCQlwb3J0ID0gY29udGFpbmVyX29mKHZjcGksIHN0cnVjdCBkcm1fZHBfbXN0 X3BvcnQsCiAJCQkJCSAgICB2Y3BpKTsKLQkJCXBvcnQgPSBkcm1fZHBfZ2V0X3ZhbGlkYXRlZF9w b3J0X3JlZihtZ3IsIHBvcnQpOworCQkJcG9ydCA9IGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X3Bv cnRfdmFsaWRhdGVkKG1nciwKKwkJCQkJCQkJICAgICAgcG9ydCk7CiAJCQlpZiAoIXBvcnQpIHsK IAkJCQltdXRleF91bmxvY2soJm1nci0+cGF5bG9hZF9sb2NrKTsKIAkJCQlyZXR1cm4gLUVJTlZB TDsKQEAgLTE5MjUsNyArMjE5Myw3IEBAIGludCBkcm1fZHBfdXBkYXRlX3BheWxvYWRfcGFydDEo c3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IpCiAJCWN1cl9zbG90cyArPSByZXFf cGF5bG9hZC5udW1fc2xvdHM7CiAKIAkJaWYgKHBvcnQpCi0JCQlkcm1fZHBfcHV0X3BvcnQocG9y dCk7CisJCQlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0KHBvcnQpOwogCX0KIAogCWZvciAo aSA9IDA7IGkgPCBtZ3ItPm1heF9wYXlsb2FkczsgaSsrKSB7CkBAIC0yMDI0LDcgKzIyOTIsNyBA QCBzdGF0aWMgaW50IGRybV9kcF9zZW5kX2RwY2Rfd3JpdGUoc3RydWN0IGRybV9kcF9tc3RfdG9w b2xvZ3lfbWdyICptZ3IsCiAJc3RydWN0IGRybV9kcF9zaWRlYmFuZF9tc2dfdHggKnR4bXNnOwog CXN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YjsKIAotCW1zdGIgPSBkcm1fZHBfZ2V0X3Zh bGlkYXRlZF9tc3RiX3JlZihtZ3IsIHBvcnQtPnBhcmVudCk7CisJbXN0YiA9IGRybV9kcF9tc3Rf dG9wb2xvZ3lfZ2V0X21zdGJfdmFsaWRhdGVkKG1nciwgcG9ydC0+cGFyZW50KTsKIAlpZiAoIW1z dGIpCiAJCXJldHVybiAtRUlOVkFMOwogCkBAIC0yMDQ4LDcgKzIzMTYsNyBAQCBzdGF0aWMgaW50 IGRybV9kcF9zZW5kX2RwY2Rfd3JpdGUoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICpt Z3IsCiAJfQogCWtmcmVlKHR4bXNnKTsKIGZhaWxfcHV0OgotCWRybV9kcF9wdXRfbXN0X2JyYW5j aF9kZXZpY2UobXN0Yik7CisJZHJtX2RwX21zdF90b3BvbG9neV9wdXRfbXN0Yihtc3RiKTsKIAly ZXR1cm4gcmV0OwogfQogCkBAIC0yMTU4LDcgKzI0MjYsNyBAQCBpbnQgZHJtX2RwX21zdF90b3Bv bG9neV9tZ3Jfc2V0X21zdChzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwgYm9v bCBtcwogCiAJCS8qIGdpdmUgdGhpcyB0aGUgbWFpbiByZWZlcmVuY2UgKi8KIAkJbWdyLT5tc3Rf cHJpbWFyeSA9IG1zdGI7Ci0JCWtyZWZfZ2V0KCZtZ3ItPm1zdF9wcmltYXJ5LT5rcmVmKTsKKwkJ ZHJtX2RwX21zdF90b3BvbG9neV9yZWZfbXN0YihtZ3ItPm1zdF9wcmltYXJ5KTsKIAogCQlyZXQg PSBkcm1fZHBfZHBjZF93cml0ZWIobWdyLT5hdXgsIERQX01TVE1fQ1RSTCwKIAkJCQkJCQkgRFBf TVNUX0VOIHwgRFBfVVBfUkVRX0VOIHwgRFBfVVBTVFJFQU1fSVNfU1JDKTsKQEAgLTIxOTIsNyAr MjQ2MCw3IEBAIGludCBkcm1fZHBfbXN0X3RvcG9sb2d5X21ncl9zZXRfbXN0KHN0cnVjdCBkcm1f ZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLCBib29sIG1zCiBvdXRfdW5sb2NrOgogCW11dGV4X3Vu bG9jaygmbWdyLT5sb2NrKTsKIAlpZiAobXN0YikKLQkJZHJtX2RwX3B1dF9tc3RfYnJhbmNoX2Rl dmljZShtc3RiKTsKKwkJZHJtX2RwX21zdF90b3BvbG9neV9wdXRfbXN0Yihtc3RiKTsKIAlyZXR1 cm4gcmV0OwogCiB9CkBAIC0yMzU3LDcgKzI2MjUsNyBAQCBzdGF0aWMgaW50IGRybV9kcF9tc3Rf aGFuZGxlX2Rvd25fcmVwKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyKQogCQkJ ICAgICAgIG1nci0+ZG93bl9yZXBfcmVjdi5pbml0aWFsX2hkci5sY3QsCiAJCQkJICAgICAgbWdy LT5kb3duX3JlcF9yZWN2LmluaXRpYWxfaGRyLnJhZFswXSwKIAkJCQkgICAgICBtZ3ItPmRvd25f cmVwX3JlY3YubXNnWzBdKTsKLQkJCWRybV9kcF9wdXRfbXN0X2JyYW5jaF9kZXZpY2UobXN0Yik7 CisJCQlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9tc3RiKG1zdGIpOwogCQkJbWVtc2V0KCZtZ3It PmRvd25fcmVwX3JlY3YsIDAsIHNpemVvZihzdHJ1Y3QgZHJtX2RwX3NpZGViYW5kX21zZ19yeCkp OwogCQkJcmV0dXJuIDA7CiAJCX0KQEAgLTIzNjgsNyArMjYzNiw3IEBAIHN0YXRpYyBpbnQgZHJt X2RwX21zdF9oYW5kbGVfZG93bl9yZXAoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICpt Z3IpCiAJCX0KIAogCQltZW1zZXQoJm1nci0+ZG93bl9yZXBfcmVjdiwgMCwgc2l6ZW9mKHN0cnVj dCBkcm1fZHBfc2lkZWJhbmRfbXNnX3J4KSk7Ci0JCWRybV9kcF9wdXRfbXN0X2JyYW5jaF9kZXZp Y2UobXN0Yik7CisJCWRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X21zdGIobXN0Yik7CiAKIAkJbXV0 ZXhfbG9jaygmbWdyLT5xbG9jayk7CiAJCXR4bXNnLT5zdGF0ZSA9IERSTV9EUF9TSURFQkFORF9U WF9SWDsKQEAgLTI0NDEsNyArMjcwOSw3IEBAIHN0YXRpYyBpbnQgZHJtX2RwX21zdF9oYW5kbGVf dXBfcmVxKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyKQogCQl9CiAKIAkJaWYg KG1zdGIpCi0JCQlkcm1fZHBfcHV0X21zdF9icmFuY2hfZGV2aWNlKG1zdGIpOworCQkJZHJtX2Rw X21zdF90b3BvbG9neV9wdXRfbXN0Yihtc3RiKTsKIAogCQltZW1zZXQoJm1nci0+dXBfcmVxX3Jl Y3YsIDAsIHNpemVvZihzdHJ1Y3QgZHJtX2RwX3NpZGViYW5kX21zZ19yeCkpOwogCX0KQEAgLTI1 MDEsNyArMjc2OSw3IEBAIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgZHJtX2RwX21zdF9kZXRl Y3RfcG9ydChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yCiAJZW51bSBkcm1fY29ubmVj dG9yX3N0YXR1cyBzdGF0dXMgPSBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKIAogCS8q IHdlIG5lZWQgdG8gc2VhcmNoIGZvciB0aGUgcG9ydCBpbiB0aGUgbWdyIGluIGNhc2UgaXRzIGdv bmUgKi8KLQlwb3J0ID0gZHJtX2RwX2dldF92YWxpZGF0ZWRfcG9ydF9yZWYobWdyLCBwb3J0KTsK Kwlwb3J0ID0gZHJtX2RwX21zdF90b3BvbG9neV9nZXRfcG9ydF92YWxpZGF0ZWQobWdyLCBwb3J0 KTsKIAlpZiAoIXBvcnQpCiAJCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsK IApAQCAtMjUyNiw3ICsyNzk0LDcgQEAgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBkcm1fZHBf bXN0X2RldGVjdF9wb3J0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IKIAkJYnJlYWs7 CiAJfQogb3V0OgotCWRybV9kcF9wdXRfcG9ydChwb3J0KTsKKwlkcm1fZHBfbXN0X3RvcG9sb2d5 X3B1dF9wb3J0KHBvcnQpOwogCXJldHVybiBzdGF0dXM7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9k cF9tc3RfZGV0ZWN0X3BvcnQpOwpAQCAtMjU0MywxMSArMjgxMSwxMSBAQCBib29sIGRybV9kcF9t c3RfcG9ydF9oYXNfYXVkaW8oc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCiB7 CiAJYm9vbCByZXQgPSBmYWxzZTsKIAotCXBvcnQgPSBkcm1fZHBfZ2V0X3ZhbGlkYXRlZF9wb3J0 X3JlZihtZ3IsIHBvcnQpOworCXBvcnQgPSBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9wb3J0X3Zh bGlkYXRlZChtZ3IsIHBvcnQpOwogCWlmICghcG9ydCkKIAkJcmV0dXJuIHJldDsKIAlyZXQgPSBw b3J0LT5oYXNfYXVkaW87Ci0JZHJtX2RwX3B1dF9wb3J0KHBvcnQpOworCWRybV9kcF9tc3RfdG9w b2xvZ3lfcHV0X3BvcnQocG9ydCk7CiAJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9TWU1CT0woZHJt X2RwX21zdF9wb3J0X2hhc19hdWRpbyk7CkBAIC0yNTY3LDcgKzI4MzUsNyBAQCBzdHJ1Y3QgZWRp ZCAqZHJtX2RwX21zdF9nZXRfZWRpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBz dHJ1Y3QgZHJtX2RwXwogCXN0cnVjdCBlZGlkICplZGlkID0gTlVMTDsKIAogCS8qIHdlIG5lZWQg dG8gc2VhcmNoIGZvciB0aGUgcG9ydCBpbiB0aGUgbWdyIGluIGNhc2UgaXRzIGdvbmUgKi8KLQlw b3J0ID0gZHJtX2RwX2dldF92YWxpZGF0ZWRfcG9ydF9yZWYobWdyLCBwb3J0KTsKKwlwb3J0ID0g ZHJtX2RwX21zdF90b3BvbG9neV9nZXRfcG9ydF92YWxpZGF0ZWQobWdyLCBwb3J0KTsKIAlpZiAo IXBvcnQpCiAJCXJldHVybiBOVUxMOwogCkBAIC0yNTc4LDcgKzI4NDYsNyBAQCBzdHJ1Y3QgZWRp ZCAqZHJtX2RwX21zdF9nZXRfZWRpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBz dHJ1Y3QgZHJtX2RwXwogCQlkcm1fY29ubmVjdG9yX3NldF90aWxlX3Byb3BlcnR5KGNvbm5lY3Rv cik7CiAJfQogCXBvcnQtPmhhc19hdWRpbyA9IGRybV9kZXRlY3RfbW9uaXRvcl9hdWRpbyhlZGlk KTsKLQlkcm1fZHBfcHV0X3BvcnQocG9ydCk7CisJZHJtX2RwX21zdF90b3BvbG9neV9wdXRfcG9y dChwb3J0KTsKIAlyZXR1cm4gZWRpZDsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2RwX21zdF9nZXRf ZWRpZCk7CkBAIC0yNjQ5LDcgKzI5MTcsNyBAQCBpbnQgZHJtX2RwX2F0b21pY19maW5kX3ZjcGlf c2xvdHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCWlmIChJU19FUlIodG9wb2xv Z3lfc3RhdGUpKQogCQlyZXR1cm4gUFRSX0VSUih0b3BvbG9neV9zdGF0ZSk7CiAKLQlwb3J0ID0g ZHJtX2RwX2dldF92YWxpZGF0ZWRfcG9ydF9yZWYobWdyLCBwb3J0KTsKKwlwb3J0ID0gZHJtX2Rw X21zdF90b3BvbG9neV9nZXRfcG9ydF92YWxpZGF0ZWQobWdyLCBwb3J0KTsKIAlpZiAocG9ydCA9 PSBOVUxMKQogCQlyZXR1cm4gLUVJTlZBTDsKIAlyZXFfc2xvdHMgPSBESVZfUk9VTkRfVVAocGJu LCBtZ3ItPnBibl9kaXYpOwpAQCAtMjY1NywxNCArMjkyNSwxNCBAQCBpbnQgZHJtX2RwX2F0b21p Y19maW5kX3ZjcGlfc2xvdHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkJcmVx X3Nsb3RzLCB0b3BvbG9neV9zdGF0ZS0+YXZhaWxfc2xvdHMpOwogCiAJaWYgKHJlcV9zbG90cyA+ IHRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cykgewotCQlkcm1fZHBfcHV0X3BvcnQocG9ydCk7 CisJCWRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X3BvcnQocG9ydCk7CiAJCXJldHVybiAtRU5PU1BD OwogCX0KIAogCXRvcG9sb2d5X3N0YXRlLT5hdmFpbF9zbG90cyAtPSByZXFfc2xvdHM7CiAJRFJN X0RFQlVHX0tNUygidmNwaSBzbG90cyBhdmFpbD0lZCIsIHRvcG9sb2d5X3N0YXRlLT5hdmFpbF9z bG90cyk7CiAKLQlkcm1fZHBfcHV0X3BvcnQocG9ydCk7CisJZHJtX2RwX21zdF90b3BvbG9neV9w dXRfcG9ydChwb3J0KTsKIAlyZXR1cm4gcmVxX3Nsb3RzOwogfQogRVhQT1JUX1NZTUJPTChkcm1f ZHBfYXRvbWljX2ZpbmRfdmNwaV9zbG90cyk7CkBAIC0yNzE1LDcgKzI5ODMsNyBAQCBib29sIGRy bV9kcF9tc3RfYWxsb2NhdGVfdmNwaShzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1n ciwKIHsKIAlpbnQgcmV0OwogCi0JcG9ydCA9IGRybV9kcF9nZXRfdmFsaWRhdGVkX3BvcnRfcmVm KG1nciwgcG9ydCk7CisJcG9ydCA9IGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X3BvcnRfdmFsaWRh dGVkKG1nciwgcG9ydCk7CiAJaWYgKCFwb3J0KQogCQlyZXR1cm4gZmFsc2U7CiAKQEAgLTI3MjUs NyArMjk5Myw3IEBAIGJvb2wgZHJtX2RwX21zdF9hbGxvY2F0ZV92Y3BpKHN0cnVjdCBkcm1fZHBf bXN0X3RvcG9sb2d5X21nciAqbWdyLAogCWlmIChwb3J0LT52Y3BpLnZjcGkgPiAwKSB7CiAJCURS TV9ERUJVR19LTVMoInBheWxvYWQ6IHZjcGkgJWQgYWxyZWFkeSBhbGxvY2F0ZWQgZm9yIHBibiAl ZCAtIHJlcXVlc3RlZCBwYm4gJWRcbiIsIHBvcnQtPnZjcGkudmNwaSwgcG9ydC0+dmNwaS5wYm4s IHBibik7CiAJCWlmIChwYm4gPT0gcG9ydC0+dmNwaS5wYm4pIHsKLQkJCWRybV9kcF9wdXRfcG9y dChwb3J0KTsKKwkJCWRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X3BvcnQocG9ydCk7CiAJCQlyZXR1 cm4gdHJ1ZTsKIAkJfQogCX0KQEAgLTI3MzMsMTMgKzMwMDEsMTMgQEAgYm9vbCBkcm1fZHBfbXN0 X2FsbG9jYXRlX3ZjcGkoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCiAJcmV0 ID0gZHJtX2RwX2luaXRfdmNwaShtZ3IsICZwb3J0LT52Y3BpLCBwYm4sIHNsb3RzKTsKIAlpZiAo cmV0KSB7CiAJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBpbml0IHZjcGkgc2xvdHM9JWQgbWF4 PTYzIHJldD0lZFxuIiwKLQkJCQlESVZfUk9VTkRfVVAocGJuLCBtZ3ItPnBibl9kaXYpLCByZXQp OworCQkJICAgICAgRElWX1JPVU5EX1VQKHBibiwgbWdyLT5wYm5fZGl2KSwgcmV0KTsKIAkJZ290 byBvdXQ7CiAJfQogCURSTV9ERUJVR19LTVMoImluaXRpbmcgdmNwaSBmb3IgcGJuPSVkIHNsb3Rz PSVkXG4iLAotCQkJcGJuLCBwb3J0LT52Y3BpLm51bV9zbG90cyk7CisJCSAgICAgIHBibiwgcG9y dC0+dmNwaS5udW1fc2xvdHMpOwogCi0JZHJtX2RwX3B1dF9wb3J0KHBvcnQpOworCWRybV9kcF9t c3RfdG9wb2xvZ3lfcHV0X3BvcnQocG9ydCk7CiAJcmV0dXJuIHRydWU7CiBvdXQ6CiAJcmV0dXJu IGZhbHNlOwpAQCAtMjc0OSwxMiArMzAxNywxMiBAQCBFWFBPUlRfU1lNQk9MKGRybV9kcF9tc3Rf YWxsb2NhdGVfdmNwaSk7CiBpbnQgZHJtX2RwX21zdF9nZXRfdmNwaV9zbG90cyhzdHJ1Y3QgZHJt X2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwgc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCkK IHsKIAlpbnQgc2xvdHMgPSAwOwotCXBvcnQgPSBkcm1fZHBfZ2V0X3ZhbGlkYXRlZF9wb3J0X3Jl ZihtZ3IsIHBvcnQpOworCXBvcnQgPSBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9wb3J0X3ZhbGlk YXRlZChtZ3IsIHBvcnQpOwogCWlmICghcG9ydCkKIAkJcmV0dXJuIHNsb3RzOwogCiAJc2xvdHMg PSBwb3J0LT52Y3BpLm51bV9zbG90czsKLQlkcm1fZHBfcHV0X3BvcnQocG9ydCk7CisJZHJtX2Rw X21zdF90b3BvbG9neV9wdXRfcG9ydChwb3J0KTsKIAlyZXR1cm4gc2xvdHM7CiB9CiBFWFBPUlRf U1lNQk9MKGRybV9kcF9tc3RfZ2V0X3ZjcGlfc2xvdHMpOwpAQCAtMjc2OCwxMSArMzAzNiwxMSBA QCBFWFBPUlRfU1lNQk9MKGRybV9kcF9tc3RfZ2V0X3ZjcGlfc2xvdHMpOwogICovCiB2b2lkIGRy bV9kcF9tc3RfcmVzZXRfdmNwaV9zbG90cyhzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3Ig Km1nciwgc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCkKIHsKLQlwb3J0ID0gZHJtX2RwX2dl dF92YWxpZGF0ZWRfcG9ydF9yZWYobWdyLCBwb3J0KTsKKwlwb3J0ID0gZHJtX2RwX21zdF90b3Bv bG9neV9nZXRfcG9ydF92YWxpZGF0ZWQobWdyLCBwb3J0KTsKIAlpZiAoIXBvcnQpCiAJCXJldHVy bjsKIAlwb3J0LT52Y3BpLm51bV9zbG90cyA9IDA7Ci0JZHJtX2RwX3B1dF9wb3J0KHBvcnQpOwor CWRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X3BvcnQocG9ydCk7CiB9CiBFWFBPUlRfU1lNQk9MKGRy bV9kcF9tc3RfcmVzZXRfdmNwaV9zbG90cyk7CiAKQEAgLTI3ODEsOSArMzA0OSwxMCBAQCBFWFBP UlRfU1lNQk9MKGRybV9kcF9tc3RfcmVzZXRfdmNwaV9zbG90cyk7CiAgKiBAbWdyOiBtYW5hZ2Vy IGZvciB0aGlzIHBvcnQKICAqIEBwb3J0OiB1bnZlcmlmaWVkIHBvcnQgdG8gZGVhbGxvY2F0ZSB2 Y3BpIGZvcgogICovCi12b2lkIGRybV9kcF9tc3RfZGVhbGxvY2F0ZV92Y3BpKHN0cnVjdCBkcm1f ZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLCBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0KQor dm9pZCBkcm1fZHBfbXN0X2RlYWxsb2NhdGVfdmNwaShzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9n eV9tZ3IgKm1nciwKKwkJCQlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0KQogewotCXBvcnQg PSBkcm1fZHBfZ2V0X3ZhbGlkYXRlZF9wb3J0X3JlZihtZ3IsIHBvcnQpOworCXBvcnQgPSBkcm1f ZHBfbXN0X3RvcG9sb2d5X2dldF9wb3J0X3ZhbGlkYXRlZChtZ3IsIHBvcnQpOwogCWlmICghcG9y dCkKIAkJcmV0dXJuOwogCkBAIC0yNzkyLDcgKzMwNjEsNyBAQCB2b2lkIGRybV9kcF9tc3RfZGVh bGxvY2F0ZV92Y3BpKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLCBzdHJ1Y3Qg ZHJtXwogCXBvcnQtPnZjcGkucGJuID0gMDsKIAlwb3J0LT52Y3BpLmFsaWduZWRfcGJuID0gMDsK IAlwb3J0LT52Y3BpLnZjcGkgPSAwOwotCWRybV9kcF9wdXRfcG9ydChwb3J0KTsKKwlkcm1fZHBf bXN0X3RvcG9sb2d5X3B1dF9wb3J0KHBvcnQpOwogfQogRVhQT1JUX1NZTUJPTChkcm1fZHBfbXN0 X2RlYWxsb2NhdGVfdmNwaSk7CiAKQEAgLTMwNzgsOCArMzM0NywxMCBAQCBzdGF0aWMgdm9pZCBk cm1fZHBfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAKIHN0YXRpYyB2b2lkIGRy bV9kcF9mcmVlX21zdF9wb3J0KHN0cnVjdCBrcmVmICprcmVmKQogewotCXN0cnVjdCBkcm1fZHBf bXN0X3BvcnQgKnBvcnQgPSBjb250YWluZXJfb2Yoa3JlZiwgc3RydWN0IGRybV9kcF9tc3RfcG9y dCwga3JlZik7Ci0Ja3JlZl9wdXQoJnBvcnQtPnBhcmVudC0+a3JlZiwgZHJtX2RwX2ZyZWVfbXN0 X2JyYW5jaF9kZXZpY2UpOworCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQgPQorCQljb250 YWluZXJfb2Yoa3JlZiwgc3RydWN0IGRybV9kcF9tc3RfcG9ydCwgbWFsbG9jX2tyZWYpOworCisJ ZHJtX2RwX21zdF9wdXRfbXN0Yl9tYWxsb2MocG9ydC0+cGFyZW50KTsKIAlrZnJlZShwb3J0KTsK IH0KIApAQCAtMzEwMyw3ICszMzc0LDYgQEAgc3RhdGljIHZvaWQgZHJtX2RwX2Rlc3Ryb3lfY29u bmVjdG9yX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCQlsaXN0X2RlbCgmcG9ydC0+ bmV4dCk7CiAJCW11dGV4X3VubG9jaygmbWdyLT5kZXN0cm95X2Nvbm5lY3Rvcl9sb2NrKTsKIAot CQlrcmVmX2luaXQoJnBvcnQtPmtyZWYpOwogCQlJTklUX0xJU1RfSEVBRCgmcG9ydC0+bmV4dCk7 CiAKIAkJbWdyLT5jYnMtPmRlc3Ryb3lfY29ubmVjdG9yKG1nciwgcG9ydC0+Y29ubmVjdG9yKTsK QEAgLTMxMTcsNyArMzM4Nyw3IEBAIHN0YXRpYyB2b2lkIGRybV9kcF9kZXN0cm95X2Nvbm5lY3Rv cl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJCWRybV9kcF9tc3RfcHV0X3BheWxv YWRfaWQobWdyLCBwb3J0LT52Y3BpLnZjcGkpOwogCQl9CiAKLQkJa3JlZl9wdXQoJnBvcnQtPmty ZWYsIGRybV9kcF9mcmVlX21zdF9wb3J0KTsKKwkJZHJtX2RwX21zdF9wdXRfcG9ydF9tYWxsb2Mo cG9ydCk7CiAJCXNlbmRfaG90cGx1ZyA9IHRydWU7CiAJfQogCWlmIChzZW5kX2hvdHBsdWcpCkBA IC0zMjkyLDcgKzM1NjIsNyBAQCBzdGF0aWMgaW50IGRybV9kcF9tc3RfaTJjX3hmZXIoc3RydWN0 IGkyY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgaTJjX21zZyAqbXNncwogCXN0cnVjdCBkcm1f ZHBfc2lkZWJhbmRfbXNnX3R4ICp0eG1zZyA9IE5VTEw7CiAJaW50IHJldDsKIAotCW1zdGIgPSBk cm1fZHBfZ2V0X3ZhbGlkYXRlZF9tc3RiX3JlZihtZ3IsIHBvcnQtPnBhcmVudCk7CisJbXN0YiA9 IGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X21zdGJfdmFsaWRhdGVkKG1nciwgcG9ydC0+cGFyZW50 KTsKIAlpZiAoIW1zdGIpCiAJCXJldHVybiAtRVJFTU9URUlPOwogCkBAIC0zMzQyLDcgKzM2MTIs NyBAQCBzdGF0aWMgaW50IGRybV9kcF9tc3RfaTJjX3hmZXIoc3RydWN0IGkyY19hZGFwdGVyICph ZGFwdGVyLCBzdHJ1Y3QgaTJjX21zZyAqbXNncwogCX0KIG91dDoKIAlrZnJlZSh0eG1zZyk7Ci0J ZHJtX2RwX3B1dF9tc3RfYnJhbmNoX2RldmljZShtc3RiKTsKKwlkcm1fZHBfbXN0X3RvcG9sb2d5 X3B1dF9tc3RiKG1zdGIpOwogCXJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUv ZHJtL2RybV9kcF9tc3RfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5o CmluZGV4IDM3MWNjMjgxNjQ3Ny4uNTA2NDNhMzk3NjVkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2Ry bS9kcm1fZHBfbXN0X2hlbHBlci5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVy LmgKQEAgLTQ0LDcgKzQ0LDEwIEBAIHN0cnVjdCBkcm1fZHBfdmNwaSB7CiAKIC8qKgogICogc3Ry dWN0IGRybV9kcF9tc3RfcG9ydCAtIE1TVCBwb3J0Ci0gKiBAa3JlZjogcmVmZXJlbmNlIGNvdW50 IGZvciB0aGlzIHBvcnQuCisgKiBAdG9wb2xvZ3lfa3JlZjogcmVmY291bnQgZm9yIHRoaXMgcG9y dCdzIGxpZmV0aW1lIGluIHRoZSB0b3BvbG9neSwgb25seSB0aGUKKyAqIERQIE1TVCBoZWxwZXJz IHNob3VsZCBuZWVkIHRvIHRvdWNoIHRoaXMKKyAqIEBtYWxsb2Nfa3JlZjogcmVmY291bnQgZm9y IHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBjb250YWluaW5nIHRoaXMgc3RydWN0dXJlLgorICogU2Vl IGRybV9kcF9tc3RfZ2V0X3BvcnRfbWFsbG9jKCkgYW5kIGRybV9kcF9tc3RfcHV0X3BvcnRfbWFs bG9jKCkuCiAgKiBAcG9ydF9udW06IHBvcnQgbnVtYmVyCiAgKiBAaW5wdXQ6IGlmIHRoaXMgcG9y dCBpcyBhbiBpbnB1dCBwb3J0LgogICogQG1jczogbWVzc2FnZSBjYXBhYmlsaXR5IHN0YXR1cyAt IERQIDEuMiBzcGVjLgpAQCAtNjcsNyArNzAsOCBAQCBzdHJ1Y3QgZHJtX2RwX3ZjcGkgewogICog aW4gdGhlIE1TVCB0b3BvbG9neS4KICAqLwogc3RydWN0IGRybV9kcF9tc3RfcG9ydCB7Ci0Jc3Ry dWN0IGtyZWYga3JlZjsKKwlzdHJ1Y3Qga3JlZiB0b3BvbG9neV9rcmVmOworCXN0cnVjdCBrcmVm IG1hbGxvY19rcmVmOwogCiAJdTggcG9ydF9udW07CiAJYm9vbCBpbnB1dDsKQEAgLTEwMiw3ICsx MDYsMTAgQEAgc3RydWN0IGRybV9kcF9tc3RfcG9ydCB7CiAKIC8qKgogICogc3RydWN0IGRybV9k cF9tc3RfYnJhbmNoIC0gTVNUIGJyYW5jaCBkZXZpY2UuCi0gKiBAa3JlZjogcmVmZXJlbmNlIGNv dW50IGZvciB0aGlzIHBvcnQuCisgKiBAdG9wb2xvZ3lfa3JlZjogcmVmY291bnQgZm9yIHRoaXMg YnJhbmNoIGRldmljZSdzIGxpZmV0aW1lIGluIHRoZSB0b3BvbG9neSwKKyAqIG9ubHkgdGhlIERQ IE1TVCBoZWxwZXJzIHNob3VsZCBuZWVkIHRvIHRvdWNoIHRoaXMKKyAqIEBtYWxsb2Nfa3JlZjog cmVmY291bnQgZm9yIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBjb250YWluaW5nIHRoaXMgc3RydWN0 dXJlLgorICogU2VlIGRybV9kcF9tc3RfZ2V0X21zdGJfbWFsbG9jKCkgYW5kIGRybV9kcF9tc3Rf cHV0X21zdGJfbWFsbG9jKCkuCiAgKiBAcmFkOiBSZWxhdGl2ZSBBZGRyZXNzIHRvIHRhbGsgdG8g dGhpcyBicmFuY2ggZGV2aWNlLgogICogQGxjdDogTGluayBjb3VudCB0b3RhbCB0byB0YWxrIHRv IHRoaXMgYnJhbmNoIGRldmljZS4KICAqIEBudW1fcG9ydHM6IG51bWJlciBvZiBwb3J0cyBvbiB0 aGUgYnJhbmNoLgpAQCAtMTIxLDcgKzEyOCw4IEBAIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgewog ICogdG8gZG93bnN0cmVhbSBwb3J0IG9mIHBhcmVudCBicmFuY2hlcy4KICAqLwogc3RydWN0IGRy bV9kcF9tc3RfYnJhbmNoIHsKLQlzdHJ1Y3Qga3JlZiBrcmVmOworCXN0cnVjdCBrcmVmIHRvcG9s b2d5X2tyZWY7CisJc3RydWN0IGtyZWYgbWFsbG9jX2tyZWY7CiAJdTggcmFkWzhdOwogCXU4IGxj dDsKIAlpbnQgbnVtX3BvcnRzOwpAQCAtNjI2LDQgKzYzNCw3IEBAIGludCBkcm1fZHBfYXRvbWlj X3JlbGVhc2VfdmNwaV9zbG90cyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiBpbnQg ZHJtX2RwX3NlbmRfcG93ZXJfdXBkb3duX3BoeShzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9t Z3IgKm1nciwKIAkJCQkgc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCwgYm9vbCBwb3dlcl91 cCk7CiAKK3ZvaWQgZHJtX2RwX21zdF9nZXRfcG9ydF9tYWxsb2Moc3RydWN0IGRybV9kcF9tc3Rf cG9ydCAqcG9ydCk7Cit2b2lkIGRybV9kcF9tc3RfcHV0X3BvcnRfbWFsbG9jKHN0cnVjdCBkcm1f ZHBfbXN0X3BvcnQgKnBvcnQpOworCiAjZW5kaWYKLS0gCjIuMTkuMgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1k LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==