From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Y.C. Chen" Subject: [PATCH] drm/ast: Support AST2500 Date: Wed, 11 Jan 2017 10:57:53 +0800 Message-ID: <1484103473-22931-1-git-send-email-yc_chen@aspeedtech.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from msr19.hinet.net (msr19.hinet.net [168.95.4.119]) by gabe.freedesktop.org (Postfix) with ESMTP id 4BA176E36B for ; Wed, 11 Jan 2017 04:52:31 +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+CgpTaWduZWQtb2ZmLWJ5 OiBZLkMuIENoZW4gPHljX2NoZW5AYXNwZWVkdGVjaC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJt L2FzdC9hc3RfZHJ2LmggICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5j ICAgfCAgMjcgKystCiBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMgICB8ICAyNSArLQog ZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jICAgfCA1MTAgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF90YWJsZXMuaCB8 ICA1NyArKysrLQogNSBmaWxlcyBjaGFuZ2VkLCA1OTYgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaAppbmRleCA5MDgwMTFkLi43ZTQwNmNlIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v YXN0L2FzdF9kcnYuaApAQCAtNjQsNiArNjQsNyBAQCBlbnVtIGFzdF9jaGlwIHsKIAlBU1QyMTUw LAogCUFTVDIzMDAsCiAJQVNUMjQwMCwKKwlBU1QyNTAwLAogCUFTVDExODAsCiB9OwogCkBAIC04 MCw2ICs4MSw3IEBAIGVudW0gYXN0X3R4X2NoaXAgewogI2RlZmluZSBBU1RfRFJBTV8xR3gzMiAg IDMKICNkZWZpbmUgQVNUX0RSQU1fMkd4MTYgICA2CiAjZGVmaW5lIEFTVF9EUkFNXzRHeDE2ICAg NworI2RlZmluZSBBU1RfRFJBTV84R3gxNiAgIDgKIAogc3RydWN0IGFzdF9mYmRldjsKIApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jIGIvZHJpdmVycy9ncHUvZHJt L2FzdC9hc3RfbWFpbi5jCmluZGV4IGY3NWM2NDIuLjQwNDYwY2UgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9t YWluLmMKQEAgLTczLDcgKzczLDEwIEBAIHN0YXRpYyBpbnQgYXN0X2RldGVjdF9jaGlwKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgKm5lZWRfcG9zdCkKIAkJYXN0LT5jaGlwID0gQVNUMTEw MDsKIAkJRFJNX0lORk8oIkFTVCAxMTgwIGRldGVjdGVkXG4iKTsKIAl9IGVsc2UgewotCQlpZiAo ZGV2LT5wZGV2LT5yZXZpc2lvbiA+PSAweDMwKSB7CisJCWlmIChkZXYtPnBkZXYtPnJldmlzaW9u ID49IDB4NDApIHsKKwkJCWFzdC0+Y2hpcCA9IEFTVDI1MDA7CisJCQlEUk1fSU5GTygiQVNUIDI1 MDAgZGV0ZWN0ZWRcbiIpOworCQl9IGVsc2UgaWYgKGRldi0+cGRldi0+cmV2aXNpb24gPj0gMHgz MCkgewogCQkJYXN0LT5jaGlwID0gQVNUMjQwMDsKIAkJCURSTV9JTkZPKCJBU1QgMjQwMCBkZXRl Y3RlZFxuIik7CiAJCX0gZWxzZSBpZiAoZGV2LT5wZGV2LT5yZXZpc2lvbiA+PSAweDIwKSB7CkBA IC0xNDksNiArMTUyLDggQEAgc3RhdGljIGludCBhc3RfZGV0ZWN0X2NoaXAoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgYm9vbCAqbmVlZF9wb3N0KQogCQkJCWFzdC0+c3VwcG9ydF93aWRlX3NjcmVl biA9IHRydWU7CiAJCQlpZiAoYXN0LT5jaGlwID09IEFTVDI0MDAgJiYgZGF0YSA9PSAweDEwMCkg LyogYXN0MTQwMCAqLwogCQkJCWFzdC0+c3VwcG9ydF93aWRlX3NjcmVlbiA9IHRydWU7CisJCQlp ZiAoYXN0LT5jaGlwID09IEFTVDI1MDAgJiYgZGF0YSA9PSAweDEwMCkgLyogYXN0MjUxMCAqLwor CQkJCWFzdC0+c3VwcG9ydF93aWRlX3NjcmVlbiA9IHRydWU7CiAJCX0KIAkJYnJlYWs7CiAJfQpA QCAtMjMzLDcgKzIzOCwyNCBAQCBzdGF0aWMgaW50IGFzdF9nZXRfZHJhbV9pbmZvKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAJZWxzZQogCQlhc3QtPmRyYW1fYnVzX3dpZHRoID0gMzI7CiAKLQlp ZiAoYXN0LT5jaGlwID09IEFTVDIzMDAgfHwgYXN0LT5jaGlwID09IEFTVDI0MDApIHsKKwlpZiAo YXN0LT5jaGlwID09IEFTVDI1MDApIHsKKwkJc3dpdGNoIChkYXRhICYgMHgwMykgeworCQljYXNl IDA6CisJCQlhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFNXzFHeDE2OworCQkJYnJlYWs7CisJCWRl ZmF1bHQ6CisJCWNhc2UgMToKKwkJCWFzdC0+ZHJhbV90eXBlID0gQVNUX0RSQU1fMkd4MTY7CisJ CQlicmVhazsKKwkJY2FzZSAyOgorCQkJYXN0LT5kcmFtX3R5cGUgPSBBU1RfRFJBTV80R3gxNjsK KwkJCWJyZWFrOworCQljYXNlIDM6CisJCQlhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFNXzhHeDE2 OworCQkJYnJlYWs7CisJCX0KKwl9CisJZWxzZSBpZiAoYXN0LT5jaGlwID09IEFTVDIzMDAgfHwg YXN0LT5jaGlwID09IEFTVDI0MDApIHsKIAkJc3dpdGNoIChkYXRhICYgMHgwMykgewogCQljYXNl IDA6CiAJCQlhc3QtPmRyYW1fdHlwZSA9IEFTVF9EUkFNXzUxMk14MTY7CkBAIC00NTYsNiArNDc4 LDcgQEAgaW50IGFzdF9kcml2ZXJfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25l ZCBsb25nIGZsYWdzKQogCSAgICBhc3QtPmNoaXAgPT0gQVNUMjIwMCB8fAogCSAgICBhc3QtPmNo aXAgPT0gQVNUMjMwMCB8fAogCSAgICBhc3QtPmNoaXAgPT0gQVNUMjQwMCB8fAorCSAgICBhc3Qt PmNoaXAgPT0gQVNUMjUwMCB8fAogCSAgICBhc3QtPmNoaXAgPT0gQVNUMTE4MCkgewogCQlkZXYt Pm1vZGVfY29uZmlnLm1heF93aWR0aCA9IDE5MjA7CiAJCWRldi0+bW9kZV9jb25maWcubWF4X2hl aWdodCA9IDIwNDg7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMg Yi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMKaW5kZXggZTI2Yzk4Zi4uMjQyY2E3ZiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbW9kZS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hc3QvYXN0X21vZGUuYwpAQCAtMjcxLDcgKzI3MSwxMCBAQCBzdGF0aWMgdm9pZCBh c3Rfc2V0X2NydGNfcmVnKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZAogewogCXN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gY3J0Yy0+ZGV2LT5kZXZf cHJpdmF0ZTsKIAl1OCBqcmVnMDUgPSAwLCBqcmVnMDcgPSAwLCBqcmVnMDkgPSAwLCBqcmVnQUMg PSAwLCBqcmVnQUQgPSAwLCBqcmVnQUUgPSAwOwotCXUxNiB0ZW1wOworCXUxNiB0ZW1wLCBwcmVj YWNoZSA9IDA7CisKKyAgICBpZiAoKGFzdC0+Y2hpcCA9PSBBU1QyNTAwKSAmJiAodmJpb3NfbW9k ZS0+ZW5oX3RhYmxlLT5mbGFncyAmIEFTVDI1MDBQcmVDYXRjaENSVCkpCisgICAgCXByZWNhY2hl ID0gNDA7CiAKIAlhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwg MHgxMSwgMHg3ZiwgMHgwMCk7CiAKQEAgLTI5NywxMiArMzAwLDEyIEBAIHN0YXRpYyB2b2lkIGFz dF9zZXRfY3J0Y19yZWcoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqbW9kCiAJCWpyZWdBRCB8PSAweDAxOyAgLyogSEJFIERbNV0gKi8KIAlhc3Rfc2V0X2lu ZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHgwMywgMHhFMCwgKHRlbXAgJiAw eDFmKSk7CiAKLQl0ZW1wID0gKG1vZGUtPmNydGNfaHN5bmNfc3RhcnQgPj4gMykgLSAxOworCXRl bXAgPSAoKG1vZGUtPmNydGNfaHN5bmNfc3RhcnQtcHJlY2FjaGUpID4+IDMpIC0gMTsKIAlpZiAo dGVtcCAmIDB4MTAwKQogCQlqcmVnQUMgfD0gMHg0MDsgLyogSFJTIERbNV0gKi8KIAlhc3Rfc2V0 X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHgwNCwgMHgwMCwgdGVtcCk7 CiAKLQl0ZW1wID0gKChtb2RlLT5jcnRjX2hzeW5jX2VuZCA+PiAzKSAtIDEpICYgMHgzZjsKKwl0 ZW1wID0gKCgobW9kZS0+Y3J0Y19oc3luY19lbmQtcHJlY2FjaGUpID4+IDMpIC0gMSkgJiAweDNm OwogCWlmICh0ZW1wICYgMHgyMCkKIAkJanJlZ0FEIHw9IDB4MDQ7IC8qIEhSRSBEWzVdICovCiAJ YXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4MDUsIDB4NjAs ICh1OCkoKHRlbXAgJiAweDFmKSB8IGpyZWcwNSkpOwpAQCAtMzYzLDYgKzM2NiwxMSBAQCBzdGF0 aWMgdm9pZCBhc3Rfc2V0X2NydGNfcmVnKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKm1vZAogCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9f Q1JUQ19QT1JULCAweDA5LCAweGRmLCBqcmVnMDkpOwogCWFzdF9zZXRfaW5kZXhfcmVnX21hc2so YXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweEFFLCAweDAwLCAoanJlZ0FFIHwgMHg4MCkpOwogCisg ICAgaWYgKHByZWNhY2hlKQorCQlhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NS VENfUE9SVCwgMHhiNiwgMHgzZiwgMHg4MCk7CisgICAgZWxzZQorCQlhc3Rfc2V0X2luZGV4X3Jl Z19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhiNiwgMHgzZiwgMHgwMCk7CisKIAlhc3Rf c2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHgxMSwgMHg3ZiwgMHg4 MCk7CiB9CiAKQEAgLTM4MywxMiArMzkxLDE1IEBAIHN0YXRpYyB2b2lkIGFzdF9zZXRfZGNsa19y ZWcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vCiAJ c3RydWN0IGFzdF9wcml2YXRlICphc3QgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBhc3Rf dmJpb3NfZGNsa19pbmZvICpjbGtfaW5mbzsKIAotCWNsa19pbmZvID0gJmRjbGtfdGFibGVbdmJp b3NfbW9kZS0+ZW5oX3RhYmxlLT5kY2xrX2luZGV4XTsKKwlpZiAoYXN0LT5jaGlwID09IEFTVDI1 MDApCisJCWNsa19pbmZvID0gJmRjbGtfdGFibGVfYXN0MjUwMFt2Ymlvc19tb2RlLT5lbmhfdGFi bGUtPmRjbGtfaW5kZXhdOworCWVsc2UKKwkJY2xrX2luZm8gPSAmZGNsa190YWJsZVt2Ymlvc19t b2RlLT5lbmhfdGFibGUtPmRjbGtfaW5kZXhdOwogCiAJYXN0X3NldF9pbmRleF9yZWdfbWFzayhh c3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4YzAsIDB4MDAsIGNsa19pbmZvLT5wYXJhbTEpOwogCWFz dF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweGMxLCAweDAwLCBj bGtfaW5mby0+cGFyYW0yKTsKIAlhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NS VENfUE9SVCwgMHhiYiwgMHgwZiwKLQkJCSAgICAgICAoY2xrX2luZm8tPnBhcmFtMyAmIDB4ODAp IHwgKChjbGtfaW5mby0+cGFyYW0zICYgMHgzKSA8PCA0KSk7CisJCQkgICAgICAgKGNsa19pbmZv LT5wYXJhbTMgJiAweGMwKSB8ICgoY2xrX2luZm8tPnBhcmFtMyAmIDB4MykgPDwgNCkpOwogfQog CiBzdGF0aWMgdm9pZCBhc3Rfc2V0X2V4dF9yZWcoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKQEAgLTQyMSw3ICs0MzIsNyBAQCBzdGF0aWMgdm9p ZCBhc3Rfc2V0X2V4dF9yZWcoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqbW9kZQogCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19Q T1JULCAweGE4LCAweGZkLCBqcmVnQTgpOwogCiAJLyogU2V0IFRocmVzaG9sZCAqLwotCWlmIChh c3QtPmNoaXAgPT0gQVNUMjMwMCB8fCBhc3QtPmNoaXAgPT0gQVNUMjQwMCkgeworCWlmIChhc3Qt PmNoaXAgPT0gQVNUMjMwMCB8fCBhc3QtPmNoaXAgPT0gQVNUMjQwMCB8fCBhc3QtPmNoaXAgPT0g QVNUMjUwMCkgewogCQlhc3Rfc2V0X2luZGV4X3JlZyhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4 YTcsIDB4NzgpOwogCQlhc3Rfc2V0X2luZGV4X3JlZyhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4 YTYsIDB4NjApOwogCX0gZWxzZSBpZiAoYXN0LT5jaGlwID09IEFTVDIxMDAgfHwKQEAgLTc5NCw3 ICs4MDUsNyBAQCBzdGF0aWMgaW50IGFzdF9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsCiAJCWlmICgobW9kZS0+aGRpc3BsYXkgPT0gMTYwMCkgJiYgKG1vZGUtPnZk aXNwbGF5ID09IDkwMCkpCiAJCQlyZXR1cm4gTU9ERV9PSzsKIAotCQlpZiAoKGFzdC0+Y2hpcCA9 PSBBU1QyMTAwKSB8fCAoYXN0LT5jaGlwID09IEFTVDIyMDApIHx8IChhc3QtPmNoaXAgPT0gQVNU MjMwMCkgfHwgKGFzdC0+Y2hpcCA9PSBBU1QyNDAwKSB8fCAoYXN0LT5jaGlwID09IEFTVDExODAp KSB7CisJCWlmICgoYXN0LT5jaGlwID09IEFTVDIxMDApIHx8IChhc3QtPmNoaXAgPT0gQVNUMjIw MCkgfHwgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwKSB8fCAoYXN0LT5jaGlwID09IEFTVDI0MDApIHx8 IChhc3QtPmNoaXAgPT0gQVNUMjUwMCkgfHwgKGFzdC0+Y2hpcCA9PSBBU1QxMTgwKSkgewogCQkJ aWYgKChtb2RlLT5oZGlzcGxheSA9PSAxOTIwKSAmJiAobW9kZS0+dmRpc3BsYXkgPT0gMTA4MCkp CiAJCQkJcmV0dXJuIE1PREVfT0s7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3Qv YXN0X3Bvc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3Bvc3QuYwppbmRleCA4MTBjNTFk Li4wNWQ3ZDM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9wb3N0LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j bHVkZSAiYXN0X2RyYW1fdGFibGVzLmgiCiAKIHN0YXRpYyB2b2lkIGFzdF9pbml0X2RyYW1fMjMw MChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK3N0YXRpYyB2b2lkIGFzdF9pbml0X2RyYW1fMjUw MChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIAogdm9pZCBhc3RfZW5hYmxlX3ZnYShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQogewpAQCAtODIsNyArODMsNyBAQCBib29sIGFzdF9pc192Z2FfZW5h YmxlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCWZvciAoaSA9IDB4ODE7IGkgPD0gMHg4Zjsg aSsrKQogCQlhc3Rfc2V0X2luZGV4X3JlZyhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIGksIDB4MDAp OwogCi0JaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwIHx8IGFzdC0+Y2hpcCA9PSBBU1QyNDAwKSB7 CisJaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwIHx8IGFzdC0+Y2hpcCA9PSBBU1QyNDAwIHx8IGFz dC0+Y2hpcCA9PSBBU1QyNTAwKSB7CiAJCWlmIChkZXYtPnBkZXYtPnJldmlzaW9uID49IDB4MjAp CiAJCQlleHRfcmVnX2luZm8gPSBleHRyZWdpbmZvX2FzdDIzMDA7CiAJCWVsc2UKQEAgLTEwNiw3 ICsxMDcsNyBAQCBib29sIGFzdF9pc192Z2FfZW5hYmxlZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogCiAJLyogRW5hYmxlIFJBTURBQyBmb3IgQTEgKi8KIAlyZWcgPSAweDA0OwotCWlmIChhc3Qt PmNoaXAgPT0gQVNUMjMwMCB8fCBhc3QtPmNoaXAgPT0gQVNUMjQwMCkKKwlpZiAoYXN0LT5jaGlw ID09IEFTVDIzMDAgfHwgYXN0LT5jaGlwID09IEFTVDI0MDAgfHwgYXN0LT5jaGlwID09IEFTVDI1 MDApCiAJCXJlZyB8PSAweDIwOwogCWFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9f Q1JUQ19QT1JULCAweGI2LCAweGZmLCByZWcpOwogfQpAQCAtMzc5LDcgKzM4MCw5IEBAIHZvaWQg YXN0X3Bvc3RfZ3B1KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJYXN0X29wZW5fa2V5KGFzdCk7 CiAJYXN0X3NldF9kZWZfZXh0X3JlZyhkZXYpOwogCi0JaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAw IHx8IGFzdC0+Y2hpcCA9PSBBU1QyNDAwKQorCWlmIChhc3QtPmNoaXAgPT0gQVNUMjUwMCkKKwkJ YXN0X2luaXRfZHJhbV8yNTAwKGRldik7CisJZWxzZSBpZiAoYXN0LT5jaGlwID09IEFTVDIzMDAg fHwgYXN0LT5jaGlwID09IEFTVDI0MDApCiAJCWFzdF9pbml0X2RyYW1fMjMwMChkZXYpOwogCWVs c2UKIAkJYXN0X2luaXRfZHJhbV9yZWcoZGV2KTsKQEAgLTE2NTUsMyArMTY1OCw1MDQgQEAgc3Rh dGljIHZvaWQgYXN0X2luaXRfZHJhbV8yMzAwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJfSB3 aGlsZSAoKHJlZyAmIDB4NDApID09IDApOwogfQogCisvKgorICogQVNUMjUwMCBEUkFNIHNldHRp bmdzIG1vZHVsZXMKKyAqLworI2RlZmluZSBSRUdUQkxfTlVNICAgICAgICAgICAxNworI2RlZmlu ZSBSRUdJRFhfMDEwICAgICAgICAgICAwCisjZGVmaW5lIFJFR0lEWF8wMTQgICAgICAgICAgIDEK KyNkZWZpbmUgUkVHSURYXzAxOCAgICAgICAgICAgMgorI2RlZmluZSBSRUdJRFhfMDIwICAgICAg ICAgICAzCisjZGVmaW5lIFJFR0lEWF8wMjQgICAgICAgICAgIDQKKyNkZWZpbmUgUkVHSURYXzAy QyAgICAgICAgICAgNQorI2RlZmluZSBSRUdJRFhfMDMwICAgICAgICAgICA2CisjZGVmaW5lIFJF R0lEWF8yMTQgICAgICAgICAgIDcKKyNkZWZpbmUgUkVHSURYXzJFMCAgICAgICAgICAgOAorI2Rl ZmluZSBSRUdJRFhfMkU0ICAgICAgICAgICA5CisjZGVmaW5lIFJFR0lEWF8yRTggICAgICAgICAg IDEwCisjZGVmaW5lIFJFR0lEWF8yRUMgICAgICAgICAgIDExCisjZGVmaW5lIFJFR0lEWF8yRjAg ICAgICAgICAgIDEyCisjZGVmaW5lIFJFR0lEWF8yRjQgICAgICAgICAgIDEzCisjZGVmaW5lIFJF R0lEWF8yRjggICAgICAgICAgIDE0CisjZGVmaW5lIFJFR0lEWF9SRkMgICAgICAgICAgIDE1Cisj ZGVmaW5lIFJFR0lEWF9QTEwgICAgICAgICAgIDE2CisKK3N0YXRpYyB1MzIgZGRyM18xNjAwX3Rp bWluZ190YWJsZVtSRUdUQkxfTlVNXSA9IHsKKzB4NjQ2MDREMzgsICAgICAgICAgICAgICAgICAg LyogMHgwMTAgKi8KKzB4Mjk2OTA1OTksICAgICAgICAgICAgICAgICAgLyogMHgwMTQgKi8KKzB4 MDAwMDAzMDAsICAgICAgICAgICAgICAgICAgLyogMHgwMTggKi8KKzB4MDAwMDAwMDAsICAgICAg ICAgICAgICAgICAgLyogMHgwMjAgKi8KKzB4MDAwMDAwMDAsICAgICAgICAgICAgICAgICAgLyog MHgwMjQgKi8KKzB4MDIxODFFNzAsICAgICAgICAgICAgICAgICAgLyogMHgwMkMgKi8KKzB4MDAw MDAwNDAsICAgICAgICAgICAgICAgICAgLyogMHgwMzAgKi8KKzB4MDAwMDAwMjQsICAgICAgICAg ICAgICAgICAgLyogMHgyMTQgKi8KKzB4MDIwMDEzMDAsICAgICAgICAgICAgICAgICAgLyogMHgy RTAgKi8KKzB4MEUwMDAwQTAsICAgICAgICAgICAgICAgICAgLyogMHgyRTQgKi8KKzB4MDAwRTAw MUIsICAgICAgICAgICAgICAgICAgLyogMHgyRTggKi8KKzB4MzVCOEMxMDUsICAgICAgICAgICAg ICAgICAgLyogMHgyRUMgKi8KKzB4MDgwOTA0MDgsICAgICAgICAgICAgICAgICAgLyogMHgyRjAg Ki8KKzB4OUIwMDA4MDAsICAgICAgICAgICAgICAgICAgLyogMHgyRjQgKi8KKzB4MEU0MDBBMDAs ICAgICAgICAgICAgICAgICAgLyogMHgyRjggKi8KKzB4OTk3MTQ1MkYsICAgICAgICAgICAgICAg ICAgLyogdFJGQyAgKi8KKzB4MDAwMDcxQzF9OyAgICAgICAgICAgICAgICAgLyogUExMICAgKi8K Kworc3RhdGljIHUzMiBkZHI0XzE2MDBfdGltaW5nX3RhYmxlW1JFR1RCTF9OVU1dID0geworMHg2 MzYwNEUzNywgICAgICAgICAgICAgICAgICAvKiAweDAxMCAqLworMHhFOTdBRkE5OSwgICAgICAg ICAgICAgICAgICAvKiAweDAxNCAqLworMHgwMDAxOTAwMCwgICAgICAgICAgICAgICAgICAvKiAw eDAxOCAqLworMHgwODAwMDAwMCwgICAgICAgICAgICAgICAgICAvKiAweDAyMCAqLworMHgwMDAw MDQwMCwgICAgICAgICAgICAgICAgICAvKiAweDAyNCAqLworMHgwMDAwMDQxMCwgICAgICAgICAg ICAgICAgICAvKiAweDAyQyAqLworMHgwMDAwMDEwMSwgICAgICAgICAgICAgICAgICAvKiAweDAz MCAqLworMHgwMDAwMDAyNCwgICAgICAgICAgICAgICAgICAvKiAweDIxNCAqLworMHgwMzAwMjkw MCwgICAgICAgICAgICAgICAgICAvKiAweDJFMCAqLworMHgwRTAwMDBBMCwgICAgICAgICAgICAg ICAgICAvKiAweDJFNCAqLworMHgwMDBFMDAxQywgICAgICAgICAgICAgICAgICAvKiAweDJFOCAq LworMHgzNUI4QzEwNiwgICAgICAgICAgICAgICAgICAvKiAweDJFQyAqLworMHgwODA4MDYwNywg ICAgICAgICAgICAgICAgICAvKiAweDJGMCAqLworMHg5QjAwMDkwMCwgICAgICAgICAgICAgICAg ICAvKiAweDJGNCAqLworMHgwRTQwMEEwMCwgICAgICAgICAgICAgICAgICAvKiAweDJGOCAqLwor MHg5OTcxNDU0NSwgICAgICAgICAgICAgICAgICAvKiB0UkZDICAqLworMHgwMDAwNzFDMX07ICAg ICAgICAgICAgICAgICAvKiBQTEwgICAqLworCitzdGF0aWMgdTMyIE1NQ1Rlc3RCdXJzdF9BU1Qy NTAwKHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0LCB1MzIgZGF0YWdlbikKK3sKKyAgdTMyIGRhdGEs IHRpbWVjbnQ7CisKKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDcwLCAweDAwMDAwMDAwKTsK KyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDcwLCAweDAwMDAwMEMxIHwgKGRhdGFnZW4gPDwg MykpOworICB0aW1lY250ID0gMDsKKyAgZG97CisgICAgZGF0YSA9IGFzdF9taW5kd20oYXN0LCAw eDFFNkUwMDcwKSAmIDB4MzAwMDsKKyAgICBpZihkYXRhICYgMHgyMDAwKXsKKyAgICAgIHJldHVy bigwKTsKKyAgICB9CisgICAgaWYoKyt0aW1lY250ID4gVElNRU9VVCl7CisgICAgICBhc3RfbW91 dGR3bShhc3QsIDB4MUU2RTAwNzAsIDB4MDAwMDAwMDApOworICAgICAgcmV0dXJuKDApOworICAg IH0KKyAgfXdoaWxlKCFkYXRhKTsKKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDcwLCAweDAw MDAwMDAwKTsKKyAgcmV0dXJuKDEpOworfQorCitzdGF0aWMgdTMyIE1NQ1Rlc3RTaW5nbGVfQVNU MjUwMChzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCwgdTMyIGRhdGFnZW4pCit7CisgIHUzMiBkYXRh LCB0aW1lY250OworCisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDA3MCwgMHgwMDAwMDAwMCk7 CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDA3MCwgMHgwMDAwMDA4NSB8IChkYXRhZ2VuIDw8 IDMpKTsKKyAgdGltZWNudCA9IDA7CisgIGRveworICAgIGRhdGEgPSBhc3RfbWluZHdtKGFzdCwg MHgxRTZFMDA3MCkgJiAweDMwMDA7CisgICAgaWYoZGF0YSAmIDB4MjAwMCl7CisgICAgICByZXR1 cm4oMCk7CisgICAgfQorICAgIGlmKCsrdGltZWNudCA+IFRJTUVPVVQpeworICAgICAgYXN0X21v dXRkd20oYXN0LCAweDFFNkUwMDcwLCAweDAwMDAwMDAwKTsKKyAgICAgIHJldHVybigwKTsKKyAg ICB9CisgIH13aGlsZSghZGF0YSk7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDA3MCwgMHgw MDAwMDAwMCk7CisgIHJldHVybigxKTsKK30KKworc3RhdGljIHUzMiBDQlJUZXN0X0FTVDI1MDAo c3RydWN0IGFzdF9wcml2YXRlICphc3QpCit7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDA3 NCwgMHgwMDAwRkZGRik7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDA3QywgMHhGRjAwRkYw MCk7CisgIGlmKCFNTUNUZXN0QnVyc3RfQVNUMjUwMChhc3QsIDApKSByZXR1cm4oMCk7CisgIGlm KCFNTUNUZXN0U2luZ2xlX0FTVDI1MDAoYXN0LCAwKSkgcmV0dXJuKDApOworICByZXR1cm4oMSk7 Cit9CisKK3N0YXRpYyBib29sIEREUlRlc3RfQVNUMjUwMChzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFz dCkKK3sKKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDc0LCAweDAwMDBGRkZGKTsKKyAgYXN0 X21vdXRkd20oYXN0LCAweDFFNkUwMDdDLCAweEZGMDBGRjAwKTsKKyAgaWYoIU1NQ1Rlc3RCdXJz dF9BU1QyNTAwKGFzdCwgMCkpIHJldHVybigwKTsKKyAgaWYoIU1NQ1Rlc3RCdXJzdF9BU1QyNTAw KGFzdCwgMSkpIHJldHVybigwKTsKKyAgaWYoIU1NQ1Rlc3RCdXJzdF9BU1QyNTAwKGFzdCwgMikp IHJldHVybigwKTsKKyAgaWYoIU1NQ1Rlc3RCdXJzdF9BU1QyNTAwKGFzdCwgMykpIHJldHVybigw KTsKKyAgaWYoIU1NQ1Rlc3RTaW5nbGVfQVNUMjUwMChhc3QsIDApKSByZXR1cm4oMCk7CisgIHJl dHVybigxKTsKK30KKworc3RhdGljIHZvaWQgRERSX0luaXRfQ29tbW9uKHN0cnVjdCBhc3RfcHJp dmF0ZSAqYXN0KQoreworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMzQsMHgwMDAyMDA4MCk7 CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAwOCwweDIwMDMwMDBGKTsKKyAgYXN0X21vdXRk d20oYXN0LCAweDFFNkUwMDM4LDB4MDAwMDBGRkYpOworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2 RTAwNDAsMHg4ODQ0ODg0NCk7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDA0NCwweDI0NDIy Mjg4KTsKKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDQ4LDB4MjIyMjIyMjIpOworICBhc3Rf bW91dGR3bShhc3QsIDB4MUU2RTAwNEMsMHgyMjIyMjIyMik7CisgIGFzdF9tb3V0ZHdtKGFzdCwg MHgxRTZFMDA1MCwweDgwMDAwMDAwKTsKKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMjA4LDB4 MDAwMDAwMDApOworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyMTgsMHgwMDAwMDAwMCk7Cisg IGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDIyMCwweDAwMDAwMDAwKTsKKyAgYXN0X21vdXRkd20o YXN0LCAweDFFNkUwMjI4LDB4MDAwMDAwMDApOworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAy MzAsMHgwMDAwMDAwMCk7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDJBOCwweDAwMDAwMDAw KTsKKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkIwLDB4MDAwMDAwMDApOworICBhc3RfbW91 dGR3bShhc3QsIDB4MUU2RTAyNDAsMHg4NjAwMDAwMCk7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgx RTZFMDI0NCwweDAwMDA4NjAwKTsKKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMjQ4LDB4ODAw MDAwMDApOworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyNEMsMHg4MDgwODA4MCk7Cit9CisK K3N0YXRpYyB2b2lkIERvX0REUlBIWV9Jbml0KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQorewor ICB1MzIgZGF0YSwgcGFzcywgdGltZWNudDsKKworICBwYXNzID0gMDsKKyAgYXN0X21vdXRkd20o YXN0LCAweDFFNkUwMDYwLDB4MDAwMDAwMDUpOworICB3aGlsZSghcGFzcyl7CisgICAgZm9yKHRp bWVjbnQgPSAwO3RpbWVjbnQgPCBUSU1FT1VUO3RpbWVjbnQrKyl7CisgICAgICBkYXRhID0gYXN0 X21pbmR3bShhc3QsIDB4MUU2RTAwNjApICYgMHgxOworICAgICAgaWYoIWRhdGEpeworICAgICAg ICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgaWYodGltZWNudCAhPSBUSU1FT1VUKXsKKyAg ICAgIGRhdGEgPSBhc3RfbWluZHdtKGFzdCwgMHgxRTZFMDMwMCkgJiAweDAwMEEwMDAwOworICAg ICAgaWYoIWRhdGEpeworICAgICAgICBwYXNzID0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgaWYo IXBhc3MpeworICAgICAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDYwLDB4MDAwMDAwMDApOwor ICAgICAgdWRlbGF5KDEwKTsgLyogZGVsYXkgMTAgdXMgKi8KKyAgICAgIGFzdF9tb3V0ZHdtKGFz dCwgMHgxRTZFMDA2MCwweDAwMDAwMDA1KTsKKyAgICB9CisgIH0KKworICBhc3RfbW91dGR3bShh c3QsIDB4MUU2RTAwNjAsMHgwMDAwMDAwNik7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyBDaGVjayBEUkFNIFNpemUKKyAxR2IgOiAweDgwMDAwMDAwIH4gMHg4N0ZGRkZGRgorIDJHYiA6 IDB4ODAwMDAwMDAgfiAweDhGRkZGRkZGCisgNEdiIDogMHg4MDAwMDAwMCB+IDB4OUZGRkZGRkYK KyA4R2IgOiAweDgwMDAwMDAwIH4gMHhCRkZGRkZGRgorICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwor c3RhdGljIHZvaWQgQ2hlY2tfRFJBTV9TaXplKHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0LCB1MzIg dFJGQykKK3sKKyAgdTMyIHJlZ18wNCwgcmVnXzE0OworCisgIHJlZ18wNCA9IGFzdF9taW5kd20o YXN0LCAweDFFNkUwMDA0KSAmIDB4ZmZmZmZmZmM7CisgIHJlZ18xNCA9IGFzdF9taW5kd20oYXN0 LCAweDFFNkUwMDE0KSAmIDB4ZmZmZmZmMDA7CisKKyAgYXN0X21vdXRkd20oYXN0LCAweEEwMTAw MDAwLCAweDQxNDI0MzQ0KTsKKyAgYXN0X21vdXRkd20oYXN0LCAweDkwMTAwMDAwLCAweDM1MzYz NzM4KTsKKyAgYXN0X21vdXRkd20oYXN0LCAweDg4MTAwMDAwLCAweDI5MkEyQjJDKTsKKyAgYXN0 X21vdXRkd20oYXN0LCAweDgwMTAwMDAwLCAweDFEMUUxRjEwKTsKKworICAvKiBDaGVjayA4R2Jp dCAqLworICBpZihhc3RfbWluZHdtKGFzdCwgMHhBMDEwMDAwMCkgPT0gMHg0MTQyNDM0NCl7Cisg ICAgcmVnXzA0IHw9IDB4MDM7CisgICAgcmVnXzE0IHw9ICh0UkZDID4+IDI0KSAmIDB4RkY7Cisg IC8qIENoZWNrIDRHYml0ICovCisgIH1lbHNlIGlmKGFzdF9taW5kd20oYXN0LCAweDkwMTAwMDAw KSA9PSAweDM1MzYzNzM4KXsKKyAgICByZWdfMDQgfD0gMHgwMjsKKyAgICByZWdfMTQgfD0gKHRS RkMgPj4gMTYpICYgMHhGRjsKKyAgLyogQ2hlY2sgMkdiaXQgKi8KKyAgfWVsc2UgaWYoYXN0X21p bmR3bShhc3QsIDB4ODgxMDAwMDApID09IDB4MjkyQTJCMkMpeworICAgIHJlZ18wNCB8PSAweDAx OworICAgIHJlZ18xNCB8PSAodFJGQyA+PiA4KSAmIDB4RkY7CisgIH1lbHNleworICAgIHJlZ18x NCB8PSB0UkZDICYgMHhGRjsKKyAgfQorICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMDQsIHJl Z18wNCk7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAxNCwgcmVnXzE0KTsKK30KKworc3Rh dGljIHZvaWQgRW5hYmxlX0NhY2hlKHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQoreworICB1MzIg cmVnXzA0LCBkYXRhOworCisgIHJlZ18wNCA9IGFzdF9taW5kd20oYXN0LCAweDFFNkUwMDA0KTsK KyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDA0LCByZWdfMDQgfCAweDEwMDApOworCisgIGRv eworICAgIGRhdGEgPSBhc3RfbWluZHdtKGFzdCwgMHgxRTZFMDAwNCk7CisgIH13aGlsZSghKGRh dGEgJiAweDgwMDAwKSk7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAwNCwgcmVnXzA0IHwg MHg0MDApOworfQorCitzdGF0aWMgdm9pZCBTZXRfTVBMTChzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFz dCkKK3sKKyAgdTMyIGFkZHIsIGRhdGEsIHBhcmFtOworCisgIC8qIFJlc2V0IE1NQyAqLworICBh c3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMDAsMHhGQzYwMDMwOSk7CisgIGFzdF9tb3V0ZHdtKGFz dCwgMHgxRTZFMDAzNCwweDAwMDIwMDgwKTsKKyAgZm9yKGFkZHIgPSAweDFlNmUwMDA0O2FkZHIg PCAweDFlNmUwMDkwOyl7CisgICAgYXN0X21vdXRkd20oYXN0LCBhZGRyLCAweDApOworICAgIGFk ZHIgKz0gNDsKKyAgfQorICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMzQsMHgwMDAyMDAwMCk7 CisKKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUyMDAwLCAweDE2ODhBOEE4KTsKKyAgZGF0YSA9 IGFzdF9taW5kd20oYXN0LCAweDFFNkUyMDcwKSAmIDB4MDA4MDAwMDA7CisgIGlmKGRhdGEpeyAg ICAgICAgICAgICAgICAgIC8qIENMS0lOID0gMjVNSHogKi8KKyAgICBwYXJhbSA9IDB4OTMwMDIz RTA7CisgICAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUyMTYwLCAweDAwMDExMzIwKTsKKyAgfWVs c2V7CQkJCQkgLyogQ0xLSU4gPSAyNE1IeiAqLworICAgIHBhcmFtID0gMHg5MzAwMjQwMDsKKyAg fQorICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTIwMjAsIHBhcmFtKTsKKyAgdWRlbGF5KDEwMCk7 Cit9CisKK3N0YXRpYyB2b2lkIFJlc2V0X01NQyhzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCkKK3sK KyAgYXN0X21vdXRkd20oYXN0LCAweDFFNzg1MDVDLDB4MDAwMDAwMDQpOworICBhc3RfbW91dGR3 bShhc3QsIDB4MUU3ODUwNDQsMHgwMDAwMDAwMSk7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTc4 NTA0OCwweDAwMDA0NzU1KTsKKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNzg1MDRDLDB4MDAwMDAw MTMpOworICBtZGVsYXkoMTAwKTsJCQkJCS8qIGRlbGF5IDEwMG1zICovCisgIGFzdF9tb3V0ZHdt KGFzdCwgMHgxRTc4NTA1NCwweDAwMDAwMDc3KTsKKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUw MDAwLDB4RkM2MDAzMDkpOworfQorCitzdGF0aWMgdm9pZCBERFIzX0luaXRfQVNUMjUwMChzdHJ1 Y3QgYXN0X3ByaXZhdGUgKmFzdCwgdTMyICpkZHJfdGFibGUpCit7CisKKyAgYXN0X21vdXRkd20o YXN0LCAweDFFNkUwMDA0LDB4MDAwMDAzMDMpOworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAw MTAsZGRyX3RhYmxlW1JFR0lEWF8wMTBdKTsKKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDE0 LGRkcl90YWJsZVtSRUdJRFhfMDE0XSk7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAxOCxk ZHJfdGFibGVbUkVHSURYXzAxOF0pOworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMjAsZGRy X3RhYmxlW1JFR0lEWF8wMjBdKTsgICAgICAgICAgLyogTU9ERVJFRzQvNiAqLworICBhc3RfbW91 dGR3bShhc3QsIDB4MUU2RTAwMjQsZGRyX3RhYmxlW1JFR0lEWF8wMjRdKTsgICAgICAgICAgLyog TU9ERVJFRzUgKi8KKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDJDLGRkcl90YWJsZVtSRUdJ RFhfMDJDXSB8IDB4MTAwKTsgIC8qIE1PREVSRUcwLzIgKi8KKyAgYXN0X21vdXRkd20oYXN0LCAw eDFFNkUwMDMwLGRkcl90YWJsZVtSRUdJRFhfMDMwXSk7ICAgICAgICAgIC8qIE1PREVSRUcxLzMg Ki8KKworICAvKiBERFIgUEhZIFNldHRpbmcgKi8KKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUw MjAwLDB4MDI0OTJBQUUpOworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyMDQsMHgwMDAwMTAw MSk7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDIwQywweDU1RTAwQjBCKTsKKyAgYXN0X21v dXRkd20oYXN0LCAweDFFNkUwMjEwLDB4MjAwMDAwMDApOworICBhc3RfbW91dGR3bShhc3QsIDB4 MUU2RTAyMTQsZGRyX3RhYmxlW1JFR0lEWF8yMTRdKTsKKyAgYXN0X21vdXRkd20oYXN0LCAweDFF NkUwMkUwLGRkcl90YWJsZVtSRUdJRFhfMkUwXSk7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZF MDJFNCxkZHJfdGFibGVbUkVHSURYXzJFNF0pOworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAy RTgsZGRyX3RhYmxlW1JFR0lEWF8yRThdKTsKKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkVD LGRkcl90YWJsZVtSRUdJRFhfMkVDXSk7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDJGMCxk ZHJfdGFibGVbUkVHSURYXzJGMF0pOworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyRjQsZGRy X3RhYmxlW1JFR0lEWF8yRjRdKTsKKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkY4LGRkcl90 YWJsZVtSRUdJRFhfMkY4XSk7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDI5MCwweDAwMTAw MDA4KTsKKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkMwLDB4MDAwMDAwMDYpOworCisgIC8q IENvbnRyb2xsZXIgU2V0dGluZyAqLworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMzQsMHgw MDAyMDA5MSk7CisKKyAgLyogV2FpdCBERFIgUEhZIGluaXQgZG9uZSAqLworICBEb19ERFJQSFlf SW5pdChhc3QpOworCisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDEyMCxkZHJfdGFibGVbUkVH SURYX1BMTF0pOworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMEMsMHg0MkFBNUM4MSk7Cisg IGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAzNCwweDAwMDFBRjkzKTsKKworICBDaGVja19EUkFN X1NpemUoYXN0LCBkZHJfdGFibGVbUkVHSURYX1JGQ10pOworICBFbmFibGVfQ2FjaGUoYXN0KTsK KyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDFDLDB4MDAwMDAwMDgpOworICBhc3RfbW91dGR3 bShhc3QsIDB4MUU2RTAwMzgsMHhGRkZGRkYwMCk7Cit9CisKK3N0YXRpYyB2b2lkIEREUjRfSW5p dF9BU1QyNTAwKHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0LCB1MzIgKmRkcl90YWJsZSkKK3sKKyAg dTMyIGRhdGEsIGRhdGEyLCBwYXNzLCByZXRyeWNudDsKKyAgdTMyIGRkcl92cmVmLCBwaHlfdnJl ZjsKKyAgdTMyIG1pbl9kZHJfdnJlZj0wLCBtaW5fcGh5X3ZyZWY9MDsKKyAgdTMyIG1heF9kZHJf dnJlZj0wLCBtYXhfcGh5X3ZyZWY9MDsKKworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMDQs MHgwMDAwMDMxMyk7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAxMCxkZHJfdGFibGVbUkVH SURYXzAxMF0pOworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMTQsZGRyX3RhYmxlW1JFR0lE WF8wMTRdKTsKKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDE4LGRkcl90YWJsZVtSRUdJRFhf MDE4XSk7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAyMCxkZHJfdGFibGVbUkVHSURYXzAy MF0pOyAgICAgICAgICAvKiBNT0RFUkVHNC82ICovCisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZF MDAyNCxkZHJfdGFibGVbUkVHSURYXzAyNF0pOyAgICAgICAgICAvKiBNT0RFUkVHNSAqLworICBh c3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMkMsZGRyX3RhYmxlW1JFR0lEWF8wMkNdIHwgMHgxMDAp OyAgLyogTU9ERVJFRzAvMiAqLworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMzAsZGRyX3Rh YmxlW1JFR0lEWF8wMzBdKTsgICAgICAgICAgLyogTU9ERVJFRzEvMyAqLworCisgIC8qIEREUiBQ SFkgU2V0dGluZyAqLworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyMDAsMHg0MjQ5MkFBRSk7 CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDIwNCwweDA5MDAyMDAwKTsKKyAgYXN0X21vdXRk d20oYXN0LCAweDFFNkUwMjBDLDB4NTVFMDBCMEIpOworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2 RTAyMTAsMHgyMDAwMDAwMCk7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDIxNCxkZHJfdGFi bGVbUkVHSURYXzIxNF0pOworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyRTAsZGRyX3RhYmxl W1JFR0lEWF8yRTBdKTsKKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkU0LGRkcl90YWJsZVtS RUdJRFhfMkU0XSk7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDJFOCxkZHJfdGFibGVbUkVH SURYXzJFOF0pOworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyRUMsZGRyX3RhYmxlW1JFR0lE WF8yRUNdKTsKKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMkYwLGRkcl90YWJsZVtSRUdJRFhf MkYwXSk7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDJGNCxkZHJfdGFibGVbUkVHSURYXzJG NF0pOworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyRjgsZGRyX3RhYmxlW1JFR0lEWF8yRjhd KTsKKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMjkwLDB4MDAxMDAwMDgpOworICBhc3RfbW91 dGR3bShhc3QsIDB4MUU2RTAyQzQsMHgzQzE4M0MzQyk7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgx RTZFMDJDOCwweDAwNjMxRTBFKTsKKworICAvKiBDb250cm9sbGVyIFNldHRpbmcgKi8KKyAgYXN0 X21vdXRkd20oYXN0LCAweDFFNkUwMDM0LDB4MDAwMUE5OTEpOworCisgIC8qIFRyYWluIFBIWSBW cmVmIGZpcnN0ICovCisgIHBhc3MgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogYWRkIGF0IFYxLjEgKi8KKyAgZm9yKHJldHJ5Y250ID0gMDtyZXRyeWNudCA8IDQgJiYgcGFz cyA9PSAwO3JldHJ5Y250KyspeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiBhZGQgYXQgVjEuMSAqLworICAgIG1heF9waHlfdnJlZiA9IDB4MDsKKyAgICBwYXNz ID0gMDsKKyAgICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyQzAsMHgwMDAwMUMwNik7CisgICAg Zm9yKHBoeV92cmVmID0gMHg0MDtwaHlfdnJlZiA8IDB4ODA7cGh5X3ZyZWYrKyl7CisgICAgICBh c3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMEMsMHgwMDAwMDAwMCk7CisgICAgICBhc3RfbW91dGR3 bShhc3QsIDB4MUU2RTAwNjAsMHgwMDAwMDAwMCk7CisgICAgICBhc3RfbW91dGR3bShhc3QsIDB4 MUU2RTAyQ0MscGh5X3ZyZWYgfCAocGh5X3ZyZWYgPDwgOCkpOworICAgICAgLyogRmlyZSBERkkg SW5pdCAqLworICAgICAgRG9fRERSUEhZX0luaXQoYXN0KTsKKyAgICAgIGFzdF9tb3V0ZHdtKGFz dCwgMHgxRTZFMDAwQywweDAwMDA1QzAxKTsKKyAgICAgIGlmKENCUlRlc3RfQVNUMjUwMChhc3Qp KXsKKyAgICAgICAgcGFzcysrOworICAgICAgICBkYXRhID0gYXN0X21pbmR3bShhc3QsIDB4MUU2 RTAzRDApOworICAgICAgICBkYXRhMiA9IGRhdGEgPj4gODsKKyAgICAgICAgZGF0YSAgPSBkYXRh ICYgMHhmZjsKKyAgICAgICAgaWYoZGF0YSA+IGRhdGEyKXsKKyAgICAgICAgICBkYXRhID0gZGF0 YTI7CisgICAgICAgIH0KKworICAgICAgICBpZihtYXhfcGh5X3ZyZWYgPCBkYXRhKXsKKyAgICAg ICAgICBtYXhfcGh5X3ZyZWYgPSBkYXRhOworICAgICAgICAgIG1pbl9waHlfdnJlZiA9IHBoeV92 cmVmOworICAgICAgICB9CisgICAgICB9ZWxzZSBpZihwYXNzID4gMCl7CisgICAgICAgIGJyZWFr OworICAgICAgfQorICAgIH0KKyAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiBhZGQgYXQgVjEuMSAqLworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAyQ0MsbWlu X3BoeV92cmVmIHwgKG1pbl9waHlfdnJlZiA8PCA4KSk7CisKKyAgLyogVHJhaW4gRERSIFZyZWYg bmV4dCAqLworICBwYXNzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFk ZCBhdCBWMS4xICovCisgIGZvcihyZXRyeWNudCA9IDA7cmV0cnljbnQgPCA0ICYmIHBhc3MgPT0g MDtyZXRyeWNudCsrKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LyogYWRkIGF0IFYxLjEgKi8KKyAgICBtaW5fZGRyX3ZyZWYgPSAweEZGOworICAgIG1heF9kZHJf dnJlZiA9IDB4MDsKKyAgICBwYXNzID0gMDsKKyAgICBmb3IoZGRyX3ZyZWYgPSAweDAwO2Rkcl92 cmVmIDwgMHg0MDtkZHJfdnJlZisrKXsKKyAgICAgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAw QywweDAwMDAwMDAwKTsKKyAgICAgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDA2MCwweDAwMDAw MDAwKTsKKyAgICAgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDJDMCwweDAwMDAwMDA2IHwgKGRk cl92cmVmIDw8IDgpKTsKKyAgICAgIC8qIEZpcmUgREZJIEluaXQgKi8KKyAgICAgIERvX0REUlBI WV9Jbml0KGFzdCk7CisgICAgICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMEMsMHgwMDAwNUMw MSk7CisgICAgICBpZihDQlJUZXN0X0FTVDI1MDAoYXN0KSl7CisgICAgICAgIHBhc3MrKzsKKyAg ICAgICAgaWYobWluX2Rkcl92cmVmID4gZGRyX3ZyZWYpeworICAgICAgICAgIG1pbl9kZHJfdnJl ZiA9IGRkcl92cmVmOworICAgICAgICB9CisgICAgICAgIGlmKG1heF9kZHJfdnJlZiA8IGRkcl92 cmVmKXsKKyAgICAgICAgICBtYXhfZGRyX3ZyZWYgPSBkZHJfdnJlZjsKKyAgICAgICAgfQorICAg ICAgfWVsc2UgaWYocGFzcyAhPSAwKXsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQor ICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFkZCBhdCBWMS4x ICovCisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAwQywweDAwMDAwMDAwKTsKKyAgYXN0X21v dXRkd20oYXN0LCAweDFFNkUwMDYwLDB4MDAwMDAwMDApOworICBkZHJfdnJlZiA9IChtaW5fZGRy X3ZyZWYgKyBtYXhfZGRyX3ZyZWYgKyAxKSA+PiAxOworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2 RTAyQzAsMHgwMDAwMDAwNiB8IChkZHJfdnJlZiA8PCA4KSk7CisKKyAgLyogV2FpdCBERFIgUEhZ IGluaXQgZG9uZSAqLworICBEb19ERFJQSFlfSW5pdChhc3QpOworCisgIGFzdF9tb3V0ZHdtKGFz dCwgMHgxRTZFMDEyMCxkZHJfdGFibGVbUkVHSURYX1BMTF0pOworICBhc3RfbW91dGR3bShhc3Qs IDB4MUU2RTAwMEMsMHg0MkFBNUM4MSk7CisgIGFzdF9tb3V0ZHdtKGFzdCwgMHgxRTZFMDAzNCww eDAwMDFBRjkzKTsKKworICBDaGVja19EUkFNX1NpemUoYXN0LCBkZHJfdGFibGVbUkVHSURYX1JG Q10pOworICBFbmFibGVfQ2FjaGUoYXN0KTsKKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUwMDFD LDB4MDAwMDAwMDgpOworICBhc3RfbW91dGR3bShhc3QsIDB4MUU2RTAwMzgsMHhGRkZGRkYwMCk7 Cit9CisKK3N0YXRpYyB1MzIgRFJBTV9Jbml0X0FTVDI1MDAoc3RydWN0IGFzdF9wcml2YXRlICph c3QpCit7CisgIHUzMiBkYXRhOworCitTVEFSVF9JTklUOgorICBTZXRfTVBMTChhc3QpOworICBS ZXNldF9NTUMoYXN0KTsKKyAgRERSX0luaXRfQ29tbW9uKGFzdCk7CisgIGRhdGEgPSBhc3RfbWlu ZHdtKGFzdCwgMHgxRTZFMjA3MCk7CisgIGlmKGRhdGEgJiAweDAxMDAwMDAwKXsKKyAgICBERFI0 X0luaXRfQVNUMjUwMChhc3QsIGRkcjRfMTYwMF90aW1pbmdfdGFibGUpOworICB9ZWxzZXsKKyAg ICBERFIzX0luaXRfQVNUMjUwMChhc3QsIGRkcjNfMTYwMF90aW1pbmdfdGFibGUpOworICB9Cisg IGlmKCFERFJUZXN0X0FTVDI1MDAoYXN0KSl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFkZCBhdCBWMS4xICov CisgICAgZ290byBTVEFSVF9JTklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFkZCBhdCBWMS4x ICovCisgIH0KKyAgYXN0X21vdXRkd20oYXN0LCAweDFFNkUyMDQwLCBhc3RfbWluZHdtKGFzdCwg MHgxRTZFMjA0MCkgfCAweDQxKTsKKyAgLyogUGF0Y2ggY29kZSAqLworICBkYXRhID0gYXN0X21p bmR3bShhc3QsIDB4MUU2RTIwMEMpICYgMHhGOUZGRkZGRjsKKyAgYXN0X21vdXRkd20oYXN0LCAw eDFFNkUyMDBDLCBkYXRhIHwgMHgxMDAwMDAwMCk7CisgIHJldHVybigxKTsKK30KKworc3RhdGlj IHZvaWQgYXN0X2luaXRfZHJhbV8yNTAwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3Ry dWN0IGFzdF9wcml2YXRlICphc3QgPSBkZXYtPmRldl9wcml2YXRlOworCXUzMiB0ZW1wOworCXU4 IHJlZzsKKworCXJlZyA9IGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19Q T1JULCAweGQwLCAweGZmKTsKKwlpZiAoKHJlZyAmIDB4ODApID09IDApIHsvKiB2Z2Egb25seSAq LworICAJCS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgIAkJLyog QmVsb3cgcGF0Y2ggc2hvdWxkIGJlIGV4ZWN1dGVkIGF0IHRoZSBmaXJzdCB0aW1lIGJlZm9yZSBh bnkgYWNjZXNzIHRvIEFTVDI1eHggICAgICAgICAgICAgICAgKi8KKyAgCQkvKiBDbGVhciBidXMg bG9jayBjb25kaXRpb24gKi8KKyAgCQlhc3RfbW91dGR3bShhc3QsIDB4MWU2MDAwMDAsMHhBRUVE MUEwMyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLyogYWRkIGF0IFYxLjEgKi8KKyAgCQlhc3RfbW91dGR3bShhc3QsIDB4MWU2MDAwODQs MHgwMDAxMDAwMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogYWRkIGF0IFYxLjEgKi8KKyAgCQlhc3RfbW91dGR3bShhc3QsIDB4MWU2 MDAwODgsMHgwMDAwMDAwMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLyogYWRkIGF0IFYxLjEgKi8KKyAgCQlhc3RfbW91dGR3bShhc3Qs IDB4MWU2ZTIwMDAsMHgxNjg4QThBOCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLyogYWRkIGF0IFYxLjEgKi8KKyAgCQkvKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisJCWFzdF93cml0ZTMyKGFzdCwgMHhm MDA0LCAweDFlNmUwMDAwKTsKKwkJYXN0X3dyaXRlMzIoYXN0LCAweGYwMDAsIDB4MSk7CisJCWFz dF93cml0ZTMyKGFzdCwgMHgxMjAwMCwgMHgxNjg4YThhOCk7CisJCWRvIHsKKwkJCTsKKwkJfSB3 aGlsZSAoYXN0X3JlYWQzMihhc3QsIDB4MTIwMDApICE9IDB4MSk7CisKKwkJYXN0X3dyaXRlMzIo YXN0LCAweDEwMDAwLCAweGZjNjAwMzA5KTsKKwkJZG8geworCQkJOworCQl9IHdoaWxlIChhc3Rf cmVhZDMyKGFzdCwgMHgxMDAwMCkgIT0gMHgxKTsKKworCQkvKiBTbG93IGRvd24gQ1BVL0FIQiBD TEsgaW4gVkdBIG9ubHkgbW9kZSAqLworCQl0ZW1wID0gYXN0X3JlYWQzMihhc3QsIDB4MTIwMDgp OworCQl0ZW1wIHw9IDB4NzM7CisJCWFzdF93cml0ZTMyKGFzdCwgMHgxMjAwOCwgdGVtcCk7CisK KwkJLyogUmVzZXQgVVNCIHBvcnQgdG8gcGF0Y2ggVVNCIHVua25vd24gZGV2aWNlIGlzc3VlICov CisgCSAJYXN0X21vdXRkd20oYXN0LCAweDFlNmUyMDkwLCAweDIwMDAwMDAwKTsKKyAgICAgIAl0 ZW1wICA9IGFzdF9taW5kd20oYXN0LCAweDFlNmUyMDk0KTsKKyAgICAgIAl0ZW1wIHw9IDB4MDAw MDQwMDA7CisgICAgICAJYXN0X21vdXRkd20oYXN0LCAweDFlNmUyMDk0LCB0ZW1wKTsKKyAgICAg IAl0ZW1wICA9IGFzdF9taW5kd20oYXN0LCAweDFlNmUyMDcwKTsKKwkJaWYgKHRlbXAgJiAweDAw ODAwMDAwKQorCQl7CisgICAgICAJCWFzdF9tb3V0ZHdtKGFzdCwgMHgxZTZlMjA3YywgMHgwMDgw MDAwMCk7CisJCQltZGVsYXkoMTAwKTsJCQkJCQkJLyogZGVsYXkgMTAwbXMgKi8KKyAgICAgIAkJ YXN0X21vdXRkd20oYXN0LCAweDFlNmUyMDcwLCAweDAwODAwMDAwKTsKKwkJfQorCisJCURSQU1f SW5pdF9BU1QyNTAwKGFzdCk7CisKKwkJdGVtcCA9IGFzdF9taW5kd20oYXN0LCAweDFlNmUyMDQw KTsKKwkJYXN0X21vdXRkd20oYXN0LCAweDFlNmUyMDQwLCB0ZW1wIHwgMHg0MCk7CisJfQorCisJ Lyogd2FpdCByZWFkeSAqLworCWRvIHsKKwkJcmVnID0gYXN0X2dldF9pbmRleF9yZWdfbWFzayhh c3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4ZDAsIDB4ZmYpOworCX0gd2hpbGUgKChyZWcgJiAweDQw KSA9PSAwKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3RhYmxlcy5o IGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfdGFibGVzLmgKaW5kZXggMzYwOGQ1YS4uMjRkYTRj MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfdGFibGVzLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FzdC9hc3RfdGFibGVzLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKICNkZWZpbmUg U3luY1BOCQkJKFBWU3luYyB8IE5IU3luYykKICNkZWZpbmUgU3luY05QCQkJKE5WU3luYyB8IFBI U3luYykKICNkZWZpbmUgU3luY05OCQkJKE5WU3luYyB8IE5IU3luYykKKyNkZWZpbmUgQVNUMjUw MFByZUNhdGNoQ1JUCQkweDAwMDA0MDAwCiAKIC8qIERDTEsgSW5kZXggKi8KICNkZWZpbmUgVkNM SzI1XzE3NSAgICAgCQkweDAwCkBAIC0xMDgsNiArMTA5LDM2IEBACiAJezB4M2IsIDB4MmMsIDB4 ODF9LAkJCQkJLyogMUE6IFZDTEsxMThfMjUJKi8KIH07CiAKK3N0YXRpYyBzdHJ1Y3QgYXN0X3Zi aW9zX2RjbGtfaW5mbyBkY2xrX3RhYmxlX2FzdDI1MDBbXSA9IHsKKwl7MHgyQywgMHhFNywgMHgw M30sCQkJCQkvKiAwMDogVkNMSzI1XzE3NQkqLworCXsweDk1LCAweDYyLCAweDAzfSwJCQkJICAg ICAgICAvKiAwMTogVkNMSzI4XzMyMgkqLworCXsweDY3LCAweDYzLCAweDAxfSwJCQkJICAgICAg ICAvKiAwMjogVkNMSzMxXzUgICAgICAgICAqLworCXsweDc2LCAweDYzLCAweDAxfSwJCQkJICAg ICAgICAvKiAwMzogVkNMSzM2ICAgICAgICAgCSovCisJezB4RUUsIDB4NjcsIDB4MDF9LAkJCQkg ICAgICAgIC8qIDA0OiBWQ0xLNDAgICAgICAgICAgCSovCisJezB4ODIsIDB4NjIsIDB4MDF9LCAJ CQkgICAgICAgIC8qIDA1OiBWQ0xLNDlfNSAgICAgICAgCSovCisJezB4QzYsIDB4NjQsIDB4MDF9 LCAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgICAgIC8qIDA2OiBWQ0xLNTAgICAgICAgICAg CSovCisJezB4OTQsIDB4NjIsIDB4MDF9LCAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgICAg IC8qIDA3OiBWQ0xLNTZfMjUgICAgICAgCSovCisJezB4ODAsIDB4NjQsIDB4MDB9LCAgICAgICAg ICAgICAgICAgICAgICAgIAkgICAgICAgIC8qIDA4OiBWQ0xLNjUJCSovCisJezB4N0IsIDB4NjMs IDB4MDB9LCAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgICAgIC8qIDA5OiBWQ0xLNzUJICAg ICAgICAqLworCXsweDY3LCAweDYyLCAweDAwfSwJCQkJICAgICAgICAvKiAwQTogVkNMSzc4Xzc1 ICAgICAgIAkqLworCXsweDdDLCAweDYyLCAweDAwfSwgICAgICAgICAgICAgICAgICAgICAgICAJ ICAgICAgICAvKiAwQjogVkNMSzk0XzUgICAgICAgIAkqLworCXsweDhFLCAweDYyLCAweDAwfSwg ICAgICAgICAgICAgICAgICAgICAgICAJICAgICAgICAvKiAwQzogVkNMSzEwOCAgICAgICAgIAkq LworCXsweDg1LCAweDI0LCAweDAwfSwgICAgICAgICAgICAgICAgICAgICAgICAJICAgICAgICAv KiAwRDogVkNMSzEzNSAgICAgICAgIAkqLworCXsweDY3LCAweDIyLCAweDAwfSwgICAgICAgICAg ICAgICAgICAgICAgICAJICAgICAgICAvKiAwRTogVkNMSzE1N181ICAgICAgIAkqLworCXsweDZB LCAweDIyLCAweDAwfSwJCQkJICAgICAgICAvKiAwRjogVkNMSzE2MiAgICAgICAgIAkqLworCXsw eDRkLCAweDRjLCAweDgwfSwJCQkJICAgICAgICAvKiAxMDogVkNMSzE1NCAgICAgIAkqLworCXsw eGE3LCAweDc4LCAweDgwfSwJCQkJCS8qIDExOiBWQ0xLODMuNSAgICAgICAgICovCisJezB4Mjgs IDB4NDksIDB4ODB9LAkJCQkJLyogMTI6IFZDTEsxMDYuNSAgICAgICAgKi8KKwl7MHgzNywgMHg0 OSwgMHg4MH0sCQkJCQkvKiAxMzogVkNMSzE0Ni4yNSAgICAgICAqLworCXsweDFmLCAweDQ1LCAw eDgwfSwJCQkJCS8qIDE0OiBWQ0xLMTQ4LjUgICAgICAgICovCisJezB4NDcsIDB4NmMsIDB4ODB9 LAkJCQkJLyogMTU6IFZDTEs3MSAgICAgICAqLworCXsweDI1LCAweDY1LCAweDgwfSwJCQkJCS8q IDE2OiBWQ0xLODguNzUgICAgKi8KKwl7MHg1OCwgMHgwMSwgMHg0Mn0sCQkJCQkvKiAxNzogVkNM SzExOSAgICAgICovCisJezB4MzIsIDB4NjcsIDB4ODB9LAkJCQkgICAgLyogMTg6IFZDTEs4NV81 ICAgICAqLworCXsweDZhLCAweDZkLCAweDgwfSwJCQkJCS8qIDE5OiBWQ0xLOTdfNzUJKi8KKwl7 MHg0NCwgMHgyMCwgMHg0M30sCQkJCQkvKiAxQTogVkNMSzExOF8yNQkqLworfTsKKwogc3RhdGlj IHN0cnVjdCBhc3RfdmJpb3Nfc3RkdGFibGUgdmJpb3Nfc3RkdGFibGVbXSA9IHsKIAkvKiBNRF8y XzNfNDAwICovCiAJewpAQCAtMjQ0LDMyICsyNzUsMzIgQEAKIC8qIDE2OjkgKi8KIHN0YXRpYyBz dHJ1Y3QgYXN0X3ZiaW9zX2VuaHRhYmxlIHJlc18xMzYweDc2OFtdID0gewogCXsxNzkyLCAxMzYw LCA2NCwxMTIsIDc5NSwgIDc2OCwgMywgNiwgVkNMSzg1XzUsCSAgICAgICAgIC8qIDYwSHogKi8K LQkgKFN5bmNQUCB8IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNjcmVlbk1vZGUg fCBOZXdNb2RlSW5mbyksIDYwLCAxLCAweDM5IH0sCisJIChTeW5jUFAgfCBDaGFyeDhEb3QgfCBM aW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUluZm8gfCBBU1QyNTAwUHJl Q2F0Y2hDUlQpLCA2MCwgMSwgMHgzOSB9LAogCXsxNzkyLCAxMzYwLCA2NCwxMTIsIDc5NSwgIDc2 OCwgMywgNiwgVkNMSzg1XzUsCSAgICAgICAgIC8qIGVuZCAqLwogCSAoU3luY1BQIHwgQ2hhcng4 RG90IHwgTGluZUNvbXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvKSwgMHhG RiwgMSwgMHgzOSB9LAogfTsKIAogc3RhdGljIHN0cnVjdCBhc3RfdmJpb3NfZW5odGFibGUgcmVz XzE2MDB4OTAwW10gPSB7CiAJezE3NjAsIDE2MDAsIDQ4LCAzMiwgOTI2LCAgOTAwLCAzLCA1LCBW Q0xLOTdfNzUsCS8qIDYwSHogQ1ZUIFJCICovCi0JIChTeW5jTlAgfCBDaGFyeDhEb3QgfCBMaW5l Q29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUluZm8pLCA2MCwgMSwgMHgzQSB9 LAotCXsyMTEyLCAxNjAwLCA4OCwxNjgsIDkzNCwgIDkwMCwgMywgNSwgVkNMSzExOF8yNSwJLyog NjBIeiBDVlQgKi8KLQkgKFN5bmNQTiB8IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwgV2lk ZVNjcmVlbk1vZGUgfCBOZXdNb2RlSW5mbyksIDYwLCAyLCAweDNBIH0sCi0JezIxMTIsIDE2MDAs IDg4LDE2OCwgOTM0LCAgOTAwLCAzLCA1LCBWQ0xLMTE4XzI1LAkvKiA2MEh6IENWVCAqLwotCSAo U3luY1BOIHwgQ2hhcng4RG90IHwgTGluZUNvbXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5l d01vZGVJbmZvKSwgMHhGRiwgMiwgMHgzQSB9LAorCSAoU3luY05QIHwgQ2hhcng4RG90IHwgTGlu ZUNvbXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvIHwgQVNUMjUwMFByZUNh dGNoQ1JUKSwgNjAsIDEsIDB4M0EgfSwKKyAgICB7MjExMiwgMTYwMCwgODgsMTY4LCA5MzQsICA5 MDAsIDMsIDUsIFZDTEsxMThfMjUsCS8qIDYwSHogQ1ZUICovCisgICAgIChTeW5jUE4gfCBDaGFy eDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUluZm8pLCA2 MCwgMiwgMHgzQSB9LAorICAgIHsyMTEyLCAxNjAwLCA4OCwxNjgsIDkzNCwgIDkwMCwgMywgNSwg VkNMSzExOF8yNSwJLyogNjBIeiBDVlQgKi8KKyAgICAgKFN5bmNQTiB8IENoYXJ4OERvdCB8IExp bmVDb21wYXJlT2ZmIHwgV2lkZVNjcmVlbk1vZGUgfCBOZXdNb2RlSW5mbyksIDB4RkYsIDIsIDB4 M0EgfSwKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgYXN0X3ZiaW9zX2VuaHRhYmxlIHJlc18xOTIweDEw ODBbXSA9IHsKIAl7MjIwMCwgMTkyMCwgODgsIDQ0LCAxMTI1LCAxMDgwLCA0LCA1LCBWQ0xLMTQ4 XzUsCS8qIDYwSHogKi8KLQkgKFN5bmNOUCB8IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwg V2lkZVNjcmVlbk1vZGUgfCBOZXdNb2RlSW5mbyksIDYwLCAxLCAweDM4IH0sCisJIChTeW5jTlAg fCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUlu Zm8gfCBBU1QyNTAwUHJlQ2F0Y2hDUlQpLCA2MCwgMSwgMHgzOCB9LAogCXsyMjAwLCAxOTIwLCA4 OCwgNDQsIDExMjUsIDEwODAsIDQsIDUsIFZDTEsxNDhfNSwJLyogNjBIeiAqLwotCSAoU3luY05Q IHwgQ2hhcng4RG90IHwgTGluZUNvbXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJ bmZvKSwgMHhGRiwgMSwgMHgzOCB9LAorCSAoU3luY05QIHwgQ2hhcng4RG90IHwgTGluZUNvbXBh cmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvIHwgQVNUMjUwMFByZUNhdGNoQ1JU KSwgMHhGRiwgMSwgMHgzOCB9LAogfTsKIAogCiAvKiAxNjoxMCAqLwogc3RhdGljIHN0cnVjdCBh c3RfdmJpb3NfZW5odGFibGUgcmVzXzEyODB4ODAwW10gPSB7CiAJezE0NDAsIDEyODAsIDQ4LCAz MiwgIDgyMywgIDgwMCwgMywgNiwgVkNMSzcxLAkvKiA2MEh6IFJCICovCi0JIChTeW5jTlAgfCBD aGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUluZm8p LCA2MCwgMSwgMHgzNSB9LAorCSAoU3luY05QIHwgQ2hhcng4RG90IHwgTGluZUNvbXBhcmVPZmYg fCBXaWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvIHwgQVNUMjUwMFByZUNhdGNoQ1JUKSwgNjAs IDEsIDB4MzUgfSwKIAl7MTY4MCwgMTI4MCwgNzIsMTI4LCAgODMxLCAgODAwLCAzLCA2LCBWQ0xL ODNfNSwJLyogNjBIeiAqLwogCSAoU3luY1BOIHwgQ2hhcng4RG90IHwgTGluZUNvbXBhcmVPZmYg fCBXaWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvKSwgNjAsIDIsIDB4MzUgfSwKIAl7MTY4MCwg MTI4MCwgNzIsMTI4LCAgODMxLCAgODAwLCAzLCA2LCBWQ0xLODNfNSwJLyogNjBIeiAqLwpAQCAt Mjc5LDcgKzMxMCw3IEBACiAKIHN0YXRpYyBzdHJ1Y3QgYXN0X3ZiaW9zX2VuaHRhYmxlIHJlc18x NDQweDkwMFtdID0gewogCXsxNjAwLCAxNDQwLCA0OCwgMzIsICA5MjYsICA5MDAsIDMsIDYsIFZD TEs4OF83NSwJLyogNjBIeiBSQiAqLwotCSAoU3luY05QIHwgQ2hhcng4RG90IHwgTGluZUNvbXBh cmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvKSwgNjAsIDEsIDB4MzYgfSwKKwkg KFN5bmNOUCB8IENoYXJ4OERvdCB8IExpbmVDb21wYXJlT2ZmIHwgV2lkZVNjcmVlbk1vZGUgfCBO ZXdNb2RlSW5mbyB8IEFTVDI1MDBQcmVDYXRjaENSVCksIDYwLCAxLCAweDM2IH0sCiAJezE5MDQs IDE0NDAsIDgwLDE1MiwgIDkzNCwgIDkwMCwgMywgNiwgVkNMSzEwNl81LAkvKiA2MEh6ICovCiAJ IChTeW5jUE4gfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwg TmV3TW9kZUluZm8pLCA2MCwgMiwgMHgzNiB9LAogCXsxOTA0LCAxNDQwLCA4MCwxNTIsICA5MzQs ICA5MDAsIDMsIDYsIFZDTEsxMDZfNSwJLyogNjBIeiAqLwpAQCAtMjg4LDcgKzMxOSw3IEBACiAK IHN0YXRpYyBzdHJ1Y3QgYXN0X3ZiaW9zX2VuaHRhYmxlIHJlc18xNjgweDEwNTBbXSA9IHsKIAl7 MTg0MCwgMTY4MCwgNDgsIDMyLCAxMDgwLCAxMDUwLCAzLCA2LCBWQ0xLMTE5LAkvKiA2MEh6IFJC ICovCi0JIChTeW5jTlAgfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5N b2RlIHwgTmV3TW9kZUluZm8pLCA2MCwgMSwgMHgzNyB9LAorCSAoU3luY05QIHwgQ2hhcng4RG90 IHwgTGluZUNvbXBhcmVPZmYgfCBXaWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvIHwgQVNUMjUw MFByZUNhdGNoQ1JUKSwgNjAsIDEsIDB4MzcgfSwKIAl7MjI0MCwgMTY4MCwxMDQsMTc2LCAxMDg5 LCAxMDUwLCAzLCA2LCBWQ0xLMTQ2XzI1LAkvKiA2MEh6ICovCiAJIChTeW5jUE4gfCBDaGFyeDhE b3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUluZm8pLCA2MCwg MiwgMHgzNyB9LAogCXsyMjQwLCAxNjgwLDEwNCwxNzYsIDEwODksIDEwNTAsIDMsIDYsIFZDTEsx NDZfMjUsCS8qIDYwSHogKi8KQEAgLTI5Nyw5ICszMjgsOSBAQAogCiBzdGF0aWMgc3RydWN0IGFz dF92Ymlvc19lbmh0YWJsZSByZXNfMTkyMHgxMjAwW10gPSB7CiAJezIwODAsIDE5MjAsIDQ4LCAz MiwgMTIzNSwgMTIwMCwgMywgNiwgVkNMSzE1NCwJLyogNjBIeiBSQiovCi0JIChTeW5jTlAgfCBD aGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUluZm8p LCA2MCwgMSwgMHgzNCB9LAorCSAoU3luY05QIHwgQ2hhcng4RG90IHwgTGluZUNvbXBhcmVPZmYg fCBXaWRlU2NyZWVuTW9kZSB8IE5ld01vZGVJbmZvIHwgQVNUMjUwMFByZUNhdGNoQ1JUKSwgNjAs IDEsIDB4MzQgfSwKIAl7MjA4MCwgMTkyMCwgNDgsIDMyLCAxMjM1LCAxMjAwLCAzLCA2LCBWQ0xL MTU0LAkvKiA2MEh6IFJCICovCi0JIChTeW5jTlAgfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9m ZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3TW9kZUluZm8pLCAweEZGLCAxLCAweDM0IH0sCisJIChT eW5jTlAgfCBDaGFyeDhEb3QgfCBMaW5lQ29tcGFyZU9mZiB8IFdpZGVTY3JlZW5Nb2RlIHwgTmV3 TW9kZUluZm8gfCBBU1QyNTAwUHJlQ2F0Y2hDUlQpLCAweEZGLCAxLCAweDM0IH0sCiB9OwogCiAj ZW5kaWYKLS0gCjEuOC4zLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAo=