From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 17/43] drm/i915: Split struct intel_context definition to its own header Date: Wed, 6 Mar 2019 14:24:51 +0000 Message-ID: <20190306142517.22558-18-chris@chris-wilson.co.uk> References: <20190306142517.22558-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 079AA6E02F for ; Wed, 6 Mar 2019 14:27:20 +0000 (UTC) In-Reply-To: <20190306142517.22558-1-chris@chris-wilson.co.uk> 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: matthew.auld@intel.com List-Id: intel-gfx@lists.freedesktop.org VGhpcyBjb21wbGV4IHN0cnVjdCBwdWxsaW5nIGluIGhhbGYgdGhlIGRyaXZlciBkZXNlcnZlcyBp dHMgb3duCmlzb2xhdGlvbiBpbiBwcmVwYXJhdGlvbiBmb3IgaW50ZWxfY29udGV4dCBiZWNvbWlu ZyBhbiBvdXRyaWdodApjb21wbGljYXRlZCBjbGFzcyBvZiBpdHMgb3duLgoKSW4gb3JkZXIgdG8g c3BsaXQgdGhpcyBiZWFzdCBpbnRvIGl0cyBvd24gaGVhZGVyIGFsc28gcmVxdWVzdHMgc3BsaXR0 aW5nCnNldmVyYWwgb2YgaXRzIGRlcGVuZGVudCB0eXBlcyBhbmQgdGhlaXIgZGVwZW5kZW5jaWVz IGludG8gdGhlaXIgb3duCmhlYWRlcnMgYXMgd2VsbC4KCnYyOiBBZGQgc3RhbmRhbG9uZSBjb21w aWxhdGlvbiB0ZXN0cwoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+ClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5A aW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAg ICAgICB8ICAgOSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmggICAg ICAgfCAyNDUgKy0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHRf dHlwZXMuaCB8IDE4NyArKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5l LmggICAgICAgICAgfCAgNzAgKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5l X3R5cGVzLmggICAgfCAgODAgKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb250ZXh0 LmggICAgICAgICAgfCAgNDcgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbnRleHRf dHlwZXMuaCAgICB8ICA2MCArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX3R5 cGVzLmggICAgIHwgNTIxICsrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZ3VjLmggICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaCAgICAgICB8IDUwMiArLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfd29ya2Fyb3VuZHMuaCAgICAgIHwgIDEzICstCiAuLi4vZ3B1L2Ry bS9pOTE1L2ludGVsX3dvcmthcm91bmRzX3R5cGVzLmggICAgfCAgMjcgKwogLi4uL2k5MTUvdGVz dF9pOTE1X2FjdGl2ZV90eXBlc19zdGFuZGFsb25lLmMgIHwgICA3ICsKIC4uLi90ZXN0X2k5MTVf Z2VtX2NvbnRleHRfdHlwZXNfc3RhbmRhbG9uZS5jICB8ICAgNyArCiAuLi4vdGVzdF9pOTE1X3Rp bWVsaW5lX3R5cGVzX3N0YW5kYWxvbmUuYyAgICAgfCAgIDcgKwogLi4uL3Rlc3RfaW50ZWxfY29u dGV4dF90eXBlc19zdGFuZGFsb25lLmMgICAgIHwgICA3ICsKIC4uLi9pOTE1L3Rlc3RfaW50ZWxf ZW5naW5lX3R5cGVzX3N0YW5kYWxvbmUuYyB8ICAgNyArCiAuLi4vdGVzdF9pbnRlbF93b3JrYXJv dW5kc190eXBlc19zdGFuZGFsb25lLmMgfCAgIDcgKwogMTggZmlsZXMgY2hhbmdlZCwgOTgwIGlu c2VydGlvbnMoKyksIDgyNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lX3R5cGVzLmgKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb250ZXh0LmgKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb250ZXh0X3R5cGVzLmgKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfdHlwZXMuaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRz X3R5cGVzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS90ZXN0X2k5 MTVfYWN0aXZlX3R5cGVzX3N0YW5kYWxvbmUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9pOTE1L3Rlc3RfaTkxNV9nZW1fY29udGV4dF90eXBlc19zdGFuZGFsb25lLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS90ZXN0X2k5MTVfdGltZWxpbmVf dHlwZXNfc3RhbmRhbG9uZS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5 MTUvdGVzdF9pbnRlbF9jb250ZXh0X3R5cGVzX3N0YW5kYWxvbmUuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L3Rlc3RfaW50ZWxfZW5naW5lX3R5cGVzX3N0YW5kYWxv bmUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L3Rlc3RfaW50ZWxf d29ya2Fyb3VuZHNfdHlwZXNfc3RhbmRhbG9uZS5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQppbmRleCA4 OTEwNWIxYWFmMTIuLjUyNGNhY2UzN2Q4NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTU3LDYg KzU3LDE1IEBAIGk5MTUtJChDT05GSUdfQ09NUEFUKSAgICs9IGk5MTVfaW9jMzIubwogaTkxNS0k KENPTkZJR19ERUJVR19GUykgKz0gaTkxNV9kZWJ1Z2ZzLm8gaW50ZWxfcGlwZV9jcmMubwogaTkx NS0kKENPTkZJR19QRVJGX0VWRU5UUykgKz0gaTkxNV9wbXUubwogCisjIFRlc3QgdGhlIGhlYWRl cnMgYXJlIGNvbXBpbGFibGUgYXMgc3RhbmRhbG9uZSB1bml0cworaTkxNS0kKENPTkZJR19EUk1f STkxNV9XRVJST1IpICs9IFwKKwl0ZXN0X2k5MTVfYWN0aXZlX3R5cGVzX3N0YW5kYWxvbmUubyBc CisJdGVzdF9pOTE1X2dlbV9jb250ZXh0X3R5cGVzX3N0YW5kYWxvbmUubyBcCisJdGVzdF9pOTE1 X3RpbWVsaW5lX3R5cGVzX3N0YW5kYWxvbmUubyBcCisJdGVzdF9pbnRlbF9jb250ZXh0X3R5cGVz X3N0YW5kYWxvbmUubyBcCisJdGVzdF9pbnRlbF9lbmdpbmVfdHlwZXNfc3RhbmRhbG9uZS5vIFwK Kwl0ZXN0X2ludGVsX3dvcmthcm91bmRzX3R5cGVzX3N0YW5kYWxvbmUubworCiAjIEdFTSBjb2Rl CiBpOTE1LXkgKz0gXAogCSAgaTkxNV9hY3RpdmUubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmgKaW5kZXggNTQxNWViNzE5MWU2Li5lZDlhMjQ0N2JiYTkgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKQEAgLTI1LDIyNSArMjUsMTcgQEAKICNp Zm5kZWYgX19JOTE1X0dFTV9DT05URVhUX0hfXwogI2RlZmluZSBfX0k5MTVfR0VNX0NPTlRFWFRf SF9fCiAKLSNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KLSNpbmNsdWRlIDxsaW51eC9saXN0Lmg+ Ci0jaW5jbHVkZSA8bGludXgvcmFkaXgtdHJlZS5oPgorI2luY2x1ZGUgImk5MTVfZ2VtX2NvbnRl eHRfdHlwZXMuaCIKIAogI2luY2x1ZGUgImk5MTVfZ2VtLmgiCiAjaW5jbHVkZSAiaTkxNV9zY2hl ZHVsZXIuaCIKKyNpbmNsdWRlICJpbnRlbF9jb250ZXh0LmgiCiAjaW5jbHVkZSAiaW50ZWxfZGV2 aWNlX2luZm8uaCIKICNpbmNsdWRlICJpbnRlbF9yaW5nYnVmZmVyLmgiCiAKLXN0cnVjdCBwaWQ7 Ci0KIHN0cnVjdCBkcm1fZGV2aWNlOwogc3RydWN0IGRybV9maWxlOwogCi1zdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZTsKLXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGU7Ci1zdHJ1Y3QgaTkxNV9o d19wcGd0dDsKLXN0cnVjdCBpOTE1X3JlcXVlc3Q7Ci1zdHJ1Y3QgaTkxNV90aW1lbGluZTsKLXN0 cnVjdCBpOTE1X3ZtYTsKLXN0cnVjdCBpbnRlbF9yaW5nOwotCi0jZGVmaW5lIERFRkFVTFRfQ09O VEVYVF9IQU5ETEUgMAotCi1zdHJ1Y3QgaW50ZWxfY29udGV4dDsKLQotc3RydWN0IGludGVsX2Nv bnRleHRfb3BzIHsKLQl2b2lkICgqdW5waW4pKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSk7Ci0J dm9pZCAoKmRlc3Ryb3kpKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSk7Ci19OwotCi0vKgotICog UG93ZXJnYXRpbmcgY29uZmlndXJhdGlvbiBmb3IgYSBwYXJ0aWN1bGFyIChjb250ZXh0LGVuZ2lu ZSkuCi0gKi8KLXN0cnVjdCBpbnRlbF9zc2V1IHsKLQl1OCBzbGljZV9tYXNrOwotCXU4IHN1YnNs aWNlX21hc2s7Ci0JdTggbWluX2V1c19wZXJfc3Vic2xpY2U7Ci0JdTggbWF4X2V1c19wZXJfc3Vi c2xpY2U7Ci19OwotCi0vKioKLSAqIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0IC0gY2xpZW50IHN0 YXRlCi0gKgotICogVGhlIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0IHJlcHJlc2VudHMgdGhlIGNv bWJpbmVkIHZpZXcgb2YgdGhlIGRyaXZlciBhbmQKLSAqIGxvZ2ljYWwgaGFyZHdhcmUgc3RhdGUg Zm9yIGEgcGFydGljdWxhciBjbGllbnQuCi0gKi8KLXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0IHsK LQkvKiogaTkxNTogaTkxNSBkZXZpY2UgYmFja3BvaW50ZXIgKi8KLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNTsKLQotCS8qKiBmaWxlX3ByaXY6IG93bmluZyBmaWxlIGRlc2NyaXB0b3Ig Ki8KLQlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXY7Ci0KLQlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICoqZW5naW5lczsKLQotCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1l bGluZTsKLQotCS8qKgotCSAqIEBwcGd0dDogdW5pcXVlIGFkZHJlc3Mgc3BhY2UgKEdUVCkKLQkg KgotCSAqIEluIGZ1bGwtcHBndHQgbW9kZSwgZWFjaCBjb250ZXh0IGhhcyBpdHMgb3duIGFkZHJl c3Mgc3BhY2UgZW5zdXJpbmcKLQkgKiBjb21wbGV0ZSBzZXBlcmF0aW9uIG9mIG9uZSBjbGllbnQg ZnJvbSBhbGwgb3RoZXJzLgotCSAqCi0JICogSW4gb3RoZXIgbW9kZXMsIHRoaXMgaXMgYSBOVUxM IHBvaW50ZXIgd2l0aCB0aGUgZXhwZWN0YXRpb24gdGhhdAotCSAqIHRoZSBjYWxsZXIgdXNlcyB0 aGUgc2hhcmVkIGdsb2JhbCBHVFQuCi0JICovCi0Jc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0 OwotCi0JLyoqCi0JICogQHBpZDogcHJvY2VzcyBpZCBvZiBjcmVhdG9yCi0JICoKLQkgKiBOb3Rl IHRoYXQgd2hvIGNyZWF0ZWQgdGhlIGNvbnRleHQgbWF5IG5vdCBiZSB0aGUgcHJpbmNpcGxlIHVz ZXIsCi0JICogYXMgdGhlIGNvbnRleHQgbWF5IGJlIHNoYXJlZCBhY3Jvc3MgYSBsb2NhbCBzb2Nr ZXQuIEhvd2V2ZXIsCi0JICogdGhhdCBzaG91bGQgb25seSBhZmZlY3QgdGhlIGRlZmF1bHQgY29u dGV4dCwgYWxsIGNvbnRleHRzIGNyZWF0ZWQKLQkgKiBleHBsaWNpdGx5IGJ5IHRoZSBjbGllbnQg YXJlIGV4cGVjdGVkIHRvIGJlIGlzb2xhdGVkLgotCSAqLwotCXN0cnVjdCBwaWQgKnBpZDsKLQot CS8qKgotCSAqIEBuYW1lOiBhcmJpdHJhcnkgbmFtZQotCSAqCi0JICogQSBuYW1lIGlzIGNvbnN0 cnVjdGVkIGZvciB0aGUgY29udGV4dCBmcm9tIHRoZSBjcmVhdG9yJ3MgcHJvY2VzcwotCSAqIG5h bWUsIHBpZCBhbmQgdXNlciBoYW5kbGUgaW4gb3JkZXIgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhl Ci0JICogY29udGV4dCBpbiBtZXNzYWdlcy4KLQkgKi8KLQljb25zdCBjaGFyICpuYW1lOwotCi0J LyoqIGxpbms6IHBsYWNlIHdpdGggJmRybV9pOTE1X3ByaXZhdGUuY29udGV4dF9saXN0ICovCi0J c3RydWN0IGxpc3RfaGVhZCBsaW5rOwotCXN0cnVjdCBsbGlzdF9ub2RlIGZyZWVfbGluazsKLQot CS8qKgotCSAqIEByZWY6IHJlZmVyZW5jZSBjb3VudAotCSAqCi0JICogQSByZWZlcmVuY2UgdG8g YSBjb250ZXh0IGlzIGhlbGQgYnkgYm90aCB0aGUgY2xpZW50IHdobyBjcmVhdGVkIGl0Ci0JICog YW5kIG9uIGVhY2ggcmVxdWVzdCBzdWJtaXR0ZWQgdG8gdGhlIGhhcmR3YXJlIHVzaW5nIHRoZSBy ZXF1ZXN0Ci0JICogKHRvIGVuc3VyZSB0aGUgaGFyZHdhcmUgaGFzIGFjY2VzcyB0byB0aGUgc3Rh dGUgdW50aWwgaXQgaGFzCi0JICogZmluaXNoZWQgYWxsIHBlbmRpbmcgd3JpdGVzKS4gU2VlIGk5 MTVfZ2VtX2NvbnRleHRfZ2V0KCkgYW5kCi0JICogaTkxNV9nZW1fY29udGV4dF9wdXQoKSBmb3Ig YWNjZXNzLgotCSAqLwotCXN0cnVjdCBrcmVmIHJlZjsKLQotCS8qKgotCSAqIEByY3U6IHJjdV9o ZWFkIGZvciBkZWZlcnJlZCBmcmVlaW5nLgotCSAqLwotCXN0cnVjdCByY3VfaGVhZCByY3U7Ci0K LQkvKioKLQkgKiBAdXNlcl9mbGFnczogc21hbGwgc2V0IG9mIGJvb2xlYW5zIGNvbnRyb2xsZWQg YnkgdGhlIHVzZXIKLQkgKi8KLQl1bnNpZ25lZCBsb25nIHVzZXJfZmxhZ3M7Ci0jZGVmaW5lIFVD T05URVhUX05PX1pFUk9NQVAJCTAKLSNkZWZpbmUgVUNPTlRFWFRfTk9fRVJST1JfQ0FQVFVSRQkx Ci0jZGVmaW5lIFVDT05URVhUX0JBTk5BQkxFCQkyCi0jZGVmaW5lIFVDT05URVhUX1JFQ09WRVJB QkxFCQkzCi0KLQkvKioKLQkgKiBAZmxhZ3M6IHNtYWxsIHNldCBvZiBib29sZWFucwotCSAqLwot CXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0jZGVmaW5lIENPTlRFWFRfQkFOTkVECQkJMAotI2RlZmlu ZSBDT05URVhUX0NMT1NFRAkJCTEKLSNkZWZpbmUgQ09OVEVYVF9GT1JDRV9TSU5HTEVfU1VCTUlT U0lPTgkyCi0KLQl1bnNpZ25lZCBpbnQgbmVuZ2luZTsKLQotCS8qKgotCSAqIEBod19pZDogLSB1 bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGNvbnRleHQKLQkgKgotCSAqIFRoZSBoYXJkd2FyZSBu ZWVkcyB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUgY29udGV4dCBmb3IgYSBmZXcKLQkgKiBmdW5j dGlvbnMgbGlrZSBmYXVsdCByZXBvcnRpbmcsIFBBU0lELCBzY2hlZHVsaW5nLiBUaGUKLQkgKiAm ZHJtX2k5MTVfcHJpdmF0ZS5jb250ZXh0X2h3X2lkYSBpcyB1c2VkIHRvIGFzc2lnbiBhIHVucWl1 ZQotCSAqIGlkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbnRleHQuCi0JICoKLQkgKiBAaHdf aWRfcGluX2NvdW50OiAtIG51bWJlciBvZiB0aW1lcyB0aGlzIGNvbnRleHQgaGFkIGJlZW4gcGlu bmVkCi0JICogZm9yIHVzZSAoc2hvdWxkIGJlLCBhdCBtb3N0LCBvbmNlIHBlciBlbmdpbmUpLgot CSAqCi0JICogQGh3X2lkX2xpbms6IC0gYWxsIGNvbnRleHRzIHdpdGggYW4gYXNzaWduZWQgaWQg YXJlIHRyYWNrZWQKLQkgKiBmb3IgcG9zc2libGUgcmVwb3NzZXNzaW9uLgotCSAqLwotCXVuc2ln bmVkIGludCBod19pZDsKLQlhdG9taWNfdCBod19pZF9waW5fY291bnQ7Ci0Jc3RydWN0IGxpc3Rf aGVhZCBod19pZF9saW5rOwotCi0Jc3RydWN0IGxpc3RfaGVhZCBhY3RpdmVfZW5naW5lczsKLQlz dHJ1Y3QgbXV0ZXggbXV0ZXg7Ci0KLQkvKioKLQkgKiBAdXNlcl9oYW5kbGU6IHVzZXJzcGFjZSBp ZGVudGlmaWVyCi0JICoKLQkgKiBBIHVuaXF1ZSBwZXItZmlsZSBpZGVudGlmaWVyIGlzIGdlbmVy YXRlZCBmcm9tCi0JICogJmRybV9pOTE1X2ZpbGVfcHJpdmF0ZS5jb250ZXh0cy4KLQkgKi8KLQl1 MzIgdXNlcl9oYW5kbGU7Ci0KLQlzdHJ1Y3QgaTkxNV9zY2hlZF9hdHRyIHNjaGVkOwotCi0JLyoq IGVuZ2luZTogcGVyLWVuZ2luZSBsb2dpY2FsIEhXIHN0YXRlICovCi0Jc3RydWN0IGludGVsX2Nv bnRleHQgewotCQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqZ2VtX2NvbnRleHQ7Ci0JCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKLQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqYWN0 aXZlOwotCQlzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV9saW5rOwotCQlzdHJ1Y3QgbGlzdF9oZWFk IHNpZ25hbF9saW5rOwotCQlzdHJ1Y3QgbGlzdF9oZWFkIHNpZ25hbHM7Ci0JCXN0cnVjdCBpOTE1 X3ZtYSAqc3RhdGU7Ci0JCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOwotCQl1MzIgKmxyY19yZWdf c3RhdGU7Ci0JCXU2NCBscmNfZGVzYzsKLQkJaW50IHBpbl9jb3VudDsKLQotCQkvKioKLQkJICog YWN0aXZlX3RyYWNrZXI6IEFjdGl2ZSB0cmFja2VyIGZvciB0aGUgZXh0ZXJuYWwgcnEgYWN0aXZp dHkKLQkJICogb24gdGhpcyBpbnRlbF9jb250ZXh0IG9iamVjdC4KLQkJICovCi0JCXN0cnVjdCBp OTE1X2FjdGl2ZV9yZXF1ZXN0IGFjdGl2ZV90cmFja2VyOwotCi0JCWNvbnN0IHN0cnVjdCBpbnRl bF9jb250ZXh0X29wcyAqb3BzOwotCi0JCS8qKiBzc2V1OiBDb250cm9sIGV1L3NsaWNlIHBhcnRp dGlvbmluZyAqLwotCQlzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1OwotCX0gX19lbmdpbmVbSTkxNV9O VU1fRU5HSU5FU107Ci0KLQkvKiogcmluZ19zaXplOiBzaXplIGZvciBhbGxvY2F0aW5nIHRoZSBw ZXItZW5naW5lIHJpbmcgYnVmZmVyICovCi0JdTMyIHJpbmdfc2l6ZTsKLQkvKiogZGVzY190ZW1w bGF0ZTogaW52YXJpYW50IGZpZWxkcyBmb3IgdGhlIEhXIGNvbnRleHQgZGVzY3JpcHRvciAqLwot CXUzMiBkZXNjX3RlbXBsYXRlOwotCi0JLyoqIGd1aWx0eV9jb3VudDogSG93IG1hbnkgdGltZXMg dGhpcyBjb250ZXh0IGhhcyBjYXVzZWQgYSBHUFUgaGFuZy4gKi8KLQlhdG9taWNfdCBndWlsdHlf Y291bnQ7Ci0JLyoqCi0JICogQGFjdGl2ZV9jb3VudDogSG93IG1hbnkgdGltZXMgdGhpcyBjb250 ZXh0IHdhcyBhY3RpdmUgZHVyaW5nIGEgR1BVCi0JICogaGFuZywgYnV0IGRpZCBub3QgY2F1c2Ug aXQuCi0JICovCi0JYXRvbWljX3QgYWN0aXZlX2NvdW50OwotCi0JLyoqCi0JICogQGhhbmdfdGlt ZXN0YW1wOiBUaGUgbGFzdCB0aW1lKHMpIHRoaXMgY29udGV4dCBjYXVzZWQgYSBHUFUgaGFuZwot CSAqLwotCXVuc2lnbmVkIGxvbmcgaGFuZ190aW1lc3RhbXBbMl07Ci0jZGVmaW5lIENPTlRFWFRf RkFTVF9IQU5HX0pJRkZJRVMgKDEyMCAqIEhaKSAvKiAzIGhhbmdzIHdpdGhpbiAxMjBzPyBCYW5u ZWQhICovCi0KLQkvKiogcmVtYXBfc2xpY2U6IEJpdG1hc2sgb2YgY2FjaGUgbGluZXMgdGhhdCBu ZWVkIHJlbWFwcGluZyAqLwotCXU4IHJlbWFwX3NsaWNlOwotCi0JLyoqIGhhbmRsZXNfdm1hOiBy YnRyZWUgdG8gbG9vayB1cCBvdXIgY29udGV4dCBzcGVjaWZpYyBvYmovdm1hIGZvcgotCSAqIHRo ZSB1c2VyIGhhbmRsZS4gKHVzZXIgaGFuZGxlcyBhcmUgcGVyIGZkLCBidXQgdGhlIGJpbmRpbmcg aXMKLQkgKiBwZXIgdm0sIHdoaWNoIG1heSBiZSBvbmUgcGVyIGNvbnRleHQgb3Igc2hhcmVkIHdp dGggdGhlIGdsb2JhbCBHVFQpCi0JICovCi0Jc3RydWN0IHJhZGl4X3RyZWVfcm9vdCBoYW5kbGVz X3ZtYTsKLQotCS8qKiBoYW5kbGVzX2xpc3Q6IHJldmVyc2UgbGlzdCBvZiBhbGwgdGhlIHJidHJl ZSBlbnRyaWVzIGluIHVzZSBmb3IKLQkgKiB0aGlzIGNvbnRleHQsIHdoaWNoIGFsbG93cyB1cyB0 byBmcmVlIGFsbCB0aGUgYWxsb2NhdGlvbnMgb24KLQkgKiBjb250ZXh0IGNsb3NlLgotCSAqLwot CXN0cnVjdCBsaXN0X2hlYWQgaGFuZGxlc19saXN0OwotfTsKLQogc3RhdGljIGlubGluZSBib29s IGk5MTVfZ2VtX2NvbnRleHRfaXNfY2xvc2VkKGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHgpCiB7CiAJcmV0dXJuIHRlc3RfYml0KENPTlRFWFRfQ0xPU0VELCAmY3R4LT5mbGFncyk7 CkBAIC0zNDUsMzUgKzEzNyw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2dlbV9jb250ZXh0 X2lzX2tlcm5lbChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQogCXJldHVybiAhY3R4LT5m aWxlX3ByaXY7CiB9CiAKLXN0YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX2NvbnRleHQgKgotdG9f aW50ZWxfY29udGV4dChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAotCQkgY29uc3Qgc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQotewotCXJldHVybiAmY3R4LT5fX2VuZ2luZVtl bmdpbmUtPmlkXTsKLX0KLQotc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqCi1p bnRlbF9jb250ZXh0X3BpbihzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LCBzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCi17Ci0JcmV0dXJuIGVuZ2luZS0+Y29udGV4dF9waW4oZW5n aW5lLCBjdHgpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgX19pbnRlbF9jb250ZXh0X3Bpbihz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCi17Ci0JR0VNX0JVR19PTighY2UtPnBpbl9jb3VudCk7 Ci0JY2UtPnBpbl9jb3VudCsrOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfY29udGV4 dF91bnBpbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCi17Ci0JR0VNX0JVR19PTighY2UtPnBp bl9jb3VudCk7Ci0JaWYgKC0tY2UtPnBpbl9jb3VudCkKLQkJcmV0dXJuOwotCi0JR0VNX0JVR19P TighY2UtPm9wcyk7Ci0JY2UtPm9wcy0+dW5waW4oY2UpOwotfQotCiAvKiBpOTE1X2dlbV9jb250 ZXh0LmMgKi8KIGludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fY29udGV4dHNfaW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpOTE1X2dlbV9jb250ZXh0c19sb3N0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CkBAIC00MjIsMTAgKzE4NSw2IEBA IHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dlbV9jb250ZXh0X3B1dChzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4KQogCWtyZWZfcHV0KCZjdHgtPnJlZiwgaTkxNV9nZW1fY29udGV4dF9yZWxl YXNlKTsKIH0KIAotdm9pZCBpbnRlbF9jb250ZXh0X2luaXQoc3RydWN0IGludGVsX2NvbnRleHQg KmNlLAotCQkJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKLQkJCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSk7Ci0KIHN0cnVjdCBpOTE1X2x1dF9oYW5kbGUgKmk5MTVfbHV0X2hh bmRsZV9hbGxvYyh2b2lkKTsKIHZvaWQgaTkxNV9sdXRfaGFuZGxlX2ZyZWUoc3RydWN0IGk5MTVf bHV0X2hhbmRsZSAqbHV0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fY29udGV4dF90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29u dGV4dF90eXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTZl MjUxODQzOWEzCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dF90eXBlcy5oCkBAIC0wLDAgKzEsMTg3IEBACisvKgorICogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IE1JVAorICoKKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0 aW9uCisgKi8KKworI2lmbmRlZiBfX0k5MTVfR0VNX0NPTlRFWFRfVFlQRVNfSF9fCisjZGVmaW5l IF9fSTkxNV9HRU1fQ09OVEVYVF9UWVBFU19IX18KKworI2luY2x1ZGUgPGxpbnV4L2F0b21pYy5o PgorI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KKyNpbmNsdWRlIDxsaW51eC9sbGlzdC5oPgorI2lu Y2x1ZGUgPGxpbnV4L2tyZWYuaD4KKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgorI2luY2x1ZGUg PGxpbnV4L3JhZGl4LXRyZWUuaD4KKyNpbmNsdWRlIDxsaW51eC9yY3VwZGF0ZS5oPgorI2luY2x1 ZGUgPGxpbnV4L3R5cGVzLmg+CisKKyNpbmNsdWRlICJpOTE1X2dlbS5oIiAvKiBJOTE1X05VTV9F TkdJTkVTICovCisjaW5jbHVkZSAiaTkxNV9zY2hlZHVsZXIuaCIKKyNpbmNsdWRlICJpbnRlbF9j b250ZXh0X3R5cGVzLmgiCisKK3N0cnVjdCBwaWQ7CisKK3N0cnVjdCBkcm1faTkxNV9wcml2YXRl Oworc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZTsKK3N0cnVjdCBpOTE1X2h3X3BwZ3R0Owor c3RydWN0IGk5MTVfdGltZWxpbmU7CitzdHJ1Y3QgaW50ZWxfcmluZzsKKworLyoqCisgKiBzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAtIGNsaWVudCBzdGF0ZQorICoKKyAqIFRoZSBzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCByZXByZXNlbnRzIHRoZSBjb21iaW5lZCB2aWV3IG9mIHRoZSBkcml2ZXIg YW5kCisgKiBsb2dpY2FsIGhhcmR3YXJlIHN0YXRlIGZvciBhIHBhcnRpY3VsYXIgY2xpZW50Lgor ICovCitzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCB7CisJLyoqIGk5MTU6IGk5MTUgZGV2aWNlIGJh Y2twb2ludGVyICovCisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7CisKKwkvKiogZmls ZV9wcml2OiBvd25pbmcgZmlsZSBkZXNjcmlwdG9yICovCisJc3RydWN0IGRybV9pOTE1X2ZpbGVf cHJpdmF0ZSAqZmlsZV9wcml2OworCisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKmVuZ2luZXM7 CisKKwlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmU7CisKKwkvKioKKwkgKiBAcHBndHQ6 IHVuaXF1ZSBhZGRyZXNzIHNwYWNlIChHVFQpCisJICoKKwkgKiBJbiBmdWxsLXBwZ3R0IG1vZGUs IGVhY2ggY29udGV4dCBoYXMgaXRzIG93biBhZGRyZXNzIHNwYWNlIGVuc3VyaW5nCisJICogY29t cGxldGUgc2VwZXJhdGlvbiBvZiBvbmUgY2xpZW50IGZyb20gYWxsIG90aGVycy4KKwkgKgorCSAq IEluIG90aGVyIG1vZGVzLCB0aGlzIGlzIGEgTlVMTCBwb2ludGVyIHdpdGggdGhlIGV4cGVjdGF0 aW9uIHRoYXQKKwkgKiB0aGUgY2FsbGVyIHVzZXMgdGhlIHNoYXJlZCBnbG9iYWwgR1RULgorCSAq LworCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dDsKKworCS8qKgorCSAqIEBwaWQ6IHByb2Nl c3MgaWQgb2YgY3JlYXRvcgorCSAqCisJICogTm90ZSB0aGF0IHdobyBjcmVhdGVkIHRoZSBjb250 ZXh0IG1heSBub3QgYmUgdGhlIHByaW5jaXBsZSB1c2VyLAorCSAqIGFzIHRoZSBjb250ZXh0IG1h eSBiZSBzaGFyZWQgYWNyb3NzIGEgbG9jYWwgc29ja2V0LiBIb3dldmVyLAorCSAqIHRoYXQgc2hv dWxkIG9ubHkgYWZmZWN0IHRoZSBkZWZhdWx0IGNvbnRleHQsIGFsbCBjb250ZXh0cyBjcmVhdGVk CisJICogZXhwbGljaXRseSBieSB0aGUgY2xpZW50IGFyZSBleHBlY3RlZCB0byBiZSBpc29sYXRl ZC4KKwkgKi8KKwlzdHJ1Y3QgcGlkICpwaWQ7CisKKwkvKioKKwkgKiBAbmFtZTogYXJiaXRyYXJ5 IG5hbWUKKwkgKgorCSAqIEEgbmFtZSBpcyBjb25zdHJ1Y3RlZCBmb3IgdGhlIGNvbnRleHQgZnJv bSB0aGUgY3JlYXRvcidzIHByb2Nlc3MKKwkgKiBuYW1lLCBwaWQgYW5kIHVzZXIgaGFuZGxlIGlu IG9yZGVyIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoZQorCSAqIGNvbnRleHQgaW4gbWVzc2FnZXMu CisJICovCisJY29uc3QgY2hhciAqbmFtZTsKKworCS8qKiBsaW5rOiBwbGFjZSB3aXRoICZkcm1f aTkxNV9wcml2YXRlLmNvbnRleHRfbGlzdCAqLworCXN0cnVjdCBsaXN0X2hlYWQgbGluazsKKwlz dHJ1Y3QgbGxpc3Rfbm9kZSBmcmVlX2xpbms7CisKKwkvKioKKwkgKiBAcmVmOiByZWZlcmVuY2Ug Y291bnQKKwkgKgorCSAqIEEgcmVmZXJlbmNlIHRvIGEgY29udGV4dCBpcyBoZWxkIGJ5IGJvdGgg dGhlIGNsaWVudCB3aG8gY3JlYXRlZCBpdAorCSAqIGFuZCBvbiBlYWNoIHJlcXVlc3Qgc3VibWl0 dGVkIHRvIHRoZSBoYXJkd2FyZSB1c2luZyB0aGUgcmVxdWVzdAorCSAqICh0byBlbnN1cmUgdGhl IGhhcmR3YXJlIGhhcyBhY2Nlc3MgdG8gdGhlIHN0YXRlIHVudGlsIGl0IGhhcworCSAqIGZpbmlz aGVkIGFsbCBwZW5kaW5nIHdyaXRlcykuIFNlZSBpOTE1X2dlbV9jb250ZXh0X2dldCgpIGFuZAor CSAqIGk5MTVfZ2VtX2NvbnRleHRfcHV0KCkgZm9yIGFjY2Vzcy4KKwkgKi8KKwlzdHJ1Y3Qga3Jl ZiByZWY7CisKKwkvKioKKwkgKiBAcmN1OiByY3VfaGVhZCBmb3IgZGVmZXJyZWQgZnJlZWluZy4K KwkgKi8KKwlzdHJ1Y3QgcmN1X2hlYWQgcmN1OworCisJLyoqCisJICogQHVzZXJfZmxhZ3M6IHNt YWxsIHNldCBvZiBib29sZWFucyBjb250cm9sbGVkIGJ5IHRoZSB1c2VyCisJICovCisJdW5zaWdu ZWQgbG9uZyB1c2VyX2ZsYWdzOworI2RlZmluZSBVQ09OVEVYVF9OT19aRVJPTUFQCQkwCisjZGVm aW5lIFVDT05URVhUX05PX0VSUk9SX0NBUFRVUkUJMQorI2RlZmluZSBVQ09OVEVYVF9CQU5OQUJM RQkJMgorI2RlZmluZSBVQ09OVEVYVF9SRUNPVkVSQUJMRQkJMworCisJLyoqCisJICogQGZsYWdz OiBzbWFsbCBzZXQgb2YgYm9vbGVhbnMKKwkgKi8KKwl1bnNpZ25lZCBsb25nIGZsYWdzOworI2Rl ZmluZSBDT05URVhUX0JBTk5FRAkJCTAKKyNkZWZpbmUgQ09OVEVYVF9DTE9TRUQJCQkxCisjZGVm aW5lIENPTlRFWFRfRk9SQ0VfU0lOR0xFX1NVQk1JU1NJT04JMgorCisJdW5zaWduZWQgaW50IG5l bmdpbmU7CisKKwkvKioKKwkgKiBAaHdfaWQ6IC0gdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBj b250ZXh0CisJICoKKwkgKiBUaGUgaGFyZHdhcmUgbmVlZHMgdG8gdW5pcXVlbHkgaWRlbnRpZnkg dGhlIGNvbnRleHQgZm9yIGEgZmV3CisJICogZnVuY3Rpb25zIGxpa2UgZmF1bHQgcmVwb3J0aW5n LCBQQVNJRCwgc2NoZWR1bGluZy4gVGhlCisJICogJmRybV9pOTE1X3ByaXZhdGUuY29udGV4dF9o d19pZGEgaXMgdXNlZCB0byBhc3NpZ24gYSB1bnFpdWUKKwkgKiBpZCBmb3IgdGhlIGxpZmV0aW1l IG9mIHRoZSBjb250ZXh0LgorCSAqCisJICogQGh3X2lkX3Bpbl9jb3VudDogLSBudW1iZXIgb2Yg dGltZXMgdGhpcyBjb250ZXh0IGhhZCBiZWVuIHBpbm5lZAorCSAqIGZvciB1c2UgKHNob3VsZCBi ZSwgYXQgbW9zdCwgb25jZSBwZXIgZW5naW5lKS4KKwkgKgorCSAqIEBod19pZF9saW5rOiAtIGFs bCBjb250ZXh0cyB3aXRoIGFuIGFzc2lnbmVkIGlkIGFyZSB0cmFja2VkCisJICogZm9yIHBvc3Np YmxlIHJlcG9zc2Vzc2lvbi4KKwkgKi8KKwl1bnNpZ25lZCBpbnQgaHdfaWQ7CisJYXRvbWljX3Qg aHdfaWRfcGluX2NvdW50OworCXN0cnVjdCBsaXN0X2hlYWQgaHdfaWRfbGluazsKKworCXN0cnVj dCBsaXN0X2hlYWQgYWN0aXZlX2VuZ2luZXM7CisJc3RydWN0IG11dGV4IG11dGV4OworCisJLyoq CisJICogQHVzZXJfaGFuZGxlOiB1c2Vyc3BhY2UgaWRlbnRpZmllcgorCSAqCisJICogQSB1bmlx dWUgcGVyLWZpbGUgaWRlbnRpZmllciBpcyBnZW5lcmF0ZWQgZnJvbQorCSAqICZkcm1faTkxNV9m aWxlX3ByaXZhdGUuY29udGV4dHMuCisJICovCisJdTMyIHVzZXJfaGFuZGxlOworI2RlZmluZSBE RUZBVUxUX0NPTlRFWFRfSEFORExFIDAKKworCXN0cnVjdCBpOTE1X3NjaGVkX2F0dHIgc2NoZWQ7 CisKKwkvKiogZW5naW5lOiBwZXItZW5naW5lIGxvZ2ljYWwgSFcgc3RhdGUgKi8KKwlzdHJ1Y3Qg aW50ZWxfY29udGV4dCBfX2VuZ2luZVtJOTE1X05VTV9FTkdJTkVTXTsKKworCS8qKiByaW5nX3Np emU6IHNpemUgZm9yIGFsbG9jYXRpbmcgdGhlIHBlci1lbmdpbmUgcmluZyBidWZmZXIgKi8KKwl1 MzIgcmluZ19zaXplOworCS8qKiBkZXNjX3RlbXBsYXRlOiBpbnZhcmlhbnQgZmllbGRzIGZvciB0 aGUgSFcgY29udGV4dCBkZXNjcmlwdG9yICovCisJdTMyIGRlc2NfdGVtcGxhdGU7CisKKwkvKiog Z3VpbHR5X2NvdW50OiBIb3cgbWFueSB0aW1lcyB0aGlzIGNvbnRleHQgaGFzIGNhdXNlZCBhIEdQ VSBoYW5nLiAqLworCWF0b21pY190IGd1aWx0eV9jb3VudDsKKwkvKioKKwkgKiBAYWN0aXZlX2Nv dW50OiBIb3cgbWFueSB0aW1lcyB0aGlzIGNvbnRleHQgd2FzIGFjdGl2ZSBkdXJpbmcgYSBHUFUK KwkgKiBoYW5nLCBidXQgZGlkIG5vdCBjYXVzZSBpdC4KKwkgKi8KKwlhdG9taWNfdCBhY3RpdmVf Y291bnQ7CisKKwkvKioKKwkgKiBAaGFuZ190aW1lc3RhbXA6IFRoZSBsYXN0IHRpbWUocykgdGhp cyBjb250ZXh0IGNhdXNlZCBhIEdQVSBoYW5nCisJICovCisJdW5zaWduZWQgbG9uZyBoYW5nX3Rp bWVzdGFtcFsyXTsKKyNkZWZpbmUgQ09OVEVYVF9GQVNUX0hBTkdfSklGRklFUyAoMTIwICogSFop IC8qIDMgaGFuZ3Mgd2l0aGluIDEyMHM/IEJhbm5lZCEgKi8KKworCS8qKiByZW1hcF9zbGljZTog Qml0bWFzayBvZiBjYWNoZSBsaW5lcyB0aGF0IG5lZWQgcmVtYXBwaW5nICovCisJdTggcmVtYXBf c2xpY2U7CisKKwkvKiogaGFuZGxlc192bWE6IHJidHJlZSB0byBsb29rIHVwIG91ciBjb250ZXh0 IHNwZWNpZmljIG9iai92bWEgZm9yCisJICogdGhlIHVzZXIgaGFuZGxlLiAodXNlciBoYW5kbGVz IGFyZSBwZXIgZmQsIGJ1dCB0aGUgYmluZGluZyBpcworCSAqIHBlciB2bSwgd2hpY2ggbWF5IGJl IG9uZSBwZXIgY29udGV4dCBvciBzaGFyZWQgd2l0aCB0aGUgZ2xvYmFsIEdUVCkKKwkgKi8KKwlz dHJ1Y3QgcmFkaXhfdHJlZV9yb290IGhhbmRsZXNfdm1hOworCisJLyoqIGhhbmRsZXNfbGlzdDog cmV2ZXJzZSBsaXN0IG9mIGFsbCB0aGUgcmJ0cmVlIGVudHJpZXMgaW4gdXNlIGZvcgorCSAqIHRo aXMgY29udGV4dCwgd2hpY2ggYWxsb3dzIHVzIHRvIGZyZWUgYWxsIHRoZSBhbGxvY2F0aW9ucyBv bgorCSAqIGNvbnRleHQgY2xvc2UuCisJICovCisJc3RydWN0IGxpc3RfaGVhZCBoYW5kbGVzX2xp c3Q7Cit9OworCisjZW5kaWYgLyogX19JOTE1X0dFTV9DT05URVhUX1RZUEVTX0hfXyAqLwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5oCmluZGV4IDYwYjFkZmFkOTNlZC4uOTEyNmM4MjA2 NDkwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5oCkBAIC0yNSw3NiArMjUsMTAg QEAKICNpZm5kZWYgSTkxNV9USU1FTElORV9ICiAjZGVmaW5lIEk5MTVfVElNRUxJTkVfSAogCi0j aW5jbHVkZSA8bGludXgvbGlzdC5oPgotI2luY2x1ZGUgPGxpbnV4L2tyZWYuaD4KKyNpbmNsdWRl IDxsaW51eC9sb2NrZGVwLmg+CiAKLSNpbmNsdWRlICJpOTE1X2FjdGl2ZS5oIgotI2luY2x1ZGUg Imk5MTVfcmVxdWVzdC5oIgogI2luY2x1ZGUgImk5MTVfc3luY21hcC5oIgotI2luY2x1ZGUgImk5 MTVfdXRpbHMuaCIKLQotc3RydWN0IGk5MTVfdm1hOwotc3RydWN0IGk5MTVfdGltZWxpbmVfY2Fj aGVsaW5lOwotCi1zdHJ1Y3QgaTkxNV90aW1lbGluZSB7Ci0JdTY0IGZlbmNlX2NvbnRleHQ7Ci0J dTMyIHNlcW5vOwotCi0Jc3BpbmxvY2tfdCBsb2NrOwotI2RlZmluZSBUSU1FTElORV9DTElFTlQg MCAvKiBkZWZhdWx0IHN1YmNsYXNzICovCi0jZGVmaW5lIFRJTUVMSU5FX0VOR0lORSAxCi0KLQlz dHJ1Y3QgbXV0ZXggbXV0ZXg7IC8qIHByb3RlY3RzIHRoZSBmbG93IG9mIHJlcXVlc3RzICovCi0K LQl1bnNpZ25lZCBpbnQgcGluX2NvdW50OwotCWNvbnN0IHUzMiAqaHdzcF9zZXFubzsKLQlzdHJ1 Y3QgaTkxNV92bWEgKmh3c3BfZ2d0dDsKLQl1MzIgaHdzcF9vZmZzZXQ7Ci0KLQlzdHJ1Y3QgaTkx NV90aW1lbGluZV9jYWNoZWxpbmUgKmh3c3BfY2FjaGVsaW5lOwotCi0JYm9vbCBoYXNfaW5pdGlh bF9icmVhZGNydW1iOwotCi0JLyoqCi0JICogTGlzdCBvZiBicmVhZGNydW1icyBhc3NvY2lhdGVk IHdpdGggR1BVIHJlcXVlc3RzIGN1cnJlbnRseQotCSAqIG91dHN0YW5kaW5nLgotCSAqLwotCXN0 cnVjdCBsaXN0X2hlYWQgcmVxdWVzdHM7Ci0KLQkvKiBDb250YWlucyBhbiBSQ1UgZ3VhcmRlZCBw b2ludGVyIHRvIHRoZSBsYXN0IHJlcXVlc3QuIE5vIHJlZmVyZW5jZSBpcwotCSAqIGhlbGQgdG8g dGhlIHJlcXVlc3QsIHVzZXJzIG11c3QgY2FyZWZ1bGx5IGFjcXVpcmUgYSByZWZlcmVuY2UgdG8K LQkgKiB0aGUgcmVxdWVzdCB1c2luZyBpOTE1X2FjdGl2ZV9yZXF1ZXN0X2dldF9yZXF1ZXN0X3Jj dSgpLCBvciBob2xkIHRoZQotCSAqIHN0cnVjdF9tdXRleC4KLQkgKi8KLQlzdHJ1Y3QgaTkxNV9h Y3RpdmVfcmVxdWVzdCBsYXN0X3JlcXVlc3Q7Ci0KLQkvKioKLQkgKiBXZSB0cmFjayB0aGUgbW9z dCByZWNlbnQgc2Vxbm8gdGhhdCB3ZSB3YWl0IG9uIGluIGV2ZXJ5IGNvbnRleHQgc28KLQkgKiB0 aGF0IHdlIG9ubHkgaGF2ZSB0byBlbWl0IGEgbmV3IGF3YWl0IGFuZCBkZXBlbmRlbmN5IG9uIGEg bW9yZQotCSAqIHJlY2VudCBzeW5jIHBvaW50LiBBcyB0aGUgY29udGV4dHMgbWF5IGJlIGV4ZWN1 dGVkIG91dC1vZi1vcmRlciwgd2UKLQkgKiBoYXZlIHRvIHRyYWNrIGVhY2ggaW5kaXZpZHVhbGx5 IGFuZCBjYW4gbm90IHJlbHkgb24gYW4gYWJzb2x1dGUKLQkgKiBnbG9iYWxfc2Vxbm8uIFdoZW4g d2Uga25vdyB0aGF0IGFsbCB0cmFja2VkIGZlbmNlcyBhcmUgY29tcGxldGVkCi0JICogKGkuZS4g d2hlbiB0aGUgZHJpdmVyIGlzIGlkbGUpLCB3ZSBrbm93IHRoYXQgdGhlIHN5bmNtYXAgaXMKLQkg KiByZWR1bmRhbnQgYW5kIHdlIGNhbiBkaXNjYXJkIGl0IHdpdGhvdXQgbG9zcyBvZiBnZW5lcmFs aXR5LgotCSAqLwotCXN0cnVjdCBpOTE1X3N5bmNtYXAgKnN5bmM7Ci0KLQkvKioKLQkgKiBCYXJy aWVyIHByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIHNlcmlhbGl6ZSBvcmRlcmluZyBiZXR3ZWVuIGRp ZmZlcmVudAotCSAqIHRpbWVsaW5lcy4KLQkgKgotCSAqIFVzZXJzIGNhbiBjYWxsIGk5MTVfdGlt ZWxpbmVfc2V0X2JhcnJpZXIgd2hpY2ggd2lsbCBtYWtlIGFsbAotCSAqIHN1YnNlcXVlbnQgc3Vi bWlzc2lvbnMgdG8gdGhpcyB0aW1lbGluZSBiZSBleGVjdXRlZCBvbmx5IGFmdGVyIHRoZQotCSAq IGJhcnJpZXIgaGFzIGJlZW4gY29tcGxldGVkLgotCSAqLwotCXN0cnVjdCBpOTE1X2FjdGl2ZV9y ZXF1ZXN0IGJhcnJpZXI7Ci0KLQlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7Ci0JY29uc3QgY2hhciAq bmFtZTsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKLQotCXN0cnVjdCBrcmVmIGty ZWY7Ci19OworI2luY2x1ZGUgImk5MTVfdGltZWxpbmVfdHlwZXMuaCIKIAogaW50IGk5MTVfdGlt ZWxpbmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJICAgICAgIHN0cnVj dCBpOTE1X3RpbWVsaW5lICp0bCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdGltZWxpbmVfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmVf dHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhmZjE0NmRj MDViYQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxp bmVfdHlwZXMuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IE1JVAorICoKKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBvcmF0aW9uCisgKi8K KworI2lmbmRlZiBfX0k5MTVfVElNRUxJTkVfVFlQRVNfSF9fCisjZGVmaW5lIF9fSTkxNV9USU1F TElORV9UWVBFU19IX18KKworI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KKyNpbmNsdWRlIDxsaW51 eC9rcmVmLmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworI2luY2x1ZGUgImk5MTVfYWN0 aXZlLmgiCisKK3N0cnVjdCBkcm1faTkxNV9wcml2YXRlOworc3RydWN0IGk5MTVfdm1hOworc3Ry dWN0IGk5MTVfdGltZWxpbmVfY2FjaGVsaW5lOworc3RydWN0IGk5MTVfc3luY21hcDsKKworc3Ry dWN0IGk5MTVfdGltZWxpbmUgeworCXU2NCBmZW5jZV9jb250ZXh0OworCXUzMiBzZXFubzsKKwor CXNwaW5sb2NrX3QgbG9jazsKKyNkZWZpbmUgVElNRUxJTkVfQ0xJRU5UIDAgLyogZGVmYXVsdCBz dWJjbGFzcyAqLworI2RlZmluZSBUSU1FTElORV9FTkdJTkUgMQorCXN0cnVjdCBtdXRleCBtdXRl eDsgLyogcHJvdGVjdHMgdGhlIGZsb3cgb2YgcmVxdWVzdHMgKi8KKworCXVuc2lnbmVkIGludCBw aW5fY291bnQ7CisJY29uc3QgdTMyICpod3NwX3NlcW5vOworCXN0cnVjdCBpOTE1X3ZtYSAqaHdz cF9nZ3R0OworCXUzMiBod3NwX29mZnNldDsKKworCXN0cnVjdCBpOTE1X3RpbWVsaW5lX2NhY2hl bGluZSAqaHdzcF9jYWNoZWxpbmU7CisKKwlib29sIGhhc19pbml0aWFsX2JyZWFkY3J1bWI7CisK KwkvKioKKwkgKiBMaXN0IG9mIGJyZWFkY3J1bWJzIGFzc29jaWF0ZWQgd2l0aCBHUFUgcmVxdWVz dHMgY3VycmVudGx5CisJICogb3V0c3RhbmRpbmcuCisJICovCisJc3RydWN0IGxpc3RfaGVhZCBy ZXF1ZXN0czsKKworCS8qIENvbnRhaW5zIGFuIFJDVSBndWFyZGVkIHBvaW50ZXIgdG8gdGhlIGxh c3QgcmVxdWVzdC4gTm8gcmVmZXJlbmNlIGlzCisJICogaGVsZCB0byB0aGUgcmVxdWVzdCwgdXNl cnMgbXVzdCBjYXJlZnVsbHkgYWNxdWlyZSBhIHJlZmVyZW5jZSB0bworCSAqIHRoZSByZXF1ZXN0 IHVzaW5nIGk5MTVfYWN0aXZlX3JlcXVlc3RfZ2V0X3JlcXVlc3RfcmN1KCksIG9yIGhvbGQgdGhl CisJICogc3RydWN0X211dGV4LgorCSAqLworCXN0cnVjdCBpOTE1X2FjdGl2ZV9yZXF1ZXN0IGxh c3RfcmVxdWVzdDsKKworCS8qKgorCSAqIFdlIHRyYWNrIHRoZSBtb3N0IHJlY2VudCBzZXFubyB0 aGF0IHdlIHdhaXQgb24gaW4gZXZlcnkgY29udGV4dCBzbworCSAqIHRoYXQgd2Ugb25seSBoYXZl IHRvIGVtaXQgYSBuZXcgYXdhaXQgYW5kIGRlcGVuZGVuY3kgb24gYSBtb3JlCisJICogcmVjZW50 IHN5bmMgcG9pbnQuIEFzIHRoZSBjb250ZXh0cyBtYXkgYmUgZXhlY3V0ZWQgb3V0LW9mLW9yZGVy LCB3ZQorCSAqIGhhdmUgdG8gdHJhY2sgZWFjaCBpbmRpdmlkdWFsbHkgYW5kIGNhbiBub3QgcmVs eSBvbiBhbiBhYnNvbHV0ZQorCSAqIGdsb2JhbF9zZXFuby4gV2hlbiB3ZSBrbm93IHRoYXQgYWxs IHRyYWNrZWQgZmVuY2VzIGFyZSBjb21wbGV0ZWQKKwkgKiAoaS5lLiB3aGVuIHRoZSBkcml2ZXIg aXMgaWRsZSksIHdlIGtub3cgdGhhdCB0aGUgc3luY21hcCBpcworCSAqIHJlZHVuZGFudCBhbmQg d2UgY2FuIGRpc2NhcmQgaXQgd2l0aG91dCBsb3NzIG9mIGdlbmVyYWxpdHkuCisJICovCisJc3Ry dWN0IGk5MTVfc3luY21hcCAqc3luYzsKKworCS8qKgorCSAqIEJhcnJpZXIgcHJvdmlkZXMgdGhl IGFiaWxpdHkgdG8gc2VyaWFsaXplIG9yZGVyaW5nIGJldHdlZW4gZGlmZmVyZW50CisJICogdGlt ZWxpbmVzLgorCSAqCisJICogVXNlcnMgY2FuIGNhbGwgaTkxNV90aW1lbGluZV9zZXRfYmFycmll ciB3aGljaCB3aWxsIG1ha2UgYWxsCisJICogc3Vic2VxdWVudCBzdWJtaXNzaW9ucyB0byB0aGlz IHRpbWVsaW5lIGJlIGV4ZWN1dGVkIG9ubHkgYWZ0ZXIgdGhlCisJICogYmFycmllciBoYXMgYmVl biBjb21wbGV0ZWQuCisJICovCisJc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3QgYmFycmllcjsK KworCXN0cnVjdCBsaXN0X2hlYWQgbGluazsKKwljb25zdCBjaGFyICpuYW1lOworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1OworCisJc3RydWN0IGtyZWYga3JlZjsKK307CisKKyNlbmRp ZiAvKiBfX0k5MTVfVElNRUxJTkVfVFlQRVNfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jb250ZXh0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9j b250ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kZDk0NzY5 MmJiMGIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb250 ZXh0LmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBN SVQKKyAqCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNp Zm5kZWYgX19JTlRFTF9DT05URVhUX0hfXworI2RlZmluZSBfX0lOVEVMX0NPTlRFWFRfSF9fCisK KyNpbmNsdWRlICJpOTE1X2dlbV9jb250ZXh0X3R5cGVzLmgiCisjaW5jbHVkZSAiaW50ZWxfY29u dGV4dF90eXBlcy5oIgorI2luY2x1ZGUgImludGVsX2VuZ2luZV90eXBlcy5oIgorCit2b2lkIGlu dGVsX2NvbnRleHRfaW5pdChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCisJCQlzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4LAorCQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsK Kworc3RhdGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqCit0b19pbnRlbF9jb250ZXh0 KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCit7CisJcmV0dXJuICZjdHgtPl9fZW5naW5lW2VuZ2luZS0+aWRdOwor fQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBpbnRlbF9jb250ZXh0ICoKK2ludGVsX2NvbnRleHRf cGluKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKK3sKKwlyZXR1cm4gZW5naW5lLT5jb250ZXh0X3BpbihlbmdpbmUsIGN0eCk7Cit9 CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2ludGVsX2NvbnRleHRfcGluKHN0cnVjdCBpbnRlbF9j b250ZXh0ICpjZSkKK3sKKwlHRU1fQlVHX09OKCFjZS0+cGluX2NvdW50KTsKKwljZS0+cGluX2Nv dW50Kys7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9jb250ZXh0X3VucGluKHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSkKK3sKKwlHRU1fQlVHX09OKCFjZS0+cGluX2NvdW50KTsKKwlp ZiAoLS1jZS0+cGluX2NvdW50KQorCQlyZXR1cm47CisKKwlHRU1fQlVHX09OKCFjZS0+b3BzKTsK KwljZS0+b3BzLT51bnBpbihjZSk7Cit9CisKKyNlbmRpZiAvKiBfX0lOVEVMX0NPTlRFWFRfSF9f ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb250ZXh0X3R5cGVz LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb250ZXh0X3R5cGVzLmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xNmUxMzA2ZTk1OTUKLS0tIC9kZXYvbnVs bAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb250ZXh0X3R5cGVzLmgKQEAgLTAs MCArMSw2MCBAQAorLyoKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKyAqCisgKiBD b3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYgX19JTlRF TF9DT05URVhUX1RZUEVTX18KKyNkZWZpbmUgX19JTlRFTF9DT05URVhUX1RZUEVTX18KKworI2lu Y2x1ZGUgPGxpbnV4L2xpc3QuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCisjaW5jbHVk ZSAiaTkxNV9hY3RpdmVfdHlwZXMuaCIKKworc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQ7CitzdHJ1 Y3QgaTkxNV92bWE7CitzdHJ1Y3QgaW50ZWxfY29udGV4dDsKK3N0cnVjdCBpbnRlbF9yaW5nOwor CitzdHJ1Y3QgaW50ZWxfY29udGV4dF9vcHMgeworCXZvaWQgKCp1bnBpbikoc3RydWN0IGludGVs X2NvbnRleHQgKmNlKTsKKwl2b2lkICgqZGVzdHJveSkoc3RydWN0IGludGVsX2NvbnRleHQgKmNl KTsKK307CisKKy8qCisgKiBQb3dlcmdhdGluZyBjb25maWd1cmF0aW9uIGZvciBhIHBhcnRpY3Vs YXIgKGNvbnRleHQsZW5naW5lKS4KKyAqLworc3RydWN0IGludGVsX3NzZXUgeworCXU4IHNsaWNl X21hc2s7CisJdTggc3Vic2xpY2VfbWFzazsKKwl1OCBtaW5fZXVzX3Blcl9zdWJzbGljZTsKKwl1 OCBtYXhfZXVzX3Blcl9zdWJzbGljZTsKK307CisKK3N0cnVjdCBpbnRlbF9jb250ZXh0IHsKKwlz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqZ2VtX2NvbnRleHQ7CisJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmFjdGl2ZTsKKwlzdHJ1Y3Qg bGlzdF9oZWFkIGFjdGl2ZV9saW5rOworCXN0cnVjdCBsaXN0X2hlYWQgc2lnbmFsX2xpbms7CisJ c3RydWN0IGxpc3RfaGVhZCBzaWduYWxzOworCXN0cnVjdCBpOTE1X3ZtYSAqc3RhdGU7CisJc3Ry dWN0IGludGVsX3JpbmcgKnJpbmc7CisJdTMyICpscmNfcmVnX3N0YXRlOworCXU2NCBscmNfZGVz YzsKKwlpbnQgcGluX2NvdW50OworCisJLyoqCisJICogYWN0aXZlX3RyYWNrZXI6IEFjdGl2ZSB0 cmFja2VyIGZvciB0aGUgZXh0ZXJuYWwgcnEgYWN0aXZpdHkKKwkgKiBvbiB0aGlzIGludGVsX2Nv bnRleHQgb2JqZWN0LgorCSAqLworCXN0cnVjdCBpOTE1X2FjdGl2ZV9yZXF1ZXN0IGFjdGl2ZV90 cmFja2VyOworCisJY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHRfb3BzICpvcHM7CisKKwkvKiog c3NldTogQ29udHJvbCBldS9zbGljZSBwYXJ0aXRpb25pbmcgKi8KKwlzdHJ1Y3QgaW50ZWxfc3Nl dSBzc2V1OworfTsKKworI2VuZGlmIC8qIF9fSU5URUxfQ09OVEVYVF9UWVBFU19fICovCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfdHlwZXMuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV90eXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uZjdjZWRhMzM0MTY5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX3R5cGVzLmgKQEAgLTAsMCArMSw1MjEgQEAK Ky8qCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisgKgorICogQ29weXJpZ2h0IMKp IDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaWZuZGVmIF9fSU5URUxfRU5HSU5FX1RZ UEVTX18KKyNkZWZpbmUgX19JTlRFTF9FTkdJTkVfVFlQRVNfXworCisjaW5jbHVkZSA8bGludXgv aGFzaHRhYmxlLmg+CisjaW5jbHVkZSA8bGludXgvaXJxX3dvcmsuaD4KKyNpbmNsdWRlIDxsaW51 eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKworI2luY2x1ZGUgImk5MTVfdGlt ZWxpbmVfdHlwZXMuaCIKKyNpbmNsdWRlICJpbnRlbF9kZXZpY2VfaW5mby5oIgorI2luY2x1ZGUg ImludGVsX3dvcmthcm91bmRzX3R5cGVzLmgiCisKKyNpbmNsdWRlICJpOTE1X2dlbV9iYXRjaF9w b29sLmgiCisjaW5jbHVkZSAiaTkxNV9wbXUuaCIKKworI2RlZmluZSBJOTE1X01BWF9TTElDRVMJ MworI2RlZmluZSBJOTE1X01BWF9TVUJTTElDRVMgOAorCisjZGVmaW5lIEk5MTVfQ01EX0hBU0hf T1JERVIgOQorCitzdHJ1Y3QgZHJtX2k5MTVfcmVnX3RhYmxlOworc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQ7CitzdHJ1Y3QgaTkxNV9yZXF1ZXN0Oworc3RydWN0IGk5MTVfc2NoZWRfYXR0cjsKKwor c3RydWN0IGludGVsX2h3X3N0YXR1c19wYWdlIHsKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKKwl1 MzIgKmFkZHI7Cit9OworCitzdHJ1Y3QgaW50ZWxfaW5zdGRvbmUgeworCXUzMiBpbnN0ZG9uZTsK KwkvKiBUaGUgZm9sbG93aW5nIGV4aXN0IG9ubHkgaW4gdGhlIFJDUyBlbmdpbmUgKi8KKwl1MzIg c2xpY2VfY29tbW9uOworCXUzMiBzYW1wbGVyW0k5MTVfTUFYX1NMSUNFU11bSTkxNV9NQVhfU1VC U0xJQ0VTXTsKKwl1MzIgcm93W0k5MTVfTUFYX1NMSUNFU11bSTkxNV9NQVhfU1VCU0xJQ0VTXTsK K307CisKK3N0cnVjdCBpbnRlbF9lbmdpbmVfaGFuZ2NoZWNrIHsKKwl1NjQgYWN0aGQ7CisJdTMy IGxhc3Rfc2Vxbm87CisJdTMyIG5leHRfc2Vxbm87CisJdW5zaWduZWQgbG9uZyBhY3Rpb25fdGlt ZXN0YW1wOworCXN0cnVjdCBpbnRlbF9pbnN0ZG9uZSBpbnN0ZG9uZTsKK307CisKK3N0cnVjdCBp bnRlbF9yaW5nIHsKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKKwl2b2lkICp2YWRkcjsKKworCXN0 cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZTsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHJlcXVlc3Rf bGlzdDsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV9saW5rOworCisJdTMyIGhlYWQ7CisJdTMy IHRhaWw7CisJdTMyIGVtaXQ7CisKKwl1MzIgc3BhY2U7CisJdTMyIHNpemU7CisJdTMyIGVmZmVj dGl2ZV9zaXplOworfTsKKworLyoKKyAqIHdlIHVzZSBhIHNpbmdsZSBwYWdlIHRvIGxvYWQgY3R4 IHdvcmthcm91bmRzIHNvIGFsbCBvZiB0aGVzZQorICogdmFsdWVzIGFyZSByZWZlcnJlZCBpbiB0 ZXJtcyBvZiBkd29yZHMKKyAqCisgKiBzdHJ1Y3QgaTkxNV93YV9jdHhfYmI6CisgKiAgb2Zmc2V0 OiBzcGVjaWZpZXMgYmF0Y2ggc3RhcnRpbmcgcG9zaXRpb24sIGFsc28gaGVscGZ1bCBpbiBjYXNl CisgKiAgICBpZiB3ZSB3YW50IHRvIGhhdmUgbXVsdGlwbGUgYmF0Y2hlcyBhdCBkaWZmZXJlbnQg b2Zmc2V0cyBiYXNlZCBvbgorICogICAgc29tZSBjcml0ZXJpYS4gSXQgaXMgbm90IGEgcmVxdWly ZW1lbnQgYXQgdGhlIG1vbWVudCBidXQgcHJvdmlkZXMKKyAqICAgIGFuIG9wdGlvbiBmb3IgZnV0 dXJlIHVzZS4KKyAqICBzaXplOiBzaXplIG9mIHRoZSBiYXRjaCBpbiBEV09SRFMKKyAqLworc3Ry dWN0IGk5MTVfY3R4X3dvcmthcm91bmRzIHsKKwlzdHJ1Y3QgaTkxNV93YV9jdHhfYmIgeworCQl1 MzIgb2Zmc2V0OworCQl1MzIgc2l6ZTsKKwl9IGluZGlyZWN0X2N0eCwgcGVyX2N0eDsKKwlzdHJ1 Y3QgaTkxNV92bWEgKnZtYTsKK307CisKKyNkZWZpbmUgSTkxNV9NQVhfVkNTCTQKKyNkZWZpbmUg STkxNV9NQVhfVkVDUwkyCisKKy8qCisgKiBFbmdpbmUgSURzIGRlZmluaXRpb25zLgorICogS2Vl cCBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgdHlwZSBlbmdpbmUgdG9nZXRoZXIuCisgKi8KK2VudW0g aW50ZWxfZW5naW5lX2lkIHsKKwlSQ1MwID0gMCwKKwlCQ1MwLAorCVZDUzAsCisJVkNTMSwKKwlW Q1MyLAorCVZDUzMsCisjZGVmaW5lIF9WQ1MobikgKFZDUzAgKyAobikpCisJVkVDUzAsCisJVkVD UzEKKyNkZWZpbmUgX1ZFQ1MobikgKFZFQ1MwICsgKG4pKQorfTsKKworc3RydWN0IHN0X3ByZWVt cHRfaGFuZyB7CisJc3RydWN0IGNvbXBsZXRpb24gY29tcGxldGlvbjsKKwl1bnNpZ25lZCBpbnQg Y291bnQ7CisJYm9vbCBpbmplY3RfaGFuZzsKK307CisKKy8qKgorICogc3RydWN0IGludGVsX2Vu Z2luZV9leGVjbGlzdHMgLSBleGVjbGlzdCBzdWJtaXNzaW9uIHF1ZXVlIGFuZCBwb3J0IHN0YXRl CisgKgorICogVGhlIHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzIHJlcHJlc2VudHMgdGhl IGNvbWJpbmVkIGxvZ2ljYWwgc3RhdGUgb2YKKyAqIGRyaXZlciBhbmQgdGhlIGhhcmR3YXJlIHN0 YXRlIGZvciBleGVjbGlzdCBtb2RlIG9mIHN1Ym1pc3Npb24uCisgKi8KK3N0cnVjdCBpbnRlbF9l bmdpbmVfZXhlY2xpc3RzIHsKKwkvKioKKwkgKiBAdGFza2xldDogc29mdGlycSB0YXNrbGV0IGZv ciBib3R0b20gaGFuZGxlcgorCSAqLworCXN0cnVjdCB0YXNrbGV0X3N0cnVjdCB0YXNrbGV0Owor CisJLyoqCisJICogQGRlZmF1bHRfcHJpb2xpc3Q6IHByaW9yaXR5IGxpc3QgZm9yIEk5MTVfUFJJ T1JJVFlfTk9STUFMCisJICovCisJc3RydWN0IGk5MTVfcHJpb2xpc3QgZGVmYXVsdF9wcmlvbGlz dDsKKworCS8qKgorCSAqIEBub19wcmlvbGlzdDogcHJpb3JpdHkgbGlzdHMgZGlzYWJsZWQKKwkg Ki8KKwlib29sIG5vX3ByaW9saXN0OworCisJLyoqCisJICogQHN1Ym1pdF9yZWc6IGdlbi1zcGVj aWZpYyBleGVjbGlzdCBzdWJtaXNzaW9uIHJlZ2lzdGVyCisJICogc2V0IHRvIHRoZSBFeGVjTGlz dCBTdWJtaXNzaW9uIFBvcnQgKGVsc3ApIHJlZ2lzdGVyIHByZS1HZW4xMSBhbmQgdG8KKwkgKiB0 aGUgRXhlY0xpc3QgU3VibWlzc2lvbiBRdWV1ZSBDb250ZW50cyByZWdpc3RlciBhcnJheSBmb3Ig R2VuMTErCisJICovCisJdTMyIF9faW9tZW0gKnN1Ym1pdF9yZWc7CisKKwkvKioKKwkgKiBAY3Ry bF9yZWc6IHRoZSBlbmhhbmNlZCBleGVjbGlzdHMgY29udHJvbCByZWdpc3RlciwgdXNlZCB0byBs b2FkIHRoZQorCSAqIHN1Ym1pdCBxdWV1ZSBvbiB0aGUgSFcgYW5kIHRvIHJlcXVlc3QgcHJlZW1w dGlvbnMgdG8gaWRsZQorCSAqLworCXUzMiBfX2lvbWVtICpjdHJsX3JlZzsKKworCS8qKgorCSAq IEBwb3J0OiBleGVjbGlzdCBwb3J0IHN0YXRlcworCSAqCisJICogRm9yIGVhY2ggaGFyZHdhcmUg RUxTUCAoRXhlY0xpc3QgU3VibWlzc2lvbiBQb3J0KSB3ZSBrZWVwCisJICogdHJhY2sgb2YgdGhl IGxhc3QgcmVxdWVzdCBhbmQgdGhlIG51bWJlciBvZiB0aW1lcyB3ZSBzdWJtaXR0ZWQKKwkgKiB0 aGF0IHBvcnQgdG8gaHcuIFdlIHRoZW4gY291bnQgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgaHcg cmVwb3J0cworCSAqIGEgY29udGV4dCBjb21wbGV0aW9uIG9yIHByZWVtcHRpb24uIEFzIG9ubHkg b25lIGNvbnRleHQgY2FuCisJICogYmUgYWN0aXZlIG9uIGh3LCB3ZSBsaW1pdCByZXN1Ym1pc3Np b24gb2YgY29udGV4dCB0byBwb3J0WzBdLiBUaGlzCisJICogaXMgY2FsbGVkIExpdGUgUmVzdG9y ZSwgb2YgdGhlIGNvbnRleHQuCisJICovCisJc3RydWN0IGV4ZWNsaXN0X3BvcnQgeworCQkvKioK KwkJICogQHJlcXVlc3RfY291bnQ6IGNvbWJpbmVkIHJlcXVlc3QgYW5kIHN1Ym1pc3Npb24gY291 bnQKKwkJICovCisJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3RfY291bnQ7CisjZGVmaW5l IEVYRUNMSVNUX0NPVU5UX0JJVFMgMgorI2RlZmluZSBwb3J0X3JlcXVlc3QocCkgcHRyX21hc2tf Yml0cygocCktPnJlcXVlc3RfY291bnQsIEVYRUNMSVNUX0NPVU5UX0JJVFMpCisjZGVmaW5lIHBv cnRfY291bnQocCkgcHRyX3VubWFza19iaXRzKChwKS0+cmVxdWVzdF9jb3VudCwgRVhFQ0xJU1Rf Q09VTlRfQklUUykKKyNkZWZpbmUgcG9ydF9wYWNrKHJxLCBjb3VudCkgcHRyX3BhY2tfYml0cyhy cSwgY291bnQsIEVYRUNMSVNUX0NPVU5UX0JJVFMpCisjZGVmaW5lIHBvcnRfdW5wYWNrKHAsIGNv dW50KSBwdHJfdW5wYWNrX2JpdHMoKHApLT5yZXF1ZXN0X2NvdW50LCBjb3VudCwgRVhFQ0xJU1Rf Q09VTlRfQklUUykKKyNkZWZpbmUgcG9ydF9zZXQocCwgcGFja2VkKSAoKHApLT5yZXF1ZXN0X2Nv dW50ID0gKHBhY2tlZCkpCisjZGVmaW5lIHBvcnRfaXNzZXQocCkgKChwKS0+cmVxdWVzdF9jb3Vu dCkKKyNkZWZpbmUgcG9ydF9pbmRleChwLCBleGVjbGlzdHMpICgocCkgLSAoZXhlY2xpc3RzKS0+ cG9ydCkKKworCQkvKioKKwkJICogQGNvbnRleHRfaWQ6IGNvbnRleHQgSUQgZm9yIHBvcnQKKwkJ ICovCisJCUdFTV9ERUJVR19ERUNMKHUzMiBjb250ZXh0X2lkKTsKKworI2RlZmluZSBFWEVDTElT VF9NQVhfUE9SVFMgMgorCX0gcG9ydFtFWEVDTElTVF9NQVhfUE9SVFNdOworCisJLyoqCisJICog QGFjdGl2ZTogaXMgdGhlIEhXIGFjdGl2ZT8gV2UgY29uc2lkZXIgdGhlIEhXIGFzIGFjdGl2ZSBh ZnRlcgorCSAqIHN1Ym1pdHRpbmcgYW55IGNvbnRleHQgZm9yIGV4ZWN1dGlvbiBhbmQgdW50aWwg d2UgaGF2ZSBzZWVuIHRoZQorCSAqIGxhc3QgY29udGV4dCBjb21wbGV0aW9uIGV2ZW50LiBBZnRl ciB0aGF0LCB3ZSBkbyBub3QgZXhwZWN0IGFueQorCSAqIG1vcmUgZXZlbnRzIHVudGlsIHdlIHN1 Ym1pdCwgYW5kIHNvIGNhbiBwYXJrIHRoZSBIVy4KKwkgKgorCSAqIEFzIHdlIGhhdmUgYSBzbWFs bCBudW1iZXIgb2YgZGlmZmVyZW50IHNvdXJjZXMgZnJvbSB3aGljaCB3ZSBmZWVkCisJICogdGhl IEhXLCB3ZSB0cmFjayB0aGUgc3RhdGUgb2YgZWFjaCBpbnNpZGUgYSBzaW5nbGUgYml0ZmllbGQu CisJICovCisJdW5zaWduZWQgaW50IGFjdGl2ZTsKKyNkZWZpbmUgRVhFQ0xJU1RTX0FDVElWRV9V U0VSIDAKKyNkZWZpbmUgRVhFQ0xJU1RTX0FDVElWRV9QUkVFTVBUIDEKKyNkZWZpbmUgRVhFQ0xJ U1RTX0FDVElWRV9IV0FDSyAyCisKKwkvKioKKwkgKiBAcG9ydF9tYXNrOiBudW1iZXIgb2YgZXhl Y2xpc3QgcG9ydHMgLSAxCisJICovCisJdW5zaWduZWQgaW50IHBvcnRfbWFzazsKKworCS8qKgor CSAqIEBxdWV1ZV9wcmlvcml0eV9oaW50OiBIaWdoZXN0IHBlbmRpbmcgcHJpb3JpdHkuCisJICoK KwkgKiBXaGVuIHdlIGFkZCByZXF1ZXN0cyBpbnRvIHRoZSBxdWV1ZSwgb3IgYWRqdXN0IHRoZSBw cmlvcml0eSBvZgorCSAqIGV4ZWN1dGluZyByZXF1ZXN0cywgd2UgY29tcHV0ZSB0aGUgbWF4aW11 bSBwcmlvcml0eSBvZiB0aG9zZQorCSAqIHBlbmRpbmcgcmVxdWVzdHMuIFdlIGNhbiB0aGVuIHVz ZSB0aGlzIHZhbHVlIHRvIGRldGVybWluZSBpZgorCSAqIHdlIG5lZWQgdG8gcHJlZW1wdCB0aGUg ZXhlY3V0aW5nIHJlcXVlc3RzIHRvIHNlcnZpY2UgdGhlIHF1ZXVlLgorCSAqIEhvd2V2ZXIsIHNp bmNlIHRoZSB3ZSBtYXkgaGF2ZSByZWNvcmRlZCB0aGUgcHJpb3JpdHkgb2YgYW4gaW5mbGlnaHQK KwkgKiByZXF1ZXN0IHdlIHdhbnRlZCB0byBwcmVlbXB0IGJ1dCBzaW5jZSBjb21wbGV0ZWQsIGF0 IHRoZSB0aW1lIG9mCisJICogZGVxdWV1aW5nIHRoZSBwcmlvcml0eSBoaW50IG1heSBubyBsb25n ZXIgbWF5IG1hdGNoIHRoZSBoaWdoZXN0CisJICogYXZhaWxhYmxlIHJlcXVlc3QgcHJpb3JpdHku CisJICovCisJaW50IHF1ZXVlX3ByaW9yaXR5X2hpbnQ7CisKKwkvKioKKwkgKiBAcXVldWU6IHF1 ZXVlIG9mIHJlcXVlc3RzLCBpbiBwcmlvcml0eSBsaXN0cworCSAqLworCXN0cnVjdCByYl9yb290 X2NhY2hlZCBxdWV1ZTsKKworCS8qKgorCSAqIEBjc2Jfd3JpdGU6IGNvbnRyb2wgcmVnaXN0ZXIg Zm9yIENvbnRleHQgU3dpdGNoIGJ1ZmZlcgorCSAqCisJICogTm90ZSB0aGlzIHJlZ2lzdGVyIG1h eSBiZSBlaXRoZXIgbW1pbyBvciBIV1NQIHNoYWRvdy4KKwkgKi8KKwl1MzIgKmNzYl93cml0ZTsK KworCS8qKgorCSAqIEBjc2Jfc3RhdHVzOiBzdGF0dXMgYXJyYXkgZm9yIENvbnRleHQgU3dpdGNo IGJ1ZmZlcgorCSAqCisJICogTm90ZSB0aGVzZSByZWdpc3RlciBtYXkgYmUgZWl0aGVyIG1taW8g b3IgSFdTUCBzaGFkb3cuCisJICovCisJdTMyICpjc2Jfc3RhdHVzOworCisJLyoqCisJICogQHBy ZWVtcHRfY29tcGxldGVfc3RhdHVzOiBleHBlY3RlZCBDU0IgdXBvbiBjb21wbGV0aW5nIHByZWVt cHRpb24KKwkgKi8KKwl1MzIgcHJlZW1wdF9jb21wbGV0ZV9zdGF0dXM7CisKKwkvKioKKwkgKiBA Y3NiX2hlYWQ6IGNvbnRleHQgc3RhdHVzIGJ1ZmZlciBoZWFkCisJICovCisJdTggY3NiX2hlYWQ7 CisKKwlJOTE1X1NFTEZURVNUX0RFQ0xBUkUoc3RydWN0IHN0X3ByZWVtcHRfaGFuZyBwcmVlbXB0 X2hhbmc7KQorfTsKKworI2RlZmluZSBJTlRFTF9FTkdJTkVfQ1NfTUFYX05BTUUgOAorCitzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzIHsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKKwlj aGFyIG5hbWVbSU5URUxfRU5HSU5FX0NTX01BWF9OQU1FXTsKKworCWVudW0gaW50ZWxfZW5naW5l X2lkIGlkOworCXVuc2lnbmVkIGludCBod19pZDsKKwl1bnNpZ25lZCBpbnQgZ3VjX2lkOworCWlu dGVsX2VuZ2luZV9tYXNrX3QgbWFzazsKKworCXU4IHVhYmlfY2xhc3M7CisKKwl1OCBjbGFzczsK Kwl1OCBpbnN0YW5jZTsKKwl1MzIgY29udGV4dF9zaXplOworCXUzMiBtbWlvX2Jhc2U7CisKKwlz dHJ1Y3QgaW50ZWxfcmluZyAqYnVmZmVyOworCisJc3RydWN0IGk5MTVfdGltZWxpbmUgdGltZWxp bmU7CisKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqZGVmYXVsdF9zdGF0ZTsKKwl2b2lk ICpwaW5uZWRfZGVmYXVsdF9zdGF0ZTsKKworCS8qIFJhdGhlciB0aGFuIGhhdmUgZXZlcnkgY2xp ZW50IHdhaXQgdXBvbiBhbGwgdXNlciBpbnRlcnJ1cHRzLAorCSAqIHdpdGggdGhlIGhlcmQgd2Fr aW5nIGFmdGVyIGV2ZXJ5IGludGVycnVwdCBhbmQgZWFjaCBkb2luZyB0aGUKKwkgKiBoZWF2eXdl aWdodCBzZXFubyBkYW5jZSwgd2UgZGVsZWdhdGUgdGhlIHRhc2sgKG9mIGJlaW5nIHRoZQorCSAq IGJvdHRvbS1oYWxmIG9mIHRoZSB1c2VyIGludGVycnVwdCkgdG8gdGhlIGZpcnN0IGNsaWVudC4g QWZ0ZXIKKwkgKiBldmVyeSBpbnRlcnJ1cHQsIHdlIHdha2UgdXAgb25lIGNsaWVudCwgd2hvIGRv ZXMgdGhlIGhlYXZ5d2VpZ2h0CisJICogY29oZXJlbnQgc2Vxbm8gcmVhZCBhbmQgZWl0aGVyIGdv ZXMgYmFjayB0byBzbGVlcCAoaWYgaW5jb21wbGV0ZSksCisJICogb3Igd2FrZXMgdXAgYWxsIHRo ZSBjb21wbGV0ZWQgY2xpZW50cyBpbiBwYXJhbGxlbCwgYmVmb3JlIHRoZW4KKwkgKiB0cmFuc2Zl cnJpbmcgdGhlIGJvdHRvbS1oYWxmIHN0YXR1cyB0byB0aGUgbmV4dCBjbGllbnQgaW4gdGhlIHF1 ZXVlLgorCSAqCisJICogQ29tcGFyZWQgdG8gd2Fsa2luZyB0aGUgZW50aXJlIGxpc3Qgb2Ygd2Fp dGVycyBpbiBhIHNpbmdsZSBkZWRpY2F0ZWQKKwkgKiBib3R0b20taGFsZiwgd2UgcmVkdWNlIHRo ZSBsYXRlbmN5IG9mIHRoZSBmaXJzdCB3YWl0ZXIgYnkgYXZvaWRpbmcKKwkgKiBhIGNvbnRleHQg c3dpdGNoLCBidXQgaW5jdXIgYWRkaXRpb25hbCBjb2hlcmVudCBzZXFubyByZWFkcyB3aGVuCisJ ICogZm9sbG93aW5nIHRoZSBjaGFpbiBvZiByZXF1ZXN0IGJyZWFkY3J1bWJzLiBTaW5jZSBpdCBp cyBtb3N0IGxpa2VseQorCSAqIHRoYXQgd2UgaGF2ZSBhIHNpbmdsZSBjbGllbnQgd2FpdGluZyBv biBlYWNoIHNlcW5vLCB0aGVuIHJlZHVjaW5nCisJICogdGhlIG92ZXJoZWFkIG9mIHdha2luZyB0 aGF0IGNsaWVudCBpcyBtdWNoIHByZWZlcnJlZC4KKwkgKi8KKwlzdHJ1Y3QgaW50ZWxfYnJlYWRj cnVtYnMgeworCQlzcGlubG9ja190IGlycV9sb2NrOworCQlzdHJ1Y3QgbGlzdF9oZWFkIHNpZ25h bGVyczsKKworCQlzdHJ1Y3QgaXJxX3dvcmsgaXJxX3dvcms7IC8qIGZvciB1c2UgZnJvbSBpbnNp ZGUgaXJxX2xvY2sgKi8KKworCQl1bnNpZ25lZCBpbnQgaXJxX2VuYWJsZWQ7CisKKwkJYm9vbCBp cnFfYXJtZWQ7CisJfSBicmVhZGNydW1iczsKKworCXN0cnVjdCBpbnRlbF9lbmdpbmVfcG11IHsK KwkJLyoqCisJCSAqIEBlbmFibGU6IEJpdG1hc2sgb2YgZW5hYmxlIHNhbXBsZSBldmVudHMgb24g dGhpcyBlbmdpbmUuCisJCSAqCisJCSAqIEJpdHMgY29ycmVzcG9uZCB0byBzYW1wbGUgZXZlbnQg dHlwZXMsIGZvciBpbnN0YW5jZQorCQkgKiBJOTE1X1NBTVBMRV9RVUVVRUQgaXMgYml0IDAgZXRj LgorCQkgKi8KKwkJdTMyIGVuYWJsZTsKKwkJLyoqCisJCSAqIEBlbmFibGVfY291bnQ6IFJlZmVy ZW5jZSBjb3VudCBmb3IgdGhlIGVuYWJsZWQgc2FtcGxlcnMuCisJCSAqCisJCSAqIEluZGV4IG51 bWJlciBjb3JyZXNwb25kcyB0byBAZW51bSBkcm1faTkxNV9wbXVfZW5naW5lX3NhbXBsZS4KKwkJ ICovCisJCXVuc2lnbmVkIGludCBlbmFibGVfY291bnRbSTkxNV9FTkdJTkVfU0FNUExFX0NPVU5U XTsKKwkJLyoqCisJCSAqIEBzYW1wbGU6IENvdW50ZXIgdmFsdWVzIGZvciBzYW1wbGluZyBldmVu dHMuCisJCSAqCisJCSAqIE91ciBpbnRlcm5hbCB0aW1lciBzdG9yZXMgdGhlIGN1cnJlbnQgY291 bnRlcnMgaW4gdGhpcyBmaWVsZC4KKwkJICoKKwkJICogSW5kZXggbnVtYmVyIGNvcnJlc3BvbmRz IHRvIEBlbnVtIGRybV9pOTE1X3BtdV9lbmdpbmVfc2FtcGxlLgorCQkgKi8KKwkJc3RydWN0IGk5 MTVfcG11X3NhbXBsZSBzYW1wbGVbSTkxNV9FTkdJTkVfU0FNUExFX0NPVU5UXTsKKwl9IHBtdTsK KworCS8qCisJICogQSBwb29sIG9mIG9iamVjdHMgdG8gdXNlIGFzIHNoYWRvdyBjb3BpZXMgb2Yg Y2xpZW50IGJhdGNoIGJ1ZmZlcnMKKwkgKiB3aGVuIHRoZSBjb21tYW5kIHBhcnNlciBpcyBlbmFi bGVkLiBQcmV2ZW50cyB0aGUgY2xpZW50IGZyb20KKwkgKiBtb2RpZnlpbmcgdGhlIGJhdGNoIGNv bnRlbnRzIGFmdGVyIHNvZnR3YXJlIHBhcnNpbmcuCisJICovCisJc3RydWN0IGk5MTVfZ2VtX2Jh dGNoX3Bvb2wgYmF0Y2hfcG9vbDsKKworCXN0cnVjdCBpbnRlbF9od19zdGF0dXNfcGFnZSBzdGF0 dXNfcGFnZTsKKwlzdHJ1Y3QgaTkxNV9jdHhfd29ya2Fyb3VuZHMgd2FfY3R4OworCXN0cnVjdCBp OTE1X3dhX2xpc3QgY3R4X3dhX2xpc3Q7CisJc3RydWN0IGk5MTVfd2FfbGlzdCB3YV9saXN0Owor CXN0cnVjdCBpOTE1X3dhX2xpc3Qgd2hpdGVsaXN0OworCisJdTMyICAgICAgICAgICAgIGlycV9r ZWVwX21hc2s7IC8qIGFsd2F5cyBrZWVwIHRoZXNlIGludGVycnVwdHMgKi8KKwl1MzIJCWlycV9l bmFibGVfbWFzazsgLyogYml0bWFzayB0byBlbmFibGUgcmluZyBpbnRlcnJ1cHQgKi8KKwl2b2lk CQkoKmlycV9lbmFibGUpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CisJdm9pZAkJ KCppcnFfZGlzYWJsZSkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKKworCWludAkJ KCppbml0X2h3KShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOworCisJc3RydWN0IHsK KwkJdm9pZCAoKnByZXBhcmUpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CisJCXZv aWQgKCpyZXNldCkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBib29sIHN0YWxsZWQp OworCQl2b2lkICgqZmluaXNoKShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOworCX0g cmVzZXQ7CisKKwl2b2lkCQkoKnBhcmspKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7 CisJdm9pZAkJKCp1bnBhcmspKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7CisKKwl2 b2lkCQkoKnNldF9kZWZhdWx0X3N1Ym1pc3Npb24pKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSk7CisKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqKCpjb250ZXh0X3Bpbikoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkJCQkgICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHgpOworCisJaW50CQkoKnJlcXVlc3RfYWxsb2MpKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx KTsKKwlpbnQJCSgqaW5pdF9jb250ZXh0KShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSk7CisKKwlp bnQJCSgqZW1pdF9mbHVzaCkoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCwgdTMyIG1vZGUp OworI2RlZmluZSBFTUlUX0lOVkFMSURBVEUJQklUKDApCisjZGVmaW5lIEVNSVRfRkxVU0gJQklU KDEpCisjZGVmaW5lIEVNSVRfQkFSUklFUgkoRU1JVF9JTlZBTElEQVRFIHwgRU1JVF9GTFVTSCkK KwlpbnQJCSgqZW1pdF9iYl9zdGFydCkoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCisJCQkJCSB1 NjQgb2Zmc2V0LCB1MzIgbGVuZ3RoLAorCQkJCQkgdW5zaWduZWQgaW50IGRpc3BhdGNoX2ZsYWdz KTsKKyNkZWZpbmUgSTkxNV9ESVNQQVRDSF9TRUNVUkUgQklUKDApCisjZGVmaW5lIEk5MTVfRElT UEFUQ0hfUElOTkVEIEJJVCgxKQorCWludAkJICgqZW1pdF9pbml0X2JyZWFkY3J1bWIpKHN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxKTsKKwl1MzIJCSooKmVtaXRfZmluaV9icmVhZGNydW1iKShzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSwKKwkJCQkJCSB1MzIgKmNzKTsKKwl1bnNpZ25lZCBpbnQJZW1p dF9maW5pX2JyZWFkY3J1bWJfZHc7CisKKwkvKiBQYXNzIHRoZSByZXF1ZXN0IHRvIHRoZSBoYXJk d2FyZSBxdWV1ZSAoZS5nLiBkaXJlY3RseSBpbnRvCisJICogdGhlIGxlZ2FjeSByaW5nYnVmZmVy IG9yIHRvIHRoZSBlbmQgb2YgYW4gZXhlY2xpc3QpLgorCSAqCisJICogVGhpcyBpcyBjYWxsZWQg ZnJvbSBhbiBhdG9taWMgY29udGV4dCB3aXRoIGlycXMgZGlzYWJsZWQ7IG11c3QKKwkgKiBiZSBp cnEgc2FmZS4KKwkgKi8KKwl2b2lkCQkoKnN1Ym1pdF9yZXF1ZXN0KShzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSk7CisKKwkvKgorCSAqIENhbGwgd2hlbiB0aGUgcHJpb3JpdHkgb24gYSByZXF1ZXN0 IGhhcyBjaGFuZ2VkIGFuZCBpdCBhbmQgaXRzCisJICogZGVwZW5kZW5jaWVzIG1heSBuZWVkIHJl c2NoZWR1bGluZy4gTm90ZSB0aGUgcmVxdWVzdCBpdHNlbGYgbWF5CisJICogbm90IGJlIHJlYWR5 IHRvIHJ1biEKKwkgKi8KKwl2b2lkCQkoKnNjaGVkdWxlKShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy ZXF1ZXN0LAorCQkJCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9zY2hlZF9hdHRyICphdHRyKTsKKwor CS8qCisJICogQ2FuY2VsIGFsbCByZXF1ZXN0cyBvbiB0aGUgaGFyZHdhcmUsIG9yIHF1ZXVlZCBm b3IgZXhlY3V0aW9uLgorCSAqIFRoaXMgc2hvdWxkIG9ubHkgY2FuY2VsIHRoZSByZWFkeSByZXF1 ZXN0cyB0aGF0IGhhdmUgYmVlbgorCSAqIHN1Ym1pdHRlZCB0byB0aGUgZW5naW5lICh2aWEgdGhl IGVuZ2luZS0+c3VibWl0X3JlcXVlc3QgY2FsbGJhY2spLgorCSAqIFRoaXMgaXMgY2FsbGVkIHdo ZW4gbWFya2luZyB0aGUgZGV2aWNlIGFzIHdlZGdlZC4KKwkgKi8KKwl2b2lkCQkoKmNhbmNlbF9y ZXF1ZXN0cykoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKKworCXZvaWQJCSgqY2xl YW51cCkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKKworCXN0cnVjdCBpbnRlbF9l bmdpbmVfZXhlY2xpc3RzIGV4ZWNsaXN0czsKKworCS8qIENvbnRleHRzIGFyZSBwaW5uZWQgd2hp bHN0IHRoZXkgYXJlIGFjdGl2ZSBvbiB0aGUgR1BVLiBUaGUgbGFzdAorCSAqIGNvbnRleHQgZXhl Y3V0ZWQgcmVtYWlucyBhY3RpdmUgd2hpbHN0IHRoZSBHUFUgaXMgaWRsZSAtIHRoZQorCSAqIHN3 aXRjaCBhd2F5IGFuZCB3cml0ZSB0byB0aGUgY29udGV4dCBvYmplY3Qgb25seSBvY2N1cnMgb24g dGhlCisJICogbmV4dCBleGVjdXRpb24uICBDb250ZXh0cyBhcmUgb25seSB1bnBpbm5lZCBvbiBy ZXRpcmVtZW50IG9mIHRoZQorCSAqIGZvbGxvd2luZyByZXF1ZXN0IGVuc3VyaW5nIHRoYXQgd2Ug Y2FuIGFsd2F5cyB3cml0ZSB0byB0aGUgb2JqZWN0CisJICogb24gdGhlIGNvbnRleHQgc3dpdGNo IGV2ZW4gYWZ0ZXIgaWRsaW5nLiBBY3Jvc3Mgc3VzcGVuZCwgd2Ugc3dpdGNoCisJICogdG8gdGhl IGtlcm5lbCBjb250ZXh0IGFuZCB0cmFzaCBpdCBhcyB0aGUgc2F2ZSBtYXkgbm90IGhhcHBlbgor CSAqIGJlZm9yZSB0aGUgaGFyZHdhcmUgaXMgcG93ZXJlZCBkb3duLgorCSAqLworCXN0cnVjdCBp bnRlbF9jb250ZXh0ICpsYXN0X3JldGlyZWRfY29udGV4dDsKKworCS8qIHN0YXR1c19ub3RpZmll cjogbGlzdCBvZiBjYWxsYmFja3MgZm9yIGNvbnRleHQtc3dpdGNoIGNoYW5nZXMgKi8KKwlzdHJ1 Y3QgYXRvbWljX25vdGlmaWVyX2hlYWQgY29udGV4dF9zdGF0dXNfbm90aWZpZXI7CisKKwlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2hhbmdjaGVjayBoYW5nY2hlY2s7CisKKyNkZWZpbmUgSTkxNV9FTkdJ TkVfTkVFRFNfQ01EX1BBUlNFUiBCSVQoMCkKKyNkZWZpbmUgSTkxNV9FTkdJTkVfU1VQUE9SVFNf U1RBVFMgICBCSVQoMSkKKyNkZWZpbmUgSTkxNV9FTkdJTkVfSEFTX1BSRUVNUFRJT04gICBCSVQo MikKKyNkZWZpbmUgSTkxNV9FTkdJTkVfSEFTX1NFTUFQSE9SRVMgICBCSVQoMykKKwl1bnNpZ25l ZCBpbnQgZmxhZ3M7CisKKwkvKgorCSAqIFRhYmxlIG9mIGNvbW1hbmRzIHRoZSBjb21tYW5kIHBh cnNlciBuZWVkcyB0byBrbm93IGFib3V0CisJICogZm9yIHRoaXMgZW5naW5lLgorCSAqLworCURF Q0xBUkVfSEFTSFRBQkxFKGNtZF9oYXNoLCBJOTE1X0NNRF9IQVNIX09SREVSKTsKKworCS8qCisJ ICogVGFibGUgb2YgcmVnaXN0ZXJzIGFsbG93ZWQgaW4gY29tbWFuZHMgdGhhdCByZWFkL3dyaXRl IHJlZ2lzdGVycy4KKwkgKi8KKwljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcmVnX3RhYmxlICpyZWdf dGFibGVzOworCWludCByZWdfdGFibGVfY291bnQ7CisKKwkvKgorCSAqIFJldHVybnMgdGhlIGJp dG1hc2sgZm9yIHRoZSBsZW5ndGggZmllbGQgb2YgdGhlIHNwZWNpZmllZCBjb21tYW5kLgorCSAq IFJldHVybiAwIGZvciBhbiB1bnJlY29nbml6ZWQvaW52YWxpZCBjb21tYW5kLgorCSAqCisJICog SWYgdGhlIGNvbW1hbmQgcGFyc2VyIGZpbmRzIGFuIGVudHJ5IGZvciBhIGNvbW1hbmQgaW4gdGhl IGVuZ2luZSdzCisJICogY21kX3RhYmxlcywgaXQgZ2V0cyB0aGUgY29tbWFuZCdzIGxlbmd0aCBi YXNlZCBvbiB0aGUgdGFibGUgZW50cnkuCisJICogSWYgbm90LCBpdCBjYWxscyB0aGlzIGZ1bmN0 aW9uIHRvIGRldGVybWluZSB0aGUgcGVyLWVuZ2luZSBsZW5ndGgKKwkgKiBmaWVsZCBlbmNvZGlu ZyBmb3IgdGhlIGNvbW1hbmQgKGkuZS4gZGlmZmVyZW50IG9wY29kZSByYW5nZXMgdXNlCisJICog Y2VydGFpbiBiaXRzIHRvIGVuY29kZSB0aGUgY29tbWFuZCBsZW5ndGggaW4gdGhlIGhlYWRlciku CisJICovCisJdTMyICgqZ2V0X2NtZF9sZW5ndGhfbWFzaykodTMyIGNtZF9oZWFkZXIpOworCisJ c3RydWN0IHsKKwkJLyoqCisJCSAqIEBsb2NrOiBMb2NrIHByb3RlY3RpbmcgdGhlIGJlbG93IGZp ZWxkcy4KKwkJICovCisJCXNlcWxvY2tfdCBsb2NrOworCQkvKioKKwkJICogQGVuYWJsZWQ6IFJl ZmVyZW5jZSBjb3VudCBpbmRpY2F0aW5nIG51bWJlciBvZiBsaXN0ZW5lcnMuCisJCSAqLworCQl1 bnNpZ25lZCBpbnQgZW5hYmxlZDsKKwkJLyoqCisJCSAqIEBhY3RpdmU6IE51bWJlciBvZiBjb250 ZXh0cyBjdXJyZW50bHkgc2NoZWR1bGVkIGluLgorCQkgKi8KKwkJdW5zaWduZWQgaW50IGFjdGl2 ZTsKKwkJLyoqCisJCSAqIEBlbmFibGVkX2F0OiBUaW1lc3RhbXAgd2hlbiBidXN5IHN0YXRzIHdl cmUgZW5hYmxlZC4KKwkJICovCisJCWt0aW1lX3QgZW5hYmxlZF9hdDsKKwkJLyoqCisJCSAqIEBz dGFydDogVGltZXN0YW1wIG9mIHRoZSBsYXN0IGlkbGUgdG8gYWN0aXZlIHRyYW5zaXRpb24uCisJ CSAqCisJCSAqIElkbGUgaXMgZGVmaW5lZCBhcyBhY3RpdmUgPT0gMCwgYWN0aXZlIGlzIGFjdGl2 ZSA+IDAuCisJCSAqLworCQlrdGltZV90IHN0YXJ0OworCQkvKioKKwkJICogQHRvdGFsOiBUb3Rh bCB0aW1lIHRoaXMgZW5naW5lIHdhcyBidXN5LgorCQkgKgorCQkgKiBBY2N1bXVsYXRlZCB0aW1l IG5vdCBjb3VudGluZyB0aGUgbW9zdCByZWNlbnQgYmxvY2sgaW4gY2FzZXMKKwkJICogd2hlcmUg ZW5naW5lIGlzIGN1cnJlbnRseSBidXN5IChhY3RpdmUgPiAwKS4KKwkJICovCisJCWt0aW1lX3Qg dG90YWw7CisJfSBzdGF0czsKK307CisKK3N0YXRpYyBpbmxpbmUgYm9vbAoraW50ZWxfZW5naW5l X25lZWRzX2NtZF9wYXJzZXIoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQor eworCXJldHVybiBlbmdpbmUtPmZsYWdzICYgSTkxNV9FTkdJTkVfTkVFRFNfQ01EX1BBUlNFUjsK K30KKworc3RhdGljIGlubGluZSBib29sCitpbnRlbF9lbmdpbmVfc3VwcG9ydHNfc3RhdHMoY29u c3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXJldHVybiBlbmdpbmUtPmZs YWdzICYgSTkxNV9FTkdJTkVfU1VQUE9SVFNfU1RBVFM7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9v bAoraW50ZWxfZW5naW5lX2hhc19wcmVlbXB0aW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKK3sKKwlyZXR1cm4gZW5naW5lLT5mbGFncyAmIEk5MTVfRU5HSU5FX0hBU19Q UkVFTVBUSU9OOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wKK2ludGVsX2VuZ2luZV9oYXNfc2Vt YXBob3Jlcyhjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCit7CisJcmV0dXJu IGVuZ2luZS0+ZmxhZ3MgJiBJOTE1X0VOR0lORV9IQVNfU0VNQVBIT1JFUzsKK30KKworI2RlZmlu ZSBpbnN0ZG9uZV9zbGljZV9tYXNrKGRldl9wcml2X18pIFwKKwkoSVNfR0VOKGRldl9wcml2X18s IDcpID8gXAorCSAxIDogUlVOVElNRV9JTkZPKGRldl9wcml2X18pLT5zc2V1LnNsaWNlX21hc2sp CisKKyNkZWZpbmUgaW5zdGRvbmVfc3Vic2xpY2VfbWFzayhkZXZfcHJpdl9fKSBcCisJKElTX0dF TihkZXZfcHJpdl9fLCA3KSA/IFwKKwkgMSA6IFJVTlRJTUVfSU5GTyhkZXZfcHJpdl9fKS0+c3Nl dS5zdWJzbGljZV9tYXNrWzBdKQorCisjZGVmaW5lIGZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1 YnNsaWNlKGRldl9wcml2X18sIHNsaWNlX18sIHN1YnNsaWNlX18pIFwKKwlmb3IgKChzbGljZV9f KSA9IDAsIChzdWJzbGljZV9fKSA9IDA7IFwKKwkgICAgIChzbGljZV9fKSA8IEk5MTVfTUFYX1NM SUNFUzsgXAorCSAgICAgKHN1YnNsaWNlX18pID0gKChzdWJzbGljZV9fKSArIDEpIDwgSTkxNV9N QVhfU1VCU0xJQ0VTID8gKHN1YnNsaWNlX18pICsgMSA6IDAsIFwKKwkgICAgICAgKHNsaWNlX18p ICs9ICgoc3Vic2xpY2VfXykgPT0gMCkpIFwKKwkJZm9yX2VhY2hfaWYoKEJJVChzbGljZV9fKSAm IGluc3Rkb25lX3NsaWNlX21hc2soZGV2X3ByaXZfXykpICYmIFwKKwkJCSAgICAoQklUKHN1YnNs aWNlX18pICYgaW5zdGRvbmVfc3Vic2xpY2VfbWFzayhkZXZfcHJpdl9fKSkpCisKKyNlbmRpZiAv KiBfX0lOVEVMX0VOR0lORV9UWVBFU19IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKaW5k ZXggNzQ0MjIwMjk2NjUzLi43N2VjMWJkNGRmNWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5o CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiaW50ZWxfZ3VjX2xvZy5oIgogI2luY2x1ZGUg ImludGVsX2d1Y19yZWcuaCIKICNpbmNsdWRlICJpbnRlbF91Y19mdy5oIgorI2luY2x1ZGUgImk5 MTVfdXRpbHMuaCIKICNpbmNsdWRlICJpOTE1X3ZtYS5oIgogCiBzdHJ1Y3QgZ3VjX3ByZWVtcHRf d29yayB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggOWNjYmU2 M2Q0NmUzLi5lNjEyYmRjYTlmZDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmgKQEAgLTE1LDE0ICsxNSwxMSBAQAogI2luY2x1ZGUgImk5MTVfcmVxdWVzdC5oIgogI2lu Y2x1ZGUgImk5MTVfc2VsZnRlc3QuaCIKICNpbmNsdWRlICJpOTE1X3RpbWVsaW5lLmgiCi0jaW5j bHVkZSAiaW50ZWxfZGV2aWNlX2luZm8uaCIKKyNpbmNsdWRlICJpbnRlbF9lbmdpbmVfdHlwZXMu aCIKICNpbmNsdWRlICJpbnRlbF9ncHVfY29tbWFuZHMuaCIKICNpbmNsdWRlICJpbnRlbF93b3Jr YXJvdW5kcy5oIgogCiBzdHJ1Y3QgZHJtX3ByaW50ZXI7Ci1zdHJ1Y3QgaTkxNV9zY2hlZF9hdHRy OwotCi0jZGVmaW5lIEk5MTVfQ01EX0hBU0hfT1JERVIgOQogCiAvKiBFYXJseSBnZW4yIGRldmlj ZXMgaGF2ZSBhIGNhY2hlbGluZSBvZiBqdXN0IDMyIGJ5dGVzLCB1c2luZyA2NCBpcyBvdmVya2ls bCwKICAqIGJ1dCBrZWVwcyB0aGUgbG9naWMgc2ltcGxlLiBJbmRlZWQsIHRoZSB3aG9sZSBwdXJw b3NlIG9mIHRoaXMgbWFjcm8gaXMganVzdApAQCAtMzIsMTEgKzI5LDYgQEAgc3RydWN0IGk5MTVf c2NoZWRfYXR0cjsKICNkZWZpbmUgQ0FDSEVMSU5FX0JZVEVTIDY0CiAjZGVmaW5lIENBQ0hFTElO RV9EV09SRFMgKENBQ0hFTElORV9CWVRFUyAvIHNpemVvZih1MzIpKQogCi1zdHJ1Y3QgaW50ZWxf aHdfc3RhdHVzX3BhZ2UgewotCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwotCXUzMiAqYWRkcjsKLX07 Ci0KICNkZWZpbmUgSTkxNV9SRUFEX1RBSUwoZW5naW5lKSBJOTE1X1JFQUQoUklOR19UQUlMKChl bmdpbmUpLT5tbWlvX2Jhc2UpKQogI2RlZmluZSBJOTE1X1dSSVRFX1RBSUwoZW5naW5lLCB2YWwp IEk5MTVfV1JJVEUoUklOR19UQUlMKChlbmdpbmUpLT5tbWlvX2Jhc2UpLCB2YWwpCiAKQEAgLTkx LDQ5OCArODMsNiBAQCBoYW5nY2hlY2tfYWN0aW9uX3RvX3N0cihjb25zdCBlbnVtIGludGVsX2Vu Z2luZV9oYW5nY2hlY2tfYWN0aW9uIGEpCiAJcmV0dXJuICJ1bmtub3duIjsKIH0KIAotI2RlZmlu ZSBJOTE1X01BWF9TTElDRVMJMwotI2RlZmluZSBJOTE1X01BWF9TVUJTTElDRVMgOAotCi0jZGVm aW5lIGluc3Rkb25lX3NsaWNlX21hc2soZGV2X3ByaXZfXykgXAotCShJU19HRU4oZGV2X3ByaXZf XywgNykgPyBcCi0JIDEgOiBSVU5USU1FX0lORk8oZGV2X3ByaXZfXyktPnNzZXUuc2xpY2VfbWFz aykKLQotI2RlZmluZSBpbnN0ZG9uZV9zdWJzbGljZV9tYXNrKGRldl9wcml2X18pIFwKLQkoSVNf R0VOKGRldl9wcml2X18sIDcpID8gXAotCSAxIDogUlVOVElNRV9JTkZPKGRldl9wcml2X18pLT5z c2V1LnN1YnNsaWNlX21hc2tbMF0pCi0KLSNkZWZpbmUgZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vf c3Vic2xpY2UoZGV2X3ByaXZfXywgc2xpY2VfXywgc3Vic2xpY2VfXykgXAotCWZvciAoKHNsaWNl X18pID0gMCwgKHN1YnNsaWNlX18pID0gMDsgXAotCSAgICAgKHNsaWNlX18pIDwgSTkxNV9NQVhf U0xJQ0VTOyBcCi0JICAgICAoc3Vic2xpY2VfXykgPSAoKHN1YnNsaWNlX18pICsgMSkgPCBJOTE1 X01BWF9TVUJTTElDRVMgPyAoc3Vic2xpY2VfXykgKyAxIDogMCwgXAotCSAgICAgICAoc2xpY2Vf XykgKz0gKChzdWJzbGljZV9fKSA9PSAwKSkgXAotCQlmb3JfZWFjaF9pZigoQklUKHNsaWNlX18p ICYgaW5zdGRvbmVfc2xpY2VfbWFzayhkZXZfcHJpdl9fKSkgJiYgXAotCQkJICAgIChCSVQoc3Vi c2xpY2VfXykgJiBpbnN0ZG9uZV9zdWJzbGljZV9tYXNrKGRldl9wcml2X18pKSkKLQotc3RydWN0 IGludGVsX2luc3Rkb25lIHsKLQl1MzIgaW5zdGRvbmU7Ci0JLyogVGhlIGZvbGxvd2luZyBleGlz dCBvbmx5IGluIHRoZSBSQ1MgZW5naW5lICovCi0JdTMyIHNsaWNlX2NvbW1vbjsKLQl1MzIgc2Ft cGxlcltJOTE1X01BWF9TTElDRVNdW0k5MTVfTUFYX1NVQlNMSUNFU107Ci0JdTMyIHJvd1tJOTE1 X01BWF9TTElDRVNdW0k5MTVfTUFYX1NVQlNMSUNFU107Ci19OwotCi1zdHJ1Y3QgaW50ZWxfZW5n aW5lX2hhbmdjaGVjayB7Ci0JdTY0IGFjdGhkOwotCXUzMiBsYXN0X3NlcW5vOwotCXUzMiBuZXh0 X3NlcW5vOwotCXVuc2lnbmVkIGxvbmcgYWN0aW9uX3RpbWVzdGFtcDsKLQlzdHJ1Y3QgaW50ZWxf aW5zdGRvbmUgaW5zdGRvbmU7Ci19OwotCi1zdHJ1Y3QgaW50ZWxfcmluZyB7Ci0Jc3RydWN0IGk5 MTVfdm1hICp2bWE7Ci0Jdm9pZCAqdmFkZHI7Ci0KLQlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGlt ZWxpbmU7Ci0Jc3RydWN0IGxpc3RfaGVhZCByZXF1ZXN0X2xpc3Q7Ci0Jc3RydWN0IGxpc3RfaGVh ZCBhY3RpdmVfbGluazsKLQotCXUzMiBoZWFkOwotCXUzMiB0YWlsOwotCXUzMiBlbWl0OwotCi0J dTMyIHNwYWNlOwotCXUzMiBzaXplOwotCXUzMiBlZmZlY3RpdmVfc2l6ZTsKLX07Ci0KLXN0cnVj dCBpOTE1X2dlbV9jb250ZXh0Owotc3RydWN0IGRybV9pOTE1X3JlZ190YWJsZTsKLQotLyoKLSAq IHdlIHVzZSBhIHNpbmdsZSBwYWdlIHRvIGxvYWQgY3R4IHdvcmthcm91bmRzIHNvIGFsbCBvZiB0 aGVzZQotICogdmFsdWVzIGFyZSByZWZlcnJlZCBpbiB0ZXJtcyBvZiBkd29yZHMKLSAqCi0gKiBz dHJ1Y3QgaTkxNV93YV9jdHhfYmI6Ci0gKiAgb2Zmc2V0OiBzcGVjaWZpZXMgYmF0Y2ggc3RhcnRp bmcgcG9zaXRpb24sIGFsc28gaGVscGZ1bCBpbiBjYXNlCi0gKiAgICBpZiB3ZSB3YW50IHRvIGhh dmUgbXVsdGlwbGUgYmF0Y2hlcyBhdCBkaWZmZXJlbnQgb2Zmc2V0cyBiYXNlZCBvbgotICogICAg c29tZSBjcml0ZXJpYS4gSXQgaXMgbm90IGEgcmVxdWlyZW1lbnQgYXQgdGhlIG1vbWVudCBidXQg cHJvdmlkZXMKLSAqICAgIGFuIG9wdGlvbiBmb3IgZnV0dXJlIHVzZS4KLSAqICBzaXplOiBzaXpl IG9mIHRoZSBiYXRjaCBpbiBEV09SRFMKLSAqLwotc3RydWN0IGk5MTVfY3R4X3dvcmthcm91bmRz IHsKLQlzdHJ1Y3QgaTkxNV93YV9jdHhfYmIgewotCQl1MzIgb2Zmc2V0OwotCQl1MzIgc2l6ZTsK LQl9IGluZGlyZWN0X2N0eCwgcGVyX2N0eDsKLQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKLX07Ci0K LXN0cnVjdCBpOTE1X3JlcXVlc3Q7Ci0KLSNkZWZpbmUgSTkxNV9NQVhfVkNTCTQKLSNkZWZpbmUg STkxNV9NQVhfVkVDUwkyCi0KLS8qCi0gKiBFbmdpbmUgSURzIGRlZmluaXRpb25zLgotICogS2Vl cCBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgdHlwZSBlbmdpbmUgdG9nZXRoZXIuCi0gKi8KLWVudW0g aW50ZWxfZW5naW5lX2lkIHsKLQlSQ1MwID0gMCwKLQlCQ1MwLAotCVZDUzAsCi0JVkNTMSwKLQlW Q1MyLAotCVZDUzMsCi0jZGVmaW5lIF9WQ1MobikgKFZDUzAgKyAobikpCi0JVkVDUzAsCi0JVkVD UzEKLSNkZWZpbmUgX1ZFQ1MobikgKFZFQ1MwICsgKG4pKQotfTsKLQotc3RydWN0IHN0X3ByZWVt cHRfaGFuZyB7Ci0Jc3RydWN0IGNvbXBsZXRpb24gY29tcGxldGlvbjsKLQl1bnNpZ25lZCBpbnQg Y291bnQ7Ci0JYm9vbCBpbmplY3RfaGFuZzsKLX07Ci0KLS8qKgotICogc3RydWN0IGludGVsX2Vu Z2luZV9leGVjbGlzdHMgLSBleGVjbGlzdCBzdWJtaXNzaW9uIHF1ZXVlIGFuZCBwb3J0IHN0YXRl Ci0gKgotICogVGhlIHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzIHJlcHJlc2VudHMgdGhl IGNvbWJpbmVkIGxvZ2ljYWwgc3RhdGUgb2YKLSAqIGRyaXZlciBhbmQgdGhlIGhhcmR3YXJlIHN0 YXRlIGZvciBleGVjbGlzdCBtb2RlIG9mIHN1Ym1pc3Npb24uCi0gKi8KLXN0cnVjdCBpbnRlbF9l bmdpbmVfZXhlY2xpc3RzIHsKLQkvKioKLQkgKiBAdGFza2xldDogc29mdGlycSB0YXNrbGV0IGZv ciBib3R0b20gaGFuZGxlcgotCSAqLwotCXN0cnVjdCB0YXNrbGV0X3N0cnVjdCB0YXNrbGV0Owot Ci0JLyoqCi0JICogQGRlZmF1bHRfcHJpb2xpc3Q6IHByaW9yaXR5IGxpc3QgZm9yIEk5MTVfUFJJ T1JJVFlfTk9STUFMCi0JICovCi0Jc3RydWN0IGk5MTVfcHJpb2xpc3QgZGVmYXVsdF9wcmlvbGlz dDsKLQotCS8qKgotCSAqIEBub19wcmlvbGlzdDogcHJpb3JpdHkgbGlzdHMgZGlzYWJsZWQKLQkg Ki8KLQlib29sIG5vX3ByaW9saXN0OwotCi0JLyoqCi0JICogQHN1Ym1pdF9yZWc6IGdlbi1zcGVj aWZpYyBleGVjbGlzdCBzdWJtaXNzaW9uIHJlZ2lzdGVyCi0JICogc2V0IHRvIHRoZSBFeGVjTGlz dCBTdWJtaXNzaW9uIFBvcnQgKGVsc3ApIHJlZ2lzdGVyIHByZS1HZW4xMSBhbmQgdG8KLQkgKiB0 aGUgRXhlY0xpc3QgU3VibWlzc2lvbiBRdWV1ZSBDb250ZW50cyByZWdpc3RlciBhcnJheSBmb3Ig R2VuMTErCi0JICovCi0JdTMyIF9faW9tZW0gKnN1Ym1pdF9yZWc7Ci0KLQkvKioKLQkgKiBAY3Ry bF9yZWc6IHRoZSBlbmhhbmNlZCBleGVjbGlzdHMgY29udHJvbCByZWdpc3RlciwgdXNlZCB0byBs b2FkIHRoZQotCSAqIHN1Ym1pdCBxdWV1ZSBvbiB0aGUgSFcgYW5kIHRvIHJlcXVlc3QgcHJlZW1w dGlvbnMgdG8gaWRsZQotCSAqLwotCXUzMiBfX2lvbWVtICpjdHJsX3JlZzsKLQotCS8qKgotCSAq IEBwb3J0OiBleGVjbGlzdCBwb3J0IHN0YXRlcwotCSAqCi0JICogRm9yIGVhY2ggaGFyZHdhcmUg RUxTUCAoRXhlY0xpc3QgU3VibWlzc2lvbiBQb3J0KSB3ZSBrZWVwCi0JICogdHJhY2sgb2YgdGhl IGxhc3QgcmVxdWVzdCBhbmQgdGhlIG51bWJlciBvZiB0aW1lcyB3ZSBzdWJtaXR0ZWQKLQkgKiB0 aGF0IHBvcnQgdG8gaHcuIFdlIHRoZW4gY291bnQgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgaHcg cmVwb3J0cwotCSAqIGEgY29udGV4dCBjb21wbGV0aW9uIG9yIHByZWVtcHRpb24uIEFzIG9ubHkg b25lIGNvbnRleHQgY2FuCi0JICogYmUgYWN0aXZlIG9uIGh3LCB3ZSBsaW1pdCByZXN1Ym1pc3Np b24gb2YgY29udGV4dCB0byBwb3J0WzBdLiBUaGlzCi0JICogaXMgY2FsbGVkIExpdGUgUmVzdG9y ZSwgb2YgdGhlIGNvbnRleHQuCi0JICovCi0Jc3RydWN0IGV4ZWNsaXN0X3BvcnQgewotCQkvKioK LQkJICogQHJlcXVlc3RfY291bnQ6IGNvbWJpbmVkIHJlcXVlc3QgYW5kIHN1Ym1pc3Npb24gY291 bnQKLQkJICovCi0JCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3RfY291bnQ7Ci0jZGVmaW5l IEVYRUNMSVNUX0NPVU5UX0JJVFMgMgotI2RlZmluZSBwb3J0X3JlcXVlc3QocCkgcHRyX21hc2tf Yml0cygocCktPnJlcXVlc3RfY291bnQsIEVYRUNMSVNUX0NPVU5UX0JJVFMpCi0jZGVmaW5lIHBv cnRfY291bnQocCkgcHRyX3VubWFza19iaXRzKChwKS0+cmVxdWVzdF9jb3VudCwgRVhFQ0xJU1Rf Q09VTlRfQklUUykKLSNkZWZpbmUgcG9ydF9wYWNrKHJxLCBjb3VudCkgcHRyX3BhY2tfYml0cyhy cSwgY291bnQsIEVYRUNMSVNUX0NPVU5UX0JJVFMpCi0jZGVmaW5lIHBvcnRfdW5wYWNrKHAsIGNv dW50KSBwdHJfdW5wYWNrX2JpdHMoKHApLT5yZXF1ZXN0X2NvdW50LCBjb3VudCwgRVhFQ0xJU1Rf Q09VTlRfQklUUykKLSNkZWZpbmUgcG9ydF9zZXQocCwgcGFja2VkKSAoKHApLT5yZXF1ZXN0X2Nv dW50ID0gKHBhY2tlZCkpCi0jZGVmaW5lIHBvcnRfaXNzZXQocCkgKChwKS0+cmVxdWVzdF9jb3Vu dCkKLSNkZWZpbmUgcG9ydF9pbmRleChwLCBleGVjbGlzdHMpICgocCkgLSAoZXhlY2xpc3RzKS0+ cG9ydCkKLQotCQkvKioKLQkJICogQGNvbnRleHRfaWQ6IGNvbnRleHQgSUQgZm9yIHBvcnQKLQkJ ICovCi0JCUdFTV9ERUJVR19ERUNMKHUzMiBjb250ZXh0X2lkKTsKLQotI2RlZmluZSBFWEVDTElT VF9NQVhfUE9SVFMgMgotCX0gcG9ydFtFWEVDTElTVF9NQVhfUE9SVFNdOwotCi0JLyoqCi0JICog QGFjdGl2ZTogaXMgdGhlIEhXIGFjdGl2ZT8gV2UgY29uc2lkZXIgdGhlIEhXIGFzIGFjdGl2ZSBh ZnRlcgotCSAqIHN1Ym1pdHRpbmcgYW55IGNvbnRleHQgZm9yIGV4ZWN1dGlvbiBhbmQgdW50aWwg d2UgaGF2ZSBzZWVuIHRoZQotCSAqIGxhc3QgY29udGV4dCBjb21wbGV0aW9uIGV2ZW50LiBBZnRl ciB0aGF0LCB3ZSBkbyBub3QgZXhwZWN0IGFueQotCSAqIG1vcmUgZXZlbnRzIHVudGlsIHdlIHN1 Ym1pdCwgYW5kIHNvIGNhbiBwYXJrIHRoZSBIVy4KLQkgKgotCSAqIEFzIHdlIGhhdmUgYSBzbWFs bCBudW1iZXIgb2YgZGlmZmVyZW50IHNvdXJjZXMgZnJvbSB3aGljaCB3ZSBmZWVkCi0JICogdGhl IEhXLCB3ZSB0cmFjayB0aGUgc3RhdGUgb2YgZWFjaCBpbnNpZGUgYSBzaW5nbGUgYml0ZmllbGQu Ci0JICovCi0JdW5zaWduZWQgaW50IGFjdGl2ZTsKLSNkZWZpbmUgRVhFQ0xJU1RTX0FDVElWRV9V U0VSIDAKLSNkZWZpbmUgRVhFQ0xJU1RTX0FDVElWRV9QUkVFTVBUIDEKLSNkZWZpbmUgRVhFQ0xJ U1RTX0FDVElWRV9IV0FDSyAyCi0KLQkvKioKLQkgKiBAcG9ydF9tYXNrOiBudW1iZXIgb2YgZXhl Y2xpc3QgcG9ydHMgLSAxCi0JICovCi0JdW5zaWduZWQgaW50IHBvcnRfbWFzazsKLQotCS8qKgot CSAqIEBxdWV1ZV9wcmlvcml0eV9oaW50OiBIaWdoZXN0IHBlbmRpbmcgcHJpb3JpdHkuCi0JICoK LQkgKiBXaGVuIHdlIGFkZCByZXF1ZXN0cyBpbnRvIHRoZSBxdWV1ZSwgb3IgYWRqdXN0IHRoZSBw cmlvcml0eSBvZgotCSAqIGV4ZWN1dGluZyByZXF1ZXN0cywgd2UgY29tcHV0ZSB0aGUgbWF4aW11 bSBwcmlvcml0eSBvZiB0aG9zZQotCSAqIHBlbmRpbmcgcmVxdWVzdHMuIFdlIGNhbiB0aGVuIHVz ZSB0aGlzIHZhbHVlIHRvIGRldGVybWluZSBpZgotCSAqIHdlIG5lZWQgdG8gcHJlZW1wdCB0aGUg ZXhlY3V0aW5nIHJlcXVlc3RzIHRvIHNlcnZpY2UgdGhlIHF1ZXVlLgotCSAqIEhvd2V2ZXIsIHNp bmNlIHRoZSB3ZSBtYXkgaGF2ZSByZWNvcmRlZCB0aGUgcHJpb3JpdHkgb2YgYW4gaW5mbGlnaHQK LQkgKiByZXF1ZXN0IHdlIHdhbnRlZCB0byBwcmVlbXB0IGJ1dCBzaW5jZSBjb21wbGV0ZWQsIGF0 IHRoZSB0aW1lIG9mCi0JICogZGVxdWV1aW5nIHRoZSBwcmlvcml0eSBoaW50IG1heSBubyBsb25n ZXIgbWF5IG1hdGNoIHRoZSBoaWdoZXN0Ci0JICogYXZhaWxhYmxlIHJlcXVlc3QgcHJpb3JpdHku Ci0JICovCi0JaW50IHF1ZXVlX3ByaW9yaXR5X2hpbnQ7Ci0KLQkvKioKLQkgKiBAcXVldWU6IHF1 ZXVlIG9mIHJlcXVlc3RzLCBpbiBwcmlvcml0eSBsaXN0cwotCSAqLwotCXN0cnVjdCByYl9yb290 X2NhY2hlZCBxdWV1ZTsKLQotCS8qKgotCSAqIEBjc2Jfd3JpdGU6IGNvbnRyb2wgcmVnaXN0ZXIg Zm9yIENvbnRleHQgU3dpdGNoIGJ1ZmZlcgotCSAqCi0JICogTm90ZSB0aGlzIHJlZ2lzdGVyIG1h eSBiZSBlaXRoZXIgbW1pbyBvciBIV1NQIHNoYWRvdy4KLQkgKi8KLQl1MzIgKmNzYl93cml0ZTsK LQotCS8qKgotCSAqIEBjc2Jfc3RhdHVzOiBzdGF0dXMgYXJyYXkgZm9yIENvbnRleHQgU3dpdGNo IGJ1ZmZlcgotCSAqCi0JICogTm90ZSB0aGVzZSByZWdpc3RlciBtYXkgYmUgZWl0aGVyIG1taW8g b3IgSFdTUCBzaGFkb3cuCi0JICovCi0JdTMyICpjc2Jfc3RhdHVzOwotCi0JLyoqCi0JICogQHBy ZWVtcHRfY29tcGxldGVfc3RhdHVzOiBleHBlY3RlZCBDU0IgdXBvbiBjb21wbGV0aW5nIHByZWVt cHRpb24KLQkgKi8KLQl1MzIgcHJlZW1wdF9jb21wbGV0ZV9zdGF0dXM7Ci0KLQkvKioKLQkgKiBA Y3NiX2hlYWQ6IGNvbnRleHQgc3RhdHVzIGJ1ZmZlciBoZWFkCi0JICovCi0JdTggY3NiX2hlYWQ7 Ci0KLQlJOTE1X1NFTEZURVNUX0RFQ0xBUkUoc3RydWN0IHN0X3ByZWVtcHRfaGFuZyBwcmVlbXB0 X2hhbmc7KQotfTsKLQotI2RlZmluZSBJTlRFTF9FTkdJTkVfQ1NfTUFYX05BTUUgOAotCi1zdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKLQlj aGFyIG5hbWVbSU5URUxfRU5HSU5FX0NTX01BWF9OQU1FXTsKLQotCWVudW0gaW50ZWxfZW5naW5l X2lkIGlkOwotCXVuc2lnbmVkIGludCBod19pZDsKLQl1bnNpZ25lZCBpbnQgZ3VjX2lkOwotCWlu dGVsX2VuZ2luZV9tYXNrX3QgbWFzazsKLQotCXU4IHVhYmlfY2xhc3M7Ci0KLQl1OCBjbGFzczsK LQl1OCBpbnN0YW5jZTsKLQl1MzIgY29udGV4dF9zaXplOwotCXUzMiBtbWlvX2Jhc2U7Ci0KLQlz dHJ1Y3QgaW50ZWxfcmluZyAqYnVmZmVyOwotCi0Jc3RydWN0IGk5MTVfdGltZWxpbmUgdGltZWxp bmU7Ci0KLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqZGVmYXVsdF9zdGF0ZTsKLQl2b2lk ICpwaW5uZWRfZGVmYXVsdF9zdGF0ZTsKLQotCS8qIFJhdGhlciB0aGFuIGhhdmUgZXZlcnkgY2xp ZW50IHdhaXQgdXBvbiBhbGwgdXNlciBpbnRlcnJ1cHRzLAotCSAqIHdpdGggdGhlIGhlcmQgd2Fr aW5nIGFmdGVyIGV2ZXJ5IGludGVycnVwdCBhbmQgZWFjaCBkb2luZyB0aGUKLQkgKiBoZWF2eXdl aWdodCBzZXFubyBkYW5jZSwgd2UgZGVsZWdhdGUgdGhlIHRhc2sgKG9mIGJlaW5nIHRoZQotCSAq IGJvdHRvbS1oYWxmIG9mIHRoZSB1c2VyIGludGVycnVwdCkgdG8gdGhlIGZpcnN0IGNsaWVudC4g QWZ0ZXIKLQkgKiBldmVyeSBpbnRlcnJ1cHQsIHdlIHdha2UgdXAgb25lIGNsaWVudCwgd2hvIGRv ZXMgdGhlIGhlYXZ5d2VpZ2h0Ci0JICogY29oZXJlbnQgc2Vxbm8gcmVhZCBhbmQgZWl0aGVyIGdv ZXMgYmFjayB0byBzbGVlcCAoaWYgaW5jb21wbGV0ZSksCi0JICogb3Igd2FrZXMgdXAgYWxsIHRo ZSBjb21wbGV0ZWQgY2xpZW50cyBpbiBwYXJhbGxlbCwgYmVmb3JlIHRoZW4KLQkgKiB0cmFuc2Zl cnJpbmcgdGhlIGJvdHRvbS1oYWxmIHN0YXR1cyB0byB0aGUgbmV4dCBjbGllbnQgaW4gdGhlIHF1 ZXVlLgotCSAqCi0JICogQ29tcGFyZWQgdG8gd2Fsa2luZyB0aGUgZW50aXJlIGxpc3Qgb2Ygd2Fp dGVycyBpbiBhIHNpbmdsZSBkZWRpY2F0ZWQKLQkgKiBib3R0b20taGFsZiwgd2UgcmVkdWNlIHRo ZSBsYXRlbmN5IG9mIHRoZSBmaXJzdCB3YWl0ZXIgYnkgYXZvaWRpbmcKLQkgKiBhIGNvbnRleHQg c3dpdGNoLCBidXQgaW5jdXIgYWRkaXRpb25hbCBjb2hlcmVudCBzZXFubyByZWFkcyB3aGVuCi0J ICogZm9sbG93aW5nIHRoZSBjaGFpbiBvZiByZXF1ZXN0IGJyZWFkY3J1bWJzLiBTaW5jZSBpdCBp cyBtb3N0IGxpa2VseQotCSAqIHRoYXQgd2UgaGF2ZSBhIHNpbmdsZSBjbGllbnQgd2FpdGluZyBv biBlYWNoIHNlcW5vLCB0aGVuIHJlZHVjaW5nCi0JICogdGhlIG92ZXJoZWFkIG9mIHdha2luZyB0 aGF0IGNsaWVudCBpcyBtdWNoIHByZWZlcnJlZC4KLQkgKi8KLQlzdHJ1Y3QgaW50ZWxfYnJlYWRj cnVtYnMgewotCQlzcGlubG9ja190IGlycV9sb2NrOwotCQlzdHJ1Y3QgbGlzdF9oZWFkIHNpZ25h bGVyczsKLQotCQlzdHJ1Y3QgaXJxX3dvcmsgaXJxX3dvcms7IC8qIGZvciB1c2UgZnJvbSBpbnNp ZGUgaXJxX2xvY2sgKi8KLQotCQl1bnNpZ25lZCBpbnQgaXJxX2VuYWJsZWQ7Ci0KLQkJYm9vbCBp cnFfYXJtZWQ7Ci0JfSBicmVhZGNydW1iczsKLQotCXN0cnVjdCBpbnRlbF9lbmdpbmVfcG11IHsK LQkJLyoqCi0JCSAqIEBlbmFibGU6IEJpdG1hc2sgb2YgZW5hYmxlIHNhbXBsZSBldmVudHMgb24g dGhpcyBlbmdpbmUuCi0JCSAqCi0JCSAqIEJpdHMgY29ycmVzcG9uZCB0byBzYW1wbGUgZXZlbnQg dHlwZXMsIGZvciBpbnN0YW5jZQotCQkgKiBJOTE1X1NBTVBMRV9RVUVVRUQgaXMgYml0IDAgZXRj LgotCQkgKi8KLQkJdTMyIGVuYWJsZTsKLQkJLyoqCi0JCSAqIEBlbmFibGVfY291bnQ6IFJlZmVy ZW5jZSBjb3VudCBmb3IgdGhlIGVuYWJsZWQgc2FtcGxlcnMuCi0JCSAqCi0JCSAqIEluZGV4IG51 bWJlciBjb3JyZXNwb25kcyB0byBAZW51bSBkcm1faTkxNV9wbXVfZW5naW5lX3NhbXBsZS4KLQkJ ICovCi0JCXVuc2lnbmVkIGludCBlbmFibGVfY291bnRbSTkxNV9FTkdJTkVfU0FNUExFX0NPVU5U XTsKLQkJLyoqCi0JCSAqIEBzYW1wbGU6IENvdW50ZXIgdmFsdWVzIGZvciBzYW1wbGluZyBldmVu dHMuCi0JCSAqCi0JCSAqIE91ciBpbnRlcm5hbCB0aW1lciBzdG9yZXMgdGhlIGN1cnJlbnQgY291 bnRlcnMgaW4gdGhpcyBmaWVsZC4KLQkJICoKLQkJICogSW5kZXggbnVtYmVyIGNvcnJlc3BvbmRz IHRvIEBlbnVtIGRybV9pOTE1X3BtdV9lbmdpbmVfc2FtcGxlLgotCQkgKi8KLQkJc3RydWN0IGk5 MTVfcG11X3NhbXBsZSBzYW1wbGVbSTkxNV9FTkdJTkVfU0FNUExFX0NPVU5UXTsKLQl9IHBtdTsK LQotCS8qCi0JICogQSBwb29sIG9mIG9iamVjdHMgdG8gdXNlIGFzIHNoYWRvdyBjb3BpZXMgb2Yg Y2xpZW50IGJhdGNoIGJ1ZmZlcnMKLQkgKiB3aGVuIHRoZSBjb21tYW5kIHBhcnNlciBpcyBlbmFi bGVkLiBQcmV2ZW50cyB0aGUgY2xpZW50IGZyb20KLQkgKiBtb2RpZnlpbmcgdGhlIGJhdGNoIGNv bnRlbnRzIGFmdGVyIHNvZnR3YXJlIHBhcnNpbmcuCi0JICovCi0Jc3RydWN0IGk5MTVfZ2VtX2Jh dGNoX3Bvb2wgYmF0Y2hfcG9vbDsKLQotCXN0cnVjdCBpbnRlbF9od19zdGF0dXNfcGFnZSBzdGF0 dXNfcGFnZTsKLQlzdHJ1Y3QgaTkxNV9jdHhfd29ya2Fyb3VuZHMgd2FfY3R4OwotCXN0cnVjdCBp OTE1X3dhX2xpc3QgY3R4X3dhX2xpc3Q7Ci0Jc3RydWN0IGk5MTVfd2FfbGlzdCB3YV9saXN0Owot CXN0cnVjdCBpOTE1X3dhX2xpc3Qgd2hpdGVsaXN0OwotCi0JdTMyICAgICAgICAgICAgIGlycV9r ZWVwX21hc2s7IC8qIGFsd2F5cyBrZWVwIHRoZXNlIGludGVycnVwdHMgKi8KLQl1MzIJCWlycV9l bmFibGVfbWFzazsgLyogYml0bWFzayB0byBlbmFibGUgcmluZyBpbnRlcnJ1cHQgKi8KLQl2b2lk CQkoKmlycV9lbmFibGUpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Ci0Jdm9pZAkJ KCppcnFfZGlzYWJsZSkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKLQotCWludAkJ KCppbml0X2h3KShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwotCi0Jc3RydWN0IHsK LQkJdm9pZCAoKnByZXBhcmUpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Ci0JCXZv aWQgKCpyZXNldCkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBib29sIHN0YWxsZWQp OwotCQl2b2lkICgqZmluaXNoKShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwotCX0g cmVzZXQ7Ci0KLQl2b2lkCQkoKnBhcmspKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7 Ci0Jdm9pZAkJKCp1bnBhcmspKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Ci0KLQl2 b2lkCQkoKnNldF9kZWZhdWx0X3N1Ym1pc3Npb24pKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSk7Ci0KLQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqKCpjb250ZXh0X3Bpbikoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLAotCQkJCQkgICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHgpOwotCi0JaW50CQkoKnJlcXVlc3RfYWxsb2MpKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx KTsKLQlpbnQJCSgqaW5pdF9jb250ZXh0KShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSk7Ci0KLQlp bnQJCSgqZW1pdF9mbHVzaCkoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCwgdTMyIG1vZGUp OwotI2RlZmluZSBFTUlUX0lOVkFMSURBVEUJQklUKDApCi0jZGVmaW5lIEVNSVRfRkxVU0gJQklU KDEpCi0jZGVmaW5lIEVNSVRfQkFSUklFUgkoRU1JVF9JTlZBTElEQVRFIHwgRU1JVF9GTFVTSCkK LQlpbnQJCSgqZW1pdF9iYl9zdGFydCkoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCi0JCQkJCSB1 NjQgb2Zmc2V0LCB1MzIgbGVuZ3RoLAotCQkJCQkgdW5zaWduZWQgaW50IGRpc3BhdGNoX2ZsYWdz KTsKLSNkZWZpbmUgSTkxNV9ESVNQQVRDSF9TRUNVUkUgQklUKDApCi0jZGVmaW5lIEk5MTVfRElT UEFUQ0hfUElOTkVEIEJJVCgxKQotCWludAkJICgqZW1pdF9pbml0X2JyZWFkY3J1bWIpKHN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxKTsKLQl1MzIJCSooKmVtaXRfZmluaV9icmVhZGNydW1iKShzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpycSwKLQkJCQkJCSB1MzIgKmNzKTsKLQl1bnNpZ25lZCBpbnQJZW1p dF9maW5pX2JyZWFkY3J1bWJfZHc7Ci0KLQkvKiBQYXNzIHRoZSByZXF1ZXN0IHRvIHRoZSBoYXJk d2FyZSBxdWV1ZSAoZS5nLiBkaXJlY3RseSBpbnRvCi0JICogdGhlIGxlZ2FjeSByaW5nYnVmZmVy IG9yIHRvIHRoZSBlbmQgb2YgYW4gZXhlY2xpc3QpLgotCSAqCi0JICogVGhpcyBpcyBjYWxsZWQg ZnJvbSBhbiBhdG9taWMgY29udGV4dCB3aXRoIGlycXMgZGlzYWJsZWQ7IG11c3QKLQkgKiBiZSBp cnEgc2FmZS4KLQkgKi8KLQl2b2lkCQkoKnN1Ym1pdF9yZXF1ZXN0KShzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSk7Ci0KLQkvKgotCSAqIENhbGwgd2hlbiB0aGUgcHJpb3JpdHkgb24gYSByZXF1ZXN0 IGhhcyBjaGFuZ2VkIGFuZCBpdCBhbmQgaXRzCi0JICogZGVwZW5kZW5jaWVzIG1heSBuZWVkIHJl c2NoZWR1bGluZy4gTm90ZSB0aGUgcmVxdWVzdCBpdHNlbGYgbWF5Ci0JICogbm90IGJlIHJlYWR5 IHRvIHJ1biEKLQkgKi8KLQl2b2lkCQkoKnNjaGVkdWxlKShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy ZXF1ZXN0LAotCQkJCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9zY2hlZF9hdHRyICphdHRyKTsKLQot CS8qCi0JICogQ2FuY2VsIGFsbCByZXF1ZXN0cyBvbiB0aGUgaGFyZHdhcmUsIG9yIHF1ZXVlZCBm b3IgZXhlY3V0aW9uLgotCSAqIFRoaXMgc2hvdWxkIG9ubHkgY2FuY2VsIHRoZSByZWFkeSByZXF1 ZXN0cyB0aGF0IGhhdmUgYmVlbgotCSAqIHN1Ym1pdHRlZCB0byB0aGUgZW5naW5lICh2aWEgdGhl IGVuZ2luZS0+c3VibWl0X3JlcXVlc3QgY2FsbGJhY2spLgotCSAqIFRoaXMgaXMgY2FsbGVkIHdo ZW4gbWFya2luZyB0aGUgZGV2aWNlIGFzIHdlZGdlZC4KLQkgKi8KLQl2b2lkCQkoKmNhbmNlbF9y ZXF1ZXN0cykoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKLQotCXZvaWQJCSgqY2xl YW51cCkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKLQotCXN0cnVjdCBpbnRlbF9l bmdpbmVfZXhlY2xpc3RzIGV4ZWNsaXN0czsKLQotCS8qIENvbnRleHRzIGFyZSBwaW5uZWQgd2hp bHN0IHRoZXkgYXJlIGFjdGl2ZSBvbiB0aGUgR1BVLiBUaGUgbGFzdAotCSAqIGNvbnRleHQgZXhl Y3V0ZWQgcmVtYWlucyBhY3RpdmUgd2hpbHN0IHRoZSBHUFUgaXMgaWRsZSAtIHRoZQotCSAqIHN3 aXRjaCBhd2F5IGFuZCB3cml0ZSB0byB0aGUgY29udGV4dCBvYmplY3Qgb25seSBvY2N1cnMgb24g dGhlCi0JICogbmV4dCBleGVjdXRpb24uICBDb250ZXh0cyBhcmUgb25seSB1bnBpbm5lZCBvbiBy ZXRpcmVtZW50IG9mIHRoZQotCSAqIGZvbGxvd2luZyByZXF1ZXN0IGVuc3VyaW5nIHRoYXQgd2Ug Y2FuIGFsd2F5cyB3cml0ZSB0byB0aGUgb2JqZWN0Ci0JICogb24gdGhlIGNvbnRleHQgc3dpdGNo IGV2ZW4gYWZ0ZXIgaWRsaW5nLiBBY3Jvc3Mgc3VzcGVuZCwgd2Ugc3dpdGNoCi0JICogdG8gdGhl IGtlcm5lbCBjb250ZXh0IGFuZCB0cmFzaCBpdCBhcyB0aGUgc2F2ZSBtYXkgbm90IGhhcHBlbgot CSAqIGJlZm9yZSB0aGUgaGFyZHdhcmUgaXMgcG93ZXJlZCBkb3duLgotCSAqLwotCXN0cnVjdCBp bnRlbF9jb250ZXh0ICpsYXN0X3JldGlyZWRfY29udGV4dDsKLQotCS8qIHN0YXR1c19ub3RpZmll cjogbGlzdCBvZiBjYWxsYmFja3MgZm9yIGNvbnRleHQtc3dpdGNoIGNoYW5nZXMgKi8KLQlzdHJ1 Y3QgYXRvbWljX25vdGlmaWVyX2hlYWQgY29udGV4dF9zdGF0dXNfbm90aWZpZXI7Ci0KLQlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2hhbmdjaGVjayBoYW5nY2hlY2s7Ci0KLSNkZWZpbmUgSTkxNV9FTkdJ TkVfTkVFRFNfQ01EX1BBUlNFUiBCSVQoMCkKLSNkZWZpbmUgSTkxNV9FTkdJTkVfU1VQUE9SVFNf U1RBVFMgICBCSVQoMSkKLSNkZWZpbmUgSTkxNV9FTkdJTkVfSEFTX1BSRUVNUFRJT04gICBCSVQo MikKLSNkZWZpbmUgSTkxNV9FTkdJTkVfSEFTX1NFTUFQSE9SRVMgICBCSVQoMykKLQl1bnNpZ25l ZCBpbnQgZmxhZ3M7Ci0KLQkvKgotCSAqIFRhYmxlIG9mIGNvbW1hbmRzIHRoZSBjb21tYW5kIHBh cnNlciBuZWVkcyB0byBrbm93IGFib3V0Ci0JICogZm9yIHRoaXMgZW5naW5lLgotCSAqLwotCURF Q0xBUkVfSEFTSFRBQkxFKGNtZF9oYXNoLCBJOTE1X0NNRF9IQVNIX09SREVSKTsKLQotCS8qCi0J ICogVGFibGUgb2YgcmVnaXN0ZXJzIGFsbG93ZWQgaW4gY29tbWFuZHMgdGhhdCByZWFkL3dyaXRl IHJlZ2lzdGVycy4KLQkgKi8KLQljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcmVnX3RhYmxlICpyZWdf dGFibGVzOwotCWludCByZWdfdGFibGVfY291bnQ7Ci0KLQkvKgotCSAqIFJldHVybnMgdGhlIGJp dG1hc2sgZm9yIHRoZSBsZW5ndGggZmllbGQgb2YgdGhlIHNwZWNpZmllZCBjb21tYW5kLgotCSAq IFJldHVybiAwIGZvciBhbiB1bnJlY29nbml6ZWQvaW52YWxpZCBjb21tYW5kLgotCSAqCi0JICog SWYgdGhlIGNvbW1hbmQgcGFyc2VyIGZpbmRzIGFuIGVudHJ5IGZvciBhIGNvbW1hbmQgaW4gdGhl IGVuZ2luZSdzCi0JICogY21kX3RhYmxlcywgaXQgZ2V0cyB0aGUgY29tbWFuZCdzIGxlbmd0aCBi YXNlZCBvbiB0aGUgdGFibGUgZW50cnkuCi0JICogSWYgbm90LCBpdCBjYWxscyB0aGlzIGZ1bmN0 aW9uIHRvIGRldGVybWluZSB0aGUgcGVyLWVuZ2luZSBsZW5ndGgKLQkgKiBmaWVsZCBlbmNvZGlu ZyBmb3IgdGhlIGNvbW1hbmQgKGkuZS4gZGlmZmVyZW50IG9wY29kZSByYW5nZXMgdXNlCi0JICog Y2VydGFpbiBiaXRzIHRvIGVuY29kZSB0aGUgY29tbWFuZCBsZW5ndGggaW4gdGhlIGhlYWRlciku Ci0JICovCi0JdTMyICgqZ2V0X2NtZF9sZW5ndGhfbWFzaykodTMyIGNtZF9oZWFkZXIpOwotCi0J c3RydWN0IHsKLQkJLyoqCi0JCSAqIEBsb2NrOiBMb2NrIHByb3RlY3RpbmcgdGhlIGJlbG93IGZp ZWxkcy4KLQkJICovCi0JCXNlcWxvY2tfdCBsb2NrOwotCQkvKioKLQkJICogQGVuYWJsZWQ6IFJl ZmVyZW5jZSBjb3VudCBpbmRpY2F0aW5nIG51bWJlciBvZiBsaXN0ZW5lcnMuCi0JCSAqLwotCQl1 bnNpZ25lZCBpbnQgZW5hYmxlZDsKLQkJLyoqCi0JCSAqIEBhY3RpdmU6IE51bWJlciBvZiBjb250 ZXh0cyBjdXJyZW50bHkgc2NoZWR1bGVkIGluLgotCQkgKi8KLQkJdW5zaWduZWQgaW50IGFjdGl2 ZTsKLQkJLyoqCi0JCSAqIEBlbmFibGVkX2F0OiBUaW1lc3RhbXAgd2hlbiBidXN5IHN0YXRzIHdl cmUgZW5hYmxlZC4KLQkJICovCi0JCWt0aW1lX3QgZW5hYmxlZF9hdDsKLQkJLyoqCi0JCSAqIEBz dGFydDogVGltZXN0YW1wIG9mIHRoZSBsYXN0IGlkbGUgdG8gYWN0aXZlIHRyYW5zaXRpb24uCi0J CSAqCi0JCSAqIElkbGUgaXMgZGVmaW5lZCBhcyBhY3RpdmUgPT0gMCwgYWN0aXZlIGlzIGFjdGl2 ZSA+IDAuCi0JCSAqLwotCQlrdGltZV90IHN0YXJ0OwotCQkvKioKLQkJICogQHRvdGFsOiBUb3Rh bCB0aW1lIHRoaXMgZW5naW5lIHdhcyBidXN5LgotCQkgKgotCQkgKiBBY2N1bXVsYXRlZCB0aW1l IG5vdCBjb3VudGluZyB0aGUgbW9zdCByZWNlbnQgYmxvY2sgaW4gY2FzZXMKLQkJICogd2hlcmUg ZW5naW5lIGlzIGN1cnJlbnRseSBidXN5IChhY3RpdmUgPiAwKS4KLQkJICovCi0JCWt0aW1lX3Qg dG90YWw7Ci0JfSBzdGF0czsKLX07Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbAotaW50ZWxfZW5naW5l X25lZWRzX2NtZF9wYXJzZXIoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQot ewotCXJldHVybiBlbmdpbmUtPmZsYWdzICYgSTkxNV9FTkdJTkVfTkVFRFNfQ01EX1BBUlNFUjsK LX0KLQotc3RhdGljIGlubGluZSBib29sCi1pbnRlbF9lbmdpbmVfc3VwcG9ydHNfc3RhdHMoY29u c3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQotewotCXJldHVybiBlbmdpbmUtPmZs YWdzICYgSTkxNV9FTkdJTkVfU1VQUE9SVFNfU1RBVFM7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9v bAotaW50ZWxfZW5naW5lX2hhc19wcmVlbXB0aW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKLXsKLQlyZXR1cm4gZW5naW5lLT5mbGFncyAmIEk5MTVfRU5HSU5FX0hBU19Q UkVFTVBUSU9OOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wKLWludGVsX2VuZ2luZV9oYXNfc2Vt YXBob3Jlcyhjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCi17Ci0JcmV0dXJu IGVuZ2luZS0+ZmxhZ3MgJiBJOTE1X0VOR0lORV9IQVNfU0VNQVBIT1JFUzsKLX0KLQogdm9pZCBp bnRlbF9lbmdpbmVzX3NldF9zY2hlZHVsZXJfY2FwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSk7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBfX2V4ZWNsaXN0c19uZWVkX3ByZWVtcHQoaW50 IHByaW8sIGludCBsYXN0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf d29ya2Fyb3VuZHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmgK aW5kZXggN2M3MzQ3MTRiMDVlLi5hMWJmNTFjNjExYTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3dvcmthcm91bmRzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfd29ya2Fyb3VuZHMuaApAQCAtOSwxOCArOSw3IEBACiAKICNpbmNsdWRlIDxsaW51eC9z bGFiLmg+CiAKLXN0cnVjdCBpOTE1X3dhIHsKLQlpOTE1X3JlZ190CSAgcmVnOwotCXUzMgkJICBt YXNrOwotCXUzMgkJICB2YWw7Ci19OwotCi1zdHJ1Y3QgaTkxNV93YV9saXN0IHsKLQljb25zdCBj aGFyCSpuYW1lOwotCXN0cnVjdCBpOTE1X3dhCSpsaXN0OwotCXVuc2lnbmVkIGludAljb3VudDsK LQl1bnNpZ25lZCBpbnQJd2FfY291bnQ7Ci19OworI2luY2x1ZGUgImludGVsX3dvcmthcm91bmRz X3R5cGVzLmgiCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF93YV9saXN0X2ZyZWUoc3RydWN0 IGk5MTVfd2FfbGlzdCAqd2FsKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfd29ya2Fyb3VuZHNfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3dv cmthcm91bmRzX3R5cGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw Li4zMDkxOGRhMTgwZmYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF93b3JrYXJvdW5kc190eXBlcy5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogTUlUCisgKgorICogQ29weXJpZ2h0IMKpIDIwMTQtMjAxOCBJbnRl bCBDb3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYgX19JTlRFTF9XT1JLQVJPVU5EU19UWVBFU19I X18KKyNkZWZpbmUgX19JTlRFTF9XT1JLQVJPVU5EU19UWVBFU19IX18KKworI2luY2x1ZGUgPGxp bnV4L3R5cGVzLmg+CisKKyNpbmNsdWRlICJpOTE1X3JlZy5oIgorCitzdHJ1Y3QgaTkxNV93YSB7 CisJaTkxNV9yZWdfdAkgIHJlZzsKKwl1MzIJCSAgbWFzazsKKwl1MzIJCSAgdmFsOworfTsKKwor c3RydWN0IGk5MTVfd2FfbGlzdCB7CisJY29uc3QgY2hhcgkqbmFtZTsKKwlzdHJ1Y3QgaTkxNV93 YQkqbGlzdDsKKwl1bnNpZ25lZCBpbnQJY291bnQ7CisJdW5zaWduZWQgaW50CXdhX2NvdW50Owor fTsKKworI2VuZGlmIC8qIF9fSU5URUxfV09SS0FST1VORFNfVFlQRVNfSF9fICovCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS90ZXN0X2k5MTVfYWN0aXZlX3R5cGVzX3N0YW5kYWxv bmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Rlc3RfaTkxNV9hY3RpdmVfdHlwZXNfc3RhbmRh bG9uZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTQ0ZWJkMTUz ZTU3Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvdGVzdF9pOTE1X2Fj dGl2ZV90eXBlc19zdGFuZGFsb25lLmMKQEAgLTAsMCArMSw3IEBACisvKgorICogU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IE1JVAorICoKKyAqIENvcHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBv cmF0aW9uCisgKi8KKworI2luY2x1ZGUgImk5MTVfYWN0aXZlX3R5cGVzLmgiCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS90ZXN0X2k5MTVfZ2VtX2NvbnRleHRfdHlwZXNfc3RhbmRh bG9uZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvdGVzdF9pOTE1X2dlbV9jb250ZXh0X3R5cGVz X3N0YW5kYWxvbmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRl NGRhNDg2MGJjMgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Rlc3Rf aTkxNV9nZW1fY29udGV4dF90eXBlc19zdGFuZGFsb25lLmMKQEAgLTAsMCArMSw3IEBACisvKgor ICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorICoKKyAqIENvcHlyaWdodCDCqSAyMDE5 IEludGVsIENvcnBvcmF0aW9uCisgKi8KKworI2luY2x1ZGUgImk5MTVfZ2VtX2NvbnRleHRfdHlw ZXMuaCIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Rlc3RfaTkxNV90aW1lbGlu ZV90eXBlc19zdGFuZGFsb25lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS90ZXN0X2k5MTVfdGlt ZWxpbmVfdHlwZXNfc3RhbmRhbG9uZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uZjU4ZTE0OGU4OTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvdGVzdF9pOTE1X3RpbWVsaW5lX3R5cGVzX3N0YW5kYWxvbmUuYwpAQCAtMCwwICsxLDcg QEAKKy8qCisgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisgKgorICogQ29weXJpZ2h0 IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaW5jbHVkZSAiaTkxNV90aW1lbGlu ZV90eXBlcy5oIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvdGVzdF9pbnRlbF9j b250ZXh0X3R5cGVzX3N0YW5kYWxvbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Rlc3RfaW50 ZWxfY29udGV4dF90eXBlc19zdGFuZGFsb25lLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi5iMzllM2M0ZTY1NTEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS90ZXN0X2ludGVsX2NvbnRleHRfdHlwZXNfc3RhbmRhbG9uZS5jCkBAIC0wLDAg KzEsNyBAQAorLyoKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKyAqCisgKiBDb3B5 cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpbmNsdWRlICJpbnRlbF9j b250ZXh0X3R5cGVzLmgiCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS90ZXN0X2lu dGVsX2VuZ2luZV90eXBlc19zdGFuZGFsb25lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS90ZXN0 X2ludGVsX2VuZ2luZV90eXBlc19zdGFuZGFsb25lLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi5kMDVlNGNkY2JjZjkKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS90ZXN0X2ludGVsX2VuZ2luZV90eXBlc19zdGFuZGFsb25lLmMKQEAgLTAs MCArMSw3IEBACisvKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorICoKKyAqIENv cHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCisgKi8KKworI2luY2x1ZGUgImludGVs X2VuZ2luZV90eXBlcy5oIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvdGVzdF9p bnRlbF93b3JrYXJvdW5kc190eXBlc19zdGFuZGFsb25lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS90ZXN0X2ludGVsX3dvcmthcm91bmRzX3R5cGVzX3N0YW5kYWxvbmUuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRmNjU4YmIwMDgyNQotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Rlc3RfaW50ZWxfd29ya2Fyb3VuZHNfdHlwZXNfc3Rh bmRhbG9uZS5jCkBAIC0wLDAgKzEsNyBAQAorLyoKKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBNSVQKKyAqCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisK KyNpbmNsdWRlICJpbnRlbF93b3JrYXJvdW5kc190eXBlcy5oIgotLSAKMi4yMC4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=