From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Herrenschmidt Subject: [PATCH 2/2] drm/ast: Support AST2500 Date: Thu, 16 Feb 2017 20:09:09 +1100 Message-ID: <1487236149.23576.67.camel@kernel.crashing.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from gate.crashing.org (gate.crashing.org [63.228.1.57]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3E1496EA74 for ; Thu, 16 Feb 2017 09:42:44 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: airlied@redhat.com, eich@suse.com List-Id: dri-devel@lists.freedesktop.org RnJvbTogIlkuQy4gQ2hlbiIgPHljX2NoZW5AYXNwZWVkdGVjaC5jb20+CgpBZGQgZGV0ZWN0aW9u IGFuZCBQT1NUIGNvZGUgZm9yIEFTVDI1MDAgZ2VuZXJhdGlvbiBjaGlwLApjb2RlIG9yaWdpbmFs bHkgZnJvbSBBc3BlZWQgYW5kIHNsaWdodGx5IHJld29ya2VkIGZvcgpjb2Rpbmcgc3R5bGUgbW9z dGx5IGJ5IEJlbi4KClNpZ25lZC1vZmYtYnk6IFkuQy4gQ2hlbiA8eWNfY2hlbkBhc3BlZWR0ZWNo LmNvbT4KU2lnbmVkLW9mZi1ieTogQmVuamFtaW4gSGVycmVuc2NobWlkdCA8YmVuaEBrZXJuZWwu Y3Jhc2hpbmcub3JnPgotLS0KdjIuIFtCZW5IXQogIC0gQ29kaW5nIHN0eWxlIGZpeGVzCiAgLSBB ZGQgdGltZW91dCB0byBtYWluIERSQU0gaW5pdCBsb29wCiAgLSBJbXByb3ZlIGJvb3QgdGltZSBk aXNwbGF5IG9mIFJBTSBpbmZvCgpZLkMuIFBsZWFzZSBjaGVjayB0aGF0IEkgZGlkbid0IGJyZWFr IFBPU1QgYXMgSSBoYXZlbid0IG1hbmFnZSB0byB0ZXN0CnRoYXQgKHdlIGNhbid0IGJvb3Qgb3Vy IG1hY2hpbmVzIGlmIHRoZSBCTUMgaXNuJ3QgYWxyZWFkeSBQT1NUZWQpLgoKLS0tCiBkcml2ZXJz L2dwdS9kcm0vYXN0L2FzdF9kcmFtX3RhYmxlcy5oIHwgIDYyICsrKysrCiBkcml2ZXJzL2dwdS9k cm0vYXN0L2FzdF9kcnYuaCAgICAgICAgIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0 X21haW4uYyAgICAgICAgfCAgMzIgKystCiBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMg ICAgICAgIHwgIDI1ICstCiBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9wb3N0LmMgICAgICAgIHwg NDkxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9h c3QvYXN0X3RhYmxlcy5oICAgICAgfCAgNTcgKysrLQogNiBmaWxlcyBjaGFuZ2VkLCA1ODYgaW5z ZXJ0aW9ucygrKSwgODQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FzdC9hc3RfZHJhbV90YWJsZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2RyYW1fdGFi bGVzLmgKaW5kZXggY2MwNDUzOS4uMDIyNjViNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FzdC9hc3RfZHJhbV90YWJsZXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcmFt X3RhYmxlcy5oCkBAIC0xNDEsNCArMTQxLDY2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXN0X2Ry YW1zdHJ1Y3QgYXN0MjEwMF9kcmFtX3RhYmxlX2RhdGFbXSA9IHsKIAl7IDB4ZmZmZiwgMHhmZmZm ZmZmZiB9LAogfTsKIAorLyoKKyAqIEFTVDI1MDAgRFJBTSBzZXR0aW5ncyBtb2R1bGVzCisgKi8K KyNkZWZpbmUgUkVHVEJMX05VTSAgICAgICAgICAgMTcKKyNkZWZpbmUgUkVHSURYXzAxMCAgICAg ICAgICAgMAorI2RlZmluZSBSRUdJRFhfMDE0ICAgICAgICAgICAxCisjZGVmaW5lIFJFR0lEWF8w MTggICAgICAgICAgIDIKKyNkZWZpbmUgUkVHSURYXzAyMCAgICAgICAgICAgMworI2RlZmluZSBS RUdJRFhfMDI0ICAgICAgICAgICA0CisjZGVmaW5lIFJFR0lEWF8wMkMgICAgICAgICAgIDUKKyNk ZWZpbmUgUkVHSURYXzAzMCAgICAgICAgICAgNgorI2RlZmluZSBSRUdJRFhfMjE0ICAgICAgICAg ICA3CisjZGVmaW5lIFJFR0lEWF8yRTAgICAgICAgICAgIDgKKyNkZWZpbmUgUkVHSURYXzJFNCAg ICAgICAgICAgOQorI2RlZmluZSBSRUdJRFhfMkU4ICAgICAgICAgICAxMAorI2RlZmluZSBSRUdJ RFhfMkVDICAgICAgICAgICAxMQorI2RlZmluZSBSRUdJRFhfMkYwICAgICAgICAgICAxMgorI2Rl ZmluZSBSRUdJRFhfMkY0ICAgICAgICAgICAxMworI2RlZmluZSBSRUdJRFhfMkY4ICAgICAgICAg ICAxNAorI2RlZmluZSBSRUdJRFhfUkZDICAgICAgICAgICAxNQorI2RlZmluZSBSRUdJRFhfUExM ICAgICAgICAgICAxNgorCitzdGF0aWMgdTMyIGFzdDI1MDBfZGRyM18xNjAwX3RpbWluZ190YWJs ZVtSRUdUQkxfTlVNXSA9IHsKKwkweDY0NjA0RDM4LCAgICAgICAgICAgICAgICAgIC8qIDB4MDEw ICovCisJMHgyOTY5MDU5OSwgICAgICAgICAgICAgICAgICAvKiAweDAxNCAqLworCTB4MDAwMDAz MDAsICAgICAgICAgICAgICAgICAgLyogMHgwMTggKi8KKwkweDAwMDAwMDAwLCAgICAgICAgICAg ICAgICAgIC8qIDB4MDIwICovCisJMHgwMDAwMDAwMCwgICAgICAgICAgICAgICAgICAvKiAweDAy NCAqLworCTB4MDIxODFFNzAsICAgICAgICAgICAgICAgICAgLyogMHgwMkMgKi8KKwkweDAwMDAw MDQwLCAgICAgICAgICAgICAgICAgIC8qIDB4MDMwICovCisJMHgwMDAwMDAyNCwgICAgICAgICAg ICAgICAgICAvKiAweDIxNCAqLworCTB4MDIwMDEzMDAsICAgICAgICAgICAgICAgICAgLyogMHgy RTAgKi8KKwkweDBFMDAwMEEwLCAgICAgICAgICAgICAgICAgIC8qIDB4MkU0ICovCisJMHgwMDBF MDAxQiwgICAgICAgICAgICAgICAgICAvKiAweDJFOCAqLworCTB4MzVCOEMxMDUsICAgICAgICAg ICAgICAgICAgLyogMHgyRUMgKi8KKwkweDA4MDkwNDA4LCAgICAgICAgICAgICAgICAgIC8qIDB4 MkYwICovCisJMHg5QjAwMDgwMCwgICAgICAgICAgICAgICAgICAvKiAweDJGNCAqLworCTB4MEU0 MDBBMDAsICAgICAgICAgICAgICAgICAgLyogMHgyRjggKi8KKwkweDk5NzE0NTJGLCAgICAgICAg ICAgICAgICAgIC8qIHRSRkMgICovCisJMHgwMDAwNzFDMQkJICAgICAvKiBQTEwgICAqLworfTsK Kworc3RhdGljIHUzMiBhc3QyNTAwX2RkcjRfMTYwMF90aW1pbmdfdGFibGVbUkVHVEJMX05VTV0g PSB7CisJMHg2MzYwNEUzNywgICAgICAgICAgICAgICAgICAvKiAweDAxMCAqLworCTB4RTk3QUZB OTksICAgICAgICAgICAgICAgICAgLyogMHgwMTQgKi8KKwkweDAwMDE5MDAwLCAgICAgICAgICAg ICAgICAgIC8qIDB4MDE4ICovCisJMHgwODAwMDAwMCwgICAgICAgICAgICAgICAgICAvKiAweDAy MCAqLworCTB4MDAwMDA0MDAsICAgICAgICAgICAgICAgICAgLyogMHgwMjQgKi8KKwkweDAwMDAw NDEwLCAgICAgICAgICAgICAgICAgIC8qIDB4MDJDICovCisJMHgwMDAwMDEwMSwgICAgICAgICAg ICAgICAgICAvKiAweDAzMCAqLworCTB4MDAwMDAwMjQsICAgICAgICAgICAgICAgICAgLyogMHgy MTQgKi8KKwkweDAzMDAyOTAwLCAgICAgICAgICAgICAgICAgIC8qIDB4MkUwICovCisJMHgwRTAw MDBBMCwgICAgICAgICAgICAgICAgICAvKiAweDJFNCAqLworCTB4MDAwRTAwMUMsICAgICAgICAg ICAgICAgICAgLyogMHgyRTggKi8KKwkweDM1QjhDMTA2LCAgICAgICAgICAgICAgICAgIC8qIDB4 MkVDICovCisJMHgwODA4MDYwNywgICAgICAgICAgICAgICAgICAvKiAweDJGMCAqLworCTB4OUIw MDA5MDAsICAgICAgICAgICAgICAgICAgLyogMHgyRjQgKi8KKwkweDBFNDAwQTAwLCAgICAgICAg ICAgICAgICAgIC8qIDB4MkY4ICovCisJMHg5OTcxNDU0NSwgICAgICAgICAgICAgICAgICAvKiB0 UkZDICAqLworCTB4MDAwMDcxQzEgICAgICAgICAgICAgICAgICAgLyogUExMICAgKi8KK307CisK ICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaAppbmRleCAzYmVkY2Y3Li4yZGI5N2UyIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v YXN0L2FzdF9kcnYuaApAQCAtNjQsNiArNjQsNyBAQCBlbnVtIGFzdF9jaGlwIHsKIAlBU1QyMTUw LAogCUFTVDIzMDAsCiAJQVNUMjQwMCwKKwlBU1QyNTAwLAogCUFTVDExODAsCiB9OwogCkBAIC04 MCw2ICs4MSw3IEBAIGVudW0gYXN0X3R4X2NoaXAgewogI2RlZmluZSBBU1RfRFJBTV8xR3gzMiAg IDMKICNkZWZpbmUgQVNUX0RSQU1fMkd4MTYgICA2CiAjZGVmaW5lIEFTVF9EUkFNXzRHeDE2ICAg NworI2RlZmluZSBBU1RfRFJBTV84R3gxNiAgIDgKIAogc3RydWN0IGFzdF9mYmRldjsKIApAQCAt Mzk3LDYgKzM5OSw3IEBAIGJvb2wgYXN0X2lzX3ZnYV9lbmFibGVkKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOwogdm9pZCBhc3RfcG9zdF9ncHUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB1MzIg YXN0X21pbmR3bShzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCwgdTMyIHIpOwogdm9pZCBhc3RfbW91 dGR3bShzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCwgdTMyIHIsIHUzMiB2KTsKKwogLyogYXN0IGRw NTAxICovCiBpbnQgYXN0X2xvYWRfZHA1MDFfbWljcm9jb2RlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOwogdm9pZCBhc3Rfc2V0X2RwNTAxX3ZpZGVvX291dHB1dChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB1OCBtb2RlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4u YyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYwppbmRleCBkNDJhNGY1Li42MGYyM2Nj IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tYWluLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jCkBAIC0zMiw4ICszMiw2IEBACiAjaW5jbHVkZSA8ZHJt L2RybV9mYl9oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+CiAKLSNp bmNsdWRlICJhc3RfZHJhbV90YWJsZXMuaCIKLQogdm9pZCBhc3Rfc2V0X2luZGV4X3JlZ19tYXNr KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0LAogCQkJICAgIHVpbnQzMl90IGJhc2UsIHVpbnQ4X3Qg aW5kZXgsCiAJCQkgICAgdWludDhfdCBtYXNrLCB1aW50OF90IHZhbCkKQEAgLTEwNiw3ICsxMDQs MTAgQEAgc3RhdGljIGludCBhc3RfZGV0ZWN0X2NoaXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg Ym9vbCAqbmVlZF9wb3N0KQogCQlhc3QtPmNoaXAgPSBBU1QxMTAwOwogCQlEUk1fSU5GTygiQVNU IDExODAgZGV0ZWN0ZWRcbiIpOwogCX0gZWxzZSB7Ci0JCWlmIChkZXYtPnBkZXYtPnJldmlzaW9u ID49IDB4MzApIHsKKwkJaWYgKGRldi0+cGRldi0+cmV2aXNpb24gPj0gMHg0MCkgeworCQkJYXN0 LT5jaGlwID0gQVNUMjUwMDsKKwkJCURSTV9JTkZPKCJBU1QgMjUwMCBkZXRlY3RlZFxuIik7CisJ CX0gZWxzZSBpZiAoZGV2LT5wZGV2LT5yZXZpc2lvbiA+PSAweDMwKSB7CiAJCQlhc3QtPmNoaXAg PSBBU1QyNDAwOwogCQkJRFJNX0lORk8oIkFTVCAyNDAwIGRldGVjdGVkXG4iKTsKIAkJfSBlbHNl IGlmIChkZXYtPnBkZXYtPnJldmlzaW9uID49IDB4MjApIHsKQEAgLTE3NCw2ICsxNzUsOSBAQCBz dGF0aWMgaW50IGFzdF9kZXRlY3RfY2hpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sICpu ZWVkX3Bvc3QpCiAJCQlpZiAoYXN0LT5jaGlwID09IEFTVDI0MDAgJiYKIAkJCSAgICAoc2N1X3Jl diAmIDB4MzAwKSA9PSAweDEwMCkgLyogYXN0MTQwMCAqLwogCQkJCWFzdC0+c3VwcG9ydF93aWRl X3NjcmVlbiA9IHRydWU7CisJCQlpZiAoYXN0LT5jaGlwID09IEFTVDI1MDAgJiYKKwkJCSAgICBz Y3VfcmV2ID09IDB4MTAwKSAgICAgICAgICAgLyogYXN0MjUxMCAqLworCQkJCWFzdC0+c3VwcG9y dF93aWRlX3NjcmVlbiA9IHRydWU7CiAJCX0KIAkJYnJlYWs7CiAJfQpAQCAtMjc2LDcgKzI4MCwy MyBAQCBzdGF0aWMgaW50IGFzdF9nZXRfZHJhbV9pbmZvKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp CiAJZWxzZQogCQlhc3QtPmRyYW1fYnVzX3dpZHRoID0gMzI7CiAKLQlpZiAoYXN0LT5jaGlwID09 IEFTVDIzMDAgfHwgYXN0LT5jaGlwID09IEFTVDI0MDApIHsKKwlpZiAoYXN0LT5jaGlwID09IEFT VDI1MDApIHsKKwkJc3dpdGNoIChtY3JfY2ZnICYgMHgwMykgeworCQljYXNlIDA6CisJCQlhc3Qt PmRyYW1fdHlwZSA9IEFTVF9EUkFNXzFHeDE2OworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCWNh c2UgMToKKwkJCWFzdC0+ZHJhbV90eXBlID0gQVNUX0RSQU1fMkd4MTY7CisJCQlicmVhazsKKwkJ Y2FzZSAyOgorCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV80R3gxNjsKKwkJCWJyZWFrOwor CQljYXNlIDM6CisJCQlhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFNXzhHeDE2OworCQkJYnJlYWs7 CisJCX0KKwl9IGVsc2UgaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwIHx8IGFzdC0+Y2hpcCA9PSBB U1QyNDAwKSB7CiAJCXN3aXRjaCAobWNyX2NmZyAmIDB4MDMpIHsKIAkJY2FzZSAwOgogCQkJYXN0 LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV81MTJNeDE2OwpAQCAtNDc0LDcgKzQ5NCw4IEBAIGludCBh c3RfZHJpdmVyX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBmbGFn cykKIAkJaWYgKHJldCkKIAkJCWdvdG8gb3V0X2ZyZWU7CiAJCWFzdC0+dnJhbV9zaXplID0gYXN0 X2dldF92cmFtX2luZm8oZGV2KTsKLQkJRFJNX0lORk8oImRyYW0gJWQgJWQgJWQgJTA4eFxuIiwg YXN0LT5tY2xrLCBhc3QtPmRyYW1fdHlwZSwgYXN0LT5kcmFtX2J1c193aWR0aCwgYXN0LT52cmFt X3NpemUpOworCQlEUk1fSU5GTygiZHJhbSBNQ0xLPSV1IHR5cGU9JWQgYnVzX3dpZHRoPSVkIHNp emU9JTA4eFxuIiwKKwkJCSBhc3QtPm1jbGssIGFzdC0+ZHJhbV90eXBlLCBhc3QtPmRyYW1fYnVz X3dpZHRoLCBhc3QtPnZyYW1fc2l6ZSk7CiAJfQogCiAJaWYgKG5lZWRfcG9zdCkKQEAgLTQ5Nyw2 ICs1MTgsNyBAQCBpbnQgYXN0X2RyaXZlcl9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVu c2lnbmVkIGxvbmcgZmxhZ3MpCiAJICAgIGFzdC0+Y2hpcCA9PSBBU1QyMjAwIHx8CiAJICAgIGFz dC0+Y2hpcCA9PSBBU1QyMzAwIHx8CiAJICAgIGFzdC0+Y2hpcCA9PSBBU1QyNDAwIHx8CisJICAg IGFzdC0+Y2hpcCA9PSBBU1QyNTAwIHx8CiAJICAgIGFzdC0+Y2hpcCA9PSBBU1QxMTgwKSB7CiAJ CWRldi0+bW9kZV9jb25maWcubWF4X3dpZHRoID0gMTkyMDsKIAkJZGV2LT5tb2RlX2NvbmZpZy5t YXhfaGVpZ2h0ID0gMjA0ODsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21v ZGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21vZGUuYwppbmRleCBlMjZjOThmLi4wMmJl YmY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FzdC9hc3RfbW9kZS5jCkBAIC0yNzEsNyArMjcxLDEwIEBAIHN0YXRpYyB2 b2lkIGFzdF9zZXRfY3J0Y19yZWcoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqbW9kCiB7CiAJc3RydWN0IGFzdF9wcml2YXRlICphc3QgPSBjcnRjLT5kZXYt PmRldl9wcml2YXRlOwogCXU4IGpyZWcwNSA9IDAsIGpyZWcwNyA9IDAsIGpyZWcwOSA9IDAsIGpy ZWdBQyA9IDAsIGpyZWdBRCA9IDAsIGpyZWdBRSA9IDA7Ci0JdTE2IHRlbXA7CisJdTE2IHRlbXAs IHByZWNhY2hlID0gMDsKKworCWlmICgoYXN0LT5jaGlwID09IEFTVDI1MDApICYmICh2Ymlvc19t b2RlLT5lbmhfdGFibGUtPmZsYWdzICYgQVNUMjUwMFByZUNhdGNoQ1JUKSkKKwkJcHJlY2FjaGUg PSA0MDsKIAogCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAw eDExLCAweDdmLCAweDAwKTsKIApAQCAtMjk3LDEyICszMDAsMTIgQEAgc3RhdGljIHZvaWQgYXN0 X3NldF9jcnRjX3JlZyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2QKIAkJanJlZ0FEIHw9IDB4MDE7ICAvKiBIQkUgRFs1XSAqLwogCWFzdF9zZXRfaW5k ZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweDAzLCAweEUwLCAodGVtcCAmIDB4 MWYpKTsKIAotCXRlbXAgPSAobW9kZS0+Y3J0Y19oc3luY19zdGFydCA+PiAzKSAtIDE7CisJdGVt cCA9ICgobW9kZS0+Y3J0Y19oc3luY19zdGFydC1wcmVjYWNoZSkgPj4gMykgLSAxOwogCWlmICh0 ZW1wICYgMHgxMDApCiAJCWpyZWdBQyB8PSAweDQwOyAvKiBIUlMgRFs1XSAqLwogCWFzdF9zZXRf aW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweDA0LCAweDAwLCB0ZW1wKTsK IAotCXRlbXAgPSAoKG1vZGUtPmNydGNfaHN5bmNfZW5kID4+IDMpIC0gMSkgJiAweDNmOworCXRl bXAgPSAoKChtb2RlLT5jcnRjX2hzeW5jX2VuZC1wcmVjYWNoZSkgPj4gMykgLSAxKSAmIDB4M2Y7 CiAJaWYgKHRlbXAgJiAweDIwKQogCQlqcmVnQUQgfD0gMHgwNDsgLyogSFJFIERbNV0gKi8KIAlh c3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHgwNSwgMHg2MCwg KHU4KSgodGVtcCAmIDB4MWYpIHwganJlZzA1KSk7CkBAIC0zNjMsNiArMzY2LDExIEBAIHN0YXRp YyB2b2lkIGFzdF9zZXRfY3J0Y19yZWcoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqbW9kCiAJYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19D UlRDX1BPUlQsIDB4MDksIDB4ZGYsIGpyZWcwOSk7CiAJYXN0X3NldF9pbmRleF9yZWdfbWFzayhh c3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4QUUsIDB4MDAsIChqcmVnQUUgfCAweDgwKSk7CiAKKyAg ICBpZiAocHJlY2FjaGUpCisJCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JU Q19QT1JULCAweGI2LCAweDNmLCAweDgwKTsKKyAgICBlbHNlCisJCWFzdF9zZXRfaW5kZXhfcmVn X21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweGI2LCAweDNmLCAweDAwKTsKKwogCWFzdF9z ZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweDExLCAweDdmLCAweDgw KTsKIH0KIApAQCAtMzgzLDEyICszOTEsMTUgQEAgc3RhdGljIHZvaWQgYXN0X3NldF9kY2xrX3Jl ZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW8KIAlz dHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGFzdF92 Ymlvc19kY2xrX2luZm8gKmNsa19pbmZvOwogCi0JY2xrX2luZm8gPSAmZGNsa190YWJsZVt2Ymlv c19tb2RlLT5lbmhfdGFibGUtPmRjbGtfaW5kZXhdOworCWlmIChhc3QtPmNoaXAgPT0gQVNUMjUw MCkKKwkJY2xrX2luZm8gPSAmZGNsa190YWJsZV9hc3QyNTAwW3ZiaW9zX21vZGUtPmVuaF90YWJs ZS0+ZGNsa19pbmRleF07CisJZWxzZQorCQljbGtfaW5mbyA9ICZkY2xrX3RhYmxlW3ZiaW9zX21v ZGUtPmVuaF90YWJsZS0+ZGNsa19pbmRleF07CiAKIAlhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFz dCwgQVNUX0lPX0NSVENfUE9SVCwgMHhjMCwgMHgwMCwgY2xrX2luZm8tPnBhcmFtMSk7CiAJYXN0 X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4YzEsIDB4MDAsIGNs a19pbmZvLT5wYXJhbTIpOwogCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JU Q19QT1JULCAweGJiLCAweDBmLAotCQkJICAgICAgIChjbGtfaW5mby0+cGFyYW0zICYgMHg4MCkg fCAoKGNsa19pbmZvLT5wYXJhbTMgJiAweDMpIDw8IDQpKTsKKwkJCSAgICAgICAoY2xrX2luZm8t PnBhcmFtMyAmIDB4YzApIHwgKChjbGtfaW5mby0+cGFyYW0zICYgMHgzKSA8PCA0KSk7CiB9CiAK IHN0YXRpYyB2b2lkIGFzdF9zZXRfZXh0X3JlZyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlLApAQCAtNDIxLDcgKzQzMiw3IEBAIHN0YXRpYyB2b2lk IGFzdF9zZXRfZXh0X3JlZyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICptb2RlCiAJYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BP UlQsIDB4YTgsIDB4ZmQsIGpyZWdBOCk7CiAKIAkvKiBTZXQgVGhyZXNob2xkICovCi0JaWYgKGFz dC0+Y2hpcCA9PSBBU1QyMzAwIHx8IGFzdC0+Y2hpcCA9PSBBU1QyNDAwKSB7CisJaWYgKGFzdC0+ Y2hpcCA9PSBBU1QyMzAwIHx8IGFzdC0+Y2hpcCA9PSBBU1QyNDAwIHx8IGFzdC0+Y2hpcCA9PSBB U1QyNTAwKSB7CiAJCWFzdF9zZXRfaW5kZXhfcmVnKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhh NywgMHg3OCk7CiAJCWFzdF9zZXRfaW5kZXhfcmVnKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhh NiwgMHg2MCk7CiAJfSBlbHNlIGlmIChhc3QtPmNoaXAgPT0gQVNUMjEwMCB8fApAQCAtNzk0LDcg KzgwNSw3IEBAIHN0YXRpYyBpbnQgYXN0X21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciwKIAkJaWYgKChtb2RlLT5oZGlzcGxheSA9PSAxNjAwKSAmJiAobW9kZS0+dmRp c3BsYXkgPT0gOTAwKSkKIAkJCXJldHVybiBNT0RFX09LOwogCi0JCWlmICgoYXN0LT5jaGlwID09 IEFTVDIxMDApIHx8IChhc3QtPmNoaXAgPT0gQVNUMjIwMCkgfHwgKGFzdC0+Y2hpcCA9PSBBU1Qy MzAwKSB8fCAoYXN0LT5jaGlwID09IEFTVDI0MDApIHx8IChhc3QtPmNoaXAgPT0gQVNUMTE4MCkp IHsKKwkJaWYgKChhc3QtPmNoaXAgPT0gQVNUMjEwMCkgfHwgKGFzdC0+Y2hpcCA9PSBBU1QyMjAw KSB8fCAoYXN0LT5jaGlwID09IEFTVDIzMDApIHx8IChhc3QtPmNoaXAgPT0gQVNUMjQwMCkgfHwg KGFzdC0+Y2hpcCA9PSBBU1QyNTAwKSB8fCAoYXN0LT5jaGlwID09IEFTVDExODApKSB7CiAJCQlp ZiAoKG1vZGUtPmhkaXNwbGF5ID09IDE5MjApICYmIChtb2RlLT52ZGlzcGxheSA9PSAxMDgwKSkK IAkJCQlyZXR1cm4gTU9ERV9PSzsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9h c3RfcG9zdC5jIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jCmluZGV4IDcxOTc2MzUu LjBiNDFmYjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3Bvc3QuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9wb3N0LmMKQEAgLTMxLDcgKzMxLDggQEAKIAogI2lu Y2x1ZGUgImFzdF9kcmFtX3RhYmxlcy5oIgogCi1zdGF0aWMgdm9pZCBhc3RfaW5pdF9kcmFtXzIz MDAoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CitzdGF0aWMgdm9pZCBhc3RfcG9zdF9jaGlwXzIz MDAoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CitzdGF0aWMgdm9pZCBhc3RfcG9zdF9jaGlwXzI1 MDAoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiAKIHZvaWQgYXN0X2VuYWJsZV92Z2Eoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKIHsKQEAgLTgyLDcgKzgzLDcgQEAgYXN0X3NldF9kZWZfZXh0X3Jl ZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWZvciAoaSA9IDB4ODE7IGkgPD0gMHg4ZjsgaSsr KQogCQlhc3Rfc2V0X2luZGV4X3JlZyhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIGksIDB4MDApOwog Ci0JaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwIHx8IGFzdC0+Y2hpcCA9PSBBU1QyNDAwKSB7CisJ aWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwIHx8IGFzdC0+Y2hpcCA9PSBBU1QyNDAwIHx8IGFzdC0+ Y2hpcCA9PSBBU1QyNTAwKSB7CiAJCWlmIChkZXYtPnBkZXYtPnJldmlzaW9uID49IDB4MjApCiAJ CQlleHRfcmVnX2luZm8gPSBleHRyZWdpbmZvX2FzdDIzMDA7CiAJCWVsc2UKQEAgLTEwNiw3ICsx MDcsNyBAQCBhc3Rfc2V0X2RlZl9leHRfcmVnKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAKIAkv KiBFbmFibGUgUkFNREFDIGZvciBBMSAqLwogCXJlZyA9IDB4MDQ7Ci0JaWYgKGFzdC0+Y2hpcCA9 PSBBU1QyMzAwIHx8IGFzdC0+Y2hpcCA9PSBBU1QyNDAwKQorCWlmIChhc3QtPmNoaXAgPT0gQVNU MjMwMCB8fCBhc3QtPmNoaXAgPT0gQVNUMjQwMCB8fCBhc3QtPmNoaXAgPT0gQVNUMjUwMCkKIAkJ cmVnIHw9IDB4MjA7CiAJYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BP UlQsIDB4YjYsIDB4ZmYsIHJlZyk7CiB9CkBAIC0zODAsOCArMzgxLDEwIEBAIHZvaWQgYXN0X3Bv c3RfZ3B1KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJYXN0X3NldF9kZWZfZXh0X3JlZyhkZXYp OwogCiAJaWYgKGFzdC0+Y29uZmlnX21vZGUgPT0gYXN0X3VzZV9wMmEpIHsKKwkJaWYgKGFzdC0+ Y2hpcCA9PSBBU1QyNTAwKQorCQkJYXN0X3Bvc3RfY2hpcF8yNTAwKGRldik7CiAJCWlmIChhc3Qt PmNoaXAgPT0gQVNUMjMwMCB8fCBhc3QtPmNoaXAgPT0gQVNUMjQwMCkKLQkJCWFzdF9pbml0X2Ry YW1fMjMwMChkZXYpOworCQkJYXN0X3Bvc3RfY2hpcF8yMzAwKGRldik7CiAJCWVsc2UKIAkJCWFz dF9pbml0X2RyYW1fcmVnKGRldik7CiAKQEAgLTQ0NSw4NSArNDQ4LDUzIEBAIHN0YXRpYyBjb25z dCB1MzIgcGF0dGVybls4XSA9IHsKIAkweDdDNjFEMjUzCiB9OwogCi1zdGF0aWMgaW50IG1tY190 ZXN0X2J1cnN0KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0LCB1MzIgZGF0YWdlbikKK3N0YXRpYyBp bnQgbW1jX3Rlc3Qoc3RydWN0IGFzdF9wcml2YXRlICphc3QsIHUzMiBkYXRhZ2VuLCB1OCB0ZXN0 X2N0bCkKIHsKIAl1MzIgZGF0YSwgdGltZW91dDsKIAogCWFzdF9tb3V0ZHdtKGFzdCwgMHgxZTZl MDA3MCwgMHgwMDAwMDAwMCk7Ci0JYXN0X21vdXRkd20oYXN0LCAweDFlNmUwMDcwLCAweDAwMDAw MGMxIHwgKGRhdGFnZW4gPDwgMykpOworCWFzdF9tb3V0ZHdtKGFzdCwgMHgxZTZlMDA3MCwgKGRh dGFnZW4gPDwgMykgfCB0ZXN0X2N0bCk7CiAJdGltZW91dCA9IDA7CiAJZG8gewogCQlkYXRhID0g YXN0X21pbmR3bShhc3QsIDB4MWU2ZTAwNzApICYgMHgzMDAwOwogCQlpZiAoZGF0YSAmIDB4MjAw MCkgewotCQkJcmV0dXJuIDA7CisJCQlyZXR1cm4gLTE7CiAJCX0KIAkJaWYgKCsrdGltZW91dCA+ IFRJTUVPVVQpIHsKIAkJCWFzdF9tb3V0ZHdtKGFzdCwgMHgxZTZlMDA3MCwgMHgwMDAwMDAwMCk7 Ci0JCQlyZXR1cm4gMDsKKwkJCXJldHVybiAtMTsKIAkJfQogCX0gd2hpbGUgKCFkYXRhKTsKKwlk YXRhID0gYXN0X21pbmR3bShhc3QsIDB4MWU2ZTAwNzgpOworCWRhdGEgPSAoZGF0YSB8IChkYXRh ID4+IDE2KSkgJiAweGZmZmY7CiAJYXN0X21vdXRkd20oYXN0LCAweDFlNmUwMDcwLCAweDAwMDAw MDAwKTsKLQlyZXR1cm4gMTsKKwlyZXR1cm4gZGF0YTsKIH0KIAotc3RhdGljIGludCBtbWNfdGVz dF9idXJzdDIoc3RydWN0IGFzdF9wcml2YXRlICphc3QsIHUzMiBkYXRhZ2VuKQorCitzdGF0aWMg aW50IG1tY190ZXN0X2J1cnN0KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0LCB1MzIgZGF0YWdlbikK IHsKLQl1MzIgZGF0YSwgdGltZW91dDsKKwlyZXR1cm4gbW1jX3Rlc3QoYXN0LCBkYXRhZ2VuLCAw eGMxKTsKK30KIAotCWFzdF9tb3V0ZHdtKGFzdCwgMHgxZTZlMDA3MCwgMHgwMDAwMDAwMCk7Ci0J YXN0X21vdXRkd20oYXN0LCAweDFlNmUwMDcwLCAweDAwMDAwMDQxIHwgKGRhdGFnZW4gPDwgMykp OwotCXRpbWVvdXQgPSAwOwotCWRvIHsKLQkJZGF0YSA9IGFzdF9taW5kd20oYXN0LCAweDFlNmUw MDcwKSAmIDB4MTAwMDsKLQkJaWYgKCsrdGltZW91dCA+IFRJTUVPVVQpIHsKLQkJCWFzdF9tb3V0 ZHdtKGFzdCwgMHgxZTZlMDA3MCwgMHgwKTsKLQkJCXJldHVybiAtMTsKLQkJfQotCX0gd2hpbGUg KCFkYXRhKTsKLQlkYXRhID0gYXN0X21pbmR3bShhc3QsIDB4MWU2ZTAwNzgpOwotCWRhdGEgPSAo ZGF0YSB8IChkYXRhID4+IDE2KSkgJiAweGZmZmY7Ci0JYXN0X21vdXRkd20oYXN0LCAweDFlNmUw MDcwLCAweDApOwotCXJldHVybiBkYXRhOworc3RhdGljIGludCBtbWNfdGVzdF9idXJzdDIoc3Ry dWN0IGFzdF9wcml2YXRlICphc3QsIHUzMiBkYXRhZ2VuKQoreworCXJldHVybiBtbWNfdGVzdChh c3QsIGRhdGFnZW4sIDB4NDEpOwogfQogCiBzdGF0aWMgaW50IG1tY190ZXN0X3NpbmdsZShzdHJ1 Y3QgYXN0X3ByaXZhdGUgKmFzdCwgdTMyIGRhdGFnZW4pCiB7Ci0JdTMyIGRhdGEsIHRpbWVvdXQ7 Ci0KLQlhc3RfbW91dGR3bShhc3QsIDB4MWU2ZTAwNzAsIDB4MDAwMDAwMDApOwotCWFzdF9tb3V0 ZHdtKGFzdCwgMHgxZTZlMDA3MCwgMHgwMDAwMDBjNSB8IChkYXRhZ2VuIDw8IDMpKTsKLQl0aW1l b3V0ID0gMDsKLQlkbyB7Ci0JCWRhdGEgPSBhc3RfbWluZHdtKGFzdCwgMHgxZTZlMDA3MCkgJiAw eDMwMDA7Ci0JCWlmIChkYXRhICYgMHgyMDAwKQotCQkJcmV0dXJuIDA7Ci0JCWlmICgrK3RpbWVv dXQgPiBUSU1FT1VUKSB7Ci0JCQlhc3RfbW91dGR3bShhc3QsIDB4MWU2ZTAwNzAsIDB4MCk7Ci0J CQlyZXR1cm4gMDsKLQkJfQotCX0gd2hpbGUgKCFkYXRhKTsKLQlhc3RfbW91dGR3bShhc3QsIDB4 MWU2ZTAwNzAsIDB4MCk7Ci0JcmV0dXJuIDE7CisJcmV0dXJuIG1tY190ZXN0KGFzdCwgZGF0YWdl biwgMHhjNSk7CiB9CiAKIHN0YXRpYyBpbnQgbW1jX3Rlc3Rfc2luZ2xlMihzdHJ1Y3QgYXN0X3By aXZhdGUgKmFzdCwgdTMyIGRhdGFnZW4pCiB7Ci0JdTMyIGRhdGEsIHRpbWVvdXQ7CisJcmV0dXJu IG1tY190ZXN0KGFzdCwgZGF0YWdlbiwgMHgwNSk7Cit9CiAKLQlhc3RfbW91dGR3bShhc3QsIDB4 MWU2ZTAwNzAsIDB4MDAwMDAwMDApOwotCWFzdF9tb3V0ZHdtKGFzdCwgMHgxZTZlMDA3MCwgMHgw MDAwMDAwNSB8IChkYXRhZ2VuIDw8IDMpKTsKLQl0aW1lb3V0ID0gMDsKLQlkbyB7Ci0JCWRhdGEg PSBhc3RfbWluZHdtKGFzdCwgMHgxZTZlMDA3MCkgJiAweDEwMDA7Ci0JCWlmICgrK3RpbWVvdXQg PiBUSU1FT1VUKSB7Ci0JCQlhc3RfbW91dGR3bShhc3QsIDB4MWU2ZTAwNzAsIDB4MCk7Ci0JCQly ZXR1cm4gLTE7Ci0JCX0KLQl9IHdoaWxlICghZGF0YSk7Ci0JZGF0YSA9IGFzdF9taW5kd20oYXN0 LCAweDFlNmUwMDc4KTsKLQlkYXRhID0gKGRhdGEgfCAoZGF0YSA+PiAxNikpICYgMHhmZmZmOwot CWFzdF9tb3V0ZHdtKGFzdCwgMHgxZTZlMDA3MCwgMHgwKTsKLQlyZXR1cm4gZGF0YTsKK3N0YXRp YyBpbnQgbW1jX3Rlc3Rfc2luZ2xlXzI1MDAoc3RydWN0IGFzdF9wcml2YXRlICphc3QsIHUzMiBk YXRhZ2VuKQoreworCXJldHVybiBtbWNfdGVzdChhc3QsIGRhdGFnZW4sIDB4ODUpOwogfQogCiBz dGF0aWMgaW50IGNicl90ZXN0KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQpAQCAtNjAzLDkgKzU3 NCw5IEBAIHN0YXRpYyB1MzIgY2JyX3NjYW4yKHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQogCiBz dGF0aWMgdTMyIGNicl90ZXN0MyhzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCkKIHsKLQlpZiAoIW1t Y190ZXN0X2J1cnN0KGFzdCwgMCkpCisJaWYgKG1tY190ZXN0X2J1cnN0KGFzdCwgMCkgPCAwKQog CQlyZXR1cm4gMDsKLQlpZiAoIW1tY190ZXN0X3NpbmdsZShhc3QsIDApKQorCWlmIChtbWNfdGVz dF9zaW5nbGUoYXN0LCAwKSA8IDApCiAJCXJldHVybiAwOwogCXJldHVybiAxOwogfQpAQCAtMTYw OSw3ICsxNTgwLDcgQEAgc3RhdGljIHZvaWQgZGRyMl9pbml0KHN0cnVjdCBhc3RfcHJpdmF0ZSAq YXN0LCBzdHJ1Y3QgYXN0MjMwMF9kcmFtX3BhcmFtICpwYXJhbSkKIAogfQogCi1zdGF0aWMgdm9p ZCBhc3RfaW5pdF9kcmFtXzIzMDAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3N0YXRpYyB2b2lk IGFzdF9wb3N0X2NoaXBfMjMwMChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBh c3RfcHJpdmF0ZSAqYXN0ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgYXN0MjMwMF9kcmFt X3BhcmFtIHBhcmFtOwpAQCAtMTY2MCwzICsxNjMxLDQwNSBAQCBzdGF0aWMgdm9pZCBhc3RfaW5p dF9kcmFtXzIzMDAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAl9IHdoaWxlICgocmVnICYgMHg0 MCkgPT0gMCk7CiB9CiAKK3N0YXRpYyBib29sIGNicl90ZXN0XzI1MDAoc3RydWN0IGFzdF9wcml2 YXRlICphc3QpCit7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDc0LCAweDAwMDBGRkZGKTsK Kwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwN0MsIDB4RkYwMEZGMDApOworCWlmIChtbWNfdGVz dF9idXJzdChhc3QsIDApIDwgMCkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChtbWNfdGVzdF9zaW5n bGVfMjUwMChhc3QsIDApIDwgMCkKKwkJcmV0dXJuIGZhbHNlOworCXJldHVybiB0cnVlOworfQor CitzdGF0aWMgYm9vbCBkZHJfdGVzdF8yNTAwKHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQorewor CWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDA3NCwgMHgwMDAwRkZGRik7CisJYXN0X21vdXRkd20o YXN0LCAweDFFNkUwMDdDLCAweEZGMDBGRjAwKTsKKwlpZiAobW1jX3Rlc3RfYnVyc3QoYXN0LCAw KSA8IDApCisJCXJldHVybiBmYWxzZTsKKwlpZiAobW1jX3Rlc3RfYnVyc3QoYXN0LCAxKSA8IDAp CisJCXJldHVybiBmYWxzZTsKKwlpZiAobW1jX3Rlc3RfYnVyc3QoYXN0LCAyKSA8IDApCisJCXJl dHVybiBmYWxzZTsKKwlpZiAobW1jX3Rlc3RfYnVyc3QoYXN0LCAzKSA8IDApCisJCXJldHVybiBm YWxzZTsKKwlpZiAobW1jX3Rlc3Rfc2luZ2xlXzI1MDAoYXN0LCAwKSA8IDApCisJCXJldHVybiBm YWxzZTsKKwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkIGRkcl9pbml0X2NvbW1vbl8y NTAwKHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQoreworCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZF MDAzNCwweDAwMDIwMDgwKTsKKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMDgsMHgyMDAzMDAw Rik7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDM4LDB4MDAwMDBGRkYpOworCWFzdF9tb3V0 ZHdtKGFzdCwgMHgxRTZFMDA0MCwweDg4NDQ4ODQ0KTsKKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2 RTAwNDQsMHgyNDQyMjI4OCk7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDQ4LDB4MjIyMjIy MjIpOworCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDA0QywweDIyMjIyMjIyKTsKKwlhc3RfbW91 dGR3bShhc3QsIDB4MUU2RTAwNTAsMHg4MDAwMDAwMCk7CisJYXN0X21vdXRkd20oYXN0LCAweDFF NkUwMjA4LDB4MDAwMDAwMDApOworCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDIxOCwweDAwMDAw MDAwKTsKKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyMjAsMHgwMDAwMDAwMCk7CisJYXN0X21v dXRkd20oYXN0LCAweDFFNkUwMjI4LDB4MDAwMDAwMDApOworCWFzdF9tb3V0ZHdtKGFzdCwgMHgx RTZFMDIzMCwweDAwMDAwMDAwKTsKKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyQTgsMHgwMDAw MDAwMCk7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkIwLDB4MDAwMDAwMDApOworCWFzdF9t b3V0ZHdtKGFzdCwgMHgxRTZFMDI0MCwweDg2MDAwMDAwKTsKKwlhc3RfbW91dGR3bShhc3QsIDB4 MUU2RTAyNDQsMHgwMDAwODYwMCk7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMjQ4LDB4ODAw MDAwMDApOworCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDI0QywweDgwODA4MDgwKTsKK30KKwor c3RhdGljIHZvaWQgZGRyX3BoeV9pbml0XzI1MDAoc3RydWN0IGFzdF9wcml2YXRlICphc3QpCit7 CisJdTMyIGRhdGEsIHBhc3MsIHRpbWVjbnQ7CisKKwlwYXNzID0gMDsKKwlhc3RfbW91dGR3bShh c3QsIDB4MUU2RTAwNjAsMHgwMDAwMDAwNSk7CisJd2hpbGUgKCFwYXNzKSB7CisJCWZvcih0aW1l Y250ID0gMDt0aW1lY250IDwgVElNRU9VVDt0aW1lY250KyspIHsKKwkJCWRhdGEgPSBhc3RfbWlu ZHdtKGFzdCwgMHgxRTZFMDA2MCkgJiAweDE7CisJCQlpZiAoIWRhdGEpCisJCQkJYnJlYWs7CisJ CX0KKwkJaWYgKHRpbWVjbnQgIT0gVElNRU9VVCkgeworCQkJZGF0YSA9IGFzdF9taW5kd20oYXN0 LCAweDFFNkUwMzAwKSAmIDB4MDAwQTAwMDA7CisJCQlpZiAoIWRhdGEpCisJCQkJcGFzcyA9IDE7 CisJCX0KKwkJaWYgKCFwYXNzKSB7CisJCQlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwNjAsMHgw MDAwMDAwMCk7CisJCQl1ZGVsYXkoMTApOyAvKiBkZWxheSAxMCB1cyAqLworCQkJYXN0X21vdXRk d20oYXN0LCAweDFFNkUwMDYwLDB4MDAwMDAwMDUpOworCQl9CisJfQorCisJYXN0X21vdXRkd20o YXN0LCAweDFFNkUwMDYwLDB4MDAwMDAwMDYpOworfQorCisvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgQ2hlY2sgRFJBTSBTaXplCisgMUdiIDogMHg4MDAwMDAwMCB+IDB4ODdGRkZGRkYKKyAyR2Ig OiAweDgwMDAwMDAwIH4gMHg4RkZGRkZGRgorIDRHYiA6IDB4ODAwMDAwMDAgfiAweDlGRkZGRkZG CisgOEdiIDogMHg4MDAwMDAwMCB+IDB4QkZGRkZGRkYKKyoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor c3RhdGljIHZvaWQgY2hlY2tfZHJhbV9zaXplXzI1MDAoc3RydWN0IGFzdF9wcml2YXRlICphc3Qs IHUzMiB0UkZDKQoreworCXUzMiByZWdfMDQsIHJlZ18xNDsKKworCXJlZ18wNCA9IGFzdF9taW5k d20oYXN0LCAweDFFNkUwMDA0KSAmIDB4ZmZmZmZmZmM7CisJcmVnXzE0ID0gYXN0X21pbmR3bShh c3QsIDB4MUU2RTAwMTQpICYgMHhmZmZmZmYwMDsKKworCWFzdF9tb3V0ZHdtKGFzdCwgMHhBMDEw MDAwMCwgMHg0MTQyNDM0NCk7CisJYXN0X21vdXRkd20oYXN0LCAweDkwMTAwMDAwLCAweDM1MzYz NzM4KTsKKwlhc3RfbW91dGR3bShhc3QsIDB4ODgxMDAwMDAsIDB4MjkyQTJCMkMpOworCWFzdF9t b3V0ZHdtKGFzdCwgMHg4MDEwMDAwMCwgMHgxRDFFMUYxMCk7CisKKwkvKiBDaGVjayA4R2JpdCAq LworCWlmIChhc3RfbWluZHdtKGFzdCwgMHhBMDEwMDAwMCkgPT0gMHg0MTQyNDM0NCkgeworCQly ZWdfMDQgfD0gMHgwMzsKKwkJcmVnXzE0IHw9ICh0UkZDID4+IDI0KSAmIDB4RkY7CisJCS8qIENo ZWNrIDRHYml0ICovCisJfSBlbHNlIGlmIChhc3RfbWluZHdtKGFzdCwgMHg5MDEwMDAwMCkgPT0g MHgzNTM2MzczOCkgeworCQlyZWdfMDQgfD0gMHgwMjsKKwkJcmVnXzE0IHw9ICh0UkZDID4+IDE2 KSAmIDB4RkY7CisJCS8qIENoZWNrIDJHYml0ICovCisJfSBlbHNlIGlmIChhc3RfbWluZHdtKGFz dCwgMHg4ODEwMDAwMCkgPT0gMHgyOTJBMkIyQykgeworCQlyZWdfMDQgfD0gMHgwMTsKKwkJcmVn XzE0IHw9ICh0UkZDID4+IDgpICYgMHhGRjsKKwl9IGVsc2UgeworCQlyZWdfMTQgfD0gdFJGQyAm IDB4RkY7CisJfQorCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAwNCwgcmVnXzA0KTsKKwlhc3Rf bW91dGR3bShhc3QsIDB4MUU2RTAwMTQsIHJlZ18xNCk7Cit9CisKK3N0YXRpYyB2b2lkIGVuYWJs ZV9jYWNoZV8yNTAwKHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQoreworCXUzMiByZWdfMDQsIGRh dGE7CisKKwlyZWdfMDQgPSBhc3RfbWluZHdtKGFzdCwgMHgxRTZFMDAwNCk7CisJYXN0X21vdXRk d20oYXN0LCAweDFFNkUwMDA0LCByZWdfMDQgfCAweDEwMDApOworCisJZG8KKwkJZGF0YSA9IGFz dF9taW5kd20oYXN0LCAweDFFNkUwMDA0KTsKKwl3aGlsZSAoIShkYXRhICYgMHg4MDAwMCkpOwor CWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAwNCwgcmVnXzA0IHwgMHg0MDApOworfQorCitzdGF0 aWMgdm9pZCBzZXRfbXBsbF8yNTAwKHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQoreworCXUzMiBh ZGRyLCBkYXRhLCBwYXJhbTsKKworCS8qIFJlc2V0IE1NQyAqLworCWFzdF9tb3V0ZHdtKGFzdCwg MHgxRTZFMDAwMCwweEZDNjAwMzA5KTsKKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMzQsMHgw MDAyMDA4MCk7CisJZm9yIChhZGRyID0gMHgxZTZlMDAwNDsgYWRkciA8IDB4MWU2ZTAwOTA7KSB7 CisJCWFzdF9tb3V0ZHdtKGFzdCwgYWRkciwgMHgwKTsKKwkJYWRkciArPSA0OworCX0KKwlhc3Rf bW91dGR3bShhc3QsIDB4MUU2RTAwMzQsMHgwMDAyMDAwMCk7CisKKwlhc3RfbW91dGR3bShhc3Qs IDB4MUU2RTIwMDAsIDB4MTY4OEE4QTgpOworCWRhdGEgPSBhc3RfbWluZHdtKGFzdCwgMHgxRTZF MjA3MCkgJiAweDAwODAwMDAwOworCWlmIChkYXRhKSB7CisJCS8qIENMS0lOID0gMjVNSHogKi8K KwkJcGFyYW0gPSAweDkzMDAyM0UwOworCQlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTIxNjAsIDB4 MDAwMTEzMjApOworCX0gZWxzZSB7CisJCS8qIENMS0lOID0gMjRNSHogKi8KKwkJcGFyYW0gPSAw eDkzMDAyNDAwOworCX0KKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTIwMjAsIHBhcmFtKTsKKwl1 ZGVsYXkoMTAwKTsKK30KKworc3RhdGljIHZvaWQgcmVzZXRfbW1jXzI1MDAoc3RydWN0IGFzdF9w cml2YXRlICphc3QpCit7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNzg1MDVDLDB4MDAwMDAwMDQp OworCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTc4NTA0NCwweDAwMDAwMDAxKTsKKwlhc3RfbW91dGR3 bShhc3QsIDB4MUU3ODUwNDgsMHgwMDAwNDc1NSk7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNzg1 MDRDLDB4MDAwMDAwMTMpOworCW1kZWxheSgxMDApOwkJCQkJLyogZGVsYXkgMTAwbXMgKi8KKwlh c3RfbW91dGR3bShhc3QsIDB4MUU3ODUwNTQsMHgwMDAwMDA3Nyk7CisJYXN0X21vdXRkd20oYXN0 LCAweDFFNkUwMDAwLDB4RkM2MDAzMDkpOworfQorCitzdGF0aWMgdm9pZCBkZHIzX2luaXRfMjUw MChzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCwgdTMyICpkZHJfdGFibGUpCit7CisKKwlhc3RfbW91 dGR3bShhc3QsIDB4MUU2RTAwMDQsMHgwMDAwMDMwMyk7CisJYXN0X21vdXRkd20oYXN0LCAweDFF NkUwMDEwLGRkcl90YWJsZVtSRUdJRFhfMDEwXSk7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUw MDE0LGRkcl90YWJsZVtSRUdJRFhfMDE0XSk7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDE4 LGRkcl90YWJsZVtSRUdJRFhfMDE4XSk7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDIwLGRk cl90YWJsZVtSRUdJRFhfMDIwXSk7ICAgICAgICAgIC8qIE1PREVSRUc0LzYgKi8KKwlhc3RfbW91 dGR3bShhc3QsIDB4MUU2RTAwMjQsZGRyX3RhYmxlW1JFR0lEWF8wMjRdKTsgICAgICAgICAgLyog TU9ERVJFRzUgKi8KKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMkMsZGRyX3RhYmxlW1JFR0lE WF8wMkNdIHwgMHgxMDApOyAgLyogTU9ERVJFRzAvMiAqLworCWFzdF9tb3V0ZHdtKGFzdCwgMHgx RTZFMDAzMCxkZHJfdGFibGVbUkVHSURYXzAzMF0pOyAgICAgICAgICAvKiBNT0RFUkVHMS8zICov CisKKwkvKiBERFIgUEhZIFNldHRpbmcgKi8KKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyMDAs MHgwMjQ5MkFBRSk7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMjA0LDB4MDAwMDEwMDEpOwor CWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDIwQywweDU1RTAwQjBCKTsKKwlhc3RfbW91dGR3bShh c3QsIDB4MUU2RTAyMTAsMHgyMDAwMDAwMCk7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMjE0 LGRkcl90YWJsZVtSRUdJRFhfMjE0XSk7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkUwLGRk cl90YWJsZVtSRUdJRFhfMkUwXSk7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkU0LGRkcl90 YWJsZVtSRUdJRFhfMkU0XSk7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkU4LGRkcl90YWJs ZVtSRUdJRFhfMkU4XSk7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkVDLGRkcl90YWJsZVtS RUdJRFhfMkVDXSk7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkYwLGRkcl90YWJsZVtSRUdJ RFhfMkYwXSk7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkY0LGRkcl90YWJsZVtSRUdJRFhf MkY0XSk7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkY4LGRkcl90YWJsZVtSRUdJRFhfMkY4 XSk7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMjkwLDB4MDAxMDAwMDgpOworCWFzdF9tb3V0 ZHdtKGFzdCwgMHgxRTZFMDJDMCwweDAwMDAwMDA2KTsKKworCS8qIENvbnRyb2xsZXIgU2V0dGlu ZyAqLworCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAzNCwweDAwMDIwMDkxKTsKKworCS8qIFdh aXQgRERSIFBIWSBpbml0IGRvbmUgKi8KKwlkZHJfcGh5X2luaXRfMjUwMChhc3QpOworCisJYXN0 X21vdXRkd20oYXN0LCAweDFFNkUwMTIwLGRkcl90YWJsZVtSRUdJRFhfUExMXSk7CisJYXN0X21v dXRkd20oYXN0LCAweDFFNkUwMDBDLDB4NDJBQTVDODEpOworCWFzdF9tb3V0ZHdtKGFzdCwgMHgx RTZFMDAzNCwweDAwMDFBRjkzKTsKKworCWNoZWNrX2RyYW1fc2l6ZV8yNTAwKGFzdCwgZGRyX3Rh YmxlW1JFR0lEWF9SRkNdKTsKKwllbmFibGVfY2FjaGVfMjUwMChhc3QpOworCWFzdF9tb3V0ZHdt KGFzdCwgMHgxRTZFMDAxQywweDAwMDAwMDA4KTsKKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAw MzgsMHhGRkZGRkYwMCk7Cit9CisKK3N0YXRpYyB2b2lkIGRkcjRfaW5pdF8yNTAwKHN0cnVjdCBh c3RfcHJpdmF0ZSAqYXN0LCB1MzIgKmRkcl90YWJsZSkKK3sKKwl1MzIgZGF0YSwgZGF0YTIsIHBh c3MsIHJldHJ5Y250OworCXUzMiBkZHJfdnJlZiwgcGh5X3ZyZWY7CisJdTMyIG1pbl9kZHJfdnJl Zj0wLCBtaW5fcGh5X3ZyZWY9MDsKKwl1MzIgbWF4X2Rkcl92cmVmPTAsIG1heF9waHlfdnJlZj0w OworCisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDA0LDB4MDAwMDAzMTMpOworCWFzdF9tb3V0 ZHdtKGFzdCwgMHgxRTZFMDAxMCxkZHJfdGFibGVbUkVHSURYXzAxMF0pOworCWFzdF9tb3V0ZHdt KGFzdCwgMHgxRTZFMDAxNCxkZHJfdGFibGVbUkVHSURYXzAxNF0pOworCWFzdF9tb3V0ZHdtKGFz dCwgMHgxRTZFMDAxOCxkZHJfdGFibGVbUkVHSURYXzAxOF0pOworCWFzdF9tb3V0ZHdtKGFzdCwg MHgxRTZFMDAyMCxkZHJfdGFibGVbUkVHSURYXzAyMF0pOyAgICAgICAgICAvKiBNT0RFUkVHNC82 ICovCisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDI0LGRkcl90YWJsZVtSRUdJRFhfMDI0XSk7 ICAgICAgICAgIC8qIE1PREVSRUc1ICovCisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDJDLGRk cl90YWJsZVtSRUdJRFhfMDJDXSB8IDB4MTAwKTsgIC8qIE1PREVSRUcwLzIgKi8KKwlhc3RfbW91 dGR3bShhc3QsIDB4MUU2RTAwMzAsZGRyX3RhYmxlW1JFR0lEWF8wMzBdKTsgICAgICAgICAgLyog TU9ERVJFRzEvMyAqLworCisJLyogRERSIFBIWSBTZXR0aW5nICovCisJYXN0X21vdXRkd20oYXN0 LCAweDFFNkUwMjAwLDB4NDI0OTJBQUUpOworCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDIwNCww eDA5MDAyMDAwKTsKKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyMEMsMHg1NUUwMEIwQik7CisJ YXN0X21vdXRkd20oYXN0LCAweDFFNkUwMjEwLDB4MjAwMDAwMDApOworCWFzdF9tb3V0ZHdtKGFz dCwgMHgxRTZFMDIxNCxkZHJfdGFibGVbUkVHSURYXzIxNF0pOworCWFzdF9tb3V0ZHdtKGFzdCwg MHgxRTZFMDJFMCxkZHJfdGFibGVbUkVHSURYXzJFMF0pOworCWFzdF9tb3V0ZHdtKGFzdCwgMHgx RTZFMDJFNCxkZHJfdGFibGVbUkVHSURYXzJFNF0pOworCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZF MDJFOCxkZHJfdGFibGVbUkVHSURYXzJFOF0pOworCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDJF QyxkZHJfdGFibGVbUkVHSURYXzJFQ10pOworCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDJGMCxk ZHJfdGFibGVbUkVHSURYXzJGMF0pOworCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDJGNCxkZHJf dGFibGVbUkVHSURYXzJGNF0pOworCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDJGOCxkZHJfdGFi bGVbUkVHSURYXzJGOF0pOworCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDI5MCwweDAwMTAwMDA4 KTsKKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyQzQsMHgzQzE4M0MzQyk7CisJYXN0X21vdXRk d20oYXN0LCAweDFFNkUwMkM4LDB4MDA2MzFFMEUpOworCisJLyogQ29udHJvbGxlciBTZXR0aW5n ICovCisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDM0LDB4MDAwMUE5OTEpOworCisJLyogVHJh aW4gUEhZIFZyZWYgZmlyc3QgKi8KKwlwYXNzID0gMDsKKworCWZvciAocmV0cnljbnQgPSAwO3Jl dHJ5Y250IDwgNCAmJiBwYXNzID09IDA7cmV0cnljbnQrKykgeworCQltYXhfcGh5X3ZyZWYgPSAw eDA7CisJCXBhc3MgPSAwOworCQlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyQzAsMHgwMDAwMUMw Nik7CisJCWZvciAocGh5X3ZyZWYgPSAweDQwO3BoeV92cmVmIDwgMHg4MDtwaHlfdnJlZisrKSB7 CisJCQlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMEMsMHgwMDAwMDAwMCk7CisJCQlhc3RfbW91 dGR3bShhc3QsIDB4MUU2RTAwNjAsMHgwMDAwMDAwMCk7CisJCQlhc3RfbW91dGR3bShhc3QsIDB4 MUU2RTAyQ0MscGh5X3ZyZWYgfCAocGh5X3ZyZWYgPDwgOCkpOworCQkJLyogRmlyZSBERkkgSW5p dCAqLworCQkJZGRyX3BoeV9pbml0XzI1MDAoYXN0KTsKKwkJCWFzdF9tb3V0ZHdtKGFzdCwgMHgx RTZFMDAwQywweDAwMDA1QzAxKTsKKwkJCWlmIChjYnJfdGVzdF8yNTAwKGFzdCkpIHsKKwkJCQlw YXNzKys7CisJCQkJZGF0YSA9IGFzdF9taW5kd20oYXN0LCAweDFFNkUwM0QwKTsKKwkJCQlkYXRh MiA9IGRhdGEgPj4gODsKKwkJCQlkYXRhICA9IGRhdGEgJiAweGZmOworCQkJCWlmIChkYXRhID4g ZGF0YTIpCisJCQkJCWRhdGEgPSBkYXRhMjsKKwkJCQlpZiAobWF4X3BoeV92cmVmIDwgZGF0YSkg eworCQkJCQltYXhfcGh5X3ZyZWYgPSBkYXRhOworCQkJCQltaW5fcGh5X3ZyZWYgPSBwaHlfdnJl ZjsKKwkJCQl9CisJCQl9IGVsc2UgaWYgKHBhc3MgPiAwKQorCQkJCWJyZWFrOworCQl9CisJfQor CWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDJDQyxtaW5fcGh5X3ZyZWYgfCAobWluX3BoeV92cmVm IDw8IDgpKTsKKworCS8qIFRyYWluIEREUiBWcmVmIG5leHQgKi8KKwlwYXNzID0gMDsKKworCWZv ciAocmV0cnljbnQgPSAwO3JldHJ5Y250IDwgNCAmJiBwYXNzID09IDA7cmV0cnljbnQrKykgewor CQltaW5fZGRyX3ZyZWYgPSAweEZGOworCQltYXhfZGRyX3ZyZWYgPSAweDA7CisJCXBhc3MgPSAw OworCQlmb3IgKGRkcl92cmVmID0gMHgwMDtkZHJfdnJlZiA8IDB4NDA7ZGRyX3ZyZWYrKykgewor CQkJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDBDLDB4MDAwMDAwMDApOworCQkJYXN0X21vdXRk d20oYXN0LCAweDFFNkUwMDYwLDB4MDAwMDAwMDApOworCQkJYXN0X21vdXRkd20oYXN0LCAweDFF NkUwMkMwLDB4MDAwMDAwMDYgfCAoZGRyX3ZyZWYgPDwgOCkpOworCQkJLyogRmlyZSBERkkgSW5p dCAqLworCQkJZGRyX3BoeV9pbml0XzI1MDAoYXN0KTsKKwkJCWFzdF9tb3V0ZHdtKGFzdCwgMHgx RTZFMDAwQywweDAwMDA1QzAxKTsKKwkJCWlmIChjYnJfdGVzdF8yNTAwKGFzdCkpIHsKKwkJCQlw YXNzKys7CisJCQkJaWYgKG1pbl9kZHJfdnJlZiA+IGRkcl92cmVmKQorCQkJCQltaW5fZGRyX3Zy ZWYgPSBkZHJfdnJlZjsKKwkJCQlpZiAobWF4X2Rkcl92cmVmIDwgZGRyX3ZyZWYpCisJCQkJCW1h eF9kZHJfdnJlZiA9IGRkcl92cmVmOworCQkJfSBlbHNlIGlmIChwYXNzICE9IDApCisJCQkJYnJl YWs7CisJCX0KKwl9CisKKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMEMsMHgwMDAwMDAwMCk7 CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDYwLDB4MDAwMDAwMDApOworCWRkcl92cmVmID0g KG1pbl9kZHJfdnJlZiArIG1heF9kZHJfdnJlZiArIDEpID4+IDE7CisJYXN0X21vdXRkd20oYXN0 LCAweDFFNkUwMkMwLDB4MDAwMDAwMDYgfCAoZGRyX3ZyZWYgPDwgOCkpOworCisJLyogV2FpdCBE RFIgUEhZIGluaXQgZG9uZSAqLworCWRkcl9waHlfaW5pdF8yNTAwKGFzdCk7CisKKwlhc3RfbW91 dGR3bShhc3QsIDB4MUU2RTAxMjAsZGRyX3RhYmxlW1JFR0lEWF9QTExdKTsKKwlhc3RfbW91dGR3 bShhc3QsIDB4MUU2RTAwMEMsMHg0MkFBNUM4MSk7CisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUw MDM0LDB4MDAwMUFGOTMpOworCisJY2hlY2tfZHJhbV9zaXplXzI1MDAoYXN0LCBkZHJfdGFibGVb UkVHSURYX1JGQ10pOworCWVuYWJsZV9jYWNoZV8yNTAwKGFzdCk7CisJYXN0X21vdXRkd20oYXN0 LCAweDFFNkUwMDFDLDB4MDAwMDAwMDgpOworCWFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAzOCww eEZGRkZGRjAwKTsKK30KKworc3RhdGljIGJvb2wgYXN0X2RyYW1faW5pdF8yNTAwKHN0cnVjdCBh c3RfcHJpdmF0ZSAqYXN0KQoreworCXUzMiBkYXRhOworCXUzMiBtYXhfdHJpZXMgPSA1OworCisJ ZG8geworCQlpZiAobWF4X3RyaWVzLS0gPT0gMCkKKwkJCXJldHVybiBmYWxzZTsKKwkJc2V0X21w bGxfMjUwMChhc3QpOworCQlyZXNldF9tbWNfMjUwMChhc3QpOworCQlkZHJfaW5pdF9jb21tb25f MjUwMChhc3QpOworCisJCWRhdGEgPSBhc3RfbWluZHdtKGFzdCwgMHgxRTZFMjA3MCk7CisJCWlm IChkYXRhICYgMHgwMTAwMDAwMCkKKwkJCWRkcjRfaW5pdF8yNTAwKGFzdCwgYXN0MjUwMF9kZHI0 XzE2MDBfdGltaW5nX3RhYmxlKTsKKwkJZWxzZQorCQkJZGRyM19pbml0XzI1MDAoYXN0LCBhc3Qy NTAwX2RkcjNfMTYwMF90aW1pbmdfdGFibGUpOworCX0gd2hpbGUgKCFkZHJfdGVzdF8yNTAwKGFz dCkpOworCisJYXN0X21vdXRkd20oYXN0LCAweDFFNkUyMDQwLCBhc3RfbWluZHdtKGFzdCwgMHgx RTZFMjA0MCkgfCAweDQxKTsKKworCS8qIFBhdGNoIGNvZGUgKi8KKwlkYXRhID0gYXN0X21pbmR3 bShhc3QsIDB4MUU2RTIwMEMpICYgMHhGOUZGRkZGRjsKKwlhc3RfbW91dGR3bShhc3QsIDB4MUU2 RTIwMEMsIGRhdGEgfCAweDEwMDAwMDAwKTsKKworCXJldHVybiB0cnVlOworfQorCit2b2lkIGFz dF9wb3N0X2NoaXBfMjUwMChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBhc3Rf cHJpdmF0ZSAqYXN0ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwl1MzIgdGVtcDsKKwl1OCByZWc7CisK KwlyZWcgPSBhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhk MCwgMHhmZik7CisJaWYgKChyZWcgJiAweDgwKSA9PSAwKSB7LyogdmdhIG9ubHkgKi8KKyAgCQkv KiBDbGVhciBidXMgbG9jayBjb25kaXRpb24gKi8KKyAgCQlhc3RfbW91dGR3bShhc3QsIDB4MWU2 MDAwMDAsMHhBRUVEMUEwMyk7CisJCWFzdF9tb3V0ZHdtKGFzdCwgMHgxZTYwMDA4NCwweDAwMDEw MDAwKTsKKwkJYXN0X21vdXRkd20oYXN0LCAweDFlNjAwMDg4LDB4MDAwMDAwMDApOworCQlhc3Rf bW91dGR3bShhc3QsIDB4MWU2ZTIwMDAsMHgxNjg4QThBOCk7CisJCWFzdF93cml0ZTMyKGFzdCwg MHhmMDA0LCAweDFlNmUwMDAwKTsKKwkJYXN0X3dyaXRlMzIoYXN0LCAweGYwMDAsIDB4MSk7CisJ CWFzdF93cml0ZTMyKGFzdCwgMHgxMjAwMCwgMHgxNjg4YThhOCk7CisJCXdoaWxlIChhc3RfcmVh ZDMyKGFzdCwgMHgxMjAwMCkgIT0gMHgxKQorCQkJOworCisJCWFzdF93cml0ZTMyKGFzdCwgMHgx MDAwMCwgMHhmYzYwMDMwOSk7CisJCXdoaWxlIChhc3RfcmVhZDMyKGFzdCwgMHgxMDAwMCkgIT0g MHgxKQorCQkJOworCisJCS8qIFNsb3cgZG93biBDUFUvQUhCIENMSyBpbiBWR0Egb25seSBtb2Rl ICovCisJCXRlbXAgPSBhc3RfcmVhZDMyKGFzdCwgMHgxMjAwOCk7CisJCXRlbXAgfD0gMHg3MzsK KwkJYXN0X3dyaXRlMzIoYXN0LCAweDEyMDA4LCB0ZW1wKTsKKworCQkvKiBSZXNldCBVU0IgcG9y dCB0byBwYXRjaCBVU0IgdW5rbm93biBkZXZpY2UgaXNzdWUgKi8KKyAJIAlhc3RfbW91dGR3bShh c3QsIDB4MWU2ZTIwOTAsIDB4MjAwMDAwMDApOworCQl0ZW1wICA9IGFzdF9taW5kd20oYXN0LCAw eDFlNmUyMDk0KTsKKwkJdGVtcCB8PSAweDAwMDA0MDAwOworCQlhc3RfbW91dGR3bShhc3QsIDB4 MWU2ZTIwOTQsIHRlbXApOworCQl0ZW1wICA9IGFzdF9taW5kd20oYXN0LCAweDFlNmUyMDcwKTsK KwkJaWYgKHRlbXAgJiAweDAwODAwMDAwKSB7CisJCQlhc3RfbW91dGR3bShhc3QsIDB4MWU2ZTIw N2MsIDB4MDA4MDAwMDApOworCQkJbWRlbGF5KDEwMCk7CisJCQlhc3RfbW91dGR3bShhc3QsIDB4 MWU2ZTIwNzAsIDB4MDA4MDAwMDApOworCQl9CisKKwkJaWYgKCFhc3RfZHJhbV9pbml0XzI1MDAo YXN0KSkgeworCQkJRFJNX0VSUk9SKCJEUkFNIGluaXQgZmFpbGVkICFcbiIpOworCQl9CisKKwkJ dGVtcCA9IGFzdF9taW5kd20oYXN0LCAweDFlNmUyMDQwKTsKKwkJYXN0X21vdXRkd20oYXN0LCAw eDFlNmUyMDQwLCB0ZW1wIHwgMHg0MCk7CisJfQorCisJLyogd2FpdCByZWFkeSAqLworCWRvIHsK KwkJcmVnID0gYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4 ZDAsIDB4ZmYpOworCX0gd2hpbGUgKChyZWcgJiAweDQwKSA9PSAwKTsKK30KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3RhYmxlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9h c3RfdGFibGVzLmgKaW5kZXggMzYwOGQ1YS4uMjRkYTRjMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FzdC9hc3RfdGFibGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfdGFi bGVzLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKICNkZWZpbmUgU3luY1BOCQkJKFBWU3luYyB8IE5IU3lu YykKICNkZWZpbmUgU3luY05QCQkJKE5WU3luYyB8IFBIU3luYykKICNkZWZpbmUgU3luY05OCQkJ KE5WU3luYyB8IE5IU3luYykKKyNkZWZpbmUgQVNUMjUwMFByZUNhdGNoQ1JUCQkweDAwMDA0MDAw CiAKIC8qIERDTEsgSW5kZXggKi8KICNkZWZpbmUgVkNMSzI1XzE3NSAgICAgCQkweDAwCkBAIC0x MDgsNiArMTA5LDM2IEBAIHN0YXRpYyBzdHJ1Y3QgYXN0X3ZiaW9zX2RjbGtfaW5mbyBkY2xrX3Rh YmxlW10gPSB7CiAJezB4M2IsIDB4MmMsIDB4ODF9LAkJCQkJLyogMUE6IFZDTEsxMThfMjUJKi8K IH07CiAKK3N0YXRpYyBzdHJ1Y3QgYXN0X3ZiaW9zX2RjbGtfaW5mbyBkY2xrX3RhYmxlX2FzdDI1 MDBbXSA9IHsKKwl7MHgyQywgMHhFNywgMHgwM30sCQkJCQkvKiAwMDogVkNMSzI1XzE3NQkqLwor CXsweDk1LCAweDYyLCAweDAzfSwJCQkJICAgICAgICAvKiAwMTogVkNMSzI4XzMyMgkqLworCXsw eDY3LCAweDYzLCAweDAxfSwJCQkJICAgICAgICAvKiAwMjogVkNMSzMxXzUgICAgICAgICAqLwor CXsweDc2LCAweDYzLCAweDAxfSwJCQkJICAgICAgICAvKiAwMzogVkNMSzM2ICAgICAgICAgCSov CisJezB4RUUsIDB4NjcsIDB4MDF9LAkJCQkgICAgICAgIC8qIDA0OiBWQ0xLNDAgICAgICAgICAg CSovCisJezB4ODIsIDB4NjIsIDB4MDF9LCAJCQkgICAgICAgIC8qIDA1OiBWQ0xLNDlfNSAgICAg ICAgCSovCisJezB4QzYsIDB4NjQsIDB4MDF9LCAgICAgICAgICAgICAgICAgICAgICAgIAkgICAg ICAgIC8qIDA2OiBWQ0xLNTAgICAgICAgICAgCSovCisJezB4OTQsIDB4NjIsIDB4MDF9LCAgICAg ICAgICAgICAgICAgICAgICAgIAkgICAgICAgIC8qIDA3OiBWQ0xLNTZfMjUgICAgICAgCSovCisJ ezB4ODAsIDB4NjQsIDB4MDB9LCAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgICAgIC8qIDA4 OiBWQ0xLNjUJCSovCisJezB4N0IsIDB4NjMsIDB4MDB9LCAgICAgICAgICAgICAgICAgICAgICAg IAkgICAgICAgIC8qIDA5OiBWQ0xLNzUJICAgICAgICAqLworCXsweDY3LCAweDYyLCAweDAwfSwJ CQkJICAgICAgICAvKiAwQTogVkNMSzc4Xzc1ICAgICAgIAkqLworCXsweDdDLCAweDYyLCAweDAw fSwgICAgICAgICAgICAgICAgICAgICAgICAJICAgICAgICAvKiAwQjogVkNMSzk0XzUgICAgICAg IAkqLworCXsweDhFLCAweDYyLCAweDAwfSwgICAgICAgICAgICAgICAgICAgICAgICAJICAgICAg ICAvKiAwQzogVkNMSzEwOCAgICAgICAgIAkqLworCXsweDg1LCAweDI0LCAweDAwfSwgICAgICAg ICAgICAgICAgICAgICAgICAJICAgICAgICAvKiAwRDogVkNMSzEzNSAgICAgICAgIAkqLworCXsw eDY3LCAweDIyLCAweDAwfSwgICAgICAgICAgICAgICAgICAgICAgICAJICAgICAgICAvKiAwRTog VkNMSzE1N181ICAgICAgIAkqLworCXsweDZBLCAweDIyLCAweDAwfSwJCQkJICAgICAgICAvKiAw RjogVkNMSzE2MiAgICAgICAgIAkqLworCXsweDRkLCAweDRjLCAweDgwfSwJCQkJICAgICAgICAv KiAxMDogVkNMSzE1NCAgICAgIAkqLworCXsweGE3LCAweDc4LCAweDgwfSwJCQkJCS8qIDExOiBW Q0xLODMuNSAgICAgICAgICovCisJezB4MjgsIDB4NDksIDB4ODB9LAkJCQkJLyogMTI6IFZDTEsx MDYuNSAgICAgICAgKi8KKwl7MHgzNywgMHg0OSwgMHg4MH0sCQkJCQkvKiAxMzogVkNMSzE0Ni4y NSAgICAgICAqLworCXsweDFmLCAweDQ1LCAweDgwfSwJCQkJCS8qIDE0OiBWQ0xLMTQ4LjUgICAg ICAgICovCisJezB4NDcsIDB4NmMsIDB4ODB9LAkJCQkJLyogMTU6IFZDTEs3MSAgICAgICAqLwor CXsweDI1LCAweDY1LCAweDgwfSwJCQkJCS8qIDE2OiBWQ0xLODguNzUgICAgKi8KKwl7MHg1OCwg MHgwMSwgMHg0Mn0sCQkJCQkvKiAxNzogVkNMSzExOSAgICAgICovCisJezB4MzIsIDB4NjcsIDB4 ODB9LAkJCQkgICAgLyogMTg6IFZDTEs4NV81ICAgICAqLworCXsweDZhLCAweDZkLCAweDgwfSwJ CQkJCS8qIDE5OiBWQ0xLOTdfNzUJKi8KKwl7MHg0NCwgMHgyMCwgMHg0M30sCQkJCQkvKiAxQTog VkNMSzExOF8yNQkqLworfTsKKwogc3RhdGljIHN0cnVjdCBhc3RfdmJpb3Nfc3RkdGFibGUgdmJp b3Nfc3RkdGFibGVbXSA9IHsKIAkvKiBNRF8yXzNfNDAwICovCiAJewpAQCAtMjQ0LDMyICsyNzUs MzIgQEAgc3RhdGljIHN0cnVjdCBhc3RfdmJpb3NfZW5odGFibGUgcmVzXzE2MDB4MTIwMFtdID0g ewogLyogMTY6OSAqLwogc3RhdGljIHN0cnVjdCBhc3RfdmJpb3NfZW5odGFibGUgcmVzXzEzNjB4 NzY4W10gPSB7CiAJezE3OTIsIDEzNjAsIDY0LDExMiwgNzk1LCAgNzY4LCAzLCA2LCBWQ0xLODVf NSwJICAgICAgICAgLyogNjBIeiAqLwotCSAoU3luY1BQIHwgQ2hhcng4RG90IHwgTGluZUNvbXBh cmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvKSwgNjAsIDEsIDB4MzkgfSwKKwkg KFN5bmNQUCB8IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNjcmVlbk1vZGUgfCBO ZXdNb2RlSW5mbyB8IEFTVDI1MDBQcmVDYXRjaENSVCksIDYwLCAxLCAweDM5IH0sCiAJezE3OTIs IDEzNjAsIDY0LDExMiwgNzk1LCAgNzY4LCAzLCA2LCBWQ0xLODVfNSwJICAgICAgICAgLyogZW5k ICovCiAJIChTeW5jUFAgfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5N b2RlIHwgTmV3TW9kZUluZm8pLCAweEZGLCAxLCAweDM5IH0sCiB9OwogCiBzdGF0aWMgc3RydWN0 IGFzdF92Ymlvc19lbmh0YWJsZSByZXNfMTYwMHg5MDBbXSA9IHsKIAl7MTc2MCwgMTYwMCwgNDgs IDMyLCA5MjYsICA5MDAsIDMsIDUsIFZDTEs5N183NSwJLyogNjBIeiBDVlQgUkIgKi8KLQkgKFN5 bmNOUCB8IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNjcmVlbk1vZGUgfCBOZXdN b2RlSW5mbyksIDYwLCAxLCAweDNBIH0sCi0JezIxMTIsIDE2MDAsIDg4LDE2OCwgOTM0LCAgOTAw LCAzLCA1LCBWQ0xLMTE4XzI1LAkvKiA2MEh6IENWVCAqLwotCSAoU3luY1BOIHwgQ2hhcng4RG90 IHwgTGluZUNvbXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvKSwgNjAsIDIs IDB4M0EgfSwKLQl7MjExMiwgMTYwMCwgODgsMTY4LCA5MzQsICA5MDAsIDMsIDUsIFZDTEsxMThf MjUsCS8qIDYwSHogQ1ZUICovCi0JIChTeW5jUE4gfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9m ZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUluZm8pLCAweEZGLCAyLCAweDNBIH0sCisJIChT eW5jTlAgfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3 TW9kZUluZm8gfCBBU1QyNTAwUHJlQ2F0Y2hDUlQpLCA2MCwgMSwgMHgzQSB9LAorICAgIHsyMTEy LCAxNjAwLCA4OCwxNjgsIDkzNCwgIDkwMCwgMywgNSwgVkNMSzExOF8yNSwJLyogNjBIeiBDVlQg Ki8KKyAgICAgKFN5bmNQTiB8IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNjcmVl bk1vZGUgfCBOZXdNb2RlSW5mbyksIDYwLCAyLCAweDNBIH0sCisgICAgezIxMTIsIDE2MDAsIDg4 LDE2OCwgOTM0LCAgOTAwLCAzLCA1LCBWQ0xLMTE4XzI1LAkvKiA2MEh6IENWVCAqLworICAgICAo U3luY1BOIHwgQ2hhcng4RG90IHwgTGluZUNvbXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5l d01vZGVJbmZvKSwgMHhGRiwgMiwgMHgzQSB9LAogfTsKIAogc3RhdGljIHN0cnVjdCBhc3RfdmJp b3NfZW5odGFibGUgcmVzXzE5MjB4MTA4MFtdID0gewogCXsyMjAwLCAxOTIwLCA4OCwgNDQsIDEx MjUsIDEwODAsIDQsIDUsIFZDTEsxNDhfNSwJLyogNjBIeiAqLwotCSAoU3luY05QIHwgQ2hhcng4 RG90IHwgTGluZUNvbXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvKSwgNjAs IDEsIDB4MzggfSwKKwkgKFN5bmNOUCB8IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwgV2lk ZVNjcmVlbk1vZGUgfCBOZXdNb2RlSW5mbyB8IEFTVDI1MDBQcmVDYXRjaENSVCksIDYwLCAxLCAw eDM4IH0sCiAJezIyMDAsIDE5MjAsIDg4LCA0NCwgMTEyNSwgMTA4MCwgNCwgNSwgVkNMSzE0OF81 LAkvKiA2MEh6ICovCi0JIChTeW5jTlAgfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdp ZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUluZm8pLCAweEZGLCAxLCAweDM4IH0sCisJIChTeW5jTlAg fCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUlu Zm8gfCBBU1QyNTAwUHJlQ2F0Y2hDUlQpLCAweEZGLCAxLCAweDM4IH0sCiB9OwogCiAKIC8qIDE2 OjEwICovCiBzdGF0aWMgc3RydWN0IGFzdF92Ymlvc19lbmh0YWJsZSByZXNfMTI4MHg4MDBbXSA9 IHsKIAl7MTQ0MCwgMTI4MCwgNDgsIDMyLCAgODIzLCAgODAwLCAzLCA2LCBWQ0xLNzEsCS8qIDYw SHogUkIgKi8KLQkgKFN5bmNOUCB8IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNj cmVlbk1vZGUgfCBOZXdNb2RlSW5mbyksIDYwLCAxLCAweDM1IH0sCisJIChTeW5jTlAgfCBDaGFy eDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUluZm8gfCBB U1QyNTAwUHJlQ2F0Y2hDUlQpLCA2MCwgMSwgMHgzNSB9LAogCXsxNjgwLCAxMjgwLCA3MiwxMjgs ICA4MzEsICA4MDAsIDMsIDYsIFZDTEs4M181LAkvKiA2MEh6ICovCiAJIChTeW5jUE4gfCBDaGFy eDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUluZm8pLCA2 MCwgMiwgMHgzNSB9LAogCXsxNjgwLCAxMjgwLCA3MiwxMjgsICA4MzEsICA4MDAsIDMsIDYsIFZD TEs4M181LAkvKiA2MEh6ICovCkBAIC0yNzksNyArMzEwLDcgQEAgc3RhdGljIHN0cnVjdCBhc3Rf dmJpb3NfZW5odGFibGUgcmVzXzEyODB4ODAwW10gPSB7CiAKIHN0YXRpYyBzdHJ1Y3QgYXN0X3Zi aW9zX2VuaHRhYmxlIHJlc18xNDQweDkwMFtdID0gewogCXsxNjAwLCAxNDQwLCA0OCwgMzIsICA5 MjYsICA5MDAsIDMsIDYsIFZDTEs4OF83NSwJLyogNjBIeiBSQiAqLwotCSAoU3luY05QIHwgQ2hh cng4RG90IHwgTGluZUNvbXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvKSwg NjAsIDEsIDB4MzYgfSwKKwkgKFN5bmNOUCB8IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwg V2lkZVNjcmVlbk1vZGUgfCBOZXdNb2RlSW5mbyB8IEFTVDI1MDBQcmVDYXRjaENSVCksIDYwLCAx LCAweDM2IH0sCiAJezE5MDQsIDE0NDAsIDgwLDE1MiwgIDkzNCwgIDkwMCwgMywgNiwgVkNMSzEw Nl81LAkvKiA2MEh6ICovCiAJIChTeW5jUE4gfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8 IFdpZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUluZm8pLCA2MCwgMiwgMHgzNiB9LAogCXsxOTA0LCAx NDQwLCA4MCwxNTIsICA5MzQsICA5MDAsIDMsIDYsIFZDTEsxMDZfNSwJLyogNjBIeiAqLwpAQCAt Mjg4LDcgKzMxOSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYXN0X3ZiaW9zX2VuaHRhYmxlIHJlc18xNDQw eDkwMFtdID0gewogCiBzdGF0aWMgc3RydWN0IGFzdF92Ymlvc19lbmh0YWJsZSByZXNfMTY4MHgx MDUwW10gPSB7CiAJezE4NDAsIDE2ODAsIDQ4LCAzMiwgMTA4MCwgMTA1MCwgMywgNiwgVkNMSzEx OSwJLyogNjBIeiBSQiAqLwotCSAoU3luY05QIHwgQ2hhcng4RG90IHwgTGluZUNvbXBhcmVPZmYg fCBXaWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvKSwgNjAsIDEsIDB4MzcgfSwKKwkgKFN5bmNO UCB8IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNjcmVlbk1vZGUgfCBOZXdNb2Rl SW5mbyB8IEFTVDI1MDBQcmVDYXRjaENSVCksIDYwLCAxLCAweDM3IH0sCiAJezIyNDAsIDE2ODAs MTA0LDE3NiwgMTA4OSwgMTA1MCwgMywgNiwgVkNMSzE0Nl8yNSwJLyogNjBIeiAqLwogCSAoU3lu Y1BOIHwgQ2hhcng4RG90IHwgTGluZUNvbXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5ld01v ZGVJbmZvKSwgNjAsIDIsIDB4MzcgfSwKIAl7MjI0MCwgMTY4MCwxMDQsMTc2LCAxMDg5LCAxMDUw LCAzLCA2LCBWQ0xLMTQ2XzI1LAkvKiA2MEh6ICovCkBAIC0yOTcsOSArMzI4LDkgQEAgc3RhdGlj IHN0cnVjdCBhc3RfdmJpb3NfZW5odGFibGUgcmVzXzE2ODB4MTA1MFtdID0gewogCiBzdGF0aWMg c3RydWN0IGFzdF92Ymlvc19lbmh0YWJsZSByZXNfMTkyMHgxMjAwW10gPSB7CiAJezIwODAsIDE5 MjAsIDQ4LCAzMiwgMTIzNSwgMTIwMCwgMywgNiwgVkNMSzE1NCwJLyogNjBIeiBSQiovCi0JIChT eW5jTlAgfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3 TW9kZUluZm8pLCA2MCwgMSwgMHgzNCB9LAorCSAoU3luY05QIHwgQ2hhcng4RG90IHwgTGluZUNv bXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvIHwgQVNUMjUwMFByZUNhdGNo Q1JUKSwgNjAsIDEsIDB4MzQgfSwKIAl7MjA4MCwgMTkyMCwgNDgsIDMyLCAxMjM1LCAxMjAwLCAz LCA2LCBWQ0xLMTU0LAkvKiA2MEh6IFJCICovCi0JIChTeW5jTlAgfCBDaGFyeDhEb3QgfCBMaW5l Q29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUluZm8pLCAweEZGLCAxLCAweDM0 IH0sCisJIChTeW5jTlAgfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5N b2RlIHwgTmV3TW9kZUluZm8gfCBBU1QyNTAwUHJlQ2F0Y2hDUlQpLCAweEZGLCAxLCAweDM0IH0s CiB9OwogCiAjZW5kaWYKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo=