From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jesse Barnes Subject: [PATCH 2/2] drm: add an fb creation ioctl that takes a pixel format v4 Date: Mon, 14 Nov 2011 12:21:55 -0800 Message-ID: <1321302115-23159-2-git-send-email-jbarnes@virtuousgeek.org> References: <1321302115-23159-1-git-send-email-jbarnes@virtuousgeek.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from oproxy5-pub.bluehost.com (oproxy5-pub.bluehost.com [67.222.38.55]) by gabe.freedesktop.org (Postfix) with SMTP id 182999F39B for ; Mon, 14 Nov 2011 12:22:01 -0800 (PST) In-Reply-To: <1321302115-23159-1-git-send-email-jbarnes@virtuousgeek.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VG8gcHJvcGVybHkgc3VwcG9ydCB0aGUgdmFyaW91cyBwbGFuZSBmb3JtYXRzIHN1cHBvcnRlZCBi eSBkaWZmZXJlbnQKaGFyZHdhcmUsIHRoZSBrZXJuZWwgbXVzdCBrbm93IHRoZSBwaXhlbCBmb3Jt YXQgb2YgYSBmcmFtZWJ1ZmZlciBvYmplY3QuClNvIGFkZCBhIG5ldyBpb2N0bCB0YWtpbmcgYSBm b3JtYXQgYXJndW1lbnQgY29ycmVzcG9uZGluZyB0byBhIGZvdXJjYwpuYW1lIGZyb20gdGhlIG5l dyBkcm1fZm91cmNjLmggaGVhZGVyIGZpbGUuICBJbXBsZW1lbnQgdGhlIGZiIGNyZWF0aW9uCmhv b2tzIGluIHRlcm1zIG9mIHRoZSBuZXcgbW9kZV9mYl9jbWQyIHVzaW5nIGhlbHBlcnMgd2hlcmUg dGhlIG9sZApicHAvZGVwdGggdmFsdWVzIGFyZSBuZWVkZWQuCgp2MjogY3JlYXRlIERSTSBzcGVj aWZpYyBmb3VyY2MgaGVhZGVyIGZpbGUgZm9yIHNoYXJpbmcgd2l0aCBsaWJkcm0gZXRjCnYzOiBm aXggcmViYXNlIGZhaWx1cmUgYW5kIHVzZSBEUk0gZm91cmNjIGNvZGVzIGluIGludGVsX2Rpc3Bs YXkuYyBhbmQKICAgIHVwZGF0ZSBjb21taXQgbWVzc2FnZQp2NDogbWFrZSBmYl9jbWQyIGhhbmRs ZSBmaWVsZCBpbnRvIGFuIGFycmF5IGZvciBtdWx0aS1vYmplY3QgZm9ybWF0cwogICAgcHVsbCBp biBWaWxsZSdzIGZpeCBmb3IgdGhlIG1lbWNweSBpbiBkcm1fcGxhbmVfaW5pdAogICAgYXBwbHkg VmlsbGUncyBjbGVhbnVwIHRvIHplcm8gb3V0IGZiX2NtZDIgYXJnIGluIGRybV9tb2RlX2FkZGZi CgpTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50 ZWwuY29tPgpBY2tlZC1ieTogQWxhbiBDb3ggPGFsYW5AbHhvcmd1ay51a3V1Lm9yZy51az4KUmV2 aWV3ZWQtYnk6IFJvYiBDbGFyayA8cm9iLmNsYXJrQGxpbmFyby5vcmc+ClNpZ25lZC1vZmYtYnk6 IEplc3NlIEJhcm5lcyA8amJhcm5lc0B2aXJ0dW91c2dlZWsub3JnPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9kcm1fY3J0Yy5jICAgICAgICAgICAgICAgIHwgIDExMSArKysrKysrKysrKysrKysrKysr KysrKysrKystLQogZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2hlbHBlci5jICAgICAgICAgfCAg IDUxICsrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fZHJ2LmMgICAgICAgICAgICAg ICAgIHwgICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAgICB8 ICAgMzkgKysrKysrLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAg ICAgIHwgICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmIuYyAgICAgICAgICAg fCAgIDExICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZGlzcGxheS5jIHwg ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9mYi5oICAgICAgfCAgICAy ICstCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2ZiY29uLmMgICB8ICAgMTMgKyst LQogZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZGlzcGxheS5jICAgfCAgICA4ICstCiBk cml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9mYi5jICAgICAgICB8ICAgMTggKysrLS0KIGRy aXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX21vZGUuaCAgICAgIHwgICAgMiArLQogZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21zLmMgICAgICAgfCAgIDIyICsrKystLQogZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21zLmggICAgICAgfCAgICAxICsKIGRyaXZlcnMvc3Rh Z2luZy9nbWE1MDAvZnJhbWVidWZmZXIuYyAgICAgIHwgICAgMiArLQogaW5jbHVkZS9kcm0vZHJt LmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIGluY2x1ZGUvZHJtL2RybV9jcnRj LmggICAgICAgICAgICAgICAgICAgIHwgICAgOSArKy0KIGluY2x1ZGUvZHJtL2RybV9jcnRjX2hl bHBlci5oICAgICAgICAgICAgIHwgICAgNCArLQogaW5jbHVkZS9kcm0vZHJtX2ZvdXJjYy5oICAg ICAgICAgICAgICAgICAgfCAgIDYzICsrKysrKysrKysrKysrKysKIGluY2x1ZGUvZHJtL2RybV9t b2RlLmggICAgICAgICAgICAgICAgICAgIHwgICAyNCArKysrKysKIDIwIGZpbGVzIGNoYW5nZWQs IDMyNCBpbnNlcnRpb25zKCspLCA2NiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBp bmNsdWRlL2RybS9kcm1fZm91cmNjLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJt X2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCmluZGV4IDgwNGVmMTIuLjMwYTcw YTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fY3J0Yy5jCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiZHJtUC5oIgog I2luY2x1ZGUgImRybV9jcnRjLmgiCiAjaW5jbHVkZSAiZHJtX2VkaWQuaCIKKyNpbmNsdWRlICJk cm1fZm91cmNjLmgiCiAKIHN0cnVjdCBkcm1fcHJvcF9lbnVtX2xpc3QgewogCWludCB0eXBlOwpA QCAtNTYzLDcgKzU2NCw3IEBAIGludCBkcm1fcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQogCi0J bWVtY3B5KHBsYW5lLT5mb3JtYXRfdHlwZXMsIGZvcm1hdHMsIGZvcm1hdF9jb3VudCk7CisJbWVt Y3B5KHBsYW5lLT5mb3JtYXRfdHlwZXMsIGZvcm1hdHMsIGZvcm1hdF9jb3VudCAqIHNpemVvZih1 aW50MzJfdCkpOwogCXBsYW5lLT5mb3JtYXRfY291bnQgPSBmb3JtYXRfY291bnQ7CiAJcGxhbmUt PnBvc3NpYmxlX2NydGNzID0gcG9zc2libGVfY3J0Y3M7CiAKQEAgLTE5MTAsNiArMTkxMSw0MiBA QCBvdXQ6CiAJcmV0dXJuIHJldDsKIH0KIAorLyogT3JpZ2luYWwgYWRkZmIgb25seSBzdXBwb3J0 ZWQgUkdCIGZvcm1hdHMsIHNvIGZpZ3VyZSBvdXQgd2hpY2ggb25lICovCit1aW50MzJfdCBkcm1f bW9kZV9sZWdhY3lfZmJfZm9ybWF0KHVpbnQzMl90IGJwcCwgdWludDMyX3QgZGVwdGgpCit7CisJ dWludDMyX3QgZm10OworCisJc3dpdGNoIChicHApIHsKKwljYXNlIDg6CisJCWZtdCA9IERSTV9G T1VSQ0NfUkdCMzMyOworCQlicmVhazsKKwljYXNlIDE2OgorCQlpZiAoZGVwdGggPT0gMTUpCisJ CQlmbXQgPSBEUk1fRk9VUkNDX1JHQjU1NTsKKwkJZWxzZQorCQkJZm10ID0gRFJNX0ZPVVJDQ19S R0I1NjU7CisJCWJyZWFrOworCWNhc2UgMjQ6CisJCWZtdCA9IERSTV9GT1VSQ0NfUkdCMjQ7CisJ CWJyZWFrOworCWNhc2UgMzI6CisJCWlmIChkZXB0aCA9PSAyNCkKKwkJCWZtdCA9IERSTV9GT1VS Q0NfUkdCMjQ7CisJCWVsc2UgaWYgKGRlcHRoID09IDMwKQorCQkJZm10ID0gRFJNX0lOVEVMX1JH QjMwOworCQllbHNlCisJCQlmbXQgPSBEUk1fRk9VUkNDX1JHQjMyOworCQlicmVhazsKKwlkZWZh dWx0OgorCQlEUk1fRVJST1IoImJhZCBicHAsIGFzc3VtaW5nIFJHQjI0IHBpeGVsIGZvcm1hdFxu Iik7CisJCWZtdCA9IERSTV9GT1VSQ0NfUkdCMjQ7CisJCWJyZWFrOworCX0KKworCXJldHVybiBm bXQ7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9tb2RlX2xlZ2FjeV9mYl9mb3JtYXQpOworCiAvKioK ICAqIGRybV9tb2RlX2FkZGZiIC0gYWRkIGFuIEZCIHRvIHRoZSBncmFwaGljcyBjb25maWd1cmF0 aW9uCiAgKiBAaW5vZGU6IGlub2RlIGZyb20gdGhlIGlvY3RsCkBAIC0xOTMwLDcgKzE5NjcsNzQg QEAgb3V0OgogaW50IGRybV9tb2RlX2FkZGZiKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCSAg IHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQogewotCXN0cnVjdCBkcm1f bW9kZV9mYl9jbWQgKnIgPSBkYXRhOworCXN0cnVjdCBkcm1fbW9kZV9mYl9jbWQgKm9yID0gZGF0 YTsKKwlzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiByID0ge307CisJc3RydWN0IGRybV9tb2RlX2Nv bmZpZyAqY29uZmlnID0gJmRldi0+bW9kZV9jb25maWc7CisJc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmI7CisJaW50IHJldCA9IDA7CisKKwkvKiBVc2UgbmV3IHN0cnVjdCB3aXRoIGZvcm1hdCBp bnRlcm5hbGx5ICovCisJci5mYl9pZCA9IG9yLT5mYl9pZDsKKwlyLndpZHRoID0gb3ItPndpZHRo OworCXIuaGVpZ2h0ID0gb3ItPmhlaWdodDsKKwlyLnBpdGNoZXNbMF0gPSBvci0+cGl0Y2g7CisJ ci5waXhlbF9mb3JtYXQgPSBkcm1fbW9kZV9sZWdhY3lfZmJfZm9ybWF0KG9yLT5icHAsIG9yLT5k ZXB0aCk7CisJci5oYW5kbGVzWzBdID0gb3ItPmhhbmRsZTsKKworCWlmICghZHJtX2NvcmVfY2hl Y2tfZmVhdHVyZShkZXYsIERSSVZFUl9NT0RFU0VUKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlp ZiAoKGNvbmZpZy0+bWluX3dpZHRoID4gci53aWR0aCkgfHwgKHIud2lkdGggPiBjb25maWctPm1h eF93aWR0aCkpIHsKKwkJRFJNX0VSUk9SKCJtb2RlIG5ldyBmcmFtZWJ1ZmZlciB3aWR0aCBub3Qg d2l0aGluIGxpbWl0c1xuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwlpZiAoKGNvbmZpZy0+ bWluX2hlaWdodCA+IHIuaGVpZ2h0KSB8fCAoci5oZWlnaHQgPiBjb25maWctPm1heF9oZWlnaHQp KSB7CisJCURSTV9FUlJPUigibW9kZSBuZXcgZnJhbWVidWZmZXIgaGVpZ2h0IG5vdCB3aXRoaW4g bGltaXRzXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJbXV0ZXhfbG9jaygmZGV2LT5t b2RlX2NvbmZpZy5tdXRleCk7CisKKwkvKiBUT0RPIGNoZWNrIGJ1ZmZlciBpcyBzdWZmaWNpZW50 bHkgbGFyZ2UgKi8KKwkvKiBUT0RPIHNldHVwIGRlc3RydWN0b3IgY2FsbGJhY2sgKi8KKworCWZi ID0gZGV2LT5tb2RlX2NvbmZpZy5mdW5jcy0+ZmJfY3JlYXRlKGRldiwgZmlsZV9wcml2LCAmcik7 CisJaWYgKElTX0VSUihmYikpIHsKKwkJRFJNX0VSUk9SKCJjb3VsZCBub3QgY3JlYXRlIGZyYW1l YnVmZmVyXG4iKTsKKwkJcmV0ID0gUFRSX0VSUihmYik7CisJCWdvdG8gb3V0OworCX0KKworCW9y LT5mYl9pZCA9IGZiLT5iYXNlLmlkOworCWxpc3RfYWRkKCZmYi0+ZmlscF9oZWFkLCAmZmlsZV9w cml2LT5mYnMpOworCURSTV9ERUJVR19LTVMoIltGQjolZF1cbiIsIGZiLT5iYXNlLmlkKTsKKwor b3V0OgorCW11dGV4X3VubG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7CisJcmV0dXJuIHJl dDsKK30KKworLyoqCisgKiBkcm1fbW9kZV9hZGRmYjIgLSBhZGQgYW4gRkIgdG8gdGhlIGdyYXBo aWNzIGNvbmZpZ3VyYXRpb24KKyAqIEBpbm9kZTogaW5vZGUgZnJvbSB0aGUgaW9jdGwKKyAqIEBm aWxwOiBmaWxlICogZnJvbSB0aGUgaW9jdGwKKyAqIEBjbWQ6IGNtZCBmcm9tIGlvY3RsCisgKiBA YXJnOiBhcmcgZnJvbSBpb2N0bAorICoKKyAqIExPQ0tJTkc6CisgKiBUYWtlcyBtb2RlIGNvbmZp ZyBsb2NrLgorICoKKyAqIEFkZCBhIG5ldyBGQiB0byB0aGUgc3BlY2lmaWVkIENSVEMsIGdpdmVu IGEgdXNlciByZXF1ZXN0IHdpdGggZm9ybWF0LgorICoKKyAqIENhbGxlZCBieSB0aGUgdXNlciB2 aWEgaW9jdGwuCisgKgorICogUkVUVVJOUzoKKyAqIFplcm8gb24gc3VjY2VzcywgZXJybm8gb24g ZmFpbHVyZS4KKyAqLworaW50IGRybV9tb2RlX2FkZGZiMihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAorCQkgICAgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCit7CisJc3Ry dWN0IGRybV9tb2RlX2ZiX2NtZDIgKnIgPSBkYXRhOwogCXN0cnVjdCBkcm1fbW9kZV9jb25maWcg KmNvbmZpZyA9ICZkZXYtPm1vZGVfY29uZmlnOwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi OwogCWludCByZXQgPSAwOwpAQCAtMTk1MSw5ICsyMDU1LDYgQEAgaW50IGRybV9tb2RlX2FkZGZi KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIAltdXRleF9sb2NrKCZkZXYtPm1vZGVfY29uZmln Lm11dGV4KTsKIAotCS8qIFRPRE8gY2hlY2sgYnVmZmVyIGlzIHN1ZmZpY2llbnRseSBsYXJnZSAq LwotCS8qIFRPRE8gc2V0dXAgZGVzdHJ1Y3RvciBjYWxsYmFjayAqLwotCiAJZmIgPSBkZXYtPm1v ZGVfY29uZmlnLmZ1bmNzLT5mYl9jcmVhdGUoZGV2LCBmaWxlX3ByaXYsIHIpOwogCWlmIChJU19F UlIoZmIpKSB7CiAJCURSTV9FUlJPUigiY291bGQgbm90IGNyZWF0ZSBmcmFtZWJ1ZmZlclxuIik7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNfaGVscGVyLmMgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2NydGNfaGVscGVyLmMKaW5kZXggZjIzNjY0NC4uM2UwNjQ1YyAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2hlbHBlci5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fY3J0Y19oZWxwZXIuYwpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiZHJt UC5oIgogI2luY2x1ZGUgImRybV9jcnRjLmgiCisjaW5jbHVkZSAiZHJtX2ZvdXJjYy5oIgogI2lu Y2x1ZGUgImRybV9jcnRjX2hlbHBlci5oIgogI2luY2x1ZGUgImRybV9mYl9oZWxwZXIuaCIKIApA QCAtODA3LDE0ICs4MDgsNTYgQEAgdm9pZCBkcm1faGVscGVyX2Nvbm5lY3Rvcl9kcG1zKHN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGludCBtb2RlKQogfQogRVhQT1JUX1NZTUJPTChk cm1faGVscGVyX2Nvbm5lY3Rvcl9kcG1zKTsKIAorLyoKKyAqIEp1c3QgbmVlZCB0byBzdXBwb3J0 IFJHQiBmb3JtYXRzIGhlcmUgZm9yIGNvbXBhdCB3aXRoIGNvZGUgdGhhdCBkb2Vzbid0CisgKiB1 c2UgcGl4ZWwgZm9ybWF0cyBkaXJlY3RseSB5ZXQuCisgKi8KK3ZvaWQgZHJtX2hlbHBlcl9nZXRf ZmJfYnBwX2RlcHRoKHVpbnQzMl90IGZvcm1hdCwgdW5zaWduZWQgaW50ICpkZXB0aCwKKwkJCQkg aW50ICpicHApCit7CisJc3dpdGNoIChmb3JtYXQpIHsKKwljYXNlIERSTV9GT1VSQ0NfUkdCMzMy OgorCQkqZGVwdGggPSA4OworCQkqYnBwID0gODsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9VUkND X1JHQjU1NToKKwkJKmRlcHRoID0gMTU7CisJCSpicHAgPSAxNjsKKwkJYnJlYWs7CisJY2FzZSBE Uk1fRk9VUkNDX1JHQjU2NToKKwkJKmRlcHRoID0gMTY7CisJCSpicHAgPSAxNjsKKwkJYnJlYWs7 CisJY2FzZSBEUk1fRk9VUkNDX1JHQjI0OgorCQkqZGVwdGggPSAyNDsKKwkJKmJwcCA9IDMyOwor CQlicmVhazsKKwljYXNlIERSTV9JTlRFTF9SR0IzMDoKKwkJKmRlcHRoID0gMzA7CisJCSpicHAg PSAzMjsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9VUkNDX1JHQjMyOgorCQkqZGVwdGggPSAzMjsK KwkJKmJwcCA9IDMyOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlEUk1fREVCVUdfS01TKCJ1bnN1 cHBvcnRlZCBwaXhlbCBmb3JtYXRcbiIpOworCQkqZGVwdGggPSAwOworCQkqYnBwID0gMDsKKwkJ YnJlYWs7CisJfQorfQorRVhQT1JUX1NZTUJPTChkcm1faGVscGVyX2dldF9mYl9icHBfZGVwdGgp OworCiBpbnQgZHJtX2hlbHBlcl9tb2RlX2ZpbGxfZmJfc3RydWN0KHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiLAotCQkJCSAgIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQgKm1vZGVfY21kKQorCQkJ CSAgIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2RlX2NtZCkKIHsKIAlmYi0+d2lkdGggPSBt b2RlX2NtZC0+d2lkdGg7CiAJZmItPmhlaWdodCA9IG1vZGVfY21kLT5oZWlnaHQ7Ci0JZmItPnBp dGNoID0gbW9kZV9jbWQtPnBpdGNoOwotCWZiLT5iaXRzX3Blcl9waXhlbCA9IG1vZGVfY21kLT5i cHA7Ci0JZmItPmRlcHRoID0gbW9kZV9jbWQtPmRlcHRoOworCWZiLT5waXRjaCA9IG1vZGVfY21k LT5waXRjaGVzWzBdOworCWRybV9oZWxwZXJfZ2V0X2ZiX2JwcF9kZXB0aChtb2RlX2NtZC0+cGl4 ZWxfZm9ybWF0LCAmZmItPmRlcHRoLAorCQkJCSAgICAmZmItPmJpdHNfcGVyX3BpeGVsKTsKKwlm Yi0+cGl4ZWxfZm9ybWF0ID0gbW9kZV9jbWQtPnBpeGVsX2Zvcm1hdDsKIAogCXJldHVybiAwOwog fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fZHJ2LmMKaW5kZXggZDc4MmJkMS4uNmQ4N2E1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Rydi5jCkBAIC0xNTIs NiArMTUyLDcgQEAgc3RhdGljIHN0cnVjdCBkcm1faW9jdGxfZGVzYyBkcm1faW9jdGxzW10gPSB7 CiAJRFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfTU9ERV9HRVRQUk9QQkxPQiwgZHJtX21vZGVfZ2V0 YmxvYl9pb2N0bCwgRFJNX01BU1RFUnxEUk1fQ09OVFJPTF9BTExPV3xEUk1fVU5MT0NLRUQpLAog CURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX01PREVfR0VURkIsIGRybV9tb2RlX2dldGZiLCBEUk1f TUFTVEVSfERSTV9DT05UUk9MX0FMTE9XfERSTV9VTkxPQ0tFRCksCiAJRFJNX0lPQ1RMX0RFRihE Uk1fSU9DVExfTU9ERV9BRERGQiwgZHJtX21vZGVfYWRkZmIsIERSTV9NQVNURVJ8RFJNX0NPTlRS T0xfQUxMT1d8RFJNX1VOTE9DS0VEKSwKKwlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9NT0RFX0FE REZCMiwgZHJtX21vZGVfYWRkZmIyLCBEUk1fTUFTVEVSfERSTV9DT05UUk9MX0FMTE9XfERSTV9V TkxPQ0tFRCksCiAJRFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfTU9ERV9STUZCLCBkcm1fbW9kZV9y bWZiLCBEUk1fTUFTVEVSfERSTV9DT05UUk9MX0FMTE9XfERSTV9VTkxPQ0tFRCksCiAJRFJNX0lP Q1RMX0RFRihEUk1fSU9DVExfTU9ERV9QQUdFX0ZMSVAsIGRybV9tb2RlX3BhZ2VfZmxpcF9pb2N0 bCwgRFJNX01BU1RFUnxEUk1fQ09OVFJPTF9BTExPV3xEUk1fVU5MT0NLRUQpLAogCURSTV9JT0NU TF9ERUYoRFJNX0lPQ1RMX01PREVfRElSVFlGQiwgZHJtX21vZGVfZGlydHlmYl9pb2N0bCwgRFJN X01BU1RFUnxEUk1fQ09OVFJPTF9BTExPV3xEUk1fVU5MT0NLRUQpLApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCmluZGV4IDlmYTM0MmUuLmQzYjIyNTkgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMKQEAgLTYyNzksNyArNjI3OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSBsb2FkX2RldGVjdF9tb2RlID0gewogCiBzdGF0aWMgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqCiBpbnRlbF9mcmFtZWJ1ZmZlcl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKLQkJCSBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kICptb2RlX2NtZCwKKwkJCSBzdHJ1Y3Qg ZHJtX21vZGVfZmJfY21kMiAqbW9kZV9jbWQsCiAJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKIHsKIAlzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiOwpAQCAtNjMy MSw3ICs2MzIxLDcgQEAgaW50ZWxfZnJhbWVidWZmZXJfY3JlYXRlX2Zvcl9tb2RlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCiAJCQkJICBpbnQgZGVwdGgsIGludCBicHApCiB7CiAJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iajsKLQlzdHJ1Y3QgZHJtX21vZGVfZmJfY21kIG1vZGVfY21k OworCXN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyIG1vZGVfY21kOwogCiAJb2JqID0gaTkxNV9nZW1f YWxsb2Nfb2JqZWN0KGRldiwKIAkJCQkgICAgaW50ZWxfZnJhbWVidWZmZXJfc2l6ZV9mb3JfbW9k ZShtb2RlLCBicHApKTsKQEAgLTYzMzAsOSArNjMzMCw5IEBAIGludGVsX2ZyYW1lYnVmZmVyX2Ny ZWF0ZV9mb3JfbW9kZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCiAJbW9kZV9jbWQud2lkdGgg PSBtb2RlLT5oZGlzcGxheTsKIAltb2RlX2NtZC5oZWlnaHQgPSBtb2RlLT52ZGlzcGxheTsKLQlt b2RlX2NtZC5kZXB0aCA9IGRlcHRoOwotCW1vZGVfY21kLmJwcCA9IGJwcDsKLQltb2RlX2NtZC5w aXRjaCA9IGludGVsX2ZyYW1lYnVmZmVyX3BpdGNoX2Zvcl93aWR0aChtb2RlX2NtZC53aWR0aCwg YnBwKTsKKwltb2RlX2NtZC5waXRjaGVzWzBdID0gaW50ZWxfZnJhbWVidWZmZXJfcGl0Y2hfZm9y X3dpZHRoKG1vZGVfY21kLndpZHRoLAorCQkJCQkJCQlicHApOworCW1vZGVfY21kLnBpeGVsX2Zv cm1hdCA9IDA7CiAKIAlyZXR1cm4gaW50ZWxfZnJhbWVidWZmZXJfY3JlYXRlKGRldiwgJm1vZGVf Y21kLCBvYmopOwogfQpAQCAtNzU3Myw3ICs3NTczLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXJfZnVuY3MgaW50ZWxfZmJfZnVuY3MgPSB7CiAKIGludCBpbnRlbF9mcmFt ZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkgICBzdHJ1Y3QgaW50ZWxf ZnJhbWVidWZmZXIgKmludGVsX2ZiLAotCQkJICAgc3RydWN0IGRybV9tb2RlX2ZiX2NtZCAqbW9k ZV9jbWQsCisJCQkgICBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9kZV9jbWQsCiAJCQkgICBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCWludCByZXQ7CkBAIC03NTgxLDIx ICs3NTgxLDIzIEBAIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCiAJaWYgKG9iai0+dGlsaW5nX21vZGUgPT0gSTkxNV9USUxJTkdfWSkKIAkJcmV0dXJu IC1FSU5WQUw7CiAKLQlpZiAobW9kZV9jbWQtPnBpdGNoICYgNjMpCisJaWYgKG1vZGVfY21kLT5w aXRjaGVzWzBdICYgNjMpCiAJCXJldHVybiAtRUlOVkFMOwogCi0Jc3dpdGNoIChtb2RlX2NtZC0+ YnBwKSB7Ci0JY2FzZSA4OgotCWNhc2UgMTY6Ci0JCS8qIE9ubHkgcHJlLUlMSyBjYW4gaGFuZGxl IDU6NTo1ICovCi0JCWlmIChtb2RlX2NtZC0+ZGVwdGggPT0gMTUgJiYgIUhBU19QQ0hfU1BMSVQo ZGV2KSkKLQkJCXJldHVybiAtRUlOVkFMOworCXN3aXRjaCAobW9kZV9jbWQtPnBpeGVsX2Zvcm1h dCkgeworCWNhc2UgRFJNX0ZPVVJDQ19SR0IzMzI6CisJY2FzZSBEUk1fRk9VUkNDX1JHQjU2NToK KwljYXNlIERSTV9GT1VSQ0NfUkdCMjQ6CisJY2FzZSBEUk1fSU5URUxfUkdCMzA6CisJCS8qIFJH QiBmb3JtYXRzIGFyZSBjb21tb24gYWNyb3NzIGNoaXBzZXRzICovCiAJCWJyZWFrOwotCi0JY2Fz ZSAyNDoKLQljYXNlIDMyOgorCWNhc2UgRFJNX0ZPVVJDQ19ZVVlWOgorCWNhc2UgRFJNX0ZPVVJD Q19VWVZZOgorCWNhc2UgRFJNX0ZPVVJDQ19ZVllVOgorCWNhc2UgRFJNX0ZPVVJDQ19WWVVZOgog CQlicmVhazsKIAlkZWZhdWx0OgorCQlEUk1fRVJST1IoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1h dFxuIik7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtNzYxMywxMSArNzYxNSwxMiBAQCBp bnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogc3RhdGlj IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKgogaW50ZWxfdXNlcl9mcmFtZWJ1ZmZlcl9jcmVhdGUo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCSAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlscCwK LQkJCSAgICAgIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQgKm1vZGVfY21kKQorCQkJICAgICAgc3Ry dWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kKQogewogCXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmo7CiAKLQlvYmogPSB0b19pbnRlbF9ibyhkcm1fZ2VtX29iamVjdF9sb29rdXAo ZGV2LCBmaWxwLCBtb2RlX2NtZC0+aGFuZGxlKSk7CisJb2JqID0gdG9faW50ZWxfYm8oZHJtX2dl bV9vYmplY3RfbG9va3VwKGRldiwgZmlscCwKKwkJCQkJCW1vZGVfY21kLT5oYW5kbGVzWzBdKSk7 CiAJaWYgKCZvYmotPmJhc2UgPT0gTlVMTCkKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggYmQ5YTYwNC4uMjNjNTYyMiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTM1OSw3ICszNTksNyBAQCBleHRlcm4gaW50IGludGVsX3Bp bl9hbmRfZmVuY2VfZmJfb2JqKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIGV4dGVybiBpbnQg aW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSAgc3Ry dWN0IGludGVsX2ZyYW1lYnVmZmVyICppZmIsCi0JCQkJICBzdHJ1Y3QgZHJtX21vZGVfZmJfY21k ICptb2RlX2NtZCwKKwkJCQkgIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2RlX2NtZCwKIAkJ CQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwogZXh0ZXJuIGludCBpbnRlbF9m YmRldl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIHZvaWQgaW50ZWxfZmJk ZXZfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2ZiLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYi5jCmlu ZGV4IGVjNDliYWUuLmRjMWRiNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2ZiLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmIuYwpAQCAtNjUsNyAr NjUsNyBAQCBzdGF0aWMgaW50IGludGVsZmJfY3JlYXRlKHN0cnVjdCBpbnRlbF9mYmRldiAqaWZi ZGV2LAogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7CiAJc3RydWN0IGZiX2luZm8gKmluZm87CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7 Ci0Jc3RydWN0IGRybV9tb2RlX2ZiX2NtZCBtb2RlX2NtZDsKKwlzdHJ1Y3QgZHJtX21vZGVfZmJf Y21kMiBtb2RlX2NtZDsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwogCXN0cnVj dCBkZXZpY2UgKmRldmljZSA9ICZkZXYtPnBkZXYtPmRldjsKIAlpbnQgc2l6ZSwgcmV0OwpAQCAt NzcsMTEgKzc3LDEyIEBAIHN0YXRpYyBpbnQgaW50ZWxmYl9jcmVhdGUoc3RydWN0IGludGVsX2Zi ZGV2ICppZmJkZXYsCiAJbW9kZV9jbWQud2lkdGggPSBzaXplcy0+c3VyZmFjZV93aWR0aDsKIAlt b2RlX2NtZC5oZWlnaHQgPSBzaXplcy0+c3VyZmFjZV9oZWlnaHQ7CiAKLQltb2RlX2NtZC5icHAg PSBzaXplcy0+c3VyZmFjZV9icHA7Ci0JbW9kZV9jbWQucGl0Y2ggPSBBTElHTihtb2RlX2NtZC53 aWR0aCAqICgobW9kZV9jbWQuYnBwICsgNykgLyA4KSwgNjQpOwotCW1vZGVfY21kLmRlcHRoID0g c2l6ZXMtPnN1cmZhY2VfZGVwdGg7CisJbW9kZV9jbWQucGl0Y2hlc1swXSA9IEFMSUdOKG1vZGVf Y21kLndpZHRoICogKChzaXplcy0+c3VyZmFjZV9icHAgKyA3KSAvCisJCQkJCQkgICAgICA4KSwg NjQpOworCW1vZGVfY21kLnBpeGVsX2Zvcm1hdCA9IGRybV9tb2RlX2xlZ2FjeV9mYl9mb3JtYXQo c2l6ZXMtPnN1cmZhY2VfYnBwLAorCQkJCQkJCSAgc2l6ZXMtPnN1cmZhY2VfZGVwdGgpOwogCi0J c2l6ZSA9IG1vZGVfY21kLnBpdGNoICogbW9kZV9jbWQuaGVpZ2h0OworCXNpemUgPSBtb2RlX2Nt ZC5waXRjaGVzWzBdICogbW9kZV9jbWQuaGVpZ2h0OwogCXNpemUgPSBBTElHTihzaXplLCBQQUdF X1NJWkUpOwogCW9iaiA9IGk5MTVfZ2VtX2FsbG9jX29iamVjdChkZXYsIHNpemUpOwogCWlmICgh b2JqKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2Rpc3Bs YXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZGlzcGxheS5jCmluZGV4IGRk YmFiZWYuLjc2ODdhNzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZl YXVfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZGlzcGxh eS5jCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy X2Z1bmNzIG5vdXZlYXVfZnJhbWVidWZmZXJfZnVuY3MgPSB7CiBpbnQKIG5vdXZlYXVfZnJhbWVi dWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJIHN0cnVjdCBub3V2ZWF1X2Zy YW1lYnVmZmVyICpudl9mYiwKLQkJCSBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kICptb2RlX2NtZCwK KwkJCSBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9kZV9jbWQsCiAJCQkgc3RydWN0IG5vdXZl YXVfYm8gKm52Ym8pCiB7CiAJc3RydWN0IGRybV9ub3V2ZWF1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKQEAgLTEyNCwxMyArMTI0LDEzIEBAIG5vdXZlYXVfZnJhbWVidWZm ZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogc3RhdGljIHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKgogbm91dmVhdV91c2VyX2ZyYW1lYnVmZmVyX2NyZWF0ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAogCQkJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAotCQkJCXN0cnVjdCBkcm1f bW9kZV9mYl9jbWQgKm1vZGVfY21kKQorCQkJCXN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2Rl X2NtZCkKIHsKIAlzdHJ1Y3Qgbm91dmVhdV9mcmFtZWJ1ZmZlciAqbm91dmVhdV9mYjsKIAlzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKmdlbTsKIAlpbnQgcmV0OwogCi0JZ2VtID0gZHJtX2dlbV9vYmpl Y3RfbG9va3VwKGRldiwgZmlsZV9wcml2LCBtb2RlX2NtZC0+aGFuZGxlKTsKKwlnZW0gPSBkcm1f Z2VtX29iamVjdF9sb29rdXAoZGV2LCBmaWxlX3ByaXYsIG1vZGVfY21kLT5oYW5kbGVzWzBdKTsK IAlpZiAoIWdlbSkKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZmIuaCBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2 ZWF1L25vdXZlYXVfZmIuaAppbmRleCA5NWM4NDNlLi5mNGRkMzAxIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2ZiLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL25v dXZlYXUvbm91dmVhdV9mYi5oCkBAIC00NSw1ICs0NSw1IEBAIG5vdXZlYXVfZnJhbWVidWZmZXIo c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCiBleHRlcm4gY29uc3Qgc3RydWN0IGRybV9tb2Rl X2NvbmZpZ19mdW5jcyBub3V2ZWF1X21vZGVfY29uZmlnX2Z1bmNzOwogCiBpbnQgbm91dmVhdV9m cmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBub3V2ZWF1X2Zy YW1lYnVmZmVyICpub3V2ZWF1X2ZiLAotCQkJICAgICBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kICpt b2RlX2NtZCwgc3RydWN0IG5vdXZlYXVfYm8gKm52Ym8pOworCQkJICAgICBzdHJ1Y3QgZHJtX21v ZGVfZmJfY21kMiAqbW9kZV9jbWQsIHN0cnVjdCBub3V2ZWF1X2JvICpudmJvKTsKICNlbmRpZiAv KiBfX05PVVZFQVVfRkJfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVh dS9ub3V2ZWF1X2ZiY29uLmMgYi9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2ZiY29u LmMKaW5kZXggMTRhODYyNy4uZDY2MzA2NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL25v dXZlYXUvbm91dmVhdV9mYmNvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZl YXVfZmJjb24uYwpAQCAtMjgxLDcgKzI4MSw3IEBAIG5vdXZlYXVfZmJjb25fY3JlYXRlKHN0cnVj dCBub3V2ZWF1X2ZiZGV2ICpuZmJkZXYsCiAJc3RydWN0IG5vdXZlYXVfZnJhbWVidWZmZXIgKm5v dXZlYXVfZmI7CiAJc3RydWN0IG5vdXZlYXVfY2hhbm5lbCAqY2hhbjsKIAlzdHJ1Y3Qgbm91dmVh dV9ibyAqbnZibzsKLQlzdHJ1Y3QgZHJtX21vZGVfZmJfY21kIG1vZGVfY21kOworCXN0cnVjdCBk cm1fbW9kZV9mYl9jbWQyIG1vZGVfY21kOwogCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gZGV2LT5w ZGV2OwogCXN0cnVjdCBkZXZpY2UgKmRldmljZSA9ICZwZGV2LT5kZXY7CiAJaW50IHNpemUsIHJl dDsKQEAgLTI4OSwxMiArMjg5LDEzIEBAIG5vdXZlYXVfZmJjb25fY3JlYXRlKHN0cnVjdCBub3V2 ZWF1X2ZiZGV2ICpuZmJkZXYsCiAJbW9kZV9jbWQud2lkdGggPSBzaXplcy0+c3VyZmFjZV93aWR0 aDsKIAltb2RlX2NtZC5oZWlnaHQgPSBzaXplcy0+c3VyZmFjZV9oZWlnaHQ7CiAKLQltb2RlX2Nt ZC5icHAgPSBzaXplcy0+c3VyZmFjZV9icHA7Ci0JbW9kZV9jbWQucGl0Y2ggPSBtb2RlX2NtZC53 aWR0aCAqIChtb2RlX2NtZC5icHAgPj4gMyk7Ci0JbW9kZV9jbWQucGl0Y2ggPSByb3VuZHVwKG1v ZGVfY21kLnBpdGNoLCAyNTYpOwotCW1vZGVfY21kLmRlcHRoID0gc2l6ZXMtPnN1cmZhY2VfZGVw dGg7CisJbW9kZV9jbWQucGl0Y2hlc1swXSA9IG1vZGVfY21kLndpZHRoICogKHNpemVzLT5zdXJm YWNlX2JwcCA+PiAzKTsKKwltb2RlX2NtZC5waXRjaGVzWzBdID0gcm91bmR1cChtb2RlX2NtZC5w aXRjaGVzWzBdLCAyNTYpOwogCi0Jc2l6ZSA9IG1vZGVfY21kLnBpdGNoICogbW9kZV9jbWQuaGVp Z2h0OworCW1vZGVfY21kLnBpeGVsX2Zvcm1hdCA9IGRybV9tb2RlX2xlZ2FjeV9mYl9mb3JtYXQo c2l6ZXMtPnN1cmZhY2VfYnBwLAorCQkJCQkJCSAgc2l6ZXMtPnN1cmZhY2VfZGVwdGgpOworCisJ c2l6ZSA9IG1vZGVfY21kLnBpdGNoZXNbMF0gKiBtb2RlX2NtZC5oZWlnaHQ7CiAJc2l6ZSA9IHJv dW5kdXAoc2l6ZSwgUEFHRV9TSVpFKTsKIAogCXJldCA9IG5vdXZlYXVfZ2VtX25ldyhkZXYsIHNp emUsIDAsIE5PVVZFQVVfR0VNX0RPTUFJTl9WUkFNLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3JhZGVvbi9yYWRlb25fZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRl b25fZGlzcGxheS5jCmluZGV4IDZhZGIzZTUuLjZjYWRkZmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9yYWRlb24vcmFkZW9uX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFk ZW9uL3JhZGVvbl9kaXNwbGF5LmMKQEAgLTExMTMsNyArMTExMyw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzIHJhZGVvbl9mYl9mdW5jcyA9IHsKIHZvaWQKIHJh ZGVvbl9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQlzdHJ1Y3Qg cmFkZW9uX2ZyYW1lYnVmZmVyICpyZmIsCi0JCQlzdHJ1Y3QgZHJtX21vZGVfZmJfY21kICptb2Rl X2NtZCwKKwkJCXN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2RlX2NtZCwKIAkJCXN0cnVjdCBk cm1fZ2VtX29iamVjdCAqb2JqKQogewogCXJmYi0+b2JqID0gb2JqOwpAQCAtMTEyNCwxNSArMTEy NCwxNSBAQCByYWRlb25fZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog c3RhdGljIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKgogcmFkZW9uX3VzZXJfZnJhbWVidWZmZXJf Y3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkgICAgICAgc3RydWN0IGRybV9maWxl ICpmaWxlX3ByaXYsCi0JCQkgICAgICAgc3RydWN0IGRybV9tb2RlX2ZiX2NtZCAqbW9kZV9jbWQp CisJCQkgICAgICAgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kKQogewogCXN0cnVj dCBkcm1fZ2VtX29iamVjdCAqb2JqOwogCXN0cnVjdCByYWRlb25fZnJhbWVidWZmZXIgKnJhZGVv bl9mYjsKIAotCW9iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChkZXYsIGZpbGVfcHJpdiwgbW9k ZV9jbWQtPmhhbmRsZSk7CisJb2JqID0gZHJtX2dlbV9vYmplY3RfbG9va3VwKGRldiwgZmlsZV9w cml2LCBtb2RlX2NtZC0+aGFuZGxlc1swXSk7CiAJaWYgKG9iaiA9PSAgTlVMTCkgewogCQlkZXZf ZXJyKCZkZXYtPnBkZXYtPmRldiwgIk5vIEdFTSBvYmplY3QgYXNzb2NpYXRlZCB0byBoYW5kbGUg MHglMDhYLCAiCi0JCQkiY2FuJ3QgY3JlYXRlIGZyYW1lYnVmZmVyXG4iLCBtb2RlX2NtZC0+aGFu ZGxlKTsKKwkJCSJjYW4ndCBjcmVhdGUgZnJhbWVidWZmZXJcbiIsIG1vZGVfY21kLT5oYW5kbGVz WzBdKTsKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9mYi5jIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9y YWRlb25fZmIuYwppbmRleCAwYjdiNDg2Li5lYTExMGFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vcmFkZW9uL3JhZGVvbl9mYi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFk ZW9uX2ZiLmMKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgdm9pZCByYWRlb25mYl9kZXN0cm95 X3Bpbm5lZF9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnb2JqKQogfQogCiBzdGF0aWMg aW50IHJhZGVvbmZiX2NyZWF0ZV9waW5uZWRfb2JqZWN0KHN0cnVjdCByYWRlb25fZmJkZXYgKnJm YmRldiwKLQkJCQkJIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQgKm1vZGVfY21kLAorCQkJCQkgc3Ry dWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kLAogCQkJCQkgc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICoqZ29ial9wKQogewogCXN0cnVjdCByYWRlb25fZGV2aWNlICpyZGV2ID0gcmZiZGV2LT5y ZGV2OwpAQCAtMTE0LDEzICsxMTQsMTcgQEAgc3RhdGljIGludCByYWRlb25mYl9jcmVhdGVfcGlu bmVkX29iamVjdChzdHJ1Y3QgcmFkZW9uX2ZiZGV2ICpyZmJkZXYsCiAJaW50IHJldDsKIAlpbnQg YWxpZ25lZF9zaXplLCBzaXplOwogCWludCBoZWlnaHQgPSBtb2RlX2NtZC0+aGVpZ2h0OworCXUz MiBicHAsIGRlcHRoOworCisJZHJtX2hlbHBlcl9nZXRfZmJfYnBwX2RlcHRoKG1vZGVfY21kLT5w aXhlbF9mb3JtYXQsICZkZXB0aCwgJmJwcCk7CiAKIAkvKiBuZWVkIHRvIGFsaWduIHBpdGNoIHdp dGggY3J0YyBsaW1pdHMgKi8KLQltb2RlX2NtZC0+cGl0Y2ggPSByYWRlb25fYWxpZ25fcGl0Y2go cmRldiwgbW9kZV9jbWQtPndpZHRoLCBtb2RlX2NtZC0+YnBwLCBmYl90aWxlZCkgKiAoKG1vZGVf Y21kLT5icHAgKyAxKSAvIDgpOworCW1vZGVfY21kLT5waXRjaGVzWzBdID0gcmFkZW9uX2FsaWdu X3BpdGNoKHJkZXYsIG1vZGVfY21kLT53aWR0aCwgYnBwLAorCQkJCQkJICBmYl90aWxlZCkgKiAo KGJwcCArIDEpIC8gOCk7CiAKIAlpZiAocmRldi0+ZmFtaWx5ID49IENISVBfUjYwMCkKIAkJaGVp Z2h0ID0gQUxJR04obW9kZV9jbWQtPmhlaWdodCwgOCk7Ci0Jc2l6ZSA9IG1vZGVfY21kLT5waXRj aCAqIGhlaWdodDsKKwlzaXplID0gbW9kZV9jbWQtPnBpdGNoZXNbMF0gKiBoZWlnaHQ7CiAJYWxp Z25lZF9zaXplID0gQUxJR04oc2l6ZSwgUEFHRV9TSVpFKTsKIAlyZXQgPSByYWRlb25fZ2VtX29i amVjdF9jcmVhdGUocmRldiwgYWxpZ25lZF9zaXplLCAwLAogCQkJCSAgICAgICBSQURFT05fR0VN X0RPTUFJTl9WUkFNLApAQCAtMTUxLDcgKzE1NSw3IEBAIHN0YXRpYyBpbnQgcmFkZW9uZmJfY3Jl YXRlX3Bpbm5lZF9vYmplY3Qoc3RydWN0IHJhZGVvbl9mYmRldiAqcmZiZGV2LAogCWlmICh0aWxp bmdfZmxhZ3MpIHsKIAkJcmV0ID0gcmFkZW9uX2JvX3NldF90aWxpbmdfZmxhZ3MocmJvLAogCQkJ CQkJIHRpbGluZ19mbGFncyB8IFJBREVPTl9USUxJTkdfU1VSRkFDRSwKLQkJCQkJCSBtb2RlX2Nt ZC0+cGl0Y2gpOworCQkJCQkJIG1vZGVfY21kLT5waXRjaGVzWzBdKTsKIAkJaWYgKHJldCkKIAkJ CWRldl9lcnIocmRldi0+ZGV2LCAiRkIgZmFpbGVkIHRvIHNldCB0aWxpbmcgZmxhZ3NcbiIpOwog CX0KQEAgLTE4Nyw3ICsxOTEsNyBAQCBzdGF0aWMgaW50IHJhZGVvbmZiX2NyZWF0ZShzdHJ1Y3Qg cmFkZW9uX2ZiZGV2ICpyZmJkZXYsCiAJc3RydWN0IHJhZGVvbl9kZXZpY2UgKnJkZXYgPSByZmJk ZXYtPnJkZXY7CiAJc3RydWN0IGZiX2luZm8gKmluZm87CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIgPSBOVUxMOwotCXN0cnVjdCBkcm1fbW9kZV9mYl9jbWQgbW9kZV9jbWQ7CisJc3RydWN0 IGRybV9tb2RlX2ZiX2NtZDIgbW9kZV9jbWQ7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnb2Jq ID0gTlVMTDsKIAlzdHJ1Y3QgcmFkZW9uX2JvICpyYm8gPSBOVUxMOwogCXN0cnVjdCBkZXZpY2Ug KmRldmljZSA9ICZyZGV2LT5wZGV2LT5kZXY7CkBAIC0yMDEsOCArMjA1LDggQEAgc3RhdGljIGlu dCByYWRlb25mYl9jcmVhdGUoc3RydWN0IHJhZGVvbl9mYmRldiAqcmZiZGV2LAogCWlmICgoc2l6 ZXMtPnN1cmZhY2VfYnBwID09IDI0KSAmJiBBU0lDX0lTX0FWSVZPKHJkZXYpKQogCQlzaXplcy0+ c3VyZmFjZV9icHAgPSAzMjsKIAotCW1vZGVfY21kLmJwcCA9IHNpemVzLT5zdXJmYWNlX2JwcDsK LQltb2RlX2NtZC5kZXB0aCA9IHNpemVzLT5zdXJmYWNlX2RlcHRoOworCW1vZGVfY21kLnBpeGVs X2Zvcm1hdCA9IGRybV9tb2RlX2xlZ2FjeV9mYl9mb3JtYXQoc2l6ZXMtPnN1cmZhY2VfYnBwLAor CQkJCQkJCSAgc2l6ZXMtPnN1cmZhY2VfZGVwdGgpOwogCiAJcmV0ID0gcmFkZW9uZmJfY3JlYXRl X3Bpbm5lZF9vYmplY3QocmZiZGV2LCAmbW9kZV9jbWQsICZnb2JqKTsKIAlyYm8gPSBnZW1fdG9f cmFkZW9uX2JvKGdvYmopOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRl b25fbW9kZS5oIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW9kZS5oCmluZGV4IGVk MDE3OGYuLmRkNDI5YTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9u X21vZGUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tb2RlLmgKQEAgLTY0 NSw3ICs2NDUsNyBAQCBleHRlcm4gdm9pZCByYWRlb25fY3J0Y19mYl9nYW1tYV9nZXQoc3RydWN0 IGRybV9jcnRjICpjcnRjLCB1MTYgKnJlZCwgdTE2ICpncmVlbgogCQkJCSAgICAgdTE2ICpibHVl LCBpbnQgcmVnbm8pOwogdm9pZCByYWRlb25fZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAogCQkJICAgICBzdHJ1Y3QgcmFkZW9uX2ZyYW1lYnVmZmVyICpyZmIsCi0JCQkg ICAgIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQgKm1vZGVfY21kLAorCQkJICAgICBzdHJ1Y3QgZHJt X21vZGVfZmJfY21kMiAqbW9kZV9jbWQsCiAJCQkgICAgIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq b2JqKTsKIAogaW50IHJhZGVvbmZiX3JlbW92ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13 Z2Z4L3Ztd2dmeF9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5jCmlu ZGV4IDhiMTRkZmQuLmExNmE4NGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngv dm13Z2Z4X2ttcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5jCkBA IC05NzQsNyArOTc0LDcgQEAgb3V0X2VycjE6CiAKIHN0YXRpYyBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICp2bXdfa21zX2ZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCQkJIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAotCQkJCQkJIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQg Km1vZGVfY21kKQorCQkJCQkJIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2RlX2NtZDIpCiB7 CiAJc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiA9IHZtd19wcml2KGRldik7CiAJc3RydWN0 IHR0bV9vYmplY3RfZmlsZSAqdGZpbGUgPSB2bXdfZnByaXYoZmlsZV9wcml2KS0+dGZpbGU7CkBA IC05ODIsMTYgKzk4MiwyNCBAQCBzdGF0aWMgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqdm13X2tt c19mYl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlzdHJ1Y3Qgdm13X3N1cmZhY2Ug KnN1cmZhY2UgPSBOVUxMOwogCXN0cnVjdCB2bXdfZG1hX2J1ZmZlciAqYm8gPSBOVUxMOwogCXN0 cnVjdCB0dG1fYmFzZV9vYmplY3QgKnVzZXJfb2JqOworCXN0cnVjdCBkcm1fbW9kZV9mYl9jbWQg bW9kZV9jbWQ7CiAJdTY0IHJlcXVpcmVkX3NpemU7CiAJaW50IHJldDsKIAorCW1vZGVfY21kLndp ZHRoID0gbW9kZV9jbWQyLT53aWR0aDsKKwltb2RlX2NtZC5oZWlnaHQgPSBtb2RlX2NtZDItPmhl aWdodDsKKwltb2RlX2NtZC5waXRjaCA9IG1vZGVfY21kMi0+cGl0Y2hlc1swXTsKKwltb2RlX2Nt ZC5oYW5kbGUgPSBtb2RlX2NtZDItPmhhbmRsZXNbMF07CisJZHJtX2hlbHBlcl9nZXRfZmJfYnBw X2RlcHRoKG1vZGVfY21kMi0+cGl4ZWxfZm9ybWF0LCAmbW9kZV9jbWQuZGVwdGgsCisJCQkJICAg ICZtb2RlX2NtZC5icHApOworCiAJLyoqCiAJICogVGhpcyBjb2RlIHNob3VsZCBiZSBjb25kaXRp b25lZCBvbiBTY3JlZW4gT2JqZWN0cyBub3QgYmVpbmcgdXNlZC4KIAkgKiBJZiBzY3JlZW4gb2Jq ZWN0cyBhcmUgdXNlZCwgd2UgY2FuIGFsbG9jYXRlIGEgR01SIHRvIGhvbGQgdGhlCiAJICogcmVx dWVzdGVkIGZyYW1lYnVmZmVyLgogCSAqLwogCi0JcmVxdWlyZWRfc2l6ZSA9IG1vZGVfY21kLT5w aXRjaCAqIG1vZGVfY21kLT5oZWlnaHQ7CisJcmVxdWlyZWRfc2l6ZSA9IG1vZGVfY21kLnBpdGNo ICogbW9kZV9jbWQuaGVpZ2h0OwogCWlmICh1bmxpa2VseShyZXF1aXJlZF9zaXplID4gKHU2NCkg ZGV2X3ByaXYtPnZyYW1fc2l6ZSkpIHsKIAkJRFJNX0VSUk9SKCJWUkFNIHNpemUgaXMgdG9vIHNt YWxsIGZvciByZXF1ZXN0ZWQgbW9kZS5cbiIpOwogCQlyZXR1cm4gTlVMTDsKQEAgLTEwMDYsNyAr MTAxNCw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICp2bXdfa21zX2ZiX2NyZWF0 ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCSAqIGNvbW1hbmQgc3RyZWFtIHVzaW5nIHVzZXIt c3BhY2UgaGFuZGxlcy4KIAkgKi8KIAotCXVzZXJfb2JqID0gdHRtX2Jhc2Vfb2JqZWN0X2xvb2t1 cCh0ZmlsZSwgbW9kZV9jbWQtPmhhbmRsZSk7CisJdXNlcl9vYmogPSB0dG1fYmFzZV9vYmplY3Rf bG9va3VwKHRmaWxlLCBtb2RlX2NtZC5oYW5kbGUpOwogCWlmICh1bmxpa2VseSh1c2VyX29iaiA9 PSBOVUxMKSkgewogCQlEUk1fRVJST1IoIkNvdWxkIG5vdCBsb2NhdGUgcmVxdWVzdGVkIGttcyBm cmFtZSBidWZmZXIuXG4iKTsKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7CkBAIC0xMDE3LDcg KzEwMjUsNyBAQCBzdGF0aWMgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqdm13X2ttc19mYl9jcmVh dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkgKi8KIAogCXJldCA9IHZtd191c2VyX3N1cmZh Y2VfbG9va3VwX2hhbmRsZShkZXZfcHJpdiwgdGZpbGUsCi0JCQkJCSAgICAgbW9kZV9jbWQtPmhh bmRsZSwgJnN1cmZhY2UpOworCQkJCQkgICAgIG1vZGVfY21kLmhhbmRsZSwgJnN1cmZhY2UpOwog CWlmIChyZXQpCiAJCWdvdG8gdHJ5X2RtYWJ1ZjsKIApAQCAtMTAyNSw3ICsxMDMzLDcgQEAgc3Rh dGljIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKnZtd19rbXNfZmJfY3JlYXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAJCWdvdG8gZXJyX25vdF9zY2Fub3V0OwogCiAJcmV0ID0gdm13X2ttc19u ZXdfZnJhbWVidWZmZXJfc3VyZmFjZShkZXZfcHJpdiwgZmlsZV9wcml2LCBzdXJmYWNlLAotCQkJ CQkgICAgICAmdmZiLCBtb2RlX2NtZCk7CisJCQkJCSAgICAgICZ2ZmIsICZtb2RlX2NtZCk7CiAK IAkvKiB2bXdfdXNlcl9zdXJmYWNlX2xvb2t1cCB0YWtlcyBvbmUgcmVmIHNvIGRvZXMgbmV3X2Zi ICovCiAJdm13X3N1cmZhY2VfdW5yZWZlcmVuY2UoJnN1cmZhY2UpOwpAQCAtMTA0MSwxNCArMTA0 OSwxNCBAQCBzdGF0aWMgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqdm13X2ttc19mYl9jcmVhdGUo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIHRyeV9kbWFidWY6CiAJRFJNX0lORk8oIiVzOiB0cnlp bmcgYnVmZmVyXG4iLCBfX2Z1bmNfXyk7CiAKLQlyZXQgPSB2bXdfdXNlcl9kbWFidWZfbG9va3Vw KHRmaWxlLCBtb2RlX2NtZC0+aGFuZGxlLCAmYm8pOworCXJldCA9IHZtd191c2VyX2RtYWJ1Zl9s b29rdXAodGZpbGUsIG1vZGVfY21kLmhhbmRsZSwgJmJvKTsKIAlpZiAocmV0KSB7CiAJCURSTV9F UlJPUigiZmFpbGVkIHRvIGZpbmQgYnVmZmVyOiAlaVxuIiwgcmV0KTsKIAkJcmV0dXJuIEVSUl9Q VFIoLUVOT0VOVCk7CiAJfQogCiAJcmV0ID0gdm13X2ttc19uZXdfZnJhbWVidWZmZXJfZG1hYnVm KGRldl9wcml2LCBibywgJnZmYiwKLQkJCQkJICAgICBtb2RlX2NtZCk7CisJCQkJCSAgICAgJm1v ZGVfY21kKTsKIAogCS8qIHZtd191c2VyX2RtYWJ1Zl9sb29rdXAgdGFrZXMgb25lIHJlZiBzbyBk b2VzIG5ld19mYiAqLwogCXZtd19kbWFidWZfdW5yZWZlcmVuY2UoJmJvKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ttcy5oIGIvZHJpdmVycy9ncHUvZHJtL3Zt d2dmeC92bXdnZnhfa21zLmgKaW5kZXggZGIwYjkwMS4uZTE5OWFkZiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfa21zLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Zt d2dmeC92bXdnZnhfa21zLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNkZWZpbmUgVk1XR0ZYX0tNU19I XwogCiAjaW5jbHVkZSAiZHJtUC5oIgorI2luY2x1ZGUgImRybV9jcnRjX2hlbHBlci5oIgogI2lu Y2x1ZGUgInZtd2dmeF9kcnYuaCIKIAogI2RlZmluZSBWTVdHRlhfTlVNX0RJU1BMQVlfVU5JVFMg OApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9mcmFtZWJ1ZmZlci5jIGIvZHJp dmVycy9zdGFnaW5nL2dtYTUwMC9mcmFtZWJ1ZmZlci5jCmluZGV4IDNmMzlhMzcuLjFlNzcyMjkg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvZnJhbWVidWZmZXIuYworKysgYi9k cml2ZXJzL3N0YWdpbmcvZ21hNTAwL2ZyYW1lYnVmZmVyLmMKQEAgLTU0Niw3ICs1NDYsNyBAQCBv dXRfZXJyMToKICAqLwogc3RhdGljIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKnBzYl91c2VyX2Zy YW1lYnVmZmVyX2NyZWF0ZQogCQkJKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1f ZmlsZSAqZmlscCwKLQkJCSBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kICpjbWQpCisJCQkgc3RydWN0 IGRybV9tb2RlX2ZiX2NtZDIgKmNtZCkKIHsKIAlzdHJ1Y3QgZ3R0X3JhbmdlICpyOwogCXN0cnVj dCBkcm1fZ2VtX29iamVjdCAqb2JqOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtLmggYi9p bmNsdWRlL2RybS9kcm0uaAppbmRleCAyODk3OTY3Li40OWQ5NGVkIDEwMDY0NAotLS0gYS9pbmNs dWRlL2RybS9kcm0uaAorKysgYi9pbmNsdWRlL2RybS9kcm0uaApAQCAtNzE3LDYgKzcxNyw3IEBA IHN0cnVjdCBkcm1fZ2V0X2NhcCB7CiAjZGVmaW5lIERSTV9JT0NUTF9NT0RFX0dFVFBMQU5FUkVT T1VSQ0VTIERSTV9JT1dSKDB4QjUsIHN0cnVjdCBkcm1fbW9kZV9nZXRfcGxhbmVfcmVzKQogI2Rl ZmluZSBEUk1fSU9DVExfTU9ERV9HRVRQTEFORQlEUk1fSU9XUigweEI2LCBzdHJ1Y3QgZHJtX21v ZGVfZ2V0X3BsYW5lKQogI2RlZmluZSBEUk1fSU9DVExfTU9ERV9TRVRQTEFORQlEUk1fSU9XUigw eEI3LCBzdHJ1Y3QgZHJtX21vZGVfc2V0X3BsYW5lKQorI2RlZmluZSBEUk1fSU9DVExfTU9ERV9B RERGQjIJCURSTV9JT1dSKDB4QjgsIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyKQogCiAvKioKICAq IERldmljZSBzcGVjaWZpYyBpb2N0bHMgc2hvdWxkIG9ubHkgYmUgaW4gdGhlaXIgcmVzcGVjdGl2 ZSBoZWFkZXJzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oIGIvaW5jbHVkZS9k cm0vZHJtX2NydGMuaAppbmRleCBlMjA4NjdlLi5hMmZiZjMzIDEwMDY0NAotLS0gYS9pbmNsdWRl L2RybS9kcm1fY3J0Yy5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKQEAgLTI5LDkgKzI5 LDEwIEBACiAjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4KICNpbmNsdWRlIDxsaW51eC90eXBl cy5oPgogI2luY2x1ZGUgPGxpbnV4L2lkci5oPgotCiAjaW5jbHVkZSA8bGludXgvZmIuaD4KIAor I2luY2x1ZGUgPGRybS9kcm1fZm91cmNjLmg+CisKIHN0cnVjdCBkcm1fZGV2aWNlOwogc3RydWN0 IGRybV9tb2RlX3NldDsKIHN0cnVjdCBkcm1fZnJhbWVidWZmZXI7CkBAIC0yNDYsNiArMjQ3LDcg QEAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciB7CiAJdW5zaWduZWQgaW50IGRlcHRoOwogCWludCBi aXRzX3Blcl9waXhlbDsKIAlpbnQgZmxhZ3M7CisJdWludDMyX3QgcGl4ZWxfZm9ybWF0OyAvKiBm b3VyY2MgZm9ybWF0ICovCiAJc3RydWN0IGxpc3RfaGVhZCBmaWxwX2hlYWQ7CiAJLyogaWYgeW91 IGFyZSB1c2luZyB0aGUgaGVscGVyICovCiAJdm9pZCAqaGVscGVyX3ByaXZhdGU7CkBAIC02MTks NyArNjIxLDcgQEAgc3RydWN0IGRybV9tb2RlX3NldCB7CiAgKiBzdHJ1Y3QgZHJtX21vZGVfY29u ZmlnX2Z1bmNzIC0gY29uZmlndXJlIENSVENzIGZvciBhIGdpdmVuIHNjcmVlbiBsYXlvdXQKICAq Lwogc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5jcyB7Ci0Jc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqKCpmYl9jcmVhdGUpKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAq ZmlsZV9wcml2LCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kICptb2RlX2NtZCk7CisJc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqKCpmYl9jcmVhdGUpKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCBkcm1fZmlsZSAqZmlsZV9wcml2LCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9kZV9jbWQp OwogCXZvaWQgKCpvdXRwdXRfcG9sbF9jaGFuZ2VkKShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsK IH07CiAKQEAgLTgzNyw2ICs4MzksOSBAQCBleHRlcm4gaW50IGRybV9tb2RlX2N1cnNvcl9pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCXZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmls ZSAqZmlsZV9wcml2KTsKIGV4dGVybiBpbnQgZHJtX21vZGVfYWRkZmIoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAkJCSAgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwor ZXh0ZXJuIGludCBkcm1fbW9kZV9hZGRmYjIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCSAg IHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKK2V4dGVybiB1aW50MzJf dCBkcm1fbW9kZV9sZWdhY3lfZmJfZm9ybWF0KHVpbnQzMl90IGJwcCwgdWludDMyX3QgZGVwdGgp OwogZXh0ZXJuIGludCBkcm1fbW9kZV9ybWZiKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkg dm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwogZXh0ZXJuIGludCBkcm1f bW9kZV9nZXRmYihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9k cm0vZHJtX2NydGNfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fY3J0Y19oZWxwZXIuaAppbmRl eCA3M2IwNzEyLi5iNGFiYjMzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fY3J0Y19oZWxw ZXIuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fY3J0Y19oZWxwZXIuaApAQCAtMTE2LDggKzExNiwx MCBAQCBleHRlcm4gYm9vbCBkcm1faGVscGVyX2VuY29kZXJfaW5fdXNlKHN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2Rlcik7CiAKIGV4dGVybiB2b2lkIGRybV9oZWxwZXJfY29ubmVjdG9yX2RwbXMo c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgaW50IG1vZGUpOwogCitleHRlcm4gdm9p ZCBkcm1faGVscGVyX2dldF9mYl9icHBfZGVwdGgodWludDMyX3QgZm9ybWF0LCB1bnNpZ25lZCBp bnQgKmRlcHRoLAorCQkJCQlpbnQgKmJwcCk7CiBleHRlcm4gaW50IGRybV9oZWxwZXJfbW9kZV9m aWxsX2ZiX3N0cnVjdChzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKLQkJCQkJICBzdHJ1Y3Qg ZHJtX21vZGVfZmJfY21kICptb2RlX2NtZCk7CisJCQkJCSAgc3RydWN0IGRybV9tb2RlX2ZiX2Nt ZDIgKm1vZGVfY21kKTsKIAogc3RhdGljIGlubGluZSB2b2lkIGRybV9jcnRjX2hlbHBlcl9hZGQo c3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2NydGNf aGVscGVyX2Z1bmNzICpmdW5jcykKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9mb3VyY2Mu aCBiL2luY2x1ZGUvZHJtL2RybV9mb3VyY2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi40OGMzZDEwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2ZvdXJj Yy5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBJbnRlbCBDb3Jwb3Jh dGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8g ZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv dXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMg b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNv ZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy bWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBi ZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQor ICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xV RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ LAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVO VC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBWQSBMSU5VWCBTWVNURU1TIEFORC9PUiBJVFMgU1VQ UExJRVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lT RSwKKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09G VFdBUkUgT1IgVEhFIFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgor ICovCisKKyNpZm5kZWYgRFJNX0ZPVVJDQ19ICisjZGVmaW5lIERSTV9GT1VSQ0NfSAorCisvKgor ICogV2UgZG9uJ3QgdXNlIHRoZSBWNEwgaGVhZGVyIGJlY2F1c2UKKyAqIDEpIHRoZSBmb3VyY2Mg Y29kZXMgYXJlIHdlbGwgZGVmaW5lZCBhbmQgdHJpdmlhbCB0byBjb25zdHJ1Y3QKKyAqIDIpIHdl IGRvbid0IHdhbnQgdXNlciBhcHBzIHRvIGhhdmUgdG8gcHVsbCBpbiB2NGwgaGVhZGVycyBqdXN0 IGZvciBmb3VyY2MKKyAqIDMpIHRoZSB2NGwgZm91cmNjIGNvZGVzIGFyZSBtaXhlZCB1cCB3aXRo IGEgYnVuY2ggb2Ygb3RoZXIgY29kZSBhbmQgYXJlCisgKiAgICBwYXJ0IG9mIHRoZSB2NGwgQVBJ LCBzbyBjaGFuZ2luZyB0aGVtIHRvIHNvbWV0aGluZyBsaW51eC1nZW5lcmljIGlzbid0CisgKiAg ICBmZWFzaWJsZQorICoKKyAqIFNvIHRoZSBiZWxvdyBpbmNsdWRlcyB0aGUgZm91cmNjIGNvZGVz IHVzZWQgYnkgdGhlIERSTSBhbmQgaXRzIGRyaXZlcnMsCisgKiBhbG9uZyB3aXRoIHBvdGVudGlh bCBkZXZpY2Ugc3BlY2lmaWMgY29kZXMuCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+ CisKKyNkZWZpbmUgZm91cmNjX2NvZGUoYSxiLGMsZCkgKCh1MzIpKGEpIHwgKCh1MzIpKGIpIDw8 IDgpIHwgXAorCQkJICAgICAgKCh1MzIpKGMpIDw8IDE2KSB8ICgodTMyKShkKSA8PCAyNCkpCisK Ky8qIFJHQiBjb2RlcyAqLworI2RlZmluZSBEUk1fRk9VUkNDX1JHQjMzMiBmb3VyY2NfY29kZSgn UicsJ0cnLCdCJywnMScpCisjZGVmaW5lIERSTV9GT1VSQ0NfUkdCNTU1IGZvdXJjY19jb2RlKCdS JywnRycsJ0InLCdPJykKKyNkZWZpbmUgRFJNX0ZPVVJDQ19SR0I1NjUgZm91cmNjX2NvZGUoJ1In LCdHJywnQicsJ1AnKQorI2RlZmluZSBEUk1fRk9VUkNDX1JHQjI0ICBmb3VyY2NfY29kZSgnUics J0cnLCdCJywnMycpCisjZGVmaW5lIERSTV9GT1VSQ0NfUkdCMzIgIGZvdXJjY19jb2RlKCdSJywn RycsJ0InLCc0JykKKworI2RlZmluZSBEUk1fRk9VUkNDX0JHUjI0ICBmb3VyY2NfY29kZSgnQics J0cnLCdSJywnMycpCisjZGVmaW5lIERSTV9GT1VSQ0NfQkdSMzIgIGZvdXJjY19jb2RlKCdCJywn RycsJ1InLCc0JykKKworLyogWVVWIGNvZGVzICovCisjZGVmaW5lIERSTV9GT1VSQ0NfWVVZViAg IGZvdXJjY19jb2RlKCdZJywgJ1UnLCAnWScsICdWJykKKyNkZWZpbmUgRFJNX0ZPVVJDQ19ZVllV ICAgZm91cmNjX2NvZGUoJ1knLCAnVicsICdZJywgJ1UnKQorI2RlZmluZSBEUk1fRk9VUkNDX1VZ VlkgICBmb3VyY2NfY29kZSgnVScsICdZJywgJ1YnLCAnWScpCisjZGVmaW5lIERSTV9GT1VSQ0Nf VllVWSAgIGZvdXJjY19jb2RlKCdWJywgJ1knLCAnVScsICdZJykKKworLyogRFJNIHNwZWNpZmlj IGNvZGVzICovCisjZGVmaW5lIERSTV9JTlRFTF9SR0IzMCAgIGZvdXJjY19jb2RlKCdSJywnRycs J0InLCcwJykgLyogUkdCIHg6MTA6MTA6MTAgKi8KKworI2VuZGlmIC8qIERSTV9GT1VSQ0NfSCAq LwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX21vZGUuaCBiL2luY2x1ZGUvZHJtL2RybV9t b2RlLmgKaW5kZXggMWU0NzQ3Yy4uMTczYWFmNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJt X21vZGUuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fbW9kZS5oCkBAIC0yNjIsNiArMjYyLDMwIEBA IHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQgewogCV9fdTMyIGhhbmRsZTsKIH07CiAKK3N0cnVjdCBk cm1fbW9kZV9mYl9jbWQyIHsKKwlfX3UzMiBmYl9pZDsKKwlfX3UzMiB3aWR0aCwgaGVpZ2h0Owor CV9fdTMyIHBpeGVsX2Zvcm1hdDsgLyogZm91cmNjIGNvZGUgZnJvbSB2aWRlb2RldjIuaCAqLwor CisJLyoKKwkgKiBJbiBjYXNlIG9mIHBsYW5hciBmb3JtYXRzLCB0aGlzIGlvY3RsIGFsbG93cyB1 cCB0byA0CisJICogYnVmZmVyIG9iamVjdHMgd2l0aCBvZmZldHMgYW5kIHBpdGNoZXMgcGVyIHBs YW5lLgorCSAqIFRoZSBwaXRjaCBhbmQgb2Zmc2V0IG9yZGVyIGlzIGRpY3RhdGVkIGJ5IHRoZSBm b3VyY2MsCisJICogZS5nLiBOVjEyIChodHRwOi8vZm91cmNjLm9yZy95dXYucGhwI05WMTIpIGlz IGRlc2NyaWJlZCBhczoKKwkgKgorCSAqICAgWVVWIDQ6MjowIGltYWdlIHdpdGggYSBwbGFuZSBv ZiA4IGJpdCBZIHNhbXBsZXMKKwkgKiAgIGZvbGxvd2VkIGJ5IGFuIGludGVybGVhdmVkIFUvViBw bGFuZSBjb250YWluaW5nCisJICogICA4IGJpdCAyeDIgc3Vic2FtcGxlZCBjb2xvdXIgZGlmZmVy ZW5jZSBzYW1wbGVzLgorCSAqCisJICogU28gaXQgd291bGQgY29uc2lzdCBvZiBZIGFzIG9mZnNl dFswXSBhbmQgVVYgYXMKKwkgKiBvZmZlc2V0WzFdLiAgTm90ZSB0aGF0IG9mZnNldFswXSB3aWxs IGdlbmVyYWxseQorCSAqIGJlIDAuCisJICovCisJX191MzIgaGFuZGxlc1s0XTsKKwlfX3UzMiBw aXRjaGVzWzRdOyAvKiBwaXRjaCBmb3IgZWFjaCBwbGFuZSAqLworCV9fdTMyIG9mZnNldHNbNF07 IC8qIG9mZnNldCBvZiBlYWNoIHBsYW5lICovCit9OworCiAjZGVmaW5lIERSTV9NT0RFX0ZCX0RJ UlRZX0FOTk9UQVRFX0NPUFkgMHgwMQogI2RlZmluZSBEUk1fTU9ERV9GQl9ESVJUWV9BTk5PVEFU RV9GSUxMIDB4MDIKICNkZWZpbmUgRFJNX01PREVfRkJfRElSVFlfRkxBR1MgICAgICAgICAweDAz Ci0tIAoxLjcuNC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAo=