From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Bragg Subject: [PATCH 5/9] drm/i915: Enable i915 perf stream for Haswell OA unit Date: Wed, 20 Apr 2016 15:23:10 +0100 Message-ID: <1461162194-1424-6-git-send-email-robert@sixbynine.org> References: <1461162194-1424-1-git-send-email-robert@sixbynine.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1461162194-1424-1-git-send-email-robert@sixbynine.org> 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 Cc: David Airlie , dri-devel@lists.freedesktop.org, Sourab Gupta , Deepak S , Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org R2VuIGdyYXBoaWNzIGhhcmR3YXJlIGNhbiBiZSBzZXQgdXAgdG8gcGVyaW9kaWNhbGx5IHdyaXRl IHNuYXBzaG90cyBvZgpwZXJmb3JtYW5jZSBjb3VudGVycyBpbnRvIGEgY2lyY3VsYXIgYnVmZmVy IHZpYSBpdHMgT2JzZXJ2YXRpb24KQXJjaGl0ZWN0dXJlIGFuZCB0aGlzIHBhdGNoIGV4cG9zZXMg dGhhdCBjYXBhYmlsaXR5IHRvIHVzZXJzcGFjZSB2aWEgdGhlCmk5MTUgcGVyZiBpbnRlcmZhY2Uu CgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ClNpZ25lZC1vZmYt Ynk6IFJvYmVydCBCcmFnZyA8cm9iZXJ0QHNpeGJ5bmluZS5vcmc+ClNpZ25lZC1vZmYtYnk6IFpo ZW55dSBXYW5nIDx6aGVueXV3QGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgNTYgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuYyB8ICAyNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJm LmMgICAgICAgIHwgOTQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgICAgfCAzMzggKysrKysrKysrKysrCiBpbmNs dWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggICAgICAgICAgICAgfCAgNzAgKystCiA1IGZpbGVzIGNo YW5nZWQsIDE0MDggaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKaW5kZXggNWU5NTlmMy4uOTcyYWU2YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CkBAIC0xNzA4LDggKzE3MDgsMTMgQEAgc3RydWN0IGludGVsX3dtX2NvbmZpZyB7CiAJYm9vbCBz cHJpdGVzX3NjYWxlZDsKIH07CiAKK3N0cnVjdCBpOTE1X29hX2Zvcm1hdCB7CisJdTMyIGZvcm1h dDsKKwlpbnQgc2l6ZTsKK307CisKIHN0cnVjdCBpOTE1X29hX3JlZyB7Ci0JdTMyIGFkZHI7CisJ aTkxNV9yZWdfdCBhZGRyOwogCXUzMiB2YWx1ZTsKIH07CiAKQEAgLTE3MjUsNiArMTczMCw3IEBA IHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7CiAKIAl1 MzIgc2FtcGxlX2ZsYWdzOworCWludCBzYW1wbGVfc2l6ZTsKIAogCXN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjdHg7CiAJYm9vbCBlbmFibGVkOwpAQCAtMTc4Niw2ICsxNzkyLDIwIEBAIHN0cnVjdCBp OTE1X3BlcmZfc3RyZWFtIHsKIAl2b2lkICgqZGVzdHJveSkoc3RydWN0IGk5MTVfcGVyZl9zdHJl YW0gKnN0cmVhbSk7CiB9OwogCitzdHJ1Y3QgaTkxNV9vYV9vcHMgeworCXZvaWQgKCppbml0X29h X2J1ZmZlcikoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKKwlpbnQgKCplbmFi bGVfbWV0cmljX3NldCkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKKwl2b2lk ICgqZGlzYWJsZV9tZXRyaWNfc2V0KShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp OworCXZvaWQgKCpvYV9lbmFibGUpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 CisJdm9pZCAoKm9hX2Rpc2FibGUpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 CisJdm9pZCAoKnVwZGF0ZV9vYWNvbnRyb2wpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7CisJdm9pZCAoKnVwZGF0ZV9od19jdHhfaWRfbG9ja2VkKShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJCXUzMiBjdHhfaWQpOworCWludCAoKnJlYWQpKHN0cnVj dCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCisJCSAgICBzdHJ1Y3QgaTkxNV9wZXJmX3JlYWRf c3RhdGUgKnJlYWRfc3RhdGUpOworCWJvb2wgKCpvYV9idWZmZXJfaXNfZW1wdHkpKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cit9OworCiBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldjsKIAlzdHJ1Y3Qga21lbV9jYWNoZSAqb2JqZWN0 czsKQEAgLTIwNTksMTYgKzIwNzksNDYgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCiAJ c3RydWN0IHsKIAkJYm9vbCBpbml0aWFsaXplZDsKKwogCQlzdHJ1Y3QgbXV0ZXggbG9jazsKIAkJ c3RydWN0IGxpc3RfaGVhZCBzdHJlYW1zOwogCisJCXNwaW5sb2NrX3QgaG9va19sb2NrOworCiAJ CXN0cnVjdCB7Ci0JCQl1MzIgbWV0cmljc19zZXQ7CisJCQlzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVh bSAqZXhjbHVzaXZlX3N0cmVhbTsKKworCQkJdTMyIHNwZWNpZmljX2N0eF9pZDsKKworCQkJc3Ry dWN0IGhydGltZXIgcG9sbF9jaGVja190aW1lcjsKKwkJCXdhaXRfcXVldWVfaGVhZF90IHBvbGxf d3E7CisKKwkJCWJvb2wgcGVyaW9kaWM7CisJCQlpbnQgcGVyaW9kX2V4cG9uZW50OworCQkJaW50 IHRpbWVzdGFtcF9mcmVxdWVuY3k7CisKKwkJCWludCB0YWlsX21hcmdpbjsKKworCQkJaW50IG1l dHJpY3Nfc2V0OwogCiAJCQljb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKm11eF9yZWdzOwogCQkJ aW50IG11eF9yZWdzX2xlbjsKIAkJCWNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqYl9jb3VudGVy X3JlZ3M7CiAJCQlpbnQgYl9jb3VudGVyX3JlZ3NfbGVuOworCisJCQlzdHJ1Y3QgeworCQkJCXN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJCQkJdTMyIGd0dF9vZmZzZXQ7CisJCQkJ dTggKmFkZHI7CisJCQkJaW50IGZvcm1hdDsKKwkJCQlpbnQgZm9ybWF0X3NpemU7CisJCQl9IG9h X2J1ZmZlcjsKKworCQkJdTMyIGdlbjdfbGF0Y2hlZF9vYXN0YXR1czE7CisKKwkJCXN0cnVjdCBp OTE1X29hX29wcyBvcHM7CisJCQljb25zdCBzdHJ1Y3QgaTkxNV9vYV9mb3JtYXQgKm9hX2Zvcm1h dHM7CisJCQlpbnQgbl9idWlsdGluX3NldHM7CiAJCX0gb2E7CiAJfSBwZXJmOwogCkBAIC0zNDI5 LDYgKzM0NzksOCBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9zZXRwYXJhbV9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCiBpbnQgaTkxNV9wZXJmX29wZW5faW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCSBzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGUpOwordm9pZCBpOTE1X29hX2NvbnRleHRfcGluX25vdGlmeShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJc3RydWN0IGludGVsX2NvbnRleHQgKmNvbnRleHQpOwog CiAvKiBpOTE1X2dlbV9ldmljdC5jICovCiBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX2V2aWN0 X3NvbWV0aGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fY29udGV4dC5jCmluZGV4IGU1YWNjMzkuLmVkNTY2NWYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTEzMyw2ICsxMzMsMjMgQEAgc3RhdGljIGludCBn ZXRfY29udGV4dF9zaXplKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJcmV0dXJuIHJldDsKIH0K IAorc3RhdGljIGludCBpOTE1X2dlbV9jb250ZXh0X3Bpbl9zdGF0ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAorCQkJCSAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpCit7CisJaW50IHJl dDsKKworCUJVR19PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXYtPnN0cnVjdF9tdXRleCkpOworCisJ cmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKGN0eC0+bGVnYWN5X2h3X2N0eC5yY3Nfc3RhdGUs CisJCQkJICAgIGdldF9jb250ZXh0X2FsaWdubWVudChkZXYpLCAwKTsKKwlpZiAocmV0KQorCQly ZXR1cm4gcmV0OworCisJaTkxNV9vYV9jb250ZXh0X3Bpbl9ub3RpZnkoZGV2LT5kZXZfcHJpdmF0 ZSwgY3R4KTsKKworCXJldHVybiAwOworfQorCiBzdGF0aWMgdm9pZCBpOTE1X2dlbV9jb250ZXh0 X2NsZWFuKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpCiB7CiAJc3RydWN0IGk5MTVfaHdfcHBn dHQgKnBwZ3R0ID0gY3R4LT5wcGd0dDsKQEAgLTI4Nyw4ICszMDQsNyBAQCBpOTE1X2dlbV9jcmVh dGVfY29udGV4dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkgKiBiZSBhdmFpbGFibGUuIFRv IGF2b2lkIHRoaXMgd2UgYWx3YXlzIHBpbiB0aGUgZGVmYXVsdAogCQkgKiBjb250ZXh0LgogCQkg Ki8KLQkJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKGN0eC0+bGVnYWN5X2h3X2N0eC5yY3Nf c3RhdGUsCi0JCQkJCSAgICBnZXRfY29udGV4dF9hbGlnbm1lbnQoZGV2KSwgMCk7CisJCXJldCA9 IGk5MTVfZ2VtX2NvbnRleHRfcGluX3N0YXRlKGRldiwgY3R4KTsKIAkJaWYgKHJldCkgewogCQkJ RFJNX0RFQlVHX0RSSVZFUigiQ291bGRuJ3QgcGluICVkXG4iLCByZXQpOwogCQkJZ290byBlcnJf ZGVzdHJveTsKQEAgLTY3MSw5ICs2ODcsNyBAQCBzdGF0aWMgaW50IGRvX3Jjc19zd2l0Y2goc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCiAJCXJldHVybiAwOwogCiAJLyogVHJ5aW5n IHRvIHBpbiBmaXJzdCBtYWtlcyBlcnJvciBoYW5kbGluZyBlYXNpZXIuICovCi0JcmV0ID0gaTkx NV9nZW1fb2JqX2dndHRfcGluKHRvLT5sZWdhY3lfaHdfY3R4LnJjc19zdGF0ZSwKLQkJCQkgICAg Z2V0X2NvbnRleHRfYWxpZ25tZW50KGVuZ2luZS0+ZGV2KSwKLQkJCQkgICAgMCk7CisJcmV0ID0g aTkxNV9nZW1fY29udGV4dF9waW5fc3RhdGUoZW5naW5lLT5kZXYsIHRvKTsKIAlpZiAocmV0KQog CQlyZXR1cm4gcmV0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Bl cmYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCmluZGV4IDIxNDM0MDEuLjVl NTg1MjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCkBAIC0yNSwxNCArMjUsODMwIEBACiAj aW5jbHVkZSA8bGludXgvc2l6ZXMuaD4KIAogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVk ZSAiaW50ZWxfcmluZ2J1ZmZlci5oIgorI2luY2x1ZGUgImludGVsX2xyYy5oIgorI2luY2x1ZGUg Imk5MTVfb2FfaHN3LmgiCisKKy8qIE11c3QgYmUgYSBwb3dlciBvZiB0d28gKi8KKyNkZWZpbmUg T0FfQlVGRkVSX1NJWkUJCVNaXzE2TQorI2RlZmluZSBPQV9UQUtFTih0YWlsLCBoZWFkKQkoKHRh aWwgLSBoZWFkKSAmIChPQV9CVUZGRVJfU0laRSAtIDEpKQorCisvKiBUaGVyZSdzIGEgSFcgcmFj ZSBjb25kaXRpb24gYmV0d2VlbiBPQSB1bml0IHRhaWwgcG9pbnRlciByZWdpc3RlciB1cGRhdGVz IGFuZAorICogd3JpdGVzIHRvIG1lbW9yeSB3aGVyZWJ5IHRoZSB0YWlsIHBvaW50ZXIgY2FuIHNv bWV0aW1lcyBnZXQgYWhlYWQgb2Ygd2hhdCdzCisgKiBiZWVuIHdyaXR0ZW4gb3V0IHRvIHRoZSBP QSBidWZmZXIgc28gZmFyLgorICoKKyAqIEFsdGhvdWdoIHRoaXMgY2FuIGJlIG9ic2VydmVkIGV4 cGxpY2l0bHkgYnkgY2hlY2tpbmcgZm9yIGEgemVyb2VkIHJlcG9ydC1pZAorICogZmllbGQgaW4g dGFpbCByZXBvcnRzLCBpdCBzZWVtcyBwcmVmZXJhYmxlIHRvIGFjY291bnQgZm9yIHRoaXMgZWFy bGllciBlLmcuCisgKiBhcyBwYXJ0IG9mIHRoZSBfb2FfYnVmZmVyX2lzX2VtcHR5IGNoZWNrcyB0 byBtaW5pbWl6ZSAtRUFHQUlOIHBvbGxpbmcgY3ljbGVzCisgKiBpbiB0aGlzIHNpdHVhdGlvbi4K KyAqCisgKiBUbyBnaXZlIHRpbWUgZm9yIHRoZSBtb3N0IHJlY2VudCByZXBvcnRzIHRvIGxhbmQg YmVmb3JlIHRoZXkgbWF5IGJlIGNvcGllZCB0bworICogdXNlcnNwYWNlLCB0aGUgZHJpdmVyIG9w ZXJhdGVzIGFzIGlmIHRoZSB0YWlsIHBvaW50ZXIgZWZmZWN0aXZlbHkgbGFncyBiZWhpbmQKKyAq IHRoZSBIVyB0YWlsIHBvaW50ZXIgYnkgJ3RhaWxfbWFyZ2luJyBieXRlcy4gVGhlIG1hcmdpbiBp biBieXRlcyBpcyBjYWxjdWxhdGVkCisgKiBiYXNlZCBvbiB0aGlzIGNvbnN0YW50IGluIG5hbm9z ZWNvbmRzLCB0aGUgY3VycmVudCBPQSBzYW1wbGluZyBleHBvbmVudAorICogYW5kIGN1cnJlbnQg cmVwb3J0IHNpemUuCisgKgorICogVGhlcmUgaXMgYWxzbyBhIGZhbGxiYWNrIGNoZWNrIHdoaWxl IHJlYWRpbmcgdG8gc2ltcGx5IHNraXAgb3ZlciByZXBvcnRzIHdpdGgKKyAqIGEgemVyb2VkIHJl cG9ydC1pZC4KKyAqLworI2RlZmluZSBPQV9UQUlMX01BUkdJTl9OU0VDCTEwMDAwMFVMTAorCisv KiBmcmVxdWVuY3kgZm9yIGNoZWNraW5nIHdoZXRoZXIgdGhlIE9BIHVuaXQgaGFzIHdyaXR0ZW4g bmV3IHJlcG9ydHMgdG8gdGhlCisgKiBjaXJjdWxhciBPQSBidWZmZXIuLi4KKyAqLworI2RlZmlu ZSBQT0xMX0ZSRVFVRU5DWSAyMDAKKyNkZWZpbmUgUE9MTF9QRVJJT0QgKE5TRUNfUEVSX1NFQyAv IFBPTExfRlJFUVVFTkNZKQorCisvKiBUaGUgbWF4aW11bSBleHBvbmVudCB0aGUgaGFyZHdhcmUg YWNjZXB0cyBpcyA2MyAoZXNzZW50aWFsbHkgaXQgc2VsZWN0cyBvbmUKKyAqIG9mIHRoZSA2NGJp dCB0aW1lc3RhbXAgYml0cyB0byB0cmlnZ2VyIHJlcG9ydHMgZnJvbSkgYnV0IHRoZXJlJ3MgY3Vy cmVudGx5CisgKiBubyBrbm93biB1c2UgY2FzZSBmb3Igc2FtcGxpbmcgYXMgaW5mcmVxdWVudGx5 IGFzIG9uY2UgcGVyIDQ3IHRob3VzYW5kIHllYXJzLgorICoKKyAqIFNpbmNlIHRoZSB0aW1lc3Rh bXBzIGluY2x1ZGVkIGluIE9BIHJlcG9ydHMgYXJlIG9ubHkgMzJiaXRzIGl0IHNlZW1zCisgKiBy ZWFzb25hYmxlIHRvIGxpbWl0IHRoZSBPQSBleHBvbmVudCB3aGVyZSBpdCdzIHN0aWxsIHBvc3Np YmxlIHRvIGFjY291bnQgZm9yCisgKiBvdmVyZmxvdyBpbiBPQSByZXBvcnQgdGltZXN0YW1wcy4K KyAqLworI2RlZmluZSBPQV9FWFBPTkVOVF9NQVggMzEKKworLyogWFhYOiBiZXdhcmUgaWYgZnV0 dXJlIE9BIEhXIGFkZHMgbmV3IHJlcG9ydCBmb3JtYXRzIHRoYXQgdGhlIGN1cnJlbnQKKyAqIGNv ZGUgYXNzdW1lcyBhbGwgcmVwb3J0cyBoYXZlIGEgcG93ZXItb2YtdHdvIHNpemUgYW5kIH4oc2l6 ZSAtIDEpIGNhbgorICogYmUgdXNlZCBhcyBhIG1hc2sgdG8gYWxpZ24gdGhlIE9BIHRhaWwgcG9p bnRlci4KKyAqLworc3RhdGljIHN0cnVjdCBpOTE1X29hX2Zvcm1hdCBoc3dfb2FfZm9ybWF0c1tJ OTE1X09BX0ZPUk1BVF9NQVhdID0geworCVtJOTE1X09BX0ZPUk1BVF9BMTNdCSAgICA9IHsgMCwg NjQgfSwKKwlbSTkxNV9PQV9GT1JNQVRfQTI5XQkgICAgPSB7IDEsIDEyOCB9LAorCVtJOTE1X09B X0ZPUk1BVF9BMTNfQjhfQzhdICA9IHsgMiwgMTI4IH0sCisJLyogQTI5X0I4X0M4IERpc2FsbG93 ZWQgYXMgMTkyIGJ5dGVzIGRvZXNuJ3QgZmFjdG9yIGludG8gYnVmZmVyIHNpemUgKi8KKwlbSTkx NV9PQV9GT1JNQVRfQjRfQzhdCSAgICA9IHsgNCwgNjQgfSwKKwlbSTkxNV9PQV9GT1JNQVRfQTQ1 X0I4X0M4XSAgPSB7IDUsIDI1NiB9LAorCVtJOTE1X09BX0ZPUk1BVF9CNF9DOF9BMTZdICA9IHsg NiwgMTI4IH0sCisJW0k5MTVfT0FfRk9STUFUX0M0X0I4XQkgICAgPSB7IDcsIDY0IH0sCit9Owor CisjZGVmaW5lIFNBTVBMRV9PQV9SRVBPUlQgICAgICAoMTw8MCkKIAogc3RydWN0IHBlcmZfb3Bl bl9wcm9wZXJ0aWVzIHsKIAl1MzIgc2FtcGxlX2ZsYWdzOwogCiAJdTY0IHNpbmdsZV9jb250ZXh0 OjE7CiAJdTY0IGN0eF9oYW5kbGU7CisKKwkvKiBPQSBzYW1wbGluZyBzdGF0ZSAqLworCWludCBt ZXRyaWNzX3NldDsKKwlpbnQgb2FfZm9ybWF0OworCWJvb2wgb2FfcGVyaW9kaWM7CisJaW50IG9h X3BlcmlvZF9leHBvbmVudDsKIH07CiAKKy8qIE5COiBUaGlzIGlzIGVpdGhlciBjYWxsZWQgdmlh IGZvcHMgb3IgdGhlIHBvbGwgY2hlY2sgaHJ0aW1lciAoYXRvbWljIGN0eCkKKyAqCisgKiBJdCdz IHNhZmUgdG8gcmVhZCBPQSBjb25maWcgc3RhdGUgaGVyZSB1bmxvY2tlZCwgYXNzdW1pbmcgdGhh dCB0aGlzIGlzIG9ubHkKKyAqIGNhbGxlZCB3aGlsZSB0aGUgc3RyZWFtIGlzIGVuYWJsZWQsIHdo aWxlIHRoZSBnbG9iYWwgT0EgY29uZmlndXJhdGlvbiBjYW4ndAorICogYmUgbW9kaWZpZWQuCisg KgorICogTm90ZTogd2UgZG9uJ3QgbG9jayBhcm91bmQgdGhlIGhlYWQvdGFpbCByZWFkcyBldmVu IHRob3VnaCB0aGVyZSdzIHRoZSBzbGltCisgKiBwb3NzaWJpbGl0eSBvZiByZWFkKCkgZm9wIGVy cm9ycyBmb3JjaW5nIGEgcmUtaW5pdCBvZiB0aGUgT0EgYnVmZmVyCisgKiBwb2ludGVycy4gIEEg cmFjZSBoZXJlIGNvdWxkIHJlc3VsdCBpbiBhIGZhbHNlIHBvc2l0aXZlICFlbXB0eSBzdGF0dXMg d2hpY2gKKyAqIGlzIGFjY2VwdGFibGUuCisgKi8KK3N0YXRpYyBib29sIGdlbjdfb2FfYnVmZmVy X2lzX2VtcHR5X2ZvcF91bmxvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cit7CisJaW50IHJlcG9ydF9zaXplID0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmZvcm1h dF9zaXplOworCXUzMiBvYXN0YXR1czIgPSBJOTE1X1JFQUQoR0VON19PQVNUQVRVUzIpOworCXUz MiBvYXN0YXR1czEgPSBJOTE1X1JFQUQoR0VON19PQVNUQVRVUzEpOworCXUzMiBoZWFkID0gb2Fz dGF0dXMyICYgR0VON19PQVNUQVRVUzJfSEVBRF9NQVNLOworCXUzMiB0YWlsID0gb2FzdGF0dXMx ICYgR0VON19PQVNUQVRVUzFfVEFJTF9NQVNLOworCisJcmV0dXJuIE9BX1RBS0VOKHRhaWwsIGhl YWQpIDwKKwkJZGV2X3ByaXYtPnBlcmYub2EudGFpbF9tYXJnaW4gKyByZXBvcnRfc2l6ZTsKK30K KworLyoqCisgKiBBcHBlbmRzIGEgc3RhdHVzIHJlY29yZCB0byBhIHVzZXJzcGFjZSByZWFkKCkg YnVmZmVyLgorICovCitzdGF0aWMgaW50IGFwcGVuZF9vYV9zdGF0dXMoc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gKnN0cmVhbSwKKwkJCSAgICBzdHJ1Y3QgaTkxNV9wZXJmX3JlYWRfc3RhdGUgKnJl YWRfc3RhdGUsCisJCQkgICAgZW51bSBkcm1faTkxNV9wZXJmX3JlY29yZF90eXBlIHR5cGUpCit7 CisJc3RydWN0IGRybV9pOTE1X3BlcmZfcmVjb3JkX2hlYWRlciBoZWFkZXIgPSB7IHR5cGUsIDAs IHNpemVvZihoZWFkZXIpIH07CisKKwlpZiAoKHJlYWRfc3RhdGUtPmNvdW50IC0gcmVhZF9zdGF0 ZS0+cmVhZCkgPCBoZWFkZXIuc2l6ZSkKKwkJcmV0dXJuIC1FTk9TUEM7CisKKwlpZiAoY29weV90 b191c2VyKHJlYWRfc3RhdGUtPmJ1ZiwgJmhlYWRlciwgc2l6ZW9mKGhlYWRlcikpKQorCQlyZXR1 cm4gLUVGQVVMVDsKKworCXJlYWRfc3RhdGUtPmJ1ZiArPSBoZWFkZXIuc2l6ZTsKKwlyZWFkX3N0 YXRlLT5yZWFkICs9IGhlYWRlci5zaXplOworCisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogQ29w aWVzIHNpbmdsZSBPQSByZXBvcnQgaW50byB1c2Vyc3BhY2UgcmVhZCgpIGJ1ZmZlci4KKyAqLwor c3RhdGljIGludCBhcHBlbmRfb2Ffc2FtcGxlKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJl YW0sCisJCQkgICAgc3RydWN0IGk5MTVfcGVyZl9yZWFkX3N0YXRlICpyZWFkX3N0YXRlLAorCQkJ ICAgIGNvbnN0IHU4ICpyZXBvcnQpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKKwlpbnQgcmVwb3J0X3NpemUgPSBkZXZfcHJpdi0+cGVy Zi5vYS5vYV9idWZmZXIuZm9ybWF0X3NpemU7CisJc3RydWN0IGRybV9pOTE1X3BlcmZfcmVjb3Jk X2hlYWRlciBoZWFkZXI7CisJdTMyIHNhbXBsZV9mbGFncyA9IHN0cmVhbS0+c2FtcGxlX2ZsYWdz OworCWNoYXIgX191c2VyICpidWYgPSByZWFkX3N0YXRlLT5idWY7CisKKwloZWFkZXIudHlwZSA9 IERSTV9JOTE1X1BFUkZfUkVDT1JEX1NBTVBMRTsKKwloZWFkZXIucGFkID0gMDsKKwloZWFkZXIu c2l6ZSA9IHN0cmVhbS0+c2FtcGxlX3NpemU7CisKKwlpZiAoKHJlYWRfc3RhdGUtPmNvdW50IC0g cmVhZF9zdGF0ZS0+cmVhZCkgPCBoZWFkZXIuc2l6ZSkKKwkJcmV0dXJuIC1FTk9TUEM7CisKKwlp ZiAoY29weV90b191c2VyKGJ1ZiwgJmhlYWRlciwgc2l6ZW9mKGhlYWRlcikpKQorCQlyZXR1cm4g LUVGQVVMVDsKKwlidWYgKz0gc2l6ZW9mKGhlYWRlcik7CisKKwlpZiAoc2FtcGxlX2ZsYWdzICYg U0FNUExFX09BX1JFUE9SVCkgeworCQlpZiAoY29weV90b191c2VyKGJ1ZiwgcmVwb3J0LCByZXBv cnRfc2l6ZSkpCisJCQlyZXR1cm4gLUVGQVVMVDsKKwl9CisKKwlyZWFkX3N0YXRlLT5idWYgKz0g aGVhZGVyLnNpemU7CisJcmVhZF9zdGF0ZS0+cmVhZCArPSBoZWFkZXIuc2l6ZTsKKworCXJldHVy biAwOworfQorCisvKioKKyAqIENvcGllcyBhbGwgYnVmZmVyZWQgT0EgcmVwb3J0cyBpbnRvIHVz ZXJzcGFjZSByZWFkKCkgYnVmZmVyLgorICogQGhlYWRfcHRyOiAoaW5vdXQpOiB0aGUgaGVhZCBw b2ludGVyIGJlZm9yZSBhbmQgYWZ0ZXIgYXBwZW5kaW5nCisgKgorICogUmV0dXJucyAwIG9uIHN1 Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KKyAqCisgKiBOb3RhYmx5IGFu eSBlcnJvciBjb25kaXRpb24gcmVzdWx0aW5nIGluIGEgc2hvcnQgcmVhZCAoLUVOT1NQQyBvcgor ICogLUVGQVVMVCkgd2lsbCBiZSByZXR1cm5lZCBldmVuIHRob3VnaCBvbmUgb3IgbW9yZSByZWNv cmRzIG1heQorICogaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBjb3BpZWQuIEluIHRoaXMgY2FzZSB0 aGUgZXJyb3IgbWF5IGJlCisgKiBzcXVhc2hlZCBiZWZvcmUgcmV0dXJuaW5nIHRvIHVzZXJzcGFj ZS4KKyAqLworc3RhdGljIGludCBnZW43X2FwcGVuZF9vYV9yZXBvcnRzKHN0cnVjdCBpOTE1X3Bl cmZfc3RyZWFtICpzdHJlYW0sCisJCQkJICBzdHJ1Y3QgaTkxNV9wZXJmX3JlYWRfc3RhdGUgKnJl YWRfc3RhdGUsCisJCQkJICB1MzIgKmhlYWRfcHRyLAorCQkJCSAgdTMyIHRhaWwpCit7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKKwlpbnQg cmVwb3J0X3NpemUgPSBkZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuZm9ybWF0X3NpemU7CisJ dTggKm9hX2J1Zl9iYXNlID0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmFkZHI7CisJaW50 IHRhaWxfbWFyZ2luID0gZGV2X3ByaXYtPnBlcmYub2EudGFpbF9tYXJnaW47CisJdTMyIG1hc2sg PSAoT0FfQlVGRkVSX1NJWkUgLSAxKTsKKwl1MzIgaGVhZDsKKwl1MzIgdGFrZW47CisJaW50IHJl dCA9IDA7CisKKwlCVUdfT04oIXN0cmVhbS0+ZW5hYmxlZCk7CisKKwloZWFkID0gKmhlYWRfcHRy IC0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmd0dF9vZmZzZXQ7CisJdGFpbCAtPSBkZXZf cHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuZ3R0X29mZnNldDsKKworCS8qIFRoZSBPQSB1bml0IGlz IGV4cGVjdGVkIHRvIHdyYXAgdGhlIHRhaWwgcG9pbnRlciBhY2NvcmRpbmcgdG8gdGhlIE9BCisJ ICogYnVmZmVyIHNpemUgYW5kIHNpbmNlIHdlIHNob3VsZCBuZXZlciB3cml0ZSBhIG1pc2FsaWdu ZWQgaGVhZAorCSAqIHBvaW50ZXIgd2UgZG9uJ3QgZXhwZWN0IHRvIHJlYWQgb25lIGJhY2sgZWl0 aGVyLi4uCisJICovCisJaWYgKHRhaWwgPiBPQV9CVUZGRVJfU0laRSB8fCBoZWFkID4gT0FfQlVG RkVSX1NJWkUgfHwKKwkgICAgaGVhZCAlIHJlcG9ydF9zaXplKSB7CisJCURSTV9FUlJPUigiSW5j b25zaXN0ZW50IE9BIGJ1ZmZlciBwb2ludGVyIChoZWFkID0gJXUsIHRhaWwgPSAldSk6IGZvcmNl IHJlc3RhcnQiLAorCQkJICBoZWFkLCB0YWlsKTsKKwkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9h X2Rpc2FibGUoZGV2X3ByaXYpOworCQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMub2FfZW5hYmxlKGRl dl9wcml2KTsKKwkJKmhlYWRfcHRyID0gSTkxNV9SRUFEKEdFTjdfT0FTVEFUVVMyKSAmCisJCQlH RU43X09BU1RBVFVTMl9IRUFEX01BU0s7CisJCXJldHVybiAtRUlPOworCX0KKworCisJLyogVGhl IHRhaWwgcG9pbnRlciBpbmNyZWFzZXMgaW4gNjQgYnl0ZSBpbmNyZW1lbnRzLCBub3QgaW4gcmVw b3J0X3NpemUKKwkgKiBzdGVwcy4uLgorCSAqLworCXRhaWwgJj0gfihyZXBvcnRfc2l6ZSAtIDEp OworCisJLyogTW92ZSB0aGUgdGFpbCBwb2ludGVyIGJhY2sgYnkgdGhlIGN1cnJlbnQgdGFpbF9t YXJnaW4gdG8gYWNjb3VudCBmb3IKKwkgKiB0aGUgcG9zc2liaWxpdHkgdGhhdCB0aGUgbGF0ZXN0 IHJlcG9ydHMgbWF5IG5vdCBoYXZlIHJlYWxseSBsYW5kZWQKKwkgKiBpbiBtZW1vcnkgeWV0Li4u CisJICovCisKKwlpZiAoT0FfVEFLRU4odGFpbCwgaGVhZCkgPCByZXBvcnRfc2l6ZSArIHRhaWxf bWFyZ2luKQorCQlyZXR1cm4gLUVBR0FJTjsKKworCXRhaWwgLT0gdGFpbF9tYXJnaW47CisJdGFp bCAmPSBtYXNrOworCisJZm9yICgvKiBub25lICovOworCSAgICAgKHRha2VuID0gT0FfVEFLRU4o dGFpbCwgaGVhZCkpOworCSAgICAgaGVhZCA9IChoZWFkICsgcmVwb3J0X3NpemUpICYgbWFzaykg eworCQl1OCAqcmVwb3J0ID0gb2FfYnVmX2Jhc2UgKyBoZWFkOworCQl1MzIgKnJlcG9ydDMyID0g KHZvaWQgKilyZXBvcnQ7CisKKwkJLyogQWxsIHRoZSByZXBvcnQgc2l6ZXMgZmFjdG9yIG5lYXRs eSBpbnRvIHRoZSBidWZmZXIKKwkJICogc2l6ZSBzbyB3ZSBuZXZlciBleHBlY3QgdG8gc2VlIGEg cmVwb3J0IHNwbGl0CisJCSAqIGJldHdlZW4gdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIHRoZSBi dWZmZXIuCisJCSAqCisJCSAqIEdpdmVuIHRoZSBpbml0aWFsIGFsaWdubWVudCBjaGVjayBhIG1p c2FsaWdubWVudAorCQkgKiBoZXJlIHdvdWxkIGltcGx5IGEgZHJpdmVyIGJ1ZyB0aGF0IHdvdWxk IHJlc3VsdAorCQkgKiBpbiBhbiBvdmVycnVuLgorCQkgKi8KKwkJQlVHX09OKChPQV9CVUZGRVJf U0laRSAtIGhlYWQpIDwgcmVwb3J0X3NpemUpOworCisJCS8qIFRoZSByZXBvcnQtSUQgZmllbGQg Zm9yIHBlcmlvZGljIHNhbXBsZXMgaW5jbHVkZXMKKwkJICogc29tZSB1bmRvY3VtZW50ZWQgZmxh Z3MgcmVsYXRlZCB0byB3aGF0IHRyaWdnZXJlZAorCQkgKiB0aGUgcmVwb3J0IGFuZCBpcyBuZXZl ciBleHBlY3RlZCB0byBiZSB6ZXJvIHNvIHdlCisJCSAqIGNhbiBjaGVjayB0aGF0IHRoZSByZXBv cnQgaXNuJ3QgaW52YWxpZCBiZWZvcmUKKwkJICogY29weWluZyBpdCB0byB1c2Vyc3BhY2UuLi4K KwkJICovCisJCWlmIChyZXBvcnQzMlswXSA9PSAwKSB7CisJCQlEUk1fRVJST1IoIlNraXBwaW5n IHNwdXJpb3VzLCBpbnZhbGlkIE9BIHJlcG9ydFxuIik7CisJCQljb250aW51ZTsKKwkJfQorCisJ CXJldCA9IGFwcGVuZF9vYV9zYW1wbGUoc3RyZWFtLCByZWFkX3N0YXRlLCByZXBvcnQpOworCQlp ZiAocmV0KQorCQkJYnJlYWs7CisKKwkJLyogVGhlIGFib3ZlIHJlcG9ydC1pZCBmaWVsZCBzYW5p dHkgY2hlY2sgaXMgYmFzZWQgb24KKwkJICogdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgT0EgYnVm ZmVyIGlzIGluaXRpYWxseQorCQkgKiB6ZXJvZWQgYW5kIHdlIHJlc2V0IHRoZSBmaWVsZCBhZnRl ciBjb3B5aW5nIHNvIHRoZQorCQkgKiBjaGVjayBpcyBzdGlsbCBtZWFuaW5nZnVsIG9uY2Ugb2xk IHJlcG9ydHMgc3RhcnQKKwkJICogYmVpbmcgb3ZlcndyaXR0ZW4uCisJCSAqLworCQlyZXBvcnQz MlswXSA9IDA7CisJfQorCisJKmhlYWRfcHRyID0gZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVy Lmd0dF9vZmZzZXQgKyBoZWFkOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBnZW43 X29hX3JlYWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKKwkJCXN0cnVjdCBpOTE1 X3BlcmZfcmVhZF9zdGF0ZSAqcmVhZF9zdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2OworCWludCByZXBvcnRfc2l6ZSA9IGRldl9w cml2LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3JtYXRfc2l6ZTsKKwl1MzIgb2FzdGF0dXMyOworCXUz MiBvYXN0YXR1czE7CisJdTMyIGhlYWQ7CisJdTMyIHRhaWw7CisJaW50IHJldDsKKworCVdBUk5f T04oIWRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5hZGRyKTsKKworCW9hc3RhdHVzMiA9IEk5 MTVfUkVBRChHRU43X09BU1RBVFVTMik7CisJb2FzdGF0dXMxID0gSTkxNV9SRUFEKEdFTjdfT0FT VEFUVVMxKTsKKworCWhlYWQgPSBvYXN0YXR1czIgJiBHRU43X09BU1RBVFVTMl9IRUFEX01BU0s7 CisJdGFpbCA9IG9hc3RhdHVzMSAmIEdFTjdfT0FTVEFUVVMxX1RBSUxfTUFTSzsKKworCS8qIFhY WDogT24gSGFzd2VsbCB3ZSBkb24ndCBoYXZlIGEgc2FmZSB3YXkgdG8gY2xlYXIgb2FzdGF0dXMx CisJICogYml0cyB3aGlsZSB0aGUgT0EgdW5pdCBpcyBlbmFibGVkICh3aGlsZSB0aGUgdGFpbCBw b2ludGVyCisJICogbWF5IGJlIHVwZGF0ZWQgYXN5bmNocm9ub3VzbHkpIHNvIHdlIGlnbm9yZSBz dGF0dXMgYml0cworCSAqIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gcmVwb3J0ZWQgdG8gdXNlcnNw YWNlLgorCSAqLworCW9hc3RhdHVzMSAmPSB+ZGV2X3ByaXYtPnBlcmYub2EuZ2VuN19sYXRjaGVk X29hc3RhdHVzMTsKKworCS8qIFdlIHRyZWF0IE9BQlVGRkVSX09WRVJGTE9XIGFzIGEgc2lnbmlm aWNhbnQgZXJyb3I6CisJICoKKwkgKiAtIFRoZSBzdGF0dXMgY2FuIGJlIGludGVycHJldGVkIHRv IG1lYW4gdGhhdCB0aGUgYnVmZmVyIGlzCisJICogICBjdXJyZW50bHkgZnVsbCAod2l0aCBhIGhp Z2hlciBwcmVjZWRlbmNlIHRoYW4gT0FfVEFLRU4oKQorCSAqICAgd2hpY2ggd2lsbCBzdGFydCB0 byByZXBvcnQgYSBuZWFyLWVtcHR5IGJ1ZmZlciBhZnRlciBhbgorCSAqICAgb3ZlcmZsb3cpIGJ1 dCBpdCdzIGF3a3dhcmQgdGhhdCB3ZSBjYW4ndCBjbGVhciB0aGUgc3RhdHVzCisJICogICBvbiBI YXN3ZWxsLCBzbyB3aXRob3V0IGEgcmVzZXQgd2Ugd29uJ3QgYmUgYWJsZSB0byBjYXRjaAorCSAq ICAgdGhlIHN0YXRlIGFnYWluLgorCSAqCisJICogLSBTaW5jZSBpdCBhbHNvIGltcGxpZXMgdGhl IEhXIGhhcyBzdGFydGVkIG92ZXJ3cml0aW5nIG9sZAorCSAqICAgcmVwb3J0cyBpdCBtYXkgYWxz byBhZmZlY3Qgb3VyIHNhbml0eSBjaGVja3MgZm9yIGludmFsaWQKKwkgKiAgIHJlcG9ydHMgd2hl biBjb3B5aW5nIHRvIHVzZXJzcGFjZSB0aGF0IGFzc3VtZSBuZXcgcmVwb3J0cworCSAqICAgYXJl IGJlaW5nIHdyaXR0ZW4gdG8gY2xlYXJlZCBtZW1vcnkuCisJICoKKwkgKiAtIEluIHRoZSBmdXR1 cmUgd2UgbWF5IHdhbnQgdG8gaW50cm9kdWNlIGEgZmxpZ2h0IHJlY29yZGVyCisJICogICBtb2Rl IHdoZXJlIHRoZSBkcml2ZXIgd2lsbCBhdXRvbWF0aWNhbGx5IG1haW50YWluIGEgc2FmZQorCSAq ICAgZ3VhcmQgYmFuZCBiZXR3ZWVuIGhlYWQvdGFpbCwgYXZvaWRpbmcgdGhpcyBvdmVyZmxvdwor CSAqICAgY29uZGl0aW9uLCBidXQgd2UgYXZvaWQgdGhlIGFkZGVkIGRyaXZlciBjb21wbGV4aXR5 IGZvcgorCSAqICAgbm93LgorCSAqLworCWlmICh1bmxpa2VseShvYXN0YXR1czEgJiBHRU43X09B U1RBVFVTMV9PQUJVRkZFUl9PVkVSRkxPVykpIHsKKwkJcmV0ID0gYXBwZW5kX29hX3N0YXR1cyhz dHJlYW0sIHJlYWRfc3RhdGUsCisJCQkJICAgICAgIERSTV9JOTE1X1BFUkZfUkVDT1JEX09BX0JV RkZFUl9MT1NUKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisKKwkJRFJNX0VSUk9SKCJP QSBidWZmZXIgb3ZlcmZsb3c6IGZvcmNlIHJlc3RhcnQiKTsKKworCQlkZXZfcHJpdi0+cGVyZi5v YS5vcHMub2FfZGlzYWJsZShkZXZfcHJpdik7CisJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5vYV9l bmFibGUoZGV2X3ByaXYpOworCisJCW9hc3RhdHVzMiA9IEk5MTVfUkVBRChHRU43X09BU1RBVFVT Mik7CisJCW9hc3RhdHVzMSA9IEk5MTVfUkVBRChHRU43X09BU1RBVFVTMSk7CisKKwkJaGVhZCA9 IG9hc3RhdHVzMiAmIEdFTjdfT0FTVEFUVVMyX0hFQURfTUFTSzsKKwkJdGFpbCA9IG9hc3RhdHVz MSAmIEdFTjdfT0FTVEFUVVMxX1RBSUxfTUFTSzsKKwl9CisKKwlpZiAodW5saWtlbHkob2FzdGF0 dXMxICYgR0VON19PQVNUQVRVUzFfUkVQT1JUX0xPU1QpKSB7CisJCXJldCA9IGFwcGVuZF9vYV9z dGF0dXMoc3RyZWFtLCByZWFkX3N0YXRlLAorCQkJCSAgICAgICBEUk1fSTkxNV9QRVJGX1JFQ09S RF9PQV9SRVBPUlRfTE9TVCk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCQlkZXZfcHJp di0+cGVyZi5vYS5nZW43X2xhdGNoZWRfb2FzdGF0dXMxIHw9CisJCQlHRU43X09BU1RBVFVTMV9S RVBPUlRfTE9TVDsKKwl9CisKKwlyZXQgPSBnZW43X2FwcGVuZF9vYV9yZXBvcnRzKHN0cmVhbSwg cmVhZF9zdGF0ZSwgJmhlYWQsIHRhaWwpOworCisJLyogQWxsIHRoZSByZXBvcnQgc2l6ZXMgYXJl IGEgcG93ZXIgb2YgdHdvIGFuZCB0aGUKKwkgKiBoZWFkIHNob3VsZCBhbHdheXMgYmUgaW5jcmVt ZW50ZWQgYnkgc29tZSBtdWx0aXBsZQorCSAqIG9mIHRoZSByZXBvcnQgc2l6ZS4KKwkgKgorCSAq IEEgd2FybmluZyBoZXJlLCBidXQgbm90YWJseSBpZiB3ZSBsYXRlciByZWFkIGJhY2sgYQorCSAq IG1pc2FsaWduZWQgcG9pbnRlciB3ZSB3aWxsIHRyZWF0IHRoYXQgYXMgYSBidWcgc2luY2UKKwkg KiBpdCBjb3VsZCBsZWFkIHRvIGEgYnVmZmVyIG92ZXJydW4uCisJICovCisJV0FSTl9PTkNFKGhl YWQgJiAocmVwb3J0X3NpemUgLSAxKSwKKwkJICAiaTkxNTogV3JpdGluZyBtaXNhbGlnbmVkIE9B IGhlYWQgcG9pbnRlciIpOworCisJLyogTm90ZTogd2UgdXBkYXRlIHRoZSBoZWFkIHBvaW50ZXIg aGVyZSBldmVuIGlmIGFuIGVycm9yCisJICogd2FzIHJldHVybmVkIHNpbmNlIHRoZSBlcnJvciBt YXkgcmVwcmVzZW50IGEgc2hvcnQgcmVhZAorCSAqIHdoZXJlIHNvbWUgc29tZSByZXBvcnRzIHdl cmUgc3VjY2Vzc2Z1bGx5IGNvcGllZC4KKwkgKi8KKwlJOTE1X1dSSVRFKEdFTjdfT0FTVEFUVVMy LAorCQkgICAoKGhlYWQgJiBHRU43X09BU1RBVFVTMl9IRUFEX01BU0spIHwKKwkJICAgIE9BX01F TV9TRUxFQ1RfR0dUVCkpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGJvb2wgaTkxNV9v YV9jYW5fcmVhZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQoreworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7CisKKwlyZXR1cm4g IWRldl9wcml2LT5wZXJmLm9hLm9wcy5vYV9idWZmZXJfaXNfZW1wdHkoZGV2X3ByaXYpOworfQor CitzdGF0aWMgaW50IGk5MTVfb2Ffd2FpdF91bmxvY2tlZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVh bSAqc3RyZWFtKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVh bS0+ZGV2X3ByaXY7CisKKwkvKiBOb3RlOiB0aGUgb2FfYnVmZmVyX2lzX2VtcHR5KCkgY29uZGl0 aW9uIGlzIG9rIHRvIHJ1biB1bmxvY2tlZCBhcyBpdAorCSAqIGp1c3QgcGVyZm9ybXMgbW1pbyBy ZWFkcyBvZiB0aGUgT0EgYnVmZmVyIGhlYWQgKyB0YWlsIHBvaW50ZXJzIGFuZAorCSAqIGl0J3Mg YXNzdW1lZCB3ZSdyZSBoYW5kbGluZyBzb21lIG9wZXJhdGlvbiB0aGF0IGltcGxpZXMgdGhlIHN0 cmVhbQorCSAqIGNhbid0IGJlIGRlc3Ryb3llZCB1bnRpbCBjb21wbGV0aW9uIChzdWNoIGFzIGEg cmVhZCgpKSB0aGF0IGVuc3VyZXMKKwkgKiB0aGUgZGV2aWNlICsgT0EgYnVmZmVyIGNhbid0IGRp c2FwcGVhcgorCSAqLworCXJldHVybiB3YWl0X2V2ZW50X2ludGVycnVwdGlibGUoZGV2X3ByaXYt PnBlcmYub2EucG9sbF93cSwKKwkJCQkJIWRldl9wcml2LT5wZXJmLm9hLm9wcy5vYV9idWZmZXJf aXNfZW1wdHkoZGV2X3ByaXYpKTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9vYV9wb2xsX3dhaXQo c3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKKwkJCSAgICAgIHN0cnVjdCBmaWxlICpm aWxlLAorCQkJICAgICAgcG9sbF90YWJsZSAqd2FpdCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2OworCisJcG9sbF93YWl0KGZpbGUsICZk ZXZfcHJpdi0+cGVyZi5vYS5wb2xsX3dxLCB3YWl0KTsKK30KKworc3RhdGljIGludCBpOTE1X29h X3JlYWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKKwkJCXN0cnVjdCBpOTE1X3Bl cmZfcmVhZF9zdGF0ZSAqcmVhZF9zdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2OworCisJcmV0dXJuIGRldl9wcml2LT5wZXJmLm9h Lm9wcy5yZWFkKHN0cmVhbSwgcmVhZF9zdGF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitmcmVlX29h X2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3sKKwltdXRleF9sb2NrKCZp OTE1LT5kZXYtPnN0cnVjdF9tdXRleCk7CisKKwl2dW5tYXAoaTkxNS0+cGVyZi5vYS5vYV9idWZm ZXIuYWRkcik7CisJaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW4oaTkxNS0+cGVyZi5vYS5vYV9i dWZmZXIub2JqKTsKKwlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmaTkxNS0+cGVyZi5vYS5v YV9idWZmZXIub2JqLT5iYXNlKTsKKworCWk5MTUtPnBlcmYub2Eub2FfYnVmZmVyLm9iaiA9IE5V TEw7CisJaTkxNS0+cGVyZi5vYS5vYV9idWZmZXIuZ3R0X29mZnNldCA9IDA7CisJaTkxNS0+cGVy Zi5vYS5vYV9idWZmZXIuYWRkciA9IE5VTEw7CisKKwltdXRleF91bmxvY2soJmk5MTUtPmRldi0+ c3RydWN0X211dGV4KTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9vYV9zdHJlYW1fZGVzdHJveShz dHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7CisKKwlCVUdfT04oc3RyZWFtICE9IGRl dl9wcml2LT5wZXJmLm9hLmV4Y2x1c2l2ZV9zdHJlYW0pOworCisJZGV2X3ByaXYtPnBlcmYub2Eu b3BzLmRpc2FibGVfbWV0cmljX3NldChkZXZfcHJpdik7CisKKwlmcmVlX29hX2J1ZmZlcihkZXZf cHJpdik7CisKKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtF X0FMTCk7CisJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOworCisJZGV2X3ByaXYtPnBl cmYub2EuZXhjbHVzaXZlX3N0cmVhbSA9IE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkICp2bWFwX29h X2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQoreworCWludCBpOworCXZv aWQgKmFkZHIgPSBOVUxMOworCXN0cnVjdCBzZ19wYWdlX2l0ZXIgc2dfaXRlcjsKKwlzdHJ1Y3Qg cGFnZSAqKnBhZ2VzOworCisJcGFnZXMgPSBkcm1fbWFsbG9jX2FiKG9iai0+YmFzZS5zaXplID4+ IFBBR0VfU0hJRlQsIHNpemVvZigqcGFnZXMpKTsKKwlpZiAocGFnZXMgPT0gTlVMTCkgeworCQlE Uk1fREVCVUdfRFJJVkVSKCJGYWlsZWQgdG8gZ2V0IHNwYWNlIGZvciBwYWdlc1xuIik7CisJCWdv dG8gZmluaXNoOworCX0KKworCWkgPSAwOworCWZvcl9lYWNoX3NnX3BhZ2Uob2JqLT5wYWdlcy0+ c2dsLCAmc2dfaXRlciwgb2JqLT5wYWdlcy0+bmVudHMsIDApIHsKKwkJcGFnZXNbaV0gPSBzZ19w YWdlX2l0ZXJfcGFnZSgmc2dfaXRlcik7CisJCWkrKzsKKwl9CisKKwlhZGRyID0gdm1hcChwYWdl cywgaSwgMCwgUEFHRV9LRVJORUwpOworCWlmIChhZGRyID09IE5VTEwpIHsKKwkJRFJNX0RFQlVH X0RSSVZFUigiRmFpbGVkIHRvIHZtYXAgcGFnZXNcbiIpOworCQlnb3RvIGZpbmlzaDsKKwl9CisK K2ZpbmlzaDoKKwlpZiAocGFnZXMpCisJCWRybV9mcmVlX2xhcmdlKHBhZ2VzKTsKKwlyZXR1cm4g YWRkcjsKK30KKworc3RhdGljIHZvaWQgZ2VuN19pbml0X29hX2J1ZmZlcihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJLyogUHJlLURldkJEVzogT0FCVUZGRVIgbXVzdCBi ZSBzZXQgd2l0aCBjb3VudGVycyBvZmYsCisJICogYmVmb3JlIE9BU1RBVFVTMSwgYnV0IGFmdGVy IE9BU1RBVFVTMgorCSAqLworCUk5MTVfV1JJVEUoR0VON19PQVNUQVRVUzIsIGRldl9wcml2LT5w ZXJmLm9hLm9hX2J1ZmZlci5ndHRfb2Zmc2V0IHwKKwkJICAgT0FfTUVNX1NFTEVDVF9HR1RUKTsg LyogaGVhZCAqLworCUk5MTVfV1JJVEUoR0VON19PQUJVRkZFUiwgZGV2X3ByaXYtPnBlcmYub2Eu b2FfYnVmZmVyLmd0dF9vZmZzZXQpOworCUk5MTVfV1JJVEUoR0VON19PQVNUQVRVUzEsIGRldl9w cml2LT5wZXJmLm9hLm9hX2J1ZmZlci5ndHRfb2Zmc2V0IHwKKwkJICAgT0FCVUZGRVJfU0laRV8x Nk0pOyAvKiB0YWlsICovCisKKwkvKiBPbiBIYXN3ZWxsIHdlIGhhdmUgdG8gdHJhY2sgd2hpY2gg T0FTVEFUVVMxIGZsYWdzIHdlJ3ZlCisJICogYWxyZWFkeSBzZWVuIHNpbmNlIHRoZXkgY2FuJ3Qg YmUgY2xlYXJlZCB3aGlsZSBwZXJpb2RpYworCSAqIHNhbXBsaW5nIGlzIGVuYWJsZWQuCisJICov CisJZGV2X3ByaXYtPnBlcmYub2EuZ2VuN19sYXRjaGVkX29hc3RhdHVzMSA9IDA7CisKKwkvKiBX ZSBoYXZlIGEgc2FuaXR5IGNoZWNrIGluIGdlbjdfYXBwZW5kX29hX3JlcG9ydHMoKSB0aGF0CisJ ICogbG9va3MgYXQgdGhlIHJlcG9ydC1pZCBmaWVsZCB0byBtYWtlIHN1cmUgaXQncyBub24temVy bworCSAqIHdoaWNoIHJlbGllcyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IG5ldyByZXBvcnRzIGFy ZQorCSAqIGJlaW5nIHdyaXR0ZW4gdG8gemVyb2VkIG1lbW9yeS4uLgorCSAqLworCW1lbXNldChk ZXZfcHJpdi0+cGVyZi5vYS5vYV9idWZmZXIuYWRkciwgMCwgU1pfMTZNKTsKK30KKworc3RhdGlj IGludCBhbGxvY19vYV9idWZmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQor eworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpibzsKKwlpbnQgcmV0OworCisJQlVHX09O KGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5vYmopOworCisJcmV0ID0gaTkxNV9tdXRleF9s b2NrX2ludGVycnVwdGlibGUoZGV2X3ByaXYtPmRldik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJl dDsKKworCWJvID0gaTkxNV9nZW1fYWxsb2Nfb2JqZWN0KGRldl9wcml2LT5kZXYsIE9BX0JVRkZF Ul9TSVpFKTsKKwlpZiAoYm8gPT0gTlVMTCkgeworCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhbGxv Y2F0ZSBPQSBidWZmZXJcbiIpOworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIHVubG9jazsKKwl9 CisJZGV2X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLm9iaiA9IGJvOworCisJcmV0ID0gaTkxNV9n ZW1fb2JqZWN0X3NldF9jYWNoZV9sZXZlbChibywgSTkxNV9DQUNIRV9MTEMpOworCWlmIChyZXQp CisJCWdvdG8gZXJyX3VucmVmOworCisJLyogUHJlSFNXIHJlcXVpcmVkIDUxMksgYWxpZ25tZW50 LCBIU1cgcmVxdWlyZXMgMTZNICovCisJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKGJvLCBT Wl8xNk0sIDApOworCWlmIChyZXQpCisJCWdvdG8gZXJyX3VucmVmOworCisJZGV2X3ByaXYtPnBl cmYub2Eub2FfYnVmZmVyLmd0dF9vZmZzZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoYm8p OworCWRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5hZGRyID0gdm1hcF9vYV9idWZmZXIoYm8p OworCisJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmluaXRfb2FfYnVmZmVyKGRldl9wcml2KTsKKwor CURSTV9ERUJVR19EUklWRVIoIk9BIEJ1ZmZlciBpbml0aWFsaXplZCwgZ3R0IG9mZnNldCA9IDB4 JXgsIHZhZGRyID0gJXAiLAorCQkJIGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5ndHRfb2Zm c2V0LAorCQkJIGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5hZGRyKTsKKworCWdvdG8gdW5s b2NrOworCitlcnJfdW5yZWY6CisJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJmJvLT5iYXNl KTsKKwordW5sb2NrOgorCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRldi0+c3RydWN0X211dGV4 KTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBjb25maWdfb2FfcmVncyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9y ZWcgKnJlZ3MsCisJCQkgICBpbnQgbl9yZWdzKQoreworCWludCBpOworCisJZm9yIChpID0gMDsg aSA8IG5fcmVnczsgaSsrKSB7CisJCWNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqcmVnID0gcmVn cyArIGk7CisKKwkJSTkxNV9XUklURShyZWctPmFkZHIsIHJlZy0+dmFsdWUpOworCX0KK30KKwor c3RhdGljIGludCBoc3dfZW5hYmxlX21ldHJpY19zZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQoreworCWludCByZXQgPSBpOTE1X29hX3NlbGVjdF9tZXRyaWNfc2V0X2hzdyhk ZXZfcHJpdik7CisKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJSTkxNV9XUklURShHRFRf Q0hJQ0tFTl9CSVRTLCBHVF9OT0FfRU5BQkxFKTsKKworCS8qIFBSTToKKwkgKgorCSAqIE9BIHVu aXQgaXMgdXNpbmcg4oCcY3JjbGvigJ0gZm9yIGl0cyBmdW5jdGlvbmFsaXR5LiBXaGVuIHRydW5r CisJICogbGV2ZWwgY2xvY2sgZ2F0aW5nIHRha2VzIHBsYWNlLCBPQSBjbG9jayB3b3VsZCBiZSBn YXRlZCwKKwkgKiB1bmFibGUgdG8gY291bnQgdGhlIGV2ZW50cyBmcm9tIG5vbi1yZW5kZXIgY2xv Y2sgZG9tYWluLgorCSAqIFJlbmRlciBjbG9jayBnYXRpbmcgbXVzdCBiZSBkaXNhYmxlZCB3aGVu IE9BIGlzIGVuYWJsZWQgdG8KKwkgKiBjb3VudCB0aGUgZXZlbnRzIGZyb20gbm9uLXJlbmRlciBk b21haW4uIFVuaXQgbGV2ZWwgY2xvY2sKKwkgKiBnYXRpbmcgZm9yIFJDUyBzaG91bGQgYWxzbyBi ZSBkaXNhYmxlZC4KKwkgKi8KKwlJOTE1X1dSSVRFKEdFTjdfTUlTQ0NQQ1RMLCAoSTkxNV9SRUFE KEdFTjdfTUlTQ0NQQ1RMKSAmCisJCQkJICAgIH5HRU43X0RPUF9DTE9DS19HQVRFX0VOQUJMRSkp OworCUk5MTVfV1JJVEUoR0VONl9VQ0dDVEwxLCAoSTkxNV9SRUFEKEdFTjZfVUNHQ1RMMSkgfAor CQkJCSAgR0VONl9DU1VOSVRfQ0xPQ0tfR0FURV9ESVNBQkxFKSk7CisKKwljb25maWdfb2FfcmVn cyhkZXZfcHJpdiwgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCisJCSAgICAgICBkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVnc19sZW4pOworCisJLyogSXQgdGFrZXMgYSBmYWlybHkgbG9uZyB0 aW1lIGZvciBhIG5ldyBNVVggY29uZmlndXJhdGlvbiB0bworCSAqIGJlIGJlIGFwcGxpZWQgYWZ0 ZXIgdGhlc2UgcmVnaXN0ZXIgd3JpdGVzLiBUaGlzIGRlbGF5CisJICogZHVyYXRpb24gd2FzIGRl cml2ZWQgZW1waXJpY2FsbHkgYmFzZWQgb24gdGhlIHJlbmRlcl9iYXNpYworCSAqIGNvbmZpZyBi dXQgaG9wZWZ1bGx5IGl0IGNvdmVycyB0aGUgbWF4aW11bSBjb25maWd1cmF0aW9uCisJICogbGF0 ZW5jeS4uLgorCSAqLworCW1kZWxheSgxMDApOworCisJY29uZmlnX29hX3JlZ3MoZGV2X3ByaXYs IGRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzLAorCQkgICAgICAgZGV2X3ByaXYtPnBl cmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9p ZCBoc3dfZGlzYWJsZV9tZXRyaWNfc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKK3sKKwlJOTE1X1dSSVRFKEdFTjZfVUNHQ1RMMSwgKEk5MTVfUkVBRChHRU42X1VDR0NUTDEp ICYKKwkJCQkgIH5HRU42X0NTVU5JVF9DTE9DS19HQVRFX0RJU0FCTEUpKTsKKwlJOTE1X1dSSVRF KEdFTjdfTUlTQ0NQQ1RMLCAoSTkxNV9SRUFEKEdFTjdfTUlTQ0NQQ1RMKSB8CisJCQkJICAgIEdF TjdfRE9QX0NMT0NLX0dBVEVfRU5BQkxFKSk7CisKKwlJOTE1X1dSSVRFKEdEVF9DSElDS0VOX0JJ VFMsIChJOTE1X1JFQUQoR0RUX0NISUNLRU5fQklUUykgJgorCQkJCSAgICAgIH5HVF9OT0FfRU5B QkxFKSk7Cit9CisKK3N0YXRpYyB2b2lkIGdlbjdfdXBkYXRlX29hY29udHJvbF9sb2NrZWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWFzc2VydF9zcGluX2xvY2tlZCgm ZGV2X3ByaXYtPnBlcmYuaG9va19sb2NrKTsKKworCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5leGNs dXNpdmVfc3RyZWFtLT5lbmFibGVkKSB7CisJCXVuc2lnbmVkIGxvbmcgY3R4X2lkID0gMDsKKwor CQlpZiAoZGV2X3ByaXYtPnBlcmYub2EuZXhjbHVzaXZlX3N0cmVhbS0+Y3R4KQorCQkJY3R4X2lk ID0gZGV2X3ByaXYtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkOworCisJCWlmIChkZXZfcHJpdi0+ cGVyZi5vYS5leGNsdXNpdmVfc3RyZWFtLT5jdHggPT0gTlVMTCB8fCBjdHhfaWQpIHsKKwkJCWJv b2wgcGVyaW9kaWMgPSBkZXZfcHJpdi0+cGVyZi5vYS5wZXJpb2RpYzsKKwkJCXUzMiBwZXJpb2Rf ZXhwb25lbnQgPSBkZXZfcHJpdi0+cGVyZi5vYS5wZXJpb2RfZXhwb25lbnQ7CisJCQl1MzIgcmVw b3J0X2Zvcm1hdCA9IGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3JtYXQ7CisKKwkJCUk5 MTVfV1JJVEUoR0VON19PQUNPTlRST0wsCisJCQkJICAgKGN0eF9pZCAmIEdFTjdfT0FDT05UUk9M X0NUWF9NQVNLKSB8CisJCQkJICAgKHBlcmlvZF9leHBvbmVudCA8PAorCQkJCSAgICBHRU43X09B Q09OVFJPTF9USU1FUl9QRVJJT0RfU0hJRlQpIHwKKwkJCQkgICAocGVyaW9kaWMgPworCQkJCSAg ICBHRU43X09BQ09OVFJPTF9USU1FUl9FTkFCTEUgOiAwKSB8CisJCQkJICAgKHJlcG9ydF9mb3Jt YXQgPDwKKwkJCQkgICAgR0VON19PQUNPTlRST0xfRk9STUFUX1NISUZUKSB8CisJCQkJICAgKGN0 eF9pZCA/CisJCQkJICAgIEdFTjdfT0FDT05UUk9MX1BFUl9DVFhfRU5BQkxFIDogMCkgfAorCQkJ CSAgIEdFTjdfT0FDT05UUk9MX0VOQUJMRSk7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwlJOTE1 X1dSSVRFKEdFTjdfT0FDT05UUk9MLCAwKTsKK30KKworc3RhdGljIHZvaWQgZ2VuN19vYV9lbmFi bGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7CisKKwkvKiBSZXNldCBidWYgcG9pbnRlcnMgc28gd2UgZG9uJ3QgZm9yd2FyZCByZXBv cnRzIGZyb20gYmVmb3JlIG5vdy4gKi8KKwlnZW43X2luaXRfb2FfYnVmZmVyKGRldl9wcml2KTsK KworCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+cGVyZi5ob29rX2xvY2ssIGZsYWdzKTsK KwlnZW43X3VwZGF0ZV9vYWNvbnRyb2xfbG9ja2VkKGRldl9wcml2KTsKKwlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZkZXZfcHJpdi0+cGVyZi5ob29rX2xvY2ssIGZsYWdzKTsKK30KKworc3RhdGlj IHZvaWQgaTkxNV9vYV9zdHJlYW1fZW5hYmxlKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJl YW0pCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZf cHJpdjsKKworCWRldl9wcml2LT5wZXJmLm9hLm9wcy5vYV9lbmFibGUoZGV2X3ByaXYpOworCisJ aWYgKGRldl9wcml2LT5wZXJmLm9hLnBlcmlvZGljKQorCQlocnRpbWVyX3N0YXJ0KCZkZXZfcHJp di0+cGVyZi5vYS5wb2xsX2NoZWNrX3RpbWVyLAorCQkJICAgICAgbnNfdG9fa3RpbWUoUE9MTF9Q RVJJT0QpLAorCQkJICAgICAgSFJUSU1FUl9NT0RFX1JFTF9QSU5ORUQpOworfQorCitzdGF0aWMg dm9pZCBnZW43X29hX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQor eworCUk5MTVfV1JJVEUoR0VON19PQUNPTlRST0wsIDApOworfQorCitzdGF0aWMgdm9pZCBpOTE1 X29hX3N0cmVhbV9kaXNhYmxlKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCit7CisJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKKwor CWRldl9wcml2LT5wZXJmLm9hLm9wcy5vYV9kaXNhYmxlKGRldl9wcml2KTsKKworCWlmIChkZXZf cHJpdi0+cGVyZi5vYS5wZXJpb2RpYykKKwkJaHJ0aW1lcl9jYW5jZWwoJmRldl9wcml2LT5wZXJm Lm9hLnBvbGxfY2hlY2tfdGltZXIpOworfQorCitzdGF0aWMgdTY0IG9hX2V4cG9uZW50X3RvX25z KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGV4cG9uZW50KQoreworCXJl dHVybiAxMDAwMDAwMDAwVUxMICogKDJVTEwgPDwgZXhwb25lbnQpIC8KKwkJZGV2X3ByaXYtPnBl cmYub2EudGltZXN0YW1wX2ZyZXF1ZW5jeTsKK30KKworc3RhdGljIGludCBpOTE1X29hX3N0cmVh bV9pbml0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCisJCQkgICAgICAgc3RydWN0 IGRybV9pOTE1X3BlcmZfb3Blbl9wYXJhbSAqcGFyYW0sCisJCQkgICAgICAgc3RydWN0IHBlcmZf b3Blbl9wcm9wZXJ0aWVzICpwcm9wcykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2OworCWludCBmb3JtYXRfc2l6ZTsKKwlpbnQgcmV0Owor CisJaWYgKCEocHJvcHMtPnNhbXBsZV9mbGFncyAmIFNBTVBMRV9PQV9SRVBPUlQpKSB7CisJCURS TV9FUlJPUigiT25seSBPQSByZXBvcnQgc2FtcGxpbmcgc3VwcG9ydGVkXG4iKTsKKwkJcmV0dXJu IC1FSU5WQUw7CisJfQorCisJaWYgKCFkZXZfcHJpdi0+cGVyZi5vYS5vcHMuaW5pdF9vYV9idWZm ZXIpIHsKKwkJRFJNX0VSUk9SKCJPQSB1bml0IG5vdCBzdXBwb3J0ZWRcbiIpOworCQlyZXR1cm4g LUVOT0RFVjsKKwl9CisKKwkvKiBUbyBhdm9pZCB0aGUgY29tcGxleGl0eSBvZiBoYXZpbmcgdG8g YWNjdXJhdGVseSBmaWx0ZXIKKwkgKiBjb3VudGVyIHJlcG9ydHMgYW5kIG1hcnNoYWwgdG8gdGhl IGFwcHJvcHJpYXRlIGNsaWVudAorCSAqIHdlIGN1cnJlbnRseSBvbmx5IGFsbG93IGV4Y2x1c2l2 ZSBhY2Nlc3MKKwkgKi8KKwlpZiAoZGV2X3ByaXYtPnBlcmYub2EuZXhjbHVzaXZlX3N0cmVhbSkg eworCQlEUk1fRVJST1IoIk9BIHVuaXQgYWxyZWFkeSBpbiB1c2VcbiIpOworCQlyZXR1cm4gLUVC VVNZOworCX0KKworCWlmICghcHJvcHMtPm1ldHJpY3Nfc2V0KSB7CisJCURSTV9FUlJPUigiT0Eg bWV0cmljIHNldCBub3Qgc3BlY2lmaWVkXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJ aWYgKCFwcm9wcy0+b2FfZm9ybWF0KSB7CisJCURSTV9FUlJPUigiT0EgcmVwb3J0IGZvcm1hdCBu b3Qgc3BlY2lmaWVkXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJc3RyZWFtLT5zYW1w bGVfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZHJtX2k5MTVfcGVyZl9yZWNvcmRfaGVhZGVyKTsKKwor CWZvcm1hdF9zaXplID0gZGV2X3ByaXYtPnBlcmYub2Eub2FfZm9ybWF0c1twcm9wcy0+b2FfZm9y bWF0XS5zaXplOworCisJc3RyZWFtLT5zYW1wbGVfZmxhZ3MgfD0gU0FNUExFX09BX1JFUE9SVDsK KwlzdHJlYW0tPnNhbXBsZV9zaXplICs9IGZvcm1hdF9zaXplOworCisJZGV2X3ByaXYtPnBlcmYu b2Eub2FfYnVmZmVyLmZvcm1hdF9zaXplID0gZm9ybWF0X3NpemU7CisJQlVHX09OKGRldl9wcml2 LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3JtYXRfc2l6ZSA9PSAwKTsKKworCWRldl9wcml2LT5wZXJm Lm9hLm9hX2J1ZmZlci5mb3JtYXQgPQorCQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9mb3JtYXRzW3By b3BzLT5vYV9mb3JtYXRdLmZvcm1hdDsKKworCWRldl9wcml2LT5wZXJmLm9hLm1ldHJpY3Nfc2V0 ID0gcHJvcHMtPm1ldHJpY3Nfc2V0OworCisJZGV2X3ByaXYtPnBlcmYub2EucGVyaW9kaWMgPSBw cm9wcy0+b2FfcGVyaW9kaWM7CisJaWYgKGRldl9wcml2LT5wZXJmLm9hLnBlcmlvZGljKSB7CisJ CXU2NCBwZXJpb2RfbnMgPSBvYV9leHBvbmVudF90b19ucyhkZXZfcHJpdiwKKwkJCQkJCSAgcHJv cHMtPm9hX3BlcmlvZF9leHBvbmVudCk7CisKKwkJZGV2X3ByaXYtPnBlcmYub2EucGVyaW9kX2V4 cG9uZW50ID0gcHJvcHMtPm9hX3BlcmlvZF9leHBvbmVudDsKKworCQkvKiBTZWUgY29tbWVudCBm b3IgT0FfVEFJTF9NQVJHSU5fTlNFQyBmb3IgZGV0YWlscworCQkgKiBhYm91dCB0aGlzIHRhaWxf bWFyZ2luLi4uCisJCSAqLworCQlkZXZfcHJpdi0+cGVyZi5vYS50YWlsX21hcmdpbiA9CisJCQko KE9BX1RBSUxfTUFSR0lOX05TRUMgLyBwZXJpb2RfbnMpICsgMSkgKiBmb3JtYXRfc2l6ZTsKKwl9 CisKKwlyZXQgPSBhbGxvY19vYV9idWZmZXIoZGV2X3ByaXYpOworCWlmIChyZXQpCisJCXJldHVy biByZXQ7CisKKwkvKiBQUk0gLSBvYnNlcnZhYmlsaXR5IHBlcmZvcm1hbmNlIGNvdW50ZXJzOgor CSAqCisJICogICBPQUNPTlRST0wsIHBlcmZvcm1hbmNlIGNvdW50ZXIgZW5hYmxlLCBub3RlOgor CSAqCisJICogICAiV2hlbiB0aGlzIGJpdCBpcyBzZXQsIGluIG9yZGVyIHRvIGhhdmUgY29oZXJl bnQgY291bnRzLAorCSAqICAgUkM2IHBvd2VyIHN0YXRlIGFuZCB0cnVuayBjbG9jayBnYXRpbmcg bXVzdCBiZSBkaXNhYmxlZC4KKwkgKiAgIFRoaXMgY2FuIGJlIGFjaGlldmVkIGJ5IHByb2dyYW1t aW5nIE1NSU8gcmVnaXN0ZXJzIGFzCisJICogICAweEEwOTQ9MCBhbmQgMHhBMDkwWzMxXT0xIgor CSAqCisJICogICBJbiBvdXIgY2FzZSB3ZSBhcmUgZXhwZWN0aW5nIHRoYXQgdGFraW5nIHBtICsg Rk9SQ0VXQUtFCisJICogICByZWZlcmVuY2VzIHdpbGwgZWZmZWN0aXZlbHkgZGlzYWJsZSBSQzYu CisJICovCisJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOworCWludGVsX3VuY29yZV9m b3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKKworCXJldCA9IGRldl9wcml2 LT5wZXJmLm9hLm9wcy5lbmFibGVfbWV0cmljX3NldChkZXZfcHJpdik7CisJaWYgKHJldCkgewor CQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7CisJ CWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKKwkJZnJlZV9vYV9idWZmZXIoZGV2X3By aXYpOworCQlyZXR1cm4gcmV0OworCX0KKworCXN0cmVhbS0+ZGVzdHJveSA9IGk5MTVfb2Ffc3Ry ZWFtX2Rlc3Ryb3k7CisJc3RyZWFtLT5lbmFibGUgPSBpOTE1X29hX3N0cmVhbV9lbmFibGU7CisJ c3RyZWFtLT5kaXNhYmxlID0gaTkxNV9vYV9zdHJlYW1fZGlzYWJsZTsKKwlzdHJlYW0tPmNhbl9y ZWFkID0gaTkxNV9vYV9jYW5fcmVhZDsKKwlzdHJlYW0tPndhaXRfdW5sb2NrZWQgPSBpOTE1X29h X3dhaXRfdW5sb2NrZWQ7CisJc3RyZWFtLT5wb2xsX3dhaXQgPSBpOTE1X29hX3BvbGxfd2FpdDsK KwlzdHJlYW0tPnJlYWQgPSBpOTE1X29hX3JlYWQ7CisKKwkvKiBPbiBIYXN3ZWxsIHdlIGhhdmUg dG8gdHJhY2sgd2hpY2ggT0FTVEFUVVMxIGZsYWdzIHdlJ3ZlIGFscmVhZHkKKwkgKiBzZWVuIHNp bmNlIHRoZXkgY2FuJ3QgYmUgY2xlYXJlZCB3aGlsZSBwZXJpb2RpYyBzYW1wbGluZyBpcyBlbmFi bGVkLgorCSAqLworCWRldl9wcml2LT5wZXJmLm9hLmdlbjdfbGF0Y2hlZF9vYXN0YXR1czEgPSAw OworCisJZGV2X3ByaXYtPnBlcmYub2EuZXhjbHVzaXZlX3N0cmVhbSA9IHN0cmVhbTsKKworCXJl dHVybiAwOworfQorCitzdGF0aWMgdm9pZCBnZW43X3VwZGF0ZV9od19jdHhfaWRfbG9ja2VkKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkJIHUzMiBjdHhfaWQpCit7CisJ YXNzZXJ0X3NwaW5fbG9ja2VkKCZkZXZfcHJpdi0+cGVyZi5ob29rX2xvY2spOworCisJZGV2X3By aXYtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lkID0gY3R4X2lkOworCWdlbjdfdXBkYXRlX29hY29u dHJvbF9sb2NrZWQoZGV2X3ByaXYpOworfQorCitzdGF0aWMgdm9pZCBpOTE1X29hX2NvbnRleHRf cGluX25vdGlmeV9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJ CQkgICAgICBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY29udGV4dCkKK3sKKwlhc3NlcnRfc3Bpbl9s b2NrZWQoJmRldl9wcml2LT5wZXJmLmhvb2tfbG9jayk7CisKKwlpZiAoaTkxNS5lbmFibGVfZXhl Y2xpc3RzIHx8CisJICAgIGRldl9wcml2LT5wZXJmLm9hLm9wcy51cGRhdGVfaHdfY3R4X2lkX2xv Y2tlZCA9PSBOVUxMKQorCQlyZXR1cm47CisKKwlpZiAoZGV2X3ByaXYtPnBlcmYub2EuZXhjbHVz aXZlX3N0cmVhbSAmJgorCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5leGNsdXNpdmVfc3RyZWFtLT5j dHggPT0gY29udGV4dCkgeworCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0KKwkJ CWNvbnRleHQtPmxlZ2FjeV9od19jdHgucmNzX3N0YXRlOworCQl1MzIgY3R4X2lkID0gaTkxNV9n ZW1fb2JqX2dndHRfb2Zmc2V0KG9iaik7CisKKwkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLnVwZGF0 ZV9od19jdHhfaWRfbG9ja2VkKGRldl9wcml2LCBjdHhfaWQpOworCX0KK30KKwordm9pZCBpOTE1 X29hX2NvbnRleHRfcGluX25vdGlmeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CisJCQkJc3RydWN0IGludGVsX2NvbnRleHQgKmNvbnRleHQpCit7CisJdW5zaWduZWQgbG9uZyBm bGFnczsKKworCWlmICghZGV2X3ByaXYtPnBlcmYuaW5pdGlhbGl6ZWQpCisJCXJldHVybjsKKwor CXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+cGVyZi5ob29rX2xvY2ssIGZsYWdzKTsKKwlp OTE1X29hX2NvbnRleHRfcGluX25vdGlmeV9sb2NrZWQoZGV2X3ByaXYsIGNvbnRleHQpOworCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT5wZXJmLmhvb2tfbG9jaywgZmxhZ3MpOwor fQorCiBzdGF0aWMgc3NpemVfdCBpOTE1X3BlcmZfcmVhZF9sb2NrZWQoc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gKnN0cmVhbSwKIAkJCQkgICAgIHN0cnVjdCBmaWxlICpmaWxlLAogCQkJCSAgICAg Y2hhciBfX3VzZXIgKmJ1ZiwKQEAgLTQyLDcgKzg1OCwxMCBAQCBzdGF0aWMgc3NpemVfdCBpOTE1 X3BlcmZfcmVhZF9sb2NrZWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAlzdHJ1 Y3QgaTkxNV9wZXJmX3JlYWRfc3RhdGUgc3RhdGUgPSB7IGNvdW50LCAwLCBidWYgfTsKIAlpbnQg cmV0ID0gc3RyZWFtLT5yZWFkKHN0cmVhbSwgJnN0YXRlKTsKIAotCWlmICgocmV0ID09IC1FTk9T UEMgfHwgcmV0ID09IC1FRkFVTFQpICYmIHN0YXRlLnJlYWQpCisJLyogU3F1YXNoIGFueSBpbnRl cm5hbCBlcnJvciBzdGF0dXMgaW4gYW55IGNhc2Ugd2hlcmUgd2UndmUKKwkgKiBzdWNjZXNzZnVs bHkgY29waWVkIHNvbWUgZGF0YSBzbyB0aGUgZGF0YSBpc24ndCBsb3N0LgorCSAqLworCWlmIChz dGF0ZS5yZWFkKQogCQlyZXQgPSAwOwogCiAJaWYgKHJldCkKQEAgLTYwLDYgKzg3OSwxMyBAQCBz dGF0aWMgc3NpemVfdCBpOTE1X3BlcmZfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2OwogCXNzaXplX3Qg cmV0OwogCisJLyogVG8gZW5zdXJlIGl0J3MgaGFuZGxlZCBjb25zaXN0ZW50bHkgd2Ugc2ltcGx5 IHRyZWF0IGFsbCByZWFkcyBvZiBhCisJICogZGlzYWJsZWQgc3RyZWFtIGFzIGFuIGVycm9yLiBJ biBwYXJ0aWN1bGFyIGl0IG1pZ2h0IG90aGVyd2lzZSBsZWFkCisJICogdG8gYSBkZWFkbG9jayBm b3IgYmxvY2tpbmcgZmlsZSBkZXNjcmlwdG9ycy4uLgorCSAqLworCWlmICghc3RyZWFtLT5lbmFi bGVkKQorCQlyZXR1cm4gLUVJTzsKKwogCWlmICghKGZpbGUtPmZfZmxhZ3MgJiBPX05PTkJMT0NL KSkgewogCQkvKiBUaGVyZSdzIHRoZSBzbWFsbCBjaGFuY2Ugb2YgZmFsc2UgcG9zaXRpdmVzIGZy b20KIAkJICogc3RyZWFtLT53YWl0X3VubG9ja2VkLgpAQCAtODcsNiArOTEzLDIwIEBAIHN0YXRp YyBzc2l6ZV90IGk5MTVfcGVyZl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLAogCXJldHVybiByZXQ7 CiB9CiAKK3N0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBvYV9wb2xsX2NoZWNrX3RpbWVyX2Ni KHN0cnVjdCBocnRpbWVyICpocnRpbWVyKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9CisJCWNvbnRhaW5lcl9vZihocnRpbWVyLCB0eXBlb2YoKmRldl9wcml2KSwKKwkJ CSAgICAgcGVyZi5vYS5wb2xsX2NoZWNrX3RpbWVyKTsKKworCWlmICghZGV2X3ByaXYtPnBlcmYu b2Eub3BzLm9hX2J1ZmZlcl9pc19lbXB0eShkZXZfcHJpdikpCisJCXdha2VfdXAoJmRldl9wcml2 LT5wZXJmLm9hLnBvbGxfd3EpOworCisJaHJ0aW1lcl9mb3J3YXJkX25vdyhocnRpbWVyLCBuc190 b19rdGltZShQT0xMX1BFUklPRCkpOworCisJcmV0dXJuIEhSVElNRVJfUkVTVEFSVDsKK30KKwog c3RhdGljIHVuc2lnbmVkIGludCBpOTE1X3BlcmZfcG9sbF9sb2NrZWQoc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gKnN0cmVhbSwKIAkJCQkJICBzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJCQkJICBwb2xs X3RhYmxlICp3YWl0KQpAQCAtMjc3LDE4ICsxMTE3LDE4IEBAIGludCBpOTE1X3BlcmZfb3Blbl9p b2N0bF9sb2NrZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJZ290byBlcnJfY3R4OwogCX0K IAotCXN0cmVhbS0+c2FtcGxlX2ZsYWdzID0gcHJvcHMtPnNhbXBsZV9mbGFnczsKIAlzdHJlYW0t PmRldl9wcml2ID0gZGV2X3ByaXY7CiAJc3RyZWFtLT5jdHggPSBzcGVjaWZpY19jdHg7CiAKLQkv KgotCSAqIFRPRE86IHN1cHBvcnQgc2FtcGxpbmcgc29tZXRoaW5nCi0JICoKLQkgKiBGb3Igbm93 IHRoaXMgaXMgYXMgZmFyIGFzIHdlIGNhbiBnby4KKwlyZXQgPSBpOTE1X29hX3N0cmVhbV9pbml0 KHN0cmVhbSwgcGFyYW0sIHByb3BzKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9hbGxvYzsKKwor CS8qIHdlIGF2b2lkIHNpbXBseSBhc3NpZ25pbmcgc3RyZWFtLT5zYW1wbGVfZmxhZ3MgPSBwcm9w cy0+c2FtcGxlX2ZsYWdzCisJICogdG8gaGF2ZSBfc3RyZWFtX2luaXQgY2hlY2sgdGhlIGNvbWJp bmF0aW9uIG9mIHNhbXBsZSBmbGFncyBtb3JlCisJICogdGhvcm91Z2hseSwgYnV0IHN0aWxsIHRo aXMgaXMgdGhlIGV4cGVjdGVkIHJlc3VsdCBhdCB0aGlzIHBvaW50LgogCSAqLwotCURSTV9FUlJP UigiVW5zdXBwb3J0ZWQgaTkxNSBwZXJmIHN0cmVhbSBjb25maWd1cmF0aW9uXG4iKTsKLQlyZXQg PSAtRUlOVkFMOwotCWdvdG8gZXJyX2FsbG9jOworCUJVR19PTihzdHJlYW0tPnNhbXBsZV9mbGFn cyAhPSBwcm9wcy0+c2FtcGxlX2ZsYWdzKTsKIAogCWxpc3RfYWRkKCZzdHJlYW0tPmxpbmssICZk ZXZfcHJpdi0+cGVyZi5zdHJlYW1zKTsKIApAQCAtMzczLDcgKzEyMTMsNTYgQEAgc3RhdGljIGlu dCByZWFkX3Byb3BlcnRpZXNfdW5sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAogCQkJcHJvcHMtPnNpbmdsZV9jb250ZXh0ID0gMTsKIAkJCXByb3BzLT5jdHhfaGFuZGxl ID0gdmFsdWU7CiAJCQlicmVhazsKLQorCQljYXNlIERSTV9JOTE1X1BFUkZfUFJPUF9TQU1QTEVf T0E6CisJCQlwcm9wcy0+c2FtcGxlX2ZsYWdzIHw9IFNBTVBMRV9PQV9SRVBPUlQ7CisJCQlicmVh azsKKwkJY2FzZSBEUk1fSTkxNV9QRVJGX1BST1BfT0FfTUVUUklDU19TRVQ6CisJCQlpZiAodmFs dWUgPT0gMCB8fAorCQkJICAgIHZhbHVlID4gZGV2X3ByaXYtPnBlcmYub2Eubl9idWlsdGluX3Nl dHMpIHsKKwkJCQlEUk1fRVJST1IoIlVua25vd24gT0EgbWV0cmljIHNldCBJRCIpOworCQkJCXJl dHVybiAtRUlOVkFMOworCQkJfQorCQkJcHJvcHMtPm1ldHJpY3Nfc2V0ID0gdmFsdWU7CisJCQli cmVhazsKKwkJY2FzZSBEUk1fSTkxNV9QRVJGX1BST1BfT0FfRk9STUFUOgorCQkJaWYgKHZhbHVl ID09IDAgfHwgdmFsdWUgPj0gSTkxNV9PQV9GT1JNQVRfTUFYKSB7CisJCQkJRFJNX0VSUk9SKCJJ bnZhbGlkIE9BIHJlcG9ydCBmb3JtYXRcbiIpOworCQkJCXJldHVybiAtRUlOVkFMOworCQkJfQor CQkJaWYgKCFkZXZfcHJpdi0+cGVyZi5vYS5vYV9mb3JtYXRzW3ZhbHVlXS5zaXplKSB7CisJCQkJ RFJNX0VSUk9SKCJJbnZhbGlkIE9BIHJlcG9ydCBmb3JtYXRcbiIpOworCQkJCXJldHVybiAtRUlO VkFMOworCQkJfQorCQkJcHJvcHMtPm9hX2Zvcm1hdCA9IHZhbHVlOworCQkJYnJlYWs7CisJCWNh c2UgRFJNX0k5MTVfUEVSRl9QUk9QX09BX0VYUE9ORU5UOgorCQkJaWYgKHZhbHVlID4gT0FfRVhQ T05FTlRfTUFYKSB7CisJCQkJRFJNX0VSUk9SKCJPQSB0aW1lciBleHBvbmVudCB0b28gaGlnaCAo PiAldSlcbiIsCisJCQkJCSAgT0FfRVhQT05FTlRfTUFYKTsKKwkJCQlyZXR1cm4gLUVJTlZBTDsK KwkJCX0KKworCQkJLyogTkI6IFRoZSBleHBvbmVudCByZXByZXNlbnRzIGEgcGVyaW9kIGFzIGZv bGxvd3M6CisJCQkgKgorCQkJICogICA4MG5zICogMl4ocGVyaW9kX2V4cG9uZW50ICsgMSkKKwkJ CSAqCisJCQkgKiBUaGVvcmV0aWNhbGx5IHdlIGNhbiBwcm9ncmFtIHRoZSBPQSB1bml0IHRvIHNh bXBsZQorCQkJICogZXZlcnkgMTYwbnMgYnV0IGRvbid0IGFsbG93IHRoYXQgYnkgZGVmYXVsdCB1 bmxlc3MKKwkJCSAqIHJvb3QuCisJCQkgKgorCQkJICogUmVmZXJyaW5nIHRvIHBlcmYncworCQkJ ICoga2VybmVsLnBlcmZfZXZlbnRfbWF4X3NhbXBsZV9yYXRlIGZvciBhIHByZWNlZGVudAorCQkJ ICogKDEwMDAwMCBieSBkZWZhdWx0KTsgd2l0aCBhbiBPQSBleHBvbmVudCBvZiA2IHdlIGdldAor CQkJICogYSBwZXJpb2Qgb2YgMTAuMjQwIG1pY3Jvc2Vjb25kcyAtanVzdCB1bmRlciAxMDAwMDBI egorCQkJICovCisJCQlpZiAodmFsdWUgPCA2ICYmICFjYXBhYmxlKENBUF9TWVNfQURNSU4pKSB7 CisJCQkJRFJNX0VSUk9SKCJTYW1wbGluZyBwZXJpb2QgdG9vIGhpZ2ggd2l0aG91dCByb290IHBy aXZpbGVnZXNcbiIpOworCQkJCXJldHVybiAtRUFDQ0VTOworCQkJfQorCisJCQlwcm9wcy0+b2Ff cGVyaW9kaWMgPSB0cnVlOworCQkJcHJvcHMtPm9hX3BlcmlvZF9leHBvbmVudCA9IHZhbHVlOwor CQkJYnJlYWs7CiAJCWNhc2UgRFJNX0k5MTVfUEVSRl9QUk9QX01BWDoKIAkJCUJVRygpOwogCQl9 CkBAIC00MjQsOCArMTMxMywzNyBAQCB2b2lkIGk5MTVfcGVyZl9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkZXYpOwogCisJaWYgKCFJU19IQVNXRUxMKGRldikpCisJCXJldHVybjsKKworCWhydGltZXJf aW5pdCgmZGV2X3ByaXYtPnBlcmYub2EucG9sbF9jaGVja190aW1lciwKKwkJICAgICBDTE9DS19N T05PVE9OSUMsIEhSVElNRVJfTU9ERV9SRUwpOworCWRldl9wcml2LT5wZXJmLm9hLnBvbGxfY2hl Y2tfdGltZXIuZnVuY3Rpb24gPSBvYV9wb2xsX2NoZWNrX3RpbWVyX2NiOworCWluaXRfd2FpdHF1 ZXVlX2hlYWQoJmRldl9wcml2LT5wZXJmLm9hLnBvbGxfd3EpOworCiAJSU5JVF9MSVNUX0hFQUQo JmRldl9wcml2LT5wZXJmLnN0cmVhbXMpOwogCW11dGV4X2luaXQoJmRldl9wcml2LT5wZXJmLmxv Y2spOworCXNwaW5fbG9ja19pbml0KCZkZXZfcHJpdi0+cGVyZi5ob29rX2xvY2spOworCisJZGV2 X3ByaXYtPnBlcmYub2Eub3BzLmluaXRfb2FfYnVmZmVyID0gZ2VuN19pbml0X29hX2J1ZmZlcjsK KwlkZXZfcHJpdi0+cGVyZi5vYS5vcHMuZW5hYmxlX21ldHJpY19zZXQgPSBoc3dfZW5hYmxlX21l dHJpY19zZXQ7CisJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmRpc2FibGVfbWV0cmljX3NldCA9IGhz d19kaXNhYmxlX21ldHJpY19zZXQ7CisJZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9hX2VuYWJsZSA9 IGdlbjdfb2FfZW5hYmxlOworCWRldl9wcml2LT5wZXJmLm9hLm9wcy5vYV9kaXNhYmxlID0gZ2Vu N19vYV9kaXNhYmxlOworCWRldl9wcml2LT5wZXJmLm9hLm9wcy51cGRhdGVfaHdfY3R4X2lkX2xv Y2tlZCA9CisJCWdlbjdfdXBkYXRlX2h3X2N0eF9pZF9sb2NrZWQ7CisJZGV2X3ByaXYtPnBlcmYu b2Eub3BzLnJlYWQgPSBnZW43X29hX3JlYWQ7CisJZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9hX2J1 ZmZlcl9pc19lbXB0eSA9CisJCWdlbjdfb2FfYnVmZmVyX2lzX2VtcHR5X2ZvcF91bmxvY2tlZDsK KworCWRldl9wcml2LT5wZXJmLm9hLnRpbWVzdGFtcF9mcmVxdWVuY3kgPSAxMjUwMDAwMDsKKwor CWRldl9wcml2LT5wZXJmLm9hLm9hX2Zvcm1hdHMgPSBoc3dfb2FfZm9ybWF0czsKKworCWRldl9w cml2LT5wZXJmLm9hLm5fYnVpbHRpbl9zZXRzID0KKwkJaTkxNV9vYV9uX2J1aWx0aW5fbWV0cmlj X3NldHNfaHN3OworCisJZGV2X3ByaXYtPnBlcmYub2Eub2FfZm9ybWF0cyA9IGhzd19vYV9mb3Jt YXRzOwogCiAJZGV2X3ByaXYtPnBlcmYuaW5pdGlhbGl6ZWQgPSB0cnVlOwogfQpAQCAtNDM3LDcg KzEzNTUsNyBAQCB2b2lkIGk5MTVfcGVyZl9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJ aWYgKCFkZXZfcHJpdi0+cGVyZi5pbml0aWFsaXplZCkKIAkJcmV0dXJuOwogCi0JLyogQ3VycmVu dGx5IG5vdGhpbmcgdG8gY2xlYW4gdXAgKi8KKwlkZXZfcHJpdi0+cGVyZi5vYS5vcHMuaW5pdF9v YV9idWZmZXIgPSBOVUxMOwogCiAJZGV2X3ByaXYtPnBlcmYuaW5pdGlhbGl6ZWQgPSBmYWxzZTsK IH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCmluZGV4IGRlMWU5YTAuLjIyYmYyM2MgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaApAQCAtNTk0LDYgKzU5NCwzNDMgQEAgc3RhdGljIGlubGluZSBib29s IGk5MTVfbW1pb19yZWdfdmFsaWQoaTkxNV9yZWdfdCByZWcpCiAjZGVmaW5lIEhTV19DU19HUFJf VURXKG4pICAgICAgICAgICAgICAgX01NSU8oMHgyNjAwICsgKG4pICogOCArIDQpCiAKICNkZWZp bmUgR0VON19PQUNPTlRST0wgX01NSU8oMHgyMzYwKQorI2RlZmluZSAgR0VON19PQUNPTlRST0xf Q1RYX01BU0sJICAgIDB4RkZGRkYwMDAKKyNkZWZpbmUgIEdFTjdfT0FDT05UUk9MX1RJTUVSX1BF UklPRF9NQVNLICAgMHgzRgorI2RlZmluZSAgR0VON19PQUNPTlRST0xfVElNRVJfUEVSSU9EX1NI SUZUICA2CisjZGVmaW5lICBHRU43X09BQ09OVFJPTF9USU1FUl9FTkFCTEUJICAgICgxPDw1KQor I2RlZmluZSAgR0VON19PQUNPTlRST0xfRk9STUFUX0ExMwkgICAgKDA8PDIpCisjZGVmaW5lICBH RU43X09BQ09OVFJPTF9GT1JNQVRfQTI5CSAgICAoMTw8MikKKyNkZWZpbmUgIEdFTjdfT0FDT05U Uk9MX0ZPUk1BVF9BMTNfQjhfQzggICAgKDI8PDIpCisjZGVmaW5lICBHRU43X09BQ09OVFJPTF9G T1JNQVRfQTI5X0I4X0M4ICAgICgzPDwyKQorI2RlZmluZSAgR0VON19PQUNPTlRST0xfRk9STUFU X0I0X0M4CSAgICAoNDw8MikKKyNkZWZpbmUgIEdFTjdfT0FDT05UUk9MX0ZPUk1BVF9BNDVfQjhf QzggICAgKDU8PDIpCisjZGVmaW5lICBHRU43X09BQ09OVFJPTF9GT1JNQVRfQjRfQzhfQTE2ICAg ICg2PDwyKQorI2RlZmluZSAgR0VON19PQUNPTlRST0xfRk9STUFUX0M0X0I4CSAgICAoNzw8MikK KyNkZWZpbmUgIEdFTjdfT0FDT05UUk9MX0ZPUk1BVF9TSElGVAkgICAgMgorI2RlZmluZSAgR0VO N19PQUNPTlRST0xfUEVSX0NUWF9FTkFCTEUJICAgICgxPDwxKQorI2RlZmluZSAgR0VON19PQUNP TlRST0xfRU5BQkxFCQkgICAgKDE8PDApCisKKyNkZWZpbmUgR0VOOF9PQUNUWElEIF9NTUlPKDB4 MjM2NCkKKworI2RlZmluZSBHRU44X09BQ09OVFJPTCBfTU1JTygweDJCMDApCisjZGVmaW5lICBH RU44X09BX1JFUE9SVF9GT1JNQVRfQTEyCSAgICAoMDw8MikKKyNkZWZpbmUgIEdFTjhfT0FfUkVQ T1JUX0ZPUk1BVF9BMTJfQjhfQzggICAgKDI8PDIpCisjZGVmaW5lICBHRU44X09BX1JFUE9SVF9G T1JNQVRfQTM2X0I4X0M4ICAgICg1PDwyKQorI2RlZmluZSAgR0VOOF9PQV9SRVBPUlRfRk9STUFU X0M0X0I4CSAgICAoNzw8MikKKyNkZWZpbmUgIEdFTjhfT0FfUkVQT1JUX0ZPUk1BVF9TSElGVAkg ICAgMgorI2RlZmluZSAgR0VOOF9PQV9TUEVDSUZJQ19DT05URVhUX0VOQUJMRSAgICAoMTw8MSkK KyNkZWZpbmUgIEdFTjhfT0FfQ09VTlRFUl9FTkFCTEUgICAgICAgICAgICAgKDE8PDApCisKKyNk ZWZpbmUgR0VOOF9PQUNUWENPTlRST0wgX01NSU8oMHgyMzYwKQorI2RlZmluZSAgR0VOOF9PQV9U SU1FUl9QRVJJT0RfTUFTSwkgICAgMHgzRgorI2RlZmluZSAgR0VOOF9PQV9USU1FUl9QRVJJT0Rf U0hJRlQJICAgIDIKKyNkZWZpbmUgIEdFTjhfT0FfVElNRVJfRU5BQkxFCQkgICAgKDE8PDEpCisj ZGVmaW5lICBHRU44X09BX0NPVU5URVJfUkVTVU1FCQkgICAgKDE8PDApCisKKyNkZWZpbmUgR0VO N19PQUJVRkZFUiBfTU1JTygweDIzQjApIC8qIFIvVyAqLworI2RlZmluZSAgR0VON19PQUJVRkZF Ul9PVkVSUlVOX0RJU0FCTEUJICAgICgxPDwzKQorI2RlZmluZSAgR0VON19PQUJVRkZFUl9FREdF X1RSSUdHRVIJICAgICgxPDwyKQorI2RlZmluZSAgR0VON19PQUJVRkZFUl9TVE9QX1JFU1VNRV9F TkFCTEUgICAoMTw8MSkKKyNkZWZpbmUgIEdFTjdfT0FCVUZGRVJfUkVTVU1FCQkgICAgKDE8PDAp CisKKyNkZWZpbmUgR0VOOF9PQUJVRkZFUiBfTU1JTygweDJiMTQpCisKKyNkZWZpbmUgR0VON19P QVNUQVRVUzEgX01NSU8oMHgyMzY0KQorI2RlZmluZSAgR0VON19PQVNUQVRVUzFfVEFJTF9NQVNL CSAgICAweGZmZmZmZmMwCisjZGVmaW5lICBHRU43X09BU1RBVFVTMV9DT1VOVEVSX09WRVJGTE9X ICAgICgxPDwyKQorI2RlZmluZSAgR0VON19PQVNUQVRVUzFfT0FCVUZGRVJfT1ZFUkZMT1cgICAo MTw8MSkKKyNkZWZpbmUgIEdFTjdfT0FTVEFUVVMxX1JFUE9SVF9MT1NUCSAgICAoMTw8MCkKKwor I2RlZmluZSBHRU43X09BU1RBVFVTMiBfTU1JTygweDIzNjgpCisjZGVmaW5lIEdFTjdfT0FTVEFU VVMyX0hFQURfTUFTSyAgICAweGZmZmZmZmMwCisKKyNkZWZpbmUgR0VOOF9PQVNUQVRVUyBfTU1J TygweDJiMDgpCisjZGVmaW5lICBHRU44X09BU1RBVFVTX09WRVJSVU5fU1RBVFVTCSAgICAoMTw8 MykKKyNkZWZpbmUgIEdFTjhfT0FTVEFUVVNfQ09VTlRFUl9PVkVSRkxPVyAgICAgKDE8PDIpCisj ZGVmaW5lICBHRU44X09BU1RBVFVTX09BQlVGRkVSX09WRVJGTE9XICAgICgxPDwxKQorI2RlZmlu ZSAgR0VOOF9PQVNUQVRVU19SRVBPUlRfTE9TVAkgICAgKDE8PDApCisKKyNkZWZpbmUgR0VOOF9P QUhFQURQVFIgX01NSU8oMHgyQjBDKQorI2RlZmluZSBHRU44X09BVEFJTFBUUiBfTU1JTygweDJC MTApCisKKyNkZWZpbmUgT0FCVUZGRVJfU0laRV8xMjhLICAoMDw8MykKKyNkZWZpbmUgT0FCVUZG RVJfU0laRV8yNTZLICAoMTw8MykKKyNkZWZpbmUgT0FCVUZGRVJfU0laRV81MTJLICAoMjw8MykK KyNkZWZpbmUgT0FCVUZGRVJfU0laRV8xTSAgICAoMzw8MykKKyNkZWZpbmUgT0FCVUZGRVJfU0la RV8yTSAgICAoNDw8MykKKyNkZWZpbmUgT0FCVUZGRVJfU0laRV80TSAgICAoNTw8MykKKyNkZWZp bmUgT0FCVUZGRVJfU0laRV84TSAgICAoNjw8MykKKyNkZWZpbmUgT0FCVUZGRVJfU0laRV8xNk0g ICAoNzw8MykKKworI2RlZmluZSBPQV9NRU1fU0VMRUNUX0dHVFQgICgxPDwwKQorCisjZGVmaW5l IEVVX1BFUkZfQ05UTDAJICAgIF9NTUlPKDB4ZTQ1OCkKKworI2RlZmluZSBHRFRfQ0hJQ0tFTl9C SVRTICAgIF9NTUlPKDB4OTg0MCkKKyNkZWZpbmUgR1RfTk9BX0VOQUJMRQkgICAgMHgwMDAwMDA4 MAorCisvKgorICogT0EgQm9vbGVhbiBzdGF0ZQorICovCisKKyNkZWZpbmUgT0FSRVBPUlRUUklH MSBfTU1JTygweDI3NDApCisjZGVmaW5lIE9BUkVQT1JUVFJJRzFfVEhSRVNIT0xEX01BU0sgMHhm ZmZmCisjZGVmaW5lIE9BUkVQT1JUVFJJRzFfRURHRV9MRVZFTF9UUklHRVJfU0VMRUNUX01BU0sg MHhmZmZmMDAwMCAvKiAwPWxldmVsICovCisKKyNkZWZpbmUgT0FSRVBPUlRUUklHMiBfTU1JTygw eDI3NDQpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzJfSU5WRVJUX0FfMCAgKDE8PDApCisjZGVmaW5l IE9BUkVQT1JUVFJJRzJfSU5WRVJUX0FfMSAgKDE8PDEpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzJf SU5WRVJUX0FfMiAgKDE8PDIpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzJfSU5WRVJUX0FfMyAgKDE8 PDMpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzJfSU5WRVJUX0FfNCAgKDE8PDQpCisjZGVmaW5lIE9B UkVQT1JUVFJJRzJfSU5WRVJUX0FfNSAgKDE8PDUpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzJfSU5W RVJUX0FfNiAgKDE8PDYpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzJfSU5WRVJUX0FfNyAgKDE8PDcp CisjZGVmaW5lIE9BUkVQT1JUVFJJRzJfSU5WRVJUX0FfOCAgKDE8PDgpCisjZGVmaW5lIE9BUkVQ T1JUVFJJRzJfSU5WRVJUX0FfOSAgKDE8PDkpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzJfSU5WRVJU X0FfMTAgKDE8PDEwKQorI2RlZmluZSBPQVJFUE9SVFRSSUcyX0lOVkVSVF9BXzExICgxPDwxMSkK KyNkZWZpbmUgT0FSRVBPUlRUUklHMl9JTlZFUlRfQV8xMiAoMTw8MTIpCisjZGVmaW5lIE9BUkVQ T1JUVFJJRzJfSU5WRVJUX0FfMTMgKDE8PDEzKQorI2RlZmluZSBPQVJFUE9SVFRSSUcyX0lOVkVS VF9BXzE0ICgxPDwxNCkKKyNkZWZpbmUgT0FSRVBPUlRUUklHMl9JTlZFUlRfQV8xNSAoMTw8MTUp CisjZGVmaW5lIE9BUkVQT1JUVFJJRzJfSU5WRVJUX0JfMCAgKDE8PDE2KQorI2RlZmluZSBPQVJF UE9SVFRSSUcyX0lOVkVSVF9CXzEgICgxPDwxNykKKyNkZWZpbmUgT0FSRVBPUlRUUklHMl9JTlZF UlRfQl8yICAoMTw8MTgpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzJfSU5WRVJUX0JfMyAgKDE8PDE5 KQorI2RlZmluZSBPQVJFUE9SVFRSSUcyX0lOVkVSVF9DXzAgICgxPDwyMCkKKyNkZWZpbmUgT0FS RVBPUlRUUklHMl9JTlZFUlRfQ18xICAoMTw8MjEpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzJfSU5W RVJUX0RfMCAgKDE8PDIyKQorI2RlZmluZSBPQVJFUE9SVFRSSUcyX1RIUkVTSE9MRF9FTkFCTEUJ ICAgICgxPDwyMykKKyNkZWZpbmUgT0FSRVBPUlRUUklHMl9SRVBPUlRfVFJJR0dFUl9FTkFCTEUg KDE8PDMxKQorCisjZGVmaW5lIE9BUkVQT1JUVFJJRzMgX01NSU8oMHgyNzQ4KQorI2RlZmluZSBP QVJFUE9SVFRSSUczX05PQV9TRUxFQ1RfTUFTSwkgICAgMHhmCisjZGVmaW5lIE9BUkVQT1JUVFJJ RzNfTk9BX1NFTEVDVF84X1NISUZUICAgIDAKKyNkZWZpbmUgT0FSRVBPUlRUUklHM19OT0FfU0VM RUNUXzlfU0hJRlQgICAgNAorI2RlZmluZSBPQVJFUE9SVFRSSUczX05PQV9TRUxFQ1RfMTBfU0hJ RlQgICA4CisjZGVmaW5lIE9BUkVQT1JUVFJJRzNfTk9BX1NFTEVDVF8xMV9TSElGVCAgIDEyCisj ZGVmaW5lIE9BUkVQT1JUVFJJRzNfTk9BX1NFTEVDVF8xMl9TSElGVCAgIDE2CisjZGVmaW5lIE9B UkVQT1JUVFJJRzNfTk9BX1NFTEVDVF8xM19TSElGVCAgIDIwCisjZGVmaW5lIE9BUkVQT1JUVFJJ RzNfTk9BX1NFTEVDVF8xNF9TSElGVCAgIDI0CisjZGVmaW5lIE9BUkVQT1JUVFJJRzNfTk9BX1NF TEVDVF8xNV9TSElGVCAgIDI4CisKKyNkZWZpbmUgT0FSRVBPUlRUUklHNCBfTU1JTygweDI3NGMp CisjZGVmaW5lIE9BUkVQT1JUVFJJRzRfTk9BX1NFTEVDVF9NQVNLCSAgICAweGYKKyNkZWZpbmUg T0FSRVBPUlRUUklHNF9OT0FfU0VMRUNUXzBfU0hJRlQgICAgMAorI2RlZmluZSBPQVJFUE9SVFRS SUc0X05PQV9TRUxFQ1RfMV9TSElGVCAgICA0CisjZGVmaW5lIE9BUkVQT1JUVFJJRzRfTk9BX1NF TEVDVF8yX1NISUZUICAgIDgKKyNkZWZpbmUgT0FSRVBPUlRUUklHNF9OT0FfU0VMRUNUXzNfU0hJ RlQgICAgMTIKKyNkZWZpbmUgT0FSRVBPUlRUUklHNF9OT0FfU0VMRUNUXzRfU0hJRlQgICAgMTYK KyNkZWZpbmUgT0FSRVBPUlRUUklHNF9OT0FfU0VMRUNUXzVfU0hJRlQgICAgMjAKKyNkZWZpbmUg T0FSRVBPUlRUUklHNF9OT0FfU0VMRUNUXzZfU0hJRlQgICAgMjQKKyNkZWZpbmUgT0FSRVBPUlRU UklHNF9OT0FfU0VMRUNUXzdfU0hJRlQgICAgMjgKKworI2RlZmluZSBPQVJFUE9SVFRSSUc1IF9N TUlPKDB4Mjc1MCkKKyNkZWZpbmUgT0FSRVBPUlRUUklHNV9USFJFU0hPTERfTUFTSyAweGZmZmYK KyNkZWZpbmUgT0FSRVBPUlRUUklHNV9FREdFX0xFVkVMX1RSSUdFUl9TRUxFQ1RfTUFTSyAweGZm ZmYwMDAwIC8qIDA9bGV2ZWwgKi8KKworI2RlZmluZSBPQVJFUE9SVFRSSUc2IF9NTUlPKDB4Mjc1 NCkKKyNkZWZpbmUgT0FSRVBPUlRUUklHNl9JTlZFUlRfQV8wICAoMTw8MCkKKyNkZWZpbmUgT0FS RVBPUlRUUklHNl9JTlZFUlRfQV8xICAoMTw8MSkKKyNkZWZpbmUgT0FSRVBPUlRUUklHNl9JTlZF UlRfQV8yICAoMTw8MikKKyNkZWZpbmUgT0FSRVBPUlRUUklHNl9JTlZFUlRfQV8zICAoMTw8MykK KyNkZWZpbmUgT0FSRVBPUlRUUklHNl9JTlZFUlRfQV80ICAoMTw8NCkKKyNkZWZpbmUgT0FSRVBP UlRUUklHNl9JTlZFUlRfQV81ICAoMTw8NSkKKyNkZWZpbmUgT0FSRVBPUlRUUklHNl9JTlZFUlRf QV82ICAoMTw8NikKKyNkZWZpbmUgT0FSRVBPUlRUUklHNl9JTlZFUlRfQV83ICAoMTw8NykKKyNk ZWZpbmUgT0FSRVBPUlRUUklHNl9JTlZFUlRfQV84ICAoMTw8OCkKKyNkZWZpbmUgT0FSRVBPUlRU UklHNl9JTlZFUlRfQV85ICAoMTw8OSkKKyNkZWZpbmUgT0FSRVBPUlRUUklHNl9JTlZFUlRfQV8x MCAoMTw8MTApCisjZGVmaW5lIE9BUkVQT1JUVFJJRzZfSU5WRVJUX0FfMTEgKDE8PDExKQorI2Rl ZmluZSBPQVJFUE9SVFRSSUc2X0lOVkVSVF9BXzEyICgxPDwxMikKKyNkZWZpbmUgT0FSRVBPUlRU UklHNl9JTlZFUlRfQV8xMyAoMTw8MTMpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzZfSU5WRVJUX0Ff MTQgKDE8PDE0KQorI2RlZmluZSBPQVJFUE9SVFRSSUc2X0lOVkVSVF9BXzE1ICgxPDwxNSkKKyNk ZWZpbmUgT0FSRVBPUlRUUklHNl9JTlZFUlRfQl8wICAoMTw8MTYpCisjZGVmaW5lIE9BUkVQT1JU VFJJRzZfSU5WRVJUX0JfMSAgKDE8PDE3KQorI2RlZmluZSBPQVJFUE9SVFRSSUc2X0lOVkVSVF9C XzIgICgxPDwxOCkKKyNkZWZpbmUgT0FSRVBPUlRUUklHNl9JTlZFUlRfQl8zICAoMTw8MTkpCisj ZGVmaW5lIE9BUkVQT1JUVFJJRzZfSU5WRVJUX0NfMCAgKDE8PDIwKQorI2RlZmluZSBPQVJFUE9S VFRSSUc2X0lOVkVSVF9DXzEgICgxPDwyMSkKKyNkZWZpbmUgT0FSRVBPUlRUUklHNl9JTlZFUlRf RF8wICAoMTw8MjIpCisjZGVmaW5lIE9BUkVQT1JUVFJJRzZfVEhSRVNIT0xEX0VOQUJMRQkgICAg KDE8PDIzKQorI2RlZmluZSBPQVJFUE9SVFRSSUc2X1JFUE9SVF9UUklHR0VSX0VOQUJMRSAoMTw8 MzEpCisKKyNkZWZpbmUgT0FSRVBPUlRUUklHNyBfTU1JTygweDI3NTgpCisjZGVmaW5lIE9BUkVQ T1JUVFJJRzdfTk9BX1NFTEVDVF9NQVNLCSAgICAweGYKKyNkZWZpbmUgT0FSRVBPUlRUUklHN19O T0FfU0VMRUNUXzhfU0hJRlQgICAgMAorI2RlZmluZSBPQVJFUE9SVFRSSUc3X05PQV9TRUxFQ1Rf OV9TSElGVCAgICA0CisjZGVmaW5lIE9BUkVQT1JUVFJJRzdfTk9BX1NFTEVDVF8xMF9TSElGVCAg IDgKKyNkZWZpbmUgT0FSRVBPUlRUUklHN19OT0FfU0VMRUNUXzExX1NISUZUICAgMTIKKyNkZWZp bmUgT0FSRVBPUlRUUklHN19OT0FfU0VMRUNUXzEyX1NISUZUICAgMTYKKyNkZWZpbmUgT0FSRVBP UlRUUklHN19OT0FfU0VMRUNUXzEzX1NISUZUICAgMjAKKyNkZWZpbmUgT0FSRVBPUlRUUklHN19O T0FfU0VMRUNUXzE0X1NISUZUICAgMjQKKyNkZWZpbmUgT0FSRVBPUlRUUklHN19OT0FfU0VMRUNU XzE1X1NISUZUICAgMjgKKworI2RlZmluZSBPQVJFUE9SVFRSSUc4IF9NTUlPKDB4Mjc1YykKKyNk ZWZpbmUgT0FSRVBPUlRUUklHOF9OT0FfU0VMRUNUX01BU0sJICAgIDB4ZgorI2RlZmluZSBPQVJF UE9SVFRSSUc4X05PQV9TRUxFQ1RfMF9TSElGVCAgICAwCisjZGVmaW5lIE9BUkVQT1JUVFJJRzhf Tk9BX1NFTEVDVF8xX1NISUZUICAgIDQKKyNkZWZpbmUgT0FSRVBPUlRUUklHOF9OT0FfU0VMRUNU XzJfU0hJRlQgICAgOAorI2RlZmluZSBPQVJFUE9SVFRSSUc4X05PQV9TRUxFQ1RfM19TSElGVCAg ICAxMgorI2RlZmluZSBPQVJFUE9SVFRSSUc4X05PQV9TRUxFQ1RfNF9TSElGVCAgICAxNgorI2Rl ZmluZSBPQVJFUE9SVFRSSUc4X05PQV9TRUxFQ1RfNV9TSElGVCAgICAyMAorI2RlZmluZSBPQVJF UE9SVFRSSUc4X05PQV9TRUxFQ1RfNl9TSElGVCAgICAyNAorI2RlZmluZSBPQVJFUE9SVFRSSUc4 X05PQV9TRUxFQ1RfN19TSElGVCAgICAyOAorCisjZGVmaW5lIE9BU1RBUlRUUklHMSBfTU1JTygw eDI3MTApCisjZGVmaW5lIE9BU1RBUlRUUklHMV9USFJFU0hPTERfQ09VTlRfTUFTS19NQlogMHhm ZmZmMDAwMAorI2RlZmluZSBPQVNUQVJUVFJJRzFfVEhSRVNIT0xEX01BU0sJICAgICAgMHhmZmZm CisKKyNkZWZpbmUgT0FTVEFSVFRSSUcyIF9NTUlPKDB4MjcxNCkKKyNkZWZpbmUgT0FTVEFSVFRS SUcyX0lOVkVSVF9BXzAgKDE8PDApCisjZGVmaW5lIE9BU1RBUlRUUklHMl9JTlZFUlRfQV8xICgx PDwxKQorI2RlZmluZSBPQVNUQVJUVFJJRzJfSU5WRVJUX0FfMiAoMTw8MikKKyNkZWZpbmUgT0FT VEFSVFRSSUcyX0lOVkVSVF9BXzMgKDE8PDMpCisjZGVmaW5lIE9BU1RBUlRUUklHMl9JTlZFUlRf QV80ICgxPDw0KQorI2RlZmluZSBPQVNUQVJUVFJJRzJfSU5WRVJUX0FfNSAoMTw8NSkKKyNkZWZp bmUgT0FTVEFSVFRSSUcyX0lOVkVSVF9BXzYgKDE8PDYpCisjZGVmaW5lIE9BU1RBUlRUUklHMl9J TlZFUlRfQV83ICgxPDw3KQorI2RlZmluZSBPQVNUQVJUVFJJRzJfSU5WRVJUX0FfOCAoMTw8OCkK KyNkZWZpbmUgT0FTVEFSVFRSSUcyX0lOVkVSVF9BXzkgKDE8PDkpCisjZGVmaW5lIE9BU1RBUlRU UklHMl9JTlZFUlRfQV8xMCAoMTw8MTApCisjZGVmaW5lIE9BU1RBUlRUUklHMl9JTlZFUlRfQV8x MSAoMTw8MTEpCisjZGVmaW5lIE9BU1RBUlRUUklHMl9JTlZFUlRfQV8xMiAoMTw8MTIpCisjZGVm aW5lIE9BU1RBUlRUUklHMl9JTlZFUlRfQV8xMyAoMTw8MTMpCisjZGVmaW5lIE9BU1RBUlRUUklH Ml9JTlZFUlRfQV8xNCAoMTw8MTQpCisjZGVmaW5lIE9BU1RBUlRUUklHMl9JTlZFUlRfQV8xNSAo MTw8MTUpCisjZGVmaW5lIE9BU1RBUlRUUklHMl9JTlZFUlRfQl8wICgxPDwxNikKKyNkZWZpbmUg T0FTVEFSVFRSSUcyX0lOVkVSVF9CXzEgKDE8PDE3KQorI2RlZmluZSBPQVNUQVJUVFJJRzJfSU5W RVJUX0JfMiAoMTw8MTgpCisjZGVmaW5lIE9BU1RBUlRUUklHMl9JTlZFUlRfQl8zICgxPDwxOSkK KyNkZWZpbmUgT0FTVEFSVFRSSUcyX0lOVkVSVF9DXzAgKDE8PDIwKQorI2RlZmluZSBPQVNUQVJU VFJJRzJfSU5WRVJUX0NfMSAoMTw8MjEpCisjZGVmaW5lIE9BU1RBUlRUUklHMl9JTlZFUlRfRF8w ICgxPDwyMikKKyNkZWZpbmUgT0FTVEFSVFRSSUcyX1RIUkVTSE9MRF9FTkFCTEUJICAgICgxPDwy MykKKyNkZWZpbmUgT0FTVEFSVFRSSUcyX1NUQVJUX1RSSUdfRkxBR19NQlogICAgKDE8PDI0KQor I2RlZmluZSBPQVNUQVJUVFJJRzJfRVZFTlRfU0VMRUNUXzAgICgxPDwyOCkKKyNkZWZpbmUgT0FT VEFSVFRSSUcyX0VWRU5UX1NFTEVDVF8xICAoMTw8MjkpCisjZGVmaW5lIE9BU1RBUlRUUklHMl9F VkVOVF9TRUxFQ1RfMiAgKDE8PDMwKQorI2RlZmluZSBPQVNUQVJUVFJJRzJfRVZFTlRfU0VMRUNU XzMgICgxPDwzMSkKKworI2RlZmluZSBPQVNUQVJUVFJJRzMgX01NSU8oMHgyNzE4KQorI2RlZmlu ZSBPQVNUQVJUVFJJRzNfTk9BX1NFTEVDVF9NQVNLCSAgIDB4ZgorI2RlZmluZSBPQVNUQVJUVFJJ RzNfTk9BX1NFTEVDVF84X1NISUZUICAgIDAKKyNkZWZpbmUgT0FTVEFSVFRSSUczX05PQV9TRUxF Q1RfOV9TSElGVCAgICA0CisjZGVmaW5lIE9BU1RBUlRUUklHM19OT0FfU0VMRUNUXzEwX1NISUZU ICAgOAorI2RlZmluZSBPQVNUQVJUVFJJRzNfTk9BX1NFTEVDVF8xMV9TSElGVCAgIDEyCisjZGVm aW5lIE9BU1RBUlRUUklHM19OT0FfU0VMRUNUXzEyX1NISUZUICAgMTYKKyNkZWZpbmUgT0FTVEFS VFRSSUczX05PQV9TRUxFQ1RfMTNfU0hJRlQgICAyMAorI2RlZmluZSBPQVNUQVJUVFJJRzNfTk9B X1NFTEVDVF8xNF9TSElGVCAgIDI0CisjZGVmaW5lIE9BU1RBUlRUUklHM19OT0FfU0VMRUNUXzE1 X1NISUZUICAgMjgKKworI2RlZmluZSBPQVNUQVJUVFJJRzQgX01NSU8oMHgyNzFjKQorI2RlZmlu ZSBPQVNUQVJUVFJJRzRfTk9BX1NFTEVDVF9NQVNLCSAgICAweGYKKyNkZWZpbmUgT0FTVEFSVFRS SUc0X05PQV9TRUxFQ1RfMF9TSElGVCAgICAwCisjZGVmaW5lIE9BU1RBUlRUUklHNF9OT0FfU0VM RUNUXzFfU0hJRlQgICAgNAorI2RlZmluZSBPQVNUQVJUVFJJRzRfTk9BX1NFTEVDVF8yX1NISUZU ICAgIDgKKyNkZWZpbmUgT0FTVEFSVFRSSUc0X05PQV9TRUxFQ1RfM19TSElGVCAgICAxMgorI2Rl ZmluZSBPQVNUQVJUVFJJRzRfTk9BX1NFTEVDVF80X1NISUZUICAgIDE2CisjZGVmaW5lIE9BU1RB UlRUUklHNF9OT0FfU0VMRUNUXzVfU0hJRlQgICAgMjAKKyNkZWZpbmUgT0FTVEFSVFRSSUc0X05P QV9TRUxFQ1RfNl9TSElGVCAgICAyNAorI2RlZmluZSBPQVNUQVJUVFJJRzRfTk9BX1NFTEVDVF83 X1NISUZUICAgIDI4CisKKyNkZWZpbmUgT0FTVEFSVFRSSUc1IF9NTUlPKDB4MjcyMCkKKyNkZWZp bmUgT0FTVEFSVFRSSUc1X1RIUkVTSE9MRF9DT1VOVF9NQVNLX01CWiAweGZmZmYwMDAwCisjZGVm aW5lIE9BU1RBUlRUUklHNV9USFJFU0hPTERfTUFTSwkgICAgICAweGZmZmYKKworI2RlZmluZSBP QVNUQVJUVFJJRzYgX01NSU8oMHgyNzI0KQorI2RlZmluZSBPQVNUQVJUVFJJRzZfSU5WRVJUX0Ff MCAoMTw8MCkKKyNkZWZpbmUgT0FTVEFSVFRSSUc2X0lOVkVSVF9BXzEgKDE8PDEpCisjZGVmaW5l IE9BU1RBUlRUUklHNl9JTlZFUlRfQV8yICgxPDwyKQorI2RlZmluZSBPQVNUQVJUVFJJRzZfSU5W RVJUX0FfMyAoMTw8MykKKyNkZWZpbmUgT0FTVEFSVFRSSUc2X0lOVkVSVF9BXzQgKDE8PDQpCisj ZGVmaW5lIE9BU1RBUlRUUklHNl9JTlZFUlRfQV81ICgxPDw1KQorI2RlZmluZSBPQVNUQVJUVFJJ RzZfSU5WRVJUX0FfNiAoMTw8NikKKyNkZWZpbmUgT0FTVEFSVFRSSUc2X0lOVkVSVF9BXzcgKDE8 PDcpCisjZGVmaW5lIE9BU1RBUlRUUklHNl9JTlZFUlRfQV84ICgxPDw4KQorI2RlZmluZSBPQVNU QVJUVFJJRzZfSU5WRVJUX0FfOSAoMTw8OSkKKyNkZWZpbmUgT0FTVEFSVFRSSUc2X0lOVkVSVF9B XzEwICgxPDwxMCkKKyNkZWZpbmUgT0FTVEFSVFRSSUc2X0lOVkVSVF9BXzExICgxPDwxMSkKKyNk ZWZpbmUgT0FTVEFSVFRSSUc2X0lOVkVSVF9BXzEyICgxPDwxMikKKyNkZWZpbmUgT0FTVEFSVFRS SUc2X0lOVkVSVF9BXzEzICgxPDwxMykKKyNkZWZpbmUgT0FTVEFSVFRSSUc2X0lOVkVSVF9BXzE0 ICgxPDwxNCkKKyNkZWZpbmUgT0FTVEFSVFRSSUc2X0lOVkVSVF9BXzE1ICgxPDwxNSkKKyNkZWZp bmUgT0FTVEFSVFRSSUc2X0lOVkVSVF9CXzAgKDE8PDE2KQorI2RlZmluZSBPQVNUQVJUVFJJRzZf SU5WRVJUX0JfMSAoMTw8MTcpCisjZGVmaW5lIE9BU1RBUlRUUklHNl9JTlZFUlRfQl8yICgxPDwx OCkKKyNkZWZpbmUgT0FTVEFSVFRSSUc2X0lOVkVSVF9CXzMgKDE8PDE5KQorI2RlZmluZSBPQVNU QVJUVFJJRzZfSU5WRVJUX0NfMCAoMTw8MjApCisjZGVmaW5lIE9BU1RBUlRUUklHNl9JTlZFUlRf Q18xICgxPDwyMSkKKyNkZWZpbmUgT0FTVEFSVFRSSUc2X0lOVkVSVF9EXzAgKDE8PDIyKQorI2Rl ZmluZSBPQVNUQVJUVFJJRzZfVEhSRVNIT0xEX0VOQUJMRQkgICAgKDE8PDIzKQorI2RlZmluZSBP QVNUQVJUVFJJRzZfU1RBUlRfVFJJR19GTEFHX01CWiAgICAoMTw8MjQpCisjZGVmaW5lIE9BU1RB UlRUUklHNl9FVkVOVF9TRUxFQ1RfNCAgKDE8PDI4KQorI2RlZmluZSBPQVNUQVJUVFJJRzZfRVZF TlRfU0VMRUNUXzUgICgxPDwyOSkKKyNkZWZpbmUgT0FTVEFSVFRSSUc2X0VWRU5UX1NFTEVDVF82 ICAoMTw8MzApCisjZGVmaW5lIE9BU1RBUlRUUklHNl9FVkVOVF9TRUxFQ1RfNyAgKDE8PDMxKQor CisjZGVmaW5lIE9BU1RBUlRUUklHNyBfTU1JTygweDI3MjgpCisjZGVmaW5lIE9BU1RBUlRUUklH N19OT0FfU0VMRUNUX01BU0sJICAgMHhmCisjZGVmaW5lIE9BU1RBUlRUUklHN19OT0FfU0VMRUNU XzhfU0hJRlQgICAgMAorI2RlZmluZSBPQVNUQVJUVFJJRzdfTk9BX1NFTEVDVF85X1NISUZUICAg IDQKKyNkZWZpbmUgT0FTVEFSVFRSSUc3X05PQV9TRUxFQ1RfMTBfU0hJRlQgICA4CisjZGVmaW5l IE9BU1RBUlRUUklHN19OT0FfU0VMRUNUXzExX1NISUZUICAgMTIKKyNkZWZpbmUgT0FTVEFSVFRS SUc3X05PQV9TRUxFQ1RfMTJfU0hJRlQgICAxNgorI2RlZmluZSBPQVNUQVJUVFJJRzdfTk9BX1NF TEVDVF8xM19TSElGVCAgIDIwCisjZGVmaW5lIE9BU1RBUlRUUklHN19OT0FfU0VMRUNUXzE0X1NI SUZUICAgMjQKKyNkZWZpbmUgT0FTVEFSVFRSSUc3X05PQV9TRUxFQ1RfMTVfU0hJRlQgICAyOAor CisjZGVmaW5lIE9BU1RBUlRUUklHOCBfTU1JTygweDI3MmMpCisjZGVmaW5lIE9BU1RBUlRUUklH OF9OT0FfU0VMRUNUX01BU0sJICAgMHhmCisjZGVmaW5lIE9BU1RBUlRUUklHOF9OT0FfU0VMRUNU XzBfU0hJRlQgICAgMAorI2RlZmluZSBPQVNUQVJUVFJJRzhfTk9BX1NFTEVDVF8xX1NISUZUICAg IDQKKyNkZWZpbmUgT0FTVEFSVFRSSUc4X05PQV9TRUxFQ1RfMl9TSElGVCAgICA4CisjZGVmaW5l IE9BU1RBUlRUUklHOF9OT0FfU0VMRUNUXzNfU0hJRlQgICAgMTIKKyNkZWZpbmUgT0FTVEFSVFRS SUc4X05PQV9TRUxFQ1RfNF9TSElGVCAgICAxNgorI2RlZmluZSBPQVNUQVJUVFJJRzhfTk9BX1NF TEVDVF81X1NISUZUICAgIDIwCisjZGVmaW5lIE9BU1RBUlRUUklHOF9OT0FfU0VMRUNUXzZfU0hJ RlQgICAgMjQKKyNkZWZpbmUgT0FTVEFSVFRSSUc4X05PQV9TRUxFQ1RfN19TSElGVCAgICAyOAor CisvKiBDRUNYXzAgKi8KKyNkZWZpbmUgT0FDRUNfQ09NUEFSRV9MRVNTX09SX0VRVUFMCTYKKyNk ZWZpbmUgT0FDRUNfQ09NUEFSRV9OT1RfRVFVQUwJCTUKKyNkZWZpbmUgT0FDRUNfQ09NUEFSRV9M RVNTX1RIQU4JCTQKKyNkZWZpbmUgT0FDRUNfQ09NUEFSRV9HUkVBVEVSX09SX0VRVUFMCTMKKyNk ZWZpbmUgT0FDRUNfQ09NUEFSRV9FUVVBTAkJMgorI2RlZmluZSBPQUNFQ19DT01QQVJFX0dSRUFU RVJfVEhBTgkxCisjZGVmaW5lIE9BQ0VDX0NPTVBBUkVfQU5ZX0VRVUFMCQkwCisKKyNkZWZpbmUg T0FDRUNfQ09NUEFSRV9WQUxVRV9NQVNLICAgIDB4ZmZmZgorI2RlZmluZSBPQUNFQ19DT01QQVJF X1ZBTFVFX1NISUZUICAgMworCisjZGVmaW5lIE9BQ0VDX1NFTEVDVF9OT0EJKDA8PDE5KQorI2Rl ZmluZSBPQUNFQ19TRUxFQ1RfUFJFVgkoMTw8MTkpCisjZGVmaW5lIE9BQ0VDX1NFTEVDVF9CT09M RUFOCSgyPDwxOSkKKworLyogQ0VDWF8xICovCisjZGVmaW5lIE9BQ0VDX01BU0tfTUFTSwkJICAg IDB4ZmZmZgorI2RlZmluZSBPQUNFQ19DT05TSURFUkFUSU9OU19NQVNLICAgMHhmZmZmCisjZGVm aW5lIE9BQ0VDX0NPTlNJREVSQVRJT05TX1NISUZUICAxNgorCisjZGVmaW5lIE9BQ0VDMF8wIF9N TUlPKDB4Mjc3MCkKKyNkZWZpbmUgT0FDRUMwXzEgX01NSU8oMHgyNzc0KQorI2RlZmluZSBPQUNF QzFfMCBfTU1JTygweDI3NzgpCisjZGVmaW5lIE9BQ0VDMV8xIF9NTUlPKDB4Mjc3YykKKyNkZWZp bmUgT0FDRUMyXzAgX01NSU8oMHgyNzgwKQorI2RlZmluZSBPQUNFQzJfMSBfTU1JTygweDI3ODQp CisjZGVmaW5lIE9BQ0VDM18wIF9NTUlPKDB4Mjc4OCkKKyNkZWZpbmUgT0FDRUMzXzEgX01NSU8o MHgyNzhjKQorI2RlZmluZSBPQUNFQzRfMCBfTU1JTygweDI3OTApCisjZGVmaW5lIE9BQ0VDNF8x IF9NTUlPKDB4Mjc5NCkKKyNkZWZpbmUgT0FDRUM1XzAgX01NSU8oMHgyNzk4KQorI2RlZmluZSBP QUNFQzVfMSBfTU1JTygweDI3OWMpCisjZGVmaW5lIE9BQ0VDNl8wIF9NTUlPKDB4MjdhMCkKKyNk ZWZpbmUgT0FDRUM2XzEgX01NSU8oMHgyN2E0KQorI2RlZmluZSBPQUNFQzdfMCBfTU1JTygweDI3 YTgpCisjZGVmaW5lIE9BQ0VDN18xIF9NTUlPKDB4MjdhYykKKwogCiAjZGVmaW5lIF9HRU43X1BJ UEVBX0RFX0xPQURfU0wJMHg3MDA2OAogI2RlZmluZSBfR0VON19QSVBFQl9ERV9MT0FEX1NMCTB4 NzEwNjgKQEAgLTY5MDAsNiArNzIzNyw3IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewog IyBkZWZpbmUgR0VONl9SQ0NVTklUX0NMT0NLX0dBVEVfRElTQUJMRQkJKDEgPDwgMTEpCiAKICNk ZWZpbmUgR0VONl9VQ0dDVEwzCQkJCV9NTUlPKDB4OTQwOCkKKyMgZGVmaW5lIEdFTjZfT0FDU1VO SVRfQ0xPQ0tfR0FURV9ESVNBQkxFCQkoMSA8PCAyMCkKIAogI2RlZmluZSBHRU43X1VDR0NUTDQJ CQkJX01NSU8oMHg5NDBjKQogI2RlZmluZSAgR0VON19MM0JBTksyWF9DTE9DS19HQVRFX0RJU0FC TEUJKDE8PDI1KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5j bHVkZS91YXBpL2RybS9pOTE1X2RybS5oCmluZGV4IDk2MmNjOTYuLmQ5NzRiNzEgMTAwNjQ0Ci0t LSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAorKysgYi9pbmNsdWRlL3VhcGkvZHJtL2k5 MTVfZHJtLmgKQEAgLTExNzIsNiArMTE3MiwxOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRl eHRfcGFyYW0gewogCV9fdTY0IHZhbHVlOwogfTsKIAorZW51bSBkcm1faTkxNV9vYV9mb3JtYXQg eworCUk5MTVfT0FfRk9STUFUX0ExMyA9IDEsCisJSTkxNV9PQV9GT1JNQVRfQTI5LAorCUk5MTVf T0FfRk9STUFUX0ExM19COF9DOCwKKwlJOTE1X09BX0ZPUk1BVF9CNF9DOCwKKwlJOTE1X09BX0ZP Uk1BVF9BNDVfQjhfQzgsCisJSTkxNV9PQV9GT1JNQVRfQjRfQzhfQTE2LAorCUk5MTVfT0FfRk9S TUFUX0M0X0I4LAorCisJSTkxNV9PQV9GT1JNQVRfTUFYCSAgICAvKiBub24tQUJJICovCit9Owor CiBlbnVtIGRybV9pOTE1X3BlcmZfcHJvcGVydHlfaWQgewogCS8qKgogCSAqIE9wZW4gdGhlIHN0 cmVhbSBmb3IgYSBzcGVjaWZpYyBjb250ZXh0IGhhbmRsZSAoYXMgdXNlZCB3aXRoCkBAIC0xMTgw LDYgKzExOTIsMzIgQEAgZW51bSBkcm1faTkxNV9wZXJmX3Byb3BlcnR5X2lkIHsKIAkgKi8KIAlE Uk1fSTkxNV9QRVJGX1BST1BfQ1RYX0hBTkRMRSA9IDEsCiAKKwkvKioKKwkgKiBBIHZhbHVlIG9m IDEgcmVxdWVzdHMgdGhlIGluY2x1c2lvbiBvZiByYXcgT0EgdW5pdCByZXBvcnRzIGFzCisJICog cGFydCBvZiBzdHJlYW0gc2FtcGxlcy4KKwkgKi8KKwlEUk1fSTkxNV9QRVJGX1BST1BfU0FNUExF X09BLAorCisJLyoqCisJICogVGhlIHZhbHVlIHNwZWNpZmllcyB3aGljaCBzZXQgb2YgT0EgdW5p dCBtZXRyaWNzIHNob3VsZCBiZQorCSAqIGJlIGNvbmZpZ3VyZWQsIGRlZmluaW5nIHRoZSBjb250 ZW50cyBvZiBhbnkgT0EgdW5pdCByZXBvcnRzLgorCSAqLworCURSTV9JOTE1X1BFUkZfUFJPUF9P QV9NRVRSSUNTX1NFVCwKKworCS8qKgorCSAqIFRoZSB2YWx1ZSBzcGVjaWZpZXMgdGhlIHNpemUg YW5kIGxheW91dCBvZiBPQSB1bml0IHJlcG9ydHMuCisJICovCisJRFJNX0k5MTVfUEVSRl9QUk9Q X09BX0ZPUk1BVCwKKworCS8qKgorCSAqIFNwZWNpZnlpbmcgdGhpcyBwcm9wZXJ0eSBpbXBsaWNp dGx5IHJlcXVlc3RzIHBlcmlvZGljIE9BIHVuaXQKKwkgKiBzYW1wbGluZyBhbmQgKGF0IGxlYXN0 IG9uIEhhc3dlbGwpIHRoZSBzYW1wbGluZyBmcmVxdWVuY3kgaXMgZGVyaXZlZAorCSAqIGZyb20g dGhpcyBleHBvbmVudCBhcyBmb2xsb3dzOgorCSAqCisJICogICA4MG5zICogMl4ocGVyaW9kX2V4 cG9uZW50ICsgMSkKKwkgKi8KKwlEUk1fSTkxNV9QRVJGX1BST1BfT0FfRVhQT05FTlQsCisKIAlE Uk1fSTkxNV9QRVJGX1BST1BfTUFYIC8qIG5vbi1BQkkgKi8KIH07CiAKQEAgLTExOTksNyArMTIz NywyMiBAQCBzdHJ1Y3QgZHJtX2k5MTVfcGVyZl9vcGVuX3BhcmFtIHsKIAlfX3U2NCBfX3VzZXIg cHJvcGVydGllc19wdHI7CiB9OwogCisvKioKKyAqIEVuYWJsZSBkYXRhIGNhcHR1cmUgZm9yIGEg c3RyZWFtIHRoYXQgd2FzIGVpdGhlciBvcGVuZWQgaW4gYSBkaXNhYmxlZCBzdGF0ZQorICogdmlh IEk5MTVfUEVSRl9GTEFHX0RJQUJMRUQgb3Igd2FzIGxhdGVyIGRpc2FibGVkIHZpYSBJOTE1X1BF UkZfSU9DVExfRElTQUJMRS4KKyAqCisgKiBJdCBpcyBpbnRlbmRlZCB0byBiZSBjaGVhcGVyIHRv IGRpc2FibGUgYW5kIGVuYWJsZSBhIHN0cmVhbSB0aGFuIGl0IG1heSBiZQorICogdG8gY2xvc2Ug YW5kIHJlLW9wZW4gYSBzdHJlYW0gd2l0aCB0aGUgc2FtZSBjb25maWd1cmF0aW9uLgorICoKKyAq IEl0J3MgdW5kZWZpbmVkIHdoZXRoZXIgYW55IHBlbmRpbmcgZGF0YSBmb3IgdGhlIHN0cmVhbSB3 aWxsIGJlIGxvc3QuCisgKi8KICNkZWZpbmUgSTkxNV9QRVJGX0lPQ1RMX0VOQUJMRQlfSU8oJ2kn LCAweDApCisKKy8qKgorICogRGlzYWJsZSBkYXRhIGNhcHR1cmUgZm9yIGEgc3RyZWFtLgorICoK KyAqIEl0IGlzIGFuIGVycm9yIHRvIHRyeSBhbmQgcmVhZCBhIHN0cmVhbSB0aGF0IGlzIGRpc2Fi bGVkLgorICovCiAjZGVmaW5lIEk5MTVfUEVSRl9JT0NUTF9ESVNBQkxFCV9JTygnaScsIDB4MSkK IAogLyoqCkBAIC0xMjIzLDE3ICsxMjc2LDMwIEBAIGVudW0gZHJtX2k5MTVfcGVyZl9yZWNvcmRf dHlwZSB7CiAJICogZXZlcnkgc2FtcGxlLgogCSAqCiAJICogVGhlIG9yZGVyIG9mIHRoZXNlIHNh bXBsZSBwcm9wZXJ0aWVzIGdpdmVuIGJ5IHVzZXJzcGFjZSBoYXMgbm8KLQkgKiBhZmZlY3Qgb24g dGhlIG9yZGVyaW5nIG9mIGRhdGEgd2l0aGluIGEgc2FtcGxlLiBUaGUgb3JkZXIgd2lsbCBiZQor CSAqIGFmZmVjdCBvbiB0aGUgb3JkZXJpbmcgb2YgZGF0YSB3aXRoaW4gYSBzYW1wbGUuIFRoZSBv cmRlciBpcwogCSAqIGRvY3VtZW50ZWQgaGVyZS4KIAkgKgogCSAqIHN0cnVjdCB7CiAJICogICAg IHN0cnVjdCBkcm1faTkxNV9wZXJmX3JlY29yZF9oZWFkZXIgaGVhZGVyOwogCSAqCi0JICogICAg IFRPRE86IGl0ZW1pemUgZXh0ZW5zaWJsZSBzYW1wbGUgZGF0YSBoZXJlCisJICogICAgIHsgdTMy IG9hX3JlcG9ydFtdOyB9ICYmIERSTV9JOTE1X1BFUkZfUFJPUF9TQU1QTEVfT0EKIAkgKiB9Owog CSAqLwogCURSTV9JOTE1X1BFUkZfUkVDT1JEX1NBTVBMRSA9IDEsCiAKKwkvKgorCSAqIEluZGlj YXRlcyB0aGF0IG9uZSBvciBtb3JlIE9BIHJlcG9ydHMgd2VyZSBub3Qgd3JpdHRlbiBieSB0aGUK KwkgKiBoYXJkd2FyZS4gVGhpcyBjYW4gaGFwcGVuIGZvciBleGFtcGxlIGlmIGFuIE1JX1JFUE9S VF9QRVJGX0NPVU5UCisJICogY29tbWFuZCBjb2xsaWRlcyB3aXRoIHBlcmlvZGljIHNhbXBsaW5n IC0gd2hpY2ggd291bGQgYmUgbW9yZSBsaWtlbHkKKwkgKiBhdCBoaWdoZXIgc2FtcGxpbmcgZnJl cXVlbmNpZXMuCisJICovCisJRFJNX0k5MTVfUEVSRl9SRUNPUkRfT0FfUkVQT1JUX0xPU1QgPSAy LAorCisJLyoqCisJICogQW4gZXJyb3Igb2NjdXJyZWQgdGhhdCByZXN1bHRlZCBpbiBhbGwgcGVu ZGluZyBPQSByZXBvcnRzIGJlaW5nIGxvc3QuCisJICovCisJRFJNX0k5MTVfUEVSRl9SRUNPUkRf T0FfQlVGRkVSX0xPU1QgPSAzLAorCiAJRFJNX0k5MTVfUEVSRl9SRUNPUkRfTUFYIC8qIG5vbi1B QkkgKi8KIH07CiAKLS0gCjIuNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK