From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomas Elf Subject: =?utf-8?q?=5BRFC_04/11=5D_drm/i915=3A_Adding_TDR_/_pe?= =?utf-8?q?r-engine_reset_support_for_gen8=2E?= Date: Mon, 8 Jun 2015 18:03:22 +0100 Message-ID: <1433783009-17251-5-git-send-email-tomas.elf@intel.com> References: <1433783009-17251-1-git-send-email-tomas.elf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 1E1FE6E691 for ; Mon, 8 Jun 2015 10:13:23 -0700 (PDT) In-Reply-To: <1433783009-17251-1-git-send-email-tomas.elf@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-GFX@Lists.FreeDesktop.Org Cc: Ian Lister List-Id: intel-gfx@lists.freedesktop.org VGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBzdXBwb3J0IGZvciBURFItc3R5bGUgcGVyLWVuZ2luZSBy ZXNldCBhcyBhIGluaXRpYWwsCmxlc3MgaW50cnVzaXZlIGhhbmcgcmVjb3Zlcnkgb3B0aW9uIHRv IGJlIGF0dGVtcHRlZCBiZWZvcmUgZmFsbGluZyBiYWNrIHRvIHRoZQpsZWdhY3kgZnVsbCBHUFUg cmVzZXQgcmVjb3ZlcnkgbW9kZSBpZiBuZWNlc3NhcnkuIEluaXRpYWxseSB3ZSdyZSBvbmx5CnN1 cHBvcnRpbmcgZ2VuOCBidXQgYWRkaW5nIHN1cHBvcnQgZm9yIGdlbjcgaXMgc3RyYWlnaHQtZm9y d2FyZCBzaW5jZSB3ZSd2ZQphbHJlYWR5IGVzdGFibGlzaGVkIGFuIGV4dGVuc2libGUgZnJhbWV3 b3JrIHdoZXJlIGdlbjcgc3VwcG9ydCBjYW4gYmUgcGx1Z2dlZAppbiAoYWRkIGNvcnJlc3BvbmRp bmcgdmVyc2lvbnMgb2YgaW50ZWxfcmluZ19lbmFibGUsIGludGVsX3JpbmdfZGlzYWJsZSwKaW50 ZWxfcmluZ19zYXZlLCBpbnRlbF9yaW5nX3Jlc3RvcmUsIGV0Yy4pLgoKMS4gUGVyLWVuZ2luZSBy ZWNvdmVyeSB2cy4gRnVsbCBHUFUgcmVjb3ZlcnkKClRvIGNhcHR1cmUgdGhlIHN0YXRlIG9mIGEg c2luZ2xlIGVuZ2luZSBiZWluZyBkZXRlY3RlZCBhcyBodW5nIHRoZXJlIGlzIG5vdyBhCm5ldyBm bGFnIGZvciBldmVyeSBlbmdpbmUgdGhhdCBjYW4gYmUgc2V0IG9uY2UgdGhlIGRlY2lzaW9uIGhh cyBiZWVuIG1hZGUgdG8Kc2NoZWR1bGUgaGFuZyByZWNvdmVyeSBmb3IgdGhhdCBwYXJ0aWN1bGFy IGVuZ2luZS4KClRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdo ZW4gdG8gdXNlIHdoaWNoIHJlY292ZXJ5IG1vZGU6CgoJYS4gT25jZSB0aGUgaGFuZyBjaGVjayBz Y29yZSByZWFjaGVzIGxldmVsIEhVTkcgaGFuZyByZWNvdmVyeSBpcwoJc2NoZWR1bGVkIGFzIHVz dWFsLiBUaGUgaGFuZyBjaGVja2VyIGFnZ3JlZ2F0ZXMgYWxsIGVuZ2luZXMgY3VycmVudGx5Cglk ZXRlY3RlZCBhcyBodW5nIGludG8gYSBzaW5nbGUgZW5naW5lIGZsYWcgbWFzayBhbmQgcGFzc2Vz IHRoYXQgdG8gdGhlCgllcnJvciBoYW5kbGVyLCB3aGljaCBhbGxvd3MgdXMgdG8gc2NoZWR1bGUg aGFuZyByZWNvdmVyeSBmb3IgYWxsCgljdXJyZW50bHkgaHVuZyBlbmdpbmVzIGluIGEgc2luZ2xl IGNhbGwuCgoJYi4gVGhlIGVycm9yIGhhbmRsZXIgY2hlY2tzIGFsbCBlbmdpbmVzIHRoYXQgaGF2 ZSBiZWVuIG1hcmtlZCBhcyBodW5nCglieSB0aGUgaGFuZyBjaGVja2VyIGFuZCAtIG1vcmUgc3Bl Y2lmaWNhbGx5IC0gY2hlY2tzIGhvdyBsb25nIGFnbyBpdAoJd2FzIHNpbmNlIGl0IGxhc3QgYXR0 ZW1wdGVkIHRvIGRvIHBlci1lbmdpbmUgaGFuZyByZWNvdmVyeSBmb3IgZWFjaAoJcmVzcGVjdGl2 ZSwgY3VycmVudGx5IGh1bmcgZW5naW5lLiBJZiB0aGUgbWVhc3VyZWQgdGltZSBwZXJpb2QgaXMK CXdpdGhpbiBhIGNlcnRhaW4gdGltZSB3aW5kb3csIGkuZS4gdGhlIGxhc3QgcGVyLWVuZ2luZSBo YW5nIHJlY292ZXJ5Cgl3YXMgZG9uZSB0b28gcmVjZW50bHksIGl0IGlzIGRldGVybWluZWQgdGhh dCBwZXItZW5naW5lIGhhbmcgcmVjb3ZlcnkKCWlzIGluZWZmZWN0aXZlIGFuZCB0aGUgc3RlcCBp cyB0YWtlbiB0byBwcm9tb3RlIGEgZnVsbCBHUFUgcmVzZXQuCgoJYy4gSWYgdGhlIGVycm9yIGhh bmRsZXIgZGV0ZXJtaW5lcyB0aGF0IG5vIGN1cnJlbnRseSBodW5nIGVuZ2luZSBoYXMKCXJlY2Vu dGx5IGhhZCBoYW5nIHJlY292ZXJ5IGEgcGVyLWVuZ2luZSBoYW5nIHJlY292ZXJ5IGlzIHNjaGVk dWxlZC4KCglkLiBBZGRpdGlvbmFsbHksIGlmIHRoZSBoYW5nIGNoZWNrZXIgZGV0ZWN0cyB0aGF0 IHRoZSBoYW5nIGNoZWNrIHNjb3JlCgloYXMgZ3Jvd24gdG9vIGhpZ2ggKGN1cnJlbnRseSBkZWZp bmVkIGFzIHR3aWNlIHRoZSBIVU5HIGxldmVsKSBpdAoJZGV0ZXJtaW5lcyB0aGF0IHByZXZpb3Vz IGhhbmcgcmVjb3ZlcnkgYXR0ZW1wdHMgaGF2ZSBmYWlsZWQgZm9yCgl3aGF0ZXZlciByZWFzb24g YW5kIGl0IHdpbGwgYnlwYXNzIHRoZSBlcnJvciBjaGVja2VyIGZ1bGwgR1BVIHJlc2V0Cglwcm9t b3Rpb24gbG9naWMuIE9uZSBjYXNlIHdoZXJlIHRoaXMgaXMgaW1wb3J0YW50IGlzIGlmIHRoZSBo YW5nCgljaGVja2VyIGFuZCBlcnJvciBoYW5kbGVyIHRoaW5rcyB0aGF0IHBlci1lbmdpbmUgaGFu ZyByZWNvdmVyeSBpcyBhCglzdWl0YWJsZSBvcHRpb24gYW5kIHNldmVyYWwgc3VjaCBhdHRlbXB0 cyBhcmUgbWFkZSAtIGluZnJlcXVlbnRseQoJZW5vdWdoIC0gYnV0IG5vIGVmZmVjdGl2ZSByZXNl dCBpcyBkb25lLCBwZXJoYXBzIGR1ZSB0byBpbmNvbnNpc3RlbnQKCWNvbnRleHQgc3VibWlzc2lv biBzdGF0dXMsIHdoaWNoIGlzIGRlc2NyaWJlZCBmdXJ0aGVyIGRvd24gYmVsb3cuCgpOT1RFOiBH ZW4gNyBhbmQgZWFybGllciB3aWxsIGFsd2F5cyBwcm9tb3RlIHRvIGZ1bGwgR1BVIHJlc2V0IHNp bmNlIHRoZXJlIGlzCmN1cnJlbnRseSBubyBwZXItZW5naW5lIHJlc2V0IHN1cHBvcnQgZm9yIHRo ZXNlIGdlbnMuCgoyLiBDb250ZXh0IFN1Ym1pc3Npb24gU3RhdHVzIENvbnNpc3RlbmN5LgoKUGVy LWVuZ2luZSBoYW5nIHJlY292ZXJ5IG9uIGdlbjggcmVsaWVzIG9uIHRoZSBiYXNpYyBjb25jZXB0 IG9mIGNvbnRleHQKc3VibWlzc2lvbiBzdGF0dXMgY29uc2lzdGVuY3kuIFdoYXQgdGhpcyBtZWFu cyBpcyB0aGF0IHdlIG1ha2Ugc3VyZSB0aGF0IHRoZQpzdGF0dXMgb2YgdGhlIGhhcmR3YXJlIGFu ZCB0aGUgZHJpdmVyIHdoZW4gaXQgY29tZXMgdG8gdGhlIHN1Ym1pc3Npb24gc3RhdHVzIG9mCnRo ZSBjdXJyZW50IGNvbnRleHQgb24gYW55IGVuZ2luZSBpcyBjb25zaXN0ZW50LiBGb3IgZXhhbXBs ZSwgd2hlbiBzdWJtaXR0aW5nIGEKY29udGV4dCB0byB0aGUgY29ycmVzcG9uZGluZyBFTFNQIHBv cnQgb2YgYW4gZW5naW5lIHdlIGV4cGVjdCB0aGUgb3duaW5nCnJlcXVlc3Qgb2YgdGhhdCBjb250 ZXh0IHRvIGJlIGF0IHRoZSBoZWFkIG9mIHRoZSBjb3JyZXNwb25kaW5nIGV4ZWN1dGlvbiBsaXN0 CnF1ZXVlLiBMaWtld2lzZSwgYXMgbG9uZyBhcyB0aGUgY29udGV4dCBpcyBleGVjdXRpbmcgb24g dGhlIEdQVSB3ZSBleHBlY3QgdGhlCkVYRUNMSVNUX1NUQVRVUyByZWdpc3RlciBhbmQgdGhlIGNv bnRleHQgc3RhdHVzIGJ1ZmZlciB0byByZWZsZWN0IHRoaXMuIFRodXMsCmlmIHRoZSBjb250ZXh0 IHN1Ym1pc3Npb24gc3RhdHVzIGlzIGNvbnNpc3RlbnQgdGhlIElEIG9mIHRoZSBjdXJyZW50bHkK ZXhlY3V0aW5nIGNvbnRleHQgc2hvdWxkIGJlIGluIEVYRUNMSVNUX1NUQVRVUyBhbmQgaXQgc2hv dWxkIGJlIGNvbnNpc3RlbnQKd2l0aCB0aGUgY29udGV4dCBvZiB0aGUgaGVhZCByZXF1ZXN0IGVs ZW1lbnQgaW4gdGhlIGV4ZWN1dGlvbiBsaXN0IHF1ZXVlCmNvcnJlc3BvbmRpbmcgdG8gdGhhdCBl bmdpbmUuCgpUaGUgcmVhc29uIHdoeSB0aGlzIGlzIGltcG9ydGFudCBmb3IgcGVyLWVuZ2luZSBo YW5nIHJlY292ZXJ5IG9uIGdlbjggaXMKYmVjYXVzZSB0aGlzIHJlY292ZXJ5IG1vZGUgcmVsaWVz IG9uIGNvbnRleHQgcmVzdWJtaXNzaW9uIHRvIHJlc3VtZSBleGVjdXRpb24KZm9sbG93aW5nIHRo ZSByZWNvdmVyeS4gSWYgYSBjb250ZXh0IGhhcyBiZWVuIGRldGVybWluZWQgdG8gYmUgaHVuZyBh bmQgdGhlCnBlci1lbmdpbmUgaGFuZyByZWNvdmVyeSBtb2RlIGlzIGVuZ2FnZWQgbGVhZGluZyB0 byB0aGUgcmVzdWJtaXNzaW9uIG9mIHRoYXQKY29udGV4dCBpdCdzIGltcG9ydGFudCB0aGF0IHRo ZSBoYXJkd2FyZSBpcyBpbiBmYWN0IG5vdCBidXN5IGRvaW5nIHNvbWV0aGluZwplbHNlIG9yIGJl aW5nIGlkbGUgc2luY2UgYSByZXN1Ym1pc3Npb24gZHVyaW5nIHRoaXMgc3RhdGUgd291bGQgY2F1 c2UgdW5mb3JzZWVuCnNpZGUtZWZmZWN0cyBzdWNoIGFzIHVuZXhwZWN0ZWQgcHJlZW1wdGlvbnMu CgpUaGVyZSBhcmUgcmFyZSwgYWx0aG91Z2ggY29uc2lzdGVudGx5IHJlcHJvZHVjYWJsZSwgc2l0 dWF0aW9ucyB0aGF0IGhhdmUgc2hvd24KdXAgaW4gcHJhY3RpY2Ugd2hlcmUgdGhlIGRyaXZlciBh bmQgaGFyZHdhcmUgYXJlIG5vIGxvbmdlciBjb25zaXN0ZW50IHdpdGggZWFjaApvdGhlciwgZS5n LiBkdWUgdG8gbG9zdCBjb250ZXh0IGNvbXBsZXRpb24gaW50ZXJydXB0cyBhZnRlciB3aGljaCB0 aGUgaGFyZHdhcmUKd291bGQgYmUgaWRsZSBidXQgdGhlIGRyaXZlciB3b3VsZCBzdGlsbCB0aGlu ayB0aGF0IGEgY29udGV4dCB3b3VsZCBzdGlsbCBiZQphY3RpdmUuCgozLiBUaGVyZSBpcyBhIG5l dyByZXNldCBwYXRoIGZvciBlbmdpbmUgcmVzZXQgYWxvbmdzaWRlIHRoZSBsZWdhY3kgZnVsbCBH UFUKcmVzZXQgcGF0aC4gVGhpcyBwYXRoIGRvZXMgdGhlIGZvbGxvd2luZzoKCgkxKSBDaGVjayBm b3IgY29udGV4dCBzdWJtaXNzaW9uIGNvbnNpc3RlbmN5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZQoJ Y29udGV4dCB0aGF0IHRoZSBoYXJkd2FyZSBpcyBjdXJyZW50bHkgc3R1Y2sgb24gaXMgYWN0dWFs bHkgd2hhdCB0aGUKCWRyaXZlciBpcyB3b3JraW5nIG9uLiBJZiBub3QgdGhlbiBjbGVhcmx5IHdl J3JlIG5vdCBpbiBhIGNvbnNpc3RlbnRseQoJaHVuZyBzdGF0ZSBhbmQgd2UgYmFpbCBvdXQgZWFy bHkuCgoJMikgRGlzYWJsZS9pZGxlIHRoZSBlbmdpbmUuIFRoaXMgaXMgZG9uZSB0aHJvdWdoIHJl c2V0IGhhbmRzaGFraW5nIG9uCglnZW44KyB1bmxpa2UgZWFybGllciBnZW5zIHdoZXJlIHRoaXMg d2FzIGRvbmUgYnkgY2xlYXJpbmcgdGhlIHJpbmcKCXZhbGlkIGJpdHMgaW4gTUlfTU9ERSBhbmQg cmluZyBjb250cm9sIHJlZ2lzdGVycywgd2hpY2ggYXJlIG5vIGxvbmdlcgoJc3VwcG9ydGVkIG9u IGdlbjgrLiBSZXNldCBoYW5kc2hha2luZyB0cmFuc2xhdGVzIHRvIHNldHRpbmcgdGhlIHJlc2V0 CglyZXF1ZXN0IGJpdCBpbiB0aGUgcmVzZXQgY29udHJvbCByZWdpc3Rlci4KCgkzKSBTYXZlIHRo ZSBjdXJyZW50IGVuZ2luZSBzdGF0ZS4KCglXaGF0IHRoaXMgdHJhbnNsYXRlcyB0byBvbiBnZW44 IGlzIHNpbXBseSB0byByZWFkIHRoZSBjdXJyZW50IHZhbHVlIG9mCgl0aGUgaGVhZCByZWdpc3Rl ciBhbmQgbnVkZ2UgaXQgc28gdGhhdCBpdCBwb2ludHMgdG8gdGhlIG5leHQgdmFsaWQKCWluc3Ry dWN0aW9uIGluIHRoZSByaW5nIGJ1ZmZlci4gU2luY2Ugd2UgYXNzdW1lIHRoYXQgdGhlIGV4ZWN1 dGlvbiBpcwoJY3VycmVudGx5IHN0dWNrIGluIGEgYmF0Y2ggYnVmZmVyIHRoZSBlZmZlY3Qgb2Yg dGhpcyBpcyB0aGF0IHRoZQoJYmF0Y2hidWZmZXIgc3RhcnQgaW5zdHJ1Y3Rpb24gb2YgdGhlIGh1 bmcgYmF0Y2ggYnVmZmVyIGlzIHNraXBwZWQgc28KCXRoYXQgd2hlbiBleGVjdXRpb24gcmVzdW1l cywgZm9sbG93aW5nIHRoZSBoYW5nIHJlY292ZXJ5IGNvbXBsZXRpb24sIGl0CglyZXN1bWVzIGlt bWVkaWF0ZWx5IGZvbGxvd2luZyB0aGUgYmF0Y2ggYnVmZmVyLgoKCVRoaXMgZWZmZWN0aXZlbHkg bWVhbnMgdGhhdCB3ZSdyZSBmb3JjZWZ1bGx5IHRlcm1pbmF0aW5nIHRoZSBjdXJyZW50bHkKCWFj dGl2ZSwgaHVuZyBiYXRjaCBidWZmZXIuIE9idmlvdXNseSwgdGhlIG91dGNvbWUgb2YgdGhpcyBp bnRlcnZlbnRpb24KCWlzIHBvdGVudGlhbGx5IHVuZGVmaW5lZCBidXQgdGhlcmUgYXJlIG5vdCBt YW55IGdvb2Qgb3B0aW9ucyBpbiB0aGlzCglzY2VuYXJpby4gSXQncyBiZXR0ZXIgdGhhbiByZXNl dHRpbmcgdGhlIGVudGlyZSBHUFUgaW4gdGhlIHZhc3QKCW1ham9yaXR5IG9mIGNhc2VzLgoKCVNh dmUgdGhlIG51ZGdlZCBoZWFkIHZhbHVlIHRvIGJlIGFwcGxpZWQgbGF0ZXIuCgoJNCkgUmVzZXQg dGhlIGVuZ2luZS4KCgk1KSBBcHBseSB0aGUgbnVkZ2VkIGhlYWQgdmFsdWUgdG8gdGhlIGhlYWQg cmVnaXN0ZXIuCgoJNikgUmVlbmFibGUgdGhlIGVuZ2luZS4gRm9yIGdlbjggdGhpcyBtZWFucyBy ZXN1Ym1pdHRpbmcgdGhlIGZpeGVkLXVwCgljb250ZXh0LCBhbGxvd2luZyBleGVjdXRpb24gdG8g cmVzdW1lLiBJbiBvcmRlciB0byByZXN1Ym1pdCBhIGNvbnRleHQKCXdpdGhvdXQgcmVseWluZyBv biB0aGUgY3VycmVudGx5IGh1bmcgZXhlY3V0aW9uIGxpc3QgcXVldWVzIHdlIHVzZSBhCglwcml2 aWxlZ2VkIEFQSSB0aGF0IGlzIGRlZGljYXRlZCBmb3IgVERSIHVzZSBvbmx5LiBUaGlzIHN1Ym1p c3Npb24gQVBJCglieXBhc3NlcyBhbnkgY3VycmVudGx5IHF1ZXVlZCB3b3JrIGFuZCBnZXRzIGV4 Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlCglFTFNQIHBvcnRzLgoKCTcpIElmIHRoZSBlbmdpbmUgaGFu ZyByZWNvdmVyeSBwcm9jZWR1cmUgZmFpbHMgYXQgYW55IHBvaW50IGluIGJldHdlZW4KCWRpc2Fi bGVtZW50IGFuZCByZWVuYWJsZW1lbnQgb2YgdGhlIGVuZ2luZSB0aGVyZSBpcyBhIGJhY2stb2Zm Cglwcm9jZWR1cmU6IEZvciBnZW44IGl0J3MgcG9zc2libGUgdG8gYmFjayBvdXQgb2YgdGhlIHJl c2V0IGhhbmRzaGFrZSBieQoJY2xlYXJpbmcgdGhlIHJlc2V0IHJlcXVlc3QgYml0IGluIHRoZSBy ZXNldCBjb250cm9sIHJlZ2lzdGVyLgoKTk9URToKSXQncyBwb3NzaWJsZSB0aGF0IHNvbWUgb2Yg QmVuIFdpZGF3c2t5J3Mgb3JpZ2luYWwgcGVyLWVuZ2luZSByZXNldCBwYXRjaGVzCmZyb20gMyB5 ZWFycyBhZ28gYXJlIGluIHRoaXMgY29tbWl0IGJ1dCBzaW5jZSB0aGlzIHdvcmsgaGFzIGdvbmUg dGhyb3VnaCB0aGUKaGFuZHMgb2YgYXQgbGVhc3QgMyBwZW9wbGUgYWxyZWFkeSBhbnkga2luZCBv ZiBvd25lcnNoaXAgdHJhY2tpbmcgaGFzIGJlZW4gbG9zdAphIGxvbmcgdGltZSBhZ28uIElmIHlv dSB0aGluayB0aGF0IHlvdSBzaG91bGQgYmUgb24gdGhlIHNvYiBsaXN0IGp1c3QgbGV0IG1lCmtu b3cuCgpTaWduZWQtb2ZmLWJ5OiBUb21hcyBFbGYgPHRvbWFzLmVsZkBpbnRlbC5jb20+ClNpZ25l ZC1vZmYtYnk6IEFydW4gU2lsdXZlcnkgPGFydW4uc2lsdXZlcnlAaW50ZWwuY29tPgpTaWduZWQt b2ZmLWJ5OiBJYW4gTGlzdGVyIDxpYW4ubGlzdGVyQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgfCAgICAyICstCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RtYS5jICAgICAgICAgfCAgIDE3ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMgICAgICAgICB8ICAxOTggKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oICAgICAgICAgfCAgIDYzICsrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9p cnEuYyAgICAgICAgIHwgIDE5NyArKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cGFyYW1zLmMgICAgICB8ICAgMTAgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAg ICAgICAgIHwgICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAg fCAgNjYxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5oICAgICAgICB8ICAgMTQgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfbHJjX3Rkci5oICAgIHwgICAzNyArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jIHwgICA4NCArKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmggfCAgIDY0ICsrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgICAg IHwgIDIwOCArKysrKysrKysrCiAxMyBmaWxlcyBjaGFuZ2VkLCAxNTIwIGluc2VydGlvbnMoKyks IDQxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyY190ZHIuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggODQ0 NmVmNC4uZTMzZTEwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTQxODMs NyArNDE4Myw3IEBAIGk5MTVfd2VkZ2VkX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQogCiAJaW50 ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCi0JaTkxNV9oYW5kbGVfZXJyb3IoZGV2LCB2 YWwsCisJaTkxNV9oYW5kbGVfZXJyb3IoZGV2LCAweDAsIHZhbCwKIAkJCSAgIk1hbnVhbGx5IHNl dHRpbmcgd2VkZ2VkIHRvICVsbHUiLCB2YWwpOwogCiAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2 X3ByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKaW5kZXggZTQ0MTE2Zi4uOGY0OWU3ZiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RtYS5jCkBAIC03NzYsNiArNzc2LDIxIEBAIHN0YXRpYyB2b2lkIGlu dGVsX2RldmljZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQkJ IGluZm8tPmhhc19ldV9wZyA/ICJ5IiA6ICJuIik7CiB9CiAKK3N0YXRpYyB2b2lkCitpOTE1X2hh bmdjaGVja19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJaW50IGk7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKworCWZvciAo aSA9IDA7IGkgPCBJOTE1X05VTV9SSU5HUzsgaSsrKSB7CisJCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSA9ICZkZXZfcHJpdi0+cmluZ1tpXTsKKworCQlpOTE1X2hhbmdjaGVja19yZWlu aXQoZW5naW5lKTsKKwkJZW5naW5lLT5oYW5nY2hlY2sucmVzZXRfY291bnQgPSAwOworCQllbmdp bmUtPmhhbmdjaGVjay50ZHJfY291bnQgPSAwOworCX0KK30KKwogLyoqCiAgKiBpOTE1X2RyaXZl cl9sb2FkIC0gc2V0dXAgY2hpcCBhbmQgY3JlYXRlIGFuIGluaXRpYWwgY29uZmlnCiAgKiBAZGV2 OiBEUk0gZGV2aWNlCkBAIC05NTYsNiArOTcxLDggQEAgaW50IGk5MTVfZHJpdmVyX2xvYWQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBmbGFncykKIAogCWk5MTVfZ2VtX2xv YWQoZGV2KTsKIAorCWk5MTVfaGFuZ2NoZWNrX2luaXQoZGV2KTsKKwogCS8qIE9uIHRoZSA5NDVH L0dNLCB0aGUgY2hpcHNldCByZXBvcnRzIHRoZSBNU0kgY2FwYWJpbGl0eSBvbiB0aGUKIAkgKiBp bnRlZ3JhdGVkIGdyYXBoaWNzIGV2ZW4gdGhvdWdoIHRoZSBzdXBwb3J0IGlzbid0IGFjdHVhbGx5 IHRoZXJlCiAJICogYWNjb3JkaW5nIHRvIHRoZSBwdWJsaXNoZWQgc3BlY3MuICBJdCBkb2Vzbid0 IGFwcGVhciB0byBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggYzNmZGJiMC4u ZTE2MjlhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j bHVkZSAiaTkxNV9kcnYuaCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCiAjaW5jbHVkZSAiaW50 ZWxfZHJ2LmgiCisjaW5jbHVkZSAiaW50ZWxfbHJjX3Rkci5oIgogCiAjaW5jbHVkZSA8bGludXgv Y29uc29sZS5oPgogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgpAQCAtNTgxLDYgKzU4Miw3IEBA IHN0YXRpYyBpbnQgaTkxNV9kcm1fc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YzsKIAlwY2lfcG93ZXJfdCBvcHJlZ2lvbl90YXJnZXRfc3RhdGU7 CiAJaW50IGVycm9yOworCWludCBpOwogCiAJLyogaWdub3JlIGxpZCBldmVudHMgZHVyaW5nIHN1 c3BlbmQgKi8KIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+bW9kZXNldF9yZXN0b3JlX2xvY2spOwpA QCAtNjAyLDYgKzYwNCwxNiBAQCBzdGF0aWMgaW50IGk5MTVfZHJtX3N1c3BlbmQoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKIAkJcmV0dXJuIGVycm9yOwogCX0KIAorCS8qCisJICogQ2xlYXIgYW55 IHBlbmRpbmcgcmVzZXQgcmVxdWVzdHMuIFRoZXkgc2hvdWxkIGJlIHBpY2tlZCB1cAorCSAqIGFm dGVyIHJlc3VtZSB3aGVuIG5ldyB3b3JrIGlzIHN1Ym1pdHRlZAorCSAqLworCWZvciAoaSA9IDA7 IGkgPCBJOTE1X05VTV9SSU5HUzsgaSsrKQorCQlhdG9taWNfc2V0KCZkZXZfcHJpdi0+cmluZ1tp XS5oYW5nY2hlY2suZmxhZ3MsIDApOworCisJYXRvbWljX2NsZWFyX21hc2soSTkxNV9SRVNFVF9J Tl9QUk9HUkVTU19GTEFHLAorCQkmZGV2X3ByaXYtPmdwdV9lcnJvci5yZXNldF9jb3VudGVyKTsK KwogCWludGVsX3N1c3BlbmRfZ3RfcG93ZXJzYXZlKGRldik7CiAKIAkvKgpAQCAtOTA1LDYgKzkx NywxOTIgQEAgaW50IGk5MTVfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlyZXR1cm4g MDsKIH0KIAorLyoqCisgKiBpOTE1X3Jlc2V0X2VuZ2luZSAtIHJlc2V0IEdQVSBlbmdpbmUgYWZ0 ZXIgYSBoYW5nCisgKiBAZW5naW5lOiBlbmdpbmUgdG8gcmVzZXQKKyAqCisgKiBSZXNldCBhIHNw ZWNpZmljIEdQVSBlbmdpbmUuIFVzZWZ1bCBpZiBhIGhhbmcgaXMgZGV0ZWN0ZWQuIFJldHVybnMg emVybyBvbiBzdWNjZXNzZnVsCisgKiByZXNldCBvciBvdGhlcndpc2UgYW4gZXJyb3IgY29kZS4K KyAqCisgKiBQcm9jZWR1cmUgaXMgZmFpcmx5IHNpbXBsZToKKyAqCisgKgktIEZvcmNlIGVuZ2lu ZSB0byBpZGxlLgorICoKKyAqCS0gU2F2ZSBjdXJyZW50IGhlYWQgcmVnaXN0ZXIgdmFsdWUgYW5k IG51ZGdlIGl0IHBhc3QgdGhlIHBvaW50IG9mIHRoZSBoYW5nIGluIHRoZQorICoJICByaW5nIGJ1 ZmZlciwgd2hpY2ggaXMgdHlwaWNhbGx5IHRoZSBCQl9TVEFSVCBpbnN0cnVjdGlvbiBvZiB0aGUg aHVuZyBiYXRjaCBidWZmZXIsCisgKgkgIG9uIHRvIHRoZSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb24u CisgKgorICoJLSBSZXNldCBlbmdpbmUuCisgKgorICoJLSBSZXN0b3JlIHRoZSBwcmV2aW91c2x5 IHNhdmVkLCBudWRnZWQgaGVhZCByZWdpc3RlciB2YWx1ZS4KKyAqCisgKgktIFJlLWVuYWJsZSBl bmdpbmUgdG8gcmVzdW1lIHJ1bm5pbmcuIE9uIGdlbjggdGhpcyByZXF1aXJlcyB0aGUgcHJldmlv dXNseSBodW5nCisgKgkgIGNvbnRleHQgdG8gYmUgcmVzdWJtaXR0ZWQgdG8gRUxTUCB2aWEgdGhl IGRlZGljYXRlZCBURFItZXhlY2xpc3RzIGludGVyZmFjZS4KKyAqCisgKi8KK2ludCBpOTE1X3Jl c2V0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpjdXJyZW50X3JlcXVlc3QgPSBOVUxMOworCXVpbnQzMl90IGhlYWQ7CisJYm9vbCBmb3JjZV9h ZHZhbmNlID0gZmFsc2U7CisJaW50IHJldCA9IDA7CisJaW50IGVycl9yZXQgPSAwOworCisJV0FS Tl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXYtPnN0cnVjdF9tdXRleCkpOworCisgICAgICAgIC8q IFRha2Ugd2FrZSBsb2NrIHRvIHByZXZlbnQgcG93ZXIgc2F2aW5nIG1vZGUgKi8KKwlpbnRlbF91 bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7CisKKwlpOTE1X2dl bV9yZXNldF9lbmdpbmUoZGV2X3ByaXYsIGVuZ2luZSk7CisKKwlpZiAoaTkxNS5lbmFibGVfZXhl Y2xpc3RzKSB7CisJCWVudW0gY29udGV4dF9zdWJtaXNzaW9uX3N0YXR1cyBzdGF0dXMgPQorCQkJ aW50ZWxfZXhlY2xpc3RzX1REUl9nZXRfY3VycmVudF9yZXF1ZXN0KGVuZ2luZSwgTlVMTCk7CisK KwkJLyoKKwkJICogSWYgdGhlIGhhcmR3YXJlIGFuZCBkcml2ZXIgc3RhdGVzIGRvIG5vdCBjb2lu Y2lkZQorCQkgKiBvciBpZiB0aGVyZSBmb3Igc29tZSByZWFzb24gaXMgbm8gY3VycmVudCBjb250 ZXh0CisJCSAqIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIHN1Ym1pdHRlZCB0aGVuIGJhaWwgb3V0 IGFuZAorCQkgKiB0cnkgYWdhaW4uIERvIG5vdCBwcm9jZWVkIHVubGVzcyB3ZSBoYXZlIHJlbGlh YmxlCisJCSAqIGN1cnJlbnQgY29udGV4dCBzdGF0ZSBpbmZvcm1hdGlvbi4KKwkJICovCisJCWlm IChzdGF0dXMgIT0gQ09OVEVYVF9TVUJNSVNTSU9OX1NUQVRVU19PSykgeworCQkJcmV0ID0gLUVB R0FJTjsKKwkJCWdvdG8gcmVzZXRfZW5naW5lX2Vycm9yOworCQl9CisJfQorCisJcmV0ID0gaW50 ZWxfcmluZ19kaXNhYmxlKGVuZ2luZSk7CisJaWYgKHJldCAhPSAwKSB7CisJCURSTV9FUlJPUigi RmFpbGVkIHRvIGRpc2FibGUgJXNcbiIsIGVuZ2luZS0+bmFtZSk7CisJCWdvdG8gcmVzZXRfZW5n aW5lX2Vycm9yOworCX0KKworCWlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMpIHsKKwkJZW51bSBj b250ZXh0X3N1Ym1pc3Npb25fc3RhdHVzIHN0YXR1czsKKwkJYm9vbCBpbmNvbnNpc3RlbnQ7CisK KwkJc3RhdHVzID0gaW50ZWxfZXhlY2xpc3RzX1REUl9nZXRfY3VycmVudF9yZXF1ZXN0KGVuZ2lu ZSwKKwkJCQkmY3VycmVudF9yZXF1ZXN0KTsKKworCQlpbmNvbnNpc3RlbnQgPSAoc3RhdHVzICE9 IENPTlRFWFRfU1VCTUlTU0lPTl9TVEFUVVNfT0spOworCQlpZiAoaW5jb25zaXN0ZW50KSB7CisJ CQkvKgorCQkJICogSWYgd2Ugc29tZWhvdyBoYXZlIHJlYWNoZWQgdGhpcyBwb2ludCB3aXRoCisJ CQkgKiBhbiBpbmNvbnNpc3RlbnQgY29udGV4dCBzdWJtaXNzaW9uIHN0YXR1cyB0aGVuCisJCQkg KiBiYWNrIG91dCBvZiB0aGUgcHJldmlvdXNseSByZXF1ZXN0ZWQgcmVzZXQgYW5kCisJCQkgKiBy ZXRyeSBsYXRlci4KKwkJCSAqLworCQkJV0FSTihpbmNvbnNpc3RlbnQsCisJCQkgICAgICJJbmNv bnNpc3RlbnQgY29udGV4dCBzdGF0dXMgb24gJXM6ICV1XG4iLAorCQkJICAgICBlbmdpbmUtPm5h bWUsIHN0YXR1cyk7CisKKwkJCXJldCA9IC1FQUdBSU47CisJCQlnb3RvIHJlZW5hYmxlX3Jlc2V0 X2VuZ2luZV9lcnJvcjsKKwkJfQorCX0KKworCS8qIFNhbXBsZSB0aGUgY3VycmVudCByaW5nIGhl YWQgcG9zaXRpb24gKi8KKwloZWFkID0gSTkxNV9SRUFEX0hFQUQoZW5naW5lKSAmIEhFQURfQURE UjsKKworCWlmIChoZWFkID09IGVuZ2luZS0+aGFuZ2NoZWNrLmxhc3RfaGVhZCkgeworCQkvKgor CQkgKiBUaGUgZW5naW5lIGhhcyBub3QgYWR2YW5jZWQgc2luY2UgdGhlIGxhc3QKKwkJICogdGlt ZSBpdCBodW5nIHNvIGZvcmNlIGl0IHRvIGFkdmFuY2UgdG8gdGhlCisJCSAqIG5leHQgUVdPUkQu IEluIG1vc3QgY2FzZXMgdGhlIGVuZ2luZSBoZWFkCisJCSAqIHBvaW50ZXIgd2lsbCBhdXRvbWF0 aWNhbGx5IGFkdmFuY2UgdG8gdGhlCisJCSAqIG5leHQgaW5zdHJ1Y3Rpb24gYXMgc29vbiBhcyBp dCBoYXMgcmVhZCB0aGUKKwkJICogY3VycmVudCBpbnN0cnVjdGlvbiwgd2l0aG91dCB3YWl0aW5n IGZvciBpdAorCQkgKiB0byBjb21wbGV0ZS4gVGhpcyBzZWVtcyB0byBiZSB0aGUgZGVmYXVsdAor CQkgKiBiZWhhdmlvdXIsIGhvd2V2ZXIgYW4gTUJPWCB3YWl0IGluc2VydGVkCisJCSAqIGRpcmVj dGx5IHRvIHRoZSBWQ1MvQkNTIGVuZ2luZXMgZG9lcyBub3QgYmVoYXZlCisJCSAqIGluIHRoZSBz YW1lIHdheSwgaW5zdGVhZCB0aGUgaGVhZCBwb2ludGVyCisJCSAqIHdpbGwgc3RpbGwgYmUgcG9p bnRpbmcgYXQgdGhlIE1CT1ggaW5zdHJ1Y3Rpb24KKwkJICogdW50aWwgaXQgY29tcGxldGVzLgor CQkgKi8KKwkJZm9yY2VfYWR2YW5jZSA9IHRydWU7CisJfQorCisJZW5naW5lLT5oYW5nY2hlY2su bGFzdF9oZWFkID0gaGVhZDsKKworCXJldCA9IGludGVsX3Jpbmdfc2F2ZShlbmdpbmUsIGN1cnJl bnRfcmVxdWVzdCwgZm9yY2VfYWR2YW5jZSk7CisJaWYgKHJldCkgeworCQlEUk1fRVJST1IoIkZh aWxlZCB0byBzYXZlICVzIGVuZ2luZSBzdGF0ZVxuIiwgZW5naW5lLT5uYW1lKTsKKwkJZ290byBy ZWVuYWJsZV9yZXNldF9lbmdpbmVfZXJyb3I7CisJfQorCisJcmV0ID0gaW50ZWxfZ3B1X2VuZ2lu ZV9yZXNldChlbmdpbmUpOworCWlmIChyZXQpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcmVz ZXQgJXNcbiIsIGVuZ2luZS0+bmFtZSk7CisJCWdvdG8gcmVlbmFibGVfcmVzZXRfZW5naW5lX2Vy cm9yOworCX0KKworCXJldCA9IGludGVsX3JpbmdfcmVzdG9yZShlbmdpbmUsIGN1cnJlbnRfcmVx dWVzdCk7CisJaWYgKHJldCkgeworCQlEUk1fRVJST1IoIkZhaWxlZCB0byByZXN0b3JlICVzIGVu Z2luZSBzdGF0ZVxuIiwgZW5naW5lLT5uYW1lKTsKKwkJZ290byByZWVuYWJsZV9yZXNldF9lbmdp bmVfZXJyb3I7CisJfQorCisJLyogQ29ycmVjdCBkcml2ZXIgc3RhdGUgKi8KKwlpbnRlbF9ncHVf ZW5naW5lX3Jlc2V0X3Jlc2FtcGxlKGVuZ2luZSwgY3VycmVudF9yZXF1ZXN0KTsKKworCS8qCisJ ICogUmVlbmFibGUgZW5naW5lCisJICoKKwkgKiBJbiBleGVjbGlzdCBtb2RlIG9uIGdlbjgrIHRo aXMgaXMgaW1wbGljaXQgYnkgc2ltcGx5IHJlc3VibWl0dGluZworCSAqIHRoZSBwcmV2aW91c2x5 IGh1bmcgY29udGV4dC4gSW4gcmluZyBidWZmZXIgc3VibWlzc2lvbiBtb2RlIG9uIGdlbjcKKwkg KiBhbmQgZWFybGllciB3ZSBuZWVkIHRvIGFjdGl2ZWx5IHR1cm4gb24gdGhlIGVuZ2luZSBmaXJz dC4KKwkgKi8KKwlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKQorCQlyZXQgPSBpbnRlbF9leGVj bGlzdHNfVERSX2NvbnRleHRfcXVldWUoZW5naW5lLCBjdXJyZW50X3JlcXVlc3QpOworCWVsc2UK KwkJcmV0ID0gaW50ZWxfcmluZ19lbmFibGUoZW5naW5lKTsKKworCWlmIChyZXQpIHsKKwkJRFJN X0VSUk9SKCJGYWlsZWQgdG8gZW5hYmxlICVzIGFnYWluIGFmdGVyIHJlc2V0XG4iLAorCQkJZW5n aW5lLT5uYW1lKTsKKworCQlnb3RvIHJlc2V0X2VuZ2luZV9lcnJvcjsKKwl9CisKKwkvKiBDbGVh ciByZXNldCBmbGFncyB0byBhbGxvdyBmdXR1cmUgaGFuZ2NoZWNrcyAqLworCWF0b21pY19zZXQo JmVuZ2luZS0+aGFuZ2NoZWNrLmZsYWdzLCAwKTsKKworCS8qIFdha2UgdXAgYW55dGhpbmcgd2Fp dGluZyBvbiB0aGlzIGVuZ2luZSdzIHF1ZXVlICovCisJd2FrZV91cF9hbGwoJmVuZ2luZS0+aXJx X3F1ZXVlKTsKKworCWlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMgJiYgY3VycmVudF9yZXF1ZXN0 KQorCQlpOTE1X2dlbV9yZXF1ZXN0X3VucmVmZXJlbmNlKGN1cnJlbnRfcmVxdWVzdCk7CisKKwlp bnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7CisKKwly ZXR1cm4gcmV0OworCityZWVuYWJsZV9yZXNldF9lbmdpbmVfZXJyb3I6CisKKwllcnJfcmV0ID0g aW50ZWxfcmluZ19lbmFibGUoZW5naW5lKTsKKwlpZiAoZXJyX3JldCkKKwkJRFJNX0VSUk9SKCJG YWlsZWQgdG8gcmVlbmFibGUgJXMgZm9sbG93aW5nIGVycm9yIGR1cmluZyByZXNldCAoJWQpXG4i LAorCQkJZW5naW5lLT5uYW1lLCBlcnJfcmV0KTsKKworcmVzZXRfZW5naW5lX2Vycm9yOgorCisJ LyogQ2xlYXIgcmVzZXQgZmxhZ3MgdG8gYWxsb3cgZnV0dXJlIGhhbmdjaGVja3MgKi8KKwlhdG9t aWNfc2V0KCZlbmdpbmUtPmhhbmdjaGVjay5mbGFncywgMCk7CisKKwkvKiBXYWtlIHVwIGFueXRo aW5nIHdhaXRpbmcgb24gdGhpcyBlbmdpbmUncyBxdWV1ZSAqLworCXdha2VfdXBfYWxsKCZlbmdp bmUtPmlycV9xdWV1ZSk7CisKKwlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzICYmIGN1cnJlbnRf cmVxdWVzdCkKKwkJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShjdXJyZW50X3JlcXVlc3Qp OworCisJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwp OworCisJcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGludCBpOTE1X3BjaV9wcm9iZShzdHJ1Y3Qg cGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudCkKIHsKIAlzdHJ1 Y3QgaW50ZWxfZGV2aWNlX2luZm8gKmludGVsX2luZm8gPQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK aW5kZXggYWI1ZGZkYy4uOWNjNWU4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0yMjgw LDYgKzIyODAsNDggQEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7CiAJaW50IGNvdW50Owog fTsKIAorLyoKKyAqIENvbnRleHQgc3VibWlzc2lvbiBzdGF0dXMKKyAqCisgKiBDT05URVhUX1NV Qk1JU1NJT05fU1RBVFVTX09LOgorICoJQ29udGV4dCBzdWJtaXR0ZWQgdG8gRUxTUCBhbmQgc3Rh dGUgb2YgZXhlY2xpc3QgcXVldWUgaXMgdGhlIHNhbWUgYXMKKyAqCXRoZSBzdGF0ZSBvZiBFWEVD TElTVF9TVEFUVVMgcmVnaXN0ZXIuIFNvZnR3YXJlIGFuZCBoYXJkd2FyZSBzdGF0ZXMKKyAqCWFy ZSBjb25zaXN0ZW50IGFuZCBjYW4gYmUgdHJ1c3RlZC4KKyAqCisgKiBDT05URVhUX1NVQk1JU1NJ T05fU1RBVFVTX0lOQ09OU0lTVEVOVDoKKyAqCUNvbnRleHQgaGFzIGJlZW4gc3VibWl0dGVkIHRv IHRoZSBleGVjbGlzdCBxdWV1ZSBidXQgdGhlIHN0YXRlIG9mIHRoZQorICoJRVhFQ0xJU1RfU1RB VFVTIHJlZ2lzdGVyIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBleGVjbGlzdCBxdWV1ZSBzdGF0ZS4K KyAqCVRoaXMgY291bGQgbWVhbiBhbnkgb2YgdGhlIGZvbGxvd2luZzoKKyAqCisgKgkJMS4gVGhl IGNvbnRleHQgaXMgaW4gdGhlIGhlYWQgcG9zaXRpb24gb2YgdGhlIGV4ZWNsaXN0IHF1ZXVlCisg KgkJICAgYnV0IGhhcyBub3QgeWV0IGJlZW4gc3VibWl0dGVkIHRvIEVMU1AuCisgKgorICoJCTIu IFRoZSBoYXJkd2FyZSBqdXN0IHJlY2VudGx5IGNvbXBsZXRlZCB0aGUgY29udGV4dCBidXQgdGhl CisgKgkJICAgY29udGV4dCBpcyBwZW5kaW5nIHJlbW92YWwgZnJvbSB0aGUgZXhlY2xpc3QgcXVl dWUuCisgKgorICoJCTMuIFRoZSBkcml2ZXIgaGFzIGxvc3QgYSBjb250ZXh0IHN0YXRlIHRyYW5z aXRpb24gaW50ZXJydXB0LgorICoJCSAgIFR5cGljYWxseSB3aGF0IHRoaXMgbWVhbnMgaXMgdGhh dCBoYXJkd2FyZSBoYXMgY29tcGxldGVkIGFuZAorICoJCSAgIGlzIG5vdyBpZGxlIGJ1dCB0aGUg ZHJpdmVyIHRoaW5rcyB0aGUgaGFyZHdhcmUgaXMgc3RpbGwKKyAqCQkgICBidXN5LgorICoKKyAq CU92ZXJhbGwgd2hhdCB0aGlzIG1lYW5zIGlzIHRoYXQgdGhlIGNvbnRleHQgc3VibWlzc2lvbiBz dGF0dXMgaXMKKyAqCWN1cnJlbnRseSBpbiB0cmFuc2l0aW9uIGFuZCBjYW5ub3QgYmUgdHJ1c3Rl ZCB1bnRpbCBpdCBzZXR0bGVzIGRvd24uCisgKgorICogQ09OVEVYVF9TVUJNSVNTSU9OX1NUQVRV U19OT05FX1NVQk1JVFRFRDoKKyAqCU5vIGNvbnRleHQgc3VibWl0dGVkIHRvIHRoZSBleGVjbGlz dCBxdWV1ZSBhbmQgdGhlIEVYRUNMSVNUX1NUQVRVUworICoJcmVnaXN0ZXIgc2hvd3Mgbm8gY29u dGV4dCBiZWluZyBwcm9jZXNzZWQuCisgKgorICogQ09OVEVYVF9TVUJNSVNTSU9OX1NUQVRVU19O T05FX1VOREVGSU5FRDoKKyAqCUluaXRpYWwgc3RhdGUgYmVmb3JlIHN1Ym1pc3Npb24gc3RhdHVz IGhhcyBiZWVuIGRldGVybWluZWQuCisgKgorICovCitlbnVtIGNvbnRleHRfc3VibWlzc2lvbl9z dGF0dXMgeworCUNPTlRFWFRfU1VCTUlTU0lPTl9TVEFUVVNfT0sgPSAwLAorCUNPTlRFWFRfU1VC TUlTU0lPTl9TVEFUVVNfSU5DT05TSVNURU5ULAorCUNPTlRFWFRfU1VCTUlTU0lPTl9TVEFUVVNf Tk9ORV9TVUJNSVRURUQsCisJQ09OVEVYVF9TVUJNSVNTSU9OX1NUQVRVU19VTkRFRklORUQKK307 CisKIC8qIE5vdGUgdGhhdCB0aGUgKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICopIGNhc3QgaXMg anVzdCB0byBzaHV0IHVwIGdjYy4gKi8KICNkZWZpbmUgX19JOTE1X18ocCkgKHsgXAogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpfX3A7IFwKQEAgLTI0NzgsNiArMjUyMCw3IEBAIHN0cnVjdCBp OTE1X3BhcmFtcyB7CiAJaW50IGVuYWJsZV9pcHM7CiAJaW50IGludmVydF9icmlnaHRuZXNzOwog CWludCBlbmFibGVfY21kX3BhcnNlcjsKKwl1bnNpZ25lZCBpbnQgZ3B1X3Jlc2V0X3Byb21vdGlv bl90aW1lOwogCS8qIGxlYXZlIGJvb2xzIGF0IHRoZSBlbmQgdG8gbm90IGNyZWF0ZSBob2xlcyAq LwogCWJvb2wgZW5hYmxlX2hhbmdjaGVjazsKIAlib29sIGZhc3Rib290OwpAQCAtMjUwOCwxOCAr MjU1MSwzNCBAQCBleHRlcm4gbG9uZyBpOTE1X2NvbXBhdF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmls cCwgdW5zaWduZWQgaW50IGNtZCwKIAkJCSAgICAgIHVuc2lnbmVkIGxvbmcgYXJnKTsKICNlbmRp ZgogZXh0ZXJuIGludCBpbnRlbF9ncHVfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Citl eHRlcm4gaW50IGludGVsX2dwdV9lbmdpbmVfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKTsKK2V4dGVybiBpbnQgaW50ZWxfcmVxdWVzdF9ncHVfZW5naW5lX3Jlc2V0KHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CitleHRlcm4gaW50IGludGVsX3VucmVxdWVzdF9n cHVfZW5naW5lX3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiBleHRlcm4g aW50IGk5MTVfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CitleHRlcm4gaW50IGk5MTVf cmVzZXRfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CiBleHRlcm4gdW5z aWduZWQgbG9uZyBpOTE1X2NoaXBzZXRfdmFsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7CiBleHRlcm4gdW5zaWduZWQgbG9uZyBpOTE1X21jaF92YWwoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KTsKIGV4dGVybiB1bnNpZ25lZCBsb25nIGk5MTVfZ2Z4X3ZhbChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIHZvaWQgaTkxNV91cGRh dGVfZ2Z4X3ZhbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogaW50IHZsdl9m b3JjZV9nZnhfY2xvY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIG9u KTsKIHZvaWQgaW50ZWxfaHBkX2NhbmNlbF93b3JrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7CitzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9oYW5nY2hlY2tfcmVpbml0KHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfcmluZ19oYW5nY2hl Y2sgKmhjID0gJmVuZ2luZS0+aGFuZ2NoZWNrOworCisJaGMtPmFjdGhkID0gMDsKKwloYy0+bWF4 X2FjdGhkID0gMDsKKwloYy0+c2Vxbm8gPSAwOworCWhjLT5zY29yZSA9IDA7CisJaGMtPmFjdGlv biA9IEhBTkdDSEVDS19JRExFOworCWhjLT5kZWFkbG9jayA9IDA7Cit9CisKIAogLyogaTkxNV9p cnEuYyAqLwogdm9pZCBpOTE1X3F1ZXVlX2hhbmdjaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKLV9fcHJpbnRmKDMsIDQpCi12b2lkIGk5MTVfaGFuZGxlX2Vycm9yKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIGJvb2wgd2VkZ2VkLAorX19wcmludGYoNCwgNSkKK3ZvaWQgaTkxNV9oYW5kbGVf ZXJyb3Ioc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIGVuZ2luZV9tYXNrLCBib29sIHdlZGdl ZCwKIAkJICAgICAgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKIAogZXh0ZXJuIHZvaWQgaW50ZWxf aXJxX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2lycS5jCmluZGV4IDQwYzQ0ZmMuLjZhNDBlMjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfaXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEu YwpAQCAtMjMxMiwxMCArMjMxMiw2NSBAQCBzdGF0aWMgdm9pZCBpOTE1X3Jlc2V0X2FuZF93YWtl dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAljaGFyICplcnJvcl9ldmVudFtdID0geyBJOTE1 X0VSUk9SX1VFVkVOVCAiPTEiLCBOVUxMIH07CiAJY2hhciAqcmVzZXRfZXZlbnRbXSA9IHsgSTkx NV9SRVNFVF9VRVZFTlQgIj0xIiwgTlVMTCB9OwogCWNoYXIgKnJlc2V0X2RvbmVfZXZlbnRbXSA9 IHsgSTkxNV9FUlJPUl9VRVZFTlQgIj0wIiwgTlVMTCB9OworCWJvb2wgcmVzZXRfY29tcGxldGUg PSBmYWxzZTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nOwogCWludCByZXQ7CisJaW50 IGk7CisKKwltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAKIAlrb2JqZWN0X3VldmVu dF9lbnYoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwgS09CSl9DSEFOR0UsIGVycm9yX2V2ZW50 KTsKIAorCWZvcl9lYWNoX3JpbmcocmluZywgZGV2X3ByaXYsIGkpIHsKKworCQkvKgorCQkgKiBT a2lwIGZ1cnRoZXIgaW5kaXZpZHVhbCBlbmdpbmUgcmVzZXQgcmVxdWVzdHMgaWYgZnVsbCBHUFUK KwkJICogcmVzZXQgcmVxdWVzdGVkLgorCQkgKi8KKwkJaWYgKGk5MTVfcmVzZXRfaW5fcHJvZ3Jl c3MoZXJyb3IpKQorCQkJYnJlYWs7CisKKwkJaWYgKGF0b21pY19yZWFkKCZyaW5nLT5oYW5nY2hl Y2suZmxhZ3MpICYKKwkJCUk5MTVfRU5HSU5FX1JFU0VUX0lOX1BST0dSRVNTKSB7CisKKwkJCXJl dCA9IGk5MTVfcmVzZXRfZW5naW5lKHJpbmcpOworCisJCQlyZXNldF9jb21wbGV0ZSA9IHRydWU7 CisKKwkJCS8qCisJCQkgKiBFeGVjbGlzdCBtb2RlIG9ubHk6CisJCQkgKgorCQkJICogLUVBR0FJ TiBtZWFucyB0aGF0IGJldHdlZW4gZGV0ZWN0aW5nIGEgaGFuZyAoYW5kCisJCQkgKiBhbHNvIGRl dGVybWluaW5nIHRoYXQgdGhlIGN1cnJlbnRseSBzdWJtaXR0ZWQKKwkJCSAqIGNvbnRleHQgaXMg c3RhYmxlIGFuZCB2YWxpZCkgYW5kIHRyeWluZyB0byByZWNvdmVyCisJCQkgKiBmcm9tIHRoZSBo YW5nIHRoZSBjdXJyZW50IGNvbnRleHQgY2hhbmdlZCBzdGF0ZS4KKwkJCSAqIFRoaXMgbWVhbnMg dGhhdCB3ZSBhcmUgcHJvYmFibHkgbm90IGNvbXBsZXRlbHkgaHVuZworCQkJICogYWZ0ZXIgYWxs LiBKdXN0IGZhaWwgYW5kIHJldHJ5IGJ5IGV4aXRpbmcgYWxsIHRoZQorCQkJICogd2F5IGJhY2sg YW5kIHdhaXQgZm9yIHRoZSBuZXh0IGhhbmcgZGV0ZWN0aW9uLiBJZiB3ZQorCQkJICogaGF2ZSBh IHRydWUgaGFuZyBvbiBvdXIgaGFuZHMgdGhlbiB3ZSB3aWxsIGRldGVjdCBpdAorCQkJICogYWdh aW4sIG90aGVyd2lzZSB3ZSB3aWxsIGNvbnRpbnVlIGxpa2Ugbm90aGluZworCQkJICogaGFwcGVu ZWQuCisJCQkgKi8KKwkJCWlmIChyZXQgPT0gLUVBR0FJTikgeworCQkJCURSTV9FUlJPUigiUmVz ZXQgb2YgJXMgYWJvcnRlZCBkdWUgdG8gIiBcCisJCQkJCSAgImNoYW5nZSBpbiBjb250ZXh0IHN1 Ym1pc3Npb24gIiBcCisJCQkJCSAgInN0YXRlIC0gcmV0cnlpbmchIiwgcmluZy0+bmFtZSk7CisJ CQkJcmV0ID0gMDsKKwkJCX0KKworCQkJaWYgKHJldCkgeworCQkJCURSTV9FUlJPUigiUmVzZXQg b2YgJXMgZmFpbGVkISAoJWQpIiwgcmluZy0+bmFtZSwgcmV0KTsKKworCQkJCWF0b21pY19zZXRf bWFzayhJOTE1X1JFU0VUX0lOX1BST0dSRVNTX0ZMQUcsCisJCQkJCQkmZGV2X3ByaXYtPmdwdV9l cnJvci5yZXNldF9jb3VudGVyKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KKworCS8qIFRo ZSBmdWxsIEdQVSByZXNldCB3aWxsIGdyYWIgdGhlIHN0cnVjdF9tdXRleCB3aGVuIGl0IG5lZWRz IGl0ICovCisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisKIAkvKgogCSAqIE5v dGUgdGhhdCB0aGVyZSdzIG9ubHkgb25lIHdvcmsgaXRlbSB3aGljaCBkb2VzIGdwdSByZXNldHMs IHNvIHdlCiAJICogbmVlZCBub3Qgd29ycnkgYWJvdXQgY29uY3VycmVudCBncHUgcmVzZXRzIHBv dGVudGlhbGx5IGluY3JlbWVudGluZwpAQCAtMjM2MiwyNCArMjQxNywzNyBAQCBzdGF0aWMgdm9p ZCBpOTE1X3Jlc2V0X2FuZF93YWtldXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJCSAqCiAJ CQkgKiBTaW5jZSB1bmxvY2sgb3BlcmF0aW9ucyBhcmUgYSBvbmUtc2lkZWQgYmFycmllciBvbmx5 LAogCQkJICogd2UgbmVlZCB0byBpbnNlcnQgYSBiYXJyaWVyIGhlcmUgdG8gb3JkZXIgYW55IHNl cW5vCi0JCQkgKiB1cGRhdGVzIGJlZm9yZQotCQkJICogdGhlIGNvdW50ZXIgaW5jcmVtZW50Lgor CQkJICogdXBkYXRlcyBiZWZvcmUgdGhlIGNvdW50ZXIgaW5jcmVtZW50LgorCQkJICoKKwkJCSAq IFRoZSBpbmNyZW1lbnQgY2xlYXJzIEk5MTVfUkVTRVRfSU5fUFJPR1JFU1NfRkxBRy4KIAkJCSAq LwogCQkJc21wX21iX19iZWZvcmVfYXRvbWljKCk7CiAJCQlhdG9taWNfaW5jKCZkZXZfcHJpdi0+ Z3B1X2Vycm9yLnJlc2V0X2NvdW50ZXIpOwogCi0JCQlrb2JqZWN0X3VldmVudF9lbnYoJmRldi0+ cHJpbWFyeS0+a2Rldi0+a29iaiwKLQkJCQkJICAgS09CSl9DSEFOR0UsIHJlc2V0X2RvbmVfZXZl bnQpOworCQkJLyoKKwkJCSAqIElmIGFueSBwZXItZW5naW5lIHJlc2V0cyB3ZXJlIHByb21vdGVk IHRvIGZ1bGwgR1BVCisJCQkgKiByZXNldCBkb24ndCBmb3JnZXQgdG8gY2xlYXIgdGhvc2UgcmVz ZXQgZmxhZ3MuCisJCQkgKi8KKwkJCWZvcl9lYWNoX3JpbmcocmluZywgZGV2X3ByaXYsIGkpCisJ CQkJYXRvbWljX3NldCgmcmluZy0+aGFuZ2NoZWNrLmZsYWdzLCAwKTsKIAkJfSBlbHNlIHsKKwkJ CS8qIFRlcm1pbmFsIHdlZGdlIGNvbmRpdGlvbiAqLworCQkJV0FSTigxLCAiaTkxNV9yZXNldCBm YWlsZWQsIGRlY2xhcmluZyBHUFUgYXMgd2VkZ2VkIVxuIik7CiAJCQlhdG9taWNfc2V0X21hc2so STkxNV9XRURHRUQsICZlcnJvci0+cmVzZXRfY291bnRlcik7CiAJCX0KIAotCQkvKgotCQkgKiBO b3RlOiBUaGUgd2FrZV91cCBhbHNvIHNlcnZlcyBhcyBhIG1lbW9yeSBiYXJyaWVyIHNvIHRoYXQK LQkJICogd2FpdGVycyBzZWUgdGhlIHVwZGF0ZSB2YWx1ZSBvZiB0aGUgcmVzZXQgY291bnRlciBh dG9taWNfdC4KLQkJICovCi0JCWk5MTVfZXJyb3Jfd2FrZV91cChkZXZfcHJpdiwgdHJ1ZSk7CisJ CXJlc2V0X2NvbXBsZXRlID0gdHJ1ZTsKIAl9CisKKwkvKgorCSAqIE5vdGU6IFRoZSB3YWtlX3Vw IGFsc28gc2VydmVzIGFzIGEgbWVtb3J5IGJhcnJpZXIgc28gdGhhdAorCSAqIHdhaXRlcnMgc2Vl IHRoZSB1cGRhdGUgdmFsdWUgb2YgdGhlIHJlc2V0IGNvdW50ZXIgYXRvbWljX3QuCisJICovCisJ aWYgKHJlc2V0X2NvbXBsZXRlKQorCQlpOTE1X2Vycm9yX3dha2VfdXAoZGV2X3ByaXYsIHRydWUp OworCisJa29iamVjdF91ZXZlbnRfZW52KCZkZXYtPnByaW1hcnktPmtkZXYtPmtvYmosCisJCQkg ICBLT0JKX0NIQU5HRSwgcmVzZXRfZG9uZV9ldmVudCk7CiB9CiAKIHN0YXRpYyB2b2lkIGk5MTVf cmVwb3J0X2FuZF9jbGVhcl9laXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKQEAgLTI0NzYsMjEg KzI1NDQsNDIgQEAgc3RhdGljIHZvaWQgaTkxNV9yZXBvcnRfYW5kX2NsZWFyX2VpcihzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQogCiAvKioKICAqIGk5MTVfaGFuZGxlX2Vycm9yIC0gaGFuZGxlIGEg Z3B1IGVycm9yCi0gKiBAZGV2OiBkcm0gZGV2aWNlCiAgKgotICogRG8gc29tZSBiYXNpYyBjaGVj a2luZyBvZiByZWdzaXRlciBzdGF0ZSBhdCBlcnJvciB0aW1lIGFuZAorICogQGRldjogCQlkcm0g ZGV2aWNlCisgKgorICogQGVuZ2luZV9tYXNrOiAJQml0IG1hc2sgY29udGFpbmluZyB0aGUgZW5n aW5lIGZsYWdzIG9mIGFsbCBlbmdpbmVzCisgKgkJCWFzc29jaWF0ZWQgd2l0aCBvbmUgb3IgbW9y ZSBkZXRlY3RlZCBlcnJvcnMuCisgKgkJCU1heSBiZSAweDAuCisgKgorICoJCQlJZiB3ZWRnZWQg aXMgc2V0IHRvIHRydWUgdGhpcyBpbXBsaWVzIHRoYXQgb25lIG9yIG1vcmUKKyAqCQkJZW5naW5l IGhhbmdzIHdlcmUgZGV0ZWN0ZWQuIEluIHRoaXMgY2FzZSB3ZSB3aWxsCisgKgkJCWF0dGVtcHQg dG8gcmVzZXQgYWxsIGVuZ2luZXMgdGhhdCBoYXZlIGJlZW4gZGV0ZWN0ZWQKKyAqCQkJYXMgaHVu Zy4KKyAqCisgKgkJCUlmIGEgcHJldmlvdXMgZW5naW5lIHJlc2V0IHdhcyBhdHRlbXB0ZWQgdG9v IHJlY2VudGx5CisgKgkJCW9yIGlmIG9uZSBvZiB0aGUgY3VycmVudCBlbmdpbmUgcmVzZXRzIGZh aWxzIHdlIGZhbGwKKyAqCQkJYmFjayB0byBsZWdhY3kgZnVsbCBHUFUgcmVzZXQuCisgKgorICog QHdlZGdlZDogCQl0cnVlID0gSGFuZyBkZXRlY3RlZCwgaW52b2tlIGhhbmcgcmVjb3ZlcnkuCisg KiBAZm10LCAuLi46IAkJRXJyb3IgbWVzc2FnZSBkZXNjcmliaW5nIHJlYXNvbiBmb3IgZXJyb3Iu CisgKgorICogRG8gc29tZSBiYXNpYyBjaGVja2luZyBvZiByZWdpc3RlciBzdGF0ZSBhdCBlcnJv ciB0aW1lIGFuZAogICogZHVtcCBpdCB0byB0aGUgc3lzbG9nLiAgQWxzbyBjYWxsIGk5MTVfY2Fw dHVyZV9lcnJvcl9zdGF0ZSgpIHRvIG1ha2UKICAqIHN1cmUgd2UgZ2V0IGEgcmVjb3JkIGFuZCBt YWtlIGl0IGF2YWlsYWJsZSBpbiBkZWJ1Z2ZzLiAgRmlyZSBhIHVldmVudAogICogc28gdXNlcnNw YWNlIGtub3dzIHNvbWV0aGluZyBiYWQgaGFwcGVuZWQgKHNob3VsZCB0cmlnZ2VyIGNvbGxlY3Rp b24KLSAqIG9mIGEgcmluZyBkdW1wIGV0Yy4pLgorICogb2YgYSByaW5nIGR1bXAgZXRjLikuIElm IGEgaGFuZyB3YXMgZGV0ZWN0ZWQgKHdlZGdlZCA9IHRydWUpIHRyeSB0bworICogcmVzZXQgdGhl IGFzc29jaWF0ZWQgZW5naW5lLiBGYWlsaW5nIHRoYXQsIHRyeSB0byBmYWxsIGJhY2sgdG8gbGVn YWN5CisgKiBmdWxsIEdQVSByZXNldCByZWNvdmVyeSBtb2RlLgogICovCi12b2lkIGk5MTVfaGFu ZGxlX2Vycm9yKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgd2VkZ2VkLAordm9pZCBpOTE1 X2hhbmRsZV9lcnJvcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1MzIgZW5naW5lX21hc2ssIGJv b2wgd2VkZ2VkLAogCQkgICAgICAgY29uc3QgY2hhciAqZm10LCAuLi4pCiB7CiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAl2YV9saXN0IGFy Z3M7CiAJY2hhciBlcnJvcl9tc2dbODBdOwogCisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lOworCiAJdmFfc3RhcnQoYXJncywgZm10KTsKIAl2c2NucHJpbnRmKGVycm9yX21zZywgc2l6 ZW9mKGVycm9yX21zZyksIGZtdCwgYXJncyk7CiAJdmFfZW5kKGFyZ3MpOwpAQCAtMjQ5OSw4ICsy NTg4LDU5IEBAIHZvaWQgaTkxNV9oYW5kbGVfZXJyb3Ioc3RydWN0IGRybV9kZXZpY2UgKmRldiwg Ym9vbCB3ZWRnZWQsCiAJaTkxNV9yZXBvcnRfYW5kX2NsZWFyX2VpcihkZXYpOwogCiAJaWYgKHdl ZGdlZCkgewotCQlhdG9taWNfc2V0X21hc2soSTkxNV9SRVNFVF9JTl9QUk9HUkVTU19GTEFHLAot CQkJCSZkZXZfcHJpdi0+Z3B1X2Vycm9yLnJlc2V0X2NvdW50ZXIpOworCQkvKgorCQkgKiBEZWZl ciB0byBmdWxsIEdQVSByZXNldCBpZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBpcyB0cnVlOgorCQkg KiAJMS4gVGhlIGNhbGxlciBkaWQgbm90IGFzayBmb3IgcGVyLWVuZ2luZSByZXNldC4KKwkJICoJ Mi4gVGhlIGhhcmR3YXJlIGRvZXMgbm90IHN1cHBvcnQgaXQgKHByZS1nZW43KS4KKwkJICoJMy4g V2UgYWxyZWFkeSB0cmllZCBwZXItZW5naW5lIHJlc2V0IHJlY2VudGx5LgorCQkgKi8KKwkJYm9v bCBmdWxsX3Jlc2V0ID0gdHJ1ZTsKKworCQkvKgorCQkgKiBUQkQ6IFdlIGN1cnJlbnRseSBvbmx5 IHN1cHBvcnQgcGVyLWVuZ2luZSByZXNldCBmb3IgZ2VuOCsuCisJCSAqIEltcGxlbWVudCBzdXBw b3J0IGZvciBnZW43LgorCQkgKi8KKwkJaWYgKGVuZ2luZV9tYXNrICYmIChJTlRFTF9JTkZPKGRl diktPmdlbiA+PSA4KSkgeworCQkJdTMyIGk7CisKKwkJCWZvcl9lYWNoX3JpbmcoZW5naW5lLCBk ZXZfcHJpdiwgaSkgeworCQkJCXUzMiBub3csIGxhc3RfZW5naW5lX3Jlc2V0X3RpbWVkaWZmOwor CisJCQkJaWYgKCEoaW50ZWxfcmluZ19mbGFnKGVuZ2luZSkgJiBlbmdpbmVfbWFzaykpCisJCQkJ CWNvbnRpbnVlOworCisJCQkJLyogTWVhc3VyZSB0aGUgdGltZSBzaW5jZSB0aGlzIGVuZ2luZSB3 YXMgbGFzdCByZXNldCAqLworCQkJCW5vdyA9IGdldF9zZWNvbmRzKCk7CisJCQkJbGFzdF9lbmdp bmVfcmVzZXRfdGltZWRpZmYgPQorCQkJCQlub3cgLSBlbmdpbmUtPmhhbmdjaGVjay5sYXN0X2Vu Z2luZV9yZXNldF90aW1lOworCisJCQkJZnVsbF9yZXNldCA9IGxhc3RfZW5naW5lX3Jlc2V0X3Rp bWVkaWZmIDwKKwkJCQkJaTkxNS5ncHVfcmVzZXRfcHJvbW90aW9uX3RpbWU7CisKKwkJCQllbmdp bmUtPmhhbmdjaGVjay5sYXN0X2VuZ2luZV9yZXNldF90aW1lID0gbm93OworCisJCQkJLyoKKwkJ CQkgKiBUaGlzIGVuZ2luZSB3YXMgbm90IHJlc2V0IHRvbyByZWNlbnRseSAtIGdvIGFoZWFkCisJ CQkJICogd2l0aCBlbmdpbmUgcmVzZXQgaW5zdGVhZCBvZiBmYWxsaW5nIGJhY2sgdG8gZnVsbAor CQkJCSAqIEdQVSByZXNldC4KKwkJCQkgKgorCQkJCSAqIEZsYWcgdGhhdCB3ZSB3YW50IHRvIHRy eSBhbmQgcmVzZXQgdGhpcyBlbmdpbmUuCisJCQkJICogVGhpcyBjYW4gc3RpbGwgYmUgb3ZlcnJp ZGRlbiBieSBhIGdsb2JhbAorCQkJCSAqIHJlc2V0IGUuZy4gaWYgcGVyLWVuZ2luZSByZXNldCBm YWlscy4KKwkJCQkgKi8KKwkJCQlpZiAoIWZ1bGxfcmVzZXQpCisJCQkJCWF0b21pY19zZXRfbWFz ayhJOTE1X0VOR0lORV9SRVNFVF9JTl9QUk9HUkVTUywKKwkJCQkJCSZlbmdpbmUtPmhhbmdjaGVj ay5mbGFncyk7CisJCQkJZWxzZQorCQkJCQlicmVhazsKKworCQkJfSAvKiBmb3JfZWFjaF9yaW5n ICovCisJCX0KKworCQlpZiAoZnVsbF9yZXNldCkgeworCQkJYXRvbWljX3NldF9tYXNrKEk5MTVf UkVTRVRfSU5fUFJPR1JFU1NfRkxBRywKKwkJCQkJJmRldl9wcml2LT5ncHVfZXJyb3IucmVzZXRf Y291bnRlcik7CisJCX0KIAogCQkvKgogCQkgKiBXYWtldXAgd2FpdGluZyBwcm9jZXNzZXMgc28g dGhhdCB0aGUgcmVzZXQgZnVuY3Rpb24KQEAgLTI4MjMsNyArMjk2Myw3IEBAIHJpbmdfc3R1Y2so c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgdTY0IGFjdGhkKQogCSAqLwogCXRtcCA9IEk5 MTVfUkVBRF9DVEwocmluZyk7CiAJaWYgKHRtcCAmIFJJTkdfV0FJVCkgewotCQlpOTE1X2hhbmRs ZV9lcnJvcihkZXYsIGZhbHNlLAorCQlpOTE1X2hhbmRsZV9lcnJvcihkZXYsIGludGVsX3Jpbmdf ZmxhZyhyaW5nKSwgZmFsc2UsCiAJCQkJICAiS2lja2luZyBzdHVjayB3YWl0IG9uICVzIiwKIAkJ CQkgIHJpbmctPm5hbWUpOwogCQlJOTE1X1dSSVRFX0NUTChyaW5nLCB0bXApOwpAQCAtMjgzNSw3 ICsyOTc1LDcgQEAgcmluZ19zdHVjayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCB1NjQg YWN0aGQpCiAJCWRlZmF1bHQ6CiAJCQlyZXR1cm4gSEFOR0NIRUNLX0hVTkc7CiAJCWNhc2UgMToK LQkJCWk5MTVfaGFuZGxlX2Vycm9yKGRldiwgZmFsc2UsCisJCQlpOTE1X2hhbmRsZV9lcnJvcihk ZXYsIGludGVsX3JpbmdfZmxhZyhyaW5nKSwgZmFsc2UsCiAJCQkJCSAgIktpY2tpbmcgc3R1Y2sg c2VtYXBob3JlIG9uICVzIiwKIAkJCQkJICByaW5nLT5uYW1lKTsKIAkJCUk5MTVfV1JJVEVfQ1RM KHJpbmcsIHRtcCk7CkBAIC0yODY0LDggKzMwMDQsMTAgQEAgc3RhdGljIHZvaWQgaTkxNV9oYW5n Y2hlY2tfZWxhcHNlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGRldl9wcml2LT5kZXY7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZzsK IAlpbnQgaTsKLQlpbnQgYnVzeV9jb3VudCA9IDAsIHJpbmdzX2h1bmcgPSAwOworCXUzMiBlbmdp bmVfbWFzayA9IDA7CisJaW50IGJ1c3lfY291bnQgPSAwOwogCWJvb2wgc3R1Y2tbSTkxNV9OVU1f UklOR1NdID0geyAwIH07CisJYm9vbCBmb3JjZV9mdWxsX2dwdV9yZXNldCA9IGZhbHNlOwogI2Rl ZmluZSBCVVNZIDEKICNkZWZpbmUgS0lDSyA1CiAjZGVmaW5lIEhVTkcgMjAKQEAgLTI5NjAsMTIg KzMxMDIsMjUgQEAgc3RhdGljIHZvaWQgaTkxNV9oYW5nY2hlY2tfZWxhcHNlZChzdHJ1Y3Qgd29y a19zdHJ1Y3QgKndvcmspCiAJCQlEUk1fSU5GTygiJXMgb24gJXNcbiIsCiAJCQkJIHN0dWNrW2ld ID8gInN0dWNrIiA6ICJubyBwcm9ncmVzcyIsCiAJCQkJIHJpbmctPm5hbWUpOwotCQkJcmluZ3Nf aHVuZysrOworCisJCQllbmdpbmVfbWFzayB8PSBpbnRlbF9yaW5nX2ZsYWcocmluZyk7CisJCQly aW5nLT5oYW5nY2hlY2sudGRyX2NvdW50Kys7CisJCX0gZWxzZSBpZiAocmluZy0+aGFuZ2NoZWNr LnNjb3JlID49IChIQU5HQ0hFQ0tfU0NPUkVfUklOR19IVU5HICogMikpIHsKKwkJCURSTV9JTkZP KCIlcyBvbiAlcywgaGFuZyByZWNvdmVyeSBpbmVmZmVjdGl2ZSEgIgorCQkJCSAiRmFsbGluZyBi YWNrIHRvIGZ1bGwgZ3B1IHJlc2V0LlxuIiwKKwkJCQkgc3R1Y2tbaV0gPyAic3R1Y2siIDogIm5v IHByb2dyZXNzIiwKKwkJCQkgcmluZy0+bmFtZSk7CisKKwkJCWZvcmNlX2Z1bGxfZ3B1X3Jlc2V0 ID0gdHJ1ZTsKKwkJCWJyZWFrOwogCQl9CiAJfQogCi0JaWYgKHJpbmdzX2h1bmcpCi0JCXJldHVy biBpOTE1X2hhbmRsZV9lcnJvcihkZXYsIHRydWUsICJSaW5nIGh1bmciKTsKKwlpZiAoZW5naW5l X21hc2spCisJCWk5MTVfaGFuZGxlX2Vycm9yKGRldiwgZW5naW5lX21hc2ssIHRydWUsICJSaW5n IGh1bmcgKDB4JTAyeCkiLCBlbmdpbmVfbWFzayk7CisJZWxzZSBpZiAoZm9yY2VfZnVsbF9ncHVf cmVzZXQpCisJCWk5MTVfaGFuZGxlX2Vycm9yKGRldiwgMHgwLCB0cnVlLAorCQkJIkhhbmcgcmVj b3ZlcnkgaW5lZmZlY3RpdmUsIGZhbGxpbmcgYmFjayB0byBmdWxsIEdQVSByZXNldCIpOwogCiAJ aWYgKGJ1c3lfY291bnQpCiAJCS8qIFJlc2V0IHRpbWVyIGNhc2UgY2hpcCBoYW5ncyB3aXRob3V0 IGFub3RoZXIgcmVxdWVzdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w YXJhbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmMKaW5kZXggYmI2NDQx NS4uOWNlYTAwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5jCkBAIC01MCw2ICs1MCw3 IEBAIHN0cnVjdCBpOTE1X3BhcmFtcyBpOTE1IF9fcmVhZF9tb3N0bHkgPSB7CiAJLmVuYWJsZV9j bWRfcGFyc2VyID0gMSwKIAkuZGlzYWJsZV92dGRfd2EgPSAwLAogCS51c2VfbW1pb19mbGlwID0g MCwKKwkuZ3B1X3Jlc2V0X3Byb21vdGlvbl90aW1lID0gMCwKIAkubW1pb19kZWJ1ZyA9IDAsCiAJ LnZlcmJvc2Vfc3RhdGVfY2hlY2tzID0gMSwKIAkubnVjbGVhcl9wYWdlZmxpcCA9IDAsCkBAIC0x NzIsNiArMTczLDE1IEBAIG1vZHVsZV9wYXJhbV9uYW1lZCh1c2VfbW1pb19mbGlwLCBpOTE1LnVz ZV9tbWlvX2ZsaXAsIGludCwgMDYwMCk7CiBNT0RVTEVfUEFSTV9ERVNDKHVzZV9tbWlvX2ZsaXAs CiAJCSAidXNlIE1NSU8gZmxpcHMgKC0xPW5ldmVyLCAwPWRyaXZlciBkaXNjcmV0aW9uIFtkZWZh dWx0XSwgMT1hbHdheXMpIik7CiAKK21vZHVsZV9wYXJhbV9uYW1lZChncHVfcmVzZXRfcHJvbW90 aW9uX3RpbWUsCisgICAgICAgICAgICAgICBpOTE1LmdwdV9yZXNldF9wcm9tb3Rpb25fdGltZSwg aW50LCAwNjQ0KTsKK01PRFVMRV9QQVJNX0RFU0MoZ3B1X3Jlc2V0X3Byb21vdGlvbl90aW1lLAor ICAgICAgICAgICAgICAgIkNhdGNoIGV4Y2Vzc2l2ZSBlbmdpbmUgcmVzZXRzLiBFYWNoIGVuZ2lu ZSBtYWludGFpbnMgYSAiCisJICAgICAgICJ0aW1lc3RhbXAgb2YgdGhlIGxhc3QgdGltZSBpdCB3 YXMgcmVzZXQuIElmIGl0IGhhbmdzIGFnYWluICIKKwkgICAgICAgIndpdGhpbiB0aGlzIHBlcmlv ZCB0aGVuIGZhbGwgYmFjayB0byBmdWxsIEdQVSByZXNldCB0byB0cnkgYW5kIgorCSAgICAgICAi IHJlY292ZXIgZnJvbSB0aGUgaGFuZy4gIgorICAgICAgICAgICAgICAgImRlZmF1bHQ9MCBzZWNv bmRzIChkaXNhYmxlZCkiKTsKKwogbW9kdWxlX3BhcmFtX25hbWVkKG1taW9fZGVidWcsIGk5MTUu bW1pb19kZWJ1ZywgaW50LCAwNjAwKTsKIE1PRFVMRV9QQVJNX0RFU0MobW1pb19kZWJ1ZywKIAki RW5hYmxlIHRoZSBNTUlPIGRlYnVnIGNvZGUgZm9yIHRoZSBmaXJzdCBOIGZhaWx1cmVzIChkZWZh dWx0OiBvZmYpLiAiCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAppbmRleCA5Yzk3ODQyLi5hZjlmMGFk IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAgLTEwMCw2ICsxMDAsMTAgQEAKICNkZWZpbmUg IEdSRE9NX1JFU0VUX1NUQVRVUyAoMTw8MSkKICNkZWZpbmUgIEdSRE9NX1JFU0VUX0VOQUJMRSAo MTw8MCkKIAorI2RlZmluZSBSSU5HX1JFU0VUX0NUTChyaW5nKQkoKHJpbmcpLT5tbWlvX2Jhc2Ur MHhkMCkKKyNkZWZpbmUgIFJFQURZX0ZPUl9SRVNFVAkweDIKKyNkZWZpbmUgIFJFUVVFU1RfUkVT RVQJCTB4MQorCiAjZGVmaW5lIElMS19HRFNSIDB4MmNhNCAvKiBNQ0hCQVIgb2Zmc2V0ICovCiAj ZGVmaW5lICBJTEtfR1JET01fRlVMTAkJKDA8PDEpCiAjZGVmaW5lICBJTEtfR1JET01fUkVOREVS CSgxPDwxKQpAQCAtMTMwLDYgKzEzNCw4IEBACiAjZGVmaW5lICBHRU42X0dSRE9NX1JFTkRFUgkJ KDEgPDwgMSkKICNkZWZpbmUgIEdFTjZfR1JET01fTUVESUEJCSgxIDw8IDIpCiAjZGVmaW5lICBH RU42X0dSRE9NX0JMVAkJCSgxIDw8IDMpCisjZGVmaW5lICBHRU42X0dSRE9NX1ZFQ1MJCSgxIDw8 IDQpCisjZGVmaW5lICBHRU44X0dSRE9NX01FRElBMgkJKDEgPDwgNykKIAogI2RlZmluZSBSSU5H X1BQX0RJUl9CQVNFKHJpbmcpCQkoKHJpbmcpLT5tbWlvX2Jhc2UrMHgyMjgpCiAjZGVmaW5lIFJJ TkdfUFBfRElSX0JBU0VfUkVBRChyaW5nKQkoKHJpbmcpLT5tbWlvX2Jhc2UrMHg1MTgpCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IDBmYzM1ZGQuLmE0MjczYWMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5jCkBAIC0xMzUsNiArMTM1LDcgQEAKICNpbmNsdWRlIDxkcm0vZHJtUC5oPgog I2luY2x1ZGUgPGRybS9pOTE1X2RybS5oPgogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVk ZSAiaW50ZWxfbHJjX3Rkci5oIgogCiAjZGVmaW5lIEdFTjlfTFJfQ09OVEVYVF9SRU5ERVJfU0la RSAoMjIgKiBQQUdFX1NJWkUpCiAjZGVmaW5lIEdFTjhfTFJfQ09OVEVYVF9SRU5ERVJfU0laRSAo MjAgKiBQQUdFX1NJWkUpCkBAIC0zMzAsNiArMzMxLDE2NCBAQCBzdGF0aWMgdm9pZCBleGVjbGlz dHNfZWxzcF93cml0ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogCXNwaW5fdW5sb2Nr KCZkZXZfcHJpdi0+dW5jb3JlLmxvY2spOwogfQogCisvKioKKyAqIGV4ZWNsaXN0X2dldF9jb250 ZXh0X3JlZ19wYWdlKCkgLSBHZXQgbWVtb3J5IHBhZ2UgZm9yIGNvbnRleHQgb2JqZWN0CisgKiBA ZW5naW5lOiBlbmdpbmUKKyAqIEBjdHg6IGNvbnRleHQgcnVubmluZyBvbiBlbmdpbmUKKyAqIEBw YWdlOiByZXR1cm5lZCBwYWdlCisgKgorICogUmV0dXJuOiAwIGlmIHN1Y2Nlc3NmdWwsIG90aGVy d2lzZSBwcm9wYWdhdGVzIGVycm9yIGNvZGVzLgorICovCitzdGF0aWMgaW5saW5lIGludCBleGVj bGlzdF9nZXRfY29udGV4dF9yZWdfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs CisJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCisJCXN0cnVjdCBwYWdlICoqcGFnZSkKK3sK KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iajsKKworCWlmICghcGFnZSkKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoIWN0eCkKKwkJY3R4ID0gZW5naW5lLT5kZWZhdWx0X2Nv bnRleHQ7CisKKwljdHhfb2JqID0gY3R4LT5lbmdpbmVbZW5naW5lLT5pZF0uc3RhdGU7CisKKwlp ZiAoV0FSTighY3R4X29iaiwgIkNvbnRleHQgb2JqZWN0IG5vdCBzZXQgdXAhXG4iKSkKKwkJcmV0 dXJuIC1FSU5WQUw7CisKKwlXQVJOKCFpOTE1X2dlbV9vYmpfaXNfcGlubmVkKGN0eF9vYmopLAor CSAgICAgIkNvbnRleHQgb2JqZWN0IGlzIG5vdCBwaW5uZWQhXG4iKTsKKworCSpwYWdlID0gaTkx NV9nZW1fb2JqZWN0X2dldF9wYWdlKGN0eF9vYmosIDEpOworCisJaWYgKFdBUk4oISpwYWdlLCAi Q29udGV4dCBvYmplY3QgcGFnZSBjb3VsZCBub3QgYmUgcmVzb2x2ZWQhXG4iKSkKKwkJcmV0dXJu IC1FSU5WQUw7CisKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBleGVjbGlzdF93cml0ZV9jb250 ZXh0X3JlZygpIC0gV3JpdGUgdmFsdWUgdG8gY29udGV4dCByZWdpc3RlcgorICogQGVuZ2luZTog ZW5naW5lCisgKiBAY3R4OiBjb250ZXh0IHJ1bm5pbmcgb24gZW5naW5lCisgKiBAY3R4X3JlZzog SW5kZXggaW50byBjb250ZXh0IGltYWdlIHBvaW50aW5nIHRvIHJlZ2lzdGVyIGxvY2F0aW9uCisg KiBAbW1pb19yZWdfYWRkcjogTU1JTyByZWdpc3RlciBhZGRyZXNzCisgKiBAdmFsOiBWYWx1ZSB0 byBiZSB3cml0dGVuCisgKgorICogUmV0dXJuOiAwIGlmIHN1Y2Nlc3NmdWwsIG90aGVyd2lzZSBw cm9wYWdhdGVzIGVycm9yIGNvZGVzLgorICovCitzdGF0aWMgaW5saW5lIGludCBleGVjbGlzdHNf d3JpdGVfY29udGV4dF9yZWcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQlzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY3R4LCB1MzIgY3R4X3JlZywgdTMyIG1taW9fcmVnX2FkZHIsCisJ CXUzMiB2YWwpCit7CisJc3RydWN0IHBhZ2UgKnBhZ2UgPSBOVUxMOworCXVpbnQzMl90ICpyZWdf c3RhdGU7CisKKwlpbnQgcmV0ID0gZXhlY2xpc3RfZ2V0X2NvbnRleHRfcmVnX3BhZ2UoZW5naW5l LCBjdHgsICZwYWdlKTsKKwlpZiAoV0FSTihyZXQsICJGYWlsZWQgdG8gd3JpdGUgJXUgdG8gcmVn aXN0ZXIgJXUgZm9yICVzIVxuIiwKKwkJKHVuc2lnbmVkIGludCkgdmFsLCAodW5zaWduZWQgaW50 KSBjdHhfcmVnLCBlbmdpbmUtPm5hbWUpKQorCQkJcmV0dXJuIHJldDsKKworCXJlZ19zdGF0ZSA9 IGttYXBfYXRvbWljKHBhZ2UpOworCisJV0FSTihyZWdfc3RhdGVbY3R4X3JlZ10gIT0gbW1pb19y ZWdfYWRkciwKKwkgICAgICJDb250ZXh0IHJlZ2lzdGVyIGFkZHJlc3MgKCV4KSAhPSBNTUlPIHJl Z2lzdGVyIGFkZHJlc3MgKCV4KSFcbiIsCisJICAgICAodW5zaWduZWQgaW50KSByZWdfc3RhdGVb Y3R4X3JlZ10sICh1bnNpZ25lZCBpbnQpIG1taW9fcmVnX2FkZHIpOworCisJcmVnX3N0YXRlW2N0 eF9yZWcrMV0gPSB2YWw7CisJa3VubWFwX2F0b21pYyhyZWdfc3RhdGUpOworCisJcmV0dXJuIHJl dDsKK30KKworLyoqCisgKiBleGVjbGlzdF9yZWFkX2NvbnRleHRfcmVnKCkgLSBSZWFkIHZhbHVl IGZyb20gY29udGV4dCByZWdpc3RlcgorICogQGVuZ2luZTogZW5naW5lCisgKiBAY3R4OiBjb250 ZXh0IHJ1bm5pbmcgb24gZW5naW5lCisgKiBAY3R4X3JlZzogSW5kZXggaW50byBjb250ZXh0IGlt YWdlIHBvaW50aW5nIHRvIHJlZ2lzdGVyIGxvY2F0aW9uCisgKiBAbW1pb19yZWdfYWRkcjogTU1J TyByZWdpc3RlciBhZGRyZXNzCisgKiBAdmFsOiBPdXRwdXQgcGFyYW1ldGVyIHJldHVybmluZyBy ZWdpc3RlciB2YWx1ZQorICoKKyAqIFJldHVybjogMCBpZiBzdWNjZXNzZnVsLCBvdGhlcndpc2Ug cHJvcGFnYXRlcyBlcnJvciBjb2Rlcy4KKyAqLworc3RhdGljIGlubGluZSBpbnQgZXhlY2xpc3Rz X3JlYWRfY29udGV4dF9yZWcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQlzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY3R4LCB1MzIgY3R4X3JlZywgdTMyIG1taW9fcmVnX2FkZHIsCisJ CXUzMiAqdmFsKQoreworCXN0cnVjdCBwYWdlICpwYWdlID0gTlVMTDsKKwl1aW50MzJfdCAqcmVn X3N0YXRlOworCWludCByZXQgPSAwOworCisJaWYgKCF2YWwpCisJCXJldHVybiAtRUlOVkFMOwor CisJcmV0ID0gZXhlY2xpc3RfZ2V0X2NvbnRleHRfcmVnX3BhZ2UoZW5naW5lLCBjdHgsICZwYWdl KTsKKwlpZiAoV0FSTihyZXQsICJGYWlsZWQgdG8gcmVhZCBmcm9tIHJlZ2lzdGVyICV1IGZvciAl cyFcbiIsCisJCSh1bnNpZ25lZCBpbnQpIGN0eF9yZWcsIGVuZ2luZS0+bmFtZSkpCisJCQlyZXR1 cm4gcmV0OworCisJcmVnX3N0YXRlID0ga21hcF9hdG9taWMocGFnZSk7CisKKwlXQVJOKHJlZ19z dGF0ZVtjdHhfcmVnXSAhPSBtbWlvX3JlZ19hZGRyLAorCSAgICAgIkNvbnRleHQgcmVnaXN0ZXIg YWRkcmVzcyAoJXgpICE9IE1NSU8gcmVnaXN0ZXIgYWRkcmVzcyAoJXgpIVxuIiwKKwkgICAgICh1 bnNpZ25lZCBpbnQpIHJlZ19zdGF0ZVtjdHhfcmVnXSwgKHVuc2lnbmVkIGludCkgbW1pb19yZWdf YWRkcik7CisKKwkqdmFsID0gcmVnX3N0YXRlW2N0eF9yZWcrMV07CisJa3VubWFwX2F0b21pYyhy ZWdfc3RhdGUpOworCisJcmV0dXJuIHJldDsKKyB9CisKKy8qCisgKiBHZW5lcmljIG1hY3JvcyBm b3IgZ2VuZXJhdGluZyBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiBmb3IgY29udGV4dCByZWdpc3Rl cgorICogcmVhZC93cml0ZSBmdW5jdGlvbnMuCisgKgorICogTWFjcm8gcGFyYW1ldGVycworICog LS0tLS0tLS0tLS0tLS0tLQorICogcmVnX25hbWU6IERlc2lnbmF0ZWQgbmFtZSBvZiBjb250ZXh0 IHJlZ2lzdGVyIChlLmcuIHRhaWwsIGhlYWQsIGJ1ZmZlcl9jdGwpCisgKgorICogcmVnX2RlZjog Q29udGV4dCByZWdpc3RlciBtYWNybyBkZWZpbml0aW9uIChlLmcuIENUWF9SSU5HX1RBSUwpCisg KgorICogbW1pb19yZWdfZGVmOiBOYW1lIG9mIG1hY3JvIGZ1bmN0aW9uIHVzZWQgdG8gZGV0ZXJt aW5lIHRoZSBhZGRyZXNzCisgKgkJIG9mIHRoZSBjb3JyZXNwb25kaW5nIE1NSU8gcmVnaXN0ZXIg KGUuZy4gUklOR19UQUlMLCBSSU5HX0hFQUQpLgorICoJCSBUaGlzIG1hY3JvIGZ1bmN0aW9uIGlz IGFzc3VtZWQgdG8gYmUgZGVmaW5lZCBvbiB0aGUgZm9ybSBvZjoKKyAqCisgKgkJCSNkZWZpbmUg bW1pb19yZWdfZGVmKGJhc2UpIChiYXNlK3JlZ2lzdGVyX29mZnNldCkKKyAqCisgKgkJIFdoZXJl ICJiYXNlIiBpcyB0aGUgTU1JTyBiYXNlIGFkZHJlc3Mgb2YgdGhlIHJlc3BlY3RpdmUgcmluZwor ICoJCSBhbmQgInJlZ2lzdGVyX29mZnNldCIgaXMgdGhlIG9mZnNldCByZWxhdGl2ZSB0byAiYmFz ZSIuCisgKgorICogRnVuY3Rpb24gcGFyYW1ldGVycworICogLS0tLS0tLS0tLS0tLS0tLS0tLQor ICogZW5naW5lOiBUaGUgZW5naW5lIHRoYXQgdGhlIGNvbnRleHQgaXMgcnVubmluZyBvbgorICog Y3R4OiBUaGUgY29udGV4dCBvZiB0aGUgcmVnaXN0ZXIgdGhhdCBpcyB0byBiZSBhY2Nlc3NlZAor ICogcmVnX25hbWU6IFZhbHVlIHRvIGJlIHdyaXR0ZW4vcmVhZCB0by9mcm9tIHRoZSByZWdpc3Rl ci4KKyAqLworI2RlZmluZSBJTlRFTF9FWEVDTElTVFNfV1JJVEVfUkVHKHJlZ19uYW1lLCByZWdf ZGVmLCBtbWlvX3JlZ19kZWYpIFwKKwlpbnQgaW50ZWxfZXhlY2xpc3RzX3dyaXRlXyMjcmVnX25h bWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBcCisJCQkJCSAgICAgc3RydWN0IGlu dGVsX2NvbnRleHQgKmN0eCwgXAorCQkJCQkgICAgIHUzMiByZWdfbmFtZSkgXAoreyBcCisJcmV0 dXJuIGV4ZWNsaXN0c193cml0ZV9jb250ZXh0X3JlZyhlbmdpbmUsIGN0eCwgKHJlZ19kZWYpLCBc CisJCQltbWlvX3JlZ19kZWYoZW5naW5lLT5tbWlvX2Jhc2UpLCAocmVnX25hbWUpKTsgXAorfQor CisjZGVmaW5lIElOVEVMX0VYRUNMSVNUU19SRUFEX1JFRyhyZWdfbmFtZSwgcmVnX2RlZiwgbW1p b19yZWdfZGVmKSBcCisJaW50IGludGVsX2V4ZWNsaXN0c19yZWFkXyMjcmVnX25hbWUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBcCisJCQkJCSAgICBzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY3R4LCBcCisJCQkJCSAgICB1MzIgKnJlZ19uYW1lKSBcCit7IFwKKwlyZXR1cm4gZXhlY2xp c3RzX3JlYWRfY29udGV4dF9yZWcoZW5naW5lLCBjdHgsIChyZWdfZGVmKSwgXAorCQkJbW1pb19y ZWdfZGVmKGVuZ2luZS0+bW1pb19iYXNlKSwgKHJlZ19uYW1lKSk7IFwKK30KKworSU5URUxfRVhF Q0xJU1RTX1JFQURfUkVHKHRhaWwsIENUWF9SSU5HX1RBSUwsIFJJTkdfVEFJTCkKK0lOVEVMX0VY RUNMSVNUU19XUklURV9SRUcoaGVhZCwgQ1RYX1JJTkdfSEVBRCwgUklOR19IRUFEKQorSU5URUxf RVhFQ0xJU1RTX1JFQURfUkVHKGhlYWQsIENUWF9SSU5HX0hFQUQsIFJJTkdfSEVBRCkKKworI3Vu ZGVmIElOVEVMX0VYRUNMSVNUU19SRUFEX1JFRworI3VuZGVmIElOVEVMX0VYRUNMSVNUU19XUklU RV9SRUcKKwogc3RhdGljIGludCBleGVjbGlzdHNfdXBkYXRlX2NvbnRleHQoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKmN0eF9vYmosCiAJCQkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpyaW5nX29iaiwKIAkJCQkgICAgc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LApAQCAt Mzg3LDM0ICs1NDYsNTIgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pdF9jb250ZXh0cyhz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogCWV4ZWNsaXN0c19lbHNwX3dyaXRlKHJpbmcs IGN0eF9vYmowLCBjdHhfb2JqMSk7CiB9CiAKLXN0YXRpYyB2b2lkIGV4ZWNsaXN0c19jb250ZXh0 X3VucXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKK3N0YXRpYyB2b2lkIGV4ZWNs aXN0c19mZXRjaF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAorCQkJc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoqcmVxMCwKKwkJCXN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqKnJlcTEpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEwID0g TlVMTCwgKnJlcTEgPSBOVUxMOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqY3Vyc29y ID0gTlVMTCwgKnRtcCA9IE5VTEw7CiAKLQlhc3NlcnRfc3Bpbl9sb2NrZWQoJnJpbmctPmV4ZWNs aXN0X2xvY2spOwotCi0JaWYgKGxpc3RfZW1wdHkoJnJpbmctPmV4ZWNsaXN0X3F1ZXVlKSkKKwlp ZiAoIXJlcTApCiAJCXJldHVybjsKIAorCSpyZXEwID0gTlVMTDsKKworCWlmIChyZXExKQorCQkq cmVxMSA9IE5VTEw7CisKIAkvKiBUcnkgdG8gcmVhZCBpbiBwYWlycyAqLwogCWxpc3RfZm9yX2Vh Y2hfZW50cnlfc2FmZShjdXJzb3IsIHRtcCwgJnJpbmctPmV4ZWNsaXN0X3F1ZXVlLAogCQkJCSBl eGVjbGlzdF9saW5rKSB7Ci0JCWlmICghcmVxMCkgewotCQkJcmVxMCA9IGN1cnNvcjsKLQkJfSBl bHNlIGlmIChyZXEwLT5jdHggPT0gY3Vyc29yLT5jdHgpIHsKLQkJCS8qIFNhbWUgY3R4OiBpZ25v cmUgZmlyc3QgcmVxdWVzdCwgYXMgc2Vjb25kIHJlcXVlc3QKLQkJCSAqIHdpbGwgdXBkYXRlIHRh aWwgcGFzdCBmaXJzdCByZXF1ZXN0J3Mgd29ya2xvYWQgKi8KLQkJCWN1cnNvci0+ZWxzcF9zdWJt aXR0ZWQgPSByZXEwLT5lbHNwX3N1Ym1pdHRlZDsKLQkJCWxpc3RfZGVsKCZyZXEwLT5leGVjbGlz dF9saW5rKTsKLQkJCWxpc3RfYWRkX3RhaWwoJnJlcTAtPmV4ZWNsaXN0X2xpbmssCisJCWlmICgh KCpyZXEwKSkKKwkJCSpyZXEwID0gY3Vyc29yOworCQllbHNlIGlmICgoKnJlcTApLT5jdHggPT0g Y3Vyc29yLT5jdHgpIHsKKwkJCS8qCisJCQkgKiBTYW1lIGN0eDogaWdub3JlIGZpcnN0IHJlcXVl c3QsIGFzIHNlY29uZCByZXF1ZXN0CisJCQkgKiB3aWxsIHVwZGF0ZSB0YWlsIHBhc3QgZmlyc3Qg cmVxdWVzdCdzIHdvcmtsb2FkCisJCQkgKi8KKwkJCWN1cnNvci0+ZWxzcF9zdWJtaXR0ZWQgPSAo KnJlcTApLT5lbHNwX3N1Ym1pdHRlZDsKKwkJCWxpc3RfZGVsKCYoKnJlcTApLT5leGVjbGlzdF9s aW5rKTsKKwkJCWxpc3RfYWRkX3RhaWwoJigqcmVxMCktPmV4ZWNsaXN0X2xpbmssCiAJCQkJJnJp bmctPmV4ZWNsaXN0X3JldGlyZWRfcmVxX2xpc3QpOwotCQkJcmVxMCA9IGN1cnNvcjsKKwkJCSpy ZXEwID0gY3Vyc29yOwogCQl9IGVsc2UgewotCQkJcmVxMSA9IGN1cnNvcjsKKwkJCWlmIChyZXEx KQorCQkJCSpyZXExID0gY3Vyc29yOwogCQkJYnJlYWs7CiAJCX0KIAl9Cit9CisKK3N0YXRpYyB2 b2lkIGV4ZWNsaXN0c19jb250ZXh0X3VucXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTAgPSBOVUxMLCAqcmVxMSA9 IE5VTEw7CisKKwlhc3NlcnRfc3Bpbl9sb2NrZWQoJnJpbmctPmV4ZWNsaXN0X2xvY2spOworCWlm IChsaXN0X2VtcHR5KCZyaW5nLT5leGVjbGlzdF9xdWV1ZSkpCisJCXJldHVybjsKKworCWV4ZWNs aXN0c19mZXRjaF9yZXF1ZXN0cyhyaW5nLCAmcmVxMCwgJnJlcTEpOwogCiAJV0FSTl9PTihyZXEx ICYmIHJlcTEtPmVsc3Bfc3VibWl0dGVkKTsKIApAQCAtNTc3LDYgKzc1NCwxNTQgQEAgc3RhdGlj IGludCBleGVjbGlzdHNfY29udGV4dF9xdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n LAogCXJldHVybiAwOwogfQogCisvKgorICogZXhlY2xpc3RzX1REUl9jb250ZXh0X3VucXVldWUg aXMgYSBURFItc3BlY2lmaWMgdmFyaWFudCBvZiB0aGUKKyAqIG9yZGluYXJ5IHVucXVldWUgZnVu Y3Rpb24gdXNlZCBleGNsdXNpdmVseSBieSB0aGUgVERSLgorICoKKyAqIFdoZW4gZG9pbmcgVERS IGNvbnRleHQgcmVzdWJtaXNzaW9uIHdlIG9ubHkgd2FudCB0byByZXN1Ym1pdCB0aGUgaHVuZwor ICogY29udGV4dCBhbmQgbm90aGluZyBlbHNlLCB0aHVzIG9ubHkgZmV0Y2ggb25lIHJlcXVlc3Qg ZnJvbSB0aGUgcXVldWUuCisgKiBUaGUgZXhjZXB0aW9uIGJlaW5nIGlmIHRoZSBzZWNvbmQgZWxl bWVudCBpbiB0aGUgcXVldWUgYWxyZWFkeSBoYXMgYmVlbgorICogc3VibWl0dGVkLCBpbiB3aGlj aCBjYXNlIHdlIG5lZWQgdG8gc3VibWl0IHRoYXQgb25lIHRvby4gQWxzbywgZG9uJ3QKKyAqIGlu Y3JlbWVudCB0aGUgZWxzcF9zdWJtaXR0ZWQgY291bnRlciBmb2xsb3dpbmcgc3VibWlzc2lvbiBz aW5jZSBsaXRlIHJlc3RvcmUKKyAqIGNvbnRleHQgZXZlbnQgaW50ZXJydXB0cyBkbyBub3QgaGFw cGVuIGlmIHRoZSBlbmdpbmUgaXMgaHVuZywgd2hpY2gKKyAqIHdvdWxkIG5vcm1hbGx5IGhhcHBl biBpbiB0aGUgY2FzZSBvZiBhIGNvbnRleHQgcmVzdWJtaXNzaW9uLiBJZiB3ZSBpbmNyZW1lbnQK KyAqIHRoZSBlbHNwX2NvdW50ZXIgaW4gdGhpcyBzcGVjaWFsIGNhc2UgdGhlIGV4ZWNsaXN0IHN0 YXRlIG1hY2hpbmUgd291bGQKKyAqIGV4cGVjdCBhIGNvcnJlc3BvbmRpbmcgbGl0ZSByZXN0b3Jl IGludGVycnVwdCwgd2hpY2ggaXMgbmV2ZXIgcHJvZHVjZWQuCisgKi8KK3N0YXRpYyB2b2lkIGV4 ZWNsaXN0c19URFJfY29udGV4dF91bnF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcp Cit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEwID0gTlVMTCwgKnJlcTEgPSBO VUxMOworCisJYXNzZXJ0X3NwaW5fbG9ja2VkKCZyaW5nLT5leGVjbGlzdF9sb2NrKTsKKwlpZiAo bGlzdF9lbXB0eSgmcmluZy0+ZXhlY2xpc3RfcXVldWUpKQorCQlyZXR1cm47CisKKwlleGVjbGlz dHNfZmV0Y2hfcmVxdWVzdHMocmluZywgJnJlcTAsICZyZXExKTsKKworCS8qCisJICogSWYgdGhl IHNlY29uZCBoZWFkIGVsZW1lbnQgd2FzIG5vdCBhbHJlYWR5IHN1Ym1pdHRlZCB3ZSBkbyBub3Qg aGF2ZQorCSAqIHRvIHJlc3VibWl0IGl0LiBMZXQgdGhlIGludGVycnVwdCBoYW5kbGVyIHVucXVl dWUgaXQgYXQgYW4KKwkgKiBhcHByb3ByaWF0ZSB0aW1lLiBJZiBpdCB3YXMgYWxyZWFkeSBzdWJt aXR0ZWQgaXQgbmVlZHMgdG8gZ28gaW4KKwkgKiBhZ2FpbiB0byBhbGxvdyB0aGUgaGFyZHdhcmUg dG8gc3dpdGNoIG92ZXIgdG8gaXQgYXMgZXhwZWN0ZWQuCisJICogT3RoZXJ3aXNlIHRoZSBpbnRl cnJ1cHQgaGFuZGxlciB3aWxsIGRvIGFub3RoZXIgdW5xdWV1ZSBvZiB0aGUgc2FtZQorCSAqIGNv bnRleHQgYW5kIHdlIHdpbGwgZW5kIHVwIHdpdGggYSBkZXN5bmMgYmV0d2VlbiBudW1iZXIgb2YK KwkgKiBzdWJtaXNzaW9ucyBhbmQgaW50ZXJydXB0cyBhbmQgdGh1cyB3YWl0IGVuZGxlc3NseSBm b3IgYW4gaW50ZXJydXB0CisJICogdGhhdCB3aWxsIG5ldmVyIGNvbWUuCisJICovCisJaWYgKHJl cTEgJiYgIXJlcTEtPmVsc3Bfc3VibWl0dGVkKQorCQlyZXExID0gTlVMTDsKKworCWV4ZWNsaXN0 c19zdWJtaXRfY29udGV4dHMocmluZywgcmVxMC0+Y3R4LCByZXEwLT50YWlsLAorCQkJCQlyZXEx ID8gcmVxMS0+Y3R4IDogTlVMTCwKKwkJCQkJcmVxMSA/IHJlcTEtPnRhaWwgOiAwKTsKK30KKwor LyoqCisgKiBpbnRlbF9leGVjbGlzdHNfVERSX2NvbnRleHRfcXVldWUoKSAtIEVMU1AgY29udGV4 dCBzdWJtaXNzaW9uIGJ5cGFzc2luZworICogcXVldWUKKyAqCisgKiBDb250ZXh0IHN1Ym1pc3Np b24gbWVjaGFuaXNtIGV4Y2x1c2l2ZWx5IHVzZWQgYnkgVERSIHRoYXQgYnlwYXNzZXMgdGhlCisg KiBleGVjbGlzdCBxdWV1ZS4gVGhpcyBpcyBuZWNlc3Nhcnkgc2luY2UgYXQgdGhlIHBvaW50IG9m IFREUiBoYW5nIHJlY292ZXJ5CisgKiB0aGUgaGFyZHdhcmUgd2lsbCBiZSBodW5nIGFuZCByZXN1 Ym1pdHRpbmcgYSBmaXhlZCBjb250ZXh0ICh0aGUgY29udGV4dCB0aGF0CisgKiB0aGUgVERSIGhh cyBpZGVudGlmaWVkIGFzIGh1bmcgYW5kIGZpeGVkIHVwIGluIG9yZGVyIHRvIG1vdmUgcGFzdCB0 aGUKKyAqIGJsb2NraW5nIGJhdGNoIGJ1ZmZlcikgdG8gYSBodW5nIGV4ZWNsaXN0IHF1ZXVlIHdp bGwgbG9jayB1cCB0aGUgVERSLgorICogSW5zdGVhZCwgb3B0IGZvciBkaXJlY3QgRUxTUCBzdWJt aXNzaW9uIHdpdGhvdXQgZGVwZW5kaW5nIG9uIHRoZSByZXN0IG9mIHRoZQorICogZHJpdmVyLgor ICoKKyAqIEByaW5nOiBlbmdpbmUgdG8gc3VibWl0IGNvbnRleHQgdG8KKyAqIEByZXE6IHJlcXVl c3QgY29udGFpbmluZyBjb250ZXh0IHRvIGJlIHJlc3VibWl0dGVkCisgKiBAdGFpbDogcG9zaXRp b24gaW4gcmluZyB0byBzdWJtaXQgdG8KKyAqCisgKiBSZXR1cm46CisgKgkwIGlmIHN1Y2Nlc3Nm dWwsIG90aGVyd2lzZSBwcm9wYWdhdGUgZXJyb3IgY29kZS4KKyAqLworaW50IGludGVsX2V4ZWNs aXN0c19URFJfY29udGV4dF9xdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAorCQkJ c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCit7CisJdW5zaWduZWQgbG9uZyBmbGFn czsKKwlpbnQgcmV0ID0gMDsKKworCWlmIChXQVJOX09OKCFyZXEpKQorCSAgICByZXR1cm4gLUVJ TlZBTDsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZyaW5nLT5leGVjbGlzdF9sb2NrLCBmbGFncyk7 CisKKwlpZiAobGlzdF9lbXB0eSgmcmluZy0+ZXhlY2xpc3RfcXVldWUpKSB7CisKKwkJV0FSTigx LCAiRXhlY2xpc3QgcXVldWUgZm9yIHRoZSAlcyBpcyBlbXB0eSEgIiBcCisJCQkiVGhpcyBzaG91 bGQgbm90IGJlIHBvc3NpYmxlIVxuIiwgcmluZy0+bmFtZSk7CisKKwkJcmV0ID0gLUVJTlZBTDsK Kwl9IGVsc2UgeworCQkvKgorCQkgKiBTdWJtaXNzaW9uIHBhdGggdXNlZCBmb3IgaGFuZyByZWNv dmVyeSBieXBhc3NpbmcgZXhlY2xpc3QKKwkJICogcXVldWUuIFdoZW4gYSBjb250ZXh0IG5lZWRz IHRvIGJlIHJlc3VibWl0dGVkIGZvciBsaXRlCisJCSAqIHJlc3RvcmUgZHVyaW5nIGhhbmcgcmVj b3Zlcnkgd2UgY2Fubm90IHVzZSB0aGUgZXhlY2xpc3QKKwkJICogcXVldWUgc2luY2UgaXQgd2ls bCBiZSBodW5nIGp1c3QgbGlrZSBpdHMgY29ycmVzcG9uZGluZyByaW5nCisJCSAqIGVuZ2luZS4g SW5zdGVhZCBnbyBmb3IgZGlyZWN0IHN1Ym1pc3Npb24gdG8gRUxTUC4KKwkJICovCisJCXN0cnVj dCBpbnRlbF9jb250ZXh0ICp0bXBjdHggPSBOVUxMOworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnRtcHJlcSA9IE5VTEw7CisJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpyZXFjdHggPSBy ZXEtPmN0eDsKKworCQl1MzIgdG1wX2N0eGlkID0gMDsKKwkJdTMyIHJlcV9jdHhpZCA9IDA7CisK KwkJdG1wcmVxID0gbGlzdF9maXJzdF9lbnRyeSgmcmluZy0+ZXhlY2xpc3RfcXVldWUsCisJCQl0 eXBlb2YoKnRtcHJlcSksIGV4ZWNsaXN0X2xpbmspOworCisJCWlmICghdG1wcmVxKSB7CisJCQlX QVJOKDEsICJSZXF1ZXN0IGlzIG51bGwsICIgXAorCQkJCSJjb250ZXh0IHJlc3VibWlzc2lvbiB0 byAlcyBmYWlsZWQhXG4iLAorCQkJCQlyaW5nLT5uYW1lKTsKKworCQkJcmV0dXJuIC1FSU5WQUw7 CisJCX0KKworCQlpOTE1X2dlbV9yZXF1ZXN0X3JlZmVyZW5jZSh0bXByZXEpOworCQl0bXBjdHgg PSB0bXByZXEtPmN0eDsKKworCQlpZiAoIXRtcGN0eCkgeworCQkJV0FSTigxLCAiQ29udGV4dCBu dWxsIGZvciByZXF1ZXN0ICVwLCAiIFwKKwkJCQkiY29udGV4dCByZXN1Ym1pc3Npb24gdG8gJXMg ZmFpbGVkXG4iLAorCQkJCXRtcHJlcSwgcmluZy0+bmFtZSk7CisKKwkJCWk5MTVfZ2VtX3JlcXVl c3RfdW5yZWZlcmVuY2UodG1wcmVxKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJV0FS Tih0bXByZXEtPmVsc3Bfc3VibWl0dGVkID09IDAsCisJCQkiQWxsZWdlZGx5IGh1bmcgcmVxdWVz dCBoYXMgbmV2ZXIgYmVlbiBzdWJtaXR0ZWQgIiBcCisJCQkidG8gRUxTUFxuIik7CisKKwkJdG1w X2N0eGlkID0gaW50ZWxfZXhlY2xpc3RzX2N0eF9pZCh0bXBjdHgtPmVuZ2luZVtyaW5nLT5pZF0u c3RhdGUpOworCQlyZXFfY3R4aWQgPSBpbnRlbF9leGVjbGlzdHNfY3R4X2lkKHJlcWN0eC0+ZW5n aW5lW3JpbmctPmlkXS5zdGF0ZSk7CisKKwkJLyoKKwkJICogQXQgdGhlIGJlZ2lubmluZyBvZiBo YW5nIHJlY292ZXJ5IHRoZSBURFIgYXNrcyBmb3IgdGhlCisJCSAqIGN1cnJlbnRseSBzdWJtaXR0 ZWQgY29udGV4dCAod2hpY2ggaGFzIGJlZW4gZGV0ZXJtaW5lZCB0byBiZQorCQkgKiBodW5nIGF0 IHRoYXQgcG9pbnQpLiBUaGlzIHNob3VsZCBiZSB0aGUgY29udGV4dCBhdCB0aGUgaGVhZAorCQkg KiBvZiB0aGUgZXhlY2xpc3QgcXVldWUuIElmIHdlIHJlYWNoIGEgcG9pbnQgZHVyaW5nIHRoZQor CQkgKiByZWNvdmVyeSB3aGVyZSB3ZSBuZWVkIHRvIGRvIGEgbGl0ZSByZXN0b3JlIG9mIHRoZSBo dW5nCisJCSAqIGNvbnRleHQgb25seSB0byBkaXNjb3ZlciB0aGF0IHRoZSBoZWFkIGNvbnRleHQg b2YgdGhlCisJCSAqIGV4ZWNsaXN0IHF1ZXVlIGhhcyBjaGFuZ2VkLCB3aGF0IGRvIHdlIGRvPyBU aGUgbGVhc3Qgd2UgY2FuCisJCSAqIGRvIGlzIHByb2R1Y2UgYSB3YXJuaW5nLgorCQkgKi8KKwkJ V0FSTih0bXBfY3R4aWQgIT0gcmVxX2N0eGlkLAorCQkgICAgIkNvbnRleHQgKCV4KSBhdCBoZWFk IG9mIGV4ZWNsaXN0IHF1ZXVlIGZvciAlcyAiIFwKKwkJICAgICJpcyBub3QgdGhlIHN1c3BlY3Rl ZCBodW5nIGNvbnRleHQgKCV4KSEgV2FzIGV4ZWNsaXN0ICIgXAorCQkgICAgInF1ZXVlIHJlb3Jk ZXJlZCBkdXJpbmcgaGFuZyByZWNvdmVyeT9cbiIsCisJCSAgICAodW5zaWduZWQgaW50KSB0bXBf Y3R4aWQsIHJpbmctPm5hbWUsCisJCSAgICAodW5zaWduZWQgaW50KSByZXFfY3R4aWQpOworCisJ CWV4ZWNsaXN0c19URFJfY29udGV4dF91bnF1ZXVlKHJpbmcpOworCX0KKworCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJnJpbmctPmV4ZWNsaXN0X2xvY2ssIGZsYWdzKTsKKworCXJldHVybiByZXQ7 Cit9CisKIHN0YXRpYyBpbnQgbG9naWNhbF9yaW5nX2ludmFsaWRhdGVfYWxsX2NhY2hlcyhzdHJ1 Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwKIAkJCQkJICAgICAgc3RydWN0IGludGVsX2Nv bnRleHQgKmN0eCkKIHsKQEAgLTEwNjYsNyArMTM5MSw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9pbml0 X2NvbW1vbl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiAJcmluZy0+bmV4dF9j b250ZXh0X3N0YXR1c19idWZmZXIgPSAwOwogCURSTV9ERUJVR19EUklWRVIoIkV4ZWNsaXN0cyBl bmFibGVkIGZvciAlc1xuIiwgcmluZy0+bmFtZSk7CiAKLQltZW1zZXQoJnJpbmctPmhhbmdjaGVj aywgMCwgc2l6ZW9mKHJpbmctPmhhbmdjaGVjaykpOworCWk5MTVfaGFuZ2NoZWNrX3JlaW5pdChy aW5nKTsKIAogCXJldHVybiAwOwogfQpAQCAtMTMxNCw2ICsxNjM5LDE3MyBAQCBvdXQ6CiAJcmV0 dXJuIHJldDsKIH0KIAorc3RhdGljIGludAorZ2VuOF9yaW5nX2Rpc2FibGUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluZykKK3sKKwlpbnRlbF9yZXF1ZXN0X2dwdV9lbmdpbmVfcmVzZXQocmlu Zyk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2dlbjhfcmluZ19lbmFibGUoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqcmluZykKK3sKKwlpbnRlbF91bnJlcXVlc3RfZ3B1X2VuZ2luZV9y ZXNldChyaW5nKTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIGdlbjhfcmluZ19zYXZlKCkKKyAq CisgKiBTYXZlcyB0aGUgaGVhZCBNTUlPIHJlZ2lzdGVyIHRvIHNjcmF0Y2ggbWVtb3J5IHdoaWxl IGVuZ2luZSBpcyByZXNldCBhbmQKKyAqIHJlaW5pdGlhbGl6ZWQuIEJlZm9yZSBzYXZpbmcgdGhl IGhlYWQgcmVnaXN0ZXIgd2UgbnVkZ2UgdGhlIGhlYWQgcG9zaXRpb24gdG8KKyAqIGJlIGNvcnJl Y3RseSBhbGlnbmVkIHdpdGggYSBRV09SRCBib3VuZGFyeSwgd2hpY2ggYnJpbmdzIGl0IHVwIHRv IHRoZSBuZXh0CisgKiBwcmVzdW1hYmx5IHZhbGlkIGluc3RydWN0aW9uLiBUeXBpY2FsbHksIGF0 IHRoZSBwb2ludCBvZiBoYW5nIHJlY292ZXJ5IHRoZQorICogaGVhZCByZWdpc3RlciB3aWxsIGJl IHBvaW50aW5nIHRvIHRoZSBsYXN0IERXT1JEIG9mIHRoZSBCQl9TVEFSVAorICogaW5zdHJ1Y3Rp b24sIHdoaWNoIGlzIGZvbGxvd2VkIGJ5IGEgcGFkZGluZyBNSV9OT09QIGluc2VydGVkIGJ5IHRo ZQorICogZHJpdmVyLgorICoKKyAqIHJpbmc6IGVuZ2luZSB0byBiZSByZXNldAorICogcmVxOiBy ZXF1ZXN0IGNvbnRhaW5pbmcgdGhlIGNvbnRleHQgY3VycmVudGx5IHJ1bm5pbmcgb24gZW5naW5l CisgKiBmb3JjZV9hZHZhbmNlOiBpbmRpY2F0ZXMgd2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIG51 ZGdlIHRoZSBoZWFkCisgKgkJICBmb3J3YXJkIG9yIG5vdAorICovCitzdGF0aWMgaW50CitnZW44 X3Jpbmdfc2F2ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwKKwkJYm9vbCBmb3JjZV9hZHZhbmNlKQoreworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0 IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSBOVUxMOworCXN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjdHg7CisJaW50IHJldCA9IDA7CisJaW50IGNsYW1wX3RvX3RhaWwgPSAwOworCXVpbnQzMl90 IGhlYWQ7CisJdWludDMyX3QgdGFpbDsKKwl1aW50MzJfdCBoZWFkX2FkZHI7CisJdWludDMyX3Qg dGFpbF9hZGRyOworCisJaWYgKFdBUk5fT04oIXJlcSkpCisJICAgIHJldHVybiAtRUlOVkFMOwor CisJY3R4ID0gcmVxLT5jdHg7CisJcmluZ2J1ZiA9IGN0eC0+ZW5naW5lW3JpbmctPmlkXS5yaW5n YnVmOworCisJLyoKKwkgKiBSZWFkIGhlYWQgZnJvbSBNTUlPIHJlZ2lzdGVyIHNpbmNlIGl0IGNv bnRhaW5zIHRoZQorCSAqIG1vc3QgdXAgdG8gZGF0ZSB2YWx1ZSBvZiBoZWFkIGF0IHRoaXMgcG9p bnQuCisJICovCisJaGVhZCA9IEk5MTVfUkVBRF9IRUFEKHJpbmcpOworCisJLyoKKwkgKiBSZWFk IHRhaWwgZnJvbSB0aGUgY29udGV4dCBiZWNhdXNlIHRoZSBleGVjbGlzdCBxdWV1ZQorCSAqIHVw ZGF0ZXMgdGhlIHRhaWwgdmFsdWUgdGhlcmUgZmlyc3QgZHVyaW5nIHN1Ym1pc3Npb24uCisJICog VGhlIE1NSU8gdGFpbCByZWdpc3RlciBpcyBub3QgdXBkYXRlZCB1bnRpbCB0aGUgYWN0dWFsCisJ ICogcmluZyBzdWJtaXNzaW9uIGNvbXBsZXRlcy4KKwkgKi8KKwlyZXQgPSBJOTE1X1JFQURfVEFJ TF9DVFgocmluZywgY3R4LCB0YWlsKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJLyoK KwkgKiBoZWFkX2FkZHIgYW5kIHRhaWxfYWRkciBhcmUgdGhlIGhlYWQgYW5kIHRhaWwgdmFsdWVz CisJICogZXhjbHVkaW5nIHJpbmcgd3JhcHBpbmcgaW5mb3JtYXRpb24gYW5kIGFsaWduZWQgdG8g RFdPUkQKKwkgKiBib3VuZGFyeQorCSAqLworCWhlYWRfYWRkciA9IGhlYWQgJiBIRUFEX0FERFI7 CisJdGFpbF9hZGRyID0gdGFpbCAmIFRBSUxfQUREUjsKKworCS8qCisJICogVGhlIGhlYWQgbXVz dCBhbHdheXMgY2hhc2UgdGhlIHRhaWwuCisJICogSWYgdGhlIHRhaWwgaXMgYmV5b25kIHRoZSBo ZWFkIHRoZW4gZG8gbm90IGFsbG93CisJICogdGhlIGhlYWQgdG8gb3ZlcnRha2UgaXQuIElmIHRo ZSB0YWlsIGlzIGxlc3MgdGhhbgorCSAqIHRoZSBoZWFkIHRoZW4gdGhlIHRhaWwgaGFzIGFscmVh ZHkgd3JhcHBlZCBhbmQKKwkgKiB0aGVyZSBpcyBubyBwcm9ibGVtIGluIGFkdmFuY2luZyB0aGUg aGVhZCBvciBldmVuCisJICogd3JhcHBpbmcgdGhlIGhlYWQgYmFjayB0byAwIGFzIHdvcnN0IGNh c2UgaXQgd2lsbAorCSAqIGJlY29tZSBlcXVhbCB0byB0YWlsCisJICovCisJaWYgKGhlYWRfYWRk ciA8PSB0YWlsX2FkZHIpCisJCWNsYW1wX3RvX3RhaWwgPSAxOworCisJaWYgKGZvcmNlX2FkdmFu Y2UpIHsKKworCQkvKiBGb3JjZSBoZWFkIHBvaW50ZXIgdG8gbmV4dCBRV09SRCBib3VuZGFyeSAq LworCQloZWFkX2FkZHIgJj0gfjB4NzsKKwkJaGVhZF9hZGRyICs9IDg7CisKKwl9IGVsc2UgaWYg KGhlYWQgJiAweDcpIHsKKworCQkvKiBFbnN1cmUgaGVhZCBwb2ludGVyIGlzIHBvaW50aW5nIHRv IGEgUVdPUkQgYm91bmRhcnkgKi8KKwkJaGVhZCArPSAweDc7CisJCWhlYWQgJj0gfjB4NzsKKwkJ aGVhZF9hZGRyID0gaGVhZDsKKwl9CisKKwlpZiAoY2xhbXBfdG9fdGFpbCAmJiAoaGVhZF9hZGRy ID4gdGFpbF9hZGRyKSkgeworCQloZWFkX2FkZHIgPSB0YWlsX2FkZHI7CisJfSBlbHNlIGlmICho ZWFkX2FkZHIgPj0gcmluZ2J1Zi0+c2l6ZSkgeworCQkvKiBXcmFwIGhlYWQgYmFjayB0byBzdGFy dCBpZiBpdCBleGNlZWRzIHJpbmcgc2l6ZSAqLworCQloZWFkX2FkZHIgPSAwOworCX0KKworCWhl YWQgJj0gfkhFQURfQUREUjsKKwloZWFkIHw9IChoZWFkX2FkZHIgJiBIRUFEX0FERFIpOworCXJp bmctPnNhdmVkX2hlYWQgPSBoZWFkOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2dl bjhfcmluZ19yZXN0b3JlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmN0 eDsKKworCWlmIChXQVJOX09OKCFyZXEpKQorCSAgICByZXR1cm4gLUVJTlZBTDsKKworCWN0eCA9 IHJlcS0+Y3R4OworCisJLyogUmUtaW5pdGlhbGl6ZSByaW5nICovCisJaWYgKHJpbmctPmluaXRf aHcpIHsKKwkJaW50IHJldCA9IHJpbmctPmluaXRfaHcocmluZyk7CisJCWlmIChyZXQgIT0gMCkg eworCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcmUtaW5pdGlhbGl6ZSAlc1xuIiwKKwkJCQkJcmlu Zy0+bmFtZSk7CisJCQlyZXR1cm4gcmV0OworCQl9CisJfSBlbHNlIHsKKwkJRFJNX0VSUk9SKCJy aW5nIGluaXQgZnVuY3Rpb24gcG9pbnRlciBub3Qgc2V0IHVwXG4iKTsKKwkJcmV0dXJuIC1FSU5W QUw7CisJfQorCisJaWYgKHJpbmctPmlkID09IFJDUykgeworCQkvKgorCQkgKiBUaGVzZSByZWdp c3RlciByZWluaXRpYWxpemF0aW9ucyBhcmUgb25seSBsb2NhdGVkIGhlcmUKKwkJICogdGVtcG9y YXJpbHkgdW50aWwgdGhleSBhcmUgbW92ZWQgb3V0IG9mIHRoZQorCQkgKiBpbml0X2Nsb2NrX2dh dGluZyBmdW5jdGlvbiB0byBzb21lIGZ1bmN0aW9uIHdlIGNhbgorCQkgKiBjYWxsIGZyb20gaGVy ZS4KKwkJICovCisKKwkJLyogV2FWU1JlZkNvdW50RnVsbGZvcmNlTWlzc0Rpc2FibGU6Y2h2ICov CisJCS8qIFdhRFNSZWZDb3VudEZ1bGxmb3JjZU1pc3NEaXNhYmxlOmNodiAqLworCQlJOTE1X1dS SVRFKEdFTjdfRkZfVEhSRUFEX01PREUsCisJCQkgICBJOTE1X1JFQUQoR0VON19GRl9USFJFQURf TU9ERSkgJgorCQkJICAgfihHRU44X0ZGX0RTX1JFRl9DTlRfRkZNRSB8IEdFTjdfRkZfVlNfUkVG X0NOVF9GRk1FKSk7CisKKwkJSTkxNV9XUklURShfM0RfQ0hJQ0tFTjMsCisJCQkgICBfM0RfQ0hJ Q0tFTl9TREVfTElNSVRfRklGT19QT0xZX0RFUFRIKDIpKTsKKworCQkvKiBXYVN3aXRjaFNvbFZm RkFyYml0cmF0aW9uUHJpb3JpdHk6YmR3ICovCisJCUk5MTVfV1JJVEUoR0FNX0VDT0NISywgSTkx NV9SRUFEKEdBTV9FQ09DSEspIHwgSFNXX0VDT0NIS19BUkJfUFJJT19TT0wpOworCX0KKworCS8q IFJlc3RvcmUgaGVhZCAqLworCisJSTkxNV9XUklURV9IRUFEKHJpbmcsIHJpbmctPnNhdmVkX2hl YWQpOworCUk5MTVfV1JJVEVfSEVBRF9DVFgocmluZywgY3R4LCByaW5nLT5zYXZlZF9oZWFkKTsK KworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IGdlbjhfaW5pdF9yY3NfY29udGV4dChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogCQkgICAgICAgc3RydWN0IGludGVsX2NvbnRleHQg KmN0eCkKIHsKQEAgLTE0MTIsNiArMTkwNCwxMCBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfcmVuZGVy X3JpbmdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCXJpbmctPmlycV9nZXQgPSBnZW44 X2xvZ2ljYWxfcmluZ19nZXRfaXJxOwogCXJpbmctPmlycV9wdXQgPSBnZW44X2xvZ2ljYWxfcmlu Z19wdXRfaXJxOwogCXJpbmctPmVtaXRfYmJfc3RhcnQgPSBnZW44X2VtaXRfYmJfc3RhcnQ7CisJ cmluZy0+ZW5hYmxlID0gZ2VuOF9yaW5nX2VuYWJsZTsKKwlyaW5nLT5kaXNhYmxlID0gZ2VuOF9y aW5nX2Rpc2FibGU7CisJcmluZy0+c2F2ZSA9IGdlbjhfcmluZ19zYXZlOworCXJpbmctPnJlc3Rv cmUgPSBnZW44X3JpbmdfcmVzdG9yZTsKIAogCXJpbmctPmRldiA9IGRldjsKIAlyZXQgPSBsb2dp Y2FsX3JpbmdfaW5pdChkZXYsIHJpbmcpOwpAQCAtMTQ0Miw2ICsxOTM4LDEwIEBAIHN0YXRpYyBp bnQgbG9naWNhbF9ic2RfcmluZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJcmluZy0+ aXJxX2dldCA9IGdlbjhfbG9naWNhbF9yaW5nX2dldF9pcnE7CiAJcmluZy0+aXJxX3B1dCA9IGdl bjhfbG9naWNhbF9yaW5nX3B1dF9pcnE7CiAJcmluZy0+ZW1pdF9iYl9zdGFydCA9IGdlbjhfZW1p dF9iYl9zdGFydDsKKwlyaW5nLT5lbmFibGUgPSBnZW44X3JpbmdfZW5hYmxlOworCXJpbmctPmRp c2FibGUgPSBnZW44X3JpbmdfZGlzYWJsZTsKKwlyaW5nLT5zYXZlID0gZ2VuOF9yaW5nX3NhdmU7 CisJcmluZy0+cmVzdG9yZSA9IGdlbjhfcmluZ19yZXN0b3JlOwogCiAJcmV0dXJuIGxvZ2ljYWxf cmluZ19pbml0KGRldiwgcmluZyk7CiB9CkBAIC0xNDY3LDYgKzE5NjcsMTAgQEAgc3RhdGljIGlu dCBsb2dpY2FsX2JzZDJfcmluZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJcmluZy0+ aXJxX2dldCA9IGdlbjhfbG9naWNhbF9yaW5nX2dldF9pcnE7CiAJcmluZy0+aXJxX3B1dCA9IGdl bjhfbG9naWNhbF9yaW5nX3B1dF9pcnE7CiAJcmluZy0+ZW1pdF9iYl9zdGFydCA9IGdlbjhfZW1p dF9iYl9zdGFydDsKKwlyaW5nLT5lbmFibGUgPSBnZW44X3JpbmdfZW5hYmxlOworCXJpbmctPmRp c2FibGUgPSBnZW44X3JpbmdfZGlzYWJsZTsKKwlyaW5nLT5zYXZlID0gZ2VuOF9yaW5nX3NhdmU7 CisJcmluZy0+cmVzdG9yZSA9IGdlbjhfcmluZ19yZXN0b3JlOwogCiAJcmV0dXJuIGxvZ2ljYWxf cmluZ19pbml0KGRldiwgcmluZyk7CiB9CkBAIC0xNDkyLDYgKzE5OTYsMTAgQEAgc3RhdGljIGlu dCBsb2dpY2FsX2JsdF9yaW5nX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlyaW5nLT5p cnFfZ2V0ID0gZ2VuOF9sb2dpY2FsX3JpbmdfZ2V0X2lycTsKIAlyaW5nLT5pcnFfcHV0ID0gZ2Vu OF9sb2dpY2FsX3JpbmdfcHV0X2lycTsKIAlyaW5nLT5lbWl0X2JiX3N0YXJ0ID0gZ2VuOF9lbWl0 X2JiX3N0YXJ0OworCXJpbmctPmVuYWJsZSA9IGdlbjhfcmluZ19lbmFibGU7CisJcmluZy0+ZGlz YWJsZSA9IGdlbjhfcmluZ19kaXNhYmxlOworCXJpbmctPnNhdmUgPSBnZW44X3Jpbmdfc2F2ZTsK KwlyaW5nLT5yZXN0b3JlID0gZ2VuOF9yaW5nX3Jlc3RvcmU7CiAKIAlyZXR1cm4gbG9naWNhbF9y aW5nX2luaXQoZGV2LCByaW5nKTsKIH0KQEAgLTE1MTcsNiArMjAyNSwxMCBAQCBzdGF0aWMgaW50 IGxvZ2ljYWxfdmVib3hfcmluZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJcmluZy0+ aXJxX2dldCA9IGdlbjhfbG9naWNhbF9yaW5nX2dldF9pcnE7CiAJcmluZy0+aXJxX3B1dCA9IGdl bjhfbG9naWNhbF9yaW5nX3B1dF9pcnE7CiAJcmluZy0+ZW1pdF9iYl9zdGFydCA9IGdlbjhfZW1p dF9iYl9zdGFydDsKKwlyaW5nLT5lbmFibGUgPSBnZW44X3JpbmdfZW5hYmxlOworCXJpbmctPmRp c2FibGUgPSBnZW44X3JpbmdfZGlzYWJsZTsKKwlyaW5nLT5zYXZlID0gZ2VuOF9yaW5nX3NhdmU7 CisJcmluZy0+cmVzdG9yZSA9IGdlbjhfcmluZ19yZXN0b3JlOwogCiAJcmV0dXJuIGxvZ2ljYWxf cmluZ19pbml0KGRldiwgcmluZyk7CiB9CkBAIC0xOTc0LDMgKzI0ODYsMTIwIEBAIHZvaWQgaW50 ZWxfbHJfY29udGV4dF9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlyaW5nYnVmLT50 YWlsID0gMDsKIAl9CiB9CisKKy8qKgorICogaW50ZWxfZXhlY2xpc3RzX1REUl9nZXRfY3VycmVu dF9yZXF1ZXN0KCkgLSByZXR1cm4gcmVxdWVzdCBjdXJyZW50bHkKKyAqIHByb2Nlc3NlZCBieSBl bmdpbmUKKyAqCisgKiBAcmluZzogRW5naW5lIGN1cnJlbnRseSBydW5uaW5nIGNvbnRleHQgdG8g YmUgcmV0dXJuZWQuCisgKgorICogQHJlcTogIE91dHB1dCBwYXJhbWV0ZXIgY29udGFpbmluZyB0 aGUgY3VycmVudCByZXF1ZXN0ICh0aGUgcmVxdWVzdCBhdCB0aGUKKyAqCSAgaGVhZCBvZiBleGVj bGlzdCBxdWV1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiByaW5nKS4gTWF5IGJlIE5VTEwK KyAqCSAgaWYgbm8gcmVxdWVzdCBoYXMgYmVlbiBzdWJtaXR0ZWQgdG8gdGhlIGV4ZWNsaXN0IHF1 ZXVlIG9mIHRoaXMKKyAqCSAgZW5naW5lLiBJZiB0aGUgcmVxIHBhcmFtZXRlciBwYXNzZWQgaW4g dG8gdGhlIGZ1bmN0aW9uIGlzIG5vdCBOVUxMCisgKgkgIGFuZCBhIHJlcXVlc3QgaXMgZm91bmQg YW5kIHJldHVybmVkIHRoZSByZXF1ZXN0IGlzIHJlZmVyZW5jZWQgYmVmb3JlCisgKgkgIGl0IGlz IHJldHVybmVkLiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlciB0byBkZXJl ZmVyZW5jZQorICoJICBpdCBhdCB0aGUgZW5kIG9mIGl0cyBsaWZlIGN5Y2xlLgorICoKKyAqIFJl dHVybjoKKyAqCUNPTlRFWFRfU1VCTUlTU0lPTl9TVEFUVVNfT0sgaWYgcmVxdWVzdCBpcyBmb3Vu ZCB0byBiZSBzdWJtaXR0ZWQgYW5kIGl0cworICoJY29udGV4dCBpcyBjdXJyZW50bHkgcnVubmlu ZyBvbiBlbmdpbmUuCisgKgorICoJQ09OVEVYVF9TVUJNSVNTSU9OX1NUQVRVU19JTkNPTlNJU1RF TlQgaWYgcmVxdWVzdCBpcyBmb3VuZCB0byBiZSBzdWJtaXR0ZWQKKyAqCWJ1dCBpdHMgY29udGV4 dCBpcyBub3QgaW4gYSBzdGF0ZSB0aGF0IGlzIGNvbnNpc3RlbnQgd2l0aCBjdXJyZW50CisgKglo YXJkd2FyZSBzdGF0ZSBmb3IgdGhlIGdpdmVuIGVuZ2luZS4gVGhpcyBoYXMgYmVlbiBvYnNlcnZl ZCBpbiB0aHJlZSBjYXNlczoKKyAqCisgKgkJMS4gQmVmb3JlIHRoZSBlbmdpbmUgaGFzIHN3aXRj aGVkIHRvIHRoaXMgY29udGV4dCBhZnRlciBpdCBoYXMKKyAqCQliZWVuIHN1Ym1pdHRlZCB0byB0 aGUgZXhlY2xpc3QgcXVldWUuCisgKgorICoJCTIuIEFmdGVyIHRoZSBlbmdpbmUgaGFzIHN3aXRj aGVkIGF3YXkgZnJvbSB0aGlzIGNvbnRleHQgYnV0CisgKgkJYmVmb3JlIHRoZSBjb250ZXh0IGhh cyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgZXhlY2xpc3QgcXVldWUuCisgKgorICoJCTMuIFRoZSBk cml2ZXIgaGFzIGxvc3QgYW4gaW50ZXJydXB0LiBUeXBpY2FsbHkgdGhlIGhhcmR3YXJlIGhhcwor ICoJCWdvbmUgdG8gaWRsZSBidXQgdGhlIGRyaXZlciBzdGlsbCB0aGlua3MgdGhlIGNvbnRleHQg YmVsb25naW5nIHRvCisgKgkJdGhlIHJlcXVlc3QgYXQgdGhlIGhlYWQgb2YgdGhlIHF1ZXVlIGlz IHN0aWxsIGV4ZWN1dGluZy4KKyAqCisgKglDT05URVhUX1NVQk1JU1NJT05fU1RBVFVTX05PTkVf U1VCTUlUVEVEIGlmIG5vIGNvbnRleHQgaGFzIGJlZW4gZm91bmQKKyAqCXRvIGJlIHN1Ym1pdHRl ZCB0byB0aGUgZXhlY2xpc3QgcXVldWUgYW5kIGlmIHRoZSBoYXJkd2FyZSBpcyBpZGxlLgorICov CitlbnVtIGNvbnRleHRfc3VibWlzc2lvbl9zdGF0dXMKK2ludGVsX2V4ZWNsaXN0c19URFJfZ2V0 X2N1cnJlbnRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAorCQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKipyZXEpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2OworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICp0bXByZXEgPSBOVUxMOworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICp0bXBjdHggPSBO VUxMOworCXVuc2lnbmVkIGh3X2NvbnRleHQgPSAwOworCWJvb2wgaHdfYWN0aXZlID0gZmFsc2U7 CisJZW51bSBjb250ZXh0X3N1Ym1pc3Npb25fc3RhdHVzIHN0YXR1cyA9CisJCQlDT05URVhUX1NV Qk1JU1NJT05fU1RBVFVTX1VOREVGSU5FRDsKKworCWlmIChXQVJOX09OKCFyaW5nKSkKKwkJcmV0 dXJuIHN0YXR1czsKKworCWRldl9wcml2ID0gcmluZy0+ZGV2LT5kZXZfcHJpdmF0ZTsKKworCWlu dGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKKwlzcGlu X2xvY2tfaXJxc2F2ZSgmcmluZy0+ZXhlY2xpc3RfbG9jaywgZmxhZ3MpOworCWh3X2NvbnRleHQg PSBJOTE1X1JFQUQoUklOR19FWEVDTElTVF9TVEFUVVNfQ1RYX0lEKHJpbmcpKTsKKworCWh3X2Fj dGl2ZSA9IChJOTE1X1JFQUQoUklOR19FWEVDTElTVF9TVEFUVVMocmluZykpICYKKwkJRVhFQ0xJ U1RfU1RBVFVTX0NVUlJFTlRfQUNUSVZFX0VMRU1FTlRfU1RBVFVTKSA/IHRydWUgOiBmYWxzZTsK KworCXRtcHJlcSA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmcmluZy0+ZXhlY2xpc3RfcXVl dWUsCisJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCwgZXhlY2xpc3RfbGluayk7CisKKwlp ZiAodG1wcmVxKSB7CisJCS8qCisJCSAqIElmIHRoZSBjYWxsZXIgaGFzIG5vdCBwYXNzZWQgYSBu b24tTlVMTCByZXEgcGFyYW1ldGVyIHRoZW4KKwkJICogaXQgaXMgbm90IGludGVyZXN0ZWQgaW4g Z2V0dGluZyBhIHJlcXVlc3QgcmVmZXJlbmNlIGJhY2suCisJCSAqIERvbid0IHRlbXBvcmFyaWx5 IGdyYWIgYSByZWZlcmVuY2Ugc2luY2UgaG9sZGluZyB0aGUgZXhlY2xpc3QKKwkJICogbG9jayBp cyBlbm91Z2ggdG8gZW5zdXJlIHRoYXQgdGhlIGV4ZWNsaXN0IGNvZGUgd2lsbCBob2xkIGl0cwor CQkgKiByZWZlcmVuY2UgYWxsIHRocm91Z2hvdXQgdGhpcyBmdW5jdGlvbi4gQXMgbG9uZyBhcyB0 aGF0IHJlZmVyZW5jZQorCQkgKiBpcyBrZXB0IHRoZXJlIGlzIG5vIG5lZWQgZm9yIHVzIHRvIHRh a2UgeWV0IGFub3RoZXIgcmVmZXJlbmNlLgorCQkgKiBUaGUgcmVhc29uIHdoeSB0aGlzIGlzIG9m IGludGVyZXN0IGlzIGJlY2F1c2UgY2VydGFpbiBjYWxsZXJzLCBzdWNoCisJCSAqIGFzIHRoZSBU RFIgaGFuZyBjaGVja2VyLCBjYW5ub3QgZ3JhYiBzdHJ1Y3RfbXV0ZXggYmVmb3JlIGNhbGxpbmcK KwkJICogYW5kIGJlY2F1c2Ugb2YgdGhhdCB3ZSBjYW5ub3QgZGVyZWZlcmVuY2UgYW55IHJlcXVl c3RzIChEUk0gbWlnaHQKKwkJICogYXNzZXJ0IGlmIHdlIGRvKS4gSnVzdCByZWx5IG9uIHRoZSBl eGVjbGlzdCBjb2RlIHRvIHByb3ZpZGUKKwkJICogaW5kaXJlY3QgcHJvdGVjdGlvbi4KKwkJICov CisJCWlmIChyZXEpCisJCQlpOTE1X2dlbV9yZXF1ZXN0X3JlZmVyZW5jZSh0bXByZXEpOworCisK KwkJaWYgKHRtcHJlcS0+Y3R4KQorCQkJdG1wY3R4ID0gdG1wcmVxLT5jdHg7CisKKwkJV0FSTigh dG1wY3R4LCAiTm8gY29udGV4dCBpbiByZXF1ZXN0ICVwXG4iLCB0bXByZXEpOworCX0KKworCWlm ICh0bXBjdHgpIHsKKwkJdW5zaWduZWQgc3dfY29udGV4dCA9CisJCQlpbnRlbF9leGVjbGlzdHNf Y3R4X2lkKCh0bXBjdHgpLT5lbmdpbmVbcmluZy0+aWRdLnN0YXRlKTsKKworCQlzdGF0dXMgPSAo KGh3X2NvbnRleHQgPT0gc3dfY29udGV4dCkgJiYgaHdfYWN0aXZlKSA/CisJCQkJQ09OVEVYVF9T VUJNSVNTSU9OX1NUQVRVU19PSyA6CisJCQkJQ09OVEVYVF9TVUJNSVNTSU9OX1NUQVRVU19JTkNP TlNJU1RFTlQ7CisJfSBlbHNlIHsKKwkJLyoKKwkJICogSWYgd2UgZG9uJ3QgaGF2ZSBhbnkgcXVl dWUgZW50cmllcyBhbmQgdGhlCisJCSAqIEVYRUNMSVNUX1NUQVRVUyByZWdpc3RlciBwb2ludHMg dG8gemVybyB3ZSBhcmUKKwkJICogY2xlYXJseSBub3QgcHJvY2Vzc2luZyBhbnkgY29udGV4dCBy aWdodCBub3cKKwkJICovCisJCVdBUk4oKGh3X2NvbnRleHQgfHwgaHdfYWN0aXZlKSwgImh3X2Nv bnRleHQ9JXgsIGhhcmR3YXJlICVzIVxuIiwKKwkJCWh3X2NvbnRleHQsIGh3X2FjdGl2ZSA/ICJu b3QgaWRsZSI6ImlkbGUiKTsKKworCQlzdGF0dXMgPSAoaHdfY29udGV4dCB8fCBod19hY3RpdmUp ID8KKwkJCUNPTlRFWFRfU1VCTUlTU0lPTl9TVEFUVVNfSU5DT05TSVNURU5UIDoKKwkJCUNPTlRF WFRfU1VCTUlTU0lPTl9TVEFUVVNfTk9ORV9TVUJNSVRURUQ7CisJfQorCisJaWYgKHJlcSkKKwkJ KnJlcSA9IHRtcHJlcTsKKworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJpbmctPmV4ZWNsaXN0 X2xvY2ssIGZsYWdzKTsKKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9S Q0VXQUtFX0FMTCk7CisKKwlyZXR1cm4gc3RhdHVzOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMu aAppbmRleCAwNGQzYTZkLi5kMmY0OTdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaApAQCAt MjksNiArMjksOCBAQAogLyogRXhlY2xpc3RzIHJlZ3MgKi8KICNkZWZpbmUgUklOR19FTFNQKHJp bmcpCQkJKChyaW5nKS0+bW1pb19iYXNlKzB4MjMwKQogI2RlZmluZSBSSU5HX0VYRUNMSVNUX1NU QVRVUyhyaW5nKQkoKHJpbmcpLT5tbWlvX2Jhc2UrMHgyMzQpCisjZGVmaW5lCSAgRVhFQ0xJU1Rf U1RBVFVTX0NVUlJFTlRfQUNUSVZFX0VMRU1FTlRfU1RBVFVTCSgweDMgPDwgMTQpCisjZGVmaW5l IFJJTkdfRVhFQ0xJU1RfU1RBVFVTX0NUWF9JRChyaW5nKQkoUklOR19FWEVDTElTVF9TVEFUVVMo cmluZykrNCkKICNkZWZpbmUgUklOR19DT05URVhUX0NPTlRST0wocmluZykJKChyaW5nKS0+bW1p b19iYXNlKzB4MjQ0KQogI2RlZmluZQkgIENUWF9DVFJMX0lOSElCSVRfU1lOX0NUWF9TV0lUQ0gJ KDEgPDwgMykKICNkZWZpbmUJICBDVFhfQ1RSTF9FTkdJTkVfQ1RYX1JFU1RPUkVfSU5ISUJJVAko MSA8PCAwKQpAQCAtODksNCArOTEsMTYgQEAgdTMyIGludGVsX2V4ZWNsaXN0c19jdHhfaWQoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vYmopOwogdm9pZCBpbnRlbF9scmNfaXJxX2hh bmRsZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyk7CiB2b2lkIGludGVsX2V4ZWNsaXN0 c19yZXRpcmVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyk7CiAKK2ludCBp bnRlbF9leGVjbGlzdHNfcmVhZF90YWlsKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCisJ CQkgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKKwkJCSB1MzIgKnRhaWwpOworCitpbnQgaW50 ZWxfZXhlY2xpc3RzX3dyaXRlX2hlYWQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKKwkJ CSAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKKwkJCSAgdTMyIGhlYWQpOworCitpbnQgaW50 ZWxfZXhlY2xpc3RzX3JlYWRfaGVhZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAorCQkJ IHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCisJCQkgdTMyICpoZWFkKTsKKwogI2VuZGlmIC8q IF9JTlRFTF9MUkNfSF8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyY190ZHIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyY190ZHIuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODRiMDA5Ci0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjX3Rkci5oCkBAIC0wLDAgKzEsMzcgQEAKKy8q CisgKiBDb3B5cmlnaHQgwqkgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Np b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp bmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUg d2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhl IHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUs IHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0 byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1 ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICog VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z IEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxM CisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD TEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBP RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIK KyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIF9JTlRFTF9MUkNf VERSX0hfCisjZGVmaW5lIF9JTlRFTF9MUkNfVERSX0hfCisKKy8qIFByaXZpbGVnZWQgZXhlY2xp c3QgQVBJIHVzZWQgZXhjbHVzaXZlbHkgYnkgVERSICovCisKK2ludCBpbnRlbF9leGVjbGlzdHNf VERSX2NvbnRleHRfcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKKwkJc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOworCitlbnVtIGNvbnRleHRfc3VibWlzc2lvbl9z dGF0dXMKK2ludGVsX2V4ZWNsaXN0c19URFJfZ2V0X2N1cnJlbnRfcmVxdWVzdChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nLAorCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKipyZXEp OworCisjZW5kaWYgLyogX0lOVEVMX0xSQ19URFJfSF8gKi8KKwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5jCmluZGV4IGY5NDk1ODMuLjBmZGY5ODMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKQEAgLTQ0Miw2ICs0NDIsODggQEAgc3RhdGljIHZv aWQgcmluZ193cml0ZV90YWlsKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCiAJSTkxNV9X UklURV9UQUlMKHJpbmcsIHZhbHVlKTsKIH0KIAoraW50IGludGVsX3JpbmdfZGlzYWJsZShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQoreworCVdBUk5fT04oIXJpbmcpOworCisJaWYgKHJp bmcgJiYgcmluZy0+ZGlzYWJsZSkKKwkJcmV0dXJuIHJpbmctPmRpc2FibGUocmluZyk7CisJZWxz ZSB7CisJCURSTV9FUlJPUigiUmluZyBkaXNhYmxlIG5vdCBzdXBwb3J0ZWQgb24gJXNcbiIsIHJp bmctPm5hbWUpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9Cit9CisKK2ludCBpbnRlbF9yaW5nX2Vu YWJsZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQoreworCVdBUk5fT04oIXJpbmcpOwor CisJaWYgKHJpbmcgJiYgcmluZy0+ZW5hYmxlKQorCQlyZXR1cm4gcmluZy0+ZW5hYmxlKHJpbmcp OworCWVsc2UgeworCQlEUk1fRVJST1IoIlJpbmcgZW5hYmxlIG5vdCBzdXBwb3J0ZWQgb24gJXNc biIsIHJpbmctPm5hbWUpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9Cit9CisKK2ludCBpbnRlbF9y aW5nX3NhdmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKKwkJc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsCisJCWJvb2wgZm9yY2VfYWR2YW5jZSkKK3sKKwlXQVJOX09OKCFy aW5nKTsKKworCWlmIChyaW5nICYmIHJpbmctPnNhdmUpCisJCXJldHVybiByaW5nLT5zYXZlKHJp bmcsIHJlcSwgZm9yY2VfYWR2YW5jZSk7CisJZWxzZSB7CisJCURSTV9FUlJPUigiUmluZyBzYXZl IG5vdCBzdXBwb3J0ZWQgb24gJXNcbiIsIHJpbmctPm5hbWUpOworCQlyZXR1cm4gLUVJTlZBTDsK Kwl9Cit9CisKK2ludCBpbnRlbF9yaW5nX3Jlc3RvcmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq cmluZywKKwkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCit7CisJV0FSTl9PTigh cmluZyk7CisKKwlpZiAocmluZyAmJiByaW5nLT5yZXN0b3JlKQorCQlyZXR1cm4gcmluZy0+cmVz dG9yZShyaW5nLCByZXEpOworCWVsc2UgeworCQlEUk1fRVJST1IoIlJpbmcgcmVzdG9yZSBub3Qg c3VwcG9ydGVkIG9uICVzXG4iLCByaW5nLT5uYW1lKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQor fQorCit2b2lkIGludGVsX2dwdV9lbmdpbmVfcmVzZXRfcmVzYW1wbGUoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZywKKwkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCit7CisJ c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2OworCisJaWYgKFdBUk5fT04oIXJpbmcpKQorCQlyZXR1cm47CisKKwlkZXZf cHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7CisKKwlpZiAoaTkxNS5lbmFibGVfZXhlY2xp c3RzKSB7CisJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHg7CisKKwkJaWYgKFdBUk5fT04oIXJl cSkpCisJCQlyZXR1cm47CisKKwkJY3R4ID0gcmVxLT5jdHg7CisJCXJpbmdidWYgPSBjdHgtPmVu Z2luZVtyaW5nLT5pZF0ucmluZ2J1ZjsKKworCQkvKgorCQkgKiBJbiBnZW44KyBjb250ZXh0IGhl YWQgaXMgcmVzdG9yZWQgZHVyaW5nIHJlc2V0IGFuZAorCQkgKiB3ZSBjYW4gdXNlIGl0IGFzIGEg cmVmZXJlbmNlIHRvIHNldCB1cCB0aGUgbmV3CisJCSAqIGRyaXZlciBzdGF0ZS4KKwkJICovCisJ CUk5MTVfUkVBRF9IRUFEX0NUWChyaW5nLCBjdHgsIHJpbmdidWYtPmhlYWQpOworCQlyaW5nYnVm LT5sYXN0X3JldGlyZWRfaGVhZCA9IC0xOworCQlpbnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShyaW5n YnVmKTsKKwl9Cit9CisKIHU2NCBpbnRlbF9yaW5nX2dldF9hY3RpdmVfaGVhZChzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7CkBAIC02MzcsNyArNzE5LDcgQEAgc3RhdGljIGlu dCBpbml0X3JpbmdfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCiAJcmluZ2J1 Zi0+dGFpbCA9IEk5MTVfUkVBRF9UQUlMKHJpbmcpICYgVEFJTF9BRERSOwogCWludGVsX3Jpbmdf dXBkYXRlX3NwYWNlKHJpbmdidWYpOwogCi0JbWVtc2V0KCZyaW5nLT5oYW5nY2hlY2ssIDAsIHNp emVvZihyaW5nLT5oYW5nY2hlY2spKTsKKwlpOTE1X2hhbmdjaGVja19yZWluaXQocmluZyk7CiAK IG91dDoKIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FM TCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggMzlmNmRmYy4u MzUzNjBhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaApAQCAtNDgs NiArNDgsMjIgQEAgc3RydWN0ICBpbnRlbF9od19zdGF0dXNfcGFnZSB7CiAjZGVmaW5lIEk5MTVf UkVBRF9NT0RFKHJpbmcpIEk5MTVfUkVBRChSSU5HX01JX01PREUoKHJpbmcpLT5tbWlvX2Jhc2Up KQogI2RlZmluZSBJOTE1X1dSSVRFX01PREUocmluZywgdmFsKSBJOTE1X1dSSVRFKFJJTkdfTUlf TU9ERSgocmluZyktPm1taW9fYmFzZSksIHZhbCkKIAorCisjZGVmaW5lIEk5MTVfUkVBRF9UQUlM X0NUWChlbmdpbmUsIGN0eCwgb3V0dmFsKSBcCisJaW50ZWxfZXhlY2xpc3RzX3JlYWRfdGFpbCgo ZW5naW5lKSwgXAorCQkJCShjdHgpLCBcCisJCQkJJihvdXR2YWwpKTsKKworI2RlZmluZSBJOTE1 X1JFQURfSEVBRF9DVFgoZW5naW5lLCBjdHgsIG91dHZhbCkgXAorCWludGVsX2V4ZWNsaXN0c19y ZWFkX2hlYWQoKGVuZ2luZSksIFwKKwkJCQkoY3R4KSwgXAorCQkJCSYob3V0dmFsKSk7CisKKyNk ZWZpbmUgSTkxNV9XUklURV9IRUFEX0NUWChlbmdpbmUsIGN0eCwgdmFsKSBcCisJaW50ZWxfZXhl Y2xpc3RzX3dyaXRlX2hlYWQoKGVuZ2luZSksIFwKKwkJCQkoY3R4KSwgXAorCQkJCSh2YWwpKTsK KwogLyogc2Vxbm8gc2l6ZSBpcyBhY3R1YWxseSBvbmx5IGEgdWludDMyLCBidXQgc2luY2Ugd2Ug cGxhbiB0byB1c2UgTUlfRkxVU0hfRFcgdG8KICAqIGRvIHRoZSB3cml0ZXMsIGFuZCB0aGF0IG11 c3QgaGF2ZSBxdyBhbGlnbmVkIG9mZnNldHMsIHNpbXBseSBwcmV0ZW5kIGl0J3MgOGIuCiAgKi8K QEAgLTkyLDYgKzEwOCwzNCBAQCBzdHJ1Y3QgaW50ZWxfcmluZ19oYW5nY2hlY2sgewogCWludCBz Y29yZTsKIAllbnVtIGludGVsX3JpbmdfaGFuZ2NoZWNrX2FjdGlvbiBhY3Rpb247CiAJaW50IGRl YWRsb2NrOworCisJLyoKKwkgKiBMYXN0IHJlY29yZGVkIHJpbmcgaGVhZCBpbmRleC4KKwkgKiBU aGlzIGlzIG9ubHkgZXZlciBhIHJpbmcgaW5kZXggd2hlcmUgYXMgYWN0aXZlCisJICogaGVhZCBt YXkgYmUgYSBncmFwaGljcyBhZGRyZXNzIGluIGEgcmluZyBidWZmZXIKKwkgKi8KKwl1MzIgbGFz dF9oZWFkOworCisJLyogRmxhZyB0byBpbmRpY2F0ZSBpZiBlbmdpbmUgcmVzZXQgcmVxdWlyZWQg Ki8KKwlhdG9taWNfdCBmbGFnczsKKworCS8qIEluZGljYXRlcyByZXF1ZXN0IHRvIHJlc2V0IHRo aXMgZW5naW5lICovCisjZGVmaW5lIEk5MTVfRU5HSU5FX1JFU0VUX0lOX1BST0dSRVNTICgxPDww KQorCisJLyoKKwkgKiBUaW1lc3RhbXAgKHNlY29uZHMpIGZyb20gd2hlbiB0aGUgbGFzdCB0aW1l CisJICogdGhpcyBlbmdpbmUgd2FzIHJlc2V0LgorCSAqLworCXUzMiBsYXN0X2VuZ2luZV9yZXNl dF90aW1lOworCisJLyoKKwkgKiBOdW1iZXIgb2YgdGltZXMgdGhpcyBlbmdpbmUgaGFzIGJlZW4K KwkgKiByZXNldCBzaW5jZSBib290CisJICovCisJdTMyIHJlc2V0X2NvdW50OworCisJLyogTnVt YmVyIG9mIFREUiBoYW5nIGRldGVjdGlvbnMgKi8KKwl1MzIgdGRyX2NvdW50OwogfTsKIAogc3Ry dWN0IGludGVsX3JpbmdidWZmZXIgewpAQCAtMTc3LDYgKzIyMSwxNCBAQCBzdHJ1Y3QgIGludGVs X2VuZ2luZV9jcyB7CiAjZGVmaW5lIEk5MTVfRElTUEFUQ0hfUElOTkVEIDB4MgogCXZvaWQJCSgq Y2xlYW51cCkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyk7CiAKKwlpbnQgKCplbmFibGUp KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOworCWludCAoKmRpc2FibGUpKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcpOworCWludCAoKnNhdmUpKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnJpbmcsCisJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKKwkJICAg IGJvb2wgZm9yY2VfYWR2YW5jZSk7CisJaW50ICgqcmVzdG9yZSkoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZywKKwkJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKTsK KwogCS8qIEdFTjggc2lnbmFsL3dhaXQgdGFibGUgLSBuZXZlciB0cnVzdCBjb21tZW50cyEKIAkg KgkgIHNpZ25hbCB0bwlzaWduYWwgdG8gICAgc2lnbmFsIHRvICAgc2lnbmFsIHRvICAgICAgc2ln bmFsIHRvCiAJICoJICAgIFJDUwkJICAgVkNTICAgICAgICAgIEJDUyAgICAgICAgVkVDUwkJIFZD UzIKQEAgLTI4Myw2ICszMzUsOSBAQCBzdHJ1Y3QgIGludGVsX2VuZ2luZV9jcyB7CiAKIAlzdHJ1 Y3QgaW50ZWxfcmluZ19oYW5nY2hlY2sgaGFuZ2NoZWNrOwogCisJLyogU2F2ZWQgaGVhZCB2YWx1 ZSB0byBiZSByZXN0b3JlZCBhZnRlciByZXNldCAqLworCXUzMiBzYXZlZF9oZWFkOworCiAJc3Ry dWN0IHsKIAkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAkJdTMyIGd0dF9vZmZz ZXQ7CkBAIC00MjAsNiArNDc1LDE1IEBAIGludCBpbnRlbF9yaW5nX3NwYWNlKHN0cnVjdCBpbnRl bF9yaW5nYnVmZmVyICpyaW5nYnVmKTsKIGJvb2wgaW50ZWxfcmluZ19zdG9wcGVkKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcpOwogdm9pZCBfX2ludGVsX3JpbmdfYWR2YW5jZShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nKTsKIAordm9pZCBpbnRlbF9ncHVfZW5naW5lX3Jlc2V0X3Jl c2FtcGxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCisJCXN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxKTsKK2ludCBpbnRlbF9yaW5nX2Rpc2FibGUoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZyk7CitpbnQgaW50ZWxfcmluZ19lbmFibGUoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZyk7CitpbnQgaW50ZWxfcmluZ19zYXZlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsCisJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBib29sIGZvcmNlX2Fk dmFuY2UpOworaW50IGludGVsX3JpbmdfcmVzdG9yZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpy aW5nLAorCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7CisKIGludCBfX211c3Rf Y2hlY2sgaW50ZWxfcmluZ19pZGxlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOwogdm9p ZCBpbnRlbF9yaW5nX2luaXRfc2Vxbm8oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgdTMy IHNlcW5vKTsKIGludCBpbnRlbF9yaW5nX2ZsdXNoX2FsbF9jYWNoZXMoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91 bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCmluZGV4IDc3MGY1 MjYuLjg0Nzc0ZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29y ZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCkBAIC0xNDc4LDYg KzE0NzgsMjE0IEBAIGludCBpbnRlbF9ncHVfcmVzZXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaW5saW5lIGludCB3YWl0X2Zvcl9lbmdpbmVfcmVz ZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQl1bnNpZ25lZCBpbnQgZ3Jk b20pCit7CisjZGVmaW5lIF9DTkQgKChfX3Jhd19pOTE1X3JlYWQzMihkZXZfcHJpdiwgR0VONl9H RFJTVCkgJiBncmRvbSkgPT0gMCkKKworCS8qCisJICogU3BpbiB3YWl0aW5nIGZvciB0aGUgZGV2 aWNlIHRvIGFjayB0aGUgcmVzZXQgcmVxdWVzdC4KKwkgKiBUaW1lcyBvdXQgYWZ0ZXIgNTAwIHVz CisJICogKi8KKwlyZXR1cm4gd2FpdF9mb3JfYXRvbWljX3VzKF9DTkQsIDUwMCk7CisKKyN1bmRl ZiBfQ05ECit9CisKK3N0YXRpYyBpbnQgZG9fZW5naW5lX3Jlc2V0X25vbG9jayhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJaW50IHJldCA9IC1FTk9ERVY7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5kZXYtPmRldl9wcml2YXRlOworCisJ YXNzZXJ0X3NwaW5fbG9ja2VkKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2spOworCisJc3dpdGNoIChl bmdpbmUtPmlkKSB7CisJY2FzZSBSQ1M6CisJCV9fcmF3X2k5MTVfd3JpdGUzMihkZXZfcHJpdiwg R0VONl9HRFJTVCwgR0VONl9HUkRPTV9SRU5ERVIpOworCQllbmdpbmUtPmhhbmdjaGVjay5yZXNl dF9jb3VudCsrOworCQlyZXQgPSB3YWl0X2Zvcl9lbmdpbmVfcmVzZXQoZGV2X3ByaXYsIEdFTjZf R1JET01fUkVOREVSKTsKKwkJYnJlYWs7CisKKwljYXNlIEJDUzoKKwkJX19yYXdfaTkxNV93cml0 ZTMyKGRldl9wcml2LCBHRU42X0dEUlNULCBHRU42X0dSRE9NX0JMVCk7CisJCWVuZ2luZS0+aGFu Z2NoZWNrLnJlc2V0X2NvdW50Kys7CisJCXJldCA9IHdhaXRfZm9yX2VuZ2luZV9yZXNldChkZXZf cHJpdiwgR0VONl9HUkRPTV9CTFQpOworCQlicmVhazsKKworCWNhc2UgVkNTOgorCQlfX3Jhd19p OTE1X3dyaXRlMzIoZGV2X3ByaXYsIEdFTjZfR0RSU1QsIEdFTjZfR1JET01fTUVESUEpOworCQll bmdpbmUtPmhhbmdjaGVjay5yZXNldF9jb3VudCsrOworCQlyZXQgPSB3YWl0X2Zvcl9lbmdpbmVf cmVzZXQoZGV2X3ByaXYsIEdFTjZfR1JET01fTUVESUEpOworCQlicmVhazsKKworCWNhc2UgVkVD UzoKKwkJX19yYXdfaTkxNV93cml0ZTMyKGRldl9wcml2LCBHRU42X0dEUlNULCBHRU42X0dSRE9N X1ZFQ1MpOworCQllbmdpbmUtPmhhbmdjaGVjay5yZXNldF9jb3VudCsrOworCQlyZXQgPSB3YWl0 X2Zvcl9lbmdpbmVfcmVzZXQoZGV2X3ByaXYsIEdFTjZfR1JET01fVkVDUyk7CisJCWJyZWFrOwor CisJY2FzZSBWQ1MyOgorCQlfX3Jhd19pOTE1X3dyaXRlMzIoZGV2X3ByaXYsIEdFTjZfR0RSU1Qs IEdFTjhfR1JET01fTUVESUEyKTsKKwkJZW5naW5lLT5oYW5nY2hlY2sucmVzZXRfY291bnQrKzsK KwkJcmV0ID0gd2FpdF9mb3JfZW5naW5lX3Jlc2V0KGRldl9wcml2LCBHRU44X0dSRE9NX01FRElB Mik7CisJCWJyZWFrOworCisJZGVmYXVsdDoKKwkJRFJNX0VSUk9SKCJVbmV4cGVjdGVkIGVuZ2lu ZTogJWRcbiIsIGVuZ2luZS0+aWQpOworCQlicmVhazsKKwl9CisKKwlyZXR1cm4gcmV0OworfQor CitzdGF0aWMgaW50IGdlbjhfZG9fZW5naW5lX3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5naW5lLT5kZXY7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlpbnQg cmV0ID0gLUVOT0RFVjsKKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOworCXUzMiByZXNldF9jdGwg PSAwOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxh Z3MpOworCXJldCA9IGRvX2VuZ2luZV9yZXNldF9ub2xvY2soZW5naW5lKTsKKwlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKKworCWlmICgh cmV0KSB7CisJCWNoYXIgKnJlc2V0X2V2ZW50WzJdOworCisJCS8qIERvIHVldmVudCBvdXRzaWRl IG9mIHNwaW5sb2NrIGFzIHVldmVudCBjYW4gc2xlZXAgKi8KKwkJcmVzZXRfZXZlbnRbMV0gPSBO VUxMOworCQlyZXNldF9ldmVudFswXSA9IGthc3ByaW50ZihHRlBfS0VSTkVMLCAiUkVTRVQgUklO Rz0lZCIsIGVuZ2luZS0+aWQpOworCQlrb2JqZWN0X3VldmVudF9lbnYoJmRldi0+cHJpbWFyeS0+ a2Rldi0+a29iaiwKKwkJCUtPQkpfQ0hBTkdFLCByZXNldF9ldmVudCk7CisJCWtmcmVlKHJlc2V0 X2V2ZW50WzBdKTsKKworCQkvKgorCQkgKiBDb25maXJtIHRoYXQgcmVzZXQgY29udHJvbCByZWdp c3RlciBiYWNrIHRvIG5vcm1hbAorCQkgKiBmb2xsb3dpbmcgdGhlIHJlc2V0LgorCQkgKi8KKwkJ cmVzZXRfY3RsID0gSTkxNV9SRUFEKFJJTkdfUkVTRVRfQ1RMKGVuZ2luZSkpOworCQlXQVJOKHJl c2V0X2N0bCAmIDB4MywgIlJlc2V0IGNvbnRyb2wgc3RpbGwgYWN0aXZlIGFmdGVyIHJlc2V0ISAo MHglMDh4KVxuIiwKKwkJCXJlc2V0X2N0bCk7CisKKwl9IGVsc2UgeworCQlEUk1fRVJST1IoIkVu Z2luZSByZXNldCBmYWlsZWQhICglZClcbiIsIHJldCk7CisJfQorCisJcmV0dXJuIHJldDsKK30K KworaW50IGludGVsX2dwdV9lbmdpbmVfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQoreworCS8qIFJlc2V0IGFuIGluZGl2aWR1YWwgZW5naW5lICovCisJaW50IHJldCA9IC1F Tk9ERVY7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuZ2luZS0+ZGV2OworCisJc3dpdGNo IChJTlRFTF9JTkZPKGRldiktPmdlbikgeworCWNhc2UgODoKKwkJcmV0ID0gZ2VuOF9kb19lbmdp bmVfcmVzZXQoZW5naW5lKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJRFJNX0VSUk9SKCJQZXIg RW5naW5lIFJlc2V0IG5vdCBzdXBwb3J0ZWQgb24gR2VuJWRcbiIsCisJCQkgIElOVEVMX0lORk8o ZGV2KS0+Z2VuKTsKKwkJcmV0ID0gLUVOT0RFVjsKKwkJYnJlYWs7CisJfQorCisJcmV0dXJuIHJl dDsKK30KKworc3RhdGljIGludCBnZW44X3JlcXVlc3RfZW5naW5lX3Jlc2V0KHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlpbnQgcmV0ID0gMDsKKwl1bnNpZ25lZCBsb25nIGly cWZsYWdzOworCXUzMiByZXNldF9jdGwgPSAwOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGVuZ2luZS0+ZGV2LT5kZXZfcHJpdmF0ZTsKKworCXNwaW5fbG9ja19pcnFzYXZl KCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKKworCS8qCisJICogSW5pdGlhdGUg cmVzZXQgaGFuZHNoYWtlIGJ5IHJlcXVlc3RpbmcgcmVzZXQgZnJvbSB0aGUKKwkgKiByZXNldCBj b250cm9sIHJlZ2lzdGVyLgorCSAqLworCV9fcmF3X2k5MTVfd3JpdGUzMihkZXZfcHJpdiwgUklO R19SRVNFVF9DVEwoZW5naW5lKSwKKwkJX01BU0tFRF9CSVRfRU5BQkxFKFJFUVVFU1RfUkVTRVQp KTsKKworCS8qCisJICogV2FpdCBmb3IgcmVhZHkgdG8gcmVzZXQgYWNrLgorCSAqLworCXJldCA9 IHdhaXRfZm9yX2F0b21pY191cygoX19yYXdfaTkxNV9yZWFkMzIoZGV2X3ByaXYsCisJCVJJTkdf UkVTRVRfQ1RMKGVuZ2luZSkpICYgUkVBRFlfRk9SX1JFU0VUKSA9PQorCQkJUkVBRFlfRk9SX1JF U0VULCA1MDApOworCisJcmVzZXRfY3RsID0gX19yYXdfaTkxNV9yZWFkMzIoZGV2X3ByaXYsIFJJ TkdfUkVTRVRfQ1RMKGVuZ2luZSkpOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3By aXYtPnVuY29yZS5sb2NrLCBpcnFmbGFncyk7CisKKwlXQVJOKHJldCwgIlJlc2V0IHJlcXVlc3Qg ZmFpbGVkISAoZXJyPSVkLCByZXNldCBjb250cm9sPTB4JTA4eClcbiIsCisJCXJldCwgcmVzZXRf Y3RsKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgZ2VuOF91bnJlcXVlc3RfZW5n aW5lX3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmRldi0+ZGV2X3ByaXZhdGU7CisKKwlJ OTE1X1dSSVRFKFJJTkdfUkVTRVRfQ1RMKGVuZ2luZSksIF9NQVNLRURfQklUX0RJU0FCTEUoUkVR VUVTVF9SRVNFVCkpOworCXJldHVybiAwOworfQorCisvKgorICogT24gZ2VuOCsgYSByZXNldCBy ZXF1ZXN0IGhhcyB0byBiZSBpc3N1ZWQgdmlhIHRoZSByZXNldCBjb250cm9sIHJlZ2lzdGVyCisg KiBiZWZvcmUgYSBHUFUgZW5naW5lIGNhbiBiZSByZXNldCBpbiBvcmRlciB0byBzdG9wIHRoZSBj b21tYW5kIHN0cmVhbWVyCisgKiBhbmQgaWRsZSB0aGUgZW5naW5lLiBUaGlzIHJlcGxhY2VzIHRo ZSBsZWdhY3kgd2F5IG9mIHN0b3BwaW5nIGFuIGVuZ2luZQorICogYnkgd3JpdGluZyB0byB0aGUg c3RvcCByaW5nIGJpdCBpbiB0aGUgTUlfTU9ERSByZWdpc3Rlci4KKyAqLworaW50IGludGVsX3Jl cXVlc3RfZ3B1X2VuZ2luZV9yZXNldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7 CisJLyogUmVxdWVzdCByZXNldCBmb3IgYW4gaW5kaXZpZHVhbCBlbmdpbmUgKi8KKwlpbnQgcmV0 ID0gLUVOT0RFVjsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OworCisJaWYgKFdBUk5fT04oIWVu Z2luZSkpCisJCXJldHVybiAtRUlOVkFMOworCisJZGV2ID0gZW5naW5lLT5kZXY7CisKKwlpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCkKKwkJcmV0ID0gZ2VuOF9yZXF1ZXN0X2VuZ2luZV9y ZXNldChlbmdpbmUpOworCWVsc2UKKwkJRFJNX0VSUk9SKCJSZXNldCByZXF1ZXN0IG5vdCBzdXBw b3J0ZWQgb24gR2VuJWRcbiIsCisJCQkgIElOVEVMX0lORk8oZGV2KS0+Z2VuKTsKKworCXJldHVy biByZXQ7Cit9CisKKy8qCisgKiBJdCBpcyBwb3NzaWJsZSB0byBiYWNrIG9mZiBmcm9tIGEgcHJl dmlvdXNseSBpc3N1ZWQgcmVzZXQgcmVxdWVzdCBieSBzaW1wbHkKKyAqIGNsZWFyaW5nIHRoZSBy ZXNldCByZXF1ZXN0IGJpdCBpbiB0aGUgcmVzZXQgY29udHJvbCByZWdpc3Rlci4KKyAqLworaW50 IGludGVsX3VucmVxdWVzdF9ncHVfZW5naW5lX3Jlc2V0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKK3sKKwkvKiBSZXF1ZXN0IHJlc2V0IGZvciBhbiBpbmRpdmlkdWFsIGVuZ2luZSAq LworCWludCByZXQgPSAtRU5PREVWOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CisKKwlpZiAo V0FSTl9PTighZW5naW5lKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlkZXYgPSBlbmdpbmUtPmRl djsKKworCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KQorCQlyZXQgPSBnZW44X3VucmVx dWVzdF9lbmdpbmVfcmVzZXQoZW5naW5lKTsKKwllbHNlCisJCURSTV9FUlJPUigiUmVzZXQgdW5y ZXF1ZXN0IG5vdCBzdXBwb3J0ZWQgb24gR2VuJWRcbiIsCisJCQkgIElOVEVMX0lORk8oZGV2KS0+ Z2VuKTsKKworCXJldHVybiByZXQ7Cit9CisKIHZvaWQgaW50ZWxfdW5jb3JlX2NoZWNrX2Vycm9y cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0tIAoxLjcuOS41CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=