From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 089/190] drm/i915: Tidy execlists submission and tracking Date: Mon, 11 Jan 2016 10:44:33 +0000 Message-ID: <1452509174-16671-3-git-send-email-chris@chris-wilson.co.uk> References: <1452503961-14837-1-git-send-email-chris@chris-wilson.co.uk> <1452509174-16671-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-f67.google.com (mail-wm0-f67.google.com [74.125.82.67]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8D0656E2CC for ; Mon, 11 Jan 2016 02:46:29 -0800 (PST) Received: by mail-wm0-f67.google.com with SMTP id u188so25620739wmu.0 for ; Mon, 11 Jan 2016 02:46:29 -0800 (PST) In-Reply-To: <1452509174-16671-1-git-send-email-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 T3RoZXIgdGhhbiBkcmFtYXRpY2FsbHkgc2ltcGxpZnlpbmcgdGhlIHN1Ym1pc3Npb24gY29kZSAo cmVxdWVzdHMgZnR3KSwKd2UgY2FuIHJlZHVjZSB0aGUgZXhlY2xpc3Qgc3BpbmxvY2sgZHVyYXRp b24gYW5kIGltcG9ydGFudGx5IGF2b2lkCmhhdmluZyB0byBob2xkIGl0IGFjcm9zcyB0aGUgY29u dGV4dCBzd2l0Y2ggcmVnaXN0ZXIgcmVhZHMuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24g PGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYyAgICAgICAgfCAgMjAgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMgICAgICAgICAgICB8ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVx dWVzdC5oICAgIHwgIDIxICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNz aW9uLmMgfCAgMzEgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAg ICB8IDUwNSArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmggICAgICAgICAgIHwgICAzIC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaCAgICB8ICAgOCArLQogNyBmaWxlcyBjaGFuZ2VkLCAyMDkgaW5zZXJ0 aW9ucygrKSwgMzg3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK aW5kZXggMTVhNmZkZGZiNzliLi5hNWVhOTA5NDRiYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jCkBAIC0yMDA1LDggKzIwMDUsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2R1bXBfbHJj X29iaihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCiAJCXJldHVybjsKIAl9CiAKLQlzZXFfcHJpbnRmKG0s ICJDT05URVhUOiAlcyAldVxuIiwgcmluZy0+bmFtZSwKLQkJICAgaW50ZWxfZXhlY2xpc3RzX2N0 eF9pZChjdHhfb2JqKSk7CisJc2VxX3ByaW50ZihtLCAiQ09OVEVYVDogJXNcbiIsIHJpbmctPm5h bWUpOwogCiAJaWYgKCFpOTE1X2dlbV9vYmpfZ2d0dF9ib3VuZChjdHhfb2JqKSkKIAkJc2VxX3B1 dHMobSwgIlx0Tm90IGJvdW5kIGluIEdHVFRcbiIpOwpAQCAtMjA5Miw3ICsyMDkxLDYgQEAgc3Rh dGljIGludCBpOTE1X2V4ZWNsaXN0cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJ aW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCiAJZm9yX2VhY2hfcmluZyhyaW5nLCBk ZXZfcHJpdiwgcmluZ19pZCkgewotCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKmhlYWRf cmVxID0gTlVMTDsKIAkJaW50IGNvdW50ID0gMDsKIAogCQlzZXFfcHJpbnRmKG0sICIlc1xuIiwg cmluZy0+bmFtZSk7CkBAIC0yMTA1LDggKzIxMDMsOCBAQCBzdGF0aWMgaW50IGk5MTVfZXhlY2xp c3RzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAkJc3RhdHVzX3BvaW50ZXIgPSBJ OTE1X1JFQUQoUklOR19DT05URVhUX1NUQVRVU19QVFIocmluZykpOwogCQlzZXFfcHJpbnRmKG0s ICJcdFN0YXR1cyBwb2ludGVyOiAweCUwOFhcbiIsIHN0YXR1c19wb2ludGVyKTsKIAotCQlyZWFk X3BvaW50ZXIgPSByaW5nLT5uZXh0X2NvbnRleHRfc3RhdHVzX2J1ZmZlcjsKLQkJd3JpdGVfcG9p bnRlciA9IEdFTjhfQ1NCX1dSSVRFX1BUUihzdGF0dXNfcG9pbnRlcik7CisJCXJlYWRfcG9pbnRl ciA9IChzdGF0dXNfcG9pbnRlciA+PiA4KSAmIEdFTjhfQ1NCX1BUUl9NQVNLOworCQl3cml0ZV9w b2ludGVyID0gc3RhdHVzX3BvaW50ZXIgJiBHRU44X0NTQl9QVFJfTUFTSzsKIAkJaWYgKHJlYWRf cG9pbnRlciA+IHdyaXRlX3BvaW50ZXIpCiAJCQl3cml0ZV9wb2ludGVyICs9IEdFTjhfQ1NCX0VO VFJJRVM7CiAJCXNlcV9wcmludGYobSwgIlx0UmVhZCBwb2ludGVyOiAweCUwOFgsIHdyaXRlIHBv aW50ZXIgMHglMDhYXG4iLApAQCAtMjEyMywyMSArMjEyMSw5IEBAIHN0YXRpYyBpbnQgaTkxNV9l eGVjbGlzdHMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCQlzcGluX2xvY2soJnJp bmctPmV4ZWNsaXN0X2xvY2spOwogCQlsaXN0X2Zvcl9lYWNoKGN1cnNvciwgJnJpbmctPmV4ZWNs aXN0X3F1ZXVlKQogCQkJY291bnQrKzsKLQkJaGVhZF9yZXEgPSBsaXN0X2ZpcnN0X2VudHJ5X29y X251bGwoJnJpbmctPmV4ZWNsaXN0X3F1ZXVlLAotCQkJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCwgZXhlY2xpc3RfbGluayk7CiAJCXNwaW5fdW5sb2NrKCZyaW5nLT5leGVjbGlzdF9sb2Nr KTsKIAogCQlzZXFfcHJpbnRmKG0sICJcdCVkIHJlcXVlc3RzIGluIHF1ZXVlXG4iLCBjb3VudCk7 Ci0JCWlmIChoZWFkX3JlcSkgewotCQkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9v Ymo7Ci0KLQkJCWN0eF9vYmogPSBoZWFkX3JlcS0+Y3R4LT5lbmdpbmVbcmluZ19pZF0uc3RhdGU7 Ci0JCQlzZXFfcHJpbnRmKG0sICJcdEhlYWQgcmVxdWVzdCBpZDogJXVcbiIsCi0JCQkJICAgaW50 ZWxfZXhlY2xpc3RzX2N0eF9pZChjdHhfb2JqKSk7Ci0JCQlzZXFfcHJpbnRmKG0sICJcdEhlYWQg cmVxdWVzdCB0YWlsOiAldVxuIiwKLQkJCQkgICBoZWFkX3JlcS0+dGFpbCk7Ci0JCX0KLQogCQlz ZXFfcHV0YyhtLCAnXG4nKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IGViODc1 ZWNkNzkwNy4uMDU0ZTExY2ZmMDBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTIxOTMs MTIgKzIxOTMsMTIgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVzZXRfcmluZ19jbGVhbnVwKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogCWlmIChpOTE1LmVuYWJsZV9leGVjbGlz dHMpIHsKIAkJc3Bpbl9sb2NrKCZlbmdpbmUtPmV4ZWNsaXN0X2xvY2spOwotCi0JCS8qIGxpc3Rf c3BsaWNlX3RhaWxfaW5pdCBjaGVja3MgZm9yIGVtcHR5IGxpc3RzICovCiAJCWxpc3Rfc3BsaWNl X3RhaWxfaW5pdCgmZW5naW5lLT5leGVjbGlzdF9xdWV1ZSwKLQkJCQkgICAgICAmZW5naW5lLT5l eGVjbGlzdF9yZXRpcmVkX3JlcV9saXN0KTsKLQorCQkJCSAgICAgICZlbmdpbmUtPmV4ZWNsaXN0 X2NvbXBsZXRlZCk7CisJCW1lbXNldCgmZW5naW5lLT5leGVjbGlzdF9wb3J0LCAwLAorCQkgICAg ICAgc2l6ZW9mKGVuZ2luZS0+ZXhlY2xpc3RfcG9ydCkpOwogCQlzcGluX3VubG9jaygmZW5naW5l LT5leGVjbGlzdF9sb2NrKTsKKwogCQlpbnRlbF9leGVjbGlzdHNfcmV0aXJlX3JlcXVlc3RzKGVu Z2luZSk7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9y ZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKaW5kZXgg NTk5NTdkNWVkZmRiLi5jMmU4MzU4NGY4YTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3JlcXVlc3QuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9yZXF1ZXN0LmgKQEAgLTYzLDEwICs2MywxMSBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgewogCSAqIFRoaXMgaXMgcmVxdWlyZWQgdG8gY2FsY3VsYXRlIHRoZSBtYXhpbXVtIGF2YWls YWJsZSByaW5nYnVmZmVyCiAJICogc3BhY2Ugd2l0aG91dCBvdmVyd3JpdGluZyB0aGUgcG9zdGZp eC4KIAkgKi8KLQkgdTMyIHBvc3RmaXg7CisJdTMyIHBvc3RmaXg7CiAKIAkvKiogUG9zaXRpb24g aW4gdGhlIHJpbmdidWZmZXIgb2YgdGhlIGVuZCBvZiB0aGUgd2hvbGUgcmVxdWVzdCAqLwogCXUz MiB0YWlsOworCXUzMiB3YV90YWlsOwogCiAJLyoqCiAJICogQ29udGV4dCBhbmQgcmluZyBidWZm ZXIgcmVsYXRlZCB0byB0aGlzIHJlcXVlc3QKQEAgLTk5LDI0ICsxMDAsOCBAQCBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgewogCS8qKiBwcm9jZXNzIGlkZW50aWZpZXIgc3VibWl0dGluZyB0 aGlzIHJlcXVlc3QgKi8KIAlzdHJ1Y3QgcGlkICpwaWQ7CiAKLQkvKioKLQkgKiBUaGUgRUxTUCBv bmx5IGFjY2VwdHMgdHdvIGVsZW1lbnRzIGF0IGEgdGltZSwgc28gd2UgcXVldWUKLQkgKiBjb250 ZXh0L3RhaWwgcGFpcnMgb24gYSBnaXZlbiBxdWV1ZSAocmluZy0+ZXhlY2xpc3RfcXVldWUpIHVu dGlsIHRoZQotCSAqIGhhcmR3YXJlIGlzIGF2YWlsYWJsZS4gVGhlIHF1ZXVlIHNlcnZlcyBhIGRv dWJsZSBwdXJwb3NlOiB3ZSBhbHNvIHVzZQotCSAqIGl0IHRvIGtlZXAgdHJhY2sgb2YgdGhlIHVw IHRvIDIgY29udGV4dHMgY3VycmVudGx5IGluIHRoZSBoYXJkd2FyZQotCSAqICh1c3VhbGx5IG9u ZSBpbiBleGVjdXRpb24gYW5kIHRoZSBvdGhlciBxdWV1ZWQgdXAgYnkgdGhlIEdQVSk6IFdlCi0J ICogb25seSByZW1vdmUgZWxlbWVudHMgZnJvbSB0aGUgaGVhZCBvZiB0aGUgcXVldWUgd2hlbiB0 aGUgaGFyZHdhcmUKLQkgKiBpbmZvcm1zIHVzIHRoYXQgYW4gZWxlbWVudCBoYXMgYmVlbiBjb21w bGV0ZWQuCi0JICoKLQkgKiBBbGwgYWNjZXNzZXMgdG8gdGhlIHF1ZXVlIGFyZSBtZWRpYXRlZCBi eSBhIHNwaW5sb2NrCi0JICogKHJpbmctPmV4ZWNsaXN0X2xvY2spLgotCSAqLwotCiAJLyoqIEV4 ZWNsaXN0IGxpbmsgaW4gdGhlIHN1Ym1pc3Npb24gcXVldWUuKi8KLQlzdHJ1Y3QgbGlzdF9oZWFk IGV4ZWNsaXN0X2xpbms7Ci0KLQkvKiogRXhlY2xpc3RzIG5vLiBvZiB0aW1lcyB0aGlzIHJlcXVl c3QgaGFzIGJlZW4gc2VudCB0byB0aGUgRUxTUCAqLwotCWludCBlbHNwX3N1Ym1pdHRlZDsKKwlz dHJ1Y3QgbGlzdF9oZWFkIGV4ZWNsaXN0X2xpbms7IC8qIGd1YXJkZWQgYnkgZW5naW5lLT5leGVj bGlzdF9sb2NrICovCiB9OwogCiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCmluZGV4IDVhNjI1MTkyNjM2Ny4u ZjRlMDk5NTJkNTJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19z dWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lv bi5jCkBAIC0zOTMsNyArMzkzLDYgQEAgc3RhdGljIHZvaWQgZ3VjX2luaXRfY3R4X2Rlc2Moc3Ry dWN0IGludGVsX2d1YyAqZ3VjLAogCQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IGN0eC0+ZW5n aW5lW2ldLnJpbmc7CiAJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKIAkJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKLQkJdWludDY0X3QgY3R4X2Rlc2M7CiAKIAkJLyog VE9ETzogV2UgaGF2ZSBhIGRlc2lnbiBpc3N1ZSB0byBiZSBzb2x2ZWQgaGVyZS4gT25seSB3aGVu IHdlCiAJCSAqIHJlY2VpdmUgdGhlIGZpcnN0IGJhdGNoLCB3ZSBrbm93IHdoaWNoIGVuZ2luZSBp cyB1c2VkIGJ5IHRoZQpAQCAtNDA3LDggKzQwNiw3IEBAIHN0YXRpYyB2b2lkIGd1Y19pbml0X2N0 eF9kZXNjKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKIAkJCWJyZWFrOwkvKiBYWFg6IGNvbnRpbnVl PyAqLwogCiAJCWVuZ2luZSA9IHJpbmctPmVuZ2luZTsKLQkJY3R4X2Rlc2MgPSBpbnRlbF9scl9j b250ZXh0X2Rlc2NyaXB0b3IoY3R4LCBlbmdpbmUpOwotCQlscmMtPmNvbnRleHRfZGVzYyA9ICh1 MzIpY3R4X2Rlc2M7CisJCWxyYy0+Y29udGV4dF9kZXNjID0gZW5naW5lLT5leGVjbGlzdF9jb250 ZXh0X2Rlc2NyaXB0b3I7CiAKIAkJLyogVGhlIHN0YXRlIHBhZ2UgaXMgYWZ0ZXIgUFBIV1NQICov CiAJCWxyYy0+cmluZ19sY3JhID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaikgKwpAQCAt NTQ4LDcgKzU0Niw3IEBAIHN0YXRpYyBpbnQgZ3VjX2FkZF93b3JrcXVldWVfaXRlbShzdHJ1Y3Qg aTkxNV9ndWNfY2xpZW50ICpnYywKIAkJCVdRX05PX1dDRkxVU0hfV0FJVDsKIAogCS8qIFRoZSBH dUMgd2FudHMgb25seSB0aGUgbG93LW9yZGVyIHdvcmQgb2YgdGhlIGNvbnRleHQgZGVzY3JpcHRv ciAqLwotCXdxaS0+Y29udGV4dF9kZXNjID0gKHUzMilpbnRlbF9scl9jb250ZXh0X2Rlc2NyaXB0 b3IocnEtPmN0eCwgcnEtPmVuZ2luZSk7CisJd3FpLT5jb250ZXh0X2Rlc2MgPSBycS0+ZW5naW5l LT5leGVjbGlzdF9jb250ZXh0X2Rlc2NyaXB0b3I7CiAKIAkvKiBUaGUgR3VDIGZpcm13YXJlIHdh bnRzIHRoZSB0YWlsIGluZGV4IGluIFFXb3Jkcywgbm90IGJ5dGVzICovCiAJdGFpbCA9IHJxLT5y aW5nLT50YWlsID4+IDM7CkBAIC01NjIsMjcgKzU2MCw2IEBAIHN0YXRpYyBpbnQgZ3VjX2FkZF93 b3JrcXVldWVfaXRlbShzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpnYywKIAogI2RlZmluZSBDVFhf UklOR19CVUZGRVJfU1RBUlQJCTB4MDgKIAotLyogVXBkYXRlIHRoZSByaW5nYnVmZmVyIHBvaW50 ZXIgaW4gYSBzYXZlZCBjb250ZXh0IGltYWdlICovCi1zdGF0aWMgdm9pZCBscl9jb250ZXh0X3Vw ZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQotewotCWVudW0gaW50ZWxfZW5n aW5lX2lkIHJpbmdfaWQgPSBycS0+ZW5naW5lLT5pZDsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqY3R4X29iaiA9IHJxLT5jdHgtPmVuZ2luZVtyaW5nX2lkXS5zdGF0ZTsKLQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqcmJfb2JqID0gcnEtPnJpbmctPm9iajsKLQlzdHJ1Y3QgcGFn ZSAqcGFnZTsKLQl1aW50MzJfdCAqcmVnX3N0YXRlOwotCi0JQlVHX09OKCFjdHhfb2JqKTsKLQlX QVJOX09OKCFpOTE1X2dlbV9vYmpfaXNfcGlubmVkKGN0eF9vYmopKTsKLQlXQVJOX09OKCFpOTE1 X2dlbV9vYmpfaXNfcGlubmVkKHJiX29iaikpOwotCi0JcGFnZSA9IGk5MTVfZ2VtX29iamVjdF9n ZXRfZGlydHlfcGFnZShjdHhfb2JqLCBMUkNfU1RBVEVfUE4pOwotCXJlZ19zdGF0ZSA9IGttYXBf YXRvbWljKHBhZ2UpOwotCi0JcmVnX3N0YXRlW0NUWF9SSU5HX0JVRkZFUl9TVEFSVCsxXSA9IGk5 MTVfZ2VtX29ial9nZ3R0X29mZnNldChyYl9vYmopOwotCi0Ja3VubWFwX2F0b21pYyhyZWdfc3Rh dGUpOwotfQotCiAvKioKICAqIGk5MTVfZ3VjX3N1Ym1pdCgpIC0gU3VibWl0IGNvbW1hbmRzIHRo cm91Z2ggR3VDCiAgKiBAY2xpZW50Ogl0aGUgZ3VjIGNsaWVudCB3aGVyZSBjb21tYW5kcyB3aWxs IGdvIHRocm91Z2gKQEAgLTU5NywxMCArNTc0LDYgQEAgaW50IGk5MTVfZ3VjX3N1Ym1pdChzdHJ1 Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQsCiAJZW51bSBpbnRlbF9lbmdpbmVfaWQgcmluZ19p ZCA9IHJxLT5lbmdpbmUtPmlkOwogCWludCBxX3JldCwgYl9yZXQ7CiAKLQkvKiBOZWVkIHRoaXMg YmVjYXVzZSBvZiB0aGUgZGVmZXJyZWQgcGluIGN0eCBhbmQgcmluZyAqLwotCS8qIFNoYWxsIHdl IG1vdmUgdGhpcyByaWdodCBhZnRlciByaW5nIGlzIHBpbm5lZD8gKi8KLQlscl9jb250ZXh0X3Vw ZGF0ZShycSk7Ci0KIAlxX3JldCA9IGd1Y19hZGRfd29ya3F1ZXVlX2l0ZW0oY2xpZW50LCBycSk7 CiAJaWYgKHFfcmV0ID09IDApCiAJCWJfcmV0ID0gZ3VjX3JpbmdfZG9vcmJlbGwoY2xpZW50KTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggZGU1ODg5ZTk1ZDZkLi44MGIzNDZhM2ZkOGEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC0yNjUsMjMzICsyNjUsMTMzIEBAIGludCBp bnRlbF9zYW5pdGl6ZV9lbmFibGVfZXhlY2xpc3RzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGlu dCBlbmFibGVfZXhlY2xpc3RzCiAJcmV0dXJuIDA7CiB9CiAKLS8qKgotICogaW50ZWxfZXhlY2xp c3RzX2N0eF9pZCgpIC0gZ2V0IHRoZSBFeGVjbGlzdHMgQ29udGV4dCBJRAotICogQGN0eF9vYmo6 IExvZ2ljYWwgUmluZyBDb250ZXh0IGJhY2tpbmcgb2JqZWN0LgotICoKLSAqIERvIG5vdCBjb25m dXNlIHdpdGggY3R4LT5pZCEgVW5mb3J0dW5hdGVseSB3ZSBoYXZlIGEgbmFtZSBvdmVybG9hZAot ICogaGVyZTogdGhlIG9sZCBjb250ZXh0IElEIHdlIHBhc3MgdG8gdXNlcnNwYWNlIGFzIGEgaGFu ZGxlciBzbyB0aGF0Ci0gKiB0aGV5IGNhbiByZWZlciB0byBhIGNvbnRleHQsIGFuZCB0aGUgbmV3 IGNvbnRleHQgSUQgd2UgcGFzcyB0byB0aGUKLSAqIEVMU1Agc28gdGhhdCB0aGUgR1BVIGNhbiBp bmZvcm0gdXMgb2YgdGhlIGNvbnRleHQgc3RhdHVzIHZpYQotICogaW50ZXJydXB0cy4KLSAqCi0g KiBSZXR1cm46IDIwLWJpdHMgZ2xvYmFsbHkgdW5pcXVlIGNvbnRleHQgSUQuCi0gKi8KLXUzMiBp bnRlbF9leGVjbGlzdHNfY3R4X2lkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfb2Jq KQotewotCXUzMiBscmNhID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KGN0eF9vYmopICsKLQkJ CUxSQ19QUEhXU1BfUE4gKiBQQUdFX1NJWkU7Ci0KLQkvKiBMUkNBIGlzIHJlcXVpcmVkIHRvIGJl IDRLIGFsaWduZWQgc28gdGhlIG1vcmUgc2lnbmlmaWNhbnQgMjAgYml0cwotCSAqIGFyZSBnbG9i YWxseSB1bmlxdWUgKi8KLQlyZXR1cm4gbHJjYSA+PiAxMjsKLX0KLQotc3RhdGljIGJvb2wgZGlz YWJsZV9saXRlX3Jlc3RvcmVfd2Eoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKLXsKLQly ZXR1cm4gKElTX1NLTF9SRVZJRChyaW5nLT5kZXYsIDAsIFNLTF9SRVZJRF9CMCkgfHwKLQkJSVNf QlhUX1JFVklEKHJpbmctPmRldiwgMCwgQlhUX1JFVklEX0ExKSkgJiYKLQkJKHJpbmctPmlkID09 IFZDUyB8fCByaW5nLT5pZCA9PSBWQ1MyKTsKLX0KLQotdWludDY0X3QgaW50ZWxfbHJfY29udGV4 dF9kZXNjcmlwdG9yKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCi0JCQkJICAgICBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nKQorc3RhdGljIHUzMiBleGVjbGlzdHNfcmVxdWVzdF93cml0 ZV90YWlsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQogewotCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpjdHhfb2JqID0gY3R4LT5lbmdpbmVbcmluZy0+aWRdLnN0YXRlOwot CXVpbnQ2NF90IGRlc2M7Ci0JdWludDY0X3QgbHJjYSA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNl dChjdHhfb2JqKSArCi0JCQlMUkNfUFBIV1NQX1BOICogUEFHRV9TSVpFOwotCi0JV0FSTl9PTihs cmNhICYgMHhGRkZGRkZGRjAwMDAwRkZGVUxMKTsKLQotCWRlc2MgPSBHRU44X0NUWF9WQUxJRDsK LQlkZXNjIHw9IEdFTjhfQ1RYX0FERFJFU1NJTkdfTU9ERShyaW5nLT5pOTE1KSA8PCBHRU44X0NU WF9BRERSRVNTSU5HX01PREVfU0hJRlQ7Ci0JaWYgKElTX0dFTjgocmluZy0+aTkxNSkpCi0JCWRl c2MgfD0gR0VOOF9DVFhfTDNMTENfQ09IRVJFTlQ7Ci0JZGVzYyB8PSBHRU44X0NUWF9QUklWSUxF R0U7Ci0JZGVzYyB8PSBscmNhOwotCWRlc2MgfD0gKHU2NClpbnRlbF9leGVjbGlzdHNfY3R4X2lk KGN0eF9vYmopIDw8IEdFTjhfQ1RYX0lEX1NISUZUOwotCi0JLyogVE9ETzogV2FEaXNhYmxlTGl0 ZVJlc3RvcmUgd2hlbiB3ZSBzdGFydCB1c2luZyBzZW1hcGhvcmUKLQkgKiBzaWduYWxsaW5nIGJl dHdlZW4gQ29tbWFuZCBTdHJlYW1lcnMgKi8KLQkvKiBkZXNjIHw9IEdFTjhfQ1RYX0ZPUkNFX1JF U1RPUkU7ICovCisJc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXEtPnJpbmc7CisJc3RydWN0 IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0gcmVxLT5jdHgtPnBwZ3R0OwogCi0JLyogV2FFbmFibGVG b3JjZVJlc3RvcmVJbkN0eHREZXNjRm9yVkNTOnNrbCAqLwotCS8qIFdhRW5hYmxlRm9yY2VSZXN0 b3JlSW5DdHh0RGVzY0ZvclZDUzpieHQgKi8KLQlpZiAoZGlzYWJsZV9saXRlX3Jlc3RvcmVfd2Eo cmluZykpCi0JCWRlc2MgfD0gR0VOOF9DVFhfRk9SQ0VfUkVTVE9SRTsKKwlpZiAocHBndHQgJiYg IVVTRVNfRlVMTF80OEJJVF9QUEdUVChyZXEtPmk5MTUpKSB7CisJCS8qIFRydWUgMzJiIFBQR1RU IHdpdGggZHluYW1pYyBwYWdlIGFsbG9jYXRpb246IHVwZGF0ZSBQRFAKKwkJICogcmVnaXN0ZXJz IGFuZCBwb2ludCB0aGUgdW5hbGxvY2F0ZWQgUERQcyB0byBzY3JhdGNoIHBhZ2UuCisJCSAqIFBN TDQgaXMgYWxsb2NhdGVkIGR1cmluZyBwcGd0dCBpbml0LCBzbyB0aGlzIGlzIG5vdCBuZWVkZWQK KwkJICogaW4gNDgtYml0IG1vZGUuCisJCSAqLworCQlpZiAocHBndHQtPnBkX2RpcnR5X3Jpbmdz ICYgaW50ZWxfZW5naW5lX2ZsYWcocmVxLT5lbmdpbmUpKSB7CisJCQlBU1NJR05fQ1RYX1BEUChw cGd0dCwgcmluZy0+cmVnaXN0ZXJzLCAzKTsKKwkJCUFTU0lHTl9DVFhfUERQKHBwZ3R0LCByaW5n LT5yZWdpc3RlcnMsIDIpOworCQkJQVNTSUdOX0NUWF9QRFAocHBndHQsIHJpbmctPnJlZ2lzdGVy cywgMSk7CisJCQlBU1NJR05fQ1RYX1BEUChwcGd0dCwgcmluZy0+cmVnaXN0ZXJzLCAwKTsKKwkJ CXBwZ3R0LT5wZF9kaXJ0eV9yaW5ncyAmPSB+aW50ZWxfZW5naW5lX2ZsYWcocmVxLT5lbmdpbmUp OworCQl9CisJfQogCi0JcmV0dXJuIGRlc2M7CisJcmluZy0+cmVnaXN0ZXJzW0NUWF9SSU5HX1RB SUwrMV0gPSByZXEtPnRhaWw7CisJcmV0dXJuIHJpbmctPmNvbnRleHRfZGVzY3JpcHRvcjsKIH0K IAotc3RhdGljIHZvaWQgZXhlY2xpc3RzX2Vsc3Bfd3JpdGUoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpycTAsCi0JCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnExKQorc3Rh dGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pdF9wYWlyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcpCiB7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmluZy0+aTkxNTsK Kwl1aW50MzJfdCBkZXNjWzRdOwogCi0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0g cnEwLT5lbmdpbmU7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcnEwLT5p OTE1OwotCXVpbnQ2NF90IGRlc2NbMl07Ci0KLQlpZiAocnExKSB7Ci0JCWRlc2NbMV0gPSBpbnRl bF9scl9jb250ZXh0X2Rlc2NyaXB0b3IocnExLT5jdHgsIHJxMS0+ZW5naW5lKTsKLQkJcnExLT5l bHNwX3N1Ym1pdHRlZCsrOwotCX0gZWxzZSB7Ci0JCWRlc2NbMV0gPSAwOwotCX0KKwlpZiAocmlu Zy0+ZXhlY2xpc3RfcG9ydFsxXSkgeworCQlkZXNjWzBdID0gZXhlY2xpc3RzX3JlcXVlc3Rfd3Jp dGVfdGFpbChyaW5nLT5leGVjbGlzdF9wb3J0WzFdKTsKKwkJZGVzY1sxXSA9IHJpbmctPmV4ZWNs aXN0X3BvcnRbMV0tPmZlbmNlLnNlcW5vOworCX0gZWxzZQorCQlkZXNjWzFdID0gZGVzY1swXSA9 IDA7CiAKLQlkZXNjWzBdID0gaW50ZWxfbHJfY29udGV4dF9kZXNjcmlwdG9yKHJxMC0+Y3R4LCBy cTAtPmVuZ2luZSk7Ci0JcnEwLT5lbHNwX3N1Ym1pdHRlZCsrOworCWRlc2NbMl0gPSBleGVjbGlz dHNfcmVxdWVzdF93cml0ZV90YWlsKHJpbmctPmV4ZWNsaXN0X3BvcnRbMF0pOworCWRlc2NbM10g PSByaW5nLT5leGVjbGlzdF9wb3J0WzBdLT5mZW5jZS5zZXFubzsKIAotCS8qIFlvdSBtdXN0IGFs d2F5cyB3cml0ZSBib3RoIGRlc2NyaXB0b3JzIGluIHRoZSBvcmRlciBiZWxvdy4gKi8KLQlzcGlu X2xvY2tfaXJxKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2spOwotCWludGVsX3VuY29yZV9mb3JjZXdh a2VfZ2V0X19sb2NrZWQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwotCUk5MTVfV1JJVEVfRlco UklOR19FTFNQKGVuZ2luZSksIHVwcGVyXzMyX2JpdHMoZGVzY1sxXSkpOwotCUk5MTVfV1JJVEVf RlcoUklOR19FTFNQKGVuZ2luZSksIGxvd2VyXzMyX2JpdHMoZGVzY1sxXSkpOworCS8qIE5vdGU6 IFlvdSBtdXN0IGFsd2F5cyB3cml0ZSBib3RoIGRlc2NyaXB0b3JzIGluIHRoZSBvcmRlciBiZWxv dy4gKi8KKwlJOTE1X1dSSVRFX0ZXKFJJTkdfRUxTUChyaW5nKSwgZGVzY1sxXSk7CisJSTkxNV9X UklURV9GVyhSSU5HX0VMU1AocmluZyksIGRlc2NbMF0pOworCUk5MTVfV1JJVEVfRlcoUklOR19F TFNQKHJpbmcpLCBkZXNjWzNdKTsKIAotCUk5MTVfV1JJVEVfRlcoUklOR19FTFNQKGVuZ2luZSks IHVwcGVyXzMyX2JpdHMoZGVzY1swXSkpOwogCS8qIFRoZSBjb250ZXh0IGlzIGF1dG9tYXRpY2Fs bHkgbG9hZGVkIGFmdGVyIHRoZSBmb2xsb3dpbmcgKi8KLQlJOTE1X1dSSVRFX0ZXKFJJTkdfRUxT UChlbmdpbmUpLCBsb3dlcl8zMl9iaXRzKGRlc2NbMF0pKTsKLQotCS8qIEVMU1AgaXMgYSB3byBy ZWdpc3RlciwgdXNlIGFub3RoZXIgbmVhcmJ5IHJlZyBmb3IgcG9zdGluZyAqLwotCVBPU1RJTkdf UkVBRF9GVyhSSU5HX0VYRUNMSVNUX1NUQVRVU19MTyhlbmdpbmUpKTsKLQlpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3B1dF9fbG9ja2VkKGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKLQlzcGluX3Vu bG9ja19pcnEoJmRldl9wcml2LT51bmNvcmUubG9jayk7CisJSTkxNV9XUklURV9GVyhSSU5HX0VM U1AocmluZyksIGRlc2NbMl0pOwogfQogCi1zdGF0aWMgaW50IGV4ZWNsaXN0c191cGRhdGVfY29u dGV4dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQorc3RhdGljIHZvaWQgZXhlY2xp c3RzX2NvbnRleHRfdW5xdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7Ci0J c3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0gcnEtPmN0eC0+cHBndHQ7Ci0Jc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vYmogPSBycS0+Y3R4LT5lbmdpbmVbcnEtPmVuZ2luZS0+ aWRdLnN0YXRlOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpyYl9vYmogPSBycS0+cmlu Zy0+b2JqOwotCXN0cnVjdCBwYWdlICpwYWdlOwotCXVpbnQzMl90ICpyZWdfc3RhdGU7Ci0KLQlC VUdfT04oIWN0eF9vYmopOwotCVdBUk5fT04oIWk5MTVfZ2VtX29ial9pc19waW5uZWQoY3R4X29i aikpOwotCVdBUk5fT04oIWk5MTVfZ2VtX29ial9pc19waW5uZWQocmJfb2JqKSk7Ci0KLQlwYWdl ID0gaTkxNV9nZW1fb2JqZWN0X2dldF9kaXJ0eV9wYWdlKGN0eF9vYmosIExSQ19TVEFURV9QTik7 Ci0JcmVnX3N0YXRlID0ga21hcF9hdG9taWMocGFnZSk7CisJc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpjdXJzb3I7CisJYm9vbCBzdWJtaXQgPSBmYWxzZTsKKwlpbnQgcG9ydCA9IDA7CiAK LQlyZWdfc3RhdGVbQ1RYX1JJTkdfVEFJTCsxXSA9IHJxLT50YWlsOwotCXJlZ19zdGF0ZVtDVFhf UklOR19CVUZGRVJfU1RBUlQrMV0gPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQocmJfb2JqKTsK Kwlhc3NlcnRfc3Bpbl9sb2NrZWQoJmVuZ2luZS0+ZXhlY2xpc3RfbG9jayk7CiAKLQlpZiAocHBn dHQgJiYgIVVTRVNfRlVMTF80OEJJVF9QUEdUVChycS0+aTkxNSkpIHsKLQkJLyogVHJ1ZSAzMmIg UFBHVFQgd2l0aCBkeW5hbWljIHBhZ2UgYWxsb2NhdGlvbjogdXBkYXRlIFBEUAotCQkgKiByZWdp c3RlcnMgYW5kIHBvaW50IHRoZSB1bmFsbG9jYXRlZCBQRFBzIHRvIHNjcmF0Y2ggcGFnZS4KLQkJ ICogUE1MNCBpcyBhbGxvY2F0ZWQgZHVyaW5nIHBwZ3R0IGluaXQsIHNvIHRoaXMgaXMgbm90IG5l ZWRlZAotCQkgKiBpbiA0OC1iaXQgbW9kZS4KKwkvKiBUcnkgdG8gcmVhZCBpbiBwYWlycyBhbmQg ZmlsbCBib3RoIHN1Ym1pc3Npb24gcG9ydHMgKi8KKwljdXJzb3IgPSBlbmdpbmUtPmV4ZWNsaXN0 X3BvcnRbcG9ydF07CisJaWYgKGN1cnNvciAhPSBOVUxMKSB7CisJCS8qIFdhSWRsZUxpdGVSZXN0 b3JlOmJkdyxza2wKKwkJICogQXBwbHkgdGhlIHdhIE5PT1BzIHRvIHByZXZlbnQgcmluZzpIRUFE ID09IHJlcTpUQUlMCisJCSAqIGFzIHdlIHJlc3VibWl0IHRoZSByZXF1ZXN0LiBTZWUgZ2VuOF9l bWl0X3JlcXVlc3QoKQorCQkgKiBmb3Igd2hlcmUgd2UgcHJlcGFyZSB0aGUgcGFkZGluZyBhZnRl ciB0aGUgZW5kIG9mIHRoZQorCQkgKiByZXF1ZXN0LgogCQkgKi8KLQkJQVNTSUdOX0NUWF9QRFAo cHBndHQsIHJlZ19zdGF0ZSwgMyk7Ci0JCUFTU0lHTl9DVFhfUERQKHBwZ3R0LCByZWdfc3RhdGUs IDIpOwotCQlBU1NJR05fQ1RYX1BEUChwcGd0dCwgcmVnX3N0YXRlLCAxKTsKLQkJQVNTSUdOX0NU WF9QRFAocHBndHQsIHJlZ19zdGF0ZSwgMCk7Ci0JfQotCi0Ja3VubWFwX2F0b21pYyhyZWdfc3Rh dGUpOwotCi0JcmV0dXJuIDA7Ci19CisJCWN1cnNvci0+dGFpbCA9IGN1cnNvci0+d2FfdGFpbDsK KwkJY3Vyc29yID0gbGlzdF9uZXh0X2VudHJ5KGN1cnNvciwgZXhlY2xpc3RfbGluayk7CisJfSBl bHNlCisJCWN1cnNvciA9IGxpc3RfZmlyc3RfZW50cnkoJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUs CisJCQkJCSAgdHlwZW9mKCpjdXJzb3IpLAorCQkJCQkgIGV4ZWNsaXN0X2xpbmspOworCXdoaWxl ICgmY3Vyc29yLT5leGVjbGlzdF9saW5rICE9ICZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlKSB7CisJ CS8qIFNhbWUgY3R4OiBpZ25vcmUgZWFybGllciByZXF1ZXN0LCBhcyB0aGUKKwkJICogc2Vjb25k IHJlcXVlc3QgZXh0ZW5kcyB0aGUgZmlyc3QuCisJCSAqLworCQlpZiAoZW5naW5lLT5leGVjbGlz dF9wb3J0W3BvcnRdICYmCisJCSAgICBjdXJzb3ItPmN0eCAhPSBlbmdpbmUtPmV4ZWNsaXN0X3Bv cnRbcG9ydF0tPmN0eCkgeworCQkJaWYgKCsrcG9ydCA9PSBBUlJBWV9TSVpFKGVuZ2luZS0+ZXhl Y2xpc3RfcG9ydCkpCisJCQkJYnJlYWs7CisJCX0KIAotc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1 Ym1pdF9yZXF1ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxMCwKLQkJCQkgICAg ICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxMSkKLXsKLQlleGVjbGlzdHNfdXBkYXRl X2NvbnRleHQocnEwKTsKKwkJZW5naW5lLT5leGVjbGlzdF9wb3J0W3BvcnRdID0gY3Vyc29yOwor CQlzdWJtaXQgPSB0cnVlOwogCi0JaWYgKHJxMSkKLQkJZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0 KHJxMSk7CisJCWN1cnNvciA9IGxpc3RfbmV4dF9lbnRyeShjdXJzb3IsIGV4ZWNsaXN0X2xpbmsp OworCX0KIAotCWV4ZWNsaXN0c19lbHNwX3dyaXRlKHJxMCwgcnExKTsKKwlpZiAoc3VibWl0KQor CQlleGVjbGlzdHNfc3VibWl0X3BhaXIoZW5naW5lKTsKIH0KIAotc3RhdGljIHZvaWQgZXhlY2xp c3RzX2NvbnRleHRfdW5xdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCitzdGF0 aWMgYm9vbCBleGVjbGlzdHNfY29tcGxldGVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lLAorCQkJCQl1MzIgc2Vxbm8pCiB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEwID0gTlVMTCwgKnJlcTEgPSBOVUxMOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqY3Vyc29yID0gTlVMTCwgKnRtcCA9IE5VTEw7Ci0KIAlhc3NlcnRfc3Bpbl9sb2NrZWQo JmVuZ2luZS0+ZXhlY2xpc3RfbG9jayk7CiAKLQkvKgotCSAqIElmIGlycXMgYXJlIG5vdCBhY3Rp dmUgZ2VuZXJhdGUgYSB3YXJuaW5nIGFzIGJhdGNoZXMgdGhhdCBmaW5pc2gKLQkgKiB3aXRob3V0 IHRoZSBpcnFzIG1heSBnZXQgbG9zdCBhbmQgYSBHUFUgSGFuZyBtYXkgb2NjdXIuCi0JICovCi0J V0FSTl9PTighaW50ZWxfaXJxc19lbmFibGVkKGVuZ2luZS0+ZGV2LT5kZXZfcHJpdmF0ZSkpOwor CWRvIHsKKwkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7CiAKLQlpZiAobGlzdF9l bXB0eSgmZW5naW5lLT5leGVjbGlzdF9xdWV1ZSkpCi0JCXJldHVybjsKKwkJcmVxID0gZW5naW5l LT5leGVjbGlzdF9wb3J0WzBdOworCQlpZiAocmVxID09IE5VTEwpCisJCQlicmVhazsKIAotCS8q IFRyeSB0byByZWFkIGluIHBhaXJzICovCi0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGN1cnNv ciwgdG1wLCAmZW5naW5lLT5leGVjbGlzdF9xdWV1ZSwKLQkJCQkgZXhlY2xpc3RfbGluaykgewot CQlpZiAoIXJlcTApIHsKLQkJCXJlcTAgPSBjdXJzb3I7Ci0JCX0gZWxzZSBpZiAocmVxMC0+Y3R4 ID09IGN1cnNvci0+Y3R4KSB7Ci0JCQkvKiBTYW1lIGN0eDogaWdub3JlIGZpcnN0IHJlcXVlc3Qs IGFzIHNlY29uZCByZXF1ZXN0Ci0JCQkgKiB3aWxsIHVwZGF0ZSB0YWlsIHBhc3QgZmlyc3QgcmVx dWVzdCdzIHdvcmtsb2FkICovCi0JCQljdXJzb3ItPmVsc3Bfc3VibWl0dGVkID0gcmVxMC0+ZWxz cF9zdWJtaXR0ZWQ7Ci0JCQlsaXN0X2RlbCgmcmVxMC0+ZXhlY2xpc3RfbGluayk7Ci0JCQlsaXN0 X2FkZF90YWlsKCZyZXEwLT5leGVjbGlzdF9saW5rLAotCQkJCSZlbmdpbmUtPmV4ZWNsaXN0X3Jl dGlyZWRfcmVxX2xpc3QpOwotCQkJcmVxMCA9IGN1cnNvcjsKLQkJfSBlbHNlIHsKLQkJCXJlcTEg PSBjdXJzb3I7CisJCWlmICghaTkxNV9zZXFub19wYXNzZWQoc2Vxbm8sIHJlcS0+ZmVuY2Uuc2Vx bm8pKQogCQkJYnJlYWs7Ci0JCX0KLQl9CiAKLQlpZiAoSVNfR0VOOChlbmdpbmUtPmRldikgfHwg SVNfR0VOOShlbmdpbmUtPmRldikpIHsKLQkJLyoKLQkJICogV2FJZGxlTGl0ZVJlc3RvcmU6IG1h a2Ugc3VyZSB3ZSBuZXZlciBjYXVzZSBhIGxpdGUKLQkJICogcmVzdG9yZSB3aXRoIEhFQUQ9PVRB SUwKKwkJLyogTW92ZSB0aGUgY29tcGxldGVkIHNldCBvZiByZXF1ZXN0cyBmcm9tIHRoZSBzdGFy dCBvZiB0aGUKKwkJICogZXhlY2xpc3RfcXVldWUgb3ZlciB0byB0aGUgdGFpbCBvZiB0aGUgZXhl Y2xpc3RfY29tcGxldGVkLgogCQkgKi8KLQkJaWYgKHJlcTAtPmVsc3Bfc3VibWl0dGVkKSB7Ci0J CQkvKgotCQkJICogQXBwbHkgdGhlIHdhIE5PT1BTIHRvIHByZXZlbnQgcmluZzpIRUFEID09IHJl cTpUQUlMCi0JCQkgKiBhcyB3ZSByZXN1Ym1pdCB0aGUgcmVxdWVzdC4gU2VlIGdlbjhfYWRkX3Jl cXVlc3QoKQotCQkJICogZm9yIHdoZXJlIHdlIHByZXBhcmUgdGhlIHBhZGRpbmcgYWZ0ZXIgdGhl IGVuZCBvZiB0aGUKLQkJCSAqIHJlcXVlc3QuCi0JCQkgKi8KLQkJCXN0cnVjdCBpbnRlbF9yaW5n ICpyaW5nOwotCi0JCQlyaW5nID0gcmVxMC0+Y3R4LT5lbmdpbmVbZW5naW5lLT5pZF0ucmluZzsK LQkJCXJlcTAtPnRhaWwgKz0gODsKLQkJCXJlcTAtPnRhaWwgJj0gcmluZy0+c2l6ZSAtIDE7Ci0J CX0KLQl9Ci0KLQlXQVJOX09OKHJlcTEgJiYgcmVxMS0+ZWxzcF9zdWJtaXR0ZWQpOworCQllbmdp bmUtPmV4ZWNsaXN0X2NvbXBsZXRlZC5wcmV2LT5uZXh0ID0gZW5naW5lLT5leGVjbGlzdF9xdWV1 ZS5uZXh0OworCQllbmdpbmUtPmV4ZWNsaXN0X2NvbXBsZXRlZC5wcmV2ID0gJnJlcS0+ZXhlY2xp c3RfbGluazsKIAotCWV4ZWNsaXN0c19zdWJtaXRfcmVxdWVzdHMocmVxMCwgcmVxMSk7Ci19Ci0K LXN0YXRpYyBib29sIGV4ZWNsaXN0c19jaGVja19yZW1vdmVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nLAotCQkJCQkgICB1MzIgcmVxdWVzdF9pZCkKLXsKLQlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKmhlYWRfcmVxOworCQllbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlLm5l eHQgPSByZXEtPmV4ZWNsaXN0X2xpbmsubmV4dDsKKwkJcmVxLT5leGVjbGlzdF9saW5rLm5leHQt PnByZXYgPSAmZW5naW5lLT5leGVjbGlzdF9xdWV1ZTsKIAotCWFzc2VydF9zcGluX2xvY2tlZCgm cmluZy0+ZXhlY2xpc3RfbG9jayk7CisJCXJlcS0+ZXhlY2xpc3RfbGluay5uZXh0ID0gJmVuZ2lu ZS0+ZXhlY2xpc3RfY29tcGxldGVkOwogCi0JaGVhZF9yZXEgPSBsaXN0X2ZpcnN0X2VudHJ5X29y X251bGwoJnJpbmctPmV4ZWNsaXN0X3F1ZXVlLAotCQkJCQkgICAgc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0LAotCQkJCQkgICAgZXhlY2xpc3RfbGluayk7Ci0KLQlpZiAoaGVhZF9yZXEgIT0g TlVMTCkgewotCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaiA9Ci0JCQkJaGVh ZF9yZXEtPmN0eC0+ZW5naW5lW3JpbmctPmlkXS5zdGF0ZTsKLQkJaWYgKGludGVsX2V4ZWNsaXN0 c19jdHhfaWQoY3R4X29iaikgPT0gcmVxdWVzdF9pZCkgewotCQkJV0FSTihoZWFkX3JlcS0+ZWxz cF9zdWJtaXR0ZWQgPT0gMCwKLQkJCSAgICAgIk5ldmVyIHN1Ym1pdHRlZCBoZWFkIHJlcXVlc3Rc biIpOwotCi0JCQlpZiAoLS1oZWFkX3JlcS0+ZWxzcF9zdWJtaXR0ZWQgPD0gMCkgewotCQkJCWxp c3RfZGVsKCZoZWFkX3JlcS0+ZXhlY2xpc3RfbGluayk7Ci0JCQkJbGlzdF9hZGRfdGFpbCgmaGVh ZF9yZXEtPmV4ZWNsaXN0X2xpbmssCi0JCQkJCSZyaW5nLT5leGVjbGlzdF9yZXRpcmVkX3JlcV9s aXN0KTsKLQkJCQlyZXR1cm4gdHJ1ZTsKLQkJCX0KLQkJfQotCX0KKwkJLyogVGhlIGhhcmR3YXJl IGhhcyBjb21wbGV0ZWQgdGhlIHJlcXVlc3Qgb24gdGhpcyBwb3J0LCBpdAorCQkgKiB3aWxsIHN3 aXRjaCB0byB0aGUgbmV4dC4KKwkJICovCisJCWVuZ2luZS0+ZXhlY2xpc3RfcG9ydFswXSA9IGVu Z2luZS0+ZXhlY2xpc3RfcG9ydFsxXTsKKwkJZW5naW5lLT5leGVjbGlzdF9wb3J0WzFdID0gTlVM TDsKKwl9IHdoaWxlICgxKTsKIAotCXJldHVybiBmYWxzZTsKKwlpZiAoZW5naW5lLT5leGVjbGlz dF9jb250ZXh0X2Rlc2NyaXB0b3IgJiBHRU44X0NUWF9GT1JDRV9SRVNUT1JFKQorCQlyZXR1cm4g ZW5naW5lLT5leGVjbGlzdF9wb3J0WzBdID09IE5VTEw7CisJZWxzZQorCQlyZXR1cm4gZW5naW5l LT5leGVjbGlzdF9wb3J0WzFdID09IE5VTEw7CiB9CiAKIHN0YXRpYyB2b2lkIHNldF9ydHByaW9y aXR5KHZvaWQpCkBAIC01MDQsMjMgKzQwNCwyOSBAQCBzdGF0aWMgaW50IGludGVsX2V4ZWNsaXN0 c19zdWJtaXQodm9pZCAqYXJnKQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSBh cmc7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmluZy0+aTkxNTsKKwlj b25zdCBpOTE1X3JlZ190IHB0cnMgPSBSSU5HX0NPTlRFWFRfU1RBVFVTX1BUUihyaW5nKTsKIAog CXNldF9ydHByaW9yaXR5KCk7CiAKKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldChkZXZfcHJp diwgRk9SQ0VXQUtFX0FMTCk7CiAJZG8gewotCQl1MzIgc3RhdHVzOwotCQl1MzIgc3RhdHVzX2lk OwotCQl1MzIgc3VibWl0X2NvbnRleHRzOwogCQl1OCBoZWFkLCB0YWlsOworCQl1MzIgc2Vxbm87 CiAKIAkJc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19JTlRFUlJVUFRJQkxFKTsKLQkJaGVhZCA9IHJp bmctPm5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVyOwotCQl0YWlsID0gSTkxNV9SRUFEKFJJTkdf Q09OVEVYVF9TVEFUVVNfUFRSKHJpbmcpKSAmIEdFTjhfQ1NCX1BUUl9NQVNLOworCQloZWFkID0g dGFpbCA9IDA7CisJCWlmIChSRUFEX09OQ0UocmluZy0+ZXhlY2xpc3RfcG9ydFswXSkpIHsKKwkJ CXUzMiB4ID0gSTkxNV9SRUFEX0ZXKHB0cnMpOworCQkJaGVhZCA9IHggPj4gODsKKwkJCXRhaWwg PSB4OworCQl9CiAJCWlmIChoZWFkID09IHRhaWwpIHsKKwkJCWludGVsX3VuY29yZV9mb3JjZXdh a2VfcHV0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKIAkJCWlmIChrdGhyZWFkX3Nob3VsZF9z dG9wKCkpCiAJCQkJcmV0dXJuIDA7CiAKIAkJCXNjaGVkdWxlKCk7CisJCQlpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7CiAJCQljb250aW51ZTsKIAkJ fQogCQlfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVOTklORyk7CkBAIC01MjgsODYgKzQzNCw0 NiBAQCBzdGF0aWMgaW50IGludGVsX2V4ZWNsaXN0c19zdWJtaXQodm9pZCAqYXJnKQogCQlpZiAo aGVhZCA+IHRhaWwpCiAJCQl0YWlsICs9IEdFTjhfQ1NCX0VOVFJJRVM7CiAKLQkJc3RhdHVzID0g MDsKLQkJc3VibWl0X2NvbnRleHRzID0gMDsKLQotCQlzcGluX2xvY2soJnJpbmctPmV4ZWNsaXN0 X2xvY2spOwotCisJCXNlcW5vID0gMDsKIAkJd2hpbGUgKGhlYWQrKyA8IHRhaWwpIHsKLQkJCXN0 YXR1cyA9IEk5MTVfUkVBRChSSU5HX0NPTlRFWFRfU1RBVFVTX0JVRl9MTyhyaW5nLCBoZWFkICUg R0VOOF9DU0JfRU5UUklFUykpOwotCQkJc3RhdHVzX2lkID0gSTkxNV9SRUFEKFJJTkdfQ09OVEVY VF9TVEFUVVNfQlVGX0hJKHJpbmcsIGhlYWQgJSBHRU44X0NTQl9FTlRSSUVTKSk7Ci0KLQkJCWlm IChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfSURMRV9BQ1RJVkUpCi0JCQkJY29udGludWU7Ci0K LQkJCWlmIChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfUFJFRU1QVEVEKSB7Ci0JCQkJaWYgKHN0 YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19MSVRFX1JFU1RPUkUpIHsKLQkJCQkJaWYgKGV4ZWNsaXN0 c19jaGVja19yZW1vdmVfcmVxdWVzdChyaW5nLCBzdGF0dXNfaWQpKQotCQkJCQkJV0FSTigxLCAi TGl0ZSBSZXN0b3JlZCByZXF1ZXN0IHJlbW92ZWQgZnJvbSBxdWV1ZVxuIik7Ci0JCQkJfSBlbHNl Ci0JCQkJCVdBUk4oMSwgIlByZWVtcHRpb24gd2l0aG91dCBMaXRlIFJlc3RvcmVcbiIpOwotCQkJ fQotCi0JCQlpZiAoKHN0YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19BQ1RJVkVfSURMRSkgfHwKLQkJ CSAgICAoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0VMRU1FTlRfU1dJVENIKSkgewotCQkJCWlm IChleGVjbGlzdHNfY2hlY2tfcmVtb3ZlX3JlcXVlc3QocmluZywgc3RhdHVzX2lkKSkKLQkJCQkJ c3VibWl0X2NvbnRleHRzKys7CisJCQl1MzIgc3RhdHVzID0gSTkxNV9SRUFEX0ZXKFJJTkdfQ09O VEVYVF9TVEFUVVNfQlVGX0xPKHJpbmcsCisJCQkJCQkJCQkgICAgIGhlYWQgJSBHRU44X0NTQl9F TlRSSUVTKSk7CisJCQlpZiAodW5saWtlbHkoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX1BSRUVN UFRFRCAmJiAwKSkgeworCQkJCURSTV9FUlJPUigiUHJlLWVtcHRlZCByZXF1ZXN0ICV4ICVzIExp dGUgUmVzdG9yZVxuIiwKKwkJCQkJICBJOTE1X1JFQURfRlcoUklOR19DT05URVhUX1NUQVRVU19C VUZfSEkocmluZywgaGVhZCAlIEdFTjhfQ1NCX0VOVFJJRVMpKSwKKwkJCQkJICBzdGF0dXMgJiBH RU44X0NUWF9TVEFUVVNfTElURV9SRVNUT1JFID8gIndpdGgiIDogIndpdGhvdXQiKTsKIAkJCX0K KwkJCWlmIChzdGF0dXMgJiAoR0VOOF9DVFhfU1RBVFVTX0FDVElWRV9JRExFIHwKKwkJCQkgICAg ICBHRU44X0NUWF9TVEFUVVNfRUxFTUVOVF9TV0lUQ0gpKQorCQkJCXNlcW5vID0gSTkxNV9SRUFE X0ZXKFJJTkdfQ09OVEVYVF9TVEFUVVNfQlVGX0hJKHJpbmcsCisJCQkJCQkJCQkJaGVhZCAlIEdF TjhfQ1NCX0VOVFJJRVMpKTsKIAkJfQogCi0JCWlmIChkaXNhYmxlX2xpdGVfcmVzdG9yZV93YShy aW5nKSkgewotCQkJLyogUHJldmVudCBhIGN0eCB0byBwcmVlbXB0IGl0c2VsZiAqLwotCQkJaWYg KChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfQUNUSVZFX0lETEUpICYmCi0JCQkJCShzdWJtaXRf Y29udGV4dHMgIT0gMCkpCisJCUk5MTVfV1JJVEVfRlcocHRycywKKwkJCSAgICAgIF9NQVNLRURf RklFTEQoR0VOOF9DU0JfUFRSX01BU0s8PDgsCisJCQkJCSAgICAodGFpbCAlIEdFTjhfQ1NCX0VO VFJJRVMpIDw8IDgpKTsKKworCQlpZiAoc2Vxbm8pIHsKKwkJCXNwaW5fbG9jaygmcmluZy0+ZXhl Y2xpc3RfbG9jayk7CisJCQlpZiAoZXhlY2xpc3RzX2NvbXBsZXRlX3JlcXVlc3RzKHJpbmcsIHNl cW5vKSkKIAkJCQlleGVjbGlzdHNfY29udGV4dF91bnF1ZXVlKHJpbmcpOwotCQl9IGVsc2UgaWYg KHN1Ym1pdF9jb250ZXh0cyAhPSAwKSB7Ci0JCQlleGVjbGlzdHNfY29udGV4dF91bnF1ZXVlKHJp bmcpOworCQkJc3Bpbl91bmxvY2soJnJpbmctPmV4ZWNsaXN0X2xvY2spOwogCQl9Ci0KLQkJc3Bp bl91bmxvY2soJnJpbmctPmV4ZWNsaXN0X2xvY2spOwotCi0JCVdBUk4oc3VibWl0X2NvbnRleHRz ID4gMiwgIk1vcmUgdGhhbiB0d28gY29udGV4dCBjb21wbGV0ZSBldmVudHM/XG4iKTsKLQkJcmlu Zy0+bmV4dF9jb250ZXh0X3N0YXR1c19idWZmZXIgPSB0YWlsICUgR0VOOF9DU0JfRU5UUklFUzsK LQkJSTkxNV9XUklURShSSU5HX0NPTlRFWFRfU1RBVFVTX1BUUihyaW5nKSwKLQkJCSAgIF9NQVNL RURfRklFTEQoR0VOOF9DU0JfUFRSX01BU0sgPDwgOCwKLQkJCQkJIHJpbmctPm5leHRfY29udGV4 dF9zdGF0dXNfYnVmZmVyPDw4KSk7CiAJfSB3aGlsZSAoMSk7CiB9CiAKIHN0YXRpYyBpbnQgZXhl Y2xpc3RzX2NvbnRleHRfcXVldWUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0 KQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcXVlc3QtPmVuZ2luZTsK LQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKmN1cnNvcjsKLQlpbnQgbnVtX2VsZW1lbnRz ID0gMDsKIAogCWk5MTVfZ2VtX3JlcXVlc3RfZ2V0KHJlcXVlc3QpOwogCiAJc3Bpbl9sb2NrKCZl bmdpbmUtPmV4ZWNsaXN0X2xvY2spOwotCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShjdXJzb3IsICZl bmdpbmUtPmV4ZWNsaXN0X3F1ZXVlLCBleGVjbGlzdF9saW5rKQotCQlpZiAoKytudW1fZWxlbWVu dHMgPiAyKQotCQkJYnJlYWs7Ci0KLQlpZiAobnVtX2VsZW1lbnRzID4gMikgewotCQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnRhaWxfcmVxOwotCi0JCXRhaWxfcmVxID0gbGlzdF9sYXN0 X2VudHJ5KCZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlLAotCQkJCQkgICBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QsCi0JCQkJCSAgIGV4ZWNsaXN0X2xpbmspOwotCi0JCWlmIChyZXF1ZXN0LT5j dHggPT0gdGFpbF9yZXEtPmN0eCkgewotCQkJV0FSTih0YWlsX3JlcS0+ZWxzcF9zdWJtaXR0ZWQg IT0gMCwKLQkJCQkiTW9yZSB0aGFuIDIgYWxyZWFkeS1zdWJtaXR0ZWQgcmVxcyBxdWV1ZWRcbiIp OwotCQkJbGlzdF9kZWwoJnRhaWxfcmVxLT5leGVjbGlzdF9saW5rKTsKLQkJCWxpc3RfYWRkX3Rh aWwoJnRhaWxfcmVxLT5leGVjbGlzdF9saW5rLAotCQkJCSZlbmdpbmUtPmV4ZWNsaXN0X3JldGly ZWRfcmVxX2xpc3QpOwotCQl9Ci0JfQotCiAJbGlzdF9hZGRfdGFpbCgmcmVxdWVzdC0+ZXhlY2xp c3RfbGluaywgJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUpOwotCWlmIChudW1fZWxlbWVudHMgPT0g MCkKLQkJZXhlY2xpc3RzX2NvbnRleHRfdW5xdWV1ZShlbmdpbmUpOwotCisJaWYgKGVuZ2luZS0+ ZXhlY2xpc3RfcG9ydFswXSA9PSBOVUxMKSB7CisJCWVuZ2luZS0+ZXhlY2xpc3RfcG9ydFswXSA9 IHJlcXVlc3Q7CisJCWV4ZWNsaXN0c19zdWJtaXRfcGFpcihlbmdpbmUpOworCX0KIAlzcGluX3Vu bG9jaygmZW5naW5lLT5leGVjbGlzdF9sb2NrKTsKIAogCXJldHVybiAwOwpAQCAtNjQxLDU2ICs1 MDcsMzIgQEAgaW50IGludGVsX2xvZ2ljYWxfcmluZ19hbGxvY19yZXF1ZXN0X2V4dHJhcyhzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QKIAlyZXR1cm4gMDsKIH0KIAotLyoKLSAq IGludGVsX2xvZ2ljYWxfcmluZ19hZHZhbmNlX2FuZF9zdWJtaXQoKSAtIGFkdmFuY2UgdGhlIHRh aWwgYW5kIHN1Ym1pdCB0aGUgd29ya2xvYWQKLSAqIEByZXF1ZXN0OiBSZXF1ZXN0IHRvIGFkdmFu Y2UgdGhlIGxvZ2ljYWwgcmluZ2J1ZmZlciBvZi4KLSAqCi0gKiBUaGUgdGFpbCBpcyB1cGRhdGVk IGluIG91ciBsb2dpY2FsIHJpbmdidWZmZXIgc3RydWN0LCBub3QgaW4gdGhlIGFjdHVhbCBjb250 ZXh0LiBXaGF0Ci0gKiByZWFsbHkgaGFwcGVucyBkdXJpbmcgc3VibWlzc2lvbiBpcyB0aGF0IHRo ZSBjb250ZXh0IGFuZCBjdXJyZW50IHRhaWwgd2lsbCBiZSBwbGFjZWQKLSAqIG9uIGEgcXVldWUg d2FpdGluZyBmb3IgdGhlIEVMU1AgdG8gYmUgcmVhZHkgdG8gYWNjZXB0IGEgbmV3IGNvbnRleHQg c3VibWlzc2lvbi4gQXQgdGhhdAotICogcG9pbnQsIHRoZSB0YWlsICppbnNpZGUqIHRoZSBjb250 ZXh0IGlzIHVwZGF0ZWQgYW5kIHRoZSBFTFNQIHdyaXR0ZW4gdG8uCi0gKi8KLXN0YXRpYyB2b2lk Ci1pbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5jZV9hbmRfc3VibWl0KHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxdWVzdCkKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSByZXF1ZXN0LT5pOTE1OwotCi0JaW50ZWxfcmluZ19hZHZhbmNlKHJlcXVlc3QtPnJpbmcp OwotCXJlcXVlc3QtPnRhaWwgPSByZXF1ZXN0LT5yaW5nLT50YWlsOwotCi0JaWYgKGRldl9wcml2 LT5ndWMuZXhlY2J1Zl9jbGllbnQpCi0JCWk5MTVfZ3VjX3N1Ym1pdChkZXZfcHJpdi0+Z3VjLmV4 ZWNidWZfY2xpZW50LCByZXF1ZXN0KTsKLQllbHNlCi0JCWV4ZWNsaXN0c19jb250ZXh0X3F1ZXVl KHJlcXVlc3QpOwotfQotCiBib29sIGludGVsX2V4ZWNsaXN0c19yZXRpcmVfcmVxdWVzdHMoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwgKnRtcDsKLQlzdHJ1Y3QgbGlzdF9oZWFkIHJldGlyZWRfbGlzdDsKKwlzdHJ1Y3Qg bGlzdF9oZWFkIGxpc3Q7CiAKLQlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJnJpbmctPmRldi0+ c3RydWN0X211dGV4KSk7Ci0JaWYgKGxpc3RfZW1wdHkoJnJpbmctPmV4ZWNsaXN0X3JldGlyZWRf cmVxX2xpc3QpKQorCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJpbmctPmRldi0+c3RydWN0X211dGV4 KTsKKwlpZiAobGlzdF9lbXB0eSgmcmluZy0+ZXhlY2xpc3RfY29tcGxldGVkKSkKIAkJZ290byBv dXQ7CiAKLQlJTklUX0xJU1RfSEVBRCgmcmV0aXJlZF9saXN0KTsKIAlzcGluX2xvY2soJnJpbmct PmV4ZWNsaXN0X2xvY2spOwotCWxpc3RfcmVwbGFjZV9pbml0KCZyaW5nLT5leGVjbGlzdF9yZXRp cmVkX3JlcV9saXN0LCAmcmV0aXJlZF9saXN0KTsKKwlsaXN0X3JlcGxhY2VfaW5pdCgmcmluZy0+ ZXhlY2xpc3RfY29tcGxldGVkLCAmbGlzdCk7CiAJc3Bpbl91bmxvY2soJnJpbmctPmV4ZWNsaXN0 X2xvY2spOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJlcSwgdG1wLCAmcmV0aXJlZF9s aXN0LCBleGVjbGlzdF9saW5rKSB7CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJlcSwgdG1w LCAmbGlzdCwgZXhlY2xpc3RfbGluaykgewogCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4ID0g cmVxLT5jdHg7CiAJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfb2JqID0KIAkJCQlj dHgtPmVuZ2luZVtyaW5nLT5pZF0uc3RhdGU7CiAKIAkJaWYgKGN0eF9vYmogJiYgKGN0eCAhPSBy aW5nLT5kZWZhdWx0X2NvbnRleHQpKQogCQkJaW50ZWxfbHJfY29udGV4dF91bnBpbihyZXEpOwot CQlsaXN0X2RlbCgmcmVxLT5leGVjbGlzdF9saW5rKTsKKwogCQlpOTE1X2dlbV9yZXF1ZXN0X3B1 dChyZXEpOwogCX0KIAogb3V0OgotCXJldHVybiBsaXN0X2VtcHR5KCZyaW5nLT5leGVjbGlzdF9x dWV1ZSk7CisJcmV0dXJuIFJFQURfT05DRShyaW5nLT5leGVjbGlzdF9wb3J0WzBdKSA9PSBOVUxM OwogfQogCiB2b2lkIGludGVsX2xvZ2ljYWxfcmluZ19zdG9wKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnJpbmcpCkBAIC03MjAsNiArNTYyLDcgQEAgc3RhdGljIGludCBpbnRlbF9scl9jb250ZXh0 X2RvX3BpbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogCQlzdHJ1Y3QgaW50ZWxfcmlu ZyAqcmluZ2J1ZikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByaW5n LT5pOTE1OworCXUzMiBnZ3R0X29mZnNldDsKIAlpbnQgcmV0ID0gMDsKIAogCVdBUk5fT04oIW11 dGV4X2lzX2xvY2tlZCgmcmluZy0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpKTsKQEAgLTczNCw2ICs1Nzcs MTYgQEAgc3RhdGljIGludCBpbnRlbF9scl9jb250ZXh0X2RvX3BpbihzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nLAogCiAJY3R4X29iai0+ZGlydHkgPSB0cnVlOwogCisJZ2d0dF9vZmZzZXQg PQorCQlpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoY3R4X29iaikgKyBMUkNfUFBIV1NQX1BOICog UEFHRV9TSVpFOworCXJpbmdidWYtPmNvbnRleHRfZGVzY3JpcHRvciA9CisJCWdndHRfb2Zmc2V0 IHwgcmluZy0+ZXhlY2xpc3RfY29udGV4dF9kZXNjcmlwdG9yOworCisJcmluZ2J1Zi0+cmVnaXN0 ZXJzID0KKwkJa21hcChpOTE1X2dlbV9vYmplY3RfZ2V0X2RpcnR5X3BhZ2UoY3R4X29iaiwgTFJD X1NUQVRFX1BOKSk7CisJcmluZ2J1Zi0+cmVnaXN0ZXJzW0NUWF9SSU5HX0JVRkZFUl9TVEFSVCsx XSA9CisJCWk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChyaW5nYnVmLT5vYmopOworCiAJLyogSW52 YWxpZGF0ZSBHdUMgVExCLiAqLwogCWlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikKIAkJ STkxNV9XUklURShHRU44X0dUQ1IsIEdFTjhfR1RDUl9JTlZBTElEQVRFKTsKQEAgLTc2OCw2ICs2 MjEsNyBAQCBzdGF0aWMgaW50IGludGVsX2xyX2NvbnRleHRfcGluKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcnEpCiAKIHZvaWQgaW50ZWxfbHJfY29udGV4dF91bnBpbihzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJxKQogeworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpj dHhfb2JqOwogCWludCBlbmdpbmUgPSBycS0+ZW5naW5lLT5pZDsKIAogCVdBUk5fT04oIW11dGV4 X2lzX2xvY2tlZCgmcnEtPmk5MTUtPmRldi0+c3RydWN0X211dGV4KSk7CkBAIC03NzUsNyArNjI5 LDEwIEBAIHZvaWQgaW50ZWxfbHJfY29udGV4dF91bnBpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJxKQogCQlyZXR1cm47CiAKIAlpbnRlbF9yaW5nX3VubWFwKHJxLT5yaW5nKTsKLQlp OTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihycS0+Y3R4LT5lbmdpbmVbZW5naW5lXS5zdGF0ZSk7 CisKKwljdHhfb2JqID0gcnEtPmN0eC0+ZW5naW5lW2VuZ2luZV0uc3RhdGU7CisJa3VubWFwKGk5 MTVfZ2VtX29iamVjdF9nZXRfcGFnZShjdHhfb2JqLCBMUkNfU1RBVEVfUE4pKTsKKwlpOTE1X2dl bV9vYmplY3RfZ2d0dF91bnBpbihjdHhfb2JqKTsKIAlpOTE1X2dlbV9jb250ZXh0X3VucmVmZXJl bmNlKHJxLT5jdHgpOwogfQogCkBAIC0xMTY4LDEyICsxMDI1LDM5IEBAIG91dDoKIAlyZXR1cm4g cmV0OwogfQogCitzdGF0aWMgYm9vbCBkaXNhYmxlX2xpdGVfcmVzdG9yZV93YShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nKQoreworCXJldHVybiAoSVNfU0tMX1JFVklEKHJpbmctPmk5MTUs IDAsIFNLTF9SRVZJRF9CMCkgfHwKKwkJSVNfQlhUX1JFVklEKHJpbmctPmk5MTUsIDAsIEJYVF9S RVZJRF9BMSkpICYmCisJCShyaW5nLT5pZCA9PSBWQ1MgfHwgcmluZy0+aWQgPT0gVkNTMik7Cit9 CisKK3N0YXRpYyB1aW50NjRfdCBscl9jb250ZXh0X2Rlc2NyaXB0b3Ioc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZykKK3sKKwl1aW50NjRfdCBkZXNjOworCisJZGVzYyA9IEdFTjhfQ1RYX1ZB TElEOworCWRlc2MgfD0gR0VOOF9DVFhfQUREUkVTU0lOR19NT0RFKHJpbmctPmk5MTUpIDw8IEdF TjhfQ1RYX0FERFJFU1NJTkdfTU9ERV9TSElGVDsKKwlpZiAoSVNfR0VOOChyaW5nLT5pOTE1KSkK KwkJZGVzYyB8PSBHRU44X0NUWF9MM0xMQ19DT0hFUkVOVDsKKwlkZXNjIHw9IEdFTjhfQ1RYX1BS SVZJTEVHRTsKKworCS8qIFRPRE86IFdhRGlzYWJsZUxpdGVSZXN0b3JlIHdoZW4gd2Ugc3RhcnQg dXNpbmcgc2VtYXBob3JlCisJICogc2lnbmFsbGluZyBiZXR3ZWVuIENvbW1hbmQgU3RyZWFtZXJz ICovCisJLyogZGVzYyB8PSBHRU44X0NUWF9GT1JDRV9SRVNUT1JFOyAqLworCisJLyogV2FFbmFi bGVGb3JjZVJlc3RvcmVJbkN0eHREZXNjRm9yVkNTOnNrbCAqLworCS8qIFdhRW5hYmxlRm9yY2VS ZXN0b3JlSW5DdHh0RGVzY0ZvclZDUzpieHQgKi8KKwlpZiAoZGlzYWJsZV9saXRlX3Jlc3RvcmVf d2EocmluZykpCisJCWRlc2MgfD0gR0VOOF9DVFhfRk9SQ0VfUkVTVE9SRTsKKworCXJldHVybiBk ZXNjOworfQorCiBzdGF0aWMgaW50IGdlbjhfaW5pdF9jb21tb25fcmluZyhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK LQl1OCBuZXh0X2NvbnRleHRfc3RhdHVzX2J1ZmZlcl9odzsKLQogCWxyY19zZXR1cF9oYXJkd2Fy ZV9zdGF0dXNfcGFnZShyaW5nLAogCQkJCXJpbmctPmRlZmF1bHRfY29udGV4dC0+ZW5naW5lW3Jp bmctPmlkXS5zdGF0ZSk7CiAKQEAgLTExOTcsMTggKzEwODEsNiBAQCBzdGF0aWMgaW50IGdlbjhf aW5pdF9jb21tb25fcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCSAqIFNLTCAg fCAgICAgICAgID8gICAgICAgICAgICAgICAgfCAgICAgICAgID8gICAgICAgICAgICB8CiAJICog QlhUICB8ICAgICAgICAgPyAgICAgICAgICAgICAgICB8ICAgICAgICAgPyAgICAgICAgICAgIHwK IAkgKi8KLQluZXh0X2NvbnRleHRfc3RhdHVzX2J1ZmZlcl9odyA9Ci0JCUdFTjhfQ1NCX1dSSVRF X1BUUihJOTE1X1JFQUQoUklOR19DT05URVhUX1NUQVRVU19QVFIocmluZykpKTsKLQotCS8qCi0J ICogV2hlbiB0aGUgQ1NCIHJlZ2lzdGVycyBhcmUgcmVzZXQgKGFsc28gYWZ0ZXIgcG93ZXItdXAg LyBncHUgcmVzZXQpLAotCSAqIENTQiB3cml0ZSBwb2ludGVyIGlzIHNldCB0byBhbGwgMSdzLCB3 aGljaCBpcyBub3QgdmFsaWQsIHVzZSAnNScgaW4KLQkgKiB0aGlzIHNwZWNpYWwgY2FzZSwgc28g dGhlIGZpcnN0IGVsZW1lbnQgcmVhZCBpcyBDU0JbMF0uCi0JICovCi0JaWYgKG5leHRfY29udGV4 dF9zdGF0dXNfYnVmZmVyX2h3ID09IEdFTjhfQ1NCX1BUUl9NQVNLKQotCQluZXh0X2NvbnRleHRf c3RhdHVzX2J1ZmZlcl9odyA9IChHRU44X0NTQl9FTlRSSUVTIC0gMSk7Ci0KLQlyaW5nLT5uZXh0 X2NvbnRleHRfc3RhdHVzX2J1ZmZlciA9IG5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVyX2h3Owog CURSTV9ERUJVR19EUklWRVIoIkV4ZWNsaXN0cyBlbmFibGVkIGZvciAlc1xuIiwgcmluZy0+bmFt ZSk7CiAKIAltZW1zZXQoJnJpbmctPmhhbmdjaGVjaywgMCwgc2l6ZW9mKHJpbmctPmhhbmdjaGVj aykpOwpAQCAtMTQ4Miw3ICsxMzU0LDggQEAgc3RhdGljIGludCBnZW44X2FkZF9yZXF1ZXN0KHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAlpbnRlbF9yaW5nX2VtaXQocmlu ZywgcmVxdWVzdC0+ZmVuY2Uuc2Vxbm8pOwogCWludGVsX3JpbmdfZW1pdChyaW5nLCBNSV9VU0VS X0lOVEVSUlVQVCk7CiAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwotCWludGVsX2xv Z2ljYWxfcmluZ19hZHZhbmNlX2FuZF9zdWJtaXQocmVxdWVzdCk7CisJaW50ZWxfcmluZ19hZHZh bmNlKHJpbmcpOworCXJlcXVlc3QtPnRhaWwgPSByaW5nLT50YWlsOwogCiAJLyoKIAkgKiBIZXJl IHdlIGFkZCB0d28gZXh0cmEgTk9PUHMgYXMgcGFkZGluZyB0byBhdm9pZApAQCAtMTQ5MSw2ICsx MzY0LDEyIEBAIHN0YXRpYyBpbnQgZ2VuOF9hZGRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcXVlc3QpCiAJaW50ZWxfcmluZ19lbWl0KHJpbmcsIE1JX05PT1ApOwogCWlu dGVsX3JpbmdfZW1pdChyaW5nLCBNSV9OT09QKTsKIAlpbnRlbF9yaW5nX2FkdmFuY2UocmluZyk7 CisJcmVxdWVzdC0+d2FfdGFpbCA9IHJpbmctPnRhaWw7CisKKwlpZiAocmVxdWVzdC0+aTkxNS0+ Z3VjLmV4ZWNidWZfY2xpZW50KQorCQlpOTE1X2d1Y19zdWJtaXQocmVxdWVzdC0+aTkxNS0+Z3Vj LmV4ZWNidWZfY2xpZW50LCByZXF1ZXN0KTsKKwllbHNlCisJCWV4ZWNsaXN0c19jb250ZXh0X3F1 ZXVlKHJlcXVlc3QpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xNTY5LDkgKzE0NDgsMTEgQEAgc3Rh dGljIGludCBsb2dpY2FsX3JpbmdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW4KIAogCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5idWZmZXJzKTsK IAlJTklUX0xJU1RfSEVBRCgmcmluZy0+ZXhlY2xpc3RfcXVldWUpOwotCUlOSVRfTElTVF9IRUFE KCZyaW5nLT5leGVjbGlzdF9yZXRpcmVkX3JlcV9saXN0KTsKKwlJTklUX0xJU1RfSEVBRCgmcmlu Zy0+ZXhlY2xpc3RfY29tcGxldGVkKTsKIAlzcGluX2xvY2tfaW5pdCgmcmluZy0+ZXhlY2xpc3Rf bG9jayk7CiAKKwlyaW5nLT5leGVjbGlzdF9jb250ZXh0X2Rlc2NyaXB0b3IgPSBscl9jb250ZXh0 X2Rlc2NyaXB0b3IocmluZyk7CisKIAlyZXQgPSBpOTE1X2NtZF9wYXJzZXJfaW5pdF9yaW5nKHJp bmcpOwogCWlmIChyZXQpCiAJCWdvdG8gZXJyb3I7CkBAIC0xNTkyLDggKzE0NzMsNiBAQCBzdGF0 aWMgaW50IGxvZ2ljYWxfcmluZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbgogCQlnb3RvIGVycm9yOwogCX0KIAotCXJpbmctPm5leHRfY29u dGV4dF9zdGF0dXNfYnVmZmVyID0KLQkJCUk5MTVfUkVBRChSSU5HX0NPTlRFWFRfU1RBVFVTX1BU UihyaW5nKSkgJiBHRU44X0NTQl9QVFJfTUFTSzsKIAl0YXNrID0ga3RocmVhZF9ydW4oaW50ZWxf ZXhlY2xpc3RzX3N1Ym1pdCwgcmluZywKIAkJCSAgICJpcnEvaTkxNTolZGUiLCByaW5nLT5pZCk7 CiAJaWYgKElTX0VSUih0YXNrKSkKQEAgLTE5MDQsOSArMTc4Myw3IEBAIHBvcHVsYXRlX2xyX2Nv bnRleHQoc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKmN0eF9vCiAJCQkJCSAgQ1RYX0NUUkxfUlNfQ1RYX0VOQUJMRSkpOwogCUFTU0lHTl9DVFhf UkVHKHJlZ19zdGF0ZSwgQ1RYX1JJTkdfSEVBRCwgUklOR19IRUFEKHJpbmctPm1taW9fYmFzZSks IDApOwogCUFTU0lHTl9DVFhfUkVHKHJlZ19zdGF0ZSwgQ1RYX1JJTkdfVEFJTCwgUklOR19UQUlM KHJpbmctPm1taW9fYmFzZSksIDApOwotCS8qIFJpbmcgYnVmZmVyIHN0YXJ0IGFkZHJlc3MgaXMg bm90IGtub3duIHVudGlsIHRoZSBidWZmZXIgaXMgcGlubmVkLgotCSAqIEl0IGlzIHdyaXR0ZW4g dG8gdGhlIGNvbnRleHQgaW1hZ2UgaW4gZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0KCkKLQkgKi8K KwkvKiBSaW5nIGJ1ZmZlciBzdGFydCBhZGRyZXNzIGlzIG5vdCBrbm93biB1bnRpbCB0aGUgYnVm ZmVyIGlzIHBpbm5lZC4gKi8KIAlBU1NJR05fQ1RYX1JFRyhyZWdfc3RhdGUsIENUWF9SSU5HX0JV RkZFUl9TVEFSVCwgUklOR19TVEFSVChyaW5nLT5tbWlvX2Jhc2UpLCAwKTsKIAlBU1NJR05fQ1RY X1JFRyhyZWdfc3RhdGUsIENUWF9SSU5HX0JVRkZFUl9DT05UUk9MLCBSSU5HX0NUTChyaW5nLT5t bWlvX2Jhc2UpLAogCQkgICAgICAgKChyaW5nYnVmLT5zaXplIC0gUEFHRV9TSVpFKSAmIFJJTkdf TlJfUEFHRVMpIHwgUklOR19WQUxJRCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCmluZGV4IDMz ZjgyYTg0MDY1YS4uMzc2MDFhMzVkNWZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaApAQCAt NzQsMTIgKzc0LDkgQEAgaW50IGludGVsX2xyX2NvbnRleHRfZGVmZXJyZWRfYWxsb2Moc3RydWN0 IGludGVsX2NvbnRleHQgKmN0eCwKIHZvaWQgaW50ZWxfbHJfY29udGV4dF91bnBpbihzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7CiB2b2lkIGludGVsX2xyX2NvbnRleHRfcmVzZXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpOwot dWludDY0X3QgaW50ZWxfbHJfY29udGV4dF9kZXNjcmlwdG9yKHN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjdHgsCi0JCQkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKIAogLyogRXhl Y2xpc3RzICovCiBpbnQgaW50ZWxfc2FuaXRpemVfZW5hYmxlX2V4ZWNsaXN0cyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBpbnQgZW5hYmxlX2V4ZWNsaXN0cyk7Ci11MzIgaW50ZWxfZXhlY2xpc3Rz X2N0eF9pZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaik7CiAKIGJvb2wgaW50 ZWxfZXhlY2xpc3RzX3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCmluZGV4IGVkYWYwN2Iy MjkyZS4uM2Q0ZDU3MTFhZWE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5oCkBAIC0xMjIsNiArMTIyLDkgQEAgc3RydWN0IGludGVsX3JpbmcgewogCSAqIHdlIGNhbiBk ZXRlY3QgbmV3IHJldGlyZW1lbnRzLgogCSAqLwogCXUzMiBsYXN0X3JldGlyZWRfaGVhZDsKKwor CXUzMiBjb250ZXh0X2Rlc2NyaXB0b3I7CisJdTMyICpyZWdpc3RlcnM7CiB9OwogCiBzdHJ1Y3QJ aW50ZWxfY29udGV4dDsKQEAgLTI5Myw5ICsyOTYsMTAgQEAgc3RydWN0IGludGVsX2VuZ2luZV9j cyB7CiAJLyogRXhlY2xpc3RzICovCiAJc3RydWN0IHRhc2tfc3RydWN0ICpleGVjbGlzdHNfc3Vi bWl0OwogCXNwaW5sb2NrX3QgZXhlY2xpc3RfbG9jazsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKmV4ZWNsaXN0X3BvcnRbMl07CiAJc3RydWN0IGxpc3RfaGVhZCBleGVjbGlzdF9xdWV1 ZTsKLQlzdHJ1Y3QgbGlzdF9oZWFkIGV4ZWNsaXN0X3JldGlyZWRfcmVxX2xpc3Q7Ci0JdTggbmV4 dF9jb250ZXh0X3N0YXR1c19idWZmZXI7CisJc3RydWN0IGxpc3RfaGVhZCBleGVjbGlzdF9jb21w bGV0ZWQ7CisJdTMyIGV4ZWNsaXN0X2NvbnRleHRfZGVzY3JpcHRvcjsKIAl1MzIgICAgICAgICAg ICAgaXJxX2tlZXBfbWFzazsgLyogYml0bWFzayBmb3IgaW50ZXJydXB0cyB0aGF0IHNob3VsZCBu b3QgYmUgbWFza2VkICovCiAKIAkvKioKLS0gCjIuNy4wLnJjMwoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK