From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: [PATCH v5 06/20] drm/dp_mst: Introduce new refcounting scheme for mstbs and ports Date: Tue, 8 Jan 2019 19:35:03 -0500 Message-ID: <20190109003516.14752-7-lyude@redhat.com> References: <20190109003516.14752-1-lyude@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190109003516.14752-1-lyude-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 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, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, intel-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Jerry Zuo , Daniel Vetter , David Airlie , Harry Wentland , Juston Li List-Id: intel-gfx@lists.freedesktop.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 ZXNpZ24gaXMganVzdCBicm9rZW4uIFVuZm9ydHVuYXRlbHksIHRoZSB1c2FnZSBvZiB0aGVzZSBo ZWxwZXJzIGFyZQpxdWl0ZSBicm9rZW4gYXMgd2VsbC4gU29tZSBkcml2ZXJzIGxpa2UgaTkxNSBo YXZlIGJlZW4gc21hcnQgZW5vdWdoIHRvCmF2b2lkIGFjY2Vzc2luZyBhbnkga2luZCBvZiBpbmZv cm1hdGlvbiBmcm9tIE1TVCBwb3J0IHN0cnVjdHVyZXMsIGJ1dApvdGhlcnMgbGlrZSBub3V2ZWF1 IGhhdmUgYXNzdW1lZCwgdW5kZXJzdGFuZGFibHkgc28sIHRoYXQKZHJtX2RwX21zdF9wb3J0IHN0 cnVjdHVyZXMgYXJlIG5vcm1hbCBhbmQgY2FuIGp1c3QgYmUgYWNjZXNzZWQgYXQgYW55CnRpbWUg d2l0aG91dCB3b3JyeWluZyBhYm91dCB1c2UtYWZ0ZXItZnJlZSBlcnJvcnMuCgpBZnRlciBhIGxv dCBvZiBkaXNjdXNzaW9uLCBtZSBhbmQgRGFuaWVsIFZldHRlciBjYW1lIHVwIHdpdGggYSBiZXR0 ZXIKaWRlYSB0byByZXBsYWNlIGFsbCBvZiB0aGlzLgoKVG8gc3VtbWFyaXplLCBzaW5jZSB0aGlz IGlzIGRvY3VtZW50ZWQgZmFyIG1vcmUgaW5kZXB0aCBpbiB0aGUKZG9jdW1lbnRhdGlvbiB0aGlz IHBhdGNoIGludHJvZHVjZXMsIHdlIG1ha2UgaXQgc28gdGhhdCBkcm1fZHBfbXN0X3BvcnQKYW5k IGRybV9kcF9tc3RfYnJhbmNoIHN0cnVjdHVyZXMgaGF2ZSB0d28gZGlmZmVyZW50IGNsYXNzZXMg b2YKcmVmY291bnRzOiB0b3BvbG9neV9rcmVmLCBhbmQgbWFsbG9jX2tyZWYuIHRvcG9sb2d5X2ty ZWYgY29ycmVzcG9uZHMgdG8KdGhlIGxpZmV0aW1lIG9mIHRoZSBnaXZlbiBkcm1fZHBfbXN0X3Bv cnQgb3IgZHJtX2RwX21zdF9icmFuY2ggaW4gaXQncwpnaXZlbiB0b3BvbG9neS4gT25jZSBpdCBo aXRzIHplcm8sIGFueSBhc3NvY2lhdGVkIGNvbm5lY3RvcnMgYXJlIHJlbW92ZWQKYW5kIHRoZSBi cmFuY2ggb3IgcG9ydCBjYW4gbm8gbG9uZ2VyIGJlIHZhbGlkYXRlZC4gbWFsbG9jX2tyZWYKY29y cmVzcG9uZHMgdG8gdGhlIGxpZmV0aW1lIG9mIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgdGhl IGFjdHVhbApzdHJ1Y3R1cmUsIGFuZCB3aWxsIGFsd2F5cyBiZSBub24temVybyBzbyBsb25nIGFz IHRoZSB0b3BvbG9neV9rcmVmIGlzCm5vbi16ZXJvLiBUaGlzIGdpdmVzIHVzIGEgd2F5IHRvIGFs bG93IGNhbGxlcnMgdG8gaG9sZCBvbnRvIHBvcnQgYW5kCmJyYW5jaCBkZXZpY2Ugc3RydWN0dXJl cyBwYXN0IHRoZWlyIHRvcG9sb2d5IGxpZmV0aW1lLCBhbmQgZHJhbWF0aWNhbGx5CnNpbXBsaWZp ZXMgdGhlIGxpZmV0aW1lcyBvZiBib3RoIHN0cnVjdHVyZXMuIFRoaXMgYWxzbyBmaW5hbGx5IGZp eGVzIHRoZQpwb3J0IGRlYWxsb2NhdGlvbiBwcm9ibGVtLCBwcm9wZXJseS4KCkFkZGl0aW9uYWxs eTogc2luY2UgdGhpcyBub3cgbWVhbnMgdGhhdCB3ZSBjYW4ga2VlcCBwb3J0cyBhbmQgYnJhbmNo CmRldmljZXMgYWxsb2NhdGVkIGluIG1lbW9yeSBmb3IgaG93ZXZlciBsb25nIHdlIG5lZWQsIHdl IG5vIGxvbmdlciBuZWVkCmEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIHRoZSBwb3J0IHZhbGlkYXRp b24gdGhhdCB3ZSBjdXJyZW50bHkgZG8uCgpBZGRpdGlvbmFsbHksIHRoZXJlIGlzIG9uZSBsYXN0 IHNjZW5hcmlvIHRoYXQgdGhpcyBmaXhlcywgd2hpY2ggY291bGRuJ3QKaGF2ZSBiZWVuIGZpeGVk IHByb3Blcmx5IGJlZm9yZWhhbmQ6CgotIENQVTEgdW5yZWZzIHBvcnQgZnJvbSB0b3BvbG9neSAo cmVmY291bnQgMS0+MCkKLSBDUFUyIHJlZnMgcG9ydCBpbiB0b3BvbG9neShyZWZjb3VudCAwLT4x KQoKU2luY2Ugd2Ugbm93IGNhbiBndWFyYW50ZWUgbWVtb3J5IHNhZmV0eSBmb3IgcG9ydHMgYW5k IGJyYW5jaGVzCmFzLW5lZWRlZCwgd2UgYWxzbyBjYW4gbWFrZSBvdXIgbWFpbiByZWZlcmVuY2Ug Y291bnRpbmcgZnVuY3Rpb25zIGZpeAp0aGlzIHByb2JsZW0gYnkgdXNpbmcga3JlZl9nZXRfdW5s ZXNzX3plcm8oKSBpbnRlcm5hbGx5IHNvIHRoYXQgdG9wb2xvZ3kKcmVmY291bnRzIGNhbiBvbmx5 IGV2ZXIgcmVhY2ggMCBvbmNlLgoKQ2hhbmdlcyBzaW5jZSB2MzoKKiBSZW1vdmUgcmViYXNlIGRl dHJpdHVzIC0gZGFudmV0CiogU3BsaXQgb3V0IHB1cmVseSBzdHlsZSBjaGFuZ2VzIGludG8gc2Vw YXJhdGUgcGF0Y2hlcyAtIGh3ZW50bGFuCgpDaGFuZ2VzIHNpbmNlIHYyOgoqIEZpeCBjb21taXQg bWVzc2FnZSAtIGNoZWNrcGF0Y2gKKiBzLyktMS8pIC0gMS9nIC0gY2hlY2twYXRjaAoKQ2hhbmdl cyBzaW5jZSB2MToKKiBSZW1vdmUgZm9yd2FyZCBkZWNsYXJhdGlvbnMgLSBkYW52ZXQKKiBNb3Zl ICJCcmFuY2ggZGV2aWNlIGFuZCBwb3J0IHJlZmNvdW50aW5nIiBzZWN0aW9uIGZyb20gZG9jdW1l bnRhdGlvbgogIGludG8ga2VybmVsLWRvYyBjb21tZW50cyAtIGRhbnZldAoqIEV4cG9ydCBpbnRl cm5hbCB0b3BvbG9neSBsaWZldGltZSBmdW5jdGlvbnMgaW50byB0aGVpciBvd24gc2VjdGlvbiBp bgogIHRoZSBrZXJuZWwtZG9jcyAtIGRhbnZldAoqIHMvQC8mL2cgZm9yIHN0cnVjdCByZWZlcmVu Y2VzIGluIGtlcm5lbC1kb2NzIC0gZGFudmV0CiogRHJvcCB0aGUgIndoZW4gdGhleSBhcmUgbm8g bG9uZ2VyIGJlaW5nIHVzZWQiIGJpdHMgZnJvbSB0aGUga2VybmVsCiAgZG9jcyAtIGRhbnZldAoq IE1vZGlmeSBkaWFncmFtcyB0byBzaG93IGhvdyB0aGUgRFJNIGRyaXZlciBpbnRlcmFjdHMgd2l0 aCB0aGUgdG9wb2xvZ3kKICBhbmQgcGF5bG9hZHMgLSBkYW52ZXQKKiBNYWtlIHN1Z2dlc3RlZCBk b2N1bWVudGF0aW9uIGNoYW5nZXMgZm9yCiAgZHJtX2RwX21zdF90b3BvbG9neV9nZXRfbXN0Yigp IGFuZCBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9wb3J0KCkgLQogIGRhbnZldAoqIEJldHRlciBl eHBsYWluIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBtYWxsb2MgcmVmcyBhbmQgdG9wb2xvZ3kg a3JlZnMKICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZHJtX2RwX21zdF90b3BvbG9neV9nZXRf cG9ydCgpIGFuZAogIGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X21zdGIoKSAtIGRhbnZldAoqIEZp eCAiU2VlIGFsc28iIGluIGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X21zdGIoKSAtIGRhbnZldAoq IFJlbmFtZSBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF8ocG9ydHxtc3RiKSgpIC0+CiAgZHJtX2Rw X21zdF90b3BvbG9neV90cnlfZ2V0Xyhwb3J0fG1zdGIpKCkgYW5kCiAgZHJtX2RwX21zdF90b3Bv bG9neV9yZWZfKHBvcnR8bXN0YikoKSAtPgogIGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0Xyhwb3J0 fG1zdGIpKCkgLSBkYW52ZXQKKiBzL3Nob3VsZC9tdXN0IGluIGRvY3MgLSBkYW52ZXQKKiBXQVJO X09OKHJlZmNvdW50ID09IDApIGluIHRvcG9sb2d5X2dldF8obXN0Ynxwb3J0KSAtIGRhbnZldAoq IE1vdmUga2RvY3MgZm9yIG1zdGIvcG9ydCBzdHJ1Y3RzIGlubGluZSAtIGRhbnZldAoqIFNwbGl0 IGRybV9kcF9nZXRfbGFzdF9jb25uZWN0ZWRfcG9ydF9hbmRfbXN0YigpIGNoYW5nZXMgaW50byB0 aGVpciBvd24KICBjb21taXQgLSBkYW52ZXQKClNpZ25lZC1vZmYtYnk6IEx5dWRlIFBhdWwgPGx5 dWRlQHJlZGhhdC5jb20+ClJldmlld2VkLWJ5OiBIYXJyeSBXZW50bGFuZCA8aGFycnkud2VudGxh bmRAYW1kLmNvbT4KQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KQ2M6IERhdmlk IEFpcmxpZSA8YWlybGllZEByZWRoYXQuY29tPgpDYzogSmVycnkgWnVvIDxKZXJyeS5adW9AYW1k LmNvbT4KQ2M6IEp1c3RvbiBMaSA8anVzdG9uLmxpQGludGVsLmNvbT4KLS0tCiAuLi4vZ3B1L2Rw LW1zdC90b3BvbG9neS1maWd1cmUtMS5kb3QgICAgICAgICAgfCAgNTIgKysKIC4uLi9ncHUvZHAt bXN0L3RvcG9sb2d5LWZpZ3VyZS0yLmRvdCAgICAgICAgICB8ICA1NiArKysKIC4uLi9ncHUvZHAt bXN0L3RvcG9sb2d5LWZpZ3VyZS0zLmRvdCAgICAgICAgICB8ICA1OSArKysKIERvY3VtZW50YXRp b24vZ3B1L2RybS1rbXMtaGVscGVycy5yc3QgICAgICAgICB8ICAyNiArLQogZHJpdmVycy9ncHUv ZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYyAgICAgICAgIHwgNDU3ICsrKysrKysrKysrKysrKy0t LQogaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaCAgICAgICAgICAgICAgIHwgIDMyICst CiA2IGZpbGVzIGNoYW5nZWQsIDYxMyBpbnNlcnRpb25zKCspLCA2OSBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2dwdS9kcC1tc3QvdG9wb2xvZ3ktZmlndXJl LTEuZG90CiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9ncHUvZHAtbXN0L3RvcG9s b2d5LWZpZ3VyZS0yLmRvdAogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vZ3B1L2Rw LW1zdC90b3BvbG9neS1maWd1cmUtMy5kb3QKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dw dS9kcC1tc3QvdG9wb2xvZ3ktZmlndXJlLTEuZG90IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHAtbXN0 L3RvcG9sb2d5LWZpZ3VyZS0xLmRvdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjE1N2UxN2M3ZTBiMAotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZ3B1 L2RwLW1zdC90b3BvbG9neS1maWd1cmUtMS5kb3QKQEAgLTAsMCArMSw1MiBAQAorZGlncmFwaCBU IHsKKyAgICAvKiBNYWtlIHN1cmUgb3VyIHBheWxvYWRzIGFyZSBhbHdheXMgZHJhd24gYmVsb3cg dGhlIGRyaXZlciBub2RlICovCisgICAgc3ViZ3JhcGggY2x1c3Rlcl9kcml2ZXIgeworICAgICAg ICBmaWxsY29sb3IgPSBncmV5OworICAgICAgICBzdHlsZSA9IGZpbGxlZDsKKyAgICAgICAgZHJp dmVyIC0+IHtwYXlsb2FkMSwgcGF5bG9hZDJ9IFtkaXI9bm9uZV07CisgICAgfQorCisgICAgLyog RHJpdmVyIG1hbGxvYyByZWZlcmVuY2VzICovCisgICAgZWRnZSBbc3R5bGU9ZGFzaGVkXTsKKyAg ICBkcml2ZXIgLT4gcG9ydDE7CisgICAgZHJpdmVyIC0+IHBvcnQyOworICAgIGRyaXZlciAtPiBw b3J0MzplOworICAgIGRyaXZlciAtPiBwb3J0NDsKKworICAgIHBheWxvYWQxOnMgLT4gcG9ydDE6 ZTsKKyAgICBwYXlsb2FkMjpzIC0+IHBvcnQzOmU7CisgICAgZWRnZSBbc3R5bGU9IiJdOworCisg ICAgc3ViZ3JhcGggY2x1c3Rlcl90b3BvbG9neSB7CisgICAgICAgIGxhYmVsPSJUb3BvbG9neSBN YW5hZ2VyIjsKKyAgICAgICAgbGFiZWxsb2M9Ym90dG9tOworCisgICAgICAgIC8qIFRvcG9sb2d5 IHJlZmVyZW5jZXMgKi8KKyAgICAgICAgbXN0YjEgLT4ge3BvcnQxLCBwb3J0Mn07CisgICAgICAg IHBvcnQxIC0+IG1zdGIyOworICAgICAgICBwb3J0MiAtPiBtc3RiMyAtPiB7cG9ydDMsIHBvcnQ0 fTsKKyAgICAgICAgcG9ydDMgLT4gbXN0YjQ7CisKKyAgICAgICAgLyogTWFsbG9jIHJlZmVyZW5j ZXMgKi8KKyAgICAgICAgZWRnZSBbc3R5bGU9ZGFzaGVkO2Rpcj1iYWNrXTsKKyAgICAgICAgbXN0 YjEgLT4ge3BvcnQxLCBwb3J0Mn07CisgICAgICAgIHBvcnQxIC0+IG1zdGIyOworICAgICAgICBw b3J0MiAtPiBtc3RiMyAtPiB7cG9ydDMsIHBvcnQ0fTsKKyAgICAgICAgcG9ydDMgLT4gbXN0YjQ7 CisgICAgfQorCisgICAgZHJpdmVyIFtsYWJlbD0iRFJNIGRyaXZlciI7c3R5bGU9ZmlsbGVkO3No YXBlPWJveDtmaWxsY29sb3I9bGlnaHRibHVlXTsKKworICAgIHBheWxvYWQxIFtsYWJlbD0iUGF5 bG9hZCAjMSI7c3R5bGU9ZmlsbGVkO3NoYXBlPWJveDtmaWxsY29sb3I9bGlnaHRibHVlXTsKKyAg ICBwYXlsb2FkMiBbbGFiZWw9IlBheWxvYWQgIzIiO3N0eWxlPWZpbGxlZDtzaGFwZT1ib3g7Zmls bGNvbG9yPWxpZ2h0Ymx1ZV07CisKKyAgICBtc3RiMSBbbGFiZWw9Ik1TVEIgIzEiO3N0eWxlPWZp bGxlZDtmaWxsY29sb3I9cGFsZWdyZWVuO3NoYXBlPW92YWxdOworICAgIG1zdGIyIFtsYWJlbD0i TVNUQiAjMiI7c3R5bGU9ZmlsbGVkO2ZpbGxjb2xvcj1wYWxlZ3JlZW47c2hhcGU9b3ZhbF07Cisg ICAgbXN0YjMgW2xhYmVsPSJNU1RCICMzIjtzdHlsZT1maWxsZWQ7ZmlsbGNvbG9yPXBhbGVncmVl bjtzaGFwZT1vdmFsXTsKKyAgICBtc3RiNCBbbGFiZWw9Ik1TVEIgIzQiO3N0eWxlPWZpbGxlZDtm aWxsY29sb3I9cGFsZWdyZWVuO3NoYXBlPW92YWxdOworCisgICAgcG9ydDEgW2xhYmVsPSJQb3J0 ICMxIjtzaGFwZT1vdmFsXTsKKyAgICBwb3J0MiBbbGFiZWw9IlBvcnQgIzIiO3NoYXBlPW92YWxd OworICAgIHBvcnQzIFtsYWJlbD0iUG9ydCAjMyI7c2hhcGU9b3ZhbF07CisgICAgcG9ydDQgW2xh YmVsPSJQb3J0ICM0IjtzaGFwZT1vdmFsXTsKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24v Z3B1L2RwLW1zdC90b3BvbG9neS1maWd1cmUtMi5kb3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcC1t c3QvdG9wb2xvZ3ktZmlndXJlLTIuZG90Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uNDI0M2RkMTczN2NiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9n cHUvZHAtbXN0L3RvcG9sb2d5LWZpZ3VyZS0yLmRvdApAQCAtMCwwICsxLDU2IEBACitkaWdyYXBo IFQgeworICAgIC8qIE1ha2Ugc3VyZSBvdXIgcGF5bG9hZHMgYXJlIGFsd2F5cyBkcmF3biBiZWxv dyB0aGUgZHJpdmVyIG5vZGUgKi8KKyAgICBzdWJncmFwaCBjbHVzdGVyX2RyaXZlciB7CisgICAg ICAgIGZpbGxjb2xvciA9IGdyZXk7CisgICAgICAgIHN0eWxlID0gZmlsbGVkOworICAgICAgICBk cml2ZXIgLT4ge3BheWxvYWQxLCBwYXlsb2FkMn0gW2Rpcj1ub25lXTsKKyAgICB9CisKKyAgICAv KiBEcml2ZXIgbWFsbG9jIHJlZmVyZW5jZXMgKi8KKyAgICBlZGdlIFtzdHlsZT1kYXNoZWRdOwor ICAgIGRyaXZlciAtPiBwb3J0MTsKKyAgICBkcml2ZXIgLT4gcG9ydDI7CisgICAgZHJpdmVyIC0+ IHBvcnQzOmU7CisgICAgZHJpdmVyIC0+IHBvcnQ0IFtjb2xvcj1yZWRdOworCisgICAgcGF5bG9h ZDE6cyAtPiBwb3J0MTplOworICAgIHBheWxvYWQyOnMgLT4gcG9ydDM6ZTsKKyAgICBlZGdlIFtz dHlsZT0iIl07CisKKyAgICBzdWJncmFwaCBjbHVzdGVyX3RvcG9sb2d5IHsKKyAgICAgICAgbGFi ZWw9IlRvcG9sb2d5IE1hbmFnZXIiOworICAgICAgICBsYWJlbGxvYz1ib3R0b207CisKKyAgICAg ICAgLyogVG9wb2xvZ3kgcmVmZXJlbmNlcyAqLworICAgICAgICBtc3RiMSAtPiB7cG9ydDEsIHBv cnQyfTsKKyAgICAgICAgcG9ydDEgLT4gbXN0YjI7CisgICAgICAgIGVkZ2UgW2NvbG9yPXJlZF07 CisgICAgICAgIHBvcnQyIC0+IG1zdGIzIC0+IHtwb3J0MywgcG9ydDR9OworICAgICAgICBwb3J0 MyAtPiBtc3RiNDsKKyAgICAgICAgZWRnZSBbY29sb3I9IiJdOworCisgICAgICAgIC8qIE1hbGxv YyByZWZlcmVuY2VzICovCisgICAgICAgIGVkZ2UgW3N0eWxlPWRhc2hlZDtkaXI9YmFja107Cisg ICAgICAgIG1zdGIxIC0+IHtwb3J0MSwgcG9ydDJ9OworICAgICAgICBwb3J0MSAtPiBtc3RiMjsK KyAgICAgICAgcG9ydDIgLT4gbXN0YjMgLT4gcG9ydDM7CisgICAgICAgIGVkZ2UgW2NvbG9yPXJl ZF07CisgICAgICAgIG1zdGIzIC0+IHBvcnQ0OworICAgICAgICBwb3J0MyAtPiBtc3RiNDsKKyAg ICB9CisKKyAgICBtc3RiMSBbbGFiZWw9Ik1TVEIgIzEiO3N0eWxlPWZpbGxlZDtmaWxsY29sb3I9 cGFsZWdyZWVuXTsKKyAgICBtc3RiMiBbbGFiZWw9Ik1TVEIgIzIiO3N0eWxlPWZpbGxlZDtmaWxs Y29sb3I9cGFsZWdyZWVuXTsKKyAgICBtc3RiMyBbbGFiZWw9Ik1TVEIgIzMiO3N0eWxlPWZpbGxl ZDtmaWxsY29sb3I9cGFsZWdyZWVuXTsKKyAgICBtc3RiNCBbbGFiZWw9Ik1TVEIgIzQiO3N0eWxl PWZpbGxlZDtmaWxsY29sb3I9Z3JleV07CisKKyAgICBwb3J0MSBbbGFiZWw9IlBvcnQgIzEiXTsK KyAgICBwb3J0MiBbbGFiZWw9IlBvcnQgIzIiXTsKKyAgICBwb3J0MyBbbGFiZWw9IlBvcnQgIzMi XTsKKyAgICBwb3J0NCBbbGFiZWw9IlBvcnQgIzQiO3N0eWxlPWZpbGxlZDtmaWxsY29sb3I9Z3Jl eV07CisKKyAgICBkcml2ZXIgW2xhYmVsPSJEUk0gZHJpdmVyIjtzdHlsZT1maWxsZWQ7c2hhcGU9 Ym94O2ZpbGxjb2xvcj1saWdodGJsdWVdOworCisgICAgcGF5bG9hZDEgW2xhYmVsPSJQYXlsb2Fk ICMxIjtzdHlsZT1maWxsZWQ7c2hhcGU9Ym94O2ZpbGxjb2xvcj1saWdodGJsdWVdOworICAgIHBh eWxvYWQyIFtsYWJlbD0iUGF5bG9hZCAjMiI7c3R5bGU9ZmlsbGVkO3NoYXBlPWJveDtmaWxsY29s b3I9bGlnaHRibHVlXTsKK30KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L2RwLW1zdC90 b3BvbG9neS1maWd1cmUtMy5kb3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcC1tc3QvdG9wb2xvZ3kt ZmlndXJlLTMuZG90Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNmNk NzhkMDY3NzhiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvZHAtbXN0L3Rv cG9sb2d5LWZpZ3VyZS0zLmRvdApAQCAtMCwwICsxLDU5IEBACitkaWdyYXBoIFQgeworICAgIC8q IE1ha2Ugc3VyZSBvdXIgcGF5bG9hZHMgYXJlIGFsd2F5cyBkcmF3biBiZWxvdyB0aGUgZHJpdmVy IG5vZGUgKi8KKyAgICBzdWJncmFwaCBjbHVzdGVyX2RyaXZlciB7CisgICAgICAgIGZpbGxjb2xv ciA9IGdyZXk7CisgICAgICAgIHN0eWxlID0gZmlsbGVkOworICAgICAgICBlZGdlIFtkaXI9bm9u ZV07CisgICAgICAgIGRyaXZlciAtPiBwYXlsb2FkMTsKKyAgICAgICAgZHJpdmVyIC0+IHBheWxv YWQyIFtwZW53aWR0aD0zXTsKKyAgICAgICAgZWRnZSBbZGlyPSIiXTsKKyAgICB9CisKKyAgICAv KiBEcml2ZXIgbWFsbG9jIHJlZmVyZW5jZXMgKi8KKyAgICBlZGdlIFtzdHlsZT1kYXNoZWRdOwor ICAgIGRyaXZlciAtPiBwb3J0MTsKKyAgICBkcml2ZXIgLT4gcG9ydDI7CisgICAgZHJpdmVyIC0+ IHBvcnQzOmU7CisgICAgZHJpdmVyIC0+IHBvcnQ0IFtjb2xvcj1ncmV5XTsKKyAgICBwYXlsb2Fk MTpzIC0+IHBvcnQxOmU7CisgICAgcGF5bG9hZDI6cyAtPiBwb3J0MzplIFtwZW53aWR0aD0zXTsK KyAgICBlZGdlIFtzdHlsZT0iIl07CisKKyAgICBzdWJncmFwaCBjbHVzdGVyX3RvcG9sb2d5IHsK KyAgICAgICAgbGFiZWw9IlRvcG9sb2d5IE1hbmFnZXIiOworICAgICAgICBsYWJlbGxvYz1ib3R0 b207CisKKyAgICAgICAgLyogVG9wb2xvZ3kgcmVmZXJlbmNlcyAqLworICAgICAgICBtc3RiMSAt PiB7cG9ydDEsIHBvcnQyfTsKKyAgICAgICAgcG9ydDEgLT4gbXN0YjI7CisgICAgICAgIGVkZ2Ug W2NvbG9yPWdyZXldOworICAgICAgICBwb3J0MiAtPiBtc3RiMyAtPiB7cG9ydDMsIHBvcnQ0fTsK KyAgICAgICAgcG9ydDMgLT4gbXN0YjQ7CisgICAgICAgIGVkZ2UgW2NvbG9yPSIiXTsKKworICAg ICAgICAvKiBNYWxsb2MgcmVmZXJlbmNlcyAqLworICAgICAgICBlZGdlIFtzdHlsZT1kYXNoZWQ7 ZGlyPWJhY2tdOworICAgICAgICBtc3RiMSAtPiB7cG9ydDEsIHBvcnQyfTsKKyAgICAgICAgcG9y dDEgLT4gbXN0YjI7CisgICAgICAgIHBvcnQyIC0+IG1zdGIzIFtwZW53aWR0aD0zXTsKKyAgICAg ICAgbXN0YjMgLT4gcG9ydDMgW3BlbndpZHRoPTNdOworICAgICAgICBlZGdlIFtjb2xvcj1ncmV5 XTsKKyAgICAgICAgbXN0YjMgLT4gcG9ydDQ7CisgICAgICAgIHBvcnQzIC0+IG1zdGI0OworICAg IH0KKworICAgIG1zdGIxIFtsYWJlbD0iTVNUQiAjMSI7c3R5bGU9ZmlsbGVkO2ZpbGxjb2xvcj1w YWxlZ3JlZW5dOworICAgIG1zdGIyIFtsYWJlbD0iTVNUQiAjMiI7c3R5bGU9ZmlsbGVkO2ZpbGxj b2xvcj1wYWxlZ3JlZW5dOworICAgIG1zdGIzIFtsYWJlbD0iTVNUQiAjMyI7c3R5bGU9ZmlsbGVk O2ZpbGxjb2xvcj1wYWxlZ3JlZW47cGVud2lkdGg9M107CisgICAgbXN0YjQgW2xhYmVsPSJNU1RC ICM0IjtzdHlsZT1maWxsZWQ7ZmlsbGNvbG9yPWdyZXldOworCisgICAgcG9ydDEgW2xhYmVsPSJQ b3J0ICMxIl07CisgICAgcG9ydDIgW2xhYmVsPSJQb3J0ICMyIjtwZW53aWR0aD01XTsKKyAgICBw b3J0MyBbbGFiZWw9IlBvcnQgIzMiO3BlbndpZHRoPTNdOworICAgIHBvcnQ0IFtsYWJlbD0iUG9y dCAjNCI7c3R5bGU9ZmlsbGVkO2ZpbGxjb2xvcj1ncmV5XTsKKworICAgIGRyaXZlciBbbGFiZWw9 IkRSTSBkcml2ZXIiO3N0eWxlPWZpbGxlZDtzaGFwZT1ib3g7ZmlsbGNvbG9yPWxpZ2h0Ymx1ZV07 CisKKyAgICBwYXlsb2FkMSBbbGFiZWw9IlBheWxvYWQgIzEiO3N0eWxlPWZpbGxlZDtzaGFwZT1i b3g7ZmlsbGNvbG9yPWxpZ2h0Ymx1ZV07CisgICAgcGF5bG9hZDIgW2xhYmVsPSJQYXlsb2FkICMy IjtzdHlsZT1maWxsZWQ7c2hhcGU9Ym94O2ZpbGxjb2xvcj1saWdodGJsdWU7cGVud2lkdGg9M107 Cit9CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0IGIv RG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxwZXJzLnJzdAppbmRleCBiNDIyZWI4ZWRmMTYu LjdhM2ZjNTY5YmM2OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1oZWxw ZXJzLnJzdAorKysgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0ta21zLWhlbHBlcnMucnN0CkBAIC0y MDgsMTggKzIwOCw0MCBAQCBEaXNwbGF5IFBvcnQgRHVhbCBNb2RlIEFkYXB0b3IgSGVscGVyIEZ1 bmN0aW9ucyBSZWZlcmVuY2UKIC4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX2Rw X2R1YWxfbW9kZV9oZWxwZXIuYwogICAgOmV4cG9ydDoKIAotRGlzcGxheSBQb3J0IE1TVCBIZWxw ZXIgRnVuY3Rpb25zIFJlZmVyZW5jZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorRGlzcGxheSBQb3J0IE1TVCBIZWxwZXJzCis9PT09PT09PT09PT09PT09PT09 PT09PT0KKworT3ZlcnZpZXcKKy0tLS0tLS0tCiAKIC4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dw dS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jCiAgICA6ZG9jOiBkcCBtc3QgaGVscGVyCiAKKy4u IGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jCisgICA6 ZG9jOiBCcmFuY2ggZGV2aWNlIGFuZCBwb3J0IHJlZmNvdW50aW5nCisKK0Z1bmN0aW9ucyBSZWZl cmVuY2UKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKwogLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvZHJt L2RybV9kcF9tc3RfaGVscGVyLmgKICAgIDppbnRlcm5hbDoKIAogLi4ga2VybmVsLWRvYzo6IGRy aXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0X3RvcG9sb2d5LmMKICAgIDpleHBvcnQ6CiAKK1RvcG9s b2d5IExpZmV0aW1lIEludGVybmFscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1Ro ZXNlIGZ1bmN0aW9ucyBhcmVuJ3QgZXhwb3J0ZWQgdG8gZHJpdmVycywgYnV0IGFyZSBkb2N1bWVu dGVkIGhlcmUgdG8gaGVscCBtYWtlCit0aGUgTVNUIHRvcG9sb2d5IGhlbHBlcnMgZWFzaWVyIHRv IHVuZGVyc3RhbmQKKworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fZHBfbXN0 X3RvcG9sb2d5LmMKKyAgIDpmdW5jdGlvbnM6IGRybV9kcF9tc3RfdG9wb2xvZ3lfdHJ5X2dldF9t c3RiIGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X21zdGIKKyAgICAgICAgICAgICAgIGRybV9kcF9t c3RfdG9wb2xvZ3lfcHV0X21zdGIKKyAgICAgICAgICAgICAgIGRybV9kcF9tc3RfdG9wb2xvZ3lf dHJ5X2dldF9wb3J0IGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X3BvcnQKKyAgICAgICAgICAgICAg IGRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X3BvcnQKKyAgICAgICAgICAgICAgIGRybV9kcF9tc3Rf Z2V0X21zdGJfbWFsbG9jIGRybV9kcF9tc3RfcHV0X21zdGJfbWFsbG9jCisKIE1JUEkgRFNJIEhl bHBlciBGdW5jdGlvbnMgUmVmZXJlbmNlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3RfdG9wb2xvZ3kuYwppbmRleCAwNzRlOTg1MDkz Y2EuLmM1M2NmN2ViMWRiYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9tc3Rf dG9wb2xvZ3kuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX21zdF90b3BvbG9neS5jCkBA IC04NTAsNDYgKzg1MCwyMTEgQEAgc3RhdGljIHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqZHJt X2RwX2FkZF9tc3RfYnJhbmNoX2RldmljZSh1OCBsY3QsIHU4ICpyYWQpCiAJaWYgKGxjdCA+IDEp CiAJCW1lbWNweShtc3RiLT5yYWQsIHJhZCwgbGN0IC8gMik7CiAJSU5JVF9MSVNUX0hFQUQoJm1z dGItPnBvcnRzKTsKLQlrcmVmX2luaXQoJm1zdGItPmtyZWYpOworCWtyZWZfaW5pdCgmbXN0Yi0+ dG9wb2xvZ3lfa3JlZik7CisJa3JlZl9pbml0KCZtc3RiLT5tYWxsb2Nfa3JlZik7CiAJcmV0dXJu IG1zdGI7CiB9CiAKLXN0YXRpYyB2b2lkIGRybV9kcF9mcmVlX21zdF9wb3J0KHN0cnVjdCBrcmVm ICprcmVmKTsKLQogc3RhdGljIHZvaWQgZHJtX2RwX2ZyZWVfbXN0X2JyYW5jaF9kZXZpY2Uoc3Ry dWN0IGtyZWYgKmtyZWYpCiB7Ci0Jc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICptc3RiID0gY29u dGFpbmVyX29mKGtyZWYsIHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCwga3JlZik7Ci0JaWYgKG1z dGItPnBvcnRfcGFyZW50KSB7Ci0JCWlmIChsaXN0X2VtcHR5KCZtc3RiLT5wb3J0X3BhcmVudC0+ bmV4dCkpCi0JCQlrcmVmX3B1dCgmbXN0Yi0+cG9ydF9wYXJlbnQtPmtyZWYsIGRybV9kcF9mcmVl X21zdF9wb3J0KTsKLQl9CisJc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICptc3RiID0KKwkJY29u dGFpbmVyX29mKGtyZWYsIHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCwgbWFsbG9jX2tyZWYpOwor CisJaWYgKG1zdGItPnBvcnRfcGFyZW50KQorCQlkcm1fZHBfbXN0X3B1dF9wb3J0X21hbGxvYyht c3RiLT5wb3J0X3BhcmVudCk7CisKIAlrZnJlZShtc3RiKTsKIH0KIAorLyoqCisgKiBET0M6IEJy YW5jaCBkZXZpY2UgYW5kIHBvcnQgcmVmY291bnRpbmcKKyAqCisgKiBUb3BvbG9neSByZWZjb3Vu dCBvdmVydmlldworICogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKyAqCisgKiBUaGUgcmVm Y291bnRpbmcgc2NoZW1lcyBmb3IgJnN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCBhbmQgJnN0cnVj dAorICogZHJtX2RwX21zdF9wb3J0IGFyZSBzb21ld2hhdCB1bnVzdWFsLiBCb3RoIHBvcnRzIGFu ZCBicmFuY2ggZGV2aWNlcyBoYXZlCisgKiB0d28gZGlmZmVyZW50IGtpbmRzIG9mIHJlZmNvdW50 czogdG9wb2xvZ3kgcmVmY291bnRzLCBhbmQgbWFsbG9jIHJlZmNvdW50cy4KKyAqCisgKiBUb3Bv bG9neSByZWZjb3VudHMgYXJlIG5vdCBleHBvc2VkIHRvIGRyaXZlcnMsIGFuZCBhcmUgaGFuZGxl ZCBpbnRlcm5hbGx5CisgKiBieSB0aGUgRFAgTVNUIGhlbHBlcnMuIFRoZSBoZWxwZXJzIHVzZSB0 aGVtIGluIG9yZGVyIHRvIHByZXZlbnQgdGhlCisgKiBpbi1tZW1vcnkgdG9wb2xvZ3kgc3RhdGUg ZnJvbSBiZWluZyBjaGFuZ2VkIGluIHRoZSBtaWRkbGUgb2YgY3JpdGljYWwKKyAqIG9wZXJhdGlv bnMgbGlrZSBjaGFuZ2luZyB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgcGF5bG9hZCBhbGxvY2F0aW9u cy4gVGhpcworICogbWVhbnMgZWFjaCBicmFuY2ggYW5kIHBvcnQgd2lsbCBiZSBjb25zaWRlcmVk IHRvIGJlIGNvbm5lY3RlZCB0byB0aGUgcmVzdAorICogb2YgdGhlIHRvcG9sb2d5IHVudGlsIGl0 J3MgdG9wb2xvZ3kgcmVmY291bnQgcmVhY2hlcyB6ZXJvLiBBZGRpdGlvbmFsbHksCisgKiBmb3Ig cG9ydHMgdGhpcyBtZWFucyB0aGF0IHRoZWlyIGFzc29jaWF0ZWQgJnN0cnVjdCBkcm1fY29ubmVj dG9yIHdpbGwgc3RheQorICogcmVnaXN0ZXJlZCB3aXRoIHVzZXJzcGFjZSB1bnRpbCB0aGUgcG9y dCdzIHJlZmNvdW50IHJlYWNoZXMgMC4KKyAqCisgKiBNYWxsb2MgcmVmY291bnQgb3ZlcnZpZXcK KyAqIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorICoKKyAqIE1hbGxvYyByZWZlcmVuY2VzIGFy ZSB1c2VkIHRvIGtlZXAgYSAmc3RydWN0IGRybV9kcF9tc3RfcG9ydCBvciAmc3RydWN0CisgKiBk cm1fZHBfbXN0X2JyYW5jaCBhbGxvY2F0ZWQgZXZlbiBhZnRlciBhbGwgb2YgaXRzIHRvcG9sb2d5 IHJlZmVyZW5jZXMgaGF2ZQorICogYmVlbiBkcm9wcGVkLCBzbyB0aGF0IHRoZSBkcml2ZXIgb3Ig TVNUIGhlbHBlcnMgY2FuIHNhZmVseSBhY2Nlc3MgZWFjaAorICogYnJhbmNoJ3MgbGFzdCBrbm93 biBzdGF0ZSBiZWZvcmUgaXQgd2FzIGRpc2Nvbm5lY3RlZCBmcm9tIHRoZSB0b3BvbG9neS4KKyAq IFdoZW4gdGhlIG1hbGxvYyByZWZjb3VudCBvZiBhIHBvcnQgb3IgYnJhbmNoIHJlYWNoZXMgMCwg dGhlIG1lbW9yeQorICogYWxsb2NhdGlvbiBjb250YWluaW5nIHRoZSAmc3RydWN0IGRybV9kcF9t c3RfYnJhbmNoIG9yICZzdHJ1Y3QKKyAqIGRybV9kcF9tc3RfcG9ydCByZXNwZWN0aXZlbHkgd2ls bCBiZSBmcmVlZC4KKyAqCisgKiBGb3IgJnN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCwgbWFsbG9j IHJlZmNvdW50cyBhcmUgbm90IGN1cnJlbnRseSBleHBvc2VkCisgKiB0byBkcml2ZXJzLiBBcyBv ZiB3cml0aW5nIHRoaXMgZG9jdW1lbnRhdGlvbiwgdGhlcmUgYXJlIG5vIGRyaXZlcnMgdGhhdAor ICogaGF2ZSBhIHVzZWNhc2UgZm9yIGFjY2Vzc2luZyAmc3RydWN0IGRybV9kcF9tc3RfYnJhbmNo IG91dHNpZGUgb2YgdGhlIE1TVAorICogaGVscGVycy4gRXhwb3NpbmcgdGhpcyBBUEkgdG8gZHJp dmVycyBpbiBhIHJhY2UtZnJlZSBtYW5uZXIgd291bGQgdGFrZSBtb3JlCisgKiB0d2Vha2luZyBv ZiB0aGUgcmVmY291bnRpbmcgc2NoZW1lLCBob3dldmVyIHBhdGNoZXMgYXJlIHdlbGNvbWUgcHJv dmlkZWQKKyAqIHRoZXJlIGlzIGEgbGVnaXRpbWF0ZSBkcml2ZXIgdXNlY2FzZSBmb3IgdGhpcy4K KyAqCisgKiBSZWZjb3VudCByZWxhdGlvbnNoaXBzIGluIGEgdG9wb2xvZ3kKKyAqIH5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorICoKKyAqIExldCdzIHRha2UgYSBsb29rIGF0 IHdoeSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdG9wb2xvZ3kgYW5kIG1hbGxvYworICogcmVm Y291bnRzIGlzIGRlc2lnbmVkIHRoZSB3YXkgaXQgaXMuCisgKgorICogLi4ga2VybmVsLWZpZ3Vy ZTo6IGRwLW1zdC90b3BvbG9neS1maWd1cmUtMS5kb3QKKyAqCisgKiAgICBBbiBleGFtcGxlIG9m IHRvcG9sb2d5IGFuZCBtYWxsb2MgcmVmcyBpbiBhIERQIE1TVCB0b3BvbG9neSB3aXRoIHR3bwor ICogICAgYWN0aXZlIHBheWxvYWRzLiBUb3BvbG9neSByZWZjb3VudCBpbmNyZW1lbnRzIGFyZSBp bmRpY2F0ZWQgYnkgc29saWQKKyAqICAgIGxpbmVzLCBhbmQgbWFsbG9jIHJlZmNvdW50IGluY3Jl bWVudHMgYXJlIGluZGljYXRlZCBieSBkYXNoZWQgbGluZXMuCisgKiAgICBFYWNoIHN0YXJ0cyBm cm9tIHRoZSBicmFuY2ggd2hpY2ggaW5jcmVtZW50ZWQgdGhlIHJlZmNvdW50LCBhbmQgZW5kcyBh dAorICogICAgdGhlIGJyYW5jaCB0byB3aGljaCB0aGUgcmVmY291bnQgYmVsb25ncyB0by4KKyAq CisgKiBBcyB5b3UgY2FuIHNlZSBpbiBmaWd1cmUgMSwgZXZlcnkgYnJhbmNoIGluY3JlbWVudHMg dGhlIHRvcG9sb2d5IHJlZmNvdW50CisgKiBvZiBpdCdzIGNoaWxkcmVuLCBhbmQgaW5jcmVtZW50 cyB0aGUgbWFsbG9jIHJlZmNvdW50IG9mIGl0J3MgcGFyZW50LgorICogQWRkaXRpb25hbGx5LCBl dmVyeSBwYXlsb2FkIGluY3JlbWVudHMgdGhlIG1hbGxvYyByZWZjb3VudCBvZiBpdCdzIGFzc2ln bmVkCisgKiBwb3J0IGJ5IDEuCisgKgorICogU28sIHdoYXQgd291bGQgaGFwcGVuIGlmIE1TVEIg IzMgZnJvbSB0aGUgYWJvdmUgZmlndXJlIHdhcyB1bnBsdWdnZWQgZnJvbQorICogdGhlIHN5c3Rl bSwgYnV0IHRoZSBkcml2ZXIgaGFkbid0IHlldCByZW1vdmVkIHBheWxvYWQgIzIgZnJvbSBwb3J0 ICMzPyBUaGUKKyAqIHRvcG9sb2d5IHdvdWxkIHN0YXJ0IHRvIGxvb2sgbGlrZSBmaWd1cmUgMi4K KyAqCisgKiAuLiBrZXJuZWwtZmlndXJlOjogZHAtbXN0L3RvcG9sb2d5LWZpZ3VyZS0yLmRvdAor ICoKKyAqICAgIFBvcnRzIGFuZCBicmFuY2ggZGV2aWNlcyB3aGljaCBoYXZlIGJlZW4gcmVsZWFz ZWQgZnJvbSBtZW1vcnkgYXJlCisgKiAgICBjb2xvcmVkIGdyZXksIGFuZCByZWZlcmVuY2VzIHdo aWNoIGhhdmUgYmVlbiByZW1vdmVkIGFyZSBjb2xvcmVkIHJlZC4KKyAqCisgKiBXaGVuZXZlciBh IHBvcnQgb3IgYnJhbmNoIGRldmljZSdzIHRvcG9sb2d5IHJlZmNvdW50IHJlYWNoZXMgemVybywg aXQgd2lsbAorICogZGVjcmVtZW50IHRoZSB0b3BvbG9neSByZWZjb3VudHMgb2YgYWxsIGl0cyBj aGlsZHJlbiwgdGhlIG1hbGxvYyByZWZjb3VudAorICogb2YgaXRzIHBhcmVudCwgYW5kIGZpbmFs bHkgaXRzIG93biBtYWxsb2MgcmVmY291bnQuIEZvciBNU1RCICM0IGFuZCBwb3J0CisgKiAjNCwg dGhpcyBtZWFucyB0aGV5IGJvdGggaGF2ZSBiZWVuIGRpc2Nvbm5lY3RlZCBmcm9tIHRoZSB0b3Bv bG9neSBhbmQgZnJlZWQKKyAqIGZyb20gbWVtb3J5LiBCdXQsIGJlY2F1c2UgcGF5bG9hZCAjMiBp cyBzdGlsbCBob2xkaW5nIGEgcmVmZXJlbmNlIHRvIHBvcnQKKyAqICMzLCBwb3J0ICMzIGlzIHJl bW92ZWQgZnJvbSB0aGUgdG9wb2xvZ3kgYnV0IGl0J3MgJnN0cnVjdCBkcm1fZHBfbXN0X3BvcnQK KyAqIGlzIHN0aWxsIGFjY2Vzc2libGUgZnJvbSBtZW1vcnkuIFRoaXMgYWxzbyBtZWFucyBwb3J0 ICMzIGhhcyBub3QgeWV0CisgKiBkZWNyZW1lbnRlZCB0aGUgbWFsbG9jIHJlZmNvdW50IG9mIE1T VEIgIzMsIHNvIGl0J3MgJnN0cnVjdAorICogZHJtX2RwX21zdF9icmFuY2ggd2lsbCBhbHNvIHN0 YXkgYWxsb2NhdGVkIGluIG1lbW9yeSB1bnRpbCBwb3J0ICMzJ3MKKyAqIG1hbGxvYyByZWZjb3Vu dCByZWFjaGVzIDAuCisgKgorICogVGhpcyByZWxhdGlvbnNoaXAgaXMgbmVjZXNzYXJ5IGJlY2F1 c2UgaW4gb3JkZXIgdG8gcmVsZWFzZSBwYXlsb2FkICMyLCB3ZQorICogbmVlZCB0byBiZSBhYmxl IHRvIGZpZ3VyZSBvdXQgdGhlIGxhc3QgcmVsYXRpdmUgb2YgcG9ydCAjMyB0aGF0J3Mgc3RpbGwK KyAqIGNvbm5lY3RlZCB0byB0aGUgdG9wb2xvZ3kuIEluIHRoaXMgY2FzZSwgd2Ugd291bGQgdHJh dmVsIHVwIHRoZSB0b3BvbG9neSBhcworICogc2hvd24gaW4gZmlndXJlIDMuCisgKgorICogLi4g a2VybmVsLWZpZ3VyZTo6IGRwLW1zdC90b3BvbG9neS1maWd1cmUtMy5kb3QKKyAqCisgKiBBbmQg ZmluYWxseSwgcmVtb3ZlIHBheWxvYWQgIzIgYnkgY29tbXVuaWNhdGluZyB3aXRoIHBvcnQgIzIg dGhyb3VnaAorICogc2lkZWJhbmQgdHJhbnNhY3Rpb25zLgorICovCisKKy8qKgorICogZHJtX2Rw X21zdF9nZXRfbXN0Yl9tYWxsb2MoKSAtIEluY3JlbWVudCB0aGUgbWFsbG9jIHJlZmNvdW50IG9m IGEgYnJhbmNoCisgKiBkZXZpY2UKKyAqIEBtc3RiOiBUaGUgJnN0cnVjdCBkcm1fZHBfbXN0X2Jy YW5jaCB0byBpbmNyZW1lbnQgdGhlIG1hbGxvYyByZWZjb3VudCBvZgorICoKKyAqIEluY3JlbWVu dHMgJmRybV9kcF9tc3RfYnJhbmNoLm1hbGxvY19rcmVmLiBXaGVuCisgKiAmZHJtX2RwX21zdF9i cmFuY2gubWFsbG9jX2tyZWYgcmVhY2hlcyAwLCB0aGUgbWVtb3J5IGFsbG9jYXRpb24gZm9yIEBt c3RiCisgKiB3aWxsIGJlIHJlbGVhc2VkIGFuZCBAbXN0YiBtYXkgbm8gbG9uZ2VyIGJlIHVzZWQu CisgKgorICogU2VlIGFsc286IGRybV9kcF9tc3RfcHV0X21zdGJfbWFsbG9jKCkKKyAqLworc3Rh dGljIHZvaWQKK2RybV9kcF9tc3RfZ2V0X21zdGJfbWFsbG9jKHN0cnVjdCBkcm1fZHBfbXN0X2Jy YW5jaCAqbXN0YikKK3sKKwlrcmVmX2dldCgmbXN0Yi0+bWFsbG9jX2tyZWYpOworCURSTV9ERUJV RygibXN0YiAlcCAoJWQpXG4iLCBtc3RiLCBrcmVmX3JlYWQoJm1zdGItPm1hbGxvY19rcmVmKSk7 Cit9CisKKy8qKgorICogZHJtX2RwX21zdF9wdXRfbXN0Yl9tYWxsb2MoKSAtIERlY3JlbWVudCB0 aGUgbWFsbG9jIHJlZmNvdW50IG9mIGEgYnJhbmNoCisgKiBkZXZpY2UKKyAqIEBtc3RiOiBUaGUg JnN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCB0byBkZWNyZW1lbnQgdGhlIG1hbGxvYyByZWZjb3Vu dCBvZgorICoKKyAqIERlY3JlbWVudHMgJmRybV9kcF9tc3RfYnJhbmNoLm1hbGxvY19rcmVmLiBX aGVuCisgKiAmZHJtX2RwX21zdF9icmFuY2gubWFsbG9jX2tyZWYgcmVhY2hlcyAwLCB0aGUgbWVt b3J5IGFsbG9jYXRpb24gZm9yIEBtc3RiCisgKiB3aWxsIGJlIHJlbGVhc2VkIGFuZCBAbXN0YiBt YXkgbm8gbG9uZ2VyIGJlIHVzZWQuCisgKgorICogU2VlIGFsc286IGRybV9kcF9tc3RfZ2V0X21z dGJfbWFsbG9jKCkKKyAqLworc3RhdGljIHZvaWQKK2RybV9kcF9tc3RfcHV0X21zdGJfbWFsbG9j KHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YikKK3sKKwlEUk1fREVCVUcoIm1zdGIgJXAg KCVkKVxuIiwgbXN0Yiwga3JlZl9yZWFkKCZtc3RiLT5tYWxsb2Nfa3JlZikgLSAxKTsKKwlrcmVm X3B1dCgmbXN0Yi0+bWFsbG9jX2tyZWYsIGRybV9kcF9mcmVlX21zdF9icmFuY2hfZGV2aWNlKTsK K30KKworc3RhdGljIHZvaWQgZHJtX2RwX2ZyZWVfbXN0X3BvcnQoc3RydWN0IGtyZWYgKmtyZWYp Cit7CisJc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCA9CisJCWNvbnRhaW5lcl9vZihrcmVm LCBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0LCBtYWxsb2Nfa3JlZik7CisKKwlkcm1fZHBfbXN0X3B1 dF9tc3RiX21hbGxvYyhwb3J0LT5wYXJlbnQpOworCWtmcmVlKHBvcnQpOworfQorCisvKioKKyAq IGRybV9kcF9tc3RfZ2V0X3BvcnRfbWFsbG9jKCkgLSBJbmNyZW1lbnQgdGhlIG1hbGxvYyByZWZj b3VudCBvZiBhbiBNU1QgcG9ydAorICogQHBvcnQ6IFRoZSAmc3RydWN0IGRybV9kcF9tc3RfcG9y dCB0byBpbmNyZW1lbnQgdGhlIG1hbGxvYyByZWZjb3VudCBvZgorICoKKyAqIEluY3JlbWVudHMg JmRybV9kcF9tc3RfcG9ydC5tYWxsb2Nfa3JlZi4gV2hlbiAmZHJtX2RwX21zdF9wb3J0Lm1hbGxv Y19rcmVmCisgKiByZWFjaGVzIDAsIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgQHBvcnQgd2ls bCBiZSByZWxlYXNlZCBhbmQgQHBvcnQgbWF5CisgKiBubyBsb25nZXIgYmUgdXNlZC4KKyAqCisg KiBCZWNhdXNlIEBwb3J0IGNvdWxkIHBvdGVudGlhbGx5IGJlIGZyZWVkIGF0IGFueSB0aW1lIGJ5 IHRoZSBEUCBNU1QgaGVscGVycworICogaWYgJmRybV9kcF9tc3RfcG9ydC5tYWxsb2Nfa3JlZiBy ZWFjaGVzIDAsIGluY2x1ZGluZyBkdXJpbmcgYSBjYWxsIHRvIHRoaXMKKyAqIGZ1bmN0aW9uLCBk cml2ZXJzIHRoYXQgd2hpY2ggdG8gbWFrZSB1c2Ugb2YgJnN0cnVjdCBkcm1fZHBfbXN0X3BvcnQg c2hvdWxkCisgKiBlbnN1cmUgdGhhdCB0aGV5IGdyYWIgYXQgbGVhc3Qgb25lIG1haW4gbWFsbG9j IHJlZmVyZW5jZSB0byB0aGVpciBNU1QgcG9ydHMKKyAqIGluICZkcm1fZHBfbXN0X3RvcG9sb2d5 X2Nicy5hZGRfY29ubmVjdG9yLiBUaGlzIGNhbGxiYWNrIGlzIGNhbGxlZCBiZWZvcmUKKyAqIHRo ZXJlIGlzIGFueSBjaGFuY2UgZm9yICZkcm1fZHBfbXN0X3BvcnQubWFsbG9jX2tyZWYgdG8gcmVh Y2ggMC4KKyAqCisgKiBTZWUgYWxzbzogZHJtX2RwX21zdF9wdXRfcG9ydF9tYWxsb2MoKQorICov Cit2b2lkCitkcm1fZHBfbXN0X2dldF9wb3J0X21hbGxvYyhzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0 ICpwb3J0KQoreworCWtyZWZfZ2V0KCZwb3J0LT5tYWxsb2Nfa3JlZik7CisJRFJNX0RFQlVHKCJw b3J0ICVwICglZClcbiIsIHBvcnQsIGtyZWZfcmVhZCgmcG9ydC0+bWFsbG9jX2tyZWYpKTsKK30K K0VYUE9SVF9TWU1CT0woZHJtX2RwX21zdF9nZXRfcG9ydF9tYWxsb2MpOworCisvKioKKyAqIGRy bV9kcF9tc3RfcHV0X3BvcnRfbWFsbG9jKCkgLSBEZWNyZW1lbnQgdGhlIG1hbGxvYyByZWZjb3Vu dCBvZiBhbiBNU1QgcG9ydAorICogQHBvcnQ6IFRoZSAmc3RydWN0IGRybV9kcF9tc3RfcG9ydCB0 byBkZWNyZW1lbnQgdGhlIG1hbGxvYyByZWZjb3VudCBvZgorICoKKyAqIERlY3JlbWVudHMgJmRy bV9kcF9tc3RfcG9ydC5tYWxsb2Nfa3JlZi4gV2hlbiAmZHJtX2RwX21zdF9wb3J0Lm1hbGxvY19r cmVmCisgKiByZWFjaGVzIDAsIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgQHBvcnQgd2lsbCBi ZSByZWxlYXNlZCBhbmQgQHBvcnQgbWF5CisgKiBubyBsb25nZXIgYmUgdXNlZC4KKyAqCisgKiBT ZWUgYWxzbzogZHJtX2RwX21zdF9nZXRfcG9ydF9tYWxsb2MoKQorICovCit2b2lkCitkcm1fZHBf bXN0X3B1dF9wb3J0X21hbGxvYyhzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0KQoreworCURS TV9ERUJVRygicG9ydCAlcCAoJWQpXG4iLCBwb3J0LCBrcmVmX3JlYWQoJnBvcnQtPm1hbGxvY19r cmVmKSAtIDEpOworCWtyZWZfcHV0KCZwb3J0LT5tYWxsb2Nfa3JlZiwgZHJtX2RwX2ZyZWVfbXN0 X3BvcnQpOworfQorRVhQT1JUX1NZTUJPTChkcm1fZHBfbXN0X3B1dF9wb3J0X21hbGxvYyk7CisK IHN0YXRpYyB2b2lkIGRybV9kcF9kZXN0cm95X21zdF9icmFuY2hfZGV2aWNlKHN0cnVjdCBrcmVm ICprcmVmKQogewotCXN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YiA9IGNvbnRhaW5lcl9v ZihrcmVmLCBzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2gsIGtyZWYpOworCXN0cnVjdCBkcm1fZHBf bXN0X2JyYW5jaCAqbXN0YiA9CisJCWNvbnRhaW5lcl9vZihrcmVmLCBzdHJ1Y3QgZHJtX2RwX21z dF9icmFuY2gsIHRvcG9sb2d5X2tyZWYpOworCXN0cnVjdCBkcm1fZHBfbXN0X3RvcG9sb2d5X21n ciAqbWdyID0gbXN0Yi0+bWdyOwogCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQsICp0bXA7 CiAJYm9vbCB3YWtlX3R4ID0gZmFsc2U7CiAKLQkvKgotCSAqIGluaXQga3JlZiBhZ2FpbiB0byBi ZSB1c2VkIGJ5IHBvcnRzIHRvIHJlbW92ZSBtc3QgYnJhbmNoIHdoZW4gaXQgaXMKLQkgKiBub3Qg bmVlZGVkIGFueW1vcmUKLQkgKi8KLQlrcmVmX2luaXQoa3JlZik7Ci0KLQlpZiAobXN0Yi0+cG9y dF9wYXJlbnQgJiYgbGlzdF9lbXB0eSgmbXN0Yi0+cG9ydF9wYXJlbnQtPm5leHQpKQotCQlrcmVm X2dldCgmbXN0Yi0+cG9ydF9wYXJlbnQtPmtyZWYpOwotCi0JLyoKLQkgKiBkZXN0cm95IGFsbCBw b3J0cyAtIGRvbid0IG5lZWQgbG9jawotCSAqIGFzIHRoZXJlIGFyZSBubyBtb3JlIHJlZmVyZW5j ZXMgdG8gdGhlIG1zdCBicmFuY2gKLQkgKiBkZXZpY2UgYXQgdGhpcyBwb2ludC4KLQkgKi8KKwlt dXRleF9sb2NrKCZtZ3ItPmxvY2spOwogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwb3J0LCB0 bXAsICZtc3RiLT5wb3J0cywgbmV4dCkgewogCQlsaXN0X2RlbCgmcG9ydC0+bmV4dCk7CiAJCWRy bV9kcF9tc3RfdG9wb2xvZ3lfcHV0X3BvcnQocG9ydCk7CiAJfQorCW11dGV4X3VubG9jaygmbWdy LT5sb2NrKTsKIAogCS8qIGRyb3AgYW55IHR4IHNsb3RzIG1zZyAqLwogCW11dGV4X2xvY2soJm1z dGItPm1nci0+cWxvY2spOwpAQCAtOTA4LDE0ICsxMDczLDgzIEBAIHN0YXRpYyB2b2lkIGRybV9k cF9kZXN0cm95X21zdF9icmFuY2hfZGV2aWNlKHN0cnVjdCBrcmVmICprcmVmKQogCWlmICh3YWtl X3R4KQogCQl3YWtlX3VwX2FsbCgmbXN0Yi0+bWdyLT50eF93YWl0cSk7CiAKLQlrcmVmX3B1dChr cmVmLCBkcm1fZHBfZnJlZV9tc3RfYnJhbmNoX2RldmljZSk7CisJZHJtX2RwX21zdF9wdXRfbXN0 Yl9tYWxsb2MobXN0Yik7CiB9CiAKLXN0YXRpYyB2b2lkIGRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0 X21zdGIoc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICptc3RiKQorLyoqCisgKiBkcm1fZHBfbXN0 X3RvcG9sb2d5X3RyeV9nZXRfbXN0YigpIC0gSW5jcmVtZW50IHRoZSB0b3BvbG9neSByZWZjb3Vu dCBvZiBhCisgKiBicmFuY2ggZGV2aWNlIHVubGVzcyBpdHMgemVybworICogQG1zdGI6ICZzdHJ1 Y3QgZHJtX2RwX21zdF9icmFuY2ggdG8gaW5jcmVtZW50IHRoZSB0b3BvbG9neSByZWZjb3VudCBv ZgorICoKKyAqIEF0dGVtcHRzIHRvIGdyYWIgYSB0b3BvbG9neSByZWZlcmVuY2UgdG8gQG1zdGIs IGlmIGl0IGhhc24ndCB5ZXQgYmVlbgorICogcmVtb3ZlZCBmcm9tIHRoZSB0b3BvbG9neSAoZS5n LiAmZHJtX2RwX21zdF9icmFuY2gudG9wb2xvZ3lfa3JlZiBoYXMKKyAqIHJlYWNoZWQgMCkuIEhv bGRpbmcgYSB0b3BvbG9neSByZWZlcmVuY2UgaW1wbGllcyB0aGF0IGEgbWFsbG9jIHJlZmVyZW5j ZQorICogd2lsbCBiZSBoZWxkIHRvIEBtc3RiIGFzIGxvbmcgYXMgdGhlIHVzZXIgaG9sZHMgdGhl IHRvcG9sb2d5IHJlZmVyZW5jZS4KKyAqCisgKiBDYXJlIHNob3VsZCBiZSB0YWtlbiB0byBlbnN1 cmUgdGhhdCB0aGUgdXNlciBoYXMgYXQgbGVhc3Qgb25lIG1hbGxvYworICogcmVmZXJlbmNlIHRv IEBtc3RiLiBJZiB5b3UgYWxyZWFkeSBoYXZlIGEgdG9wb2xvZ3kgcmVmZXJlbmNlIHRvIEBtc3Ri LCB5b3UKKyAqIHNob3VsZCB1c2UgZHJtX2RwX21zdF90b3BvbG9neV9nZXRfbXN0YigpIGluc3Rl YWQuCisgKgorICogU2VlIGFsc286CisgKiBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9tc3RiKCkK KyAqIGRybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X21zdGIoKQorICoKKyAqIFJldHVybnM6CisgKiAq IDE6IEEgdG9wb2xvZ3kgcmVmZXJlbmNlIHdhcyBncmFiYmVkIHN1Y2Nlc3NmdWxseQorICogKiAw OiBAcG9ydCBpcyBubyBsb25nZXIgaW4gdGhlIHRvcG9sb2d5LCBubyByZWZlcmVuY2Ugd2FzIGdy YWJiZWQKKyAqLworc3RhdGljIGludCBfX211c3RfY2hlY2sKK2RybV9kcF9tc3RfdG9wb2xvZ3lf dHJ5X2dldF9tc3RiKHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YikKIHsKLQlrcmVmX3B1 dCgmbXN0Yi0+a3JlZiwgZHJtX2RwX2Rlc3Ryb3lfbXN0X2JyYW5jaF9kZXZpY2UpOworCWludCBy ZXQgPSBrcmVmX2dldF91bmxlc3NfemVybygmbXN0Yi0+dG9wb2xvZ3lfa3JlZik7CisKKwlpZiAo cmV0KQorCQlEUk1fREVCVUcoIm1zdGIgJXAgKCVkKVxuIiwgbXN0YiwKKwkJCSAga3JlZl9yZWFk KCZtc3RiLT50b3BvbG9neV9rcmVmKSk7CisKKwlyZXR1cm4gcmV0OwogfQogCisvKioKKyAqIGRy bV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X21zdGIoKSAtIEluY3JlbWVudCB0aGUgdG9wb2xvZ3kgcmVm Y291bnQgb2YgYQorICogYnJhbmNoIGRldmljZQorICogQG1zdGI6IFRoZSAmc3RydWN0IGRybV9k cF9tc3RfYnJhbmNoIHRvIGluY3JlbWVudCB0aGUgdG9wb2xvZ3kgcmVmY291bnQgb2YKKyAqCisg KiBJbmNyZW1lbnRzICZkcm1fZHBfbXN0X2JyYW5jaC50b3BvbG9neV9yZWZjb3VudCB3aXRob3V0 IGNoZWNraW5nIHdoZXRoZXIgb3IKKyAqIG5vdCBpdCdzIGFscmVhZHkgcmVhY2hlZCAwLiBUaGlz IGlzIG9ubHkgdmFsaWQgdG8gdXNlIGluIHNjZW5hcmlvcyB3aGVyZQorICogeW91IGFyZSBhbHJl YWR5IGd1YXJhbnRlZWQgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgYWN0aXZlIHRvcG9sb2d5IHJlZmVy ZW5jZQorICogdG8gQG1zdGIuIE90aGVyd2lzZSwgZHJtX2RwX21zdF90b3BvbG9neV90cnlfZ2V0 X21zdGIoKSBtdXN0IGJlIHVzZWQuCisgKgorICogU2VlIGFsc286CisgKiBkcm1fZHBfbXN0X3Rv cG9sb2d5X3RyeV9nZXRfbXN0YigpCisgKiBkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9tc3RiKCkK KyAqLworc3RhdGljIHZvaWQgZHJtX2RwX21zdF90b3BvbG9neV9nZXRfbXN0YihzdHJ1Y3QgZHJt X2RwX21zdF9icmFuY2ggKm1zdGIpCit7CisJV0FSTl9PTihrcmVmX3JlYWQoJm1zdGItPnRvcG9s b2d5X2tyZWYpID09IDApOworCWtyZWZfZ2V0KCZtc3RiLT50b3BvbG9neV9rcmVmKTsKKwlEUk1f REVCVUcoIm1zdGIgJXAgKCVkKVxuIiwgbXN0Yiwga3JlZl9yZWFkKCZtc3RiLT50b3BvbG9neV9r cmVmKSk7Cit9CisKKy8qKgorICogZHJtX2RwX21zdF90b3BvbG9neV9wdXRfbXN0YigpIC0gcmVs ZWFzZSBhIHRvcG9sb2d5IHJlZmVyZW5jZSB0byBhIGJyYW5jaAorICogZGV2aWNlCisgKiBAbXN0 YjogVGhlICZzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggdG8gcmVsZWFzZSB0aGUgdG9wb2xvZ3kg cmVmZXJlbmNlIGZyb20KKyAqCisgKiBSZWxlYXNlcyBhIHRvcG9sb2d5IHJlZmVyZW5jZSBmcm9t IEBtc3RiIGJ5IGRlY3JlbWVudGluZworICogJmRybV9kcF9tc3RfYnJhbmNoLnRvcG9sb2d5X2ty ZWYuCisgKgorICogU2VlIGFsc286CisgKiBkcm1fZHBfbXN0X3RvcG9sb2d5X3RyeV9nZXRfbXN0 YigpCisgKiBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9tc3RiKCkKKyAqLworc3RhdGljIHZvaWQK K2RybV9kcF9tc3RfdG9wb2xvZ3lfcHV0X21zdGIoc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICpt c3RiKQoreworCURSTV9ERUJVRygibXN0YiAlcCAoJWQpXG4iLAorCQkgIG1zdGIsIGtyZWZfcmVh ZCgmbXN0Yi0+dG9wb2xvZ3lfa3JlZikgLSAxKTsKKwlrcmVmX3B1dCgmbXN0Yi0+dG9wb2xvZ3lf a3JlZiwgZHJtX2RwX2Rlc3Ryb3lfbXN0X2JyYW5jaF9kZXZpY2UpOworfQogCiBzdGF0aWMgdm9p ZCBkcm1fZHBfcG9ydF90ZWFyZG93bl9wZHQoc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCwg aW50IG9sZF9wZHQpCiB7CkBAIC05MzcsNyArMTE3MSw4IEBAIHN0YXRpYyB2b2lkIGRybV9kcF9w b3J0X3RlYXJkb3duX3BkdChzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0LCBpbnQgb2xkX3Bk dCkKIAogc3RhdGljIHZvaWQgZHJtX2RwX2Rlc3Ryb3lfcG9ydChzdHJ1Y3Qga3JlZiAqa3JlZikK IHsKLQlzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0ID0gY29udGFpbmVyX29mKGtyZWYsIHN0 cnVjdCBkcm1fZHBfbXN0X3BvcnQsIGtyZWYpOworCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBv cnQgPQorCQljb250YWluZXJfb2Yoa3JlZiwgc3RydWN0IGRybV9kcF9tc3RfcG9ydCwgdG9wb2xv Z3lfa3JlZik7CiAJc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IgPSBwb3J0LT5t Z3I7CiAKIAlpZiAoIXBvcnQtPmlucHV0KSB7CkBAIC05NTYsNyArMTE5MSw2IEBAIHN0YXRpYyB2 b2lkIGRybV9kcF9kZXN0cm95X3BvcnQoc3RydWN0IGtyZWYgKmtyZWYpCiAJCQkgKiBmcm9tIGFu IEVESUQgcmV0cmlldmFsICovCiAKIAkJCW11dGV4X2xvY2soJm1nci0+ZGVzdHJveV9jb25uZWN0 b3JfbG9jayk7Ci0JCQlrcmVmX2dldCgmcG9ydC0+cGFyZW50LT5rcmVmKTsKIAkJCWxpc3RfYWRk KCZwb3J0LT5uZXh0LCAmbWdyLT5kZXN0cm95X2Nvbm5lY3Rvcl9saXN0KTsKIAkJCW11dGV4X3Vu bG9jaygmbWdyLT5kZXN0cm95X2Nvbm5lY3Rvcl9sb2NrKTsKIAkJCXNjaGVkdWxlX3dvcmsoJm1n ci0+ZGVzdHJveV9jb25uZWN0b3Jfd29yayk7CkBAIC05NjcsMTIgKzEyMDEsNzkgQEAgc3RhdGlj IHZvaWQgZHJtX2RwX2Rlc3Ryb3lfcG9ydChzdHJ1Y3Qga3JlZiAqa3JlZikKIAkJZHJtX2RwX3Bv cnRfdGVhcmRvd25fcGR0KHBvcnQsIHBvcnQtPnBkdCk7CiAJCXBvcnQtPnBkdCA9IERQX1BFRVJf REVWSUNFX05PTkU7CiAJfQotCWtmcmVlKHBvcnQpOworCWRybV9kcF9tc3RfcHV0X3BvcnRfbWFs bG9jKHBvcnQpOworfQorCisvKioKKyAqIGRybV9kcF9tc3RfdG9wb2xvZ3lfdHJ5X2dldF9wb3J0 KCkgLSBJbmNyZW1lbnQgdGhlIHRvcG9sb2d5IHJlZmNvdW50IG9mIGEKKyAqIHBvcnQgdW5sZXNz IGl0cyB6ZXJvCisgKiBAcG9ydDogJnN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgdG8gaW5jcmVtZW50 IHRoZSB0b3BvbG9neSByZWZjb3VudCBvZgorICoKKyAqIEF0dGVtcHRzIHRvIGdyYWIgYSB0b3Bv bG9neSByZWZlcmVuY2UgdG8gQHBvcnQsIGlmIGl0IGhhc24ndCB5ZXQgYmVlbgorICogcmVtb3Zl ZCBmcm9tIHRoZSB0b3BvbG9neSAoZS5nLiAmZHJtX2RwX21zdF9wb3J0LnRvcG9sb2d5X2tyZWYg aGFzIHJlYWNoZWQKKyAqIDApLiBIb2xkaW5nIGEgdG9wb2xvZ3kgcmVmZXJlbmNlIGltcGxpZXMg dGhhdCBhIG1hbGxvYyByZWZlcmVuY2Ugd2lsbCBiZQorICogaGVsZCB0byBAcG9ydCBhcyBsb25n IGFzIHRoZSB1c2VyIGhvbGRzIHRoZSB0b3BvbG9neSByZWZlcmVuY2UuCisgKgorICogQ2FyZSBz aG91bGQgYmUgdGFrZW4gdG8gZW5zdXJlIHRoYXQgdGhlIHVzZXIgaGFzIGF0IGxlYXN0IG9uZSBt YWxsb2MKKyAqIHJlZmVyZW5jZSB0byBAcG9ydC4gSWYgeW91IGFscmVhZHkgaGF2ZSBhIHRvcG9s b2d5IHJlZmVyZW5jZSB0byBAcG9ydCwgeW91CisgKiBzaG91bGQgdXNlIGRybV9kcF9tc3RfdG9w b2xvZ3lfZ2V0X3BvcnQoKSBpbnN0ZWFkLgorICoKKyAqIFNlZSBhbHNvOgorICogZHJtX2RwX21z dF90b3BvbG9neV9nZXRfcG9ydCgpCisgKiBkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0KCkK KyAqCisgKiBSZXR1cm5zOgorICogKiAxOiBBIHRvcG9sb2d5IHJlZmVyZW5jZSB3YXMgZ3JhYmJl ZCBzdWNjZXNzZnVsbHkKKyAqICogMDogQHBvcnQgaXMgbm8gbG9uZ2VyIGluIHRoZSB0b3BvbG9n eSwgbm8gcmVmZXJlbmNlIHdhcyBncmFiYmVkCisgKi8KK3N0YXRpYyBpbnQgX19tdXN0X2NoZWNr Citkcm1fZHBfbXN0X3RvcG9sb2d5X3RyeV9nZXRfcG9ydChzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0 ICpwb3J0KQoreworCWludCByZXQgPSBrcmVmX2dldF91bmxlc3NfemVybygmcG9ydC0+dG9wb2xv Z3lfa3JlZik7CisKKwlpZiAocmV0KQorCQlEUk1fREVCVUcoInBvcnQgJXAgKCVkKVxuIiwgcG9y dCwKKwkJCSAga3JlZl9yZWFkKCZwb3J0LT50b3BvbG9neV9rcmVmKSk7CisKKwlyZXR1cm4gcmV0 OwogfQogCisvKioKKyAqIGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X3BvcnQoKSAtIEluY3JlbWVu dCB0aGUgdG9wb2xvZ3kgcmVmY291bnQgb2YgYSBwb3J0CisgKiBAcG9ydDogVGhlICZzdHJ1Y3Qg ZHJtX2RwX21zdF9wb3J0IHRvIGluY3JlbWVudCB0aGUgdG9wb2xvZ3kgcmVmY291bnQgb2YKKyAq CisgKiBJbmNyZW1lbnRzICZkcm1fZHBfbXN0X3BvcnQudG9wb2xvZ3lfcmVmY291bnQgd2l0aG91 dCBjaGVja2luZyB3aGV0aGVyIG9yCisgKiBub3QgaXQncyBhbHJlYWR5IHJlYWNoZWQgMC4gVGhp cyBpcyBvbmx5IHZhbGlkIHRvIHVzZSBpbiBzY2VuYXJpb3Mgd2hlcmUKKyAqIHlvdSBhcmUgYWxy ZWFkeSBndWFyYW50ZWVkIHRvIGhhdmUgYXQgbGVhc3Qgb25lIGFjdGl2ZSB0b3BvbG9neSByZWZl cmVuY2UKKyAqIHRvIEBwb3J0LiBPdGhlcndpc2UsIGRybV9kcF9tc3RfdG9wb2xvZ3lfdHJ5X2dl dF9wb3J0KCkgbXVzdCBiZSB1c2VkLgorICoKKyAqIFNlZSBhbHNvOgorICogZHJtX2RwX21zdF90 b3BvbG9neV90cnlfZ2V0X3BvcnQoKQorICogZHJtX2RwX21zdF90b3BvbG9neV9wdXRfcG9ydCgp CisgKi8KK3N0YXRpYyB2b2lkIGRybV9kcF9tc3RfdG9wb2xvZ3lfZ2V0X3BvcnQoc3RydWN0IGRy bV9kcF9tc3RfcG9ydCAqcG9ydCkKK3sKKwlXQVJOX09OKGtyZWZfcmVhZCgmcG9ydC0+dG9wb2xv Z3lfa3JlZikgPT0gMCk7CisJa3JlZl9nZXQoJnBvcnQtPnRvcG9sb2d5X2tyZWYpOworCURSTV9E RUJVRygicG9ydCAlcCAoJWQpXG4iLCBwb3J0LCBrcmVmX3JlYWQoJnBvcnQtPnRvcG9sb2d5X2ty ZWYpKTsKK30KKworLyoqCisgKiBkcm1fZHBfbXN0X3RvcG9sb2d5X3B1dF9wb3J0KCkgLSByZWxl YXNlIGEgdG9wb2xvZ3kgcmVmZXJlbmNlIHRvIGEgcG9ydAorICogQHBvcnQ6IFRoZSAmc3RydWN0 IGRybV9kcF9tc3RfcG9ydCB0byByZWxlYXNlIHRoZSB0b3BvbG9neSByZWZlcmVuY2UgZnJvbQor ICoKKyAqIFJlbGVhc2VzIGEgdG9wb2xvZ3kgcmVmZXJlbmNlIGZyb20gQHBvcnQgYnkgZGVjcmVt ZW50aW5nCisgKiAmZHJtX2RwX21zdF9wb3J0LnRvcG9sb2d5X2tyZWYuCisgKgorICogU2VlIGFs c286CisgKiBkcm1fZHBfbXN0X3RvcG9sb2d5X3RyeV9nZXRfcG9ydCgpCisgKiBkcm1fZHBfbXN0 X3RvcG9sb2d5X2dldF9wb3J0KCkKKyAqLwogc3RhdGljIHZvaWQgZHJtX2RwX21zdF90b3BvbG9n eV9wdXRfcG9ydChzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0ICpwb3J0KQogewotCWtyZWZfcHV0KCZw b3J0LT5rcmVmLCBkcm1fZHBfZGVzdHJveV9wb3J0KTsKKwlEUk1fREVCVUcoInBvcnQgJXAgKCVk KVxuIiwKKwkJICBwb3J0LCBrcmVmX3JlYWQoJnBvcnQtPnRvcG9sb2d5X2tyZWYpIC0gMSk7CisJ a3JlZl9wdXQoJnBvcnQtPnRvcG9sb2d5X2tyZWYsIGRybV9kcF9kZXN0cm95X3BvcnQpOwogfQog CiBzdGF0aWMgc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICoKQEAgLTk4MSwxMCArMTI4MiwxMCBA QCBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9tc3RiX3ZhbGlkYXRlZF9sb2NrZWQoc3RydWN0IGRy bV9kcF9tc3RfYnJhbmNoICptc3RiLAogewogCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQ7 CiAJc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICpybXN0YjsKLQlpZiAodG9fZmluZCA9PSBtc3Ri KSB7Ci0JCWtyZWZfZ2V0KCZtc3RiLT5rcmVmKTsKKworCWlmICh0b19maW5kID09IG1zdGIpCiAJ CXJldHVybiBtc3RiOwotCX0KKwogCWxpc3RfZm9yX2VhY2hfZW50cnkocG9ydCwgJm1zdGItPnBv cnRzLCBuZXh0KSB7CiAJCWlmIChwb3J0LT5tc3RiKSB7CiAJCQlybXN0YiA9IGRybV9kcF9tc3Rf dG9wb2xvZ3lfZ2V0X21zdGJfdmFsaWRhdGVkX2xvY2tlZCgKQEAgLTEwMDEsMjUgKzEzMDIsMzIg QEAgZHJtX2RwX21zdF90b3BvbG9neV9nZXRfbXN0Yl92YWxpZGF0ZWQoc3RydWN0IGRybV9kcF9t c3RfdG9wb2xvZ3lfbWdyICptZ3IsCiAJCQkJICAgICAgIHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5j aCAqbXN0YikKIHsKIAlzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKnJtc3RiID0gTlVMTDsKKwog CW11dGV4X2xvY2soJm1nci0+bG9jayk7Ci0JaWYgKG1nci0+bXN0X3ByaW1hcnkpCisJaWYgKG1n ci0+bXN0X3ByaW1hcnkpIHsKIAkJcm1zdGIgPSBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9tc3Ri X3ZhbGlkYXRlZF9sb2NrZWQoCiAJCSAgICBtZ3ItPm1zdF9wcmltYXJ5LCBtc3RiKTsKKworCQlp ZiAocm1zdGIgJiYgIWRybV9kcF9tc3RfdG9wb2xvZ3lfdHJ5X2dldF9tc3RiKHJtc3RiKSkKKwkJ CXJtc3RiID0gTlVMTDsKKwl9CiAJbXV0ZXhfdW5sb2NrKCZtZ3ItPmxvY2spOwogCXJldHVybiBy bXN0YjsKIH0KIAotc3RhdGljIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKmRybV9kcF9tc3RfZ2V0 X3BvcnRfcmVmX2xvY2tlZChzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKm1zdGIsIHN0cnVjdCBk cm1fZHBfbXN0X3BvcnQgKnRvX2ZpbmQpCitzdGF0aWMgc3RydWN0IGRybV9kcF9tc3RfcG9ydCAq Citkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9wb3J0X3ZhbGlkYXRlZF9sb2NrZWQoc3RydWN0IGRy bV9kcF9tc3RfYnJhbmNoICptc3RiLAorCQkJCQkgICAgICBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0 ICp0b19maW5kKQogewogCXN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQsICptcG9ydDsKIAog CWxpc3RfZm9yX2VhY2hfZW50cnkocG9ydCwgJm1zdGItPnBvcnRzLCBuZXh0KSB7Ci0JCWlmIChw b3J0ID09IHRvX2ZpbmQpIHsKLQkJCWtyZWZfZ2V0KCZwb3J0LT5rcmVmKTsKKwkJaWYgKHBvcnQg PT0gdG9fZmluZCkKIAkJCXJldHVybiBwb3J0OwotCQl9CisKIAkJaWYgKHBvcnQtPm1zdGIpIHsK LQkJCW1wb3J0ID0gZHJtX2RwX21zdF9nZXRfcG9ydF9yZWZfbG9ja2VkKHBvcnQtPm1zdGIsIHRv X2ZpbmQpOworCQkJbXBvcnQgPSBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9wb3J0X3ZhbGlkYXRl ZF9sb2NrZWQoCisJCQkgICAgcG9ydC0+bXN0YiwgdG9fZmluZCk7CiAJCQlpZiAobXBvcnQpCiAJ CQkJcmV0dXJuIG1wb3J0OwogCQl9CkBAIC0xMDMyLDkgKzEzNDAsMTUgQEAgZHJtX2RwX21zdF90 b3BvbG9neV9nZXRfcG9ydF92YWxpZGF0ZWQoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdy ICptZ3IsCiAJCQkJICAgICAgIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpCiB7CiAJc3Ry dWN0IGRybV9kcF9tc3RfcG9ydCAqcnBvcnQgPSBOVUxMOworCiAJbXV0ZXhfbG9jaygmbWdyLT5s b2NrKTsKLQlpZiAobWdyLT5tc3RfcHJpbWFyeSkKLQkJcnBvcnQgPSBkcm1fZHBfbXN0X2dldF9w b3J0X3JlZl9sb2NrZWQobWdyLT5tc3RfcHJpbWFyeSwgcG9ydCk7CisJaWYgKG1nci0+bXN0X3By aW1hcnkpIHsKKwkJcnBvcnQgPSBkcm1fZHBfbXN0X3RvcG9sb2d5X2dldF9wb3J0X3ZhbGlkYXRl ZF9sb2NrZWQoCisJCSAgICBtZ3ItPm1zdF9wcmltYXJ5LCBwb3J0KTsKKworCQlpZiAocnBvcnQg JiYgIWRybV9kcF9tc3RfdG9wb2xvZ3lfdHJ5X2dldF9wb3J0KHJwb3J0KSkKKwkJCXJwb3J0ID0g TlVMTDsKKwl9CiAJbXV0ZXhfdW5sb2NrKCZtZ3ItPmxvY2spOwogCXJldHVybiBycG9ydDsKIH0K QEAgLTEwNDIsMTEgKzEzNTYsMTIgQEAgZHJtX2RwX21zdF90b3BvbG9neV9nZXRfcG9ydF92YWxp ZGF0ZWQoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICptZ3IsCiBzdGF0aWMgc3RydWN0 IGRybV9kcF9tc3RfcG9ydCAqZHJtX2RwX2dldF9wb3J0KHN0cnVjdCBkcm1fZHBfbXN0X2JyYW5j aCAqbXN0YiwgdTggcG9ydF9udW0pCiB7CiAJc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydDsK KwlpbnQgcmV0OwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShwb3J0LCAmbXN0Yi0+cG9ydHMsIG5l eHQpIHsKIAkJaWYgKHBvcnQtPnBvcnRfbnVtID09IHBvcnRfbnVtKSB7Ci0JCQlrcmVmX2dldCgm cG9ydC0+a3JlZik7Ci0JCQlyZXR1cm4gcG9ydDsKKwkJCXJldCA9IGRybV9kcF9tc3RfdG9wb2xv Z3lfdHJ5X2dldF9wb3J0KHBvcnQpOworCQkJcmV0dXJuIHJldCA/IHBvcnQgOiBOVUxMOwogCQl9 CiAJfQogCkBAIC0xMDk1LDYgKzE0MTAsMTEgQEAgc3RhdGljIGJvb2wgZHJtX2RwX3BvcnRfc2V0 dXBfcGR0KHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQpCiAJCWlmIChwb3J0LT5tc3RiKSB7 CiAJCQlwb3J0LT5tc3RiLT5tZ3IgPSBwb3J0LT5tZ3I7CiAJCQlwb3J0LT5tc3RiLT5wb3J0X3Bh cmVudCA9IHBvcnQ7CisJCQkvKgorCQkJICogTWFrZSBzdXJlIHRoaXMgcG9ydCdzIG1lbW9yeSBh bGxvY2F0aW9uIHN0YXlzCisJCQkgKiBhcm91bmQgdW50aWwgaXQncyBjaGlsZCBNU1RCIHJlbGVh c2VzIGl0CisJCQkgKi8KKwkJCWRybV9kcF9tc3RfZ2V0X3BvcnRfbWFsbG9jKHBvcnQpOwogCiAJ CQlzZW5kX2xpbmsgPSB0cnVlOwogCQl9CkBAIC0xMTU1LDE3ICsxNDc1LDI2IEBAIHN0YXRpYyB2 b2lkIGRybV9kcF9hZGRfcG9ydChzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKm1zdGIsCiAJYm9v bCBjcmVhdGVkID0gZmFsc2U7CiAJaW50IG9sZF9wZHQgPSAwOwogCWludCBvbGRfZGRwcyA9IDA7 CisKIAlwb3J0ID0gZHJtX2RwX2dldF9wb3J0KG1zdGIsIHBvcnRfbXNnLT5wb3J0X251bWJlcik7 CiAJaWYgKCFwb3J0KSB7CiAJCXBvcnQgPSBremFsbG9jKHNpemVvZigqcG9ydCksIEdGUF9LRVJO RUwpOwogCQlpZiAoIXBvcnQpCiAJCQlyZXR1cm47Ci0JCWtyZWZfaW5pdCgmcG9ydC0+a3JlZik7 CisJCWtyZWZfaW5pdCgmcG9ydC0+dG9wb2xvZ3lfa3JlZik7CisJCWtyZWZfaW5pdCgmcG9ydC0+ bWFsbG9jX2tyZWYpOwogCQlwb3J0LT5wYXJlbnQgPSBtc3RiOwogCQlwb3J0LT5wb3J0X251bSA9 IHBvcnRfbXNnLT5wb3J0X251bWJlcjsKIAkJcG9ydC0+bWdyID0gbXN0Yi0+bWdyOwogCQlwb3J0 LT5hdXgubmFtZSA9ICJEUE1TVCI7CiAJCXBvcnQtPmF1eC5kZXYgPSBkZXYtPmRldjsKKworCQkv KgorCQkgKiBNYWtlIHN1cmUgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBvdXIgcGFyZW50IGJy YW5jaCBzdGF5cworCQkgKiBhcm91bmQgdW50aWwgb3VyIG93biBtZW1vcnkgYWxsb2NhdGlvbiBp cyByZWxlYXNlZAorCQkgKi8KKwkJZHJtX2RwX21zdF9nZXRfbXN0Yl9tYWxsb2MobXN0Yik7CisK IAkJY3JlYXRlZCA9IHRydWU7CiAJfSBlbHNlIHsKIAkJb2xkX3BkdCA9IHBvcnQtPnBkdDsKQEAg LTExODUsNyArMTUxNCw3IEBAIHN0YXRpYyB2b2lkIGRybV9kcF9hZGRfcG9ydChzdHJ1Y3QgZHJt X2RwX21zdF9icmFuY2ggKm1zdGIsCiAJICAgZm9yIHRoaXMgbGlzdCAqLwogCWlmIChjcmVhdGVk KSB7CiAJCW11dGV4X2xvY2soJm1zdGItPm1nci0+bG9jayk7Ci0JCWtyZWZfZ2V0KCZwb3J0LT5r cmVmKTsKKwkJZHJtX2RwX21zdF90b3BvbG9neV9nZXRfcG9ydChwb3J0KTsKIAkJbGlzdF9hZGQo JnBvcnQtPm5leHQsICZtc3RiLT5wb3J0cyk7CiAJCW11dGV4X3VubG9jaygmbXN0Yi0+bWdyLT5s b2NrKTsKIAl9CkBAIC0xMjg0LDcgKzE2MTMsNyBAQCBzdGF0aWMgc3RydWN0IGRybV9kcF9tc3Rf YnJhbmNoICpkcm1fZHBfZ2V0X21zdF9icmFuY2hfZGV2aWNlKHN0cnVjdCBkcm1fZHBfbXN0Xwog ewogCXN0cnVjdCBkcm1fZHBfbXN0X2JyYW5jaCAqbXN0YjsKIAlzdHJ1Y3QgZHJtX2RwX21zdF9w b3J0ICpwb3J0OwotCWludCBpOworCWludCBpLCByZXQ7CiAJLyogZmluZCB0aGUgcG9ydCBieSBp dGVyYXRpbmcgZG93biAqLwogCiAJbXV0ZXhfbG9jaygmbWdyLT5sb2NrKTsKQEAgLTEzMDksNyAr MTYzOCw5IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggKmRybV9kcF9nZXRfbXN0 X2JyYW5jaF9kZXZpY2Uoc3RydWN0IGRybV9kcF9tc3RfCiAJCQl9CiAJCX0KIAl9Ci0Ja3JlZl9n ZXQoJm1zdGItPmtyZWYpOworCXJldCA9IGRybV9kcF9tc3RfdG9wb2xvZ3lfdHJ5X2dldF9tc3Ri KG1zdGIpOworCWlmICghcmV0KQorCQltc3RiID0gTlVMTDsKIG91dDoKIAltdXRleF91bmxvY2so Jm1nci0+bG9jayk7CiAJcmV0dXJuIG1zdGI7CkBAIC0xMzQ0LDE0ICsxNjc1LDE3IEBAIGRybV9k cF9nZXRfbXN0X2JyYW5jaF9kZXZpY2VfYnlfZ3VpZChzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9n eV9tZ3IgKm1nciwKIAkJCQkgICAgIHVpbnQ4X3QgKmd1aWQpCiB7CiAJc3RydWN0IGRybV9kcF9t c3RfYnJhbmNoICptc3RiOworCWludCByZXQ7CiAKIAkvKiBmaW5kIHRoZSBwb3J0IGJ5IGl0ZXJh dGluZyBkb3duICovCiAJbXV0ZXhfbG9jaygmbWdyLT5sb2NrKTsKIAogCW1zdGIgPSBnZXRfbXN0 X2JyYW5jaF9kZXZpY2VfYnlfZ3VpZF9oZWxwZXIobWdyLT5tc3RfcHJpbWFyeSwgZ3VpZCk7Ci0K LQlpZiAobXN0YikKLQkJa3JlZl9nZXQoJm1zdGItPmtyZWYpOworCWlmIChtc3RiKSB7CisJCXJl dCA9IGRybV9kcF9tc3RfdG9wb2xvZ3lfdHJ5X2dldF9tc3RiKG1zdGIpOworCQlpZiAoIXJldCkK KwkJCW1zdGIgPSBOVUxMOworCX0KIAogCW11dGV4X3VubG9jaygmbWdyLT5sb2NrKTsKIAlyZXR1 cm4gbXN0YjsKQEAgLTEzOTAsMTEgKzE3MjQsMTQgQEAgc3RhdGljIHZvaWQgZHJtX2RwX21zdF9s aW5rX3Byb2JlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCBkcm1f ZHBfbXN0X3RvcG9sb2d5X21nciAqbWdyID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBkcm1f ZHBfbXN0X3RvcG9sb2d5X21nciwgd29yayk7CiAJc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoICpt c3RiOworCWludCByZXQ7CiAKIAltdXRleF9sb2NrKCZtZ3ItPmxvY2spOwogCW1zdGIgPSBtZ3It Pm1zdF9wcmltYXJ5OwogCWlmIChtc3RiKSB7Ci0JCWtyZWZfZ2V0KCZtc3RiLT5rcmVmKTsKKwkJ cmV0ID0gZHJtX2RwX21zdF90b3BvbG9neV90cnlfZ2V0X21zdGIobXN0Yik7CisJCWlmICghcmV0 KQorCQkJbXN0YiA9IE5VTEw7CiAJfQogCW11dGV4X3VubG9jaygmbWdyLT5sb2NrKTsKIAlpZiAo bXN0YikgewpAQCAtMTcyMiw4ICsyMDU5LDEwIEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2RwX21zdF9i cmFuY2ggKmRybV9kcF9nZXRfbGFzdF9jb25uZWN0ZWRfcG9ydF9hbmRfbXN0YihzdHJ1Y3QKIAog CQlpZiAoZm91bmRfcG9ydCkgewogCQkJcm1zdGIgPSBmb3VuZF9wb3J0LT5wYXJlbnQ7Ci0JCQlr cmVmX2dldCgmcm1zdGItPmtyZWYpOwotCQkJKnBvcnRfbnVtID0gZm91bmRfcG9ydC0+cG9ydF9u dW07CisJCQlpZiAoZHJtX2RwX21zdF90b3BvbG9neV90cnlfZ2V0X21zdGIocm1zdGIpKQorCQkJ CSpwb3J0X251bSA9IGZvdW5kX3BvcnQtPnBvcnRfbnVtOworCQkJZWxzZQorCQkJCXJtc3RiID0g TlVMTDsKIAkJfQogCX0KIAltdXRleF91bmxvY2soJm1nci0+bG9jayk7CkBAIC0yMTc2LDcgKzI1 MTUsNyBAQCBpbnQgZHJtX2RwX21zdF90b3BvbG9neV9tZ3Jfc2V0X21zdChzdHJ1Y3QgZHJtX2Rw X21zdF90b3BvbG9neV9tZ3IgKm1nciwgYm9vbCBtcwogCiAJCS8qIGdpdmUgdGhpcyB0aGUgbWFp biByZWZlcmVuY2UgKi8KIAkJbWdyLT5tc3RfcHJpbWFyeSA9IG1zdGI7Ci0JCWtyZWZfZ2V0KCZt Z3ItPm1zdF9wcmltYXJ5LT5rcmVmKTsKKwkJZHJtX2RwX21zdF90b3BvbG9neV9nZXRfbXN0Yiht Z3ItPm1zdF9wcmltYXJ5KTsKIAogCQlyZXQgPSBkcm1fZHBfZHBjZF93cml0ZWIobWdyLT5hdXgs IERQX01TVE1fQ1RSTCwKIAkJCQkJCQkgRFBfTVNUX0VOIHwgRFBfVVBfUkVRX0VOIHwgRFBfVVBT VFJFQU1fSVNfU1JDKTsKQEAgLTMwOTYsMTMgKzM0MzUsNiBAQCBzdGF0aWMgdm9pZCBkcm1fZHBf dHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJbXV0ZXhfdW5sb2NrKCZtZ3ItPnFs b2NrKTsKIH0KIAotc3RhdGljIHZvaWQgZHJtX2RwX2ZyZWVfbXN0X3BvcnQoc3RydWN0IGtyZWYg KmtyZWYpCi17Ci0Jc3RydWN0IGRybV9kcF9tc3RfcG9ydCAqcG9ydCA9IGNvbnRhaW5lcl9vZihr cmVmLCBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0LCBrcmVmKTsKLQlrcmVmX3B1dCgmcG9ydC0+cGFy ZW50LT5rcmVmLCBkcm1fZHBfZnJlZV9tc3RfYnJhbmNoX2RldmljZSk7Ci0Ja2ZyZWUocG9ydCk7 Ci19Ci0KIHN0YXRpYyB2b2lkIGRybV9kcF9kZXN0cm95X2Nvbm5lY3Rvcl93b3JrKHN0cnVjdCB3 b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IgKm1n ciA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgZHJtX2RwX21zdF90b3BvbG9neV9tZ3IsIGRl c3Ryb3lfY29ubmVjdG9yX3dvcmspOwpAQCAtMzEyMyw3ICszNDU1LDYgQEAgc3RhdGljIHZvaWQg ZHJtX2RwX2Rlc3Ryb3lfY29ubmVjdG9yX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQog CQlsaXN0X2RlbCgmcG9ydC0+bmV4dCk7CiAJCW11dGV4X3VubG9jaygmbWdyLT5kZXN0cm95X2Nv bm5lY3Rvcl9sb2NrKTsKIAotCQlrcmVmX2luaXQoJnBvcnQtPmtyZWYpOwogCQlJTklUX0xJU1Rf SEVBRCgmcG9ydC0+bmV4dCk7CiAKIAkJbWdyLT5jYnMtPmRlc3Ryb3lfY29ubmVjdG9yKG1nciwg cG9ydC0+Y29ubmVjdG9yKTsKQEAgLTMxMzcsNyArMzQ2OCw3IEBAIHN0YXRpYyB2b2lkIGRybV9k cF9kZXN0cm95X2Nvbm5lY3Rvcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJCWRy bV9kcF9tc3RfcHV0X3BheWxvYWRfaWQobWdyLCBwb3J0LT52Y3BpLnZjcGkpOwogCQl9CiAKLQkJ a3JlZl9wdXQoJnBvcnQtPmtyZWYsIGRybV9kcF9mcmVlX21zdF9wb3J0KTsKKwkJZHJtX2RwX21z dF9wdXRfcG9ydF9tYWxsb2MocG9ydCk7CiAJCXNlbmRfaG90cGx1ZyA9IHRydWU7CiAJfQogCWlm IChzZW5kX2hvdHBsdWcpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBl ci5oIGIvaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIuaAppbmRleCAzNzFjYzI4MTY0Nzcu LjhlY2E1ZjI5MjQyYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RwX21zdF9oZWxwZXIu aAorKysgYi9pbmNsdWRlL2RybS9kcm1fZHBfbXN0X2hlbHBlci5oCkBAIC00NCw3ICs0NCw2IEBA IHN0cnVjdCBkcm1fZHBfdmNwaSB7CiAKIC8qKgogICogc3RydWN0IGRybV9kcF9tc3RfcG9ydCAt IE1TVCBwb3J0Ci0gKiBAa3JlZjogcmVmZXJlbmNlIGNvdW50IGZvciB0aGlzIHBvcnQuCiAgKiBA cG9ydF9udW06IHBvcnQgbnVtYmVyCiAgKiBAaW5wdXQ6IGlmIHRoaXMgcG9ydCBpcyBhbiBpbnB1 dCBwb3J0LgogICogQG1jczogbWVzc2FnZSBjYXBhYmlsaXR5IHN0YXR1cyAtIERQIDEuMiBzcGVj LgpAQCAtNjcsNyArNjYsMTggQEAgc3RydWN0IGRybV9kcF92Y3BpIHsKICAqIGluIHRoZSBNU1Qg dG9wb2xvZ3kuCiAgKi8KIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgewotCXN0cnVjdCBrcmVmIGty ZWY7CisJLyoqCisJICogQHRvcG9sb2d5X2tyZWY6IHJlZmNvdW50IGZvciB0aGlzIHBvcnQncyBs aWZldGltZSBpbiB0aGUgdG9wb2xvZ3ksCisJICogb25seSB0aGUgRFAgTVNUIGhlbHBlcnMgc2hv dWxkIG5lZWQgdG8gdG91Y2ggdGhpcworCSAqLworCXN0cnVjdCBrcmVmIHRvcG9sb2d5X2tyZWY7 CisKKwkvKioKKwkgKiBAbWFsbG9jX2tyZWY6IHJlZmNvdW50IGZvciB0aGUgbWVtb3J5IGFsbG9j YXRpb24gY29udGFpbmluZyB0aGlzCisJICogc3RydWN0dXJlLiBTZWUgZHJtX2RwX21zdF9nZXRf cG9ydF9tYWxsb2MoKSBhbmQKKwkgKiBkcm1fZHBfbXN0X3B1dF9wb3J0X21hbGxvYygpLgorCSAq LworCXN0cnVjdCBrcmVmIG1hbGxvY19rcmVmOwogCiAJdTggcG9ydF9udW07CiAJYm9vbCBpbnB1 dDsKQEAgLTEwMiw3ICsxMTIsNiBAQCBzdHJ1Y3QgZHJtX2RwX21zdF9wb3J0IHsKIAogLyoqCiAg KiBzdHJ1Y3QgZHJtX2RwX21zdF9icmFuY2ggLSBNU1QgYnJhbmNoIGRldmljZS4KLSAqIEBrcmVm OiByZWZlcmVuY2UgY291bnQgZm9yIHRoaXMgcG9ydC4KICAqIEByYWQ6IFJlbGF0aXZlIEFkZHJl c3MgdG8gdGFsayB0byB0aGlzIGJyYW5jaCBkZXZpY2UuCiAgKiBAbGN0OiBMaW5rIGNvdW50IHRv dGFsIHRvIHRhbGsgdG8gdGhpcyBicmFuY2ggZGV2aWNlLgogICogQG51bV9wb3J0czogbnVtYmVy IG9mIHBvcnRzIG9uIHRoZSBicmFuY2guCkBAIC0xMjEsNyArMTMwLDE5IEBAIHN0cnVjdCBkcm1f ZHBfbXN0X3BvcnQgewogICogdG8gZG93bnN0cmVhbSBwb3J0IG9mIHBhcmVudCBicmFuY2hlcy4K ICAqLwogc3RydWN0IGRybV9kcF9tc3RfYnJhbmNoIHsKLQlzdHJ1Y3Qga3JlZiBrcmVmOworCS8q KgorCSAqIEB0b3BvbG9neV9rcmVmOiByZWZjb3VudCBmb3IgdGhpcyBicmFuY2ggZGV2aWNlJ3Mg bGlmZXRpbWUgaW4gdGhlCisJICogdG9wb2xvZ3ksIG9ubHkgdGhlIERQIE1TVCBoZWxwZXJzIHNo b3VsZCBuZWVkIHRvIHRvdWNoIHRoaXMKKwkgKi8KKwlzdHJ1Y3Qga3JlZiB0b3BvbG9neV9rcmVm OworCisJLyoqCisJICogQG1hbGxvY19rcmVmOiByZWZjb3VudCBmb3IgdGhlIG1lbW9yeSBhbGxv Y2F0aW9uIGNvbnRhaW5pbmcgdGhpcworCSAqIHN0cnVjdHVyZS4gU2VlIGRybV9kcF9tc3RfZ2V0 X21zdGJfbWFsbG9jKCkgYW5kCisJICogZHJtX2RwX21zdF9wdXRfbXN0Yl9tYWxsb2MoKS4KKwkg Ki8KKwlzdHJ1Y3Qga3JlZiBtYWxsb2Nfa3JlZjsKKwogCXU4IHJhZFs4XTsKIAl1OCBsY3Q7CiAJ aW50IG51bV9wb3J0czsKQEAgLTYyNiw0ICs2NDcsNyBAQCBpbnQgZHJtX2RwX2F0b21pY19yZWxl YXNlX3ZjcGlfc2xvdHMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogaW50IGRybV9k cF9zZW5kX3Bvd2VyX3VwZG93bl9waHkoc3RydWN0IGRybV9kcF9tc3RfdG9wb2xvZ3lfbWdyICpt Z3IsCiAJCQkJIHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQgKnBvcnQsIGJvb2wgcG93ZXJfdXApOwog Cit2b2lkIGRybV9kcF9tc3RfZ2V0X3BvcnRfbWFsbG9jKHN0cnVjdCBkcm1fZHBfbXN0X3BvcnQg KnBvcnQpOwordm9pZCBkcm1fZHBfbXN0X3B1dF9wb3J0X21hbGxvYyhzdHJ1Y3QgZHJtX2RwX21z dF9wb3J0ICpwb3J0KTsKKwogI2VuZGlmCi0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vYW1kLWdmeAo=