From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 11/17] drm/i915/gt: Move the [class][inst] lookup for engines onto the GT Date: Tue, 30 Jul 2019 14:30:29 +0100 Message-ID: <20190730133035.1977-12-chris@chris-wilson.co.uk> References: <20190730133035.1977-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 A97436E50D for ; Tue, 30 Jul 2019 13:30:56 +0000 (UTC) In-Reply-To: <20190730133035.1977-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 List-Id: intel-gfx@lists.freedesktop.org VG8gbWFpbnRhaW4gYSBmYXN0IGxvb2t1cCBmcm9tIGEgR1QgY2VudHJpYyBpcnEgaGFuZGxlciwg d2Ugd2FudCB0aGUKZW5naW5lIGxvb2t1cCB0YWJsZXMgb24gdGhlIGludGVsX2d0LiBUbyBhdm9p ZCBoYXZpbmcgbXVsdGlwbGUgY29waWVzIG9mCnRoZSBzYW1lIG11bHRpLWRpbWVuc2lvbiBsb29r dXAgdGFibGUsIG1vdmUgdGhlIGdlbmVyaWMgdXNlciBlbmdpbmUKbG9va3VwIGludG8gYW4gcmJ0 cmVlIChmb3IgZmFzdCBhbmQgZmxleGlibGUgaW5kZXhpbmcpLgoKdjI6IFNwbGl0IHVhYmlfaW5z dGFuY2UgY2YgdWFiaV9jbGFzcwp2MzogU2V0IHVhYmlfY2xhc3MvdWFiaV9pbnN0YW5jZSBhZnRl ciBjb2xsYXRpbmcgYWxsIGVuZ2luZXMgdG8gcHJvdmlkZSBhCnN0YWJsZSB1YWJpIGFjcm9zcyBw YXJhbGxlbCB1bm9yZGVyZWQgY29uc3RydWN0aW9uLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2ls c29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtv LnVyc3VsaW5AaW50ZWwuY29tPgpDYzogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5j ZXJhb2xvc3B1cmlvQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IERhbmllbGUgQ2VyYW9sbyBTcHVy aW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+ICN2MgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2VuZ2luZS5oICAgICAgICB8ICAgNiAtCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyAgICAgfCAxMDkgKystLS0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaCAgfCAgIDkgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV91c2VyLmMgICB8IDIyOCArKysrKysrKysrKysrKysr KysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV91c2VyLmggICB8ICAyMyAr KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaCAgICAgIHwgICA0ICsK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jICAgICAgICB8ICAxNSArLQog Li4uL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jICAgIHwgICAxICsKIC4u Li9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyB8ICAgMiArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMgICAgICAgIHwgICAzICstCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgICAgfCAgMjMgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAgfCAgMTUgKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICAgICB8ICAyMiArLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BlcmYuYyAgICAgICAgICAgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcG11LmMgICAgICAgICAgICAgICB8ICAxMSArLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9xdWVyeS5jICAgICAgICAgICAgIHwgICA1ICstCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3RyYWNlLmggICAgICAgICAgICAgfCAgMTAgKy0KIDIxIGZpbGVzIGNoYW5n ZWQsIDMzMCBpbnNlcnRpb25zKCspLCAxNjYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3VzZXIuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV91c2VyLmgKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L01ha2VmaWxlCmluZGV4IDMzMWIxOWNjODI0Ny4uMjJmN2ViM2Q3ODlmIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9NYWtlZmlsZQpAQCAtNzMsNiArNzMsNyBAQCBndC15ICs9IFwKIAlndC9pbnRlbF9jb250 ZXh0Lm8gXAogCWd0L2ludGVsX2VuZ2luZV9jcy5vIFwKIAlndC9pbnRlbF9lbmdpbmVfcG0ubyBc CisJZ3QvaW50ZWxfZW5naW5lX3VzZXIubyBcCiAJZ3QvaW50ZWxfZ3QubyBcCiAJZ3QvaW50ZWxf Z3RfcG0ubyBcCiAJZ3QvaW50ZWxfaGFuZ2NoZWNrLm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMKaW5kZXggMmU4Y2VkY2UwNTlmLi41NzVmZjY0ZTFlNGEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtNzAs NiArNzAsNyBAQAogI2luY2x1ZGUgPGRybS9pOTE1X2RybS5oPgogCiAjaW5jbHVkZSAiZ3QvaW50 ZWxfbHJjX3JlZy5oIgorI2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV91c2VyLmgiCiAKICNpbmNs dWRlICJpOTE1X2dlbV9jb250ZXh0LmgiCiAjaW5jbHVkZSAiaTkxNV9nbG9iYWxzLmgiCkBAIC0x NzM2LDcgKzE3MzcsNyBAQCBnZXRfZW5naW5lcyhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 LAogCiAJCWlmIChlLT5lbmdpbmVzW25dKSB7CiAJCQljaS5lbmdpbmVfY2xhc3MgPSBlLT5lbmdp bmVzW25dLT5lbmdpbmUtPnVhYmlfY2xhc3M7Ci0JCQljaS5lbmdpbmVfaW5zdGFuY2UgPSBlLT5l bmdpbmVzW25dLT5lbmdpbmUtPmluc3RhbmNlOworCQkJY2kuZW5naW5lX2luc3RhbmNlID0gZS0+ ZW5naW5lc1tuXS0+ZW5naW5lLT51YWJpX2luc3RhbmNlOwogCQl9CiAKIAkJaWYgKGNvcHlfdG9f dXNlcigmdXNlci0+ZW5naW5lc1tuXSwgJmNpLCBzaXplb2YoY2kpKSkgewpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9lbmdpbmUuaAppbmRleCBkYjVjNzNjZTg2ZWUuLjAxZThjOGE2MzI4YSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lLmgKQEAgLTEyMyw4ICsxMjMsNiBA QCBoYW5nY2hlY2tfYWN0aW9uX3RvX3N0cihjb25zdCBlbnVtIGludGVsX2VuZ2luZV9oYW5nY2hl Y2tfYWN0aW9uIGEpCiAJcmV0dXJuICJ1bmtub3duIjsKIH0KIAotdm9pZCBpbnRlbF9lbmdpbmVz X3NldF9zY2hlZHVsZXJfY2FwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Ci0KIHN0 YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50CiBleGVjbGlzdHNfbnVtX3BvcnRzKGNvbnN0IHN0cnVj dCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzKQogewpAQCAtNDIzLDcg KzQyMSw2IEBAIGJvb2wgaW50ZWxfZW5naW5lX2lzX2lkbGUoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKTsKIGJvb2wgaW50ZWxfZW5naW5lc19hcmVfaWRsZShzdHJ1Y3QgaW50ZWxfZ3Qg Kmd0KTsKIAogdm9pZCBpbnRlbF9lbmdpbmVzX3Jlc2V0X2RlZmF1bHRfc3VibWlzc2lvbihzdHJ1 Y3QgaW50ZWxfZ3QgKmd0KTsKLXVuc2lnbmVkIGludCBpbnRlbF9lbmdpbmVzX2hhc19jb250ZXh0 X2lzb2xhdGlvbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CiAKIGJvb2wgaW50ZWxf ZW5naW5lX2Nhbl9zdG9yZV9kd29yZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwog CkBAIC00MzIsOSArNDI5LDYgQEAgdm9pZCBpbnRlbF9lbmdpbmVfZHVtcChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsCiAJCSAgICAgICBzdHJ1Y3QgZHJtX3ByaW50ZXIgKm0sCiAJCSAg ICAgICBjb25zdCBjaGFyICpoZWFkZXIsIC4uLik7CiAKLXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KgotaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LCB1OCBjbGFzcywgdTggaW5zdGFuY2UpOwotCiBzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZW5n aW5lX2NvbnRleHRfaW4oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXVuc2ln bmVkIGxvbmcgZmxhZ3M7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5j CmluZGV4IDk3Y2UzNTg5MzM4ZS4uOGFlNDExNGMwMDVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9lbmdpbmVfY3MuYwpAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAiaW50 ZWxfZW5naW5lLmgiCiAjaW5jbHVkZSAiaW50ZWxfZW5naW5lX3BtLmgiCisjaW5jbHVkZSAiaW50 ZWxfZW5naW5lX3VzZXIuaCIKICNpbmNsdWRlICJpbnRlbF9jb250ZXh0LmgiCiAjaW5jbHVkZSAi aW50ZWxfbHJjLmgiCiAjaW5jbHVkZSAiaW50ZWxfcmVzZXQuaCIKQEAgLTI4NSw5ICsyODYsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9lbmdpbmVfc2FuaXRpemVfbW1pbyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCiAJaW50ZWxfZW5naW5lX3NldF9od3NwX3dyaXRlbWFzayhlbmdpbmUs IH4wdSk7CiB9CiAKLXN0YXRpYyBpbnQKLWludGVsX2VuZ2luZV9zZXR1cChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCSAgIGVudW0gaW50ZWxfZW5naW5lX2lkIGlkKQorc3Rh dGljIGludCBpbnRlbF9lbmdpbmVfc2V0dXAoc3RydWN0IGludGVsX2d0ICpndCwgZW51bSBpbnRl bF9lbmdpbmVfaWQgaWQpCiB7CiAJY29uc3Qgc3RydWN0IGVuZ2luZV9pbmZvICppbmZvID0gJmlu dGVsX2VuZ2luZXNbaWRdOwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKQEAgLTMw MywxMCArMzAyLDkgQEAgaW50ZWxfZW5naW5lX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAlpZiAoR0VNX0RFQlVHX1dBUk5fT04oaW5mby0+aW5zdGFuY2UgPiBNQVhf RU5HSU5FX0lOU1RBTkNFKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlpZiAoR0VNX0RFQlVHX1dB Uk5fT04oZGV2X3ByaXYtPmVuZ2luZV9jbGFzc1tpbmZvLT5jbGFzc11baW5mby0+aW5zdGFuY2Vd KSkKKwlpZiAoR0VNX0RFQlVHX1dBUk5fT04oZ3QtPmVuZ2luZV9jbGFzc1tpbmZvLT5jbGFzc11b aW5mby0+aW5zdGFuY2VdKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlHRU1fQlVHX09OKGRldl9w cml2LT5lbmdpbmVbaWRdKTsKIAllbmdpbmUgPSBremFsbG9jKHNpemVvZigqZW5naW5lKSwgR0ZQ X0tFUk5FTCk7CiAJaWYgKCFlbmdpbmUpCiAJCXJldHVybiAtRU5PTUVNOwpAQCAtMzE1LDEyICsz MTMsMTIgQEAgaW50ZWxfZW5naW5lX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIAogCWVuZ2luZS0+aWQgPSBpZDsKIAllbmdpbmUtPm1hc2sgPSBCSVQoaWQpOwotCWVu Z2luZS0+aTkxNSA9IGRldl9wcml2OwotCWVuZ2luZS0+Z3QgPSAmZGV2X3ByaXYtPmd0OwotCWVu Z2luZS0+dW5jb3JlID0gJmRldl9wcml2LT51bmNvcmU7CisJZW5naW5lLT5pOTE1ID0gZ3QtPmk5 MTU7CisJZW5naW5lLT5ndCA9IGd0OworCWVuZ2luZS0+dW5jb3JlID0gZ3QtPnVuY29yZTsKIAlf X3NwcmludF9lbmdpbmVfbmFtZShlbmdpbmUtPm5hbWUsIGluZm8pOwogCWVuZ2luZS0+aHdfaWQg PSBlbmdpbmUtPmd1Y19pZCA9IGluZm8tPmh3X2lkOwotCWVuZ2luZS0+bW1pb19iYXNlID0gX19l bmdpbmVfbW1pb19iYXNlKGRldl9wcml2LCBpbmZvLT5tbWlvX2Jhc2VzKTsKKwllbmdpbmUtPm1t aW9fYmFzZSA9IF9fZW5naW5lX21taW9fYmFzZShndC0+aTkxNSwgaW5mby0+bW1pb19iYXNlcyk7 CiAJZW5naW5lLT5jbGFzcyA9IGluZm8tPmNsYXNzOwogCWVuZ2luZS0+aW5zdGFuY2UgPSBpbmZv LT5pbnN0YW5jZTsKIApAQCAtMzMwLDE0ICszMjgsMTIgQEAgaW50ZWxfZW5naW5lX3NldHVwKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkgKi8KIAllbmdpbmUtPmRlc3Ryb3kg PSAodHlwZW9mKGVuZ2luZS0+ZGVzdHJveSkpa2ZyZWU7CiAKLQllbmdpbmUtPnVhYmlfY2xhc3Mg PSBpbnRlbF9lbmdpbmVfY2xhc3Nlc1tpbmZvLT5jbGFzc10udWFiaV9jbGFzczsKLQotCWVuZ2lu ZS0+Y29udGV4dF9zaXplID0gaW50ZWxfZW5naW5lX2NvbnRleHRfc2l6ZShkZXZfcHJpdiwKKwll bmdpbmUtPmNvbnRleHRfc2l6ZSA9IGludGVsX2VuZ2luZV9jb250ZXh0X3NpemUoZ3QtPmk5MTUs CiAJCQkJCQkJIGVuZ2luZS0+Y2xhc3MpOwogCWlmIChXQVJOX09OKGVuZ2luZS0+Y29udGV4dF9z aXplID4gQklUKDIwKSkpCiAJCWVuZ2luZS0+Y29udGV4dF9zaXplID0gMDsKIAlpZiAoZW5naW5l LT5jb250ZXh0X3NpemUpCi0JCURSSVZFUl9DQVBTKGRldl9wcml2KS0+aGFzX2xvZ2ljYWxfY29u dGV4dHMgPSB0cnVlOworCQlEUklWRVJfQ0FQUyhndC0+aTkxNSktPmhhc19sb2dpY2FsX2NvbnRl eHRzID0gdHJ1ZTsKIAogCS8qIE5vdGhpbmcgdG8gZG8gaGVyZSwgZXhlY3V0ZSBpbiBvcmRlciBv ZiBkZXBlbmRlbmNpZXMgKi8KIAllbmdpbmUtPnNjaGVkdWxlID0gTlVMTDsKQEAgLTM0OSw4ICsz NDUsMTEgQEAgaW50ZWxfZW5naW5lX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIAkvKiBTY3J1YiBtbWlvIHN0YXRlIG9uIHRha2VvdmVyICovCiAJaW50ZWxfZW5naW5l X3Nhbml0aXplX21taW8oZW5naW5lKTsKIAotCWRldl9wcml2LT5lbmdpbmVfY2xhc3NbaW5mby0+ Y2xhc3NdW2luZm8tPmluc3RhbmNlXSA9IGVuZ2luZTsKLQlkZXZfcHJpdi0+ZW5naW5lW2lkXSA9 IGVuZ2luZTsKKwlndC0+ZW5naW5lX2NsYXNzW2luZm8tPmNsYXNzXVtpbmZvLT5pbnN0YW5jZV0g PSBlbmdpbmU7CisKKwlpbnRlbF9lbmdpbmVfYWRkX3VzZXIoZW5naW5lKTsKKwlndC0+aTkxNS0+ ZW5naW5lW2lkXSA9IGVuZ2luZTsKKwogCXJldHVybiAwOwogfQogCkBAIC00MzMsNyArNDMyLDcg QEAgaW50IGludGVsX2VuZ2luZXNfaW5pdF9tbWlvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1KQogCQlpZiAoIUhBU19FTkdJTkUoaTkxNSwgaSkpCiAJCQljb250aW51ZTsKIAotCQllcnIg PSBpbnRlbF9lbmdpbmVfc2V0dXAoaTkxNSwgaSk7CisJCWVyciA9IGludGVsX2VuZ2luZV9zZXR1 cCgmaTkxNS0+Z3QsIGkpOwogCQlpZiAoZXJyKQogCQkJZ290byBjbGVhbnVwOwogCkBAIC02ODAs NDcgKzY3OSw2IEBAIGludCBpbnRlbF9lbmdpbmVzX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1KQogCXJldHVybiBlcnI7CiB9CiAKLXZvaWQgaW50ZWxfZW5naW5lc19zZXRfc2No ZWR1bGVyX2NhcHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCi17Ci0Jc3RhdGljIGNv bnN0IHN0cnVjdCB7Ci0JCXU4IGVuZ2luZTsKLQkJdTggc2NoZWQ7Ci0JfSBtYXBbXSA9IHsKLSNk ZWZpbmUgTUFQKHgsIHkpIHsgaWxvZzIoSTkxNV9FTkdJTkVfIyN4KSwgaWxvZzIoSTkxNV9TQ0hF RFVMRVJfQ0FQXyMjeSkgfQotCQlNQVAoSEFTX1BSRUVNUFRJT04sIFBSRUVNUFRJT04pLAotCQlN QVAoSEFTX1NFTUFQSE9SRVMsIFNFTUFQSE9SRVMpLAotCQlNQVAoU1VQUE9SVFNfU1RBVFMsIEVO R0lORV9CVVNZX1NUQVRTKSwKLSN1bmRlZiBNQVAKLQl9OwotCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZTsKLQllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKLQl1MzIgZW5hYmxlZCwgZGlz YWJsZWQ7Ci0KLQllbmFibGVkID0gMDsKLQlkaXNhYmxlZCA9IDA7Ci0JZm9yX2VhY2hfZW5naW5l KGVuZ2luZSwgaTkxNSwgaWQpIHsgLyogYWxsIGVuZ2luZXMgbXVzdCBhZ3JlZSEgKi8KLQkJaW50 IGk7Ci0KLQkJaWYgKGVuZ2luZS0+c2NoZWR1bGUpCi0JCQllbmFibGVkIHw9IChJOTE1X1NDSEVE VUxFUl9DQVBfRU5BQkxFRCB8Ci0JCQkJICAgIEk5MTVfU0NIRURVTEVSX0NBUF9QUklPUklUWSk7 Ci0JCWVsc2UKLQkJCWRpc2FibGVkIHw9IChJOTE1X1NDSEVEVUxFUl9DQVBfRU5BQkxFRCB8Ci0J CQkJICAgICBJOTE1X1NDSEVEVUxFUl9DQVBfUFJJT1JJVFkpOwotCi0JCWZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKG1hcCk7IGkrKykgewotCQkJaWYgKGVuZ2luZS0+ZmxhZ3MgJiBCSVQobWFw W2ldLmVuZ2luZSkpCi0JCQkJZW5hYmxlZCB8PSBCSVQobWFwW2ldLnNjaGVkKTsKLQkJCWVsc2UK LQkJCQlkaXNhYmxlZCB8PSBCSVQobWFwW2ldLnNjaGVkKTsKLQkJfQotCX0KLQotCWk5MTUtPmNh cHMuc2NoZWR1bGVyID0gZW5hYmxlZCAmIH5kaXNhYmxlZDsKLQlpZiAoIShpOTE1LT5jYXBzLnNj aGVkdWxlciAmIEk5MTVfU0NIRURVTEVSX0NBUF9FTkFCTEVEKSkKLQkJaTkxNS0+Y2Fwcy5zY2hl ZHVsZXIgPSAwOwotfQotCiBzdHJ1Y3QgbWVhc3VyZV9icmVhZGNydW1iIHsKIAlzdHJ1Y3QgaTkx NV9yZXF1ZXN0IHJxOwogCXN0cnVjdCBpbnRlbF90aW1lbGluZSB0aW1lbGluZTsKQEAgLTExOTIs MjAgKzExNTAsNiBAQCBib29sIGludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCX0KIH0KIAotdW5zaWduZWQgaW50IGludGVsX2VuZ2lu ZXNfaGFzX2NvbnRleHRfaXNvbGF0aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQot ewotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKLQllbnVtIGludGVsX2VuZ2luZV9p ZCBpZDsKLQl1bnNpZ25lZCBpbnQgd2hpY2g7Ci0KLQl3aGljaCA9IDA7Ci0JZm9yX2VhY2hfZW5n aW5lKGVuZ2luZSwgaTkxNSwgaWQpCi0JCWlmIChlbmdpbmUtPmRlZmF1bHRfc3RhdGUpCi0JCQl3 aGljaCB8PSBCSVQoZW5naW5lLT51YWJpX2NsYXNzKTsKLQotCXJldHVybiB3aGljaDsKLX0KLQog c3RhdGljIGludCBwcmludF9zY2hlZF9hdHRyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LAogCQkJICAgIGNvbnN0IHN0cnVjdCBpOTE1X3NjaGVkX2F0dHIgKmF0dHIsCiAJCQkgICAgY2hh ciAqYnVmLCBpbnQgeCwgaW50IGxlbikKQEAgLTE1MDMsMjkgKzE0NDcsNiBAQCB2b2lkIGludGVs X2VuZ2luZV9kdW1wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAlpbnRlbF9lbmdp bmVfcHJpbnRfYnJlYWRjcnVtYnMoZW5naW5lLCBtKTsKIH0KIAotc3RhdGljIHU4IHVzZXJfY2xh c3NfbWFwW10gPSB7Ci0JW0k5MTVfRU5HSU5FX0NMQVNTX1JFTkRFUl0gPSBSRU5ERVJfQ0xBU1Ms Ci0JW0k5MTVfRU5HSU5FX0NMQVNTX0NPUFldID0gQ09QWV9FTkdJTkVfQ0xBU1MsCi0JW0k5MTVf RU5HSU5FX0NMQVNTX1ZJREVPXSA9IFZJREVPX0RFQ09ERV9DTEFTUywKLQlbSTkxNV9FTkdJTkVf Q0xBU1NfVklERU9fRU5IQU5DRV0gPSBWSURFT19FTkhBTkNFTUVOVF9DTEFTUywKLX07Ci0KLXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgotaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LCB1OCBjbGFzcywgdTggaW5zdGFuY2UpCi17Ci0JaWYgKGNs YXNzID49IEFSUkFZX1NJWkUodXNlcl9jbGFzc19tYXApKQotCQlyZXR1cm4gTlVMTDsKLQotCWNs YXNzID0gdXNlcl9jbGFzc19tYXBbY2xhc3NdOwotCi0JR0VNX0JVR19PTihjbGFzcyA+IE1BWF9F TkdJTkVfQ0xBU1MpOwotCi0JaWYgKGluc3RhbmNlID4gTUFYX0VOR0lORV9JTlNUQU5DRSkKLQkJ cmV0dXJuIE5VTEw7Ci0KLQlyZXR1cm4gaTkxNS0+ZW5naW5lX2NsYXNzW2NsYXNzXVtpbnN0YW5j ZV07Ci19Ci0KIC8qKgogICogaW50ZWxfZW5hYmxlX2VuZ2luZV9zdGF0cygpIC0gRW5hYmxlIGVu Z2luZSBidXN5IHRyYWNraW5nIG9uIGVuZ2luZQogICogQGVuZ2luZTogZW5naW5lIHRvIGVuYWJs ZSBzdGF0cyBjb2xsZWN0aW9uCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9lbmdpbmVfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2lu ZV90eXBlcy5oCmluZGV4IGRhNjFkZDMyOTIxMC4uNDkyNTg4ODRjZjExIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaApAQCAtMTIsNiArMTIsNyBAQAog I2luY2x1ZGUgPGxpbnV4L2tyZWYuaD4KICNpbmNsdWRlIDxsaW51eC9saXN0Lmg+CiAjaW5jbHVk ZSA8bGludXgvbGxpc3QuaD4KKyNpbmNsdWRlIDxsaW51eC9yYnRyZWUuaD4KICNpbmNsdWRlIDxs aW51eC90aW1lci5oPgogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAKQEAgLTI2NywxNSArMjY4 LDE5IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgewogCXVuc2lnbmVkIGludCBndWNfaWQ7CiAJ aW50ZWxfZW5naW5lX21hc2tfdCBtYXNrOwogCi0JdTggdWFiaV9jbGFzczsKLQogCXU4IGNsYXNz OwogCXU4IGluc3RhbmNlOworCisJdTggdWFiaV9jbGFzczsKKwl1OCB1YWJpX2luc3RhbmNlOwor CiAJdTMyIGNvbnRleHRfc2l6ZTsKIAl1MzIgbW1pb19iYXNlOwogCiAJdTMyIHVhYmlfY2FwYWJp bGl0aWVzOwogCisJc3RydWN0IHJiX25vZGUgdWFiaV9ub2RlOworCiAJc3RydWN0IGludGVsX3Nz ZXUgc3NldTsKIAogCXN0cnVjdCBpbnRlbF9yaW5nICpidWZmZXI7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdXNlci5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZW5naW5lX3VzZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLmE0YmMzYTI2NjQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV91c2VyLmMKQEAgLTAsMCArMSwyMjggQEAKKy8qCisg KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisgKgorICogQ29weXJpZ2h0IMKpIDIwMTkg SW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaW5jbHVkZSA8bGludXgvbGlzdC5oPgorI2luY2x1 ZGUgPGxpbnV4L2xpc3Rfc29ydC5oPgorI2luY2x1ZGUgPGxpbnV4L2xsaXN0Lmg+CisKKyNpbmNs dWRlICJpOTE1X2Rydi5oIgorI2luY2x1ZGUgImludGVsX2VuZ2luZS5oIgorI2luY2x1ZGUgImlu dGVsX2VuZ2luZV91c2VyLmgiCisKK3N0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgoraW50ZWxfZW5n aW5lX2xvb2t1cF91c2VyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCB1OCBjbGFzcywg dTggaW5zdGFuY2UpCit7CisJc3RydWN0IHJiX25vZGUgKnAgPSBpOTE1LT51YWJpX2VuZ2luZXMu cmJfbm9kZTsKKworCXdoaWxlIChwKSB7CisJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKml0ID0K KwkJCXJiX2VudHJ5KHAsIHR5cGVvZigqaXQpLCB1YWJpX25vZGUpOworCisJCWlmIChjbGFzcyA8 IGl0LT51YWJpX2NsYXNzKQorCQkJcCA9IHAtPnJiX2xlZnQ7CisJCWVsc2UgaWYgKGNsYXNzID4g aXQtPnVhYmlfY2xhc3MgfHwKKwkJCSBpbnN0YW5jZSA+IGl0LT51YWJpX2luc3RhbmNlKQorCQkJ cCA9IHAtPnJiX3JpZ2h0OworCQllbHNlIGlmIChpbnN0YW5jZSA8IGl0LT51YWJpX2luc3RhbmNl KQorCQkJcCA9IHAtPnJiX2xlZnQ7CisJCWVsc2UKKwkJCXJldHVybiBpdDsKKwl9CisKKwlyZXR1 cm4gTlVMTDsKK30KKwordm9pZCBpbnRlbF9lbmdpbmVfYWRkX3VzZXIoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQoreworCWxsaXN0X2FkZCgoc3RydWN0IGxsaXN0X25vZGUgKikmZW5n aW5lLT51YWJpX25vZGUsCisJCSAgKHN0cnVjdCBsbGlzdF9oZWFkICopJmVuZ2luZS0+aTkxNS0+ dWFiaV9lbmdpbmVzKTsKK30KKworc3RhdGljIGNvbnN0IHU4IHVhYmlfY2xhc3Nlc1tdID0gewor CVtSRU5ERVJfQ0xBU1NdID0gSTkxNV9FTkdJTkVfQ0xBU1NfUkVOREVSLAorCVtDT1BZX0VOR0lO RV9DTEFTU10gPSBJOTE1X0VOR0lORV9DTEFTU19DT1BZLAorCVtWSURFT19ERUNPREVfQ0xBU1Nd ID0gSTkxNV9FTkdJTkVfQ0xBU1NfVklERU8sCisJW1ZJREVPX0VOSEFOQ0VNRU5UX0NMQVNTXSA9 IEk5MTVfRU5HSU5FX0NMQVNTX1ZJREVPX0VOSEFOQ0UsCit9OworCitzdGF0aWMgaW50IGVuZ2lu ZV9jbXAodm9pZCAqcHJpdiwgc3RydWN0IGxpc3RfaGVhZCAqQSwgc3RydWN0IGxpc3RfaGVhZCAq QikKK3sKKwljb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICphID0KKwkJY29udGFpbmVyX29m KChzdHJ1Y3QgcmJfbm9kZSAqKUEsIHR5cGVvZigqYSksIHVhYmlfbm9kZSk7CisJY29uc3Qgc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqYiA9CisJCWNvbnRhaW5lcl9vZigoc3RydWN0IHJiX25vZGUg KilCLCB0eXBlb2YoKmIpLCB1YWJpX25vZGUpOworCisJaWYgKHVhYmlfY2xhc3Nlc1thLT5jbGFz c10gPCB1YWJpX2NsYXNzZXNbYi0+Y2xhc3NdKQorCQlyZXR1cm4gLTE7CisJaWYgKHVhYmlfY2xh c3Nlc1thLT5jbGFzc10gPiB1YWJpX2NsYXNzZXNbYi0+Y2xhc3NdKQorCQlyZXR1cm4gMTsKKwor CWlmIChhLT5pbnN0YW5jZSA8IGItPmluc3RhbmNlKQorCQlyZXR1cm4gLTE7CisJaWYgKGEtPmlu c3RhbmNlID4gYi0+aW5zdGFuY2UpCisJCXJldHVybiAxOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBzdHJ1Y3QgbGxpc3Rfbm9kZSAqZ2V0X2VuZ2luZXMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCit7CisJcmV0dXJuIGxsaXN0X2RlbF9hbGwoKHN0cnVjdCBsbGlzdF9oZWFkICop Jmk5MTUtPnVhYmlfZW5naW5lcyk7Cit9CisKK3N0YXRpYyB2b2lkIHNvcnRfZW5naW5lcyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkJCSBzdHJ1Y3QgbGlzdF9oZWFkICplbmdpbmVz KQoreworCXN0cnVjdCBsbGlzdF9ub2RlICpwb3MsICpuZXh0OworCisJbGxpc3RfZm9yX2VhY2hf c2FmZShwb3MsIG5leHQsIGdldF9lbmdpbmVzKGk5MTUpKSB7CisJCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSA9CisJCQljb250YWluZXJfb2YoKHN0cnVjdCByYl9ub2RlICopcG9zLCB0 eXBlb2YoKmVuZ2luZSksCisJCQkJICAgICB1YWJpX25vZGUpOworCQlsaXN0X2FkZCgoc3RydWN0 IGxpc3RfaGVhZCAqKSZlbmdpbmUtPnVhYmlfbm9kZSwgZW5naW5lcyk7CisJfQorCWxpc3Rfc29y dChOVUxMLCBlbmdpbmVzLCBlbmdpbmVfY21wKTsKK30KKworc3RhdGljIHZvaWQgc2V0X3NjaGVk dWxlcl9jYXBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQoreworCXN0YXRpYyBjb25z dCBzdHJ1Y3QgeworCQl1OCBlbmdpbmU7CisJCXU4IHNjaGVkOworCX0gbWFwW10gPSB7CisjZGVm aW5lIE1BUCh4LCB5KSB7IGlsb2cyKEk5MTVfRU5HSU5FXyMjeCksIGlsb2cyKEk5MTVfU0NIRURV TEVSX0NBUF8jI3kpIH0KKwkJTUFQKEhBU19QUkVFTVBUSU9OLCBQUkVFTVBUSU9OKSwKKwkJTUFQ KEhBU19TRU1BUEhPUkVTLCBTRU1BUEhPUkVTKSwKKwkJTUFQKFNVUFBPUlRTX1NUQVRTLCBFTkdJ TkVfQlVTWV9TVEFUUyksCisjdW5kZWYgTUFQCisJfTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmU7CisJdTMyIGVuYWJsZWQsIGRpc2FibGVkOworCisJZW5hYmxlZCA9IDA7CisJZGlz YWJsZWQgPSAwOworCWZvcl9lYWNoX3VzZXJfZW5naW5lKGVuZ2luZSwgaTkxNSkgeyAvKiBhbGwg ZW5naW5lcyBtdXN0IGFncmVlISAqLworCQlpbnQgaTsKKworCQlpZiAoZW5naW5lLT5zY2hlZHVs ZSkKKwkJCWVuYWJsZWQgfD0gKEk5MTVfU0NIRURVTEVSX0NBUF9FTkFCTEVEIHwKKwkJCQkgICAg STkxNV9TQ0hFRFVMRVJfQ0FQX1BSSU9SSVRZKTsKKwkJZWxzZQorCQkJZGlzYWJsZWQgfD0gKEk5 MTVfU0NIRURVTEVSX0NBUF9FTkFCTEVEIHwKKwkJCQkgICAgIEk5MTVfU0NIRURVTEVSX0NBUF9Q UklPUklUWSk7CisKKwkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUobWFwKTsgaSsrKSB7CisJ CQlpZiAoZW5naW5lLT5mbGFncyAmIEJJVChtYXBbaV0uZW5naW5lKSkKKwkJCQllbmFibGVkIHw9 IEJJVChtYXBbaV0uc2NoZWQpOworCQkJZWxzZQorCQkJCWRpc2FibGVkIHw9IEJJVChtYXBbaV0u c2NoZWQpOworCQl9CisJfQorCisJaTkxNS0+Y2Fwcy5zY2hlZHVsZXIgPSBlbmFibGVkICYgfmRp c2FibGVkOworCWlmICghKGk5MTUtPmNhcHMuc2NoZWR1bGVyICYgSTkxNV9TQ0hFRFVMRVJfQ0FQ X0VOQUJMRUQpKQorCQlpOTE1LT5jYXBzLnNjaGVkdWxlciA9IDA7Cit9CisKK3ZvaWQgaW50ZWxf ZW5naW5lc19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7 CisJdTggdWFiaV9pbnN0YW5jZXNbNF0gPSB7fTsKKwlzdHJ1Y3QgbGlzdF9oZWFkICppdCwgKm5l eHQ7CisJc3RydWN0IHJiX25vZGUgKipwLCAqcHJldjsKKwlMSVNUX0hFQUQoZW5naW5lcyk7CisK Kwlzb3J0X2VuZ2luZXMoaTkxNSwgJmVuZ2luZXMpOworCisJcHJldiA9IE5VTEw7CisJcCA9ICZp OTE1LT51YWJpX2VuZ2luZXMucmJfbm9kZTsKKwlsaXN0X2Zvcl9lYWNoX3NhZmUoaXQsIG5leHQs ICZlbmdpbmVzKSB7CisJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9CisJCQljb250 YWluZXJfb2YoKHN0cnVjdCByYl9ub2RlICopaXQsIHR5cGVvZigqZW5naW5lKSwKKwkJCQkgICAg IHVhYmlfbm9kZSk7CisKKwkJR0VNX0JVR19PTihlbmdpbmUtPmNsYXNzID49IEFSUkFZX1NJWkUo dWFiaV9jbGFzc2VzKSk7CisJCWVuZ2luZS0+dWFiaV9jbGFzcyA9IHVhYmlfY2xhc3Nlc1tlbmdp bmUtPmNsYXNzXTsKKworCQlHRU1fQlVHX09OKGVuZ2luZS0+dWFiaV9jbGFzcyA+PSBBUlJBWV9T SVpFKHVhYmlfaW5zdGFuY2VzKSk7CisJCWVuZ2luZS0+dWFiaV9pbnN0YW5jZSA9IHVhYmlfaW5z dGFuY2VzW2VuZ2luZS0+dWFiaV9jbGFzc10rKzsKKworCQlyYl9saW5rX25vZGUoJmVuZ2luZS0+ dWFiaV9ub2RlLCBwcmV2LCBwKTsKKwkJcmJfaW5zZXJ0X2NvbG9yKCZlbmdpbmUtPnVhYmlfbm9k ZSwgJmk5MTUtPnVhYmlfZW5naW5lcyk7CisKKwkJR0VNX0JVR19PTihpbnRlbF9lbmdpbmVfbG9v a3VwX3VzZXIoaTkxNSwKKwkJCQkJCSAgICBlbmdpbmUtPnVhYmlfY2xhc3MsCisJCQkJCQkgICAg ZW5naW5lLT51YWJpX2luc3RhbmNlKSAhPSBlbmdpbmUpOworCisJCXByZXYgPSAmZW5naW5lLT51 YWJpX25vZGU7CisJCXAgPSAmcHJldi0+cmJfcmlnaHQ7CisJfQorCisJaWYgKElTX0VOQUJMRUQo Q09ORklHX0RSTV9JOTE1X1NFTEZURVNUUykgJiYKKwkgICAgSVNfRU5BQkxFRChDT05GSUdfRFJN X0k5MTVfREVCVUdfR0VNKSkgeworCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJ CXVuc2lnbmVkIGludCBpc29sYXRpb247CisJCWludCBjbGFzcywgaW5zdDsKKwkJaW50IGVycm9y cyA9IDA7CisKKwkJZm9yIChjbGFzcyA9IDA7IGNsYXNzIDwgQVJSQVlfU0laRSh1YWJpX2luc3Rh bmNlcyk7IGNsYXNzKyspIHsKKwkJCWZvciAoaW5zdCA9IDA7IGluc3QgPCB1YWJpX2luc3RhbmNl c1tjbGFzc107IGluc3QrKykgeworCQkJCWVuZ2luZSA9IGludGVsX2VuZ2luZV9sb29rdXBfdXNl cihpOTE1LAorCQkJCQkJCQkgIGNsYXNzLCBpbnN0KTsKKwkJCQlpZiAoIWVuZ2luZSkgeworCQkJ CQlwcl9lcnIoIlVBQkkgZW5naW5lIG5vdCBmb3VuZCBmb3IgeyBjbGFzczolZCwgaW5zdGFuY2U6 JWQgfVxuIiwKKwkJCQkJICAgICAgIGNsYXNzLCBpbnN0KTsKKwkJCQkJZXJyb3JzKys7CisJCQkJ CWNvbnRpbnVlOworCQkJCX0KKworCQkJCWlmIChlbmdpbmUtPnVhYmlfY2xhc3MgIT0gY2xhc3Mg fHwKKwkJCQkgICAgZW5naW5lLT51YWJpX2luc3RhbmNlICE9IGluc3QpIHsKKwkJCQkJcHJfZXJy KCJXcm9uZyBVQUJJIGVuZ2luZTolcyB7IGNsYXNzOiVkLCBpbnN0YW5jZTolZCB9IGZvdW5kIGZv ciB7IGNsYXNzOiVkLCBpbnN0YW5jZTolZCB9XG4iLAorCQkJCQkgICAgICAgZW5naW5lLT5uYW1l LAorCQkJCQkgICAgICAgZW5naW5lLT51YWJpX2NsYXNzLAorCQkJCQkgICAgICAgZW5naW5lLT51 YWJpX2luc3RhbmNlLAorCQkJCQkgICAgICAgY2xhc3MsIGluc3QpOworCQkJCQllcnJvcnMrKzsK KwkJCQkJY29udGludWU7CisJCQkJfQorCQkJfQorCQl9CisKKwkJLyoKKwkJICogTWFrZSBzdXJl IHRoYXQgY2xhc3NlcyB3aXRoIG11bHRpcGxlIGVuZ2luZSBpbnN0YW5jZXMgYWxsCisJCSAqIHNo YXJlIHRoZSBzYW1lIGJhc2ljIGNvbmZpZ3VyYXRpb24uCisJCSAqLworCQlpc29sYXRpb24gPSBp bnRlbF9lbmdpbmVzX2hhc19jb250ZXh0X2lzb2xhdGlvbihpOTE1KTsKKwkJZm9yX2VhY2hfdXNl cl9lbmdpbmUoZW5naW5lLCBpOTE1KSB7CisJCQl1bnNpZ25lZCBpbnQgYml0ID0gQklUKGVuZ2lu ZS0+dWFiaV9jbGFzcyk7CisJCQl1bnNpZ25lZCBpbnQgZXhwZWN0ZWQgPSBlbmdpbmUtPmRlZmF1 bHRfc3RhdGUgPyBiaXQgOiAwOworCisJCQlpZiAoKGlzb2xhdGlvbiAmIGJpdCkgIT0gZXhwZWN0 ZWQpIHsKKwkJCQlwcl9lcnIoIm1pc21hdGNoaW5nIGRlZmF1bHQgY29udGV4dCBzdGF0ZSBmb3Ig Y2xhc3MgJWQgb24gZW5naW5lICVzXG4iLAorCQkJCSAgICAgICBlbmdpbmUtPnVhYmlfY2xhc3Ms IGVuZ2luZS0+bmFtZSk7CisJCQkJZXJyb3JzKys7CisJCQl9CisJCX0KKworCQlpZiAoV0FSTihl cnJvcnMsICJJbnZhbGlkIFVBQkkgZW5naW5lIG1hcHBpbmcgZm91bmQiKSkKKwkJCWk5MTUtPnVh YmlfZW5naW5lcyA9IFJCX1JPT1Q7CisJfQorCisJc2V0X3NjaGVkdWxlcl9jYXBzKGk5MTUpOwor fQorCit1bnNpZ25lZCBpbnQgaW50ZWxfZW5naW5lc19oYXNfY29udGV4dF9pc29sYXRpb24oc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lOworCXVuc2lnbmVkIGludCB3aGljaDsKKworCXdoaWNoID0gMDsKKwlmb3JfZWFjaF91 c2VyX2VuZ2luZShlbmdpbmUsIGk5MTUpCisJCWlmIChlbmdpbmUtPmRlZmF1bHRfc3RhdGUpCisJ CQl3aGljaCB8PSBCSVQoZW5naW5lLT51YWJpX2NsYXNzKTsKKworCXJldHVybiB3aGljaDsKK30K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV91c2VyLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdXNlci5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWU1ZjExM2U1MDI3Ci0tLSAvZGV2L251bGwK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3VzZXIuaApAQCAtMCww ICsxLDIzIEBACisvKgorICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorICoKKyAqIENv cHlyaWdodCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCisgKi8KKworI2lmbmRlZiBJTlRFTF9F TkdJTkVfVVNFUl9ICisjZGVmaW5lIElOVEVMX0VOR0lORV9VU0VSX0gKKworI2luY2x1ZGUgPGxp bnV4L3R5cGVzLmg+CisKK3N0cnVjdCBkcm1faTkxNV9wcml2YXRlOworc3RydWN0IGludGVsX2Vu Z2luZV9jczsKKworc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCitpbnRlbF9lbmdpbmVfbG9va3Vw X3VzZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU4IGNsYXNzLCB1OCBpbnN0YW5j ZSk7CisKK3Vuc2lnbmVkIGludCBpbnRlbF9lbmdpbmVzX2hhc19jb250ZXh0X2lzb2xhdGlvbihz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CisKK3ZvaWQgaW50ZWxfZW5naW5lX2FkZF91 c2VyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cit2b2lkIGludGVsX2VuZ2luZXNf ZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKKworI2VuZGlm IC8qIElOVEVMX0VOR0lORV9VU0VSX0ggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2d0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9n dF90eXBlcy5oCmluZGV4IDM0ZDRhODY4ZTRmMS4uNWZkMTFlMzYxZDAzIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVzLmgKQEAgLTIxLDYgKzIxLDcgQEAKIAogc3RydWN0 IGRybV9pOTE1X3ByaXZhdGU7CiBzdHJ1Y3QgaTkxNV9nZ3R0Oworc3RydWN0IGludGVsX2VuZ2lu ZV9jczsKIHN0cnVjdCBpbnRlbF91bmNvcmU7CiAKIHN0cnVjdCBpbnRlbF9oYW5nY2hlY2sgewpA QCAtNzYsNiArNzcsOSBAQCBzdHJ1Y3QgaW50ZWxfZ3QgewogCXUzMiBwbV9pZXI7CiAKIAl1MzIg cG1fZ3VjX2V2ZW50czsKKworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZV9jbGFzc1tN QVhfRU5HSU5FX0NMQVNTICsgMV0KKwkJCQkJICAgIFtNQVhfRU5HSU5FX0lOU1RBTkNFICsgMV07 CiB9OwogCiBlbnVtIGludGVsX2d0X3NjcmF0Y2hfZmllbGQgewpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9zZWxmdGVzdF9scmMuYwppbmRleCA2MGYyN2U1MmQyNjcuLmViNDBhNTg2NjViZSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMKQEAgLTE3NzMsNiArMTc3Myw3IEBAIHN0 YXRpYyBpbnQgbGl2ZV92aXJ0dWFsX2VuZ2luZSh2b2lkICphcmcpCiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUgPSBhcmc7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2libGluZ3Nb TUFYX0VOR0lORV9JTlNUQU5DRSArIDFdOwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZTsKKwlzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gJmk5MTUtPmd0OwogCWVudW0gaW50ZWxfZW5naW5l X2lkIGlkOwogCXVuc2lnbmVkIGludCBjbGFzcywgaW5zdDsKIAlpbnQgZXJyID0gLUVOT0RFVjsK QEAgLTE3OTYsMTAgKzE3OTcsMTAgQEAgc3RhdGljIGludCBsaXZlX3ZpcnR1YWxfZW5naW5lKHZv aWQgKmFyZykKIAogCQluc2libGluZyA9IDA7CiAJCWZvciAoaW5zdCA9IDA7IGluc3QgPD0gTUFY X0VOR0lORV9JTlNUQU5DRTsgaW5zdCsrKSB7Ci0JCQlpZiAoIWk5MTUtPmVuZ2luZV9jbGFzc1tj bGFzc11baW5zdF0pCisJCQlpZiAoIWd0LT5lbmdpbmVfY2xhc3NbY2xhc3NdW2luc3RdKQogCQkJ CWNvbnRpbnVlOwogCi0JCQlzaWJsaW5nc1tuc2libGluZysrXSA9IGk5MTUtPmVuZ2luZV9jbGFz c1tjbGFzc11baW5zdF07CisJCQlzaWJsaW5nc1tuc2libGluZysrXSA9IGd0LT5lbmdpbmVfY2xh c3NbY2xhc3NdW2luc3RdOwogCQl9CiAJCWlmIChuc2libGluZyA8IDIpCiAJCQljb250aW51ZTsK QEAgLTE5MjAsNiArMTkyMSw3IEBAIHN0YXRpYyBpbnQgbGl2ZV92aXJ0dWFsX21hc2sodm9pZCAq YXJnKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOwogCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnNpYmxpbmdzW01BWF9FTkdJTkVfSU5TVEFOQ0UgKyAxXTsKKwlzdHJ1 Y3QgaW50ZWxfZ3QgKmd0ID0gJmk5MTUtPmd0OwogCXVuc2lnbmVkIGludCBjbGFzcywgaW5zdDsK IAlpbnQgZXJyID0gMDsKIApAQCAtMTkzMywxMCArMTkzNSwxMCBAQCBzdGF0aWMgaW50IGxpdmVf dmlydHVhbF9tYXNrKHZvaWQgKmFyZykKIAogCQluc2libGluZyA9IDA7CiAJCWZvciAoaW5zdCA9 IDA7IGluc3QgPD0gTUFYX0VOR0lORV9JTlNUQU5DRTsgaW5zdCsrKSB7Ci0JCQlpZiAoIWk5MTUt PmVuZ2luZV9jbGFzc1tjbGFzc11baW5zdF0pCisJCQlpZiAoIWd0LT5lbmdpbmVfY2xhc3NbY2xh c3NdW2luc3RdKQogCQkJCWJyZWFrOwogCi0JCQlzaWJsaW5nc1tuc2libGluZysrXSA9IGk5MTUt PmVuZ2luZV9jbGFzc1tjbGFzc11baW5zdF07CisJCQlzaWJsaW5nc1tuc2libGluZysrXSA9IGd0 LT5lbmdpbmVfY2xhc3NbY2xhc3NdW2luc3RdOwogCQl9CiAJCWlmIChuc2libGluZyA8IDIpCiAJ CQljb250aW51ZTsKQEAgLTIwOTcsNiArMjA5OSw3IEBAIHN0YXRpYyBpbnQgbGl2ZV92aXJ0dWFs X2JvbmQodm9pZCAqYXJnKQogCX07CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBh cmc7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqc2libGluZ3NbTUFYX0VOR0lORV9JTlNUQU5D RSArIDFdOworCXN0cnVjdCBpbnRlbF9ndCAqZ3QgPSAmaTkxNS0+Z3Q7CiAJdW5zaWduZWQgaW50 IGNsYXNzLCBpbnN0OwogCWludCBlcnIgPSAwOwogCkBAIC0yMTExLDExICsyMTE0LDExIEBAIHN0 YXRpYyBpbnQgbGl2ZV92aXJ0dWFsX2JvbmQodm9pZCAqYXJnKQogCiAJCW5zaWJsaW5nID0gMDsK IAkJZm9yIChpbnN0ID0gMDsgaW5zdCA8PSBNQVhfRU5HSU5FX0lOU1RBTkNFOyBpbnN0KyspIHsK LQkJCWlmICghaTkxNS0+ZW5naW5lX2NsYXNzW2NsYXNzXVtpbnN0XSkKKwkJCWlmICghZ3QtPmVu Z2luZV9jbGFzc1tjbGFzc11baW5zdF0pCiAJCQkJYnJlYWs7CiAKIAkJCUdFTV9CVUdfT04obnNp YmxpbmcgPT0gQVJSQVlfU0laRShzaWJsaW5ncykpOwotCQkJc2libGluZ3NbbnNpYmxpbmcrK10g PSBpOTE1LT5lbmdpbmVfY2xhc3NbY2xhc3NdW2luc3RdOworCQkJc2libGluZ3NbbnNpYmxpbmcr K10gPSBndC0+ZW5naW5lX2NsYXNzW2NsYXNzXVtpbnN0XTsKIAkJfQogCQlpZiAobnNpYmxpbmcg PCAyKQogCQkJY29udGludWU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9z ZWxmdGVzdF93b3JrYXJvdW5kcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rf d29ya2Fyb3VuZHMuYwppbmRleCBhYjE0Nzk4NWZhNzQuLjc5ODg0YmM2YTY3ZCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rfd29ya2Fyb3VuZHMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF93b3JrYXJvdW5kcy5jCkBAIC01LDYgKzUs NyBAQAogICovCiAKICNpbmNsdWRlICJnZW0vaTkxNV9nZW1fcG0uaCIKKyNpbmNsdWRlICJndC9p bnRlbF9lbmdpbmVfdXNlci5oIgogI2luY2x1ZGUgImd0L2ludGVsX2d0LmgiCiAjaW5jbHVkZSAi aTkxNV9zZWxmdGVzdC5oIgogI2luY2x1ZGUgImludGVsX3Jlc2V0LmgiCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwppbmRleCBiNDIzOGZl MTZhMDMuLmQ5MWU0OTY3MjE3ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv dWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91 Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCkBAIC00ODgsNyArNDg4LDcgQEAgc3RhdGljIHZvaWQg Z3VjX2FkZF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9ndWMgKmd1Yywgc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEpCiAJCQkgICByaW5nX3RhaWwsIHJxLT5mZW5jZS5zZXFubyk7CiAJZ3VjX3JpbmdfZG9v cmJlbGwoY2xpZW50KTsKIAotCWNsaWVudC0+c3VibWlzc2lvbnNbZW5naW5lLT5pZF0gKz0gMTsK KwljbGllbnQtPnN1Ym1pc3Npb25zW2VuZ2luZS0+Z3VjX2lkXSArPSAxOwogfQogCiAvKgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJzZXIuYwppbmRleCBhMjhiY2QyZDdjMDkuLjczMGMx ZWQ2ZDJhNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2Vy LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMKQEAgLTEzNTIs MTEgKzEzNTIsMTAgQEAgaW50IGludGVsX2VuZ2luZV9jbWRfcGFyc2VyKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwKIGludCBpOTE1X2NtZF9wYXJzZXJfZ2V0X3ZlcnNpb24oc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZTsKLQllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKIAlib29sIGFjdGl2ZSA9IGZhbHNl OwogCiAJLyogSWYgdGhlIGNvbW1hbmQgcGFyc2VyIGlzIG5vdCBlbmFibGVkLCByZXBvcnQgMCAt IHVuc3VwcG9ydGVkICovCi0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKSB7 CisJZm9yX2VhY2hfdXNlcl9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdikgewogCQlpZiAoaW50ZWxf ZW5naW5lX25lZWRzX2NtZF9wYXJzZXIoZW5naW5lKSkgewogCQkJYWN0aXZlID0gdHJ1ZTsKIAkJ CWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCBhYTYxYjc5YTZlMGMu LjllZTBiMWY2ZWIyNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTMwMSwx MCArMzAxLDkgQEAgc3RhdGljIHZvaWQgcHJpbnRfYmF0Y2hfcG9vbF9zdGF0cyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sCiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmU7CiAJc3RydWN0IGZpbGVfc3RhdHMgc3RhdHMgPSB7fTsKLQll bnVtIGludGVsX2VuZ2luZV9pZCBpZDsKIAlpbnQgajsKIAotCWZvcl9lYWNoX2VuZ2luZShlbmdp bmUsIGRldl9wcml2LCBpZCkgeworCWZvcl9lYWNoX3VzZXJfZW5naW5lKGVuZ2luZSwgZGV2X3By aXYpIHsKIAkJZm9yIChqID0gMDsgaiA8IEFSUkFZX1NJWkUoZW5naW5lLT5iYXRjaF9wb29sLmNh Y2hlX2xpc3QpOyBqKyspIHsKIAkJCWxpc3RfZm9yX2VhY2hfZW50cnkob2JqLAogCQkJCQkgICAg JmVuZ2luZS0+YmF0Y2hfcG9vbC5jYWNoZV9saXN0W2pdLApAQCAtMzkxLDcgKzM5MCw2IEBAIHN0 YXRpYyBpbnQgaTkxNV9nZW1fYmF0Y2hfcG9vbF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9p ZCAqZGF0YSkKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmRldl9wcml2LT5kcm07CiAJc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmU7Ci0JZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAJaW50IHRvdGFsID0gMDsKIAlpbnQg cmV0LCBqOwogCkBAIC0zOTksNyArMzk3LDcgQEAgc3RhdGljIGludCBpOTE1X2dlbV9iYXRjaF9w b29sX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCWlmIChyZXQpCiAJCXJl dHVybiByZXQ7CiAKLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKKwlm b3JfZWFjaF91c2VyX2VuZ2luZShlbmdpbmUsIGRldl9wcml2KSB7CiAJCWZvciAoaiA9IDA7IGog PCBBUlJBWV9TSVpFKGVuZ2luZS0+YmF0Y2hfcG9vbC5jYWNoZV9saXN0KTsgaisrKSB7CiAJCQlp bnQgY291bnQ7CiAKQEAgLTQ4Niw3ICs0ODQsNiBAQCBzdGF0aWMgaW50IGk5MTVfaW50ZXJydXB0 X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogewogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKIAlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmU7Ci0JZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAJaW50 ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJaW50IGksIHBpcGU7CiAKQEAgLTY4OSw3ICs2ODYsNyBA QCBzdGF0aWMgaW50IGk5MTVfaW50ZXJydXB0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICpkYXRhKQogCQkJICAgSTkxNV9SRUFEKEdFTjExX0dVTklUX0NTTUVfSU5UUl9NQVNLKSk7CiAK IAl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNikgewotCQlmb3JfZWFjaF9lbmdp bmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKKwkJZm9yX2VhY2hfdXNlcl9lbmdpbmUoZW5naW5l LCBkZXZfcHJpdikgewogCQkJc2VxX3ByaW50ZihtLAogCQkJCSAgICJHcmFwaGljcyBJbnRlcnJ1 cHQgbWFzayAoJXMpOgklMDh4XG4iLAogCQkJCSAgIGVuZ2luZS0+bmFtZSwgRU5HSU5FX1JFQUQo ZW5naW5lLCBSSU5HX0lNUikpOwpAQCAtMTk2NCw3ICsxOTYxLDYgQEAgc3RhdGljIHZvaWQgaTkx NV9ndWNfY2xpZW50X2luZm8oc3RydWN0IHNlcV9maWxlICptLAogCQkJCSBzdHJ1Y3QgaW50ZWxf Z3VjX2NsaWVudCAqY2xpZW50KQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsK LQllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKIAl1NjQgdG90ID0gMDsKIAogCXNlcV9wcmludGYo bSwgIlx0UHJpb3JpdHkgJWQsIEd1QyBzdGFnZSBpbmRleDogJXUsIFBEIG9mZnNldCAweCV4XG4i LApAQCAtMTk3Miw4ICsxOTY4LDggQEAgc3RhdGljIHZvaWQgaTkxNV9ndWNfY2xpZW50X2luZm8o c3RydWN0IHNlcV9maWxlICptLAogCXNlcV9wcmludGYobSwgIlx0RG9vcmJlbGwgaWQgJWQsIG9m ZnNldDogMHglbHhcbiIsCiAJCWNsaWVudC0+ZG9vcmJlbGxfaWQsIGNsaWVudC0+ZG9vcmJlbGxf b2Zmc2V0KTsKIAotCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkgewotCQl1 NjQgc3VibWlzc2lvbnMgPSBjbGllbnQtPnN1Ym1pc3Npb25zW2lkXTsKKwlmb3JfZWFjaF91c2Vy X2VuZ2luZShlbmdpbmUsIGRldl9wcml2KSB7CisJCXU2NCBzdWJtaXNzaW9ucyA9IGNsaWVudC0+ c3VibWlzc2lvbnNbZW5naW5lLT5ndWNfaWRdOwogCQl0b3QgKz0gc3VibWlzc2lvbnM7CiAJCXNl cV9wcmludGYobSwgIlx0U3VibWlzc2lvbnM6ICVsbHUgJXNcbiIsCiAJCQkJc3VibWlzc2lvbnMs IGVuZ2luZS0+bmFtZSk7CkBAIC0yMDEzLDcgKzIwMDksNiBAQCBzdGF0aWMgaW50IGk5MTVfZ3Vj X3N0YWdlX3Bvb2woc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKIAljb25z dCBzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZGV2X3ByaXYtPmd0LnVjLmd1YzsKIAlzdHJ1Y3Qg Z3VjX3N0YWdlX2Rlc2MgKmRlc2MgPSBndWMtPnN0YWdlX2Rlc2NfcG9vbF92YWRkcjsKLQlpbnRl bF9lbmdpbmVfbWFza190IHRtcDsKIAlpbnQgaW5kZXg7CiAKIAlpZiAoIVVTRVNfR1VDX1NVQk1J U1NJT04oZGV2X3ByaXYpKQpAQCAtMjA0Miw3ICsyMDM3LDcgQEAgc3RhdGljIGludCBpOTE1X2d1 Y19zdGFnZV9wb29sKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAkJCSAgIGRlc2Mt PndxX2FkZHIsIGRlc2MtPndxX3NpemUpOwogCQlzZXFfcHV0YyhtLCAnXG4nKTsKIAotCQlmb3Jf ZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgdG1wKSB7CisJCWZvcl9lYWNoX3VzZXJfZW5n aW5lKGVuZ2luZSwgZGV2X3ByaXYpIHsKIAkJCXUzMiBndWNfZW5naW5lX2lkID0gZW5naW5lLT5n dWNfaWQ7CiAJCQlzdHJ1Y3QgZ3VjX2V4ZWNsaXN0X2NvbnRleHQgKmxyYyA9CiAJCQkJCQkmZGVz Yy0+bHJjW2d1Y19lbmdpbmVfaWRdOwpAQCAtMjg3NSw3ICsyODcwLDYgQEAgc3RhdGljIGludCBp OTE1X2VuZ2luZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsK IAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CiAJaW50ZWxfd2FrZXJlZl90IHdha2Vy ZWY7Ci0JZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAJc3RydWN0IGRybV9wcmludGVyIHA7CiAK IAl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoJmRldl9wcml2LT5ydW50aW1lX3BtKTsK QEAgLTI4ODcsNyArMjg4MSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9lbmdpbmVfaW5mbyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJICAgUlVOVElNRV9JTkZPKGRldl9wcml2KS0+ Y3NfdGltZXN0YW1wX2ZyZXF1ZW5jeV9raHopOwogCiAJcCA9IGRybV9zZXFfZmlsZV9wcmludGVy KG0pOwotCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkKKwlmb3JfZWFjaF91 c2VyX2VuZ2luZShlbmdpbmUsIGRldl9wcml2KQogCQlpbnRlbF9lbmdpbmVfZHVtcChlbmdpbmUs ICZwLCAiJXNcbiIsIGVuZ2luZS0+bmFtZSk7CiAKIAlpbnRlbF9ydW50aW1lX3BtX3B1dCgmZGV2 X3ByaXYtPnJ1bnRpbWVfcG0sIHdha2VyZWYpOwpAQCAtMjk2OCw5ICsyOTYyLDggQEAgc3RhdGlj IGludCBpOTE1X3dhX3JlZ2lzdGVycyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkK IHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IG5vZGVfdG9faTkxNShtLT5wcml2 YXRlKTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Ci0JZW51bSBpbnRlbF9lbmdp bmVfaWQgaWQ7CiAKLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgeworCWZvcl9l YWNoX3VzZXJfZW5naW5lKGVuZ2luZSwgaTkxNSkgewogCQljb25zdCBzdHJ1Y3QgaTkxNV93YV9s aXN0ICp3YWwgPSAmZW5naW5lLT5jdHhfd2FfbGlzdDsKIAkJY29uc3Qgc3RydWN0IGk5MTVfd2Eg KndhOwogCQl1bnNpZ25lZCBpbnQgY291bnQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRleCBj OTM0YzEwNDBmNTYuLjI1NGQxOWQ5YjEyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBAIC02 MSw2ICs2MSw3IEBACiAKICNpbmNsdWRlICJnZW0vaTkxNV9nZW1fY29udGV4dC5oIgogI2luY2x1 ZGUgImdlbS9pOTE1X2dlbV9pb2N0bHMuaCIKKyNpbmNsdWRlICJndC9pbnRlbF9lbmdpbmVfdXNl ci5oIgogI2luY2x1ZGUgImd0L2ludGVsX2d0LmgiCiAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3RfcG0u aCIKICNpbmNsdWRlICJndC9pbnRlbF9yZXNldC5oIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5k ZXggM2RkZWJhNWM3YjhkLi41NzE2MGU0YzA3MDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApA QCAtMTM3MSwxMSArMTM3MSwxMiBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJd2FpdF9x dWV1ZV9oZWFkX3QgZ21idXNfd2FpdF9xdWV1ZTsKIAogCXN0cnVjdCBwY2lfZGV2ICpicmlkZ2Vf ZGV2OwotCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZVtJOTE1X05VTV9FTkdJTkVTXTsK KwogCS8qIENvbnRleHQgdXNlZCBpbnRlcm5hbGx5IHRvIGlkbGUgdGhlIEdQVSBhbmQgc2V0dXAg aW5pdGlhbCBzdGF0ZSAqLwogCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICprZXJuZWxfY29udGV4 dDsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmVfY2xhc3NbTUFYX0VOR0lORV9DTEFT UyArIDFdCi0JCQkJCSAgICBbTUFYX0VOR0lORV9JTlNUQU5DRSArIDFdOworCisJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lW0k5MTVfTlVNX0VOR0lORVNdOworCXN0cnVjdCByYl9yb290 IHVhYmlfZW5naW5lczsKIAogCXN0cnVjdCByZXNvdXJjZSBtY2hfcmVzOwogCkBAIC0xOTE5LDYg KzE5MjAsMTQgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqd29wY21f dG9faTkxNShzdHJ1Y3QgaW50ZWxfd29wY20gKndvcGNtKQogCSAgICAgKChlbmdpbmVfXykgPSAo ZGV2X3ByaXZfXyktPmVuZ2luZVtfX21hc2tfbmV4dF9iaXQodG1wX18pXSksIDEgOiBcCiAJICAg ICAwOykKIAorI2RlZmluZSByYl90b191YWJpX2VuZ2luZShyYikgXAorCXJiX2VudHJ5X3NhZmUo cmIsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MsIHVhYmlfbm9kZSkKKworI2RlZmluZSBmb3JfZWFj aF91c2VyX2VuZ2luZShlbmdpbmVfXywgaTkxNV9fKSBcCisJZm9yICgoZW5naW5lX18pID0gcmJf dG9fdWFiaV9lbmdpbmUocmJfZmlyc3QoJihpOTE1X18pLT51YWJpX2VuZ2luZXMpKTtcCisJICAg ICAoZW5naW5lX18pOyBcCisJICAgICAoZW5naW5lX18pID0gcmJfdG9fdWFiaV9lbmdpbmUocmJf bmV4dCgmKGVuZ2luZV9fKS0+dWFiaV9ub2RlKSkpCisKIGVudW0gaGRtaV9mb3JjZV9hdWRpbyB7 CiAJSERNSV9BVURJT19PRkZfRFZJID0gLTIsCS8qIG5vIGF1eCBkYXRhIGZvciBIRE1JLURWSSBj b252ZXJ0ZXIgKi8KIAlIRE1JX0FVRElPX09GRiwJCQkvKiBmb3JjZSB0dXJuIG9mZiBIRE1JIGF1 ZGlvICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCA5YjEwYjg3OWEzN2YuLjVlZWI3NDA0 YTM2MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVk ZSAiZ2VtL2k5MTVfZ2VtX2lvY3Rscy5oIgogI2luY2x1ZGUgImdlbS9pOTE1X2dlbV9wbS5oIgog I2luY2x1ZGUgImdlbS9pOTE1X2dlbWZzLmgiCisjaW5jbHVkZSAiZ3QvaW50ZWxfZW5naW5lX3Vz ZXIuaCIKICNpbmNsdWRlICJndC9pbnRlbF9ndC5oIgogI2luY2x1ZGUgImd0L2ludGVsX2d0X3Bt LmgiCiAjaW5jbHVkZSAiZ3QvaW50ZWxfbW9jcy5oIgpAQCAtMTM2NSwyNCArMTM2Niw2IEBAIHN0 YXRpYyBpbnQgX19pbnRlbF9lbmdpbmVzX3JlY29yZF9kZWZhdWx0cyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKIAkJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChlbmdpbmUtPmRlZmF1 bHRfc3RhdGUpOwogCX0KIAotCWlmIChJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19H RU0pKSB7Ci0JCXVuc2lnbmVkIGludCBmb3VuZCA9IGludGVsX2VuZ2luZXNfaGFzX2NvbnRleHRf aXNvbGF0aW9uKGk5MTUpOwotCi0JCS8qCi0JCSAqIE1ha2Ugc3VyZSB0aGF0IGNsYXNzZXMgd2l0 aCBtdWx0aXBsZSBlbmdpbmUgaW5zdGFuY2VzIGFsbAotCQkgKiBzaGFyZSB0aGUgc2FtZSBiYXNp YyBjb25maWd1cmF0aW9uLgotCQkgKi8KLQkJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwg aWQpIHsKLQkJCXVuc2lnbmVkIGludCBiaXQgPSBCSVQoZW5naW5lLT51YWJpX2NsYXNzKTsKLQkJ CXVuc2lnbmVkIGludCBleHBlY3RlZCA9IGVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSA/IGJpdCA6IDA7 Ci0KLQkJCWlmICgoZm91bmQgJiBiaXQpICE9IGV4cGVjdGVkKSB7Ci0JCQkJRFJNX0VSUk9SKCJt aXNtYXRjaGluZyBkZWZhdWx0IGNvbnRleHQgc3RhdGUgZm9yIGNsYXNzICVkIG9uIGVuZ2luZSAl c1xuIiwKLQkJCQkJICBlbmdpbmUtPnVhYmlfY2xhc3MsIGVuZ2luZS0+bmFtZSk7Ci0JCQl9Ci0J CX0KLQl9Ci0KIG91dF9jdHg6CiAJaTkxNV9nZW1fY29udGV4dF91bmxvY2tfZW5naW5lcyhjdHgp OwogCWk5MTVfZ2VtX2NvbnRleHRfc2V0X2Nsb3NlZChjdHgpOwpAQCAtMTYxMiw3ICsxNTk1LDgg QEAgaW50IGk5MTVfZ2VtX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog dm9pZCBpOTE1X2dlbV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpCiB7CiAJaTkxNV9nZW1fZHJpdmVyX3JlZ2lzdGVyX19zaHJpbmtlcihpOTE1KTsKLQlpbnRl bF9lbmdpbmVzX3NldF9zY2hlZHVsZXJfY2FwcyhpOTE1KTsKKworCWludGVsX2VuZ2luZXNfZHJp dmVyX3JlZ2lzdGVyKGk5MTUpOwogfQogCiB2b2lkIGk5MTVfZ2VtX2RyaXZlcl91bnJlZ2lzdGVy KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKaW5k ZXggYTE3ZDRmZDE3OTYyLi43YjE5ZDdkZjliYTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwpA QCAtMzEwOSw3ICszMTA5LDcgQEAgZ2VuMTFfZW5naW5lX2lycV9oYW5kbGVyKHN0cnVjdCBpbnRl bF9ndCAqZ3QsIGNvbnN0IHU4IGNsYXNzLAogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZTsKIAogCWlmIChpbnN0YW5jZSA8PSBNQVhfRU5HSU5FX0lOU1RBTkNFKQotCQllbmdpbmUgPSBn dC0+aTkxNS0+ZW5naW5lX2NsYXNzW2NsYXNzXVtpbnN0YW5jZV07CisJCWVuZ2luZSA9IGd0LT5l bmdpbmVfY2xhc3NbY2xhc3NdW2luc3RhbmNlXTsKIAllbHNlCiAJCWVuZ2luZSA9IE5VTEw7CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKaW5kZXggOTg4YTQwOTIxNjRlLi5jNzY0NTU4ODU4MTcg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCkBAIC0xODc1LDcgKzE4NzUsNiBAQCBzdGF0aWMg aW50IGdlbjhfY29uZmlndXJlX2FsbF9jb250ZXh0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwKICN1bmRlZiBjdHhfZmxleGV1TgogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZTsKIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OwotCWVudW0gaW50ZWxfZW5naW5lX2lk IGlkOwogCWludCBpOwogCiAJZm9yIChpID0gMjsgaSA8IEFSUkFZX1NJWkUocmVncyk7IGkrKykK QEAgLTE5MTUsNyArMTkxNCw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9jb25maWd1cmVfYWxsX2NvbnRl eHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCSAqIElmIHdlIGRvbid0IG1vZGlm eSB0aGUga2VybmVsX2NvbnRleHQsIHdlIGRvIG5vdCBnZXQgZXZlbnRzIHdoaWxlCiAJICogaWRs ZS4KIAkgKi8KLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgeworCWZvcl9lYWNo X3VzZXJfZW5naW5lKGVuZ2luZSwgaTkxNSkgewogCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Ug PSBlbmdpbmUtPmtlcm5lbF9jb250ZXh0OwogCQlpbnQgZXJyOwogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w bXUuYwppbmRleCBlZmY4NjQ4M2JlYzAuLjNiYzM2YzNiYzAzNSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BtdS5jCkBAIC04LDYgKzgsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KIAog I2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZS5oIgorI2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV91 c2VyLmgiCiAKICNpbmNsdWRlICJpOTE1X2Rydi5oIgogI2luY2x1ZGUgImk5MTVfcG11LmgiCkBA IC0xNjAsNyArMTYxLDYgQEAgc3RhdGljIHZvaWQKIGVuZ2luZXNfc2FtcGxlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdW5zaWduZWQgaW50IHBlcmlvZF9ucykKIHsKIAlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Ci0JZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAJ aW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIApAQCAtMTc0 LDcgKzE3NCw3IEBAIGVuZ2luZXNfc2FtcGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgdW5zaWduZWQgaW50IHBlcmlvZF9ucykKIAkJcmV0dXJuOwogCiAJc3Bpbl9sb2NrX2ly cXNhdmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgZmxhZ3MpOwotCWZvcl9lYWNoX2VuZ2luZShl bmdpbmUsIGRldl9wcml2LCBpZCkgeworCWZvcl9lYWNoX3VzZXJfZW5naW5lKGVuZ2luZSwgZGV2 X3ByaXYpIHsKIAkJc3RydWN0IGludGVsX2VuZ2luZV9wbXUgKnBtdSA9ICZlbmdpbmUtPnBtdTsK IAkJYm9vbCBidXN5OwogCQl1MzIgdmFsOwpAQCAtODQ5LDcgKzg0OSw2IEBAIGNyZWF0ZV9ldmVu dF9hdHRyaWJ1dGVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCXN0cnVjdCBpOTE1 X2V4dF9hdHRyaWJ1dGUgKmk5MTVfYXR0ciA9IE5VTEwsICppOTE1X2l0ZXI7CiAJc3RydWN0IGF0 dHJpYnV0ZSAqKmF0dHIgPSBOVUxMLCAqKmF0dHJfaXRlcjsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmU7Ci0JZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAJdW5zaWduZWQgaW50IGk7 CiAKIAkvKiBDb3VudCBob3cgbWFueSBjb3VudGVycyB3ZSB3aWxsIGJlIGV4cG9zaW5nLiAqLwpA QCAtODU4LDcgKzg1Nyw3IEBAIGNyZWF0ZV9ldmVudF9hdHRyaWJ1dGVzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQogCQkJY291bnQrKzsKIAl9CiAKLQlmb3JfZWFjaF9lbmdpbmUoZW5n aW5lLCBpOTE1LCBpZCkgeworCWZvcl9lYWNoX3VzZXJfZW5naW5lKGVuZ2luZSwgaTkxNSkgewog CQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShlbmdpbmVfZXZlbnRzKTsgaSsrKSB7CiAJCQlp ZiAoIWVuZ2luZV9ldmVudF9zdGF0dXMoZW5naW5lLAogCQkJCQkJIGVuZ2luZV9ldmVudHNbaV0u c2FtcGxlKSkKQEAgLTkwOSw3ICs5MDgsNyBAQCBjcmVhdGVfZXZlbnRfYXR0cmlidXRlcyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAl9CiAKIAkvKiBJbml0aWFsaXplIHN1cHBvcnRl ZCBlbmdpbmUgY291bnRlcnMuICovCi0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQp IHsKKwlmb3JfZWFjaF91c2VyX2VuZ2luZShlbmdpbmUsIGk5MTUpIHsKIAkJZm9yIChpID0gMDsg aSA8IEFSUkFZX1NJWkUoZW5naW5lX2V2ZW50cyk7IGkrKykgewogCQkJY2hhciAqc3RyOwogCkBA IC05MjYsNyArOTI1LDcgQEAgY3JlYXRlX2V2ZW50X2F0dHJpYnV0ZXMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCiAJCQlpOTE1X2l0ZXIgPQogCQkJCWFkZF9pOTE1X2F0dHIoaTkxNV9p dGVyLCBzdHIsCiAJCQkJCSAgICAgIF9fSTkxNV9QTVVfRU5HSU5FKGVuZ2luZS0+dWFiaV9jbGFz cywKLQkJCQkJCQkJZW5naW5lLT5pbnN0YW5jZSwKKwkJCQkJCQkJZW5naW5lLT51YWJpX2luc3Rh bmNlLAogCQkJCQkJCQllbmdpbmVfZXZlbnRzW2ldLnNhbXBsZSkpOwogCiAJCQlzdHIgPSBrYXNw cmludGYoR0ZQX0tFUk5FTCwgIiVzLSVzLnVuaXQiLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9xdWVyeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5j CmluZGV4IDdiNzAxNjE3MTA1Ny4uOGFiYmEzYTMxNzY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9x dWVyeS5jCkBAIC0xMDUsNyArMTA1LDYgQEAgcXVlcnlfZW5naW5lX2luZm8oc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCiAJc3RydWN0IGRybV9pOTE1X3F1ZXJ5X2VuZ2luZV9pbmZvIHF1 ZXJ5OwogCXN0cnVjdCBkcm1faTkxNV9lbmdpbmVfaW5mbyBpbmZvID0geyB9OwogCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKLQllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKIAlpbnQg bGVuLCByZXQ7CiAKIAlpZiAocXVlcnlfaXRlbS0+ZmxhZ3MpCkBAIC0xMjUsOSArMTI0LDkgQEAg cXVlcnlfZW5naW5lX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAKIAlpbmZv X3B0ciA9ICZxdWVyeV9wdHItPmVuZ2luZXNbMF07CiAKLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5l LCBpOTE1LCBpZCkgeworCWZvcl9lYWNoX3VzZXJfZW5naW5lKGVuZ2luZSwgaTkxNSkgewogCQlp bmZvLmVuZ2luZS5lbmdpbmVfY2xhc3MgPSBlbmdpbmUtPnVhYmlfY2xhc3M7Ci0JCWluZm8uZW5n aW5lLmVuZ2luZV9pbnN0YW5jZSA9IGVuZ2luZS0+aW5zdGFuY2U7CisJCWluZm8uZW5naW5lLmVu Z2luZV9pbnN0YW5jZSA9IGVuZ2luZS0+dWFiaV9pbnN0YW5jZTsKIAkJaW5mby5jYXBhYmlsaXRp ZXMgPSBlbmdpbmUtPnVhYmlfY2FwYWJpbGl0aWVzOwogCiAJCWlmIChfX2NvcHlfdG9fdXNlcihp bmZvX3B0ciwgJmluZm8sIHNpemVvZihpbmZvKSkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3RyYWNlLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgK aW5kZXggZGExOGI4ZDZiODBjLi4xZDExMjQ1YzRjODcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdHJhY2UuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Ry YWNlLmgKQEAgLTY3Nyw3ICs2NzcsNyBAQCBUUkFDRV9FVkVOVChpOTE1X3JlcXVlc3RfcXVldWUs CiAJCQkgICBfX2VudHJ5LT5kZXYgPSBycS0+aTkxNS0+ZHJtLnByaW1hcnktPmluZGV4OwogCQkJ ICAgX19lbnRyeS0+aHdfaWQgPSBycS0+Z2VtX2NvbnRleHQtPmh3X2lkOwogCQkJICAgX19lbnRy eS0+Y2xhc3MgPSBycS0+ZW5naW5lLT51YWJpX2NsYXNzOwotCQkJICAgX19lbnRyeS0+aW5zdGFu Y2UgPSBycS0+ZW5naW5lLT5pbnN0YW5jZTsKKwkJCSAgIF9fZW50cnktPmluc3RhbmNlID0gcnEt PmVuZ2luZS0+dWFiaV9pbnN0YW5jZTsKIAkJCSAgIF9fZW50cnktPmN0eCA9IHJxLT5mZW5jZS5j b250ZXh0OwogCQkJICAgX19lbnRyeS0+c2Vxbm8gPSBycS0+ZmVuY2Uuc2Vxbm87CiAJCQkgICBf X2VudHJ5LT5mbGFncyA9IGZsYWdzOwpAQCAtNzA2LDcgKzcwNiw3IEBAIERFQ0xBUkVfRVZFTlRf Q0xBU1MoaTkxNV9yZXF1ZXN0LAogCQkJICAgX19lbnRyeS0+ZGV2ID0gcnEtPmk5MTUtPmRybS5w cmltYXJ5LT5pbmRleDsKIAkJCSAgIF9fZW50cnktPmh3X2lkID0gcnEtPmdlbV9jb250ZXh0LT5o d19pZDsKIAkJCSAgIF9fZW50cnktPmNsYXNzID0gcnEtPmVuZ2luZS0+dWFiaV9jbGFzczsKLQkJ CSAgIF9fZW50cnktPmluc3RhbmNlID0gcnEtPmVuZ2luZS0+aW5zdGFuY2U7CisJCQkgICBfX2Vu dHJ5LT5pbnN0YW5jZSA9IHJxLT5lbmdpbmUtPnVhYmlfaW5zdGFuY2U7CiAJCQkgICBfX2VudHJ5 LT5jdHggPSBycS0+ZmVuY2UuY29udGV4dDsKIAkJCSAgIF9fZW50cnktPnNlcW5vID0gcnEtPmZl bmNlLnNlcW5vOwogCQkJICAgKSwKQEAgLTc1MSw3ICs3NTEsNyBAQCBUUkFDRV9FVkVOVChpOTE1 X3JlcXVlc3RfaW4sCiAJCQkgICBfX2VudHJ5LT5kZXYgPSBycS0+aTkxNS0+ZHJtLnByaW1hcnkt PmluZGV4OwogCQkJICAgX19lbnRyeS0+aHdfaWQgPSBycS0+Z2VtX2NvbnRleHQtPmh3X2lkOwog CQkJICAgX19lbnRyeS0+Y2xhc3MgPSBycS0+ZW5naW5lLT51YWJpX2NsYXNzOwotCQkJICAgX19l bnRyeS0+aW5zdGFuY2UgPSBycS0+ZW5naW5lLT5pbnN0YW5jZTsKKwkJCSAgIF9fZW50cnktPmlu c3RhbmNlID0gcnEtPmVuZ2luZS0+dWFiaV9pbnN0YW5jZTsKIAkJCSAgIF9fZW50cnktPmN0eCA9 IHJxLT5mZW5jZS5jb250ZXh0OwogCQkJICAgX19lbnRyeS0+c2Vxbm8gPSBycS0+ZmVuY2Uuc2Vx bm87CiAJCQkgICBfX2VudHJ5LT5wcmlvID0gcnEtPnNjaGVkLmF0dHIucHJpb3JpdHk7CkBAIC03 ODIsNyArNzgyLDcgQEAgVFJBQ0VfRVZFTlQoaTkxNV9yZXF1ZXN0X291dCwKIAkJCSAgIF9fZW50 cnktPmRldiA9IHJxLT5pOTE1LT5kcm0ucHJpbWFyeS0+aW5kZXg7CiAJCQkgICBfX2VudHJ5LT5o d19pZCA9IHJxLT5nZW1fY29udGV4dC0+aHdfaWQ7CiAJCQkgICBfX2VudHJ5LT5jbGFzcyA9IHJx LT5lbmdpbmUtPnVhYmlfY2xhc3M7Ci0JCQkgICBfX2VudHJ5LT5pbnN0YW5jZSA9IHJxLT5lbmdp bmUtPmluc3RhbmNlOworCQkJICAgX19lbnRyeS0+aW5zdGFuY2UgPSBycS0+ZW5naW5lLT51YWJp X2luc3RhbmNlOwogCQkJICAgX19lbnRyeS0+Y3R4ID0gcnEtPmZlbmNlLmNvbnRleHQ7CiAJCQkg ICBfX2VudHJ5LT5zZXFubyA9IHJxLT5mZW5jZS5zZXFubzsKIAkJCSAgIF9fZW50cnktPmNvbXBs ZXRlZCA9IGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpOwpAQCAtODQ3LDcgKzg0Nyw3IEBAIFRS QUNFX0VWRU5UKGk5MTVfcmVxdWVzdF93YWl0X2JlZ2luLAogCQkJICAgX19lbnRyeS0+ZGV2ID0g cnEtPmk5MTUtPmRybS5wcmltYXJ5LT5pbmRleDsKIAkJCSAgIF9fZW50cnktPmh3X2lkID0gcnEt PmdlbV9jb250ZXh0LT5od19pZDsKIAkJCSAgIF9fZW50cnktPmNsYXNzID0gcnEtPmVuZ2luZS0+ dWFiaV9jbGFzczsKLQkJCSAgIF9fZW50cnktPmluc3RhbmNlID0gcnEtPmVuZ2luZS0+aW5zdGFu Y2U7CisJCQkgICBfX2VudHJ5LT5pbnN0YW5jZSA9IHJxLT5lbmdpbmUtPnVhYmlfaW5zdGFuY2U7 CiAJCQkgICBfX2VudHJ5LT5jdHggPSBycS0+ZmVuY2UuY29udGV4dDsKIAkJCSAgIF9fZW50cnkt PnNlcW5vID0gcnEtPmZlbmNlLnNlcW5vOwogCQkJICAgX19lbnRyeS0+ZmxhZ3MgPSBmbGFnczsK LS0gCjIuMjIuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4