From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: [PATCH v3 02/16] drm/dp_mst: Introduce new refcounting scheme for mstbs and ports Date: Wed, 2 Jan 2019 19:06:21 -0500 Message-ID: <20190103000635.13628-3-lyude@redhat.com> References: <20190103000635.13628-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190103000635.13628-1-lyude-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Jerry Zuo , Daniel Vetter , David Airlie , Harry Wentland , Juston Li List-Id: nouveau.vger.kernel.org VGhlIGN1cnJlbnQgd2F5IG9mIGhhbmRsaW5nIHJlZmNvdW50aW5nIGluIHRoZSBEUCBNU1QgaGVs cGVycyBpcyByZWFsbHkKY29uZnVzaW5nIGFuZCBwcm9iYWJseSBqdXN0IHBsYWluIHdyb25nIGJl Y2F1c2UgaXQncyBiZWVuIGhhY2tlZCB1cCBtYW55CnRpbWVzIG92ZXIgdGhlIHllYXJzIHdpdGhv dXQgYW55b25lIGFjdHVhbGx5IGdvaW5nIG92ZXIgdGhlIGNvZGUgYW5kCnNlZWluZyBpZiB0aGlu Z3MgY291bGQgYmUgc2ltcGxpZmllZC4KClRvIHRoZSBiZXN0IG9mIG15IHVuZGVyc3RhbmRpbmcs IHRoZSBjdXJyZW50IHNjaGVtZSB3b3JrcyBsaWtlIHRoaXM6CmRybV9kcF9tc3RfcG9ydCBhbmQg ZHJtX2RwX21zdF9icmFuY2ggYm90aCBoYXZlIGEgc2luZ2xlIHJlZmNvdW50LiBXaGVuCnRoaXMg cmVmY291bnQgaGl0cyAwIGZvciBlaXRoZXIgb2YgdGhlIHR3bywgdGhleSdyZSByZW1vdmVkIGZy b20gdGhlCnRvcG9sb2d5IHN0YXRlLCBidXQgbm90IGltbWVkaWF0ZWx5IGZyZWVkLiBCb3RoIHBv cnRzIGFuZCBicmFuY2ggZGV2aWNlcwp3aWxsIHJlaW5pdGlhbGl6ZSB0aGVpciBrcmVmIG9uY2Ug aXQncyBoaXQgMCBiZWZvcmUgYWN0dWFsbHkgZGVzdHJveWluZwp0aGVtc2VsdmVzLiBUaGUgaW50 ZW5kZWQgcHVycG9zZSBiZWhpbmQgdGhpcyBpcyBzbyB0aGF0IHdlIGNhbiBhdm9pZApwcm9ibGVt cyBsaWtlIG5vdCBiZWluZyBhYmxlIHRvIGZyZWUgYSByZW1vdGUgcGF5bG9hZCB0aGF0IG1pZ2h0 IHN0aWxsCmJlIGFjdGl2ZSwgZHVlIHRvIHVzIGhhdmluZyByZW1vdmVkIGFsbCBvZiB0aGUgcG9y dC9icmFuY2ggZGV2aWNlCnN0cnVjdHVyZXMgaW4gbWVtb3J5LCBhcyBwZXI6Cgpjb21taXQgOTFh MjVlNDYzMTMwICgiZHJtL2RwL21zdDogZGVhbGxvY2F0ZSBwYXlsb2FkIG9uIHBvcnQgZGVzdHJ1 Y3Rpb24iKQoKV2hpY2ggbWF5IGhhdmUgd29ya2VkLCBidXQgdGhlbiBpdCBjYXVzZWQgdXNlLWFm dGVyLWZyZWUgZXJyb3JzLiBCZWluZwpuZXcgdG8gTVNUIGF0IHRoZSB0aW1lLCBJIHRyaWVkIGZp eGluZyBpdDsKCmNvbW1pdCAyNjNlZmRlMzFmOTcgKCJkcm0vZHAvbXN0OiBHZXQgdmFsaWRhdGVk IHBvcnQgcmVmIGluIGRybV9kcF91cGRhdGVfcGF5bG9hZF9wYXJ0MSgpIikKCkJ1dCwgdGhhdCB3 YXMgYnJva2VuOiBib3RoIGRybV9kcF9tc3RfcG9ydCBhbmQgZHJtX2RwX21zdF9icmFuY2ggc3Ry dWN0cwphcmUgdmFsaWRhdGVkIGluIGFsbW9zdCBldmVyeSBEUCBNU1QgaGVscGVyIGZ1bmN0aW9u LiBTaW1wbHkgcHV0LCB0aGlzCm1lYW5zIHdlIGdvIHRocm91Z2ggdGhlIHRvcG9sb2d5IGFuZCB0 cnkgdG8gc2VlIGlmIHRoZSBnaXZlbgpkcm1fZHBfbXN0X2JyYW5jaCBvciBkcm1fZHBfbXN0X3Bv cnQgaXMgc3RpbGwgYXR0YWNoZWQgdG8gc29tZXRoaW5nCmJlZm9yZSB0cnlpbmcgdG8gdXNlIGl0 IGluIG9yZGVyIHRvIGF2b2lkIGRlcmVmZXJlbmNpbmcgZnJlZWQgbWVtb3J5Cihzb21ldGhpbmcg dGhhdCBoYXMgaGFwcGVuZWQgYSBMT1QgaW4gdGhlIHBhc3Qgd2l0aCB0aGlzIGxpYnJhcnkpLgpC ZWNhdXNlIG9mIHRoaXMgaXQgZG9lc24ndCBhY3R1YWxseSBtYXR0ZXIgd2hldGhlciBvciBub3Qg d2Uga2VlcCBrZWVwCnRoZSBwb3J0cyBhbmQgYnJhbmNoZXMgYXJvdW5kIGluIG1lbW9yeSBhcyB0 aGF0J3Mgbm90IGVub3VnaCwgYmVjYXVzZQphbnkgZnVuY3Rpb24gdGhhdCB2YWxpZGF0ZXMgdGhl IGJyYW5jaGVzIGFuZCBwb3J0cyBwYXNzZWQgdG8gaXQgd2lsbApzdGlsbCByZWplY3QgdGhlbSBh bnl3YXkgc2luY2UgdGhleSdyZSBubyBsb25nZXIgaW4gdGhlIHRvcG9sb2d5CnN0cnVjdHVyZS4g U28sIHVzZS1hZnRlci1mcmVlIGVycm9ycyB3ZXJlIGZpeGVkIGJ1dCBwYXlsb2FkIGRlYWxsb2Nh dGlvbgp3YXMgY29tcGxldGVseSBicm9rZW4uCgpUd28geWVhcnMgbGF0ZXIsIEFNRCBpbmZvcm1l ZCBtZSBhYm91dCB0aGlzIGlzc3VlIGFuZCBJIGF0dGVtcHRlZCB0bwpjb21lIHVwIHdpdGggYSB0 ZW1wb3JhcnkgZml4LCBwZW5kaW5nIGEgbG9uZy1vdmVyZHVlIGNsZWFudXAgb2YgdGhpcwpsaWJy YXJ5OgoKY29tbWl0IGM1NGM3Mzc0ZmY0NCAoImRybS9kcF9tc3Q6IFNraXAgdmFsaWRhdGluZyBw b3J0cyBkdXJpbmcgZGVzdHJ1Y3Rpb24sIGp1c3QgcmVmIikKCkJ1dCB0aGVuIHRoYXQgaW50cm9k dWNlZCB1c2UtYWZ0ZXItZnJlZSBlcnJvcnMsIHNvIEkgcXVpY2tseSByZXZlcnRlZAppdDoKCmNv bW1pdCA5NzY1NjM1YjMwNzUgKCJSZXZlcnQgImRybS9kcF9tc3Q6IFNraXAgdmFsaWRhdGluZyBw b3J0cyBkdXJpbmcgZGVzdHJ1Y3Rpb24sIGp1c3QgcmVmIiIpCgpBbmQgaW4gdGhlIHByb2Nlc3Ms IGxlYXJuZWQgdGhhdCB0aGVyZSBpcyBqdXN0IG5vIHNpbXBsZSBmaXggZm9yIHRoaXM6CnRoZSBk ZXNpZ24gaXMganVzdCBicm9rZW4uIFVuZm9ydHVudGVseSwgdGhlIHVzYWdlIG9mIHRoZXNlIGhl bHBlcnMgYXJlCnF1aXRlIGJyb2tlbiBhcyB3ZWxsLiBTb21lIGRyaXZlcnMgbGlrZSBpOTE1IGhh dmUgYmVlbiBzbWFydCBlbm91Z2ggdG8KYXZvaWQgYWNjZXNzaW5nIGFueSBraW5kIG9mIGluZm9y bWF0aW9uIGZyb20gTVNUIHBvcnQgc3RydWN0dXJlcywgYnV0Cm90aGVycyBsaWtlIG5vdXZlYXUg aGF2ZSBhc3N1bWVkLCB1bmRlcnN0YW5kYWJseSBzbywgdGhhdApkcm1fZHBfbXN0X3BvcnQgc3Ry dWN0dXJlcyBhcmUgbm9ybWFsIGFuZCBjYW4ganVzdCBiZSBhY2Nlc3NlZCBhdCBhbnkKdGltZSB3 aXRob3V0IHdvcnJ5aW5nIGFib3V0IHVzZS1hZnRlci1mcmVlIGVycm9ycy4KCkFmdGVyIGEgbG90 IG9mIGRpc2N1c3Npb24sIG1lIGFuZCBEYW5pZWwgVmV0dGVyIGNhbWUgdXAgd2l0aCBhIGJldHRl cgppZGVhIHRvIHJlcGxhY2UgYWxsIG9mIHRoaXMuCgpUbyBzdW1tYXJpemUsIHNpbmNlIHRoaXMg aXMgZG9jdW1lbnRlZCBmYXIgbW9yZSBpbmRlcHRoIGluIHRoZQpkb2N1bWVudGF0aW9uIHRoaXMg cGF0Y2ggaW50cm9kdWNlcywgd2UgbWFrZSBpdCBzbyB0aGF0IGRybV9kcF9tc3RfcG9ydAphbmQg ZHJtX2RwX21zdF9icmFuY2ggc3RydWN0dXJlcyBoYXZlIHR3byBkaWZmZXJlbnQgY2xhc3NlcyBv ZgpyZWZjb3VudHM6IHRvcG9sb2d5X2tyZWYsIGFuZCBtYWxsb2Nfa3JlZi4gdG9wb2xvZ3lfa3Jl ZiBjb3JyZXNwb25kcyB0bwp0aGUgbGlmZXRpbWUgb2YgdGhlIGdpdmVuIGRybV9kcF9tc3RfcG9y dCBvciBkcm1fZHBfbXN0X2JyYW5jaCBpbiBpdCdzCmdpdmVuIHRvcG9sb2d5LiBPbmNlIGl0IGhp dHMgemVybywgYW55IGFzc29jaWF0ZWQgY29ubmVjdG9ycyBhcmUgcmVtb3ZlZAphbmQgdGhlIGJy YW5jaCBvciBwb3J0IGNhbiBubyBsb25nZXIgYmUgdmFsaWRhdGVkLiBtYWxsb2Nfa3JlZgpjb3Jy ZXNwb25kcyB0byB0aGUgbGlmZXRpbWUgb2YgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGZvciB0aGUg YWN0dWFsCnN0cnVjdHVyZSwgYW5kIHdpbGwgYWx3YXlzIGJlIG5vbi16ZXJvIHNvIGxvbmcgYXMg dGhlIHRvcG9sb2d5X2tyZWYgaXMKbm9uLXplcm8uIFRoaXMgZ2l2ZXMgdXMgYSB3YXkgdG8gYWxs b3cgY2FsbGVycyB0byBob2xkIG9udG8gcG9ydCBhbmQKYnJhbmNoIGRldmljZSBzdHJ1Y3R1cmVz IHBhc3QgdGhlaXIgdG9wb2xvZ3kgbGlmZXRpbWUsIGFuZCBkcmFtYXRpY2FsbHkKc2ltcGxpZmll cyB0aGUgbGlmZXRpbWVzIG9mIGJvdGggc3RydWN0dXJlcy4gVGhpcyBhbHNvIGZpbmFsbHkgZml4 ZXMgdGhlCnBvcnQgZGVhbGxvY2F0aW9uIHByb2JsZW0sIHByb3Blcmx5LgoKQWRkaXRpb25hbGx5 OiBzaW5jZSB0aGlzIG5vdyBtZWFucyB0aGF0IHdlIGNhbiBrZWVwIHBvcnRzIGFuZCBicmFuY2gK ZGV2aWNlcyBhbGxvY2F0ZWQgaW4gbWVtb3J5IGZvciBob3dldmVyIGxvbmcgd2UgbmVlZCwgd2Ug bm8gbG9uZ2VyIG5lZWQKYSBzaWduaWZpY2FudCBhbW91bnQgb2YgdGhlIHBvcnQgdmFsaWRhdGlv biB0aGF0IHdlIGN1cnJlbnRseSBkby4KCkFkZGl0aW9uYWxseSwgdGhlcmUgaXMgb25lIGxhc3Qg c2NlbmFyaW8gdGhhdCB0aGlzIGZpeGVzLCB3aGljaCBjb3VsZG4ndApoYXZlIGJlZW4gZml4ZWQg cHJvcGVybHkgYmVmb3JlaGFuZDoKCi0gQ1BVMSB1bnJlZnMgcG9ydCBmcm9tIHRvcG9sb2d5IChy ZWZjb3VudCAxLT4wKQotIENQVTIgcmVmcyBwb3J0IGluIHRvcG9sb2d5KHJlZmNvdW50IDAtPjEp CgpTaW5jZSB3ZSBub3cgY2FuIGd1YXJhbnRlZSBtZW1vcnkgc2FmZXR5IGZvciBwb3J0cyBhbmQg YnJhbmNoZXMKYXMtbmVlZGVkLCB3ZSBhbHNvIGNhbiBtYWtlIG91ciBtYWluIHJlZmVyZW5jZSBj b3VudGluZyBmdW5jdGlvbnMgZml4CnRoaXMgcHJvYmxlbSBieSB1c2luZyBrcmVmX2dldF91bmxl c3NfemVybygpIGludGVybmFsbHkgc28gdGhhdCB0b3BvbG9neQpyZWZjb3VudHMgY2FuIG9ubHkg ZXZlciByZWFjaCAwIG9uY2UuCgpDaGFuZ2VzIHNpbmNlIHYyOgoqIEZpeCBjb21taXQgbWVzc2Fn ZSAtIGNoZWNrcGF0Y2gKQ2hhbmdlcyBzaW5jZSB2MToKKiBSZW1vdmUgZm9yd2FyZCBkZWNsYXJh dGlvbnMgLSBkYW52ZXQKKiBNb3ZlICJCcmFuY2ggZGV2aWNlIGFuZCBwb3J0IHJlZmNvdW50aW5n IiBzZWN0aW9uIGZyb20gZG9jdW1lbnRhdGlvbgogIGludG8ga2VybmVsLWRvYyBjb21tZW50cyAt IGRhbnZldAoqIEV4cG9ydCBpbnRlcm5hbCB0b3BvbG9neSBsaWZldGltZSBmdW5jdGlvbnMgaW50 byB0aGVpciBvd24gc2VjdGlvbiBpbgogIHRoZSBrZXJuZWwtZG9jcyAtIGRhbnZldAoqIHMvQC8m L2cgZm9yIHN0cnVjdCByZWZlcmVuY2VzIGluIGtlcm5lbC1kb2NzIC0gZGFudmV0CiogRHJvcCB0 aGUgIndoZW4gdGhleSBhcmUgbm8gbG9uZ2VyIGJlaW5nIHVzZWQiIGJpdHMgZnJvbSB0aGUga2Vy bmVsCiAgZG9jcyAtIGRhbnZldAoqIE1vZGlmeSBkaWFncmFtcyB0byBzaG93IGhvdyB0aGUgRFJN IGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgdG9wb2xvZ3kKICBhbmQgcGF5bG9hZHMgLSBkYW52 ZXQKKiBNYWtlIHN1Z2dlc3RlZCBkb2N1bWVudGF0aW9uIGNoYW5nZXMgZm9yCiAgZHJtX2RwX21z dF90b3BvbG9neV9nZXRfbXN0YigpIGFuZCBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9wb3J0KCkg LQogIGRhbnZldAoqIEJldHRlciBleHBsYWluIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBtYWxs b2MgcmVmcyBhbmQgdG9wb2xvZ3kga3JlZnMKICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZHJt X2RwX21zdF90b3BvbG9neV9nZXRfcG9ydCgpIGFuZAogIGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0 X21zdGIoKSAtIGRhbnZldAoqIEZpeCAiU2VlIGFsc28iIGluIGRybV9kcF9tc3RfdG9wb2xvZ3lf Z2V0X21zdGIoKSAtIGRhbnZldAoqIFJlbmFtZSBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF8ocG9y dHxtc3RiKSgpIC0+CiAgZHJtX2RwX21zdF90b3BvbG9neV90cnlfZ2V0Xyhwb3J0fG1zdGIpKCkg YW5kCiAgZHJtX2RwX21zdF90b3BvbG9neV9yZWZfKHBvcnR8bXN0YikoKSAtPgogIGRybV9kcF9t c3RfdG9wb2xvZ3lfZ2V0Xyhwb3J0fG1zdGIpKCkgLSBkYW52ZXQKKiBzL3Nob3VsZC9tdXN0IGlu IGRvY3MgLSBkYW52ZXQKKiBXQVJOX09OKHJlZmNvdW50ID09IDApIGluIHRvcG9sb2d5X2dldF8o bXN0Ynxwb3J0KSAtIGRhbnZldAoqIE1vdmUga2RvY3MgZm9yIG1zdGIvcG9ydCBzdHJ1Y3RzIGlu bGluZSAtIGRhbnZldAoqIFNwbGl0IGRybV9kcF9nZXRfbGFzdF9jb25uZWN0ZWRfcG9ydF9hbmRf bXN0YigpIGNoYW5nZXMgaW50byB0aGVpciBvd24KICBjb21taXQgLSBkYW52ZXQKClNpZ25lZC1v ZmYtYnk6IEx5dWRlIFBhdWwgPGx5dWRlQHJlZGhhdC5jb20+CkNjOiBEYW5pZWwgVmV0dGVyIDxk YW5pZWxAZmZ3bGwuY2g+CkNjOiBEYXZpZCBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KQ2M6 IEplcnJ5IFp1byA8SmVycnkuWnVvQGFtZC5jb20+CkNjOiBIYXJyeSBXZW50bGFuZCA8aGFycnku d2VudGxhbmRAYW1kLmNvbT4KQ2M6IEp1c3RvbiBMaSA8anVzdG9uLmxpQGludGVsLmNvbT4KCnNx dWFzaCEgZHJtL2RwX21zdDogSW50cm9kdWNlIG5ldyByZWZjb3VudGluZyBzY2hlbWUgZm9yIG1z dGJzIGFuZCBwb3J0cwoKc3F1YXNoISBkcm0vZHBfbXN0OiBJbnRyb2R1Y2UgbmV3IHJlZmNvdW50 aW5nIHNjaGVtZSBmb3IgbXN0YnMgYW5kIHBvcnRzCgoqIHMvKS0xLykgLSAxL2cgLSBjaGVja3Bh dGNoCgpTaWduZWQtb2ZmLWJ5OiBMeXVkZSBQYXVsIDxseXVkZUByZWRoYXQuY29tPgotLS0KIC4u Li9ncHUvZHAtbXN0L3RvcG9sb2d5LWZpZ3VyZS0xLmRvdCAgICAgICAgICB8ICA1MiArKwogLi4u L2dwdS9kcC1tc3QvdG9wb2xvZ3ktZmlndXJlLTIuZG90ICAgICAgICAgIHwgIDU2ICsrCiAuLi4v Z3B1L2RwLW1zdC90b3BvbG9neS1maWd1cmUtMy5kb3QgICAgICAgICAgfCAgNTkgKysrCiBEb2N1 bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0ICAgICAgICAgfCAgMjYgKy0KIGRyaXZl cnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMgICAgICAgICB8IDQ4MiArKysrKysrKysr KysrKystLS0KIGluY2x1ZGUvZHJtL2RybV9kcF9tc3RfaGVscGVyLmggICAgICAgICAgICAgICB8 ICAzMiArLQogNiBmaWxlcyBjaGFuZ2VkLCA2MjkgaW5zZXJ0aW9ucygrKSwgNzggZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9ncHUvZHAtbXN0L3RvcG9sb2d5 LWZpZ3VyZS0xLmRvdAogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vZ3B1L2RwLW1z dC90b3BvbG9neS1maWd1cmUtMi5kb3QKIGNyZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9u L2dwdS9kcC1tc3QvdG9wb2xvZ3ktZmlndXJlLTMuZG90CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRh dGlvbi9ncHUvZHAtbXN0L3RvcG9sb2d5LWZpZ3VyZS0xLmRvdCBiL0RvY3VtZW50YXRpb24vZ3B1 L2RwLW1zdC90b3BvbG9neS1maWd1cmUtMS5kb3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi4xNTdlMTdjN2UwYjAKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0 aW9uL2dwdS9kcC1tc3QvdG9wb2xvZ3ktZmlndXJlLTEuZG90CkBAIC0wLDAgKzEsNTIgQEAKK2Rp Z3JhcGggVCB7CisgICAgLyogTWFrZSBzdXJlIG91ciBwYXlsb2FkcyBhcmUgYWx3YXlzIGRyYXdu IGJlbG93IHRoZSBkcml2ZXIgbm9kZSAqLworICAgIHN1YmdyYXBoIGNsdXN0ZXJfZHJpdmVyIHsK KyAgICAgICAgZmlsbGNvbG9yID0gZ3JleTsKKyAgICAgICAgc3R5bGUgPSBmaWxsZWQ7CisgICAg ICAgIGRyaXZlciAtPiB7cGF5bG9hZDEsIHBheWxvYWQyfSBbZGlyPW5vbmVdOworICAgIH0KKwor ICAgIC8qIERyaXZlciBtYWxsb2MgcmVmZXJlbmNlcyAqLworICAgIGVkZ2UgW3N0eWxlPWRhc2hl ZF07CisgICAgZHJpdmVyIC0+IHBvcnQxOworICAgIGRyaXZlciAtPiBwb3J0MjsKKyAgICBkcml2 ZXIgLT4gcG9ydDM6ZTsKKyAgICBkcml2ZXIgLT4gcG9ydDQ7CisKKyAgICBwYXlsb2FkMTpzIC0+ IHBvcnQxOmU7CisgICAgcGF5bG9hZDI6cyAtPiBwb3J0MzplOworICAgIGVkZ2UgW3N0eWxlPSIi XTsKKworICAgIHN1YmdyYXBoIGNsdXN0ZXJfdG9wb2xvZ3kgeworICAgICAgICBsYWJlbD0iVG9w b2xvZ3kgTWFuYWdlciI7CisgICAgICAgIGxhYmVsbG9jPWJvdHRvbTsKKworICAgICAgICAvKiBU b3BvbG9neSByZWZlcmVuY2VzICovCisgICAgICAgIG1zdGIxIC0+IHtwb3J0MSwgcG9ydDJ9Owor ICAgICAgICBwb3J0MSAtPiBtc3RiMjsKKyAgICAgICAgcG9ydDIgLT4gbXN0YjMgLT4ge3BvcnQz LCBwb3J0NH07CisgICAgICAgIHBvcnQzIC0+IG1zdGI0OworCisgICAgICAgIC8qIE1hbGxvYyBy ZWZlcmVuY2VzICovCisgICAgICAgIGVkZ2UgW3N0eWxlPWRhc2hlZDtkaXI9YmFja107CisgICAg ICAgIG1zdGIxIC0+IHtwb3J0MSwgcG9ydDJ9OworICAgICAgICBwb3J0MSAtPiBtc3RiMjsKKyAg ICAgICAgcG9ydDIgLT4gbXN0YjMgLT4ge3BvcnQzLCBwb3J0NH07CisgICAgICAgIHBvcnQzIC0+ IG1zdGI0OworICAgIH0KKworICAgIGRyaXZlciBbbGFiZWw9IkRSTSBkcml2ZXIiO3N0eWxlPWZp bGxlZDtzaGFwZT1ib3g7ZmlsbGNvbG9yPWxpZ2h0Ymx1ZV07CisKKyAgICBwYXlsb2FkMSBbbGFi ZWw9IlBheWxvYWQgIzEiO3N0eWxlPWZpbGxlZDtzaGFwZT1ib3g7ZmlsbGNvbG9yPWxpZ2h0Ymx1 ZV07CisgICAgcGF5bG9hZDIgW2xhYmVsPSJQYXlsb2FkICMyIjtzdHlsZT1maWxsZWQ7c2hhcGU9 Ym94O2ZpbGxjb2xvcj1saWdodGJsdWVdOworCisgICAgbXN0YjEgW2xhYmVsPSJNU1RCICMxIjtz dHlsZT1maWxsZWQ7ZmlsbGNvbG9yPXBhbGVncmVlbjtzaGFwZT1vdmFsXTsKKyAgICBtc3RiMiBb bGFiZWw9Ik1TVEIgIzIiO3N0eWxlPWZpbGxlZDtmaWxsY29sb3I9cGFsZWdyZWVuO3NoYXBlPW92 YWxdOworICAgIG1zdGIzIFtsYWJlbD0iTVNUQiAjMyI7c3R5bGU9ZmlsbGVkO2ZpbGxjb2xvcj1w YWxlZ3JlZW47c2hhcGU9b3ZhbF07CisgICAgbXN0YjQgW2xhYmVsPSJNU1RCICM0IjtzdHlsZT1m aWxsZWQ7ZmlsbGNvbG9yPXBhbGVncmVlbjtzaGFwZT1vdmFsXTsKKworICAgIHBvcnQxIFtsYWJl bD0iUG9ydCAjMSI7c2hhcGU9b3ZhbF07CisgICAgcG9ydDIgW2xhYmVsPSJQb3J0ICMyIjtzaGFw ZT1vdmFsXTsKKyAgICBwb3J0MyBbbGFiZWw9IlBvcnQgIzMiO3NoYXBlPW92YWxdOworICAgIHBv cnQ0IFtsYWJlbD0iUG9ydCAjNCI7c2hhcGU9b3ZhbF07Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVu dGF0aW9uL2dwdS9kcC1tc3QvdG9wb2xvZ3ktZmlndXJlLTIuZG90IGIvRG9jdW1lbnRhdGlvbi9n cHUvZHAtbXN0L3RvcG9sb2d5LWZpZ3VyZS0yLmRvdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjQyNDNkZDE3MzdjYgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50 YXRpb24vZ3B1L2RwLW1zdC90b3BvbG9neS1maWd1cmUtMi5kb3QKQEAgLTAsMCArMSw1NiBAQAor ZGlncmFwaCBUIHsKKyAgICAvKiBNYWtlIHN1cmUgb3VyIHBheWxvYWRzIGFyZSBhbHdheXMgZHJh d24gYmVsb3cgdGhlIGRyaXZlciBub2RlICovCisgICAgc3ViZ3JhcGggY2x1c3Rlcl9kcml2ZXIg eworICAgICAgICBmaWxsY29sb3IgPSBncmV5OworICAgICAgICBzdHlsZSA9IGZpbGxlZDsKKyAg ICAgICAgZHJpdmVyIC0+IHtwYXlsb2FkMSwgcGF5bG9hZDJ9IFtkaXI9bm9uZV07CisgICAgfQor CisgICAgLyogRHJpdmVyIG1hbGxvYyByZWZlcmVuY2VzICovCisgICAgZWRnZSBbc3R5bGU9ZGFz aGVkXTsKKyAgICBkcml2ZXIgLT4gcG9ydDE7CisgICAgZHJpdmVyIC0+IHBvcnQyOworICAgIGRy aXZlciAtPiBwb3J0MzplOworICAgIGRyaXZlciAtPiBwb3J0NCBbY29sb3I9cmVkXTsKKworICAg IHBheWxvYWQxOnMgLT4gcG9ydDE6ZTsKKyAgICBwYXlsb2FkMjpzIC0+IHBvcnQzOmU7CisgICAg ZWRnZSBbc3R5bGU9IiJdOworCisgICAgc3ViZ3JhcGggY2x1c3Rlcl90b3BvbG9neSB7CisgICAg ICAgIGxhYmVsPSJUb3BvbG9neSBNYW5hZ2VyIjsKKyAgICAgICAgbGFiZWxsb2M9Ym90dG9tOwor CisgICAgICAgIC8qIFRvcG9sb2d5IHJlZmVyZW5jZXMgKi8KKyAgICAgICAgbXN0YjEgLT4ge3Bv cnQxLCBwb3J0Mn07CisgICAgICAgIHBvcnQxIC0+IG1zdGIyOworICAgICAgICBlZGdlIFtjb2xv cj1yZWRdOworICAgICAgICBwb3J0MiAtPiBtc3RiMyAtPiB7cG9ydDMsIHBvcnQ0fTsKKyAgICAg ICAgcG9ydDMgLT4gbXN0YjQ7CisgICAgICAgIGVkZ2UgW2NvbG9yPSIiXTsKKworICAgICAgICAv KiBNYWxsb2MgcmVmZXJlbmNlcyAqLworICAgICAgICBlZGdlIFtzdHlsZT1kYXNoZWQ7ZGlyPWJh Y2tdOworICAgICAgICBtc3RiMSAtPiB7cG9ydDEsIHBvcnQyfTsKKyAgICAgICAgcG9ydDEgLT4g bXN0YjI7CisgICAgICAgIHBvcnQyIC0+IG1zdGIzIC0+IHBvcnQzOworICAgICAgICBlZGdlIFtj b2xvcj1yZWRdOworICAgICAgICBtc3RiMyAtPiBwb3J0NDsKKyAgICAgICAgcG9ydDMgLT4gbXN0 YjQ7CisgICAgfQorCisgICAgbXN0YjEgW2xhYmVsPSJNU1RCICMxIjtzdHlsZT1maWxsZWQ7Zmls bGNvbG9yPXBhbGVncmVlbl07CisgICAgbXN0YjIgW2xhYmVsPSJNU1RCICMyIjtzdHlsZT1maWxs ZWQ7ZmlsbGNvbG9yPXBhbGVncmVlbl07CisgICAgbXN0YjMgW2xhYmVsPSJNU1RCICMzIjtzdHls ZT1maWxsZWQ7ZmlsbGNvbG9yPXBhbGVncmVlbl07CisgICAgbXN0YjQgW2xhYmVsPSJNU1RCICM0 IjtzdHlsZT1maWxsZWQ7ZmlsbGNvbG9yPWdyZXldOworCisgICAgcG9ydDEgW2xhYmVsPSJQb3J0 ICMxIl07CisgICAgcG9ydDIgW2xhYmVsPSJQb3J0ICMyIl07CisgICAgcG9ydDMgW2xhYmVsPSJQ b3J0ICMzIl07CisgICAgcG9ydDQgW2xhYmVsPSJQb3J0ICM0IjtzdHlsZT1maWxsZWQ7ZmlsbGNv bG9yPWdyZXldOworCisgICAgZHJpdmVyIFtsYWJlbD0iRFJNIGRyaXZlciI7c3R5bGU9ZmlsbGVk O3NoYXBlPWJveDtmaWxsY29sb3I9bGlnaHRibHVlXTsKKworICAgIHBheWxvYWQxIFtsYWJlbD0i UGF5bG9hZCAjMSI7c3R5bGU9ZmlsbGVkO3NoYXBlPWJveDtmaWxsY29sb3I9bGlnaHRibHVlXTsK KyAgICBwYXlsb2FkMiBbbGFiZWw9IlBheWxvYWQgIzIiO3N0eWxlPWZpbGxlZDtzaGFwZT1ib3g7 ZmlsbGNvbG9yPWxpZ2h0Ymx1ZV07Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9k cC1tc3QvdG9wb2xvZ3ktZmlndXJlLTMuZG90IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHAtbXN0L3Rv cG9sb2d5LWZpZ3VyZS0zLmRvdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjZjZDc4ZDA2Nzc4YgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2Rw LW1zdC90b3BvbG9neS1maWd1cmUtMy5kb3QKQEAgLTAsMCArMSw1OSBAQAorZGlncmFwaCBUIHsK KyAgICAvKiBNYWtlIHN1cmUgb3VyIHBheWxvYWRzIGFyZSBhbHdheXMgZHJhd24gYmVsb3cgdGhl IGRyaXZlciBub2RlICovCisgICAgc3ViZ3JhcGggY2x1c3Rlcl9kcml2ZXIgeworICAgICAgICBm aWxsY29sb3IgPSBncmV5OworICAgICAgICBzdHlsZSA9IGZpbGxlZDsKKyAgICAgICAgZWRnZSBb ZGlyPW5vbmVdOworICAgICAgICBkcml2ZXIgLT4gcGF5bG9hZDE7CisgICAgICAgIGRyaXZlciAt PiBwYXlsb2FkMiBbcGVud2lkdGg9M107CisgICAgICAgIGVkZ2UgW2Rpcj0iIl07CisgICAgfQor CisgICAgLyogRHJpdmVyIG1hbGxvYyByZWZlcmVuY2VzICovCisgICAgZWRnZSBbc3R5bGU9ZGFz aGVkXTsKKyAgICBkcml2ZXIgLT4gcG9ydDE7CisgICAgZHJpdmVyIC0+IHBvcnQyOworICAgIGRy aXZlciAtPiBwb3J0MzplOworICAgIGRyaXZlciAtPiBwb3J0NCBbY29sb3I9Z3JleV07CisgICAg cGF5bG9hZDE6cyAtPiBwb3J0MTplOworICAgIHBheWxvYWQyOnMgLT4gcG9ydDM6ZSBbcGVud2lk dGg9M107CisgICAgZWRnZSBbc3R5bGU9IiJdOworCisgICAgc3ViZ3JhcGggY2x1c3Rlcl90b3Bv bG9neSB7CisgICAgICAgIGxhYmVsPSJUb3BvbG9neSBNYW5hZ2VyIjsKKyAgICAgICAgbGFiZWxs b2M9Ym90dG9tOworCisgICAgICAgIC8qIFRvcG9sb2d5IHJlZmVyZW5jZXMgKi8KKyAgICAgICAg bXN0YjEgLT4ge3BvcnQxLCBwb3J0Mn07CisgICAgICAgIHBvcnQxIC0+IG1zdGIyOworICAgICAg ICBlZGdlIFtjb2xvcj1ncmV5XTsKKyAgICAgICAgcG9ydDIgLT4gbXN0YjMgLT4ge3BvcnQzLCBw b3J0NH07CisgICAgICAgIHBvcnQzIC0+IG1zdGI0OworICAgICAgICBlZGdlIFtjb2xvcj0iIl07 CisKKyAgICAgICAgLyogTWFsbG9jIHJlZmVyZW5jZXMgKi8KKyAgICAgICAgZWRnZSBbc3R5bGU9 ZGFzaGVkO2Rpcj1iYWNrXTsKKyAgICAgICAgbXN0YjEgLT4ge3BvcnQxLCBwb3J0Mn07CisgICAg ICAgIHBvcnQxIC0+IG1zdGIyOworICAgICAgICBwb3J0MiAtPiBtc3RiMyBbcGVud2lkdGg9M107 CisgICAgICAgIG1zdGIzIC0+IHBvcnQzIFtwZW53aWR0aD0zXTsKKyAgICAgICAgZWRnZSBbY29s b3I9Z3JleV07CisgICAgICAgIG1zdGIzIC0+IHBvcnQ0OworICAgICAgICBwb3J0MyAtPiBtc3Ri NDsKKyAgICB9CisKKyAgICBtc3RiMSBbbGFiZWw9Ik1TVEIgIzEiO3N0eWxlPWZpbGxlZDtmaWxs Y29sb3I9cGFsZWdyZWVuXTsKKyAgICBtc3RiMiBbbGFiZWw9Ik1TVEIgIzIiO3N0eWxlPWZpbGxl ZDtmaWxsY29sb3I9cGFsZWdyZWVuXTsKKyAgICBtc3RiMyBbbGFiZWw9Ik1TVEIgIzMiO3N0eWxl PWZpbGxlZDtmaWxsY29sb3I9cGFsZWdyZWVuO3BlbndpZHRoPTNdOworICAgIG1zdGI0IFtsYWJl bD0iTVNUQiAjNCI7c3R5bGU9ZmlsbGVkO2ZpbGxjb2xvcj1ncmV5XTsKKworICAgIHBvcnQxIFts YWJlbD0iUG9ydCAjMSJdOworICAgIHBvcnQyIFtsYWJlbD0iUG9ydCAjMiI7cGVud2lkdGg9NV07 CisgICAgcG9ydDMgW2xhYmVsPSJQb3J0ICMzIjtwZW53aWR0aD0zXTsKKyAgICBwb3J0NCBbbGFi ZWw9IlBvcnQgIzQiO3N0eWxlPWZpbGxlZDtmaWxsY29sb3I9Z3JleV07CisKKyAgICBkcml2ZXIg W2xhYmVsPSJEUk0gZHJpdmVyIjtzdHlsZT1maWxsZWQ7c2hhcGU9Ym94O2ZpbGxjb2xvcj1saWdo dGJsdWVdOworCisgICAgcGF5bG9hZDEgW2xhYmVsPSJQYXlsb2FkICMxIjtzdHlsZT1maWxsZWQ7 c2hhcGU9Ym94O2ZpbGxjb2xvcj1saWdodGJsdWVdOworICAgIHBheWxvYWQyIFtsYWJlbD0iUGF5 bG9hZCAjMiI7c3R5bGU9ZmlsbGVkO3NoYXBlPWJveDtmaWxsY29sb3I9bGlnaHRibHVlO3Blbndp ZHRoPTNdOworfQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJz LnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QKaW5kZXggYjQyMmVi OGVkZjE2Li43YTNmYzU2OWJjNjggMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1r bXMtaGVscGVycy5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJz dApAQCAtMjA4LDE4ICsyMDgsNDAgQEAgRGlzcGxheSBQb3J0IER1YWwgTW9kZSBBZGFwdG9yIEhl bHBlciBGdW5jdGlvbnMgUmVmZXJlbmNlCiAuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJt L2RybV9kcF9kdWFsX21vZGVfaGVscGVyLmMKICAgIDpleHBvcnQ6CiAKLURpc3BsYXkgUG9ydCBN U1QgSGVscGVyIEZ1bmN0aW9ucyBSZWZlcmVuY2UKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KK0Rpc3BsYXkgUG9ydCBNU1QgSGVscGVycworPT09PT09PT09PT09 PT09PT09PT09PT09CisKK092ZXJ2aWV3CistLS0tLS0tLQogCiAuLiBrZXJuZWwtZG9jOjogZHJp dmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYwogICAgOmRvYzogZHAgbXN0IGhlbHBl cgogCisuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3ku YworICAgOmRvYzogQnJhbmNoIGRldmljZSBhbmQgcG9ydCByZWZjb3VudGluZworCitGdW5jdGlv bnMgUmVmZXJlbmNlCistLS0tLS0tLS0tLS0tLS0tLS0tCisKIC4uIGtlcm5lbC1kb2M6OiBpbmNs dWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oCiAgICA6aW50ZXJuYWw6CiAKIC4uIGtlcm5lbC1k b2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jCiAgICA6ZXhwb3J0Ogog CitUb3BvbG9neSBMaWZldGltZSBJbnRlcm5hbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorCitUaGVzZSBmdW5jdGlvbnMgYXJlbid0IGV4cG9ydGVkIHRvIGRyaXZlcnMsIGJ1dCBhcmUg ZG9jdW1lbnRlZCBoZXJlIHRvIGhlbHAgbWFrZQordGhlIE1TVCB0b3BvbG9neSBoZWxwZXJzIGVh c2llciB0byB1bmRlcnN0YW5kCisKKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJt X2RwX21zdF90b3BvbG9neS5jCisgICA6ZnVuY3Rpb25zOiBkcm1fZHBfbXN0X3RvcG9sb2d5X3Ry eV9nZXRfbXN0YiBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9tc3RiCisgICAgICAgICAgICAgICBk cm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9tc3RiCisgICAgICAgICAgICAgICBkcm1fZHBfbXN0X3Rv cG9sb2d5X3RyeV9nZXRfcG9ydCBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9wb3J0CisgICAgICAg ICAgICAgICBkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0CisgICAgICAgICAgICAgICBkcm1f ZHBfbXN0X2dldF9tc3RiX21hbGxvYyBkcm1fZHBfbXN0X3B1dF9tc3RiX21hbGxvYworCiBNSVBJ IERTSSBIZWxwZXIgRnVuY3Rpb25zIFJlZmVyZW5jZQogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9w b2xvZ3kuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMKaW5kZXggNmY5 YjIxMTA2OWE3Li5jMGRjMjBmYmQ1NWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f ZHBfbXN0X3RvcG9sb2d5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xv Z3kuYwpAQCAtODUwLDQ2ICs4NTAsMjExIEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2RwX21zdF9icmFu Y2ggKmRybV9kcF9hZGRfbXN0X2JyYW5jaF9kZXZpY2UodTggbGN0LCB1OCAqcmFkKQogCWlmIChs Y3QgPiAxKQogCQltZW1jcHkobXN0Yi0+cmFkLCByYWQsIGxjdCAvIDIpOwogCUlOSVRfTElTVF9I RUFEKCZtc3RiLT5wb3J0cyk7Ci0Ja3JlZl9pbml0KCZtc3RiLT5rcmVmKTsKKwlrcmVmX2luaXQo Jm1zdGItPnRvcG9sb2d5X2tyZWYpOworCWtyZWZfaW5pdCgmbXN0Yi0+bWFsbG9jX2tyZWYpOwog CXJldHVybiBtc3RiOwogfQogCi1zdGF0aWMgdm9pZCBkcm1fZHBfZnJlZV9tc3RfcG9ydChzdHJ1 Y3Qga3JlZiAqa3JlZik7Ci0KIHN0YXRpYyB2b2lkIGRybV9kcF9mcmVlX21zdF9icmFuY2hfZGV2 aWNlKHN0cnVjdCBrcmVmICprcmVmKQogewotCXN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0 YiA9IGNvbnRhaW5lcl9vZihrcmVmLCBzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2gsIGtyZWYpOwot CWlmIChtc3RiLT5wb3J0X3BhcmVudCkgewotCQlpZiAobGlzdF9lbXB0eSgmbXN0Yi0+cG9ydF9w YXJlbnQtPm5leHQpKQotCQkJa3JlZl9wdXQoJm1zdGItPnBvcnRfcGFyZW50LT5rcmVmLCBkcm1f ZHBfZnJlZV9tc3RfcG9ydCk7Ci0JfQorCXN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YiA9 CisJCWNvbnRhaW5lcl9vZihrcmVmLCBzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2gsIG1hbGxvY19r cmVmKTsKKworCWlmIChtc3RiLT5wb3J0X3BhcmVudCkKKwkJZHJtX2RwX21zdF9wdXRfcG9ydF9t YWxsb2MobXN0Yi0+cG9ydF9wYXJlbnQpOworCiAJa2ZyZWUobXN0Yik7CiB9CiAKKy8qKgorICog RE9DOiBCcmFuY2ggZGV2aWNlIGFuZCBwb3J0IHJlZmNvdW50aW5nCisgKgorICogVG9wb2xvZ3kg cmVmY291bnQgb3ZlcnZpZXcKKyAqIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisgKgorICog VGhlIHJlZmNvdW50aW5nIHNjaGVtZXMgZm9yICZzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggYW5k ICZzdHJ1Y3QKKyAqIGRybV9kcF9tc3RfcG9ydCBhcmUgc29tZXdoYXQgdW51c3VhbC4gQm90aCBw b3J0cyBhbmQgYnJhbmNoIGRldmljZXMgaGF2ZQorICogdHdvIGRpZmZlcmVudCBraW5kcyBvZiBy ZWZjb3VudHM6IHRvcG9sb2d5IHJlZmNvdW50cywgYW5kIG1hbGxvYyByZWZjb3VudHMuCisgKgor ICogVG9wb2xvZ3kgcmVmY291bnRzIGFyZSBub3QgZXhwb3NlZCB0byBkcml2ZXJzLCBhbmQgYXJl IGhhbmRsZWQgaW50ZXJuYWxseQorICogYnkgdGhlIERQIE1TVCBoZWxwZXJzLiBUaGUgaGVscGVy cyB1c2UgdGhlbSBpbiBvcmRlciB0byBwcmV2ZW50IHRoZQorICogaW4tbWVtb3J5IHRvcG9sb2d5 IHN0YXRlIGZyb20gYmVpbmcgY2hhbmdlZCBpbiB0aGUgbWlkZGxlIG9mIGNyaXRpY2FsCisgKiBv cGVyYXRpb25zIGxpa2UgY2hhbmdpbmcgdGhlIGludGVybmFsIHN0YXRlIG9mIHBheWxvYWQgYWxs b2NhdGlvbnMuIFRoaXMKKyAqIG1lYW5zIGVhY2ggYnJhbmNoIGFuZCBwb3J0IHdpbGwgYmUgY29u c2lkZXJlZCB0byBiZSBjb25uZWN0ZWQgdG8gdGhlIHJlc3QKKyAqIG9mIHRoZSB0b3BvbG9neSB1 bnRpbCBpdCdzIHRvcG9sb2d5IHJlZmNvdW50IHJlYWNoZXMgemVyby4gQWRkaXRpb25hbGx5LAor ICogZm9yIHBvcnRzIHRoaXMgbWVhbnMgdGhhdCB0aGVpciBhc3NvY2lhdGVkICZzdHJ1Y3QgZHJt X2Nvbm5lY3RvciB3aWxsIHN0YXkKKyAqIHJlZ2lzdGVyZWQgd2l0aCB1c2Vyc3BhY2UgdW50aWwg dGhlIHBvcnQncyByZWZjb3VudCByZWFjaGVzIDAuCisgKgorICogTWFsbG9jIHJlZmNvdW50IG92 ZXJ2aWV3CisgKiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAqCisgKiBNYWxsb2MgcmVmZXJl bmNlcyBhcmUgdXNlZCB0byBrZWVwIGEgJnN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgb3IgJnN0cnVj dAorICogZHJtX2RwX21zdF9icmFuY2ggYWxsb2NhdGVkIGV2ZW4gYWZ0ZXIgYWxsIG9mIGl0cyB0 b3BvbG9neSByZWZlcmVuY2VzIGhhdmUKKyAqIGJlZW4gZHJvcHBlZCwgc28gdGhhdCB0aGUgZHJp dmVyIG9yIE1TVCBoZWxwZXJzIGNhbiBzYWZlbHkgYWNjZXNzIGVhY2gKKyAqIGJyYW5jaCdzIGxh c3Qga25vd24gc3RhdGUgYmVmb3JlIGl0IHdhcyBkaXNjb25uZWN0ZWQgZnJvbSB0aGUgdG9wb2xv Z3kuCisgKiBXaGVuIHRoZSBtYWxsb2MgcmVmY291bnQgb2YgYSBwb3J0IG9yIGJyYW5jaCByZWFj aGVzIDAsIHRoZSBtZW1vcnkKKyAqIGFsbG9jYXRpb24gY29udGFpbmluZyB0aGUgJnN0cnVjdCBk cm1fZHBfbXN0X2JyYW5jaCBvciAmc3RydWN0CisgKiBkcm1fZHBfbXN0X3BvcnQgcmVzcGVjdGl2 ZWx5IHdpbGwgYmUgZnJlZWQuCisgKgorICogRm9yICZzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2gs IG1hbGxvYyByZWZjb3VudHMgYXJlIG5vdCBjdXJyZW50bHkgZXhwb3NlZAorICogdG8gZHJpdmVy cy4gQXMgb2Ygd3JpdGluZyB0aGlzIGRvY3VtZW50YXRpb24sIHRoZXJlIGFyZSBubyBkcml2ZXJz IHRoYXQKKyAqIGhhdmUgYSB1c2VjYXNlIGZvciBhY2Nlc3NpbmcgJnN0cnVjdCBkcm1fZHBfbXN0 X2JyYW5jaCBvdXRzaWRlIG9mIHRoZSBNU1QKKyAqIGhlbHBlcnMuIEV4cG9zaW5nIHRoaXMgQVBJ IHRvIGRyaXZlcnMgaW4gYSByYWNlLWZyZWUgbWFubmVyIHdvdWxkIHRha2UgbW9yZQorICogdHdl YWtpbmcgb2YgdGhlIHJlZmNvdW50aW5nIHNjaGVtZSwgaG93ZXZlciBwYXRjaGVzIGFyZSB3ZWxj b21lIHByb3ZpZGVkCisgKiB0aGVyZSBpcyBhIGxlZ2l0aW1hdGUgZHJpdmVyIHVzZWNhc2UgZm9y IHRoaXMuCisgKgorICogUmVmY291bnQgcmVsYXRpb25zaGlwcyBpbiBhIHRvcG9sb2d5CisgKiB+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAqCisgKiBMZXQncyB0YWtlIGEg bG9vayBhdCB3aHkgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRvcG9sb2d5IGFuZCBtYWxsb2MK KyAqIHJlZmNvdW50cyBpcyBkZXNpZ25lZCB0aGUgd2F5IGl0IGlzLgorICoKKyAqIC4uIGtlcm5l bC1maWd1cmU6OiBkcC1tc3QvdG9wb2xvZ3ktZmlndXJlLTEuZG90CisgKgorICogICAgQW4gZXhh bXBsZSBvZiB0b3BvbG9neSBhbmQgbWFsbG9jIHJlZnMgaW4gYSBEUCBNU1QgdG9wb2xvZ3kgd2l0 aCB0d28KKyAqICAgIGFjdGl2ZSBwYXlsb2Fkcy4gVG9wb2xvZ3kgcmVmY291bnQgaW5jcmVtZW50 cyBhcmUgaW5kaWNhdGVkIGJ5IHNvbGlkCisgKiAgICBsaW5lcywgYW5kIG1hbGxvYyByZWZjb3Vu dCBpbmNyZW1lbnRzIGFyZSBpbmRpY2F0ZWQgYnkgZGFzaGVkIGxpbmVzLgorICogICAgRWFjaCBz dGFydHMgZnJvbSB0aGUgYnJhbmNoIHdoaWNoIGluY3JlbWVudGVkIHRoZSByZWZjb3VudCwgYW5k IGVuZHMgYXQKKyAqICAgIHRoZSBicmFuY2ggdG8gd2hpY2ggdGhlIHJlZmNvdW50IGJlbG9uZ3Mg dG8uCisgKgorICogQXMgeW91IGNhbiBzZWUgaW4gZmlndXJlIDEsIGV2ZXJ5IGJyYW5jaCBpbmNy ZW1lbnRzIHRoZSB0b3BvbG9neSByZWZjb3VudAorICogb2YgaXQncyBjaGlsZHJlbiwgYW5kIGlu Y3JlbWVudHMgdGhlIG1hbGxvYyByZWZjb3VudCBvZiBpdCdzIHBhcmVudC4KKyAqIEFkZGl0aW9u YWxseSwgZXZlcnkgcGF5bG9hZCBpbmNyZW1lbnRzIHRoZSBtYWxsb2MgcmVmY291bnQgb2YgaXQn cyBhc3NpZ25lZAorICogcG9ydCBieSAxLgorICoKKyAqIFNvLCB3aGF0IHdvdWxkIGhhcHBlbiBp ZiBNU1RCICMzIGZyb20gdGhlIGFib3ZlIGZpZ3VyZSB3YXMgdW5wbHVnZ2VkIGZyb20KKyAqIHRo ZSBzeXN0ZW0sIGJ1dCB0aGUgZHJpdmVyIGhhZG4ndCB5ZXQgcmVtb3ZlZCBwYXlsb2FkICMyIGZy b20gcG9ydCAjMz8gVGhlCisgKiB0b3BvbG9neSB3b3VsZCBzdGFydCB0byBsb29rIGxpa2UgZmln dXJlIDIuCisgKgorICogLi4ga2VybmVsLWZpZ3VyZTo6IGRwLW1zdC90b3BvbG9neS1maWd1cmUt Mi5kb3QKKyAqCisgKiAgICBQb3J0cyBhbmQgYnJhbmNoIGRldmljZXMgd2hpY2ggaGF2ZSBiZWVu IHJlbGVhc2VkIGZyb20gbWVtb3J5IGFyZQorICogICAgY29sb3JlZCBncmV5LCBhbmQgcmVmZXJl bmNlcyB3aGljaCBoYXZlIGJlZW4gcmVtb3ZlZCBhcmUgY29sb3JlZCByZWQuCisgKgorICogV2hl bmV2ZXIgYSBwb3J0IG9yIGJyYW5jaCBkZXZpY2UncyB0b3BvbG9neSByZWZjb3VudCByZWFjaGVz IHplcm8sIGl0IHdpbGwKKyAqIGRlY3JlbWVudCB0aGUgdG9wb2xvZ3kgcmVmY291bnRzIG9mIGFs bCBpdHMgY2hpbGRyZW4sIHRoZSBtYWxsb2MgcmVmY291bnQKKyAqIG9mIGl0cyBwYXJlbnQsIGFu ZCBmaW5hbGx5IGl0cyBvd24gbWFsbG9jIHJlZmNvdW50LiBGb3IgTVNUQiAjNCBhbmQgcG9ydAor ICogIzQsIHRoaXMgbWVhbnMgdGhleSBib3RoIGhhdmUgYmVlbiBkaXNjb25uZWN0ZWQgZnJvbSB0 aGUgdG9wb2xvZ3kgYW5kIGZyZWVkCisgKiBmcm9tIG1lbW9yeS4gQnV0LCBiZWNhdXNlIHBheWxv YWQgIzIgaXMgc3RpbGwgaG9sZGluZyBhIHJlZmVyZW5jZSB0byBwb3J0CisgKiAjMywgcG9ydCAj MyBpcyByZW1vdmVkIGZyb20gdGhlIHRvcG9sb2d5IGJ1dCBpdCdzICZzdHJ1Y3QgZHJtX2RwX21z dF9wb3J0CisgKiBpcyBzdGlsbCBhY2Nlc3NpYmxlIGZyb20gbWVtb3J5LiBUaGlzIGFsc28gbWVh bnMgcG9ydCAjMyBoYXMgbm90IHlldAorICogZGVjcmVtZW50ZWQgdGhlIG1hbGxvYyByZWZjb3Vu dCBvZiBNU1RCICMzLCBzbyBpdCdzICZzdHJ1Y3QKKyAqIGRybV9kcF9tc3RfYnJhbmNoIHdpbGwg YWxzbyBzdGF5IGFsbG9jYXRlZCBpbiBtZW1vcnkgdW50aWwgcG9ydCAjMydzCisgKiBtYWxsb2Mg cmVmY291bnQgcmVhY2hlcyAwLgorICoKKyAqIFRoaXMgcmVsYXRpb25zaGlwIGlzIG5lY2Vzc2Fy eSBiZWNhdXNlIGluIG9yZGVyIHRvIHJlbGVhc2UgcGF5bG9hZCAjMiwgd2UKKyAqIG5lZWQgdG8g YmUgYWJsZSB0byBmaWd1cmUgb3V0IHRoZSBsYXN0IHJlbGF0aXZlIG9mIHBvcnQgIzMgdGhhdCdz IHN0aWxsCisgKiBjb25uZWN0ZWQgdG8gdGhlIHRvcG9sb2d5LiBJbiB0aGlzIGNhc2UsIHdlIHdv dWxkIHRyYXZlbCB1cCB0aGUgdG9wb2xvZ3kgYXMKKyAqIHNob3duIGluIGZpZ3VyZSAzLgorICoK KyAqIC4uIGtlcm5lbC1maWd1cmU6OiBkcC1tc3QvdG9wb2xvZ3ktZmlndXJlLTMuZG90CisgKgor ICogQW5kIGZpbmFsbHksIHJlbW92ZSBwYXlsb2FkICMyIGJ5IGNvbW11bmljYXRpbmcgd2l0aCBw b3J0ICMyIHRocm91Z2gKKyAqIHNpZGViYW5kIHRyYW5zYWN0aW9ucy4KKyAqLworCisvKioKKyAq IGRybV9kcF9tc3RfZ2V0X21zdGJfbWFsbG9jKCkgLSBJbmNyZW1lbnQgdGhlIG1hbGxvYyByZWZj b3VudCBvZiBhIGJyYW5jaAorICogZGV2aWNlCisgKiBAbXN0YjogVGhlICZzdHJ1Y3QgZHJtX2Rw X21zdF9icmFuY2ggdG8gaW5jcmVtZW50IHRoZSBtYWxsb2MgcmVmY291bnQgb2YKKyAqCisgKiBJ bmNyZW1lbnRzICZkcm1fZHBfbXN0X2JyYW5jaC5tYWxsb2Nfa3JlZi4gV2hlbgorICogJmRybV9k cF9tc3RfYnJhbmNoLm1hbGxvY19rcmVmIHJlYWNoZXMgMCwgdGhlIG1lbW9yeSBhbGxvY2F0aW9u IGZvciBAbXN0YgorICogd2lsbCBiZSByZWxlYXNlZCBhbmQgQG1zdGIgbWF5IG5vIGxvbmdlciBi ZSB1c2VkLgorICoKKyAqIFNlZSBhbHNvOiBkcm1fZHBfbXN0X3B1dF9tc3RiX21hbGxvYygpCisg Ki8KK3N0YXRpYyB2b2lkCitkcm1fZHBfbXN0X2dldF9tc3RiX21hbGxvYyhzdHJ1Y3QgZHJtX2Rw X21zdF9icmFuY2ggKm1zdGIpCit7CisJa3JlZl9nZXQoJm1zdGItPm1hbGxvY19rcmVmKTsKKwlE Uk1fREVCVUcoIm1zdGIgJXAgKCVkKVxuIiwgbXN0Yiwga3JlZl9yZWFkKCZtc3RiLT5tYWxsb2Nf a3JlZikpOworfQorCisvKioKKyAqIGRybV9kcF9tc3RfcHV0X21zdGJfbWFsbG9jKCkgLSBEZWNy ZW1lbnQgdGhlIG1hbGxvYyByZWZjb3VudCBvZiBhIGJyYW5jaAorICogZGV2aWNlCisgKiBAbXN0 YjogVGhlICZzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggdG8gZGVjcmVtZW50IHRoZSBtYWxsb2Mg cmVmY291bnQgb2YKKyAqCisgKiBEZWNyZW1lbnRzICZkcm1fZHBfbXN0X2JyYW5jaC5tYWxsb2Nf a3JlZi4gV2hlbgorICogJmRybV9kcF9tc3RfYnJhbmNoLm1hbGxvY19rcmVmIHJlYWNoZXMgMCwg dGhlIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBAbXN0YgorICogd2lsbCBiZSByZWxlYXNlZCBhbmQg QG1zdGIgbWF5IG5vIGxvbmdlciBiZSB1c2VkLgorICoKKyAqIFNlZSBhbHNvOiBkcm1fZHBfbXN0 X2dldF9tc3RiX21hbGxvYygpCisgKi8KK3N0YXRpYyB2b2lkCitkcm1fZHBfbXN0X3B1dF9tc3Ri X21hbGxvYyhzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKm1zdGIpCit7CisJRFJNX0RFQlVHKCJt c3RiICVwICglZClcbiIsIG1zdGIsIGtyZWZfcmVhZCgmbXN0Yi0+bWFsbG9jX2tyZWYpIC0gMSk7 CisJa3JlZl9wdXQoJm1zdGItPm1hbGxvY19rcmVmLCBkcm1fZHBfZnJlZV9tc3RfYnJhbmNoX2Rl dmljZSk7Cit9CisKK3N0YXRpYyB2b2lkIGRybV9kcF9mcmVlX21zdF9wb3J0KHN0cnVjdCBrcmVm ICprcmVmKQoreworCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQgPQorCQljb250YWluZXJf b2Yoa3JlZiwgc3RydWN0IGRybV9kcF9tc3RfcG9ydCwgbWFsbG9jX2tyZWYpOworCisJZHJtX2Rw X21zdF9wdXRfbXN0Yl9tYWxsb2MocG9ydC0+cGFyZW50KTsKKwlrZnJlZShwb3J0KTsKK30KKwor LyoqCisgKiBkcm1fZHBfbXN0X2dldF9wb3J0X21hbGxvYygpIC0gSW5jcmVtZW50IHRoZSBtYWxs b2MgcmVmY291bnQgb2YgYW4gTVNUIHBvcnQKKyAqIEBwb3J0OiBUaGUgJnN0cnVjdCBkcm1fZHBf bXN0X3BvcnQgdG8gaW5jcmVtZW50IHRoZSBtYWxsb2MgcmVmY291bnQgb2YKKyAqCisgKiBJbmNy ZW1lbnRzICZkcm1fZHBfbXN0X3BvcnQubWFsbG9jX2tyZWYuIFdoZW4gJmRybV9kcF9tc3RfcG9y dC5tYWxsb2Nfa3JlZgorICogcmVhY2hlcyAwLCB0aGUgbWVtb3J5IGFsbG9jYXRpb24gZm9yIEBw b3J0IHdpbGwgYmUgcmVsZWFzZWQgYW5kIEBwb3J0IG1heQorICogbm8gbG9uZ2VyIGJlIHVzZWQu CisgKgorICogQmVjYXVzZSBAcG9ydCBjb3VsZCBwb3RlbnRpYWxseSBiZSBmcmVlZCBhdCBhbnkg dGltZSBieSB0aGUgRFAgTVNUIGhlbHBlcnMKKyAqIGlmICZkcm1fZHBfbXN0X3BvcnQubWFsbG9j X2tyZWYgcmVhY2hlcyAwLCBpbmNsdWRpbmcgZHVyaW5nIGEgY2FsbCB0byB0aGlzCisgKiBmdW5j dGlvbiwgZHJpdmVycyB0aGF0IHdoaWNoIHRvIG1ha2UgdXNlIG9mICZzdHJ1Y3QgZHJtX2RwX21z dF9wb3J0IHNob3VsZAorICogZW5zdXJlIHRoYXQgdGhleSBncmFiIGF0IGxlYXN0IG9uZSBtYWlu IG1hbGxvYyByZWZlcmVuY2UgdG8gdGhlaXIgTVNUIHBvcnRzCisgKiBpbiAmZHJtX2RwX21zdF90 b3BvbG9neV9jYnMuYWRkX2Nvbm5lY3Rvci4gVGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgYmVmb3Jl CisgKiB0aGVyZSBpcyBhbnkgY2hhbmNlIGZvciAmZHJtX2RwX21zdF9wb3J0Lm1hbGxvY19rcmVm IHRvIHJlYWNoIDAuCisgKgorICogU2VlIGFsc286IGRybV9kcF9tc3RfcHV0X3BvcnRfbWFsbG9j KCkKKyAqLwordm9pZAorZHJtX2RwX21zdF9nZXRfcG9ydF9tYWxsb2Moc3RydWN0IGRybV9kcF9t c3RfcG9ydCAqcG9ydCkKK3sKKwlrcmVmX2dldCgmcG9ydC0+bWFsbG9jX2tyZWYpOworCURSTV9E RUJVRygicG9ydCAlcCAoJWQpXG4iLCBwb3J0LCBrcmVmX3JlYWQoJnBvcnQtPm1hbGxvY19rcmVm KSk7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9kcF9tc3RfZ2V0X3BvcnRfbWFsbG9jKTsKKworLyoq CisgKiBkcm1fZHBfbXN0X3B1dF9wb3J0X21hbGxvYygpIC0gRGVjcmVtZW50IHRoZSBtYWxsb2Mg cmVmY291bnQgb2YgYW4gTVNUIHBvcnQKKyAqIEBwb3J0OiBUaGUgJnN0cnVjdCBkcm1fZHBfbXN0 X3BvcnQgdG8gZGVjcmVtZW50IHRoZSBtYWxsb2MgcmVmY291bnQgb2YKKyAqCisgKiBEZWNyZW1l bnRzICZkcm1fZHBfbXN0X3BvcnQubWFsbG9jX2tyZWYuIFdoZW4gJmRybV9kcF9tc3RfcG9ydC5t YWxsb2Nfa3JlZgorICogcmVhY2hlcyAwLCB0aGUgbWVtb3J5IGFsbG9jYXRpb24gZm9yIEBwb3J0 IHdpbGwgYmUgcmVsZWFzZWQgYW5kIEBwb3J0IG1heQorICogbm8gbG9uZ2VyIGJlIHVzZWQuCisg KgorICogU2VlIGFsc286IGRybV9kcF9tc3RfZ2V0X3BvcnRfbWFsbG9jKCkKKyAqLwordm9pZAor ZHJtX2RwX21zdF9wdXRfcG9ydF9tYWxsb2Moc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCkK K3sKKwlEUk1fREVCVUcoInBvcnQgJXAgKCVkKVxuIiwgcG9ydCwga3JlZl9yZWFkKCZwb3J0LT5t YWxsb2Nfa3JlZikgLSAxKTsKKwlrcmVmX3B1dCgmcG9ydC0+bWFsbG9jX2tyZWYsIGRybV9kcF9m cmVlX21zdF9wb3J0KTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2RwX21zdF9wdXRfcG9ydF9tYWxs b2MpOworCiBzdGF0aWMgdm9pZCBkcm1fZHBfZGVzdHJveV9tc3RfYnJhbmNoX2RldmljZShzdHJ1 Y3Qga3JlZiAqa3JlZikKIHsKLQlzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKm1zdGIgPSBjb250 YWluZXJfb2Yoa3JlZiwgc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoLCBrcmVmKTsKKwlzdHJ1Y3Qg ZHJtX2RwX21zdF9icmFuY2ggKm1zdGIgPQorCQljb250YWluZXJfb2Yoa3JlZiwgc3RydWN0IGRy bV9kcF9tc3RfYnJhbmNoLCB0b3BvbG9neV9rcmVmKTsKKwlzdHJ1Y3QgZHJtX2RwX21zdF90b3Bv bG9neV9tZ3IgKm1nciA9IG1zdGItPm1ncjsKIAlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0 LCAqdG1wOwogCWJvb2wgd2FrZV90eCA9IGZhbHNlOwogCi0JLyoKLQkgKiBpbml0IGtyZWYgYWdh aW4gdG8gYmUgdXNlZCBieSBwb3J0cyB0byByZW1vdmUgbXN0IGJyYW5jaCB3aGVuIGl0IGlzCi0J ICogbm90IG5lZWRlZCBhbnltb3JlCi0JICovCi0Ja3JlZl9pbml0KGtyZWYpOwotCi0JaWYgKG1z dGItPnBvcnRfcGFyZW50ICYmIGxpc3RfZW1wdHkoJm1zdGItPnBvcnRfcGFyZW50LT5uZXh0KSkK LQkJa3JlZl9nZXQoJm1zdGItPnBvcnRfcGFyZW50LT5rcmVmKTsKLQotCS8qCi0JICogZGVzdHJv eSBhbGwgcG9ydHMgLSBkb24ndCBuZWVkIGxvY2sKLQkgKiBhcyB0aGVyZSBhcmUgbm8gbW9yZSBy ZWZlcmVuY2VzIHRvIHRoZSBtc3QgYnJhbmNoCi0JICogZGV2aWNlIGF0IHRoaXMgcG9pbnQuCi0J ICovCisJbXV0ZXhfbG9jaygmbWdyLT5sb2NrKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUo cG9ydCwgdG1wLCAmbXN0Yi0+cG9ydHMsIG5leHQpIHsKIAkJbGlzdF9kZWwoJnBvcnQtPm5leHQp OwogCQlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0KHBvcnQpOwogCX0KKwltdXRleF91bmxv Y2soJm1nci0+bG9jayk7CiAKIAkvKiBkcm9wIGFueSB0eCBzbG90cyBtc2cgKi8KIAltdXRleF9s b2NrKCZtc3RiLT5tZ3ItPnFsb2NrKTsKQEAgLTkwOCwxNCArMTA3Myw4MyBAQCBzdGF0aWMgdm9p ZCBkcm1fZHBfZGVzdHJveV9tc3RfYnJhbmNoX2RldmljZShzdHJ1Y3Qga3JlZiAqa3JlZikKIAlp ZiAod2FrZV90eCkKIAkJd2FrZV91cF9hbGwoJm1zdGItPm1nci0+dHhfd2FpdHEpOwogCi0Ja3Jl Zl9wdXQoa3JlZiwgZHJtX2RwX2ZyZWVfbXN0X2JyYW5jaF9kZXZpY2UpOworCWRybV9kcF9tc3Rf cHV0X21zdGJfbWFsbG9jKG1zdGIpOworfQorCisvKioKKyAqIGRybV9kcF9tc3RfdG9wb2xvZ3lf dHJ5X2dldF9tc3RiKCkgLSBJbmNyZW1lbnQgdGhlIHRvcG9sb2d5IHJlZmNvdW50IG9mIGEKKyAq IGJyYW5jaCBkZXZpY2UgdW5sZXNzIGl0cyB6ZXJvCisgKiBAbXN0YjogJnN0cnVjdCBkcm1fZHBf bXN0X2JyYW5jaCB0byBpbmNyZW1lbnQgdGhlIHRvcG9sb2d5IHJlZmNvdW50IG9mCisgKgorICog QXR0ZW1wdHMgdG8gZ3JhYiBhIHRvcG9sb2d5IHJlZmVyZW5jZSB0byBAbXN0YiwgaWYgaXQgaGFz bid0IHlldCBiZWVuCisgKiByZW1vdmVkIGZyb20gdGhlIHRvcG9sb2d5IChlLmcuICZkcm1fZHBf bXN0X2JyYW5jaC50b3BvbG9neV9rcmVmIGhhcworICogcmVhY2hlZCAwKS4gSG9sZGluZyBhIHRv cG9sb2d5IHJlZmVyZW5jZSBpbXBsaWVzIHRoYXQgYSBtYWxsb2MgcmVmZXJlbmNlCisgKiB3aWxs IGJlIGhlbGQgdG8gQG1zdGIgYXMgbG9uZyBhcyB0aGUgdXNlciBob2xkcyB0aGUgdG9wb2xvZ3kg cmVmZXJlbmNlLgorICoKKyAqIENhcmUgc2hvdWxkIGJlIHRha2VuIHRvIGVuc3VyZSB0aGF0IHRo ZSB1c2VyIGhhcyBhdCBsZWFzdCBvbmUgbWFsbG9jCisgKiByZWZlcmVuY2UgdG8gQG1zdGIuIElm IHlvdSBhbHJlYWR5IGhhdmUgYSB0b3BvbG9neSByZWZlcmVuY2UgdG8gQG1zdGIsIHlvdQorICog c2hvdWxkIHVzZSBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9tc3RiKCkgaW5zdGVhZC4KKyAqCisg KiBTZWUgYWxzbzoKKyAqIGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X21zdGIoKQorICogZHJtX2Rw X21zdF90b3BvbG9neV9wdXRfbXN0YigpCisgKgorICogUmV0dXJuczoKKyAqICogMTogQSB0b3Bv bG9neSByZWZlcmVuY2Ugd2FzIGdyYWJiZWQgc3VjY2Vzc2Z1bGx5CisgKiAqIDA6IEBwb3J0IGlz IG5vIGxvbmdlciBpbiB0aGUgdG9wb2xvZ3ksIG5vIHJlZmVyZW5jZSB3YXMgZ3JhYmJlZAorICov CitzdGF0aWMgaW50IF9fbXVzdF9jaGVjaworZHJtX2RwX21zdF90b3BvbG9neV90cnlfZ2V0X21z dGIoc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICptc3RiKQoreworCWludCByZXQgPSBrcmVmX2dl dF91bmxlc3NfemVybygmbXN0Yi0+dG9wb2xvZ3lfa3JlZik7CisKKwlpZiAocmV0KQorCQlEUk1f REVCVUcoIm1zdGIgJXAgKCVkKVxuIiwgbXN0YiwKKwkJCSAga3JlZl9yZWFkKCZtc3RiLT50b3Bv bG9neV9rcmVmKSk7CisKKwlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdm9pZCBkcm1fZHBfbXN0 X3RvcG9sb2d5X3B1dF9tc3RiKHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YikKKy8qKgor ICogZHJtX2RwX21zdF90b3BvbG9neV9nZXRfbXN0YigpIC0gSW5jcmVtZW50IHRoZSB0b3BvbG9n eSByZWZjb3VudCBvZiBhCisgKiBicmFuY2ggZGV2aWNlCisgKiBAbXN0YjogVGhlICZzdHJ1Y3Qg ZHJtX2RwX21zdF9icmFuY2ggdG8gaW5jcmVtZW50IHRoZSB0b3BvbG9neSByZWZjb3VudCBvZgor ICoKKyAqIEluY3JlbWVudHMgJmRybV9kcF9tc3RfYnJhbmNoLnRvcG9sb2d5X3JlZmNvdW50IHdp dGhvdXQgY2hlY2tpbmcgd2hldGhlciBvcgorICogbm90IGl0J3MgYWxyZWFkeSByZWFjaGVkIDAu IFRoaXMgaXMgb25seSB2YWxpZCB0byB1c2UgaW4gc2NlbmFyaW9zIHdoZXJlCisgKiB5b3UgYXJl IGFscmVhZHkgZ3VhcmFudGVlZCB0byBoYXZlIGF0IGxlYXN0IG9uZSBhY3RpdmUgdG9wb2xvZ3kg cmVmZXJlbmNlCisgKiB0byBAbXN0Yi4gT3RoZXJ3aXNlLCBkcm1fZHBfbXN0X3RvcG9sb2d5X3Ry eV9nZXRfbXN0YigpIG11c3QgYmUgdXNlZC4KKyAqCisgKiBTZWUgYWxzbzoKKyAqIGRybV9kcF9t c3RfdG9wb2xvZ3lfdHJ5X2dldF9tc3RiKCkKKyAqIGRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X21z dGIoKQorICovCitzdGF0aWMgdm9pZCBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9tc3RiKHN0cnVj dCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YikKIHsKLQlrcmVmX3B1dCgmbXN0Yi0+a3JlZiwgZHJt X2RwX2Rlc3Ryb3lfbXN0X2JyYW5jaF9kZXZpY2UpOworCVdBUk5fT04oa3JlZl9yZWFkKCZtc3Ri LT50b3BvbG9neV9rcmVmKSA9PSAwKTsKKwlrcmVmX2dldCgmbXN0Yi0+dG9wb2xvZ3lfa3JlZik7 CisJRFJNX0RFQlVHKCJtc3RiICVwICglZClcbiIsIG1zdGIsIGtyZWZfcmVhZCgmbXN0Yi0+dG9w b2xvZ3lfa3JlZikpOwogfQogCisvKioKKyAqIGRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X21zdGIo KSAtIHJlbGVhc2UgYSB0b3BvbG9neSByZWZlcmVuY2UgdG8gYSBicmFuY2gKKyAqIGRldmljZQor ICogQG1zdGI6IFRoZSAmc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoIHRvIHJlbGVhc2UgdGhlIHRv cG9sb2d5IHJlZmVyZW5jZSBmcm9tCisgKgorICogUmVsZWFzZXMgYSB0b3BvbG9neSByZWZlcmVu Y2UgZnJvbSBAbXN0YiBieSBkZWNyZW1lbnRpbmcKKyAqICZkcm1fZHBfbXN0X2JyYW5jaC50b3Bv bG9neV9rcmVmLgorICoKKyAqIFNlZSBhbHNvOgorICogZHJtX2RwX21zdF90b3BvbG9neV90cnlf Z2V0X21zdGIoKQorICogZHJtX2RwX21zdF90b3BvbG9neV9nZXRfbXN0YigpCisgKi8KK3N0YXRp YyB2b2lkCitkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9tc3RiKHN0cnVjdCBkcm1fZHBfbXN0X2Jy YW5jaCAqbXN0YikKK3sKKwlEUk1fREVCVUcoIm1zdGIgJXAgKCVkKVxuIiwKKwkJICBtc3RiLCBr cmVmX3JlYWQoJm1zdGItPnRvcG9sb2d5X2tyZWYpIC0gMSk7CisJa3JlZl9wdXQoJm1zdGItPnRv cG9sb2d5X2tyZWYsIGRybV9kcF9kZXN0cm95X21zdF9icmFuY2hfZGV2aWNlKTsKK30KIAogc3Rh dGljIHZvaWQgZHJtX2RwX3BvcnRfdGVhcmRvd25fcGR0KHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQg KnBvcnQsIGludCBvbGRfcGR0KQogewpAQCAtOTM3LDcgKzExNzEsOCBAQCBzdGF0aWMgdm9pZCBk cm1fZHBfcG9ydF90ZWFyZG93bl9wZHQoc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCwgaW50 IG9sZF9wZHQpCiAKIHN0YXRpYyB2b2lkIGRybV9kcF9kZXN0cm95X3BvcnQoc3RydWN0IGtyZWYg KmtyZWYpCiB7Ci0Jc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCA9IGNvbnRhaW5lcl9vZihr cmVmLCBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0LCBrcmVmKTsKKwlzdHJ1Y3QgZHJtX2RwX21zdF9w b3J0ICpwb3J0ID0KKwkJY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQs IHRvcG9sb2d5X2tyZWYpOwogCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyID0g cG9ydC0+bWdyOwogCiAJaWYgKCFwb3J0LT5pbnB1dCkgewpAQCAtOTU2LDcgKzExOTEsNiBAQCBz dGF0aWMgdm9pZCBkcm1fZHBfZGVzdHJveV9wb3J0KHN0cnVjdCBrcmVmICprcmVmKQogCQkJICog ZnJvbSBhbiBFRElEIHJldHJpZXZhbCAqLwogCiAJCQltdXRleF9sb2NrKCZtZ3ItPmRlc3Ryb3lf Y29ubmVjdG9yX2xvY2spOwotCQkJa3JlZl9nZXQoJnBvcnQtPnBhcmVudC0+a3JlZik7CiAJCQls aXN0X2FkZCgmcG9ydC0+bmV4dCwgJm1nci0+ZGVzdHJveV9jb25uZWN0b3JfbGlzdCk7CiAJCQlt dXRleF91bmxvY2soJm1nci0+ZGVzdHJveV9jb25uZWN0b3JfbG9jayk7CiAJCQlzY2hlZHVsZV93 b3JrKCZtZ3ItPmRlc3Ryb3lfY29ubmVjdG9yX3dvcmspOwpAQCAtOTY3LDEyICsxMjAxLDc5IEBA IHN0YXRpYyB2b2lkIGRybV9kcF9kZXN0cm95X3BvcnQoc3RydWN0IGtyZWYgKmtyZWYpCiAJCWRy bV9kcF9wb3J0X3RlYXJkb3duX3BkdChwb3J0LCBwb3J0LT5wZHQpOwogCQlwb3J0LT5wZHQgPSBE UF9QRUVSX0RFVklDRV9OT05FOwogCX0KLQlrZnJlZShwb3J0KTsKKwlkcm1fZHBfbXN0X3B1dF9w b3J0X21hbGxvYyhwb3J0KTsKIH0KIAorLyoqCisgKiBkcm1fZHBfbXN0X3RvcG9sb2d5X3RyeV9n ZXRfcG9ydCgpIC0gSW5jcmVtZW50IHRoZSB0b3BvbG9neSByZWZjb3VudCBvZiBhCisgKiBwb3J0 IHVubGVzcyBpdHMgemVybworICogQHBvcnQ6ICZzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0IHRvIGlu Y3JlbWVudCB0aGUgdG9wb2xvZ3kgcmVmY291bnQgb2YKKyAqCisgKiBBdHRlbXB0cyB0byBncmFi IGEgdG9wb2xvZ3kgcmVmZXJlbmNlIHRvIEBwb3J0LCBpZiBpdCBoYXNuJ3QgeWV0IGJlZW4KKyAq IHJlbW92ZWQgZnJvbSB0aGUgdG9wb2xvZ3kgKGUuZy4gJmRybV9kcF9tc3RfcG9ydC50b3BvbG9n eV9rcmVmIGhhcyByZWFjaGVkCisgKiAwKS4gSG9sZGluZyBhIHRvcG9sb2d5IHJlZmVyZW5jZSBp bXBsaWVzIHRoYXQgYSBtYWxsb2MgcmVmZXJlbmNlIHdpbGwgYmUKKyAqIGhlbGQgdG8gQHBvcnQg YXMgbG9uZyBhcyB0aGUgdXNlciBob2xkcyB0aGUgdG9wb2xvZ3kgcmVmZXJlbmNlLgorICoKKyAq IENhcmUgc2hvdWxkIGJlIHRha2VuIHRvIGVuc3VyZSB0aGF0IHRoZSB1c2VyIGhhcyBhdCBsZWFz dCBvbmUgbWFsbG9jCisgKiByZWZlcmVuY2UgdG8gQHBvcnQuIElmIHlvdSBhbHJlYWR5IGhhdmUg YSB0b3BvbG9neSByZWZlcmVuY2UgdG8gQHBvcnQsIHlvdQorICogc2hvdWxkIHVzZSBkcm1fZHBf bXN0X3RvcG9sb2d5X2dldF9wb3J0KCkgaW5zdGVhZC4KKyAqCisgKiBTZWUgYWxzbzoKKyAqIGRy bV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X3BvcnQoKQorICogZHJtX2RwX21zdF90b3BvbG9neV9wdXRf cG9ydCgpCisgKgorICogUmV0dXJuczoKKyAqICogMTogQSB0b3BvbG9neSByZWZlcmVuY2Ugd2Fz IGdyYWJiZWQgc3VjY2Vzc2Z1bGx5CisgKiAqIDA6IEBwb3J0IGlzIG5vIGxvbmdlciBpbiB0aGUg dG9wb2xvZ3ksIG5vIHJlZmVyZW5jZSB3YXMgZ3JhYmJlZAorICovCitzdGF0aWMgaW50IF9fbXVz dF9jaGVjaworZHJtX2RwX21zdF90b3BvbG9neV90cnlfZ2V0X3BvcnQoc3RydWN0IGRybV9kcF9t c3RfcG9ydCAqcG9ydCkKK3sKKwlpbnQgcmV0ID0ga3JlZl9nZXRfdW5sZXNzX3plcm8oJnBvcnQt PnRvcG9sb2d5X2tyZWYpOworCisJaWYgKHJldCkKKwkJRFJNX0RFQlVHKCJwb3J0ICVwICglZClc biIsIHBvcnQsCisJCQkgIGtyZWZfcmVhZCgmcG9ydC0+dG9wb2xvZ3lfa3JlZikpOworCisJcmV0 dXJuIHJldDsKK30KKworLyoqCisgKiBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9wb3J0KCkgLSBJ bmNyZW1lbnQgdGhlIHRvcG9sb2d5IHJlZmNvdW50IG9mIGEgcG9ydAorICogQHBvcnQ6IFRoZSAm c3RydWN0IGRybV9kcF9tc3RfcG9ydCB0byBpbmNyZW1lbnQgdGhlIHRvcG9sb2d5IHJlZmNvdW50 IG9mCisgKgorICogSW5jcmVtZW50cyAmZHJtX2RwX21zdF9wb3J0LnRvcG9sb2d5X3JlZmNvdW50 IHdpdGhvdXQgY2hlY2tpbmcgd2hldGhlciBvcgorICogbm90IGl0J3MgYWxyZWFkeSByZWFjaGVk IDAuIFRoaXMgaXMgb25seSB2YWxpZCB0byB1c2UgaW4gc2NlbmFyaW9zIHdoZXJlCisgKiB5b3Ug YXJlIGFscmVhZHkgZ3VhcmFudGVlZCB0byBoYXZlIGF0IGxlYXN0IG9uZSBhY3RpdmUgdG9wb2xv Z3kgcmVmZXJlbmNlCisgKiB0byBAcG9ydC4gT3RoZXJ3aXNlLCBkcm1fZHBfbXN0X3RvcG9sb2d5 X3RyeV9nZXRfcG9ydCgpIG11c3QgYmUgdXNlZC4KKyAqCisgKiBTZWUgYWxzbzoKKyAqIGRybV9k cF9tc3RfdG9wb2xvZ3lfdHJ5X2dldF9wb3J0KCkKKyAqIGRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0 X3BvcnQoKQorICovCitzdGF0aWMgdm9pZCBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9wb3J0KHN0 cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpCit7CisJV0FSTl9PTihrcmVmX3JlYWQoJnBvcnQt PnRvcG9sb2d5X2tyZWYpID09IDApOworCWtyZWZfZ2V0KCZwb3J0LT50b3BvbG9neV9rcmVmKTsK KwlEUk1fREVCVUcoInBvcnQgJXAgKCVkKVxuIiwgcG9ydCwga3JlZl9yZWFkKCZwb3J0LT50b3Bv bG9neV9rcmVmKSk7Cit9CisKKy8qKgorICogZHJtX2RwX21zdF90b3BvbG9neV9wdXRfcG9ydCgp IC0gcmVsZWFzZSBhIHRvcG9sb2d5IHJlZmVyZW5jZSB0byBhIHBvcnQKKyAqIEBwb3J0OiBUaGUg JnN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgdG8gcmVsZWFzZSB0aGUgdG9wb2xvZ3kgcmVmZXJlbmNl IGZyb20KKyAqCisgKiBSZWxlYXNlcyBhIHRvcG9sb2d5IHJlZmVyZW5jZSBmcm9tIEBwb3J0IGJ5 IGRlY3JlbWVudGluZworICogJmRybV9kcF9tc3RfcG9ydC50b3BvbG9neV9rcmVmLgorICoKKyAq IFNlZSBhbHNvOgorICogZHJtX2RwX21zdF90b3BvbG9neV90cnlfZ2V0X3BvcnQoKQorICogZHJt X2RwX21zdF90b3BvbG9neV9nZXRfcG9ydCgpCisgKi8KIHN0YXRpYyB2b2lkIGRybV9kcF9tc3Rf dG9wb2xvZ3lfcHV0X3BvcnQoc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCkKIHsKLQlrcmVm X3B1dCgmcG9ydC0+a3JlZiwgZHJtX2RwX2Rlc3Ryb3lfcG9ydCk7CisJRFJNX0RFQlVHKCJwb3J0 ICVwICglZClcbiIsCisJCSAgcG9ydCwga3JlZl9yZWFkKCZwb3J0LT50b3BvbG9neV9rcmVmKSAt IDEpOworCWtyZWZfcHV0KCZwb3J0LT50b3BvbG9neV9rcmVmLCBkcm1fZHBfZGVzdHJveV9wb3J0 KTsKIH0KIAogc3RhdGljIHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqCkBAIC05ODEsMTAgKzEy ODIsMTAgQEAgZHJtX2RwX21zdF90b3BvbG9neV9nZXRfbXN0Yl92YWxpZGF0ZWRfbG9ja2VkKHN0 cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YiwKIHsKIAlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0 ICpwb3J0OwogCXN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqcm1zdGI7Ci0JaWYgKHRvX2ZpbmQg PT0gbXN0YikgewotCQlrcmVmX2dldCgmbXN0Yi0+a3JlZik7CisKKwlpZiAodG9fZmluZCA9PSBt c3RiKQogCQlyZXR1cm4gbXN0YjsKLQl9CisKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcnQsICZt c3RiLT5wb3J0cywgbmV4dCkgewogCQlpZiAocG9ydC0+bXN0YikgewogCQkJcm1zdGIgPSBkcm1f ZHBfbXN0X3RvcG9sb2d5X2dldF9tc3RiX3ZhbGlkYXRlZF9sb2NrZWQoCkBAIC0xMDAxLDI1ICsx MzAyLDMyIEBAIGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X21zdGJfdmFsaWRhdGVkKHN0cnVjdCBk cm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLAogCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2RwX21z dF9icmFuY2ggKm1zdGIpCiB7CiAJc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICpybXN0YiA9IE5V TEw7CisKIAltdXRleF9sb2NrKCZtZ3ItPmxvY2spOwotCWlmIChtZ3ItPm1zdF9wcmltYXJ5KQor CWlmIChtZ3ItPm1zdF9wcmltYXJ5KSB7CiAJCXJtc3RiID0gZHJtX2RwX21zdF90b3BvbG9neV9n ZXRfbXN0Yl92YWxpZGF0ZWRfbG9ja2VkKAogCQkgICAgbWdyLT5tc3RfcHJpbWFyeSwgbXN0Yik7 CisKKwkJaWYgKHJtc3RiICYmICFkcm1fZHBfbXN0X3RvcG9sb2d5X3RyeV9nZXRfbXN0YihybXN0 YikpCisJCQlybXN0YiA9IE5VTEw7CisJfQogCW11dGV4X3VubG9jaygmbWdyLT5sb2NrKTsKIAly ZXR1cm4gcm1zdGI7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpkcm1fZHBf bXN0X2dldF9wb3J0X3JlZl9sb2NrZWQoc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICptc3RiLCBz dHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICp0b19maW5kKQorc3RhdGljIHN0cnVjdCBkcm1fZHBfbXN0 X3BvcnQgKgorZHJtX2RwX21zdF90b3BvbG9neV9nZXRfcG9ydF92YWxpZGF0ZWRfbG9ja2VkKHN0 cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YiwKKwkJCQkJICAgICAgc3RydWN0IGRybV9kcF9t c3RfcG9ydCAqdG9fZmluZCkKIHsKIAlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0LCAqbXBv cnQ7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHBvcnQsICZtc3RiLT5wb3J0cywgbmV4dCkgewot CQlpZiAocG9ydCA9PSB0b19maW5kKSB7Ci0JCQlrcmVmX2dldCgmcG9ydC0+a3JlZik7CisJCWlm IChwb3J0ID09IHRvX2ZpbmQpCiAJCQlyZXR1cm4gcG9ydDsKLQkJfQorCiAJCWlmIChwb3J0LT5t c3RiKSB7Ci0JCQltcG9ydCA9IGRybV9kcF9tc3RfZ2V0X3BvcnRfcmVmX2xvY2tlZChwb3J0LT5t c3RiLCB0b19maW5kKTsKKwkJCW1wb3J0ID0gZHJtX2RwX21zdF90b3BvbG9neV9nZXRfcG9ydF92 YWxpZGF0ZWRfbG9ja2VkKAorCQkJICAgIHBvcnQtPm1zdGIsIHRvX2ZpbmQpOwogCQkJaWYgKG1w b3J0KQogCQkJCXJldHVybiBtcG9ydDsKIAkJfQpAQCAtMTAzMiw5ICsxMzQwLDE1IEBAIGRybV9k cF9tc3RfdG9wb2xvZ3lfZ2V0X3BvcnRfdmFsaWRhdGVkKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9s b2d5X21nciAqbWdyLAogCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0KQog ewogCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnJwb3J0ID0gTlVMTDsKKwogCW11dGV4X2xvY2so Jm1nci0+bG9jayk7Ci0JaWYgKG1nci0+bXN0X3ByaW1hcnkpCi0JCXJwb3J0ID0gZHJtX2RwX21z dF9nZXRfcG9ydF9yZWZfbG9ja2VkKG1nci0+bXN0X3ByaW1hcnksIHBvcnQpOworCWlmIChtZ3It Pm1zdF9wcmltYXJ5KSB7CisJCXJwb3J0ID0gZHJtX2RwX21zdF90b3BvbG9neV9nZXRfcG9ydF92 YWxpZGF0ZWRfbG9ja2VkKAorCQkgICAgbWdyLT5tc3RfcHJpbWFyeSwgcG9ydCk7CisKKwkJaWYg KHJwb3J0ICYmICFkcm1fZHBfbXN0X3RvcG9sb2d5X3RyeV9nZXRfcG9ydChycG9ydCkpCisJCQly cG9ydCA9IE5VTEw7CisJfQogCW11dGV4X3VubG9jaygmbWdyLT5sb2NrKTsKIAlyZXR1cm4gcnBv cnQ7CiB9CkBAIC0xMDQyLDExICsxMzU2LDEyIEBAIGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X3Bv cnRfdmFsaWRhdGVkKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLAogc3RhdGlj IHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKmRybV9kcF9nZXRfcG9ydChzdHJ1Y3QgZHJtX2RwX21z dF9icmFuY2ggKm1zdGIsIHU4IHBvcnRfbnVtKQogewogCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQg KnBvcnQ7CisJaW50IHJldDsKIAogCWxpc3RfZm9yX2VhY2hfZW50cnkocG9ydCwgJm1zdGItPnBv cnRzLCBuZXh0KSB7CiAJCWlmIChwb3J0LT5wb3J0X251bSA9PSBwb3J0X251bSkgewotCQkJa3Jl Zl9nZXQoJnBvcnQtPmtyZWYpOwotCQkJcmV0dXJuIHBvcnQ7CisJCQlyZXQgPSBkcm1fZHBfbXN0 X3RvcG9sb2d5X3RyeV9nZXRfcG9ydChwb3J0KTsKKwkJCXJldHVybiByZXQgPyBwb3J0IDogTlVM TDsKIAkJfQogCX0KIApAQCAtMTA5NSw2ICsxNDEwLDExIEBAIHN0YXRpYyBib29sIGRybV9kcF9w b3J0X3NldHVwX3BkdChzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0KQogCQlpZiAocG9ydC0+ bXN0YikgewogCQkJcG9ydC0+bXN0Yi0+bWdyID0gcG9ydC0+bWdyOwogCQkJcG9ydC0+bXN0Yi0+ cG9ydF9wYXJlbnQgPSBwb3J0OworCQkJLyoKKwkJCSAqIE1ha2Ugc3VyZSB0aGlzIHBvcnQncyBt ZW1vcnkgYWxsb2NhdGlvbiBzdGF5cworCQkJICogYXJvdW5kIHVudGlsIGl0J3MgY2hpbGQgTVNU QiByZWxlYXNlcyBpdAorCQkJICovCisJCQlkcm1fZHBfbXN0X2dldF9wb3J0X21hbGxvYyhwb3J0 KTsKIAogCQkJc2VuZF9saW5rID0gdHJ1ZTsKIAkJfQpAQCAtMTE1NSwxNyArMTQ3NSwyNiBAQCBz dGF0aWMgdm9pZCBkcm1fZHBfYWRkX3BvcnQoc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICptc3Ri LAogCWJvb2wgY3JlYXRlZCA9IGZhbHNlOwogCWludCBvbGRfcGR0ID0gMDsKIAlpbnQgb2xkX2Rk cHMgPSAwOworCiAJcG9ydCA9IGRybV9kcF9nZXRfcG9ydChtc3RiLCBwb3J0X21zZy0+cG9ydF9u dW1iZXIpOwogCWlmICghcG9ydCkgewogCQlwb3J0ID0ga3phbGxvYyhzaXplb2YoKnBvcnQpLCBH RlBfS0VSTkVMKTsKIAkJaWYgKCFwb3J0KQogCQkJcmV0dXJuOwotCQlrcmVmX2luaXQoJnBvcnQt PmtyZWYpOworCQlrcmVmX2luaXQoJnBvcnQtPnRvcG9sb2d5X2tyZWYpOworCQlrcmVmX2luaXQo JnBvcnQtPm1hbGxvY19rcmVmKTsKIAkJcG9ydC0+cGFyZW50ID0gbXN0YjsKIAkJcG9ydC0+cG9y dF9udW0gPSBwb3J0X21zZy0+cG9ydF9udW1iZXI7CiAJCXBvcnQtPm1nciA9IG1zdGItPm1ncjsK IAkJcG9ydC0+YXV4Lm5hbWUgPSAiRFBNU1QiOwogCQlwb3J0LT5hdXguZGV2ID0gZGV2LT5kZXY7 CisKKwkJLyoKKwkJICogTWFrZSBzdXJlIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBmb3Igb3VyIHBh cmVudCBicmFuY2ggc3RheXMKKwkJICogYXJvdW5kIHVudGlsIG91ciBvd24gbWVtb3J5IGFsbG9j YXRpb24gaXMgcmVsZWFzZWQKKwkJICovCisJCWRybV9kcF9tc3RfZ2V0X21zdGJfbWFsbG9jKG1z dGIpOworCiAJCWNyZWF0ZWQgPSB0cnVlOwogCX0gZWxzZSB7CiAJCW9sZF9wZHQgPSBwb3J0LT5w ZHQ7CkBAIC0xMTg1LDcgKzE1MTQsNyBAQCBzdGF0aWMgdm9pZCBkcm1fZHBfYWRkX3BvcnQoc3Ry dWN0IGRybV9kcF9tc3RfYnJhbmNoICptc3RiLAogCSAgIGZvciB0aGlzIGxpc3QgKi8KIAlpZiAo Y3JlYXRlZCkgewogCQltdXRleF9sb2NrKCZtc3RiLT5tZ3ItPmxvY2spOwotCQlrcmVmX2dldCgm cG9ydC0+a3JlZik7CisJCWRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X3BvcnQocG9ydCk7CiAJCWxp c3RfYWRkKCZwb3J0LT5uZXh0LCAmbXN0Yi0+cG9ydHMpOwogCQltdXRleF91bmxvY2soJm1zdGIt Pm1nci0+bG9jayk7CiAJfQpAQCAtMTIxMCw4ICsxNTM5LDExIEBAIHN0YXRpYyB2b2lkIGRybV9k cF9hZGRfcG9ydChzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKm1zdGIsCiAJaWYgKGNyZWF0ZWQg JiYgIXBvcnQtPmlucHV0KSB7CiAJCWNoYXIgcHJvcHBhdGhbMjU1XTsKIAotCQlidWlsZF9tc3Rf cHJvcF9wYXRoKG1zdGIsIHBvcnQtPnBvcnRfbnVtLCBwcm9wcGF0aCwgc2l6ZW9mKHByb3BwYXRo KSk7Ci0JCXBvcnQtPmNvbm5lY3RvciA9ICgqbXN0Yi0+bWdyLT5jYnMtPmFkZF9jb25uZWN0b3Ip KG1zdGItPm1nciwgcG9ydCwgcHJvcHBhdGgpOworCQlidWlsZF9tc3RfcHJvcF9wYXRoKG1zdGIs IHBvcnQtPnBvcnRfbnVtLCBwcm9wcGF0aCwKKwkJCQkgICAgc2l6ZW9mKHByb3BwYXRoKSk7CisJ CXBvcnQtPmNvbm5lY3RvciA9ICgqbXN0Yi0+bWdyLT5jYnMtPmFkZF9jb25uZWN0b3IpKG1zdGIt Pm1nciwKKwkJCQkJCQkJICAgcG9ydCwKKwkJCQkJCQkJICAgcHJvcHBhdGgpOwogCQlpZiAoIXBv cnQtPmNvbm5lY3RvcikgewogCQkJLyogcmVtb3ZlIGl0IGZyb20gdGhlIHBvcnQgbGlzdCAqLwog CQkJbXV0ZXhfbG9jaygmbXN0Yi0+bWdyLT5sb2NrKTsKQEAgLTEyMjEsNiArMTU1Myw3IEBAIHN0 YXRpYyB2b2lkIGRybV9kcF9hZGRfcG9ydChzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKm1zdGIs CiAJCQlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0KHBvcnQpOwogCQkJZ290byBvdXQ7CiAJ CX0KKwogCQlpZiAoKHBvcnQtPnBkdCA9PSBEUF9QRUVSX0RFVklDRV9EUF9MRUdBQ1lfQ09OViB8 fAogCQkgICAgIHBvcnQtPnBkdCA9PSBEUF9QRUVSX0RFVklDRV9TU1RfU0lOSykgJiYKIAkJICAg IHBvcnQtPnBvcnRfbnVtID49IERQX01TVF9MT0dJQ0FMX1BPUlRfMCkgewpAQCAtMTI3OCw3ICsx NjExLDcgQEAgc3RhdGljIHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqZHJtX2RwX2dldF9tc3Rf YnJhbmNoX2RldmljZShzdHJ1Y3QgZHJtX2RwX21zdF8KIHsKIAlzdHJ1Y3QgZHJtX2RwX21zdF9i cmFuY2ggKm1zdGI7CiAJc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydDsKLQlpbnQgaTsKKwlp bnQgaSwgcmV0OwogCS8qIGZpbmQgdGhlIHBvcnQgYnkgaXRlcmF0aW5nIGRvd24gKi8KIAogCW11 dGV4X2xvY2soJm1nci0+bG9jayk7CkBAIC0xMzAzLDcgKzE2MzYsOSBAQCBzdGF0aWMgc3RydWN0 IGRybV9kcF9tc3RfYnJhbmNoICpkcm1fZHBfZ2V0X21zdF9icmFuY2hfZGV2aWNlKHN0cnVjdCBk cm1fZHBfbXN0XwogCQkJfQogCQl9CiAJfQotCWtyZWZfZ2V0KCZtc3RiLT5rcmVmKTsKKwlyZXQg PSBkcm1fZHBfbXN0X3RvcG9sb2d5X3RyeV9nZXRfbXN0Yihtc3RiKTsKKwlpZiAoIXJldCkKKwkJ bXN0YiA9IE5VTEw7CiBvdXQ6CiAJbXV0ZXhfdW5sb2NrKCZtZ3ItPmxvY2spOwogCXJldHVybiBt c3RiOwpAQCAtMTMzMywxOSArMTY2OCwyMiBAQCBzdGF0aWMgc3RydWN0IGRybV9kcF9tc3RfYnJh bmNoICpnZXRfbXN0X2JyYW5jaF9kZXZpY2VfYnlfZ3VpZF9oZWxwZXIoCiAJcmV0dXJuIE5VTEw7 CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKmRybV9kcF9nZXRfbXN0X2Jy YW5jaF9kZXZpY2VfYnlfZ3VpZCgKLQlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1n ciwKLQl1aW50OF90ICpndWlkKQorc3RhdGljIHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqCitk cm1fZHBfZ2V0X21zdF9icmFuY2hfZGV2aWNlX2J5X2d1aWQoc3RydWN0IGRybV9kcF9tc3RfdG9w b2xvZ3lfbWdyICptZ3IsCisJCQkJICAgICB1aW50OF90ICpndWlkKQogewogCXN0cnVjdCBkcm1f ZHBfbXN0X2JyYW5jaCAqbXN0YjsKKwlpbnQgcmV0OwogCiAJLyogZmluZCB0aGUgcG9ydCBieSBp dGVyYXRpbmcgZG93biAqLwogCW11dGV4X2xvY2soJm1nci0+bG9jayk7CiAKIAltc3RiID0gZ2V0 X21zdF9icmFuY2hfZGV2aWNlX2J5X2d1aWRfaGVscGVyKG1nci0+bXN0X3ByaW1hcnksIGd1aWQp OwotCi0JaWYgKG1zdGIpCi0JCWtyZWZfZ2V0KCZtc3RiLT5rcmVmKTsKKwlpZiAobXN0Yikgewor CQlyZXQgPSBkcm1fZHBfbXN0X3RvcG9sb2d5X3RyeV9nZXRfbXN0Yihtc3RiKTsKKwkJaWYgKCFy ZXQpCisJCQltc3RiID0gTlVMTDsKKwl9CiAKIAltdXRleF91bmxvY2soJm1nci0+bG9jayk7CiAJ cmV0dXJuIG1zdGI7CkBAIC0xMzg0LDExICsxNzIyLDE0IEBAIHN0YXRpYyB2b2lkIGRybV9kcF9t c3RfbGlua19wcm9iZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3Qg ZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3Qg ZHJtX2RwX21zdF90b3BvbG9neV9tZ3IsIHdvcmspOwogCXN0cnVjdCBkcm1fZHBfbXN0X2JyYW5j aCAqbXN0YjsKKwlpbnQgcmV0OwogCiAJbXV0ZXhfbG9jaygmbWdyLT5sb2NrKTsKIAltc3RiID0g bWdyLT5tc3RfcHJpbWFyeTsKIAlpZiAobXN0YikgewotCQlrcmVmX2dldCgmbXN0Yi0+a3JlZik7 CisJCXJldCA9IGRybV9kcF9tc3RfdG9wb2xvZ3lfdHJ5X2dldF9tc3RiKG1zdGIpOworCQlpZiAo IXJldCkKKwkJCW1zdGIgPSBOVUxMOwogCX0KIAltdXRleF91bmxvY2soJm1nci0+bG9jayk7CiAJ aWYgKG1zdGIpIHsKQEAgLTE3MTYsOCArMjA1NywxMCBAQCBzdGF0aWMgc3RydWN0IGRybV9kcF9t c3RfYnJhbmNoICpkcm1fZHBfZ2V0X2xhc3RfY29ubmVjdGVkX3BvcnRfYW5kX21zdGIoc3RydWN0 CiAKIAkJaWYgKGZvdW5kX3BvcnQpIHsKIAkJCXJtc3RiID0gZm91bmRfcG9ydC0+cGFyZW50Owot CQkJa3JlZl9nZXQoJnJtc3RiLT5rcmVmKTsKLQkJCSpwb3J0X251bSA9IGZvdW5kX3BvcnQtPnBv cnRfbnVtOworCQkJaWYgKGRybV9kcF9tc3RfdG9wb2xvZ3lfdHJ5X2dldF9tc3RiKHJtc3RiKSkK KwkJCQkqcG9ydF9udW0gPSBmb3VuZF9wb3J0LT5wb3J0X251bTsKKwkJCWVsc2UKKwkJCQlybXN0 YiA9IE5VTEw7CiAJCX0KIAl9CiAJbXV0ZXhfdW5sb2NrKCZtZ3ItPmxvY2spOwpAQCAtMTc0Miw3 ICsyMDg1LDkgQEAgc3RhdGljIGludCBkcm1fZHBfcGF5bG9hZF9zZW5kX21zZyhzdHJ1Y3QgZHJt X2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwKIAlwb3J0X251bSA9IHBvcnQtPnBvcnRfbnVtOwog CW1zdGIgPSBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9tc3RiX3ZhbGlkYXRlZChtZ3IsIHBvcnQt PnBhcmVudCk7CiAJaWYgKCFtc3RiKSB7Ci0JCW1zdGIgPSBkcm1fZHBfZ2V0X2xhc3RfY29ubmVj dGVkX3BvcnRfYW5kX21zdGIobWdyLCBwb3J0LT5wYXJlbnQsICZwb3J0X251bSk7CisJCW1zdGIg PSBkcm1fZHBfZ2V0X2xhc3RfY29ubmVjdGVkX3BvcnRfYW5kX21zdGIobWdyLAorCQkJCQkJCSAg ICAgICBwb3J0LT5wYXJlbnQsCisJCQkJCQkJICAgICAgICZwb3J0X251bSk7CiAKIAkJaWYgKCFt c3RiKSB7CiAJCQlkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0KHBvcnQpOwpAQCAtMjE2OCw3 ICsyNTEzLDcgQEAgaW50IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyX3NldF9tc3Qoc3RydWN0IGRy bV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsIGJvb2wgbXMKIAogCQkvKiBnaXZlIHRoaXMgdGhl IG1haW4gcmVmZXJlbmNlICovCiAJCW1nci0+bXN0X3ByaW1hcnkgPSBtc3RiOwotCQlrcmVmX2dl dCgmbWdyLT5tc3RfcHJpbWFyeS0+a3JlZik7CisJCWRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X21z dGIobWdyLT5tc3RfcHJpbWFyeSk7CiAKIAkJcmV0ID0gZHJtX2RwX2RwY2Rfd3JpdGViKG1nci0+ YXV4LCBEUF9NU1RNX0NUUkwsCiAJCQkJCQkJIERQX01TVF9FTiB8IERQX1VQX1JFUV9FTiB8IERQ X1VQU1RSRUFNX0lTX1NSQyk7CkBAIC0yNzQzLDExICszMDg4LDExIEBAIGJvb2wgZHJtX2RwX21z dF9hbGxvY2F0ZV92Y3BpKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyLAogCXJl dCA9IGRybV9kcF9pbml0X3ZjcGkobWdyLCAmcG9ydC0+dmNwaSwgcGJuLCBzbG90cyk7CiAJaWYg KHJldCkgewogCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gaW5pdCB2Y3BpIHNsb3RzPSVkIG1h eD02MyByZXQ9JWRcbiIsCi0JCQkJRElWX1JPVU5EX1VQKHBibiwgbWdyLT5wYm5fZGl2KSwgcmV0 KTsKKwkJCSAgICAgIERJVl9ST1VORF9VUChwYm4sIG1nci0+cGJuX2RpdiksIHJldCk7CiAJCWdv dG8gb3V0OwogCX0KIAlEUk1fREVCVUdfS01TKCJpbml0aW5nIHZjcGkgZm9yIHBibj0lZCBzbG90 cz0lZFxuIiwKLQkJCXBibiwgcG9ydC0+dmNwaS5udW1fc2xvdHMpOworCQkgICAgICBwYm4sIHBv cnQtPnZjcGkubnVtX3Nsb3RzKTsKIAogCWRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X3BvcnQocG9y dCk7CiAJcmV0dXJuIHRydWU7CkBAIC0yNzkxLDcgKzMxMzYsOCBAQCBFWFBPUlRfU1lNQk9MKGRy bV9kcF9tc3RfcmVzZXRfdmNwaV9zbG90cyk7CiAgKiBAbWdyOiBtYW5hZ2VyIGZvciB0aGlzIHBv cnQKICAqIEBwb3J0OiB1bnZlcmlmaWVkIHBvcnQgdG8gZGVhbGxvY2F0ZSB2Y3BpIGZvcgogICov Ci12b2lkIGRybV9kcF9tc3RfZGVhbGxvY2F0ZV92Y3BpKHN0cnVjdCBkcm1fZHBfbXN0X3RvcG9s b2d5X21nciAqbWdyLCBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0KQordm9pZCBkcm1fZHBf bXN0X2RlYWxsb2NhdGVfdmNwaShzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciwK KwkJCQlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0KQogewogCXBvcnQgPSBkcm1fZHBfbXN0 X3RvcG9sb2d5X2dldF9wb3J0X3ZhbGlkYXRlZChtZ3IsIHBvcnQpOwogCWlmICghcG9ydCkKQEAg LTMwODYsMTMgKzM0MzIsNiBAQCBzdGF0aWMgdm9pZCBkcm1fZHBfdHhfd29yayhzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndvcmspCiAJbXV0ZXhfdW5sb2NrKCZtZ3ItPnFsb2NrKTsKIH0KIAotc3RhdGlj IHZvaWQgZHJtX2RwX2ZyZWVfbXN0X3BvcnQoc3RydWN0IGtyZWYgKmtyZWYpCi17Ci0Jc3RydWN0 IGRybV9kcF9tc3RfcG9ydCAqcG9ydCA9IGNvbnRhaW5lcl9vZihrcmVmLCBzdHJ1Y3QgZHJtX2Rw X21zdF9wb3J0LCBrcmVmKTsKLQlrcmVmX3B1dCgmcG9ydC0+cGFyZW50LT5rcmVmLCBkcm1fZHBf ZnJlZV9tc3RfYnJhbmNoX2RldmljZSk7Ci0Ja2ZyZWUocG9ydCk7Ci19Ci0KIHN0YXRpYyB2b2lk IGRybV9kcF9kZXN0cm95X2Nvbm5lY3Rvcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykK IHsKIAlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1nciA9IGNvbnRhaW5lcl9vZih3 b3JrLCBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IsIGRlc3Ryb3lfY29ubmVjdG9yX3dv cmspOwpAQCAtMzExMyw3ICszNDUyLDYgQEAgc3RhdGljIHZvaWQgZHJtX2RwX2Rlc3Ryb3lfY29u bmVjdG9yX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCQlsaXN0X2RlbCgmcG9ydC0+ bmV4dCk7CiAJCW11dGV4X3VubG9jaygmbWdyLT5kZXN0cm95X2Nvbm5lY3Rvcl9sb2NrKTsKIAot CQlrcmVmX2luaXQoJnBvcnQtPmtyZWYpOwogCQlJTklUX0xJU1RfSEVBRCgmcG9ydC0+bmV4dCk7 CiAKIAkJbWdyLT5jYnMtPmRlc3Ryb3lfY29ubmVjdG9yKG1nciwgcG9ydC0+Y29ubmVjdG9yKTsK QEAgLTMxMjcsNyArMzQ2NSw3IEBAIHN0YXRpYyB2b2lkIGRybV9kcF9kZXN0cm95X2Nvbm5lY3Rv cl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJCWRybV9kcF9tc3RfcHV0X3BheWxv YWRfaWQobWdyLCBwb3J0LT52Y3BpLnZjcGkpOwogCQl9CiAKLQkJa3JlZl9wdXQoJnBvcnQtPmty ZWYsIGRybV9kcF9mcmVlX21zdF9wb3J0KTsKKwkJZHJtX2RwX21zdF9wdXRfcG9ydF9tYWxsb2Mo cG9ydCk7CiAJCXNlbmRfaG90cGx1ZyA9IHRydWU7CiAJfQogCWlmIChzZW5kX2hvdHBsdWcpCmRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oIGIvaW5jbHVkZS9kcm0v ZHJtX2RwX21zdF9oZWxwZXIuaAppbmRleCAzNzFjYzI4MTY0NzcuLjhlY2E1ZjI5MjQyYyAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaAorKysgYi9pbmNsdWRlL2Ry bS9kcm1fZHBfbXN0X2hlbHBlci5oCkBAIC00NCw3ICs0NCw2IEBAIHN0cnVjdCBkcm1fZHBfdmNw aSB7CiAKIC8qKgogICogc3RydWN0IGRybV9kcF9tc3RfcG9ydCAtIE1TVCBwb3J0Ci0gKiBAa3Jl ZjogcmVmZXJlbmNlIGNvdW50IGZvciB0aGlzIHBvcnQuCiAgKiBAcG9ydF9udW06IHBvcnQgbnVt YmVyCiAgKiBAaW5wdXQ6IGlmIHRoaXMgcG9ydCBpcyBhbiBpbnB1dCBwb3J0LgogICogQG1jczog bWVzc2FnZSBjYXBhYmlsaXR5IHN0YXR1cyAtIERQIDEuMiBzcGVjLgpAQCAtNjcsNyArNjYsMTgg QEAgc3RydWN0IGRybV9kcF92Y3BpIHsKICAqIGluIHRoZSBNU1QgdG9wb2xvZ3kuCiAgKi8KIHN0 cnVjdCBkcm1fZHBfbXN0X3BvcnQgewotCXN0cnVjdCBrcmVmIGtyZWY7CisJLyoqCisJICogQHRv cG9sb2d5X2tyZWY6IHJlZmNvdW50IGZvciB0aGlzIHBvcnQncyBsaWZldGltZSBpbiB0aGUgdG9w b2xvZ3ksCisJICogb25seSB0aGUgRFAgTVNUIGhlbHBlcnMgc2hvdWxkIG5lZWQgdG8gdG91Y2gg dGhpcworCSAqLworCXN0cnVjdCBrcmVmIHRvcG9sb2d5X2tyZWY7CisKKwkvKioKKwkgKiBAbWFs bG9jX2tyZWY6IHJlZmNvdW50IGZvciB0aGUgbWVtb3J5IGFsbG9jYXRpb24gY29udGFpbmluZyB0 aGlzCisJICogc3RydWN0dXJlLiBTZWUgZHJtX2RwX21zdF9nZXRfcG9ydF9tYWxsb2MoKSBhbmQK KwkgKiBkcm1fZHBfbXN0X3B1dF9wb3J0X21hbGxvYygpLgorCSAqLworCXN0cnVjdCBrcmVmIG1h bGxvY19rcmVmOwogCiAJdTggcG9ydF9udW07CiAJYm9vbCBpbnB1dDsKQEAgLTEwMiw3ICsxMTIs NiBAQCBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0IHsKIAogLyoqCiAgKiBzdHJ1Y3QgZHJtX2RwX21z dF9icmFuY2ggLSBNU1QgYnJhbmNoIGRldmljZS4KLSAqIEBrcmVmOiByZWZlcmVuY2UgY291bnQg Zm9yIHRoaXMgcG9ydC4KICAqIEByYWQ6IFJlbGF0aXZlIEFkZHJlc3MgdG8gdGFsayB0byB0aGlz IGJyYW5jaCBkZXZpY2UuCiAgKiBAbGN0OiBMaW5rIGNvdW50IHRvdGFsIHRvIHRhbGsgdG8gdGhp cyBicmFuY2ggZGV2aWNlLgogICogQG51bV9wb3J0czogbnVtYmVyIG9mIHBvcnRzIG9uIHRoZSBi cmFuY2guCkBAIC0xMjEsNyArMTMwLDE5IEBAIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgewogICog dG8gZG93bnN0cmVhbSBwb3J0IG9mIHBhcmVudCBicmFuY2hlcy4KICAqLwogc3RydWN0IGRybV9k cF9tc3RfYnJhbmNoIHsKLQlzdHJ1Y3Qga3JlZiBrcmVmOworCS8qKgorCSAqIEB0b3BvbG9neV9r cmVmOiByZWZjb3VudCBmb3IgdGhpcyBicmFuY2ggZGV2aWNlJ3MgbGlmZXRpbWUgaW4gdGhlCisJ ICogdG9wb2xvZ3ksIG9ubHkgdGhlIERQIE1TVCBoZWxwZXJzIHNob3VsZCBuZWVkIHRvIHRvdWNo IHRoaXMKKwkgKi8KKwlzdHJ1Y3Qga3JlZiB0b3BvbG9neV9rcmVmOworCisJLyoqCisJICogQG1h bGxvY19rcmVmOiByZWZjb3VudCBmb3IgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGNvbnRhaW5pbmcg dGhpcworCSAqIHN0cnVjdHVyZS4gU2VlIGRybV9kcF9tc3RfZ2V0X21zdGJfbWFsbG9jKCkgYW5k CisJICogZHJtX2RwX21zdF9wdXRfbXN0Yl9tYWxsb2MoKS4KKwkgKi8KKwlzdHJ1Y3Qga3JlZiBt YWxsb2Nfa3JlZjsKKwogCXU4IHJhZFs4XTsKIAl1OCBsY3Q7CiAJaW50IG51bV9wb3J0czsKQEAg LTYyNiw0ICs2NDcsNyBAQCBpbnQgZHJtX2RwX2F0b21pY19yZWxlYXNlX3ZjcGlfc2xvdHMoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogaW50IGRybV9kcF9zZW5kX3Bvd2VyX3VwZG93 bl9waHkoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCiAJCQkJIHN0cnVjdCBk cm1fZHBfbXN0X3BvcnQgKnBvcnQsIGJvb2wgcG93ZXJfdXApOwogCit2b2lkIGRybV9kcF9tc3Rf Z2V0X3BvcnRfbWFsbG9jKHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpOwordm9pZCBkcm1f ZHBfbXN0X3B1dF9wb3J0X21hbGxvYyhzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0KTsKKwog I2VuZGlmCi0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCk5vdXZlYXUgbWFpbGluZyBsaXN0Ck5vdXZlYXVAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vbm91dmVh dQo=