From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH v3 07/14] drm/i915: Start moving the cdclk stuff into a distinct state structure Date: Fri, 20 Jan 2017 20:21:58 +0200 Message-ID: <20170120182205.8141-8-ville.syrjala@linux.intel.com> References: <20170120182205.8141-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 24B806EC5F for ; Fri, 20 Jan 2017 18:22:31 +0000 (UTC) In-Reply-To: <20170120182205.8141-1-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCklu dHJvZHVjZSBpbnRlbF9jZGNsayBzdGF0ZSB3aGljaCBmb3Igbm93IHdpbGwgdHJhY2sgdGhlIGNk Y2xrCmZyZXF1ZW5jeSwgdGhlIHZjbyBmcmVxdWVuY3kgYW5kIHRoZSByZWZlcmVuY2UgZnJlcXVl bmN5IChub3Qgc3VyZSB3ZQp3YW50IHRoZSBsYXN0IG9uZSwgYnV0IEkgcHV0IGl0IHRoZXJlIGFu eXdheSkuIFdlJ2xsIGFsc28gbWFrZSB0aGUKLmdldF9jZGNsaygpIGZ1bmN0aW9uIGZpbGwgb3V0 IHRoaXMgc3RhdGUgc3RydWN0dXJlIHJhdGhlciB0aGFuCmp1c3QgcmV0dXJuaW5nIHRoZSBjdXJy ZW50IGNkY2xrIGZyZXF1ZW5jeS4KCk9uZSBpbW1lZGlhdGUgYmVuZWZpdCBpcyB0aGF0IGNhbGxp bmcgLmdldF9jZGNsaygpIHdpbGwgbm8gbG9uZ2VyCmNsb2JiZXIgc3RhdGUgc3RvcmVkIHVuZGVy IGRldl9wcml2IHVubGVzcyBleFtwbGljaXRseSB0b2xkIHRvIGRvCnNvLiBQcmV2aW91c2x5IGl0 IGNsb2JiZXJlZCB0aGUgdmNvIGFuZCByZWZlcmVuY2UgY2xvY2tzIHN0b3JlZAp0aGVyZSBvbiBz b21lIHBsYXRmb3Jtcy4KCldlJ2xsIGV4cGFuZCB0aGUgdXNlIG9mIHRoaXMgc3RydWN0dXJlIHRv IGFjdHVhbGx5IHByZWNvbXB1dGluZyB0aGUKc3RhdGUgYW5kIHdoYXRub3QgbGF0ZXIuCgp2Mjog Q29uc3RpZnkgaW50ZWxfY2RjbGtfc3RhdGVfY29tcGFyZSgpCnYzOiBEb2N1bWVudCBpbnRlbF9j ZGNsa19zdGF0ZV9jb21wYXJlKCkKClNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmls bGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ClJldmlld2VkLWJ5OiBBbmRlciBDb25zZWx2YW4g ZGUgT2xpdmVpcmEgPGNvbnNlbHZhbjJAZ21haWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgICAgIHwgIDE0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRp by5jICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMgICAg ICB8IDM2NyArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jICAgIHwgIDE4ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oICAgICAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYyAgICAg ICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgICAgICB8ICAg NCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIHwgICA1ICstCiAx MCBmaWxlcyBjaGFuZ2VkLCAyNDggaW5zZXJ0aW9ucygrKSwgMTcxIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggZmE2OWQ3MmZkY2I5Li43NzQzMGQ1OTQ1 OTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0xMjYyLDcgKzEyNjIsNyBA QCBzdGF0aWMgaW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICp1bnVzZWQpCiAJCXNlcV9wdXRzKG0sICJubyBQLXN0YXRlIGluZm8gYXZhaWxhYmxlXG4iKTsK IAl9CiAKLQlzZXFfcHJpbnRmKG0sICJDdXJyZW50IENEIGNsb2NrIGZyZXF1ZW5jeTogJWQga0h6 XG4iLCBkZXZfcHJpdi0+Y2RjbGtfZnJlcSk7CisJc2VxX3ByaW50ZihtLCAiQ3VycmVudCBDRCBj bG9jayBmcmVxdWVuY3k6ICVkIGtIelxuIiwgZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrKTsKIAlz ZXFfcHJpbnRmKG0sICJNYXggQ0QgY2xvY2sgZnJlcXVlbmN5OiAlZCBrSHpcbiIsIGRldl9wcml2 LT5tYXhfY2RjbGtfZnJlcSk7CiAJc2VxX3ByaW50ZihtLCAiTWF4IHBpeGVsIGNsb2NrIGZyZXF1 ZW5jeTogJWQga0h6XG4iLCBkZXZfcHJpdi0+bWF4X2RvdGNsa19mcmVxKTsKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKaW5kZXggOGQwNTRhMDk1NGIwLi5jMWNjYzljNDkwMTkgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaApAQCAtNjAwLDkgKzYwMCwxMSBAQCBzdHJ1Y3QgaW50ZWxfaW5pdGlhbF9w bGFuZV9jb25maWc7CiBzdHJ1Y3QgaW50ZWxfY3J0YzsKIHN0cnVjdCBpbnRlbF9saW1pdDsKIHN0 cnVjdCBkcGxsOworc3RydWN0IGludGVsX2NkY2xrX3N0YXRlOwogCiBzdHJ1Y3QgZHJtX2k5MTVf ZGlzcGxheV9mdW5jcyB7Ci0JaW50ICgqZ2V0X2NkY2xrKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOworCXZvaWQgKCpnZXRfY2RjbGspKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKKwkJCSAgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSk7 CiAJaW50ICgqZ2V0X2ZpZm9fc2l6ZSkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCBpbnQgcGxhbmUpOwogCWludCAoKmNvbXB1dGVfcGlwZV93bSkoc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSk7CiAJaW50ICgqY29tcHV0ZV9pbnRlcm1lZGlhdGVfd20pKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCkBAIC0yMDUzLDYgKzIwNTUsMTAgQEAgc3RydWN0IGk5MTVfb2Ffb3Bz IHsKIAlib29sICgqb2FfYnVmZmVyX2lzX2VtcHR5KShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOwogfTsKIAorc3RydWN0IGludGVsX2NkY2xrX3N0YXRlIHsKKwl1bnNpZ25lZCBp bnQgY2RjbGssIHZjbywgcmVmOworfTsKKwogc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCXN0 cnVjdCBkcm1fZGV2aWNlIGRybTsKIApAQCAtMjE1Nyw3ICsyMTYzLDcgQEAgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgewogCiAJdW5zaWduZWQgaW50IGZzYl9mcmVxLCBtZW1fZnJlcSwgaXNfZGRy MzsKIAl1bnNpZ25lZCBpbnQgc2tsX3ByZWZlcnJlZF92Y29fZnJlcTsKLQl1bnNpZ25lZCBpbnQg Y2RjbGtfZnJlcSwgbWF4X2NkY2xrX2ZyZXE7CisJdW5zaWduZWQgaW50IG1heF9jZGNsa19mcmVx OwogCiAJLyoKIAkgKiBGb3IgcmVhZGluZyBob2xkaW5nIGFueSBjcnRjIGxvY2sgaXMgc3VmZmlj aWVudCwKQEAgLTIxNzEsOCArMjE3Nyw4IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAl1 bnNpZ25lZCBpbnQgY3pjbGtfZnJlcTsKIAogCXN0cnVjdCB7Ci0JCXVuc2lnbmVkIGludCB2Y28s IHJlZjsKLQl9IGNkY2xrX3BsbDsKKwkJc3RydWN0IGludGVsX2NkY2xrX3N0YXRlIGh3OworCX0g Y2RjbGs7CiAKIAkvKioKIAkgKiB3cSAtIERyaXZlciB3b3JrcXVldWUgZm9yIEdFTS4KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9hdWRpby5jCmluZGV4IDE2YzIwMjc4MWRiMC4uYTRjYWIzMDlhOTkwIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKQEAgLTczNCw3ICs3MzQsNyBAQCBzdGF0aWMg aW50IGk5MTVfYXVkaW9fY29tcG9uZW50X2dldF9jZGNsa19mcmVxKHN0cnVjdCBkZXZpY2UgKmtk ZXYpCiAJaWYgKFdBUk5fT05fT05DRSghSEFTX0RESShkZXZfcHJpdikpKQogCQlyZXR1cm4gLUVO T0RFVjsKIAotCXJldHVybiBkZXZfcHJpdi0+Y2RjbGtfZnJlcTsKKwlyZXR1cm4gZGV2X3ByaXYt PmNkY2xrLmh3LmNkY2xrOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfY2RjbGsuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMKaW5k ZXggNDljNzJjMjg0OGU4Li40YzE0ODkxZjA3NmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2NkY2xrLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2Rj bGsuYwpAQCAtNTEsMzcgKzUxLDQ0IEBACiAgKiBkaXZpZGVycyBjYW4gYmUgcHJvZ3JhbW1lZCBj b3JyZWN0bHkuCiAgKi8KIAotc3RhdGljIGludCBmaXhlZF8xMzNtaHpfZ2V0X2NkY2xrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2b2lkIGZpeGVkXzEzM21oel9n ZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCSAgIHN0cnVj dCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCiB7Ci0JcmV0dXJuIDEzMzMzMzsKKwlj ZGNsa19zdGF0ZS0+Y2RjbGsgPSAxMzMzMzM7CiB9CiAKLXN0YXRpYyBpbnQgZml4ZWRfMjAwbWh6 X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgdm9p ZCBmaXhlZF8yMDBtaHpfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKKwkJCQkgICBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmNkY2xrX3N0YXRlKQogewotCXJl dHVybiAyMDAwMDA7CisJY2RjbGtfc3RhdGUtPmNkY2xrID0gMjAwMDAwOwogfQogCi1zdGF0aWMg aW50IGZpeGVkXzI2Nm1oel9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQorc3RhdGljIHZvaWQgZml4ZWRfMjY2bWh6X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJICAgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNs a19zdGF0ZSkKIHsKLQlyZXR1cm4gMjY2NjY3OworCWNkY2xrX3N0YXRlLT5jZGNsayA9IDI2NjY2 NzsKIH0KIAotc3RhdGljIGludCBmaXhlZF8zMzNtaHpfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2b2lkIGZpeGVkXzMzM21oel9nZXRfY2RjbGso c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCSAgIHN0cnVjdCBpbnRlbF9j ZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCiB7Ci0JcmV0dXJuIDMzMzMzMzsKKwljZGNsa19zdGF0 ZS0+Y2RjbGsgPSAzMzMzMzM7CiB9CiAKLXN0YXRpYyBpbnQgZml4ZWRfNDAwbWh6X2dldF9jZGNs ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgdm9pZCBmaXhlZF80 MDBtaHpfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkg ICBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmNkY2xrX3N0YXRlKQogewotCXJldHVybiA0MDAw MDA7CisJY2RjbGtfc3RhdGUtPmNkY2xrID0gNDAwMDAwOwogfQogCi1zdGF0aWMgaW50IGZpeGVk XzQ1MG1oel9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3Rh dGljIHZvaWQgZml4ZWRfNDUwbWh6X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCisJCQkJICAgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSkK IHsKLQlyZXR1cm4gNDUwMDAwOworCWNkY2xrX3N0YXRlLT5jZGNsayA9IDQ1MDAwMDsKIH0KIAot c3RhdGljIGludCBpODV4X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCitzdGF0aWMgdm9pZCBpODV4X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCisJCQkgICBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmNkY2xrX3N0YXRlKQog ewogCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gZGV2X3ByaXYtPmRybS5wZGV2OwogCXUxNiBocGxs Y2MgPSAwOwpAQCAtOTEsOCArOTgsMTAgQEAgc3RhdGljIGludCBpODV4X2dldF9jZGNsayhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJICogZW5jb2RpbmcgaXMgZGlmZmVyZW50 IDooCiAJICogRklYTUUgaXMgdGhpcyB0aGUgcmlnaHQgd2F5IHRvIGRldGVjdCA4NTJHTS84NTJH TVY/CiAJICovCi0JaWYgKHBkZXYtPnJldmlzaW9uID09IDB4MSkKLQkJcmV0dXJuIDEzMzMzMzsK KwlpZiAocGRldi0+cmV2aXNpb24gPT0gMHgxKSB7CisJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDEz MzMzMzsKKwkJcmV0dXJuOworCX0KIAogCXBjaV9idXNfcmVhZF9jb25maWdfd29yZChwZGV2LT5i dXMsCiAJCQkJIFBDSV9ERVZGTigwLCAzKSwgSFBMTENDLCAmaHBsbGNjKTsKQEAgLTEwNCwzNyAr MTEzLDQzIEBAIHN0YXRpYyBpbnQgaTg1eF9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCWNhc2UgR0NfQ0xPQ0tfMTMzXzIwMDoKIAljYXNlIEdDX0NMT0NLXzEz M18yMDBfMjoKIAljYXNlIEdDX0NMT0NLXzEwMF8yMDA6Ci0JCXJldHVybiAyMDAwMDA7CisJCWNk Y2xrX3N0YXRlLT5jZGNsayA9IDIwMDAwMDsKKwkJYnJlYWs7CiAJY2FzZSBHQ19DTE9DS18xNjZf MjUwOgotCQlyZXR1cm4gMjUwMDAwOworCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSAyNTAwMDA7CisJ CWJyZWFrOwogCWNhc2UgR0NfQ0xPQ0tfMTAwXzEzMzoKLQkJcmV0dXJuIDEzMzMzMzsKKwkJY2Rj bGtfc3RhdGUtPmNkY2xrID0gMTMzMzMzOworCQlicmVhazsKIAljYXNlIEdDX0NMT0NLXzEzM18y NjY6CiAJY2FzZSBHQ19DTE9DS18xMzNfMjY2XzI6CiAJY2FzZSBHQ19DTE9DS18xNjZfMjY2Ogot CQlyZXR1cm4gMjY2NjY3OworCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSAyNjY2Njc7CisJCWJyZWFr OwogCX0KLQotCS8qIFNob3VsZG4ndCBoYXBwZW4gKi8KLQlyZXR1cm4gMDsKIH0KIAotc3RhdGlj IGludCBpOTE1Z21fZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK K3N0YXRpYyB2b2lkIGk5MTVnbV9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAorCQkJICAgICBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmNkY2xrX3N0YXRlKQog ewogCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gZGV2X3ByaXYtPmRybS5wZGV2OwogCXUxNiBnY2Zn YyA9IDA7CiAKIAlwY2lfcmVhZF9jb25maWdfd29yZChwZGV2LCBHQ0ZHQywgJmdjZmdjKTsKIAot CWlmIChnY2ZnYyAmIEdDX0xPV19GUkVRVUVOQ1lfRU5BQkxFKQotCQlyZXR1cm4gMTMzMzMzOwor CWlmIChnY2ZnYyAmIEdDX0xPV19GUkVRVUVOQ1lfRU5BQkxFKSB7CisJCWNkY2xrX3N0YXRlLT5j ZGNsayA9IDEzMzMzMzsKKwkJcmV0dXJuOworCX0KIAogCXN3aXRjaCAoZ2NmZ2MgJiBHQ19ESVNQ TEFZX0NMT0NLX01BU0spIHsKIAljYXNlIEdDX0RJU1BMQVlfQ0xPQ0tfMzMzX01IWjoKLQkJcmV0 dXJuIDMzMzMzMzsKKwkJY2RjbGtfc3RhdGUtPmNkY2xrID0gMzMzMzMzOworCQlicmVhazsKIAlk ZWZhdWx0OgogCWNhc2UgR0NfRElTUExBWV9DTE9DS18xOTBfMjAwX01IWjoKLQkJcmV0dXJuIDE5 MDAwMDsKKwkJY2RjbGtfc3RhdGUtPmNkY2xrID0gMTkwMDAwOworCQlicmVhazsKIAl9CiB9CiAK QEAgLTIwNiw3ICsyMjEsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGludGVsX2hwbGxfdmNvKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1cm4gdmNvOwogfQogCi1zdGF0 aWMgaW50IGczM19nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQor c3RhdGljIHZvaWQgZzMzX2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCisJCQkgIHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCiB7CiAJc3Ry dWN0IHBjaV9kZXYgKnBkZXYgPSBkZXZfcHJpdi0+ZHJtLnBkZXY7CiAJc3RhdGljIGNvbnN0IHVp bnQ4X3QgZGl2XzMyMDBbXSA9IHsgMTIsIDEwLCAgOCwgIDcsIDUsIDE2IH07CkBAIC0yMTQsOSAr MjMwLDExIEBAIHN0YXRpYyBpbnQgZzMzX2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiAJc3RhdGljIGNvbnN0IHVpbnQ4X3QgZGl2XzQ4MDBbXSA9IHsgMjAsIDE0 LCAxMiwgMTAsIDgsIDI0IH07CiAJc3RhdGljIGNvbnN0IHVpbnQ4X3QgZGl2XzUzMzNbXSA9IHsg MjAsIDE2LCAxMiwgMTIsIDgsIDI4IH07CiAJY29uc3QgdWludDhfdCAqZGl2X3RhYmxlOwotCXVu c2lnbmVkIGludCBjZGNsa19zZWwsIHZjbyA9IGludGVsX2hwbGxfdmNvKGRldl9wcml2KTsKKwl1 bnNpZ25lZCBpbnQgY2RjbGtfc2VsOwogCXVpbnQxNl90IHRtcCA9IDA7CiAKKwljZGNsa19zdGF0 ZS0+dmNvID0gaW50ZWxfaHBsbF92Y28oZGV2X3ByaXYpOworCiAJcGNpX3JlYWRfY29uZmlnX3dv cmQocGRldiwgR0NGR0MsICZ0bXApOwogCiAJY2RjbGtfc2VsID0gKHRtcCA+PiA0KSAmIDB4NzsK QEAgLTIyNCw3ICsyNDIsNyBAQCBzdGF0aWMgaW50IGczM19nZXRfY2RjbGsoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWlmIChjZGNsa19zZWwgPj0gQVJSQVlfU0laRShkaXZf MzIwMCkpCiAJCWdvdG8gZmFpbDsKIAotCXN3aXRjaCAodmNvKSB7CisJc3dpdGNoIChjZGNsa19z dGF0ZS0+dmNvKSB7CiAJY2FzZSAzMjAwMDAwOgogCQlkaXZfdGFibGUgPSBkaXZfMzIwMDsKIAkJ YnJlYWs7CkBAIC0yNDEsMTUgKzI1OSwxOCBAQCBzdGF0aWMgaW50IGczM19nZXRfY2RjbGsoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlnb3RvIGZhaWw7CiAJfQogCi0JcmV0 dXJuIERJVl9ST1VORF9DTE9TRVNUKHZjbywgZGl2X3RhYmxlW2NkY2xrX3NlbF0pOworCWNkY2xr X3N0YXRlLT5jZGNsayA9IERJVl9ST1VORF9DTE9TRVNUKGNkY2xrX3N0YXRlLT52Y28sCisJCQkJ CSAgICAgICBkaXZfdGFibGVbY2RjbGtfc2VsXSk7CisJcmV0dXJuOwogCiBmYWlsOgogCURSTV9F UlJPUigiVW5hYmxlIHRvIGRldGVybWluZSBDRENMSy4gSFBMTCBWQ089JXUga0h6LCBDRkdDPTB4 JTA4eFxuIiwKLQkJICB2Y28sIHRtcCk7Ci0JcmV0dXJuIDE5MDQ3NjsKKwkJICBjZGNsa19zdGF0 ZS0+dmNvLCB0bXApOworCWNkY2xrX3N0YXRlLT5jZGNsayA9IDE5MDQ3NjsKIH0KIAotc3RhdGlj IGludCBwbnZfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0 YXRpYyB2b2lkIHBudl9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAorCQkJICBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmNkY2xrX3N0YXRlKQogewogCXN0cnVj dCBwY2lfZGV2ICpwZGV2ID0gZGV2X3ByaXYtPmRybS5wZGV2OwogCXUxNiBnY2ZnYyA9IDA7CkBA IC0yNTgsMzIgKzI3OSw0MSBAQCBzdGF0aWMgaW50IHBudl9nZXRfY2RjbGsoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJc3dpdGNoIChnY2ZnYyAmIEdDX0RJU1BMQVlfQ0xP Q0tfTUFTSykgewogCWNhc2UgR0NfRElTUExBWV9DTE9DS18yNjdfTUhaX1BOVjoKLQkJcmV0dXJu IDI2NjY2NzsKKwkJY2RjbGtfc3RhdGUtPmNkY2xrID0gMjY2NjY3OworCQlicmVhazsKIAljYXNl IEdDX0RJU1BMQVlfQ0xPQ0tfMzMzX01IWl9QTlY6Ci0JCXJldHVybiAzMzMzMzM7CisJCWNkY2xr X3N0YXRlLT5jZGNsayA9IDMzMzMzMzsKKwkJYnJlYWs7CiAJY2FzZSBHQ19ESVNQTEFZX0NMT0NL XzQ0NF9NSFpfUE5WOgotCQlyZXR1cm4gNDQ0NDQ0OworCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSA0 NDQ0NDQ7CisJCWJyZWFrOwogCWNhc2UgR0NfRElTUExBWV9DTE9DS18yMDBfTUhaX1BOVjoKLQkJ cmV0dXJuIDIwMDAwMDsKKwkJY2RjbGtfc3RhdGUtPmNkY2xrID0gMjAwMDAwOworCQlicmVhazsK IAlkZWZhdWx0OgogCQlEUk1fRVJST1IoIlVua25vd24gcG52IGRpc3BsYXkgY29yZSBjbG9jayAw eCUwNHhcbiIsIGdjZmdjKTsKIAljYXNlIEdDX0RJU1BMQVlfQ0xPQ0tfMTMzX01IWl9QTlY6Ci0J CXJldHVybiAxMzMzMzM7CisJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDEzMzMzMzsKKwkJYnJlYWs7 CiAJY2FzZSBHQ19ESVNQTEFZX0NMT0NLXzE2N19NSFpfUE5WOgotCQlyZXR1cm4gMTY2NjY3Owor CQljZGNsa19zdGF0ZS0+Y2RjbGsgPSAxNjY2Njc7CisJCWJyZWFrOwogCX0KIH0KIAotc3RhdGlj IGludCBpOTY1Z21fZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK K3N0YXRpYyB2b2lkIGk5NjVnbV9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAorCQkJICAgICBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmNkY2xrX3N0YXRlKQog ewogCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gZGV2X3ByaXYtPmRybS5wZGV2OwogCXN0YXRpYyBj b25zdCB1aW50OF90IGRpdl8zMjAwW10gPSB7IDE2LCAxMCwgIDggfTsKIAlzdGF0aWMgY29uc3Qg dWludDhfdCBkaXZfNDAwMFtdID0geyAyMCwgMTIsIDEwIH07CiAJc3RhdGljIGNvbnN0IHVpbnQ4 X3QgZGl2XzUzMzNbXSA9IHsgMjQsIDE2LCAxNCB9OwogCWNvbnN0IHVpbnQ4X3QgKmRpdl90YWJs ZTsKLQl1bnNpZ25lZCBpbnQgY2RjbGtfc2VsLCB2Y28gPSBpbnRlbF9ocGxsX3ZjbyhkZXZfcHJp dik7CisJdW5zaWduZWQgaW50IGNkY2xrX3NlbDsKIAl1aW50MTZfdCB0bXAgPSAwOwogCisJY2Rj bGtfc3RhdGUtPnZjbyA9IGludGVsX2hwbGxfdmNvKGRldl9wcml2KTsKKwogCXBjaV9yZWFkX2Nv bmZpZ193b3JkKHBkZXYsIEdDRkdDLCAmdG1wKTsKIAogCWNkY2xrX3NlbCA9ICgodG1wID4+IDgp ICYgMHgxZikgLSAxOwpAQCAtMjkxLDcgKzMyMSw3IEBAIHN0YXRpYyBpbnQgaTk2NWdtX2dldF9j ZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJaWYgKGNkY2xrX3NlbCA+ PSBBUlJBWV9TSVpFKGRpdl8zMjAwKSkKIAkJZ290byBmYWlsOwogCi0Jc3dpdGNoICh2Y28pIHsK Kwlzd2l0Y2ggKGNkY2xrX3N0YXRlLT52Y28pIHsKIAljYXNlIDMyMDAwMDA6CiAJCWRpdl90YWJs ZSA9IGRpdl8zMjAwOwogCQlicmVhazsKQEAgLTMwNSw1MyArMzM1LDYyIEBAIHN0YXRpYyBpbnQg aTk2NWdtX2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWdv dG8gZmFpbDsKIAl9CiAKLQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QodmNvLCBkaXZfdGFibGVb Y2RjbGtfc2VsXSk7CisJY2RjbGtfc3RhdGUtPmNkY2xrID0gRElWX1JPVU5EX0NMT1NFU1QoY2Rj bGtfc3RhdGUtPnZjbywKKwkJCQkJICAgICAgIGRpdl90YWJsZVtjZGNsa19zZWxdKTsKKwlyZXR1 cm47CiAKIGZhaWw6CiAJRFJNX0VSUk9SKCJVbmFibGUgdG8gZGV0ZXJtaW5lIENEQ0xLLiBIUExM IFZDTz0ldSBrSHosIENGR0M9MHglMDR4XG4iLAotCQkgIHZjbywgdG1wKTsKLQlyZXR1cm4gMjAw MDAwOworCQkgIGNkY2xrX3N0YXRlLT52Y28sIHRtcCk7CisJY2RjbGtfc3RhdGUtPmNkY2xrID0g MjAwMDAwOwogfQogCi1zdGF0aWMgaW50IGdtNDVfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2b2lkIGdtNDVfZ2V0X2NkY2xrKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAgIHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAq Y2RjbGtfc3RhdGUpCiB7CiAJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBkZXZfcHJpdi0+ZHJtLnBk ZXY7Ci0JdW5zaWduZWQgaW50IGNkY2xrX3NlbCwgdmNvID0gaW50ZWxfaHBsbF92Y28oZGV2X3By aXYpOworCXVuc2lnbmVkIGludCBjZGNsa19zZWw7CiAJdWludDE2X3QgdG1wID0gMDsKIAorCWNk Y2xrX3N0YXRlLT52Y28gPSBpbnRlbF9ocGxsX3ZjbyhkZXZfcHJpdik7CisKIAlwY2lfcmVhZF9j b25maWdfd29yZChwZGV2LCBHQ0ZHQywgJnRtcCk7CiAKIAljZGNsa19zZWwgPSAodG1wID4+IDEy KSAmIDB4MTsKIAotCXN3aXRjaCAodmNvKSB7CisJc3dpdGNoIChjZGNsa19zdGF0ZS0+dmNvKSB7 CiAJY2FzZSAyNjY2NjY3OgogCWNhc2UgNDAwMDAwMDoKIAljYXNlIDUzMzMzMzM6Ci0JCXJldHVy biBjZGNsa19zZWwgPyAzMzMzMzMgOiAyMjIyMjI7CisJCWNkY2xrX3N0YXRlLT5jZGNsayA9IGNk Y2xrX3NlbCA/IDMzMzMzMyA6IDIyMjIyMjsKKwkJYnJlYWs7CiAJY2FzZSAzMjAwMDAwOgotCQly ZXR1cm4gY2RjbGtfc2VsID8gMzIwMDAwIDogMjI4NTcxOworCQljZGNsa19zdGF0ZS0+Y2RjbGsg PSBjZGNsa19zZWwgPyAzMjAwMDAgOiAyMjg1NzE7CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCURS TV9FUlJPUigiVW5hYmxlIHRvIGRldGVybWluZSBDRENMSy4gSFBMTCBWQ089JXUsIENGR0M9MHgl MDR4XG4iLAotCQkJICB2Y28sIHRtcCk7Ci0JCXJldHVybiAyMjIyMjI7CisJCQkgIGNkY2xrX3N0 YXRlLT52Y28sIHRtcCk7CisJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDIyMjIyMjsKKwkJYnJlYWs7 CiAJfQogfQogCi1zdGF0aWMgaW50IGhzd19nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQgaHN3X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgIHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtf c3RhdGUpCiB7CiAJdWludDMyX3QgbGNwbGwgPSBJOTE1X1JFQUQoTENQTExfQ1RMKTsKIAl1aW50 MzJfdCBmcmVxID0gbGNwbGwgJiBMQ1BMTF9DTEtfRlJFUV9NQVNLOwogCiAJaWYgKGxjcGxsICYg TENQTExfQ0RfU09VUkNFX0ZDTEspCi0JCXJldHVybiA4MDAwMDA7CisJCWNkY2xrX3N0YXRlLT5j ZGNsayA9IDgwMDAwMDsKIAllbHNlIGlmIChJOTE1X1JFQUQoRlVTRV9TVFJBUCkgJiBIU1dfQ0RD TEtfTElNSVQpCi0JCXJldHVybiA0NTAwMDA7CisJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDQ1MDAw MDsKIAllbHNlIGlmIChmcmVxID09IExDUExMX0NMS19GUkVRXzQ1MCkKLQkJcmV0dXJuIDQ1MDAw MDsKKwkJY2RjbGtfc3RhdGUtPmNkY2xrID0gNDUwMDAwOwogCWVsc2UgaWYgKElTX0hTV19VTFQo ZGV2X3ByaXYpKQotCQlyZXR1cm4gMzM3NTAwOworCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSAzMzc1 MDA7CiAJZWxzZQotCQlyZXR1cm4gNTQwMDAwOworCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSA1NDAw MDA7CiB9CiAKIHN0YXRpYyBpbnQgdmx2X2NhbGNfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LApAQCAtMzc3LDEwICs0MTYsMTMgQEAgc3RhdGljIGludCB2bHZfY2FsY19j ZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCXJldHVybiAyMDAwMDA7 CiB9CiAKLXN0YXRpYyBpbnQgdmx2X2dldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCitzdGF0aWMgdm9pZCB2bHZfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKKwkJCSAgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0 ZSkKIHsKLQlyZXR1cm4gdmx2X2dldF9jY2tfY2xvY2tfaHBsbChkZXZfcHJpdiwgImNkY2xrIiwK LQkJCQkgICAgICBDQ0tfRElTUExBWV9DTE9DS19DT05UUk9MKTsKKwljZGNsa19zdGF0ZS0+dmNv ID0gdmx2X2dldF9ocGxsX3ZjbyhkZXZfcHJpdik7CisJY2RjbGtfc3RhdGUtPmNkY2xrID0gdmx2 X2dldF9jY2tfY2xvY2soZGV2X3ByaXYsICJjZGNsayIsCisJCQkJCSAgICAgICBDQ0tfRElTUExB WV9DTE9DS19DT05UUk9MLAorCQkJCQkgICAgICAgY2RjbGtfc3RhdGUtPnZjbyk7CiB9CiAKIHN0 YXRpYyB2b2lkIHZsdl9wcm9ncmFtX3BmaV9jcmVkaXRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKQEAgLTM5Miw3ICs0MzQsNyBAQCBzdGF0aWMgdm9pZCB2bHZfcHJvZ3JhbV9w ZmlfY3JlZGl0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJZWxzZQogCQlk ZWZhdWx0X2NyZWRpdHMgPSBQRklfQ1JFRElUKDgpOwogCi0JaWYgKGRldl9wcml2LT5jZGNsa19m cmVxID49IGRldl9wcml2LT5jemNsa19mcmVxKSB7CisJaWYgKGRldl9wcml2LT5jZGNsay5ody5j ZGNsayA+PSBkZXZfcHJpdi0+Y3pjbGtfZnJlcSkgewogCQkvKiBDSFYgc3VnZ2VzdGVkIHZhbHVl IGlzIDMxIG9yIDYzICovCiAJCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKIAkJCWNyZWRp dHMgPSBQRklfQ1JFRElUXzYzOwpAQCAtNDI0LDggKzQ2Niw2IEBAIHN0YXRpYyB2b2lkIHZsdl9z ZXRfY2RjbGsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNkY2xrKQogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAl1MzIgdmFsLCBjbWQ7CiAK LQlXQVJOX09OKGRldl9wcml2LT5kaXNwbGF5LmdldF9jZGNsayhkZXZfcHJpdikgIT0gZGV2X3By aXYtPmNkY2xrX2ZyZXEpOwotCiAJaWYgKGNkY2xrID49IDMyMDAwMCkgLyoganVtcCB0byBoaWdo ZXN0IHZvbHRhZ2UgZm9yIDQwME1IeiB0b28gKi8KIAkJY21kID0gMjsKIAllbHNlIGlmIChjZGNs ayA9PSAyNjY2NjcpCkBAIC00ODksOCArNTI5LDYgQEAgc3RhdGljIHZvaWQgY2h2X3NldF9jZGNs ayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY2RjbGspCiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCXUzMiB2YWwsIGNtZDsKIAotCVdBUk5f T04oZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NkY2xrKGRldl9wcml2KSAhPSBkZXZfcHJpdi0+Y2Rj bGtfZnJlcSk7Ci0KIAlzd2l0Y2ggKGNkY2xrKSB7CiAJY2FzZSAzMzMzMzM6CiAJY2FzZSAzMjAw MDA6CkBAIC01MzYsMjMgKzU3NCwyNCBAQCBzdGF0aWMgaW50IGJkd19jYWxjX2NkY2xrKGludCBt YXhfcGl4Y2xrKQogCQlyZXR1cm4gMzM3NTAwOwogfQogCi1zdGF0aWMgaW50IGJkd19nZXRfY2Rj bGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQgYmR3X2dl dF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgIHN0cnVjdCBp bnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCiB7CiAJdWludDMyX3QgbGNwbGwgPSBJOTE1 X1JFQUQoTENQTExfQ1RMKTsKIAl1aW50MzJfdCBmcmVxID0gbGNwbGwgJiBMQ1BMTF9DTEtfRlJF UV9NQVNLOwogCiAJaWYgKGxjcGxsICYgTENQTExfQ0RfU09VUkNFX0ZDTEspCi0JCXJldHVybiA4 MDAwMDA7CisJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDgwMDAwMDsKIAllbHNlIGlmIChJOTE1X1JF QUQoRlVTRV9TVFJBUCkgJiBIU1dfQ0RDTEtfTElNSVQpCi0JCXJldHVybiA0NTAwMDA7CisJCWNk Y2xrX3N0YXRlLT5jZGNsayA9IDQ1MDAwMDsKIAllbHNlIGlmIChmcmVxID09IExDUExMX0NMS19G UkVRXzQ1MCkKLQkJcmV0dXJuIDQ1MDAwMDsKKwkJY2RjbGtfc3RhdGUtPmNkY2xrID0gNDUwMDAw OwogCWVsc2UgaWYgKGZyZXEgPT0gTENQTExfQ0xLX0ZSRVFfNTRPX0JEVykKLQkJcmV0dXJuIDU0 MDAwMDsKKwkJY2RjbGtfc3RhdGUtPmNkY2xrID0gNTQwMDAwOwogCWVsc2UgaWYgKGZyZXEgPT0g TENQTExfQ0xLX0ZSRVFfMzM3XzVfQkRXKQotCQlyZXR1cm4gMzM3NTAwOworCQljZGNsa19zdGF0 ZS0+Y2RjbGsgPSAzMzc1MDA7CiAJZWxzZQotCQlyZXR1cm4gNjc1MDAwOworCQljZGNsa19zdGF0 ZS0+Y2RjbGsgPSA2NzUwMDA7CiB9CiAKIHN0YXRpYyB2b2lkIGJkd19zZXRfY2RjbGsoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgaW50IGNkY2xrKQpAQCAtNjI5LDkgKzY2OCw5IEBAIHN0YXRpYyB2 b2lkIGJkd19zZXRfY2RjbGsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNkY2xrKQogCiAJ aW50ZWxfdXBkYXRlX2NkY2xrKGRldl9wcml2KTsKIAotCVdBUk4oY2RjbGsgIT0gZGV2X3ByaXYt PmNkY2xrX2ZyZXEsCisJV0FSTihjZGNsayAhPSBkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGssCiAJ ICAgICAiY2RjbGsgcmVxdWVzdGVkICVkIGtIeiBidXQgZ290ICVkIGtIelxuIiwKLQkgICAgIGNk Y2xrLCBkZXZfcHJpdi0+Y2RjbGtfZnJlcSk7CisJICAgICBjZGNsaywgZGV2X3ByaXYtPmNkY2xr Lmh3LmNkY2xrKTsKIH0KIAogc3RhdGljIGludCBza2xfY2FsY19jZGNsayhpbnQgbWF4X3BpeGNs aywgaW50IHZjbykKQEAgLTY1NywxMiArNjk2LDEzIEBAIHN0YXRpYyBpbnQgc2tsX2NhbGNfY2Rj bGsoaW50IG1heF9waXhjbGssIGludCB2Y28pCiAJfQogfQogCi1zdGF0aWMgdm9pZCBza2xfZHBs bDBfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3N0YXRpYyB2b2lk IHNrbF9kcGxsMF91cGRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJ ICAgICBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmNkY2xrX3N0YXRlKQogewogCXUzMiB2YWw7 CiAKLQlkZXZfcHJpdi0+Y2RjbGtfcGxsLnJlZiA9IDI0MDAwOwotCWRldl9wcml2LT5jZGNsa19w bGwudmNvID0gMDsKKwljZGNsa19zdGF0ZS0+cmVmID0gMjQwMDA7CisJY2RjbGtfc3RhdGUtPnZj byA9IDA7CiAKIAl2YWwgPSBJOTE1X1JFQUQoTENQTEwxX0NUTCk7CiAJaWYgKCh2YWwgJiBMQ1BM TF9QTExfRU5BQkxFKSA9PSAwKQpAQCAtNjg0LDExICs3MjQsMTEgQEAgc3RhdGljIHZvaWQgc2ts X2RwbGwwX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJY2FzZSBE UExMX0NUUkwxX0xJTktfUkFURShEUExMX0NUUkwxX0xJTktfUkFURV8xMzUwLCBTS0xfRFBMTDAp OgogCWNhc2UgRFBMTF9DVFJMMV9MSU5LX1JBVEUoRFBMTF9DVFJMMV9MSU5LX1JBVEVfMTYyMCwg U0tMX0RQTEwwKToKIAljYXNlIERQTExfQ1RSTDFfTElOS19SQVRFKERQTExfQ1RSTDFfTElOS19S QVRFXzI3MDAsIFNLTF9EUExMMCk6Ci0JCWRldl9wcml2LT5jZGNsa19wbGwudmNvID0gODEwMDAw MDsKKwkJY2RjbGtfc3RhdGUtPnZjbyA9IDgxMDAwMDA7CiAJCWJyZWFrOwogCWNhc2UgRFBMTF9D VFJMMV9MSU5LX1JBVEUoRFBMTF9DVFJMMV9MSU5LX1JBVEVfMTA4MCwgU0tMX0RQTEwwKToKIAlj YXNlIERQTExfQ1RSTDFfTElOS19SQVRFKERQTExfQ1RSTDFfTElOS19SQVRFXzIxNjAsIFNLTF9E UExMMCk6Ci0JCWRldl9wcml2LT5jZGNsa19wbGwudmNvID0gODY0MDAwMDsKKwkJY2RjbGtfc3Rh dGUtPnZjbyA9IDg2NDAwMDA7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCU1JU1NJTkdfQ0FTRSh2 YWwgJiBEUExMX0NUUkwxX0xJTktfUkFURV9NQVNLKFNLTF9EUExMMCkpOwpAQCAtNjk2LDQ2ICs3 MzYsNTcgQEAgc3RhdGljIHZvaWQgc2tsX2RwbGwwX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAJfQogfQogCi1zdGF0aWMgaW50IHNrbF9nZXRfY2RjbGsoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQorc3RhdGljIHZvaWQgc2tsX2dldF9jZGNsayhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgIHN0cnVjdCBpbnRlbF9jZGNs a19zdGF0ZSAqY2RjbGtfc3RhdGUpCiB7CiAJdTMyIGNkY3RsOwogCi0Jc2tsX2RwbGwwX3VwZGF0 ZShkZXZfcHJpdik7CisJc2tsX2RwbGwwX3VwZGF0ZShkZXZfcHJpdiwgY2RjbGtfc3RhdGUpOwog Ci0JaWYgKGRldl9wcml2LT5jZGNsa19wbGwudmNvID09IDApCi0JCXJldHVybiBkZXZfcHJpdi0+ Y2RjbGtfcGxsLnJlZjsKKwljZGNsa19zdGF0ZS0+Y2RjbGsgPSBjZGNsa19zdGF0ZS0+cmVmOwor CisJaWYgKGNkY2xrX3N0YXRlLT52Y28gPT0gMCkKKwkJcmV0dXJuOwogCiAJY2RjdGwgPSBJOTE1 X1JFQUQoQ0RDTEtfQ1RMKTsKIAotCWlmIChkZXZfcHJpdi0+Y2RjbGtfcGxsLnZjbyA9PSA4NjQw MDAwKSB7CisJaWYgKGNkY2xrX3N0YXRlLT52Y28gPT0gODY0MDAwMCkgewogCQlzd2l0Y2ggKGNk Y3RsICYgQ0RDTEtfRlJFUV9TRUxfTUFTSykgewogCQljYXNlIENEQ0xLX0ZSRVFfNDUwXzQzMjoK LQkJCXJldHVybiA0MzIwMDA7CisJCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSA0MzIwMDA7CisJCQli cmVhazsKIAkJY2FzZSBDRENMS19GUkVRXzMzN18zMDg6Ci0JCQlyZXR1cm4gMzA4NTcxOworCQkJ Y2RjbGtfc3RhdGUtPmNkY2xrID0gMzA4NTcxOworCQkJYnJlYWs7CiAJCWNhc2UgQ0RDTEtfRlJF UV81NDA6Ci0JCQlyZXR1cm4gNTQwMDAwOworCQkJY2RjbGtfc3RhdGUtPmNkY2xrID0gNTQwMDAw OworCQkJYnJlYWs7CiAJCWNhc2UgQ0RDTEtfRlJFUV82NzVfNjE3OgotCQkJcmV0dXJuIDYxNzE0 MzsKKwkJCWNkY2xrX3N0YXRlLT5jZGNsayA9IDYxNzE0MzsKKwkJCWJyZWFrOwogCQlkZWZhdWx0 OgogCQkJTUlTU0lOR19DQVNFKGNkY3RsICYgQ0RDTEtfRlJFUV9TRUxfTUFTSyk7CisJCQlicmVh azsKIAkJfQogCX0gZWxzZSB7CiAJCXN3aXRjaCAoY2RjdGwgJiBDRENMS19GUkVRX1NFTF9NQVNL KSB7CiAJCWNhc2UgQ0RDTEtfRlJFUV80NTBfNDMyOgotCQkJcmV0dXJuIDQ1MDAwMDsKKwkJCWNk Y2xrX3N0YXRlLT5jZGNsayA9IDQ1MDAwMDsKKwkJCWJyZWFrOwogCQljYXNlIENEQ0xLX0ZSRVFf MzM3XzMwODoKLQkJCXJldHVybiAzMzc1MDA7CisJCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSAzMzc1 MDA7CisJCQlicmVhazsKIAkJY2FzZSBDRENMS19GUkVRXzU0MDoKLQkJCXJldHVybiA1NDAwMDA7 CisJCQljZGNsa19zdGF0ZS0+Y2RjbGsgPSA1NDAwMDA7CisJCQlicmVhazsKIAkJY2FzZSBDRENM S19GUkVRXzY3NV82MTc6Ci0JCQlyZXR1cm4gNjc1MDAwOworCQkJY2RjbGtfc3RhdGUtPmNkY2xr ID0gNjc1MDAwOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlNSVNTSU5HX0NBU0UoY2RjdGwg JiBDRENMS19GUkVRX1NFTF9NQVNLKTsKKwkJCWJyZWFrOwogCQl9CiAJfQotCi0JcmV0dXJuIGRl dl9wcml2LT5jZGNsa19wbGwucmVmOwogfQogCiAvKiBjb252ZXJ0IGZyb20ga0h6IHRvIC4xIGZp eHBvaW50IE1IeiB3aXRoIC0xTUh6IG9mZnNldCAqLwpAQCAtNzk4LDcgKzg0OSw3IEBAIHN0YXRp YyB2b2lkIHNrbF9kcGxsMF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCBpbnQgdmNvKQogCQkJCSAgICA1KSkKIAkJRFJNX0VSUk9SKCJEUExMMCBub3QgbG9ja2VkXG4i KTsKIAotCWRldl9wcml2LT5jZGNsa19wbGwudmNvID0gdmNvOworCWRldl9wcml2LT5jZGNsay5o dy52Y28gPSB2Y287CiAKIAkvKiBXZSdsbCB3YW50IHRvIGtlZXAgdXNpbmcgdGhlIGN1cnJlbnQg dmNvIGZyb20gbm93IG9uLiAqLwogCXNrbF9zZXRfcHJlZmVycmVkX2NkY2xrX3ZjbyhkZXZfcHJp diwgdmNvKTsKQEAgLTgxMiw3ICs4NjMsNyBAQCBzdGF0aWMgdm9pZCBza2xfZHBsbDBfZGlzYWJs ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQkJICAgMSkpCiAJCURSTV9F UlJPUigiQ291bGRuJ3QgZGlzYWJsZSBEUExMMFxuIik7CiAKLQlkZXZfcHJpdi0+Y2RjbGtfcGxs LnZjbyA9IDA7CisJZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyA9IDA7CiB9CiAKIHN0YXRpYyB2b2lk IHNrbF9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LApAQCAtODYy LDExICs5MTMsMTEgQEAgc3RhdGljIHZvaWQgc2tsX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWJyZWFrOwogCX0KIAotCWlmIChkZXZfcHJpdi0+Y2RjbGtf cGxsLnZjbyAhPSAwICYmCi0JICAgIGRldl9wcml2LT5jZGNsa19wbGwudmNvICE9IHZjbykKKwlp ZiAoZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyAhPSAwICYmCisJICAgIGRldl9wcml2LT5jZGNsay5o dy52Y28gIT0gdmNvKQogCQlza2xfZHBsbDBfZGlzYWJsZShkZXZfcHJpdik7CiAKLQlpZiAoZGV2 X3ByaXYtPmNkY2xrX3BsbC52Y28gIT0gdmNvKQorCWlmIChkZXZfcHJpdi0+Y2RjbGsuaHcudmNv ICE9IHZjbykKIAkJc2tsX2RwbGwwX2VuYWJsZShkZXZfcHJpdiwgdmNvKTsKIAogCUk5MTVfV1JJ VEUoQ0RDTEtfQ1RMLCBmcmVxX3NlbGVjdCB8IHNrbF9jZGNsa19kZWNpbWFsKGNkY2xrKSk7CkBA IC04OTQsOCArOTQ1LDggQEAgc3RhdGljIHZvaWQgc2tsX3Nhbml0aXplX2NkY2xrKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogCWludGVsX3VwZGF0ZV9jZGNsayhkZXZfcHJp dik7CiAJLyogSXMgUExMIGVuYWJsZWQgYW5kIGxvY2tlZCA/ICovCi0JaWYgKGRldl9wcml2LT5j ZGNsa19wbGwudmNvID09IDAgfHwKLQkgICAgZGV2X3ByaXYtPmNkY2xrX2ZyZXEgPT0gZGV2X3By aXYtPmNkY2xrX3BsbC5yZWYpCisJaWYgKGRldl9wcml2LT5jZGNsay5ody52Y28gPT0gMCB8fAor CSAgICBkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGsgPT0gZGV2X3ByaXYtPmNkY2xrLmh3LnJlZikK IAkJZ290byBzYW5pdGl6ZTsKIAogCS8qIERQTEwgb2theTsgdmVyaWZ5IHRoZSBjZGNsb2NrCkBA IC05MDYsNyArOTU3LDcgQEAgc3RhdGljIHZvaWQgc2tsX3Nhbml0aXplX2NkY2xrKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkgKi8KIAljZGN0bCA9IEk5MTVfUkVBRChDRENM S19DVEwpOwogCWV4cGVjdGVkID0gKGNkY3RsICYgQ0RDTEtfRlJFUV9TRUxfTUFTSykgfAotCQlz a2xfY2RjbGtfZGVjaW1hbChkZXZfcHJpdi0+Y2RjbGtfZnJlcSk7CisJCXNrbF9jZGNsa19kZWNp bWFsKGRldl9wcml2LT5jZGNsay5ody5jZGNsayk7CiAJaWYgKGNkY3RsID09IGV4cGVjdGVkKQog CQkvKiBBbGwgd2VsbDsgbm90aGluZyB0byBzYW5pdGl6ZSAqLwogCQlyZXR1cm47CkBAIC05MTUs OSArOTY2LDkgQEAgc3RhdGljIHZvaWQgc2tsX3Nhbml0aXplX2NkY2xrKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKIAlEUk1fREVCVUdfS01TKCJTYW5pdGl6aW5nIGNkY2xrIHBy b2dyYW1tZWQgYnkgcHJlLW9zXG4iKTsKIAogCS8qIGZvcmNlIGNkY2xrIHByb2dyYW1taW5nICov Ci0JZGV2X3ByaXYtPmNkY2xrX2ZyZXEgPSAwOworCWRldl9wcml2LT5jZGNsay5ody5jZGNsayA9 IDA7CiAJLyogZm9yY2UgZnVsbCBQTEwgZGlzYWJsZSArIGVuYWJsZSAqLwotCWRldl9wcml2LT5j ZGNsa19wbGwudmNvID0gLTE7CisJZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyA9IC0xOwogfQogCiAv KioKQEAgLTkzNSwxNCArOTg2LDE1IEBAIHZvaWQgc2tsX2luaXRfY2RjbGsoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJc2tsX3Nhbml0aXplX2NkY2xrKGRldl9wcml2KTsK IAotCWlmIChkZXZfcHJpdi0+Y2RjbGtfZnJlcSAhPSAwICYmIGRldl9wcml2LT5jZGNsa19wbGwu dmNvICE9IDApIHsKKwlpZiAoZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrICE9IDAgJiYKKwkgICAg ZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyAhPSAwKSB7CiAJCS8qCiAJCSAqIFVzZSB0aGUgY3VycmVu dCB2Y28gYXMgb3VyIGluaXRpYWwKIAkJICogZ3Vlc3MgYXMgdG8gd2hhdCB0aGUgcHJlZmVycmVk IHZjbyBpcy4KIAkJICovCiAJCWlmIChkZXZfcHJpdi0+c2tsX3ByZWZlcnJlZF92Y29fZnJlcSA9 PSAwKQogCQkJc2tsX3NldF9wcmVmZXJyZWRfY2RjbGtfdmNvKGRldl9wcml2LAotCQkJCQkJICAg IGRldl9wcml2LT5jZGNsa19wbGwudmNvKTsKKwkJCQkJCSAgICBkZXZfcHJpdi0+Y2RjbGsuaHcu dmNvKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtOTYzLDcgKzEwMTUsNyBAQCB2b2lkIHNrbF9pbml0 X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKICAqLwogdm9pZCBza2xf dW5pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlza2xf c2V0X2NkY2xrKGRldl9wcml2LCBkZXZfcHJpdi0+Y2RjbGtfcGxsLnJlZiwgMCk7CisJc2tsX3Nl dF9jZGNsayhkZXZfcHJpdiwgZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiwgMCk7CiB9CiAKIHN0YXRp YyBpbnQgYnh0X2NhbGNfY2RjbGsoaW50IG1heF9waXhjbGspCkBAIC05OTQsNyArMTA0Niw3IEBA IHN0YXRpYyBpbnQgYnh0X2RlX3BsbF92Y28oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCBpbnQgY2RjbGspCiB7CiAJaW50IHJhdGlvOwogCi0JaWYgKGNkY2xrID09IGRldl9wcml2 LT5jZGNsa19wbGwucmVmKQorCWlmIChjZGNsayA9PSBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmKQog CQlyZXR1cm4gMDsKIAogCXN3aXRjaCAoY2RjbGspIHsKQEAgLTEwMTEsMTQgKzEwNjMsMTQgQEAg c3RhdGljIGludCBieHRfZGVfcGxsX3ZjbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIGludCBjZGNsaykKIAkJYnJlYWs7CiAJfQogCi0JcmV0dXJuIGRldl9wcml2LT5jZGNsa19w bGwucmVmICogcmF0aW87CisJcmV0dXJuIGRldl9wcml2LT5jZGNsay5ody5yZWYgKiByYXRpbzsK IH0KIAogc3RhdGljIGludCBnbGtfZGVfcGxsX3ZjbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIGludCBjZGNsaykKIHsKIAlpbnQgcmF0aW87CiAKLQlpZiAoY2RjbGsgPT0gZGV2 X3ByaXYtPmNkY2xrX3BsbC5yZWYpCisJaWYgKGNkY2xrID09IGRldl9wcml2LT5jZGNsay5ody5y ZWYpCiAJCXJldHVybiAwOwogCiAJc3dpdGNoIChjZGNsaykgewpAQCAtMTAzMSwxNSArMTA4Mywx NiBAQCBzdGF0aWMgaW50IGdsa19kZV9wbGxfdmNvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgaW50IGNkY2xrKQogCQlicmVhazsKIAl9CiAKLQlyZXR1cm4gZGV2X3ByaXYtPmNk Y2xrX3BsbC5yZWYgKiByYXRpbzsKKwlyZXR1cm4gZGV2X3ByaXYtPmNkY2xrLmh3LnJlZiAqIHJh dGlvOwogfQogCi1zdGF0aWMgdm9pZCBieHRfZGVfcGxsX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgdm9pZCBieHRfZGVfcGxsX3VwZGF0ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY2RjbGtf c3RhdGUgKmNkY2xrX3N0YXRlKQogewogCXUzMiB2YWw7CiAKLQlkZXZfcHJpdi0+Y2RjbGtfcGxs LnJlZiA9IDE5MjAwOwotCWRldl9wcml2LT5jZGNsa19wbGwudmNvID0gMDsKKwljZGNsa19zdGF0 ZS0+cmVmID0gMTkyMDA7CisJY2RjbGtfc3RhdGUtPnZjbyA9IDA7CiAKIAl2YWwgPSBJOTE1X1JF QUQoQlhUX0RFX1BMTF9FTkFCTEUpOwogCWlmICgodmFsICYgQlhUX0RFX1BMTF9QTExfRU5BQkxF KSA9PSAwKQpAQCAtMTA0OSwyMCArMTEwMiwyMSBAQCBzdGF0aWMgdm9pZCBieHRfZGVfcGxsX3Vw ZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCXJldHVybjsKIAogCXZh bCA9IEk5MTVfUkVBRChCWFRfREVfUExMX0NUTCk7Ci0JZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28g PSAodmFsICYgQlhUX0RFX1BMTF9SQVRJT19NQVNLKSAqCi0JCWRldl9wcml2LT5jZGNsa19wbGwu cmVmOworCWNkY2xrX3N0YXRlLT52Y28gPSAodmFsICYgQlhUX0RFX1BMTF9SQVRJT19NQVNLKSAq IGNkY2xrX3N0YXRlLT5yZWY7CiB9CiAKLXN0YXRpYyBpbnQgYnh0X2dldF9jZGNsayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCitzdGF0aWMgdm9pZCBieHRfZ2V0X2NkY2xrKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAgc3RydWN0IGludGVsX2NkY2xr X3N0YXRlICpjZGNsa19zdGF0ZSkKIHsKIAl1MzIgZGl2aWRlcjsKLQlpbnQgZGl2LCB2Y287CisJ aW50IGRpdjsKIAotCWJ4dF9kZV9wbGxfdXBkYXRlKGRldl9wcml2KTsKKwlieHRfZGVfcGxsX3Vw ZGF0ZShkZXZfcHJpdiwgY2RjbGtfc3RhdGUpOwogCi0JdmNvID0gZGV2X3ByaXYtPmNkY2xrX3Bs bC52Y287Ci0JaWYgKHZjbyA9PSAwKQotCQlyZXR1cm4gZGV2X3ByaXYtPmNkY2xrX3BsbC5yZWY7 CisJY2RjbGtfc3RhdGUtPmNkY2xrID0gY2RjbGtfc3RhdGUtPnJlZjsKKworCWlmIChjZGNsa19z dGF0ZS0+dmNvID09IDApCisJCXJldHVybjsKIAogCWRpdmlkZXIgPSBJOTE1X1JFQUQoQ0RDTEtf Q1RMKSAmIEJYVF9DRENMS19DRDJYX0RJVl9TRUxfTUFTSzsKIApAQCAtMTA4MiwxMCArMTEzNiwx MCBAQCBzdGF0aWMgaW50IGJ4dF9nZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogCQlicmVhazsKIAlkZWZhdWx0OgogCQlNSVNTSU5HX0NBU0UoZGl2aWRlcik7Ci0J CXJldHVybiBkZXZfcHJpdi0+Y2RjbGtfcGxsLnJlZjsKKwkJcmV0dXJuOwogCX0KIAotCXJldHVy biBESVZfUk9VTkRfQ0xPU0VTVCh2Y28sIGRpdik7CisJY2RjbGtfc3RhdGUtPmNkY2xrID0gRElW X1JPVU5EX0NMT1NFU1QoY2RjbGtfc3RhdGUtPnZjbywgZGl2KTsKIH0KIAogc3RhdGljIHZvaWQg Ynh0X2RlX3BsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKQEAg LTEwOTgsMTIgKzExNTIsMTIgQEAgc3RhdGljIHZvaWQgYnh0X2RlX3BsbF9kaXNhYmxlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCQkgICAgMSkpCiAJCURSTV9FUlJPUigi dGltZW91dCB3YWl0aW5nIGZvciBERSBQTEwgdW5sb2NrXG4iKTsKIAotCWRldl9wcml2LT5jZGNs a19wbGwudmNvID0gMDsKKwlkZXZfcHJpdi0+Y2RjbGsuaHcudmNvID0gMDsKIH0KIAogc3RhdGlj IHZvaWQgYnh0X2RlX3BsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCBpbnQgdmNvKQogewotCWludCByYXRpbyA9IERJVl9ST1VORF9DTE9TRVNUKHZjbywgZGV2X3By aXYtPmNkY2xrX3BsbC5yZWYpOworCWludCByYXRpbyA9IERJVl9ST1VORF9DTE9TRVNUKHZjbywg ZGV2X3ByaXYtPmNkY2xrLmh3LnJlZik7CiAJdTMyIHZhbDsKIAogCXZhbCA9IEk5MTVfUkVBRChC WFRfREVfUExMX0NUTCk7CkBAIC0xMTIxLDcgKzExNzUsNyBAQCBzdGF0aWMgdm9pZCBieHRfZGVf cGxsX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCB2Y28pCiAJ CQkJICAgIDEpKQogCQlEUk1fRVJST1IoInRpbWVvdXQgd2FpdGluZyBmb3IgREUgUExMIGxvY2tc biIpOwogCi0JZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gPSB2Y287CisJZGV2X3ByaXYtPmNkY2xr Lmh3LnZjbyA9IHZjbzsKIH0KIAogc3RhdGljIHZvaWQgYnh0X3NldF9jZGNsayhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCkBAIC0xMTQ5LDcgKzEyMDMsNyBAQCBzdGF0aWMgdm9p ZCBieHRfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJZGl2 aWRlciA9IEJYVF9DRENMS19DRDJYX0RJVl9TRUxfMTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJ V0FSTl9PTihjZGNsayAhPSBkZXZfcHJpdi0+Y2RjbGtfcGxsLnJlZik7CisJCVdBUk5fT04oY2Rj bGsgIT0gZGV2X3ByaXYtPmNkY2xrLmh3LnJlZik7CiAJCVdBUk5fT04odmNvICE9IDApOwogCiAJ CWRpdmlkZXIgPSBCWFRfQ0RDTEtfQ0QyWF9ESVZfU0VMXzE7CkBAIC0xMTY4LDExICsxMjIyLDEx IEBAIHN0YXRpYyB2b2lkIGJ4dF9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCQlyZXR1cm47CiAJfQogCi0JaWYgKGRldl9wcml2LT5jZGNsa19wbGwudmNvICE9 IDAgJiYKLQkgICAgZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gIT0gdmNvKQorCWlmIChkZXZfcHJp di0+Y2RjbGsuaHcudmNvICE9IDAgJiYKKwkgICAgZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyAhPSB2 Y28pCiAJCWJ4dF9kZV9wbGxfZGlzYWJsZShkZXZfcHJpdik7CiAKLQlpZiAoZGV2X3ByaXYtPmNk Y2xrX3BsbC52Y28gIT0gdmNvKQorCWlmIChkZXZfcHJpdi0+Y2RjbGsuaHcudmNvICE9IHZjbykK IAkJYnh0X2RlX3BsbF9lbmFibGUoZGV2X3ByaXYsIHZjbyk7CiAKIAl2YWwgPSBkaXZpZGVyIHwg c2tsX2NkY2xrX2RlY2ltYWwoY2RjbGspOwpAQCAtMTIwOSw4ICsxMjYzLDggQEAgc3RhdGljIHZv aWQgYnh0X3Nhbml0aXplX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK IAogCWludGVsX3VwZGF0ZV9jZGNsayhkZXZfcHJpdik7CiAKLQlpZiAoZGV2X3ByaXYtPmNkY2xr X3BsbC52Y28gPT0gMCB8fAotCSAgICBkZXZfcHJpdi0+Y2RjbGtfZnJlcSA9PSBkZXZfcHJpdi0+ Y2RjbGtfcGxsLnJlZikKKwlpZiAoZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyA9PSAwIHx8CisJICAg IGRldl9wcml2LT5jZGNsay5ody5jZGNsayA9PSBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmKQogCQln b3RvIHNhbml0aXplOwogCiAJLyogRFBMTCBva2F5OyB2ZXJpZnkgdGhlIGNkY2xvY2sKQEAgLTEy MjgsMTIgKzEyODIsMTIgQEAgc3RhdGljIHZvaWQgYnh0X3Nhbml0aXplX2NkY2xrKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAljZGN0bCAmPSB+QlhUX0NEQ0xLX0NEMlhfUElQ RV9OT05FOwogCiAJZXhwZWN0ZWQgPSAoY2RjdGwgJiBCWFRfQ0RDTEtfQ0QyWF9ESVZfU0VMX01B U0spIHwKLQkJICAgc2tsX2NkY2xrX2RlY2ltYWwoZGV2X3ByaXYtPmNkY2xrX2ZyZXEpOworCQlz a2xfY2RjbGtfZGVjaW1hbChkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGspOwogCS8qCiAJICogRGlz YWJsZSBTU0EgUHJlY2hhcmdlIHdoZW4gQ0QgY2xvY2sgZnJlcXVlbmN5IDwgNTAwIE1IeiwKIAkg KiBlbmFibGUgb3RoZXJ3aXNlLgogCSAqLwotCWlmIChkZXZfcHJpdi0+Y2RjbGtfZnJlcSA+PSA1 MDAwMDApCisJaWYgKGRldl9wcml2LT5jZGNsay5ody5jZGNsayA+PSA1MDAwMDApCiAJCWV4cGVj dGVkIHw9IEJYVF9DRENMS19TU0FfUFJFQ0hBUkdFX0VOQUJMRTsKIAogCWlmIChjZGN0bCA9PSBl eHBlY3RlZCkKQEAgLTEyNDQsMTAgKzEyOTgsMTAgQEAgc3RhdGljIHZvaWQgYnh0X3Nhbml0aXpl X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlEUk1fREVCVUdfS01T KCJTYW5pdGl6aW5nIGNkY2xrIHByb2dyYW1tZWQgYnkgcHJlLW9zXG4iKTsKIAogCS8qIGZvcmNl IGNkY2xrIHByb2dyYW1taW5nICovCi0JZGV2X3ByaXYtPmNkY2xrX2ZyZXEgPSAwOworCWRldl9w cml2LT5jZGNsay5ody5jZGNsayA9IDA7CiAKIAkvKiBmb3JjZSBmdWxsIFBMTCBkaXNhYmxlICsg ZW5hYmxlICovCi0JZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gPSAtMTsKKwlkZXZfcHJpdi0+Y2Rj bGsuaHcudmNvID0gLTE7CiB9CiAKIC8qKgpAQCAtMTI2NSw3ICsxMzE5LDggQEAgdm9pZCBieHRf aW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAlieHRfc2Fu aXRpemVfY2RjbGsoZGV2X3ByaXYpOwogCi0JaWYgKGRldl9wcml2LT5jZGNsa19mcmVxICE9IDAg JiYgZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28gIT0gMCkKKwlpZiAoZGV2X3ByaXYtPmNkY2xrLmh3 LmNkY2xrICE9IDAgJiYKKwkgICAgZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyAhPSAwKQogCQlyZXR1 cm47CiAKIAkvKgpAQCAtMTI5Myw3ICsxMzQ4LDIxIEBAIHZvaWQgYnh0X2luaXRfY2RjbGsoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogICovCiB2b2lkIGJ4dF91bmluaXRfY2Rj bGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCWJ4dF9zZXRfY2RjbGso ZGV2X3ByaXYsIGRldl9wcml2LT5jZGNsa19wbGwucmVmLCAwKTsKKwlieHRfc2V0X2NkY2xrKGRl dl9wcml2LCBkZXZfcHJpdi0+Y2RjbGsuaHcucmVmLCAwKTsKK30KKworLyoqCisgKiBpbnRlbF9j ZGNsa19zdGF0ZV9jb21wYXJlIC0gRGV0ZXJtaW5lIGlmIHR3byBDRENMSyBzdGF0ZXMgZGlmZmVy CisgKiBAYTogZmlyc3QgQ0RDTEsgc3RhdGUKKyAqIEBiOiBzZWNvbmQgQ0RDTEsgc3RhdGUKKyAq CisgKiBSZXR1cm5zOgorICogVHJ1ZSBpZiB0aGUgQ0RDTEsgc3RhdGVzIGFyZSBpZGVudGljYWws IGZhbHNlIGlmIHRoZXkgZGlmZmVyLgorICovCitib29sIGludGVsX2NkY2xrX3N0YXRlX2NvbXBh cmUoY29uc3Qgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICphLAorCQkJICAgICAgIGNvbnN0IHN0 cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqYikKK3sKKwlyZXR1cm4gbWVtY21wKGEsIGIsIHNpemVv ZigqYSkpID09IDA7CiB9CiAKIHN0YXRpYyBpbnQgYmR3X2FkanVzdF9taW5fcGlwZV9waXhlbF9y YXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLApAQCAtMTYwMSw3ICsxNjcw LDcgQEAgdm9pZCBpbnRlbF91cGRhdGVfbWF4X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIAkJZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxID0gNDAwMDAwOwogCX0gZWxz ZSB7CiAJCS8qIG90aGVyd2lzZSBhc3N1bWUgY2RjbGsgaXMgZml4ZWQgKi8KLQkJZGV2X3ByaXYt Pm1heF9jZGNsa19mcmVxID0gZGV2X3ByaXYtPmNkY2xrX2ZyZXE7CisJCWRldl9wcml2LT5tYXhf Y2RjbGtfZnJlcSA9IGRldl9wcml2LT5jZGNsay5ody5jZGNsazsKIAl9CiAKIAlkZXZfcHJpdi0+ bWF4X2RvdGNsa19mcmVxID0gaW50ZWxfY29tcHV0ZV9tYXhfZG90Y2xrKGRldl9wcml2KTsKQEAg LTE2MjEsMTUgKzE2OTAsMTEgQEAgdm9pZCBpbnRlbF91cGRhdGVfbWF4X2NkY2xrKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKICAqLwogdm9pZCBpbnRlbF91cGRhdGVfY2RjbGso c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCWRldl9wcml2LT5jZGNsa19m cmVxID0gZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NkY2xrKGRldl9wcml2KTsKKwlkZXZfcHJpdi0+ ZGlzcGxheS5nZXRfY2RjbGsoZGV2X3ByaXYsICZkZXZfcHJpdi0+Y2RjbGsuaHcpOwogCi0JaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKLQkJRFJNX0RFQlVHX0RSSVZFUigiQ3VycmVudCBD RCBjbG9jayByYXRlOiAlZCBrSHosIFZDTzogJWQga0h6LCByZWY6ICVkIGtIelxuIiwKLQkJCQkg ZGV2X3ByaXYtPmNkY2xrX2ZyZXEsIGRldl9wcml2LT5jZGNsa19wbGwudmNvLAotCQkJCSBkZXZf cHJpdi0+Y2RjbGtfcGxsLnJlZik7Ci0JZWxzZQotCQlEUk1fREVCVUdfRFJJVkVSKCJDdXJyZW50 IENEIGNsb2NrIHJhdGU6ICVkIGtIelxuIiwKLQkJCQkgZGV2X3ByaXYtPmNkY2xrX2ZyZXEpOwor CURSTV9ERUJVR19EUklWRVIoIkN1cnJlbnQgQ0QgY2xvY2sgcmF0ZTogJWQga0h6LCBWQ086ICVk IGtIeiwgcmVmOiAlZCBrSHpcbiIsCisJCQkgZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrLCBkZXZf cHJpdi0+Y2RjbGsuaHcudmNvLAorCQkJIGRldl9wcml2LT5jZGNsay5ody5yZWYpOwogCiAJLyoK IAkgKiA5OjAgQ01CVVMgW3NpY10gQ0RDTEsgZnJlcXVlbmN5IChjZGZyZXEpOgpAQCAtMTYzOSw3 ICsxNzA0LDcgQEAgdm9pZCBpbnRlbF91cGRhdGVfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCSAqLwogCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJU19D SEVSUllWSUVXKGRldl9wcml2KSkKIAkJSTkxNV9XUklURShHTUJVU0ZSRVFfVkxWLAotCQkJICAg RElWX1JPVU5EX1VQKGRldl9wcml2LT5jZGNsa19mcmVxLCAxMDAwKSk7CisJCQkgICBESVZfUk9V TkRfVVAoZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrLCAxMDAwKSk7CiB9CiAKIHN0YXRpYyBpbnQg cGNoX3Jhd2NsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggM2Y2Y2U2M2U4OTI5Li4yOWMwN2E3MmMxMGMgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTEzNSw3ICsxMzUsNyBAQCBzdHJ1 Y3QgaW50ZWxfbGltaXQgewogfTsKIAogLyogcmV0dXJucyBIUExMIGZyZXF1ZW5jeSBpbiBrSHog Ki8KLXN0YXRpYyBpbnQgdmFsbGV5dmlld19nZXRfdmNvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKK2ludCB2bHZfZ2V0X2hwbGxfdmNvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIHsKIAlpbnQgaHBsbF9mcmVxLCB2Y29fZnJlcVtdID0geyA4MDAsIDE2MDAs IDIwMDAsIDI0MDAgfTsKIApAQCAtMTcxLDcgKzE3MSw3IEBAIGludCB2bHZfZ2V0X2Nja19jbG9j a19ocGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAgIGNvbnN0IGNo YXIgKm5hbWUsIHUzMiByZWcpCiB7CiAJaWYgKGRldl9wcml2LT5ocGxsX2ZyZXEgPT0gMCkKLQkJ ZGV2X3ByaXYtPmhwbGxfZnJlcSA9IHZhbGxleXZpZXdfZ2V0X3ZjbyhkZXZfcHJpdik7CisJCWRl dl9wcml2LT5ocGxsX2ZyZXEgPSB2bHZfZ2V0X2hwbGxfdmNvKGRldl9wcml2KTsKIAogCXJldHVy biB2bHZfZ2V0X2Nja19jbG9jayhkZXZfcHJpdiwgbmFtZSwgcmVnLAogCQkJCSBkZXZfcHJpdi0+ aHBsbF9mcmVxKTsKQEAgLTEyMzkwLDcgKzEyMzkwLDcgQEAgc3RhdGljIGludCBpbnRlbF9tb2Rl c2V0X2NoZWNrcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJICovCiAJaWYgKGRl dl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfY2FsY19jZGNsaykgewogCQlpZiAoIWludGVsX3N0YXRl LT5jZGNsa19wbGxfdmNvKQotCQkJaW50ZWxfc3RhdGUtPmNkY2xrX3BsbF92Y28gPSBkZXZfcHJp di0+Y2RjbGtfcGxsLnZjbzsKKwkJCWludGVsX3N0YXRlLT5jZGNsa19wbGxfdmNvID0gZGV2X3By aXYtPmNkY2xrLmh3LnZjbzsKIAkJaWYgKCFpbnRlbF9zdGF0ZS0+Y2RjbGtfcGxsX3ZjbykKIAkJ CWludGVsX3N0YXRlLT5jZGNsa19wbGxfdmNvID0gZGV2X3ByaXYtPnNrbF9wcmVmZXJyZWRfdmNv X2ZyZXE7CiAKQEAgLTEyNDEwLDggKzEyNDEwLDggQEAgc3RhdGljIGludCBpbnRlbF9tb2Rlc2V0 X2NoZWNrcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJCX0KIAogCQkvKiBBbGwg cGlwZXMgbXVzdCBiZSBzd2l0Y2hlZCBvZmYgd2hpbGUgd2UgY2hhbmdlIHRoZSBjZGNsay4gKi8K LQkJaWYgKGludGVsX3N0YXRlLT5kZXZfY2RjbGsgIT0gZGV2X3ByaXYtPmNkY2xrX2ZyZXEgfHwK LQkJICAgIGludGVsX3N0YXRlLT5jZGNsa19wbGxfdmNvICE9IGRldl9wcml2LT5jZGNsa19wbGwu dmNvKSB7CisJCWlmIChpbnRlbF9zdGF0ZS0+ZGV2X2NkY2xrICE9IGRldl9wcml2LT5jZGNsay5o dy5jZGNsayB8fAorCQkgICAgaW50ZWxfc3RhdGUtPmNkY2xrX3BsbF92Y28gIT0gZGV2X3ByaXYt PmNkY2xrLmh3LnZjbykgewogCQkJcmV0ID0gaW50ZWxfbW9kZXNldF9hbGxfcGlwZXMoc3RhdGUp OwogCQkJaWYgKHJldCA8IDApCiAJCQkJcmV0dXJuIHJldDsKQEAgLTEyODI4LDggKzEyODI4LDgg QEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKIAkJZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX2xlZ2FjeV9tb2Rlc2V0 X3N0YXRlKHN0YXRlLT5kZXYsIHN0YXRlKTsKIAogCQlpZiAoZGV2X3ByaXYtPmRpc3BsYXkubW9k ZXNldF9jb21taXRfY2RjbGsgJiYKLQkJICAgIChpbnRlbF9zdGF0ZS0+ZGV2X2NkY2xrICE9IGRl dl9wcml2LT5jZGNsa19mcmVxIHx8Ci0JCSAgICAgaW50ZWxfc3RhdGUtPmNkY2xrX3BsbF92Y28g IT0gZGV2X3ByaXYtPmNkY2xrX3BsbC52Y28pKQorCQkgICAgKGludGVsX3N0YXRlLT5kZXZfY2Rj bGsgIT0gZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrIHx8CisJCSAgICAgaW50ZWxfc3RhdGUtPmNk Y2xrX3BsbF92Y28gIT0gZGV2X3ByaXYtPmNkY2xrLmh3LnZjbykpCiAJCQlkZXZfcHJpdi0+ZGlz cGxheS5tb2Rlc2V0X2NvbW1pdF9jZGNsayhzdGF0ZSk7CiAKIAkJLyoKQEAgLTE0ODA2LDcgKzE0 ODA2LDcgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X2luaXRfaHcoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKIAogCWludGVsX3VwZGF0ZV9jZGNsayhkZXZfcHJpdik7CiAKLQlkZXZfcHJpdi0+YXRvbWlj X2NkY2xrX2ZyZXEgPSBkZXZfcHJpdi0+Y2RjbGtfZnJlcTsKKwlkZXZfcHJpdi0+YXRvbWljX2Nk Y2xrX2ZyZXEgPSBkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGs7CiAKIAlpbnRlbF9pbml0X2Nsb2Nr X2dhdGluZyhkZXZfcHJpdik7CiB9CkBAIC0xNDk3OSw3ICsxNDk3OSw3IEBAIGludCBpbnRlbF9t b2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogCWludGVsX3VwZGF0ZV9jemNs ayhkZXZfcHJpdik7CiAJaW50ZWxfdXBkYXRlX2NkY2xrKGRldl9wcml2KTsKLQlkZXZfcHJpdi0+ YXRvbWljX2NkY2xrX2ZyZXEgPSBkZXZfcHJpdi0+Y2RjbGtfZnJlcTsKKwlkZXZfcHJpdi0+YXRv bWljX2NkY2xrX2ZyZXEgPSBkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGs7CiAKIAlpbnRlbF9zaGFy ZWRfZHBsbF9pbml0KGRldik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCmluZGV4IGU4MGQ2MjA4 NDZjOC4uYjQ5YjMyMjFjZWFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKQEAgLTkxNiw3ICs5 MTYsNyBAQCBzdGF0aWMgdWludDMyX3QgaWxrX2dldF9hdXhfY2xvY2tfZGl2aWRlcihzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLCBpbnQgaW5kZXgpCiAJICogZGl2aWRlIGJ5IDIwMDAgYW5kIHVz ZSB0aGF0CiAJICovCiAJaWYgKGludGVsX2RpZ19wb3J0LT5wb3J0ID09IFBPUlRfQSkKLQkJcmV0 dXJuIERJVl9ST1VORF9DTE9TRVNUKGRldl9wcml2LT5jZGNsa19mcmVxLCAyMDAwKTsKKwkJcmV0 dXJuIERJVl9ST1VORF9DTE9TRVNUKGRldl9wcml2LT5jZGNsay5ody5jZGNsaywgMjAwMCk7CiAJ ZWxzZQogCQlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QoZGV2X3ByaXYtPnJhd2Nsa19mcmVxLCAy MDAwKTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggMGE0ODEwZDNmMzNiLi43NTcz YzI0ZmFlYzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0xMjM3LDEwICsxMjM3LDEz IEBAIHZvaWQgaW50ZWxfaW5pdF9jZGNsa19ob29rcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOwogdm9pZCBpbnRlbF91cGRhdGVfbWF4X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGludGVsX3VwZGF0ZV9jZGNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpbnRlbF91cGRhdGVfcmF3Y2xrKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Citib29sIGludGVsX2NkY2xrX3N0YXRlX2NvbXBh cmUoY29uc3Qgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICphLAorCQkJICAgICAgIGNvbnN0IHN0 cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqYik7CiAKIC8qIGludGVsX2Rpc3BsYXkuYyAqLwogZW51 bSB0cmFuc2NvZGVyIGludGVsX2NydGNfcGNoX3RyYW5zY29kZXIoc3RydWN0IGludGVsX2NydGMg KmNydGMpOwogdm9pZCBpbnRlbF91cGRhdGVfcmF3Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7CitpbnQgdmx2X2dldF9ocGxsX3ZjbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwogaW50IHZsdl9nZXRfY2NrX2Nsb2NrKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAkJICAgICAgY29uc3QgY2hhciAqbmFtZSwgdTMyIHJlZywgaW50IHJl Zl9mcmVxKTsKIGludCB2bHZfZ2V0X2Nja19jbG9ja19ocGxsKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Zi Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKaW5kZXggMmI0YzE3NjUxMGQ0 Li4xZmRmYzkzZTlhODcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Zi Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCkBAIC04MTgsNyArODE4 LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfZmJjX2Nhbl9hY3RpdmF0ZShzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YykKIAogCS8qIFdhRmJjRXhjZWVkQ2RDbG9ja1RocmVzaG9sZDpoc3csYmR3ICovCiAJ aWYgKChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSAmJgot CSAgICBjYWNoZS0+Y3J0Yy5oc3dfYmR3X3BpeGVsX3JhdGUgPj0gZGV2X3ByaXYtPmNkY2xrX2Zy ZXEgKiA5NSAvIDEwMCkgeworCSAgICBjYWNoZS0+Y3J0Yy5oc3dfYmR3X3BpeGVsX3JhdGUgPj0g ZGV2X3ByaXYtPmNkY2xrLmh3LmNkY2xrICogOTUgLyAxMDApIHsKIAkJZmJjLT5ub19mYmNfcmVh c29uID0gInBpeGVsIHJhdGUgaXMgdG9vIGJpZyI7CiAJCXJldHVybiBmYWxzZTsKIAl9CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwppbmRleCAxYTZmZjI2ZGVhMjAuLmNiNTBjNTI3NDAxZiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCkBAIC0xMzE1LDcgKzEzMTUsNyBAQCBzdGF0 aWMgdTMyIGk5eHhfaHpfdG9fcHdtKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvciwg dTMyIHB3bV9mcmVxX2h6KQogCWlmIChJU19QSU5FVklFVyhkZXZfcHJpdikpCiAJCWNsb2NrID0g S0h6KGRldl9wcml2LT5yYXdjbGtfZnJlcSk7CiAJZWxzZQotCQljbG9jayA9IEtIeihkZXZfcHJp di0+Y2RjbGtfZnJlcSk7CisJCWNsb2NrID0gS0h6KGRldl9wcml2LT5jZGNsay5ody5jZGNsayk7 CiAKIAlyZXR1cm4gRElWX1JPVU5EX0NMT1NFU1QoY2xvY2ssIHB3bV9mcmVxX2h6ICogMzIpOwog fQpAQCAtMTMzMyw3ICsxMzMzLDcgQEAgc3RhdGljIHUzMiBpOTY1X2h6X3RvX3B3bShzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIHUzMiBwd21fZnJlcV9oeikKIAlpZiAoSVNfRzRY KGRldl9wcml2KSkKIAkJY2xvY2sgPSBLSHooZGV2X3ByaXYtPnJhd2Nsa19mcmVxKTsKIAllbHNl Ci0JCWNsb2NrID0gS0h6KGRldl9wcml2LT5jZGNsa19mcmVxKTsKKwkJY2xvY2sgPSBLSHooZGV2 X3ByaXYtPmNkY2xrLmh3LmNkY2xrKTsKIAogCXJldHVybiBESVZfUk9VTkRfQ0xPU0VTVChjbG9j aywgcHdtX2ZyZXFfaHogKiAxMjgpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcnVudGltZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGlt ZV9wbS5jCmluZGV4IDZkNWVmZWIzNTgyMy4uMTRiYmVjYzhmMmVkIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCkBAIC05NjQsOSArOTY0LDEyIEBAIHN0YXRpYyB2b2lk IGdlbjlfYXNzZXJ0X2RidWZfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiBzdGF0aWMgdm9pZCBnZW45X2RjX29mZl9wb3dlcl93ZWxsX2VuYWJsZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJCSAgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAq cG93ZXJfd2VsbCkKIHsKKwlzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgY2RjbGtfc3RhdGUgPSB7 fTsKKwogCWdlbjlfc2V0X2RjX3N0YXRlKGRldl9wcml2LCBEQ19TVEFURV9ESVNBQkxFKTsKIAot CVdBUk5fT04oZGV2X3ByaXYtPmNkY2xrX2ZyZXEgIT0gZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2Nk Y2xrKGRldl9wcml2KSk7CisJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2NkY2xrKGRldl9wcml2LCAm Y2RjbGtfc3RhdGUpOworCVdBUk5fT04oIWludGVsX2NkY2xrX3N0YXRlX2NvbXBhcmUoJmRldl9w cml2LT5jZGNsay5odywgJmNkY2xrX3N0YXRlKSk7CiAKIAlnZW45X2Fzc2VydF9kYnVmX2VuYWJs ZWQoZGV2X3ByaXYpOwogCi0tIAoyLjEwLjIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=