From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= Subject: [PATCH v2 06/12] drm/fb-helper: Remove drm_fb_helper_crtc Date: Sun, 7 Apr 2019 18:52:37 +0200 Message-ID: <20190407165243.54043-7-noralf@tronnes.org> References: <20190407165243.54043-1-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190407165243.54043-1-noralf@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: dri-devel@lists.freedesktop.org Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= List-Id: intel-gfx@lists.freedesktop.org SXQgbm93IG9ubHkgY29udGFpbnMgdGhlIG1vZGVzZXQgc28gdXNlIHRoYXQgZGlyZWN0bHkgaW5z dGVhZCBhbmQgYXR0YWNoCmEgbW9kZXNldCBhcnJheSB0byBkcm1fY2xpZW50X2Rldi4gZHJtX2Zi X2hlbHBlciB3aWxsIHVzZSB0aGlzIGFycmF5LgpDb2RlIHdpbGwgbGF0ZXIgYmUgbW92ZWQgdG8g ZHJtX2NsaWVudCwgc28gYWRkIGNvZGUgdGhlcmUgaW4gYSBuZXcgZmlsZQpkcm1fY2xpZW50X21v ZGVzZXQuYyB3aXRoIE1JVCBsaWNlbnNlIHRvIG1hdGNoIGRybV9mYl9oZWxwZXIuYy4KClRoZSBt b2Rlc2V0IGNvbm5lY3RvciBhcnJheSBzaXplIGlzIGhhcmRjb2RlZCBmb3IgdGhlIGNsb25lZCBj YXNlIHRvIGF2b2lkCmhhdmluZyB0byBwYXNzIGluIGEgdmFsdWUgZnJvbSB0aGUgZHJpdmVyLiBB IHZhbHVlIG9mIDggaXMgY2hvc2VuIHRvIGVycgpvbiB0aGUgc2FmZSBzaWRlLiBUaGlzIG1lYW5z IHRoYXQgdGhlIG1heCBjb25uZWN0b3IgYXJndW1lbnQgZm9yCmRybV9mYl9oZWxwZXJfaW5pdCgp IGFuZCBkcm1fZmJfaGVscGVyX2ZiZGV2X3NldHVwKCkgaXNuJ3QgdXNlZCBhbnltb3JlLAphIHRv ZG8gZW50cnkgZm9yIHRoaXMgaXMgYWRkZWQuCgpJbiBwYW5fZGlzcGxheV9hdG9taWMoKSByZXN0 b3JlX2ZiZGV2X21vZGVfZm9yY2UoKSBpcyB1c2VkIGluc3RlYWQgb2YKcmVzdG9yZV9mYmRldl9t b2RlX2F0b21pYygpIGJlY2F1c2UgdGhhdCBvbmUgd2lsbCBsYXRlciBiZWNvbWUgaW50ZXJuYWwK dG8gZHJtX2NsaWVudF9tb2Rlc2V0LgoKTG9ja2luZyBvcmRlcjoKMS4gZHJtX2ZiX2hlbHBlci0+ bG9jawoyLiBkcm1fbWFzdGVyX2ludGVybmFsX2FjcXVpcmUKMy4gZHJtX2NsaWVudF9kZXYtPm1v ZGVzZXRfbXV0ZXgKCnYyOgotIEFkZCBtb2Rlc2V0cyBhcnJheSB0byBkcm1fY2xpZW50IChEYW5p ZWwgVmV0dGVyKQotIFVzZSBhIG5ldyBmaWxlIGZvciB0aGUgbW9kZXNldCBjb2RlIChEYW5pZWwg VmV0dGVyKQotIEZpbGUgaGFzIHRvIGJlIE1JVCBsaWNlbnNlZCAoRW1tYW51ZWwgVmFkb3QpCi0g QWRkIGNvcHlyaWdodHMgZnJvbSBkcm1fZmJfaGVscGVyLmMKClNpZ25lZC1vZmYtYnk6IE5vcmFs ZiBUcsO4bm5lcyA8bm9yYWxmQHRyb25uZXMub3JnPgotLS0KIERvY3VtZW50YXRpb24vZ3B1L3Rv ZG8ucnN0ICAgICAgICAgICB8ICAgNyArCiBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAgICAg ICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMgICAgICAgICB8ICAx MCArLQogZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnRfbW9kZXNldC5jIHwgMTAyICsrKysrKysr KwogZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyAgICAgIHwgMzAxICsrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLQogaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oICAgICAgICAgICAgIHwg IDI4ICsrKwogaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oICAgICAgICAgIHwgICA4IC0KIDcg ZmlsZXMgY2hhbmdlZCwgMjcyIGluc2VydGlvbnMoKyksIDE4NiBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudF9tb2Rlc2V0LmMKCmRpZmYg LS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS90b2RvLnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L3Rv ZG8ucnN0CmluZGV4IDE1MjhhZDJkNTk4Yi4uOGZhMDhiNWZlYWI3IDEwMDY0NAotLS0gYS9Eb2N1 bWVudGF0aW9uL2dwdS90b2RvLnJzdAorKysgYi9Eb2N1bWVudGF0aW9uL2dwdS90b2RvLnJzdApA QCAtMzAwLDYgKzMwMCwxMyBAQCBpdCB0byB1c2UgZHJtX21vZGVfaHN5bmMoKSBpbnN0ZWFkLgog CiBDb250YWN0OiBTZWFuIFBhdWwKIAorZHJtX2ZiX2hlbHBlciBjbGVhbnVwIHRhc2tzCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLSBUaGUgbWF4IGNvbm5lY3RvciBhcmd1bWVudCBm b3IgZHJtX2ZiX2hlbHBlcl9pbml0KCkgYW5kCisgIGRybV9mYl9oZWxwZXJfZmJkZXZfc2V0dXAo KSBpc24ndCB1c2VkIGFueW1vcmUgYW5kIGNhbiBiZSByZW1vdmVkLgorCisKIENvcmUgcmVmYWN0 b3JpbmdzCiA9PT09PT09PT09PT09PT09PQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v TWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKaW5kZXggNmM3ZThkMTYyYjRlLi4w OGM3N2MxMGNjYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQorKysgYi9k cml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKQEAgLTE5LDcgKzE5LDcgQEAgZHJtLXkgICAgICAgOj0J ZHJtX2F1dGgubyBkcm1fYnVmcy5vIGRybV9jYWNoZS5vIFwKIAkJZHJtX3BsYW5lLm8gZHJtX2Nv bG9yX21nbXQubyBkcm1fcHJpbnQubyBcCiAJCWRybV9kdW1iX2J1ZmZlcnMubyBkcm1fbW9kZV9j b25maWcubyBkcm1fdmJsYW5rLm8gXAogCQlkcm1fc3luY29iai5vIGRybV9sZWFzZS5vIGRybV93 cml0ZWJhY2subyBkcm1fY2xpZW50Lm8gXAotCQlkcm1fYXRvbWljX3VhcGkubworCQlkcm1fY2xp ZW50X21vZGVzZXQubyBkcm1fYXRvbWljX3VhcGkubwogCiBkcm0tJChDT05GSUdfRFJNX0xJQl9S QU5ET00pICs9IGxpYi9kcm1fcmFuZG9tLm8KIGRybS0kKENPTkZJR19EUk1fVk0pICs9IGRybV92 bS5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5jIGIvZHJpdmVycy9n cHUvZHJtL2RybV9jbGllbnQuYwppbmRleCA5YjJiZDI4ZGRlMGEuLjNhZDViNTdjMTQxOSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnQuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2NsaWVudC5jCkBAIC05MSwxNCArOTEsMjAgQEAgaW50IGRybV9jbGllbnRfaW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwKIAlj bGllbnQtPm5hbWUgPSBuYW1lOwogCWNsaWVudC0+ZnVuY3MgPSBmdW5jczsKIAotCXJldCA9IGRy bV9jbGllbnRfb3BlbihjbGllbnQpOworCXJldCA9IGRybV9jbGllbnRfbW9kZXNldF9jcmVhdGUo Y2xpZW50KTsKIAlpZiAocmV0KQogCQlnb3RvIGVycl9wdXRfbW9kdWxlOwogCisJcmV0ID0gZHJt X2NsaWVudF9vcGVuKGNsaWVudCk7CisJaWYgKHJldCkKKwkJZ290byBlcnJfZnJlZTsKKwogCWRy bV9kZXZfZ2V0KGRldik7CiAKIAlyZXR1cm4gMDsKIAorZXJyX2ZyZWU6CisJZHJtX2NsaWVudF9t b2Rlc2V0X2ZyZWUoY2xpZW50KTsKIGVycl9wdXRfbW9kdWxlOgogCWlmIChmdW5jcykKIAkJbW9k dWxlX3B1dChmdW5jcy0+b3duZXIpOwpAQCAtMTQ3LDYgKzE1Myw4IEBAIHZvaWQgZHJtX2NsaWVu dF9yZWxlYXNlKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50KQogCiAJRFJNX0RFVl9ERUJV R19LTVMoZGV2LT5kZXYsICIlc1xuIiwgY2xpZW50LT5uYW1lKTsKIAorCWRybV9jbGllbnRfbW9k ZXNldF9yZWxlYXNlKGNsaWVudCk7CisJZHJtX2NsaWVudF9tb2Rlc2V0X2ZyZWUoY2xpZW50KTsK IAlkcm1fY2xpZW50X2Nsb3NlKGNsaWVudCk7CiAJZHJtX2Rldl9wdXQoZGV2KTsKIAlpZiAoY2xp ZW50LT5mdW5jcykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVz ZXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmJiMzQyMjJjOWRiOAotLS0gL2Rldi9udWxsCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50X21vZGVzZXQuYwpAQCAtMCwwICsxLDEwMiBA QAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorLyoKKyAqIENvcHlyaWdodCAyMDE4 IE5vcmFsZiBUcsO4bm5lcworICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDkgUmVkIEhhdCBJbmMu CisgKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCBJbnRlbCBDb3Jwb3JhdGlvbgorICogICBKZXNz ZSBCYXJuZXMgPGplc3NlLmJhcm5lc0BpbnRlbC5jb20+CisgKiBDb3B5cmlnaHQgKGMpIDIwMDcg RGF2ZSBBaXJsaWUgPGFpcmxpZWRAbGludXguaWU+CisgKi8KKworI2luY2x1ZGUgPGxpbnV4L21v ZHVsZS5oPgorI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5o PgorCisjaW5jbHVkZSA8ZHJtL2RybV9jbGllbnQuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMu aD4KKyNpbmNsdWRlIDxkcm0vZHJtX2RldmljZS5oPgorCisvKiBVc2VkIGJ5IGRybV9jbGllbnQg YW5kIGRybV9mYl9oZWxwZXIgKi8KK2ludCBkcm1fY2xpZW50X21vZGVzZXRfY3JlYXRlKHN0cnVj dCBkcm1fY2xpZW50X2RldiAqY2xpZW50KQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBj bGllbnQtPmRldjsKKwl1bnNpZ25lZCBpbnQgbnVtX2NydGMgPSBkZXYtPm1vZGVfY29uZmlnLm51 bV9jcnRjOworCXVuc2lnbmVkIGludCBtYXhfY29ubmVjdG9yX2NvdW50ID0gMTsKKwlzdHJ1Y3Qg ZHJtX21vZGVfc2V0ICptb2Rlc2V0OworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKKwl1bnNpZ25l ZCBpbnQgaSA9IDA7CisKKwkvKiBBZGQgdGVybWluYXRpbmcgemVybyBlbnRyeSB0byBlbmFibGUg aW5kZXggbGVzcyBpdGVyYXRpb24gKi8KKwljbGllbnQtPm1vZGVzZXRzID0ga2NhbGxvYyhudW1f Y3J0YyArIDEsIHNpemVvZigqY2xpZW50LT5tb2Rlc2V0cyksIEdGUF9LRVJORUwpOworCWlmICgh Y2xpZW50LT5tb2Rlc2V0cykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwltdXRleF9pbml0KCZjbGll bnQtPm1vZGVzZXRfbXV0ZXgpOworCisJZHJtX2Zvcl9lYWNoX2NydGMoY3J0YywgZGV2KQorCQlj bGllbnQtPm1vZGVzZXRzW2krK10uY3J0YyA9IGNydGM7CisKKwkvKiBDbG9uaW5nIGlzIG9ubHkg c3VwcG9ydGVkIGluIHRoZSBzaW5nbGUgY3J0YyBjYXNlLiAqLworCWlmIChudW1fY3J0YyA9PSAx KQorCQltYXhfY29ubmVjdG9yX2NvdW50ID0gRFJNX0NMSUVOVF9NQVhfQ0xPTkVEX0NPTk5FQ1RP UlM7CisKKwlkcm1fY2xpZW50X2Zvcl9lYWNoX21vZGVzZXQobW9kZXNldCwgY2xpZW50KSB7CisJ CW1vZGVzZXQtPmNvbm5lY3RvcnMgPSBrY2FsbG9jKG1heF9jb25uZWN0b3JfY291bnQsCisJCQkJ CSAgICAgIHNpemVvZigqbW9kZXNldC0+Y29ubmVjdG9ycyksIEdGUF9LRVJORUwpOworCQlpZiAo IW1vZGVzZXQtPmNvbm5lY3RvcnMpCisJCQlnb3RvIGVycl9mcmVlOworCX0KKworCXJldHVybiAw OworCitlcnJfZnJlZToKKwlkcm1fY2xpZW50X21vZGVzZXRfZnJlZShjbGllbnQpOworCisJcmV0 dXJuIC1FTk9NRU07Cit9CitFWFBPUlRfU1lNQk9MKGRybV9jbGllbnRfbW9kZXNldF9jcmVhdGUp OworCisvKiBVc2VkIGJ5IGRybV9jbGllbnQgYW5kIGRybV9mYl9oZWxwZXIgKi8KK3ZvaWQgZHJt X2NsaWVudF9tb2Rlc2V0X2ZyZWUoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQpCit7CisJ c3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldDsKKworCW11dGV4X2Rlc3Ryb3koJmNsaWVudC0+ bW9kZXNldF9tdXRleCk7CisKKwlkcm1fY2xpZW50X2Zvcl9lYWNoX21vZGVzZXQobW9kZXNldCwg Y2xpZW50KQorCQlrZnJlZShtb2Rlc2V0LT5jb25uZWN0b3JzKTsKKwlrZnJlZShjbGllbnQtPm1v ZGVzZXRzKTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9tb2Rlc2V0X2ZyZWUpOworCisv KiBVc2VkIGJ5IGRybV9jbGllbnQgYW5kIGRybV9mYl9oZWxwZXIgKi8KK3ZvaWQgZHJtX2NsaWVu dF9tb2Rlc2V0X3JlbGVhc2Uoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQpCit7CisJc3Ry dWN0IGRybV9tb2RlX3NldCAqbW9kZXNldDsKKwl1bnNpZ25lZCBpbnQgaTsKKworCWRybV9jbGll bnRfZm9yX2VhY2hfbW9kZXNldChtb2Rlc2V0LCBjbGllbnQpIHsKKwkJZHJtX21vZGVfZGVzdHJv eShjbGllbnQtPmRldiwgbW9kZXNldC0+bW9kZSk7CisJCW1vZGVzZXQtPm1vZGUgPSBOVUxMOwor CQltb2Rlc2V0LT5mYiA9IE5VTEw7CisKKwkJZm9yIChpID0gMDsgaSA8IG1vZGVzZXQtPm51bV9j b25uZWN0b3JzOyBpKyspIHsKKwkJCWRybV9jb25uZWN0b3JfcHV0KG1vZGVzZXQtPmNvbm5lY3Rv cnNbaV0pOworCQkJbW9kZXNldC0+Y29ubmVjdG9yc1tpXSA9IE5VTEw7CisJCX0KKwkJbW9kZXNl dC0+bnVtX2Nvbm5lY3RvcnMgPSAwOworCX0KK30KK0VYUE9SVF9TWU1CT0woZHJtX2NsaWVudF9t b2Rlc2V0X3JlbGVhc2UpOworCitzdHJ1Y3QgZHJtX21vZGVfc2V0ICpkcm1fY2xpZW50X2ZpbmRf bW9kZXNldChzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwgc3RydWN0IGRybV9jcnRjICpj cnRjKQoreworCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVzZXQ7CisKKwlkcm1fY2xpZW50X2Zv cl9lYWNoX21vZGVzZXQobW9kZXNldCwgY2xpZW50KQorCQlpZiAobW9kZXNldC0+Y3J0YyA9PSBj cnRjKQorCQkJcmV0dXJuIG1vZGVzZXQ7CisKKwlyZXR1cm4gTlVMTDsKK30KKy8qIFRPRE86IFJl bW92ZSBleHBvcnQgd2hlbiBtb2Rlc2V0IGNvZGUgaGFzIGJlZW4gbW92ZWQgb3ZlciAqLworRVhQ T1JUX1NZTUJPTChkcm1fY2xpZW50X2ZpbmRfbW9kZXNldCk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIu YwppbmRleCA2OWRkZGM0YTkyMzEuLmI2NWVkZmM5OWZlYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9mYl9oZWxwZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBl ci5jCkBAIC0zMTcsMTMgKzMxNywxMSBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9kZWJ1Z19lbnRlcihz dHJ1Y3QgZmJfaW5mbyAqaW5mbykKIHsKIAlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqaGVscGVyID0g aW5mby0+cGFyOwogCWNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOwot CWludCBpOworCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVfc2V0OwogCiAJbGlzdF9mb3JfZWFj aF9lbnRyeShoZWxwZXIsICZrZXJuZWxfZmJfaGVscGVyX2xpc3QsIGtlcm5lbF9mYl9saXN0KSB7 Ci0JCWZvciAoaSA9IDA7IGkgPCBoZWxwZXItPmNydGNfY291bnQ7IGkrKykgewotCQkJc3RydWN0 IGRybV9tb2RlX3NldCAqbW9kZV9zZXQgPQotCQkJCSZoZWxwZXItPmNydGNfaW5mb1tpXS5tb2Rl X3NldDsKLQorCQltdXRleF9sb2NrKCZoZWxwZXItPmNsaWVudC5tb2Rlc2V0X211dGV4KTsKKwkJ ZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVfc2V0LCAmaGVscGVyLT5jbGllbnQpIHsK IAkJCWlmICghbW9kZV9zZXQtPmNydGMtPmVuYWJsZWQpCiAJCQkJY29udGludWU7CiAKQEAgLTM0 MCw2ICszMzgsNyBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9kZWJ1Z19lbnRlcihzdHJ1Y3QgZmJfaW5m byAqaW5mbykKIAkJCQkJCSAgICBtb2RlX3NldC0+eSwKIAkJCQkJCSAgICBFTlRFUl9BVE9NSUNf TU9ERV9TRVQpOwogCQl9CisJCW11dGV4X3VubG9jaygmaGVscGVyLT5jbGllbnQubW9kZXNldF9t dXRleCk7CiAJfQogCiAJcmV0dXJuIDA7CkBAIC0zNTMsMTQgKzM1MiwxNCBAQCBFWFBPUlRfU1lN Qk9MKGRybV9mYl9oZWxwZXJfZGVidWdfZW50ZXIpOwogaW50IGRybV9mYl9oZWxwZXJfZGVidWdf bGVhdmUoc3RydWN0IGZiX2luZm8gKmluZm8pCiB7CiAJc3RydWN0IGRybV9mYl9oZWxwZXIgKmhl bHBlciA9IGluZm8tPnBhcjsKKwlzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCA9ICZoZWxw ZXItPmNsaWVudDsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CiAJY29uc3Qgc3RydWN0IGRybV9j cnRjX2hlbHBlcl9mdW5jcyAqZnVuY3M7CisJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZV9zZXQ7 CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7Ci0JaW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBp IDwgaGVscGVyLT5jcnRjX2NvdW50OyBpKyspIHsKLQkJc3RydWN0IGRybV9tb2RlX3NldCAqbW9k ZV9zZXQgPSAmaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQ7CiAKKwltdXRleF9sb2NrKCZj bGllbnQtPm1vZGVzZXRfbXV0ZXgpOworCWRybV9jbGllbnRfZm9yX2VhY2hfbW9kZXNldChtb2Rl X3NldCwgY2xpZW50KSB7CiAJCWNydGMgPSBtb2RlX3NldC0+Y3J0YzsKIAkJaWYgKGRybV9kcnZf dXNlc19hdG9taWNfbW9kZXNldChjcnRjLT5kZXYpKQogCQkJY29udGludWU7CkBAIC0zODMsNiAr MzgyLDcgQEAgaW50IGRybV9mYl9oZWxwZXJfZGVidWdfbGVhdmUoc3RydWN0IGZiX2luZm8gKmlu Zm8pCiAJCWZ1bmNzLT5tb2RlX3NldF9iYXNlX2F0b21pYyhtb2RlX3NldC0+Y3J0YywgZmIsIGNy dGMtPngsCiAJCQkJCSAgICBjcnRjLT55LCBMRUFWRV9BVE9NSUNfTU9ERV9TRVQpOwogCX0KKwlt dXRleF91bmxvY2soJmNsaWVudC0+bW9kZXNldF9tdXRleCk7CiAKIAlyZXR1cm4gMDsKIH0KQEAg LTQzMywxMiArNDMzLDE0IEBAIHN0YXRpYyBib29sIGRybV9mYl9oZWxwZXJfcGFuZWxfcm90YXRp b24oc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldCwKIAogc3RhdGljIGludCByZXN0b3JlX2Zi ZGV2X21vZGVfYXRvbWljKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsIGJvb2wgYWN0 aXZlKQogeworCXN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50ID0gJmZiX2hlbHBlci0+Y2xp ZW50OwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9oZWxwZXItPmRldjsKIAlzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsK IAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Ci0JaW50IGksIHJldDsKIAlzdHJ1Y3Qg ZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggY3R4OworCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVf c2V0OworCWludCByZXQ7CiAKIAlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7CiAK QEAgLTQ2OCw4ICs0NzAsNyBAQCBzdGF0aWMgaW50IHJlc3RvcmVfZmJkZXZfbW9kZV9hdG9taWMo c3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwgYm9vbCBhY3RpdgogCQkJZ290byBvdXRf c3RhdGU7CiAJfQogCi0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsr KSB7Ci0JCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVfc2V0ID0gJmZiX2hlbHBlci0+Y3J0Y19p bmZvW2ldLm1vZGVfc2V0OworCWRybV9jbGllbnRfZm9yX2VhY2hfbW9kZXNldChtb2RlX3NldCwg Y2xpZW50KSB7CiAJCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnkgPSBtb2RlX3NldC0+Y3J0Yy0+ cHJpbWFyeTsKIAkJdW5zaWduZWQgaW50IHJvdGF0aW9uOwogCkBAIC01MTcsOSArNTE4LDExIEBA IHN0YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlX2F0b21pYyhzdHJ1Y3QgZHJtX2ZiX2hlbHBl ciAqZmJfaGVscGVyLCBib29sIGFjdGl2CiAKIHN0YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2Rl X2xlZ2FjeShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQogeworCXN0cnVjdCBkcm1f Y2xpZW50X2RldiAqY2xpZW50ID0gJmZiX2hlbHBlci0+Y2xpZW50OwogCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBmYl9oZWxwZXItPmRldjsKKwlzdHJ1Y3QgZHJtX21vZGVfc2V0ICptb2RlX3Nl dDsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKLQlpbnQgaSwgcmV0ID0gMDsKKwlpbnQgcmV0 ID0gMDsKIAogCWRybV9tb2Rlc2V0X2xvY2tfYWxsKGZiX2hlbHBlci0+ZGV2KTsKIAlkcm1fZm9y X2VhY2hfcGxhbmUocGxhbmUsIGRldikgewpAQCAtNTMyLDggKzUzNSw3IEBAIHN0YXRpYyBpbnQg cmVzdG9yZV9mYmRldl9tb2RlX2xlZ2FjeShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVy KQogCQkJCQkJICAgIERSTV9NT0RFX1JPVEFURV8wKTsKIAl9CiAKLQlmb3IgKGkgPSAwOyBpIDwg ZmJfaGVscGVyLT5jcnRjX2NvdW50OyBpKyspIHsKLQkJc3RydWN0IGRybV9tb2RlX3NldCAqbW9k ZV9zZXQgPSAmZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQ7CisJZHJtX2NsaWVudF9m b3JfZWFjaF9tb2Rlc2V0KG1vZGVfc2V0LCBjbGllbnQpIHsKIAkJc3RydWN0IGRybV9jcnRjICpj cnRjID0gbW9kZV9zZXQtPmNydGM7CiAKIAkJaWYgKGNydGMtPmZ1bmNzLT5jdXJzb3Jfc2V0Mikg ewpAQCAtNTU5LDExICs1NjEsMTYgQEAgc3RhdGljIGludCByZXN0b3JlX2ZiZGV2X21vZGVfbGVn YWN5KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCiBzdGF0aWMgaW50IHJlc3RvcmVf ZmJkZXZfbW9kZV9mb3JjZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQogewogCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9oZWxwZXItPmRldjsKKwlpbnQgcmV0OwogCisJbXV0 ZXhfbG9jaygmZmJfaGVscGVyLT5jbGllbnQubW9kZXNldF9tdXRleCk7CiAJaWYgKGRybV9kcnZf dXNlc19hdG9taWNfbW9kZXNldChkZXYpKQotCQlyZXR1cm4gcmVzdG9yZV9mYmRldl9tb2RlX2F0 b21pYyhmYl9oZWxwZXIsIHRydWUpOworCQlyZXQgPSByZXN0b3JlX2ZiZGV2X21vZGVfYXRvbWlj KGZiX2hlbHBlciwgdHJ1ZSk7CiAJZWxzZQotCQlyZXR1cm4gcmVzdG9yZV9mYmRldl9tb2RlX2xl Z2FjeShmYl9oZWxwZXIpOworCQlyZXQgPSByZXN0b3JlX2ZiZGV2X21vZGVfbGVnYWN5KGZiX2hl bHBlcik7CisJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmNsaWVudC5tb2Rlc2V0X211dGV4KTsK KworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlKHN0cnVj dCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCkBAIC02NzIsMTUgKzY3OSwxNCBAQCBzdGF0aWMg c3RydWN0IHN5c3JxX2tleV9vcCBzeXNycV9kcm1fZmJfaGVscGVyX3Jlc3RvcmVfb3AgPSB7IH07 CiAKIHN0YXRpYyB2b2lkIGRwbXNfbGVnYWN5KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxw ZXIsIGludCBkcG1zX21vZGUpCiB7CisJc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQgPSAm ZmJfaGVscGVyLT5jbGllbnQ7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGZiX2hlbHBlci0+ ZGV2OwogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7CiAJc3RydWN0IGRybV9tb2Rl X3NldCAqbW9kZXNldDsKLQlpbnQgaSwgajsKKwlpbnQgajsKIAogCWRybV9tb2Rlc2V0X2xvY2tf YWxsKGRldik7Ci0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsrKSB7 Ci0JCW1vZGVzZXQgPSAmZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQ7Ci0KKwlkcm1f Y2xpZW50X2Zvcl9lYWNoX21vZGVzZXQobW9kZXNldCwgY2xpZW50KSB7CiAJCWlmICghbW9kZXNl dC0+Y3J0Yy0+ZW5hYmxlZCkKIAkJCWNvbnRpbnVlOwogCkBAIC02OTcsNiArNzAzLDcgQEAgc3Rh dGljIHZvaWQgZHBtc19sZWdhY3koc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwgaW50 IGRwbXNfbW9kZSkKIHN0YXRpYyB2b2lkIGRybV9mYl9oZWxwZXJfZHBtcyhzdHJ1Y3QgZmJfaW5m byAqaW5mbywgaW50IGRwbXNfbW9kZSkKIHsKIAlzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVs cGVyID0gaW5mby0+cGFyOworCXN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50ID0gJmZiX2hl bHBlci0+Y2xpZW50OwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9oZWxwZXItPmRldjsK IAogCS8qCkBAIC03MDYsMTAgKzcxMywxMiBAQCBzdGF0aWMgdm9pZCBkcm1fZmJfaGVscGVyX2Rw bXMoc3RydWN0IGZiX2luZm8gKmluZm8sIGludCBkcG1zX21vZGUpCiAJaWYgKCFkcm1fbWFzdGVy X2ludGVybmFsX2FjcXVpcmUoZGV2KSkKIAkJZ290byB1bmxvY2s7CiAKKwltdXRleF9sb2NrKCZj bGllbnQtPm1vZGVzZXRfbXV0ZXgpOwogCWlmIChkcm1fZHJ2X3VzZXNfYXRvbWljX21vZGVzZXQo ZGV2KSkKIAkJcmVzdG9yZV9mYmRldl9tb2RlX2F0b21pYyhmYl9oZWxwZXIsIGRwbXNfbW9kZSA9 PSBEUk1fTU9ERV9EUE1TX09OKTsKIAllbHNlCiAJCWRwbXNfbGVnYWN5KGZiX2hlbHBlciwgZHBt c19tb2RlKTsKKwltdXRleF91bmxvY2soJmNsaWVudC0+bW9kZXNldF9tdXRleCk7CiAKIAlkcm1f bWFzdGVyX2ludGVybmFsX3JlbGVhc2UoZGV2KTsKIHVubG9jazoKQEAgLTc1Miw0MyArNzYxLDYg QEAgaW50IGRybV9mYl9oZWxwZXJfYmxhbmsoaW50IGJsYW5rLCBzdHJ1Y3QgZmJfaW5mbyAqaW5m bykKIH0KIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9ibGFuayk7CiAKLXN0YXRpYyB2b2lk IGRybV9mYl9oZWxwZXJfbW9kZXNldF9yZWxlYXNlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxw ZXIsCi0JCQkJCSAgc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldCkKLXsKLQlpbnQgaTsKLQot CWZvciAoaSA9IDA7IGkgPCBtb2Rlc2V0LT5udW1fY29ubmVjdG9yczsgaSsrKSB7Ci0JCWRybV9j b25uZWN0b3JfcHV0KG1vZGVzZXQtPmNvbm5lY3RvcnNbaV0pOwotCQltb2Rlc2V0LT5jb25uZWN0 b3JzW2ldID0gTlVMTDsKLQl9Ci0JbW9kZXNldC0+bnVtX2Nvbm5lY3RvcnMgPSAwOwotCi0JZHJt X21vZGVfZGVzdHJveShoZWxwZXItPmRldiwgbW9kZXNldC0+bW9kZSk7Ci0JbW9kZXNldC0+bW9k ZSA9IE5VTEw7Ci0KLQkvKiBGSVhNRSBzaG91bGQgaG9sZCBhIHJlZj8gKi8KLQltb2Rlc2V0LT5m YiA9IE5VTEw7Ci19Ci0KLXN0YXRpYyB2b2lkIGRybV9mYl9oZWxwZXJfY3J0Y19mcmVlKHN0cnVj dCBkcm1fZmJfaGVscGVyICpoZWxwZXIpCi17Ci0JaW50IGk7Ci0KLQlmb3IgKGkgPSAwOyBpIDwg aGVscGVyLT5jb25uZWN0b3JfY291bnQ7IGkrKykgewotCQlkcm1fY29ubmVjdG9yX3B1dChoZWxw ZXItPmNvbm5lY3Rvcl9pbmZvW2ldLT5jb25uZWN0b3IpOwotCQlrZnJlZShoZWxwZXItPmNvbm5l Y3Rvcl9pbmZvW2ldKTsKLQl9Ci0Ja2ZyZWUoaGVscGVyLT5jb25uZWN0b3JfaW5mbyk7Ci0KLQlm b3IgKGkgPSAwOyBpIDwgaGVscGVyLT5jcnRjX2NvdW50OyBpKyspIHsKLQkJc3RydWN0IGRybV9t b2RlX3NldCAqbW9kZXNldCA9ICZoZWxwZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldDsKLQotCQlk cm1fZmJfaGVscGVyX21vZGVzZXRfcmVsZWFzZShoZWxwZXIsIG1vZGVzZXQpOwotCQlrZnJlZSht b2Rlc2V0LT5jb25uZWN0b3JzKTsKLQl9Ci0Ja2ZyZWUoaGVscGVyLT5jcnRjX2luZm8pOwotfQot CiBzdGF0aWMgdm9pZCBkcm1fZmJfaGVscGVyX3Jlc3VtZV93b3JrZXIoc3RydWN0IHdvcmtfc3Ry dWN0ICp3b3JrKQogewogCXN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIgPSBjb250YWluZXJf b2Yod29yaywgc3RydWN0IGRybV9mYl9oZWxwZXIsCkBAIC04NjcsNyArODM5LDcgQEAgRVhQT1JU X1NZTUJPTChkcm1fZmJfaGVscGVyX3ByZXBhcmUpOwogICogZHJtX2ZiX2hlbHBlcl9pbml0IC0g aW5pdGlhbGl6ZSBhICZzdHJ1Y3QgZHJtX2ZiX2hlbHBlcgogICogQGRldjogZHJtIGRldmljZQog ICogQGZiX2hlbHBlcjogZHJpdmVyLWFsbG9jYXRlZCBmYmRldiBoZWxwZXIgc3RydWN0dXJlIHRv IGluaXRpYWxpemUKLSAqIEBtYXhfY29ubl9jb3VudDogbWF4IGNvbm5lY3RvciBjb3VudAorICog QG1heF9jb25uX2NvdW50OiBtYXggY29ubmVjdG9yIGNvdW50IChub3QgdXNlZCkKICAqCiAgKiBU aGlzIGFsbG9jYXRlcyB0aGUgc3RydWN0dXJlcyBmb3IgdGhlIGZiZGV2IGhlbHBlciB3aXRoIHRo ZSBnaXZlbiBsaW1pdHMuCiAgKiBOb3RlIHRoYXQgdGhpcyB3b24ndCB5ZXQgdG91Y2ggdGhlIGhh cmR3YXJlICh0aHJvdWdoIHRoZSBkcml2ZXIgaW50ZXJmYWNlcykKQEAgLTg4Myw1MyArODU1LDM0 IEBAIGludCBkcm1fZmJfaGVscGVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJICAg ICAgIHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCSAgICAgICBpbnQgbWF4X2Nv bm5fY291bnQpCiB7Ci0Jc3RydWN0IGRybV9jcnRjICpjcnRjOwotCXN0cnVjdCBkcm1fbW9kZV9j b25maWcgKmNvbmZpZyA9ICZkZXYtPm1vZGVfY29uZmlnOwotCWludCBpOworCWludCByZXQ7CiAK IAlpZiAoIWRybV9mYmRldl9lbXVsYXRpb24pIHsKIAkJZGV2LT5mYl9oZWxwZXIgPSBmYl9oZWxw ZXI7CiAJCXJldHVybiAwOwogCX0KIAotCWlmICghbWF4X2Nvbm5fY291bnQpCi0JCXJldHVybiAt RUlOVkFMOwotCi0JZmJfaGVscGVyLT5jcnRjX2luZm8gPSBrY2FsbG9jKGNvbmZpZy0+bnVtX2Ny dGMsIHNpemVvZihzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjKSwgR0ZQX0tFUk5FTCk7Ci0JaWYg KCFmYl9oZWxwZXItPmNydGNfaW5mbykKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQlmYl9oZWxwZXIt PmNydGNfY291bnQgPSBjb25maWctPm51bV9jcnRjOwotCWZiX2hlbHBlci0+Y29ubmVjdG9yX2lu Zm8gPSBrY2FsbG9jKGRldi0+bW9kZV9jb25maWcubnVtX2Nvbm5lY3Rvciwgc2l6ZW9mKHN0cnVj dCBkcm1fZmJfaGVscGVyX2Nvbm5lY3RvciAqKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFmYl9oZWxw ZXItPmNvbm5lY3Rvcl9pbmZvKSB7Ci0JCWtmcmVlKGZiX2hlbHBlci0+Y3J0Y19pbmZvKTsKLQkJ cmV0dXJuIC1FTk9NRU07CisJLyogVGhlIGdlbmVyaWMgZmJkZXYgY2xpZW50IGhhcyBhbHJlYWR5 IGRvbmUgdGhpcyAqLworCWlmICghZmJfaGVscGVyLT5jbGllbnQuZnVuY3MpIHsKKwkJZmJfaGVs cGVyLT5jbGllbnQuZGV2ID0gZGV2OworCQlyZXQgPSBkcm1fY2xpZW50X21vZGVzZXRfY3JlYXRl KCZmYl9oZWxwZXItPmNsaWVudCk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OwogCX0KKwor CWZiX2hlbHBlci0+Y29ubmVjdG9yX2luZm8gPSBrY2FsbG9jKGRldi0+bW9kZV9jb25maWcubnVt X2Nvbm5lY3Rvciwgc2l6ZW9mKHN0cnVjdCBkcm1fZmJfaGVscGVyX2Nvbm5lY3RvciAqKSwgR0ZQ X0tFUk5FTCk7CisJaWYgKCFmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvKQorCQlnb3RvIG91dF9m cmVlOworCiAJZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mb19hbGxvY19jb3VudCA9IGRldi0+bW9k ZV9jb25maWcubnVtX2Nvbm5lY3RvcjsKIAlmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudCA9IDA7 CiAKLQlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jcnRjX2NvdW50OyBpKyspIHsKLQkJZmJf aGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQuY29ubmVjdG9ycyA9Ci0JCQlrY2FsbG9jKG1h eF9jb25uX2NvdW50LAotCQkJCXNpemVvZihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqKSwKLQkJCQlH RlBfS0VSTkVMKTsKLQotCQlpZiAoIWZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVfc2V0LmNv bm5lY3RvcnMpCi0JCQlnb3RvIG91dF9mcmVlOwotCQlmYl9oZWxwZXItPmNydGNfaW5mb1tpXS5t b2RlX3NldC5udW1fY29ubmVjdG9ycyA9IDA7Ci0JfQotCi0JaSA9IDA7Ci0JZHJtX2Zvcl9lYWNo X2NydGMoY3J0YywgZGV2KSB7Ci0JCWZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVfc2V0LmNy dGMgPSBjcnRjOwotCQlpKys7Ci0JfQotCiAJZGV2LT5mYl9oZWxwZXIgPSBmYl9oZWxwZXI7CiAK IAlyZXR1cm4gMDsKIG91dF9mcmVlOgotCWRybV9mYl9oZWxwZXJfY3J0Y19mcmVlKGZiX2hlbHBl cik7CisJZHJtX2NsaWVudF9tb2Rlc2V0X2ZyZWUoJmZiX2hlbHBlci0+Y2xpZW50KTsKKwogCXJl dHVybiAtRU5PTUVNOwogfQogRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX2luaXQpOwpAQCAt MTAwNSw2ICs5NTgsNyBAQCBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfdW5yZWdpc3Rlcl9m YmkpOwogdm9pZCBkcm1fZmJfaGVscGVyX2Zpbmkoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hl bHBlcikKIHsKIAlzdHJ1Y3QgZmJfaW5mbyAqaW5mbzsKKwlpbnQgaTsKIAogCWlmICghZmJfaGVs cGVyKQogCQlyZXR1cm47CkBAIC0xMDM0LDggKzk4OCwxNyBAQCB2b2lkIGRybV9mYl9oZWxwZXJf ZmluaShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQogCW11dGV4X3VubG9jaygma2Vy bmVsX2ZiX2hlbHBlcl9sb2NrKTsKIAogCW11dGV4X2Rlc3Ryb3koJmZiX2hlbHBlci0+bG9jayk7 Ci0JZHJtX2ZiX2hlbHBlcl9jcnRjX2ZyZWUoZmJfaGVscGVyKTsKIAorCWlmICghZmJfaGVscGVy LT5jbGllbnQuZnVuY3MpIHsKKwkJZHJtX2NsaWVudF9tb2Rlc2V0X3JlbGVhc2UoJmZiX2hlbHBl ci0+Y2xpZW50KTsKKwkJZHJtX2NsaWVudF9tb2Rlc2V0X2ZyZWUoJmZiX2hlbHBlci0+Y2xpZW50 KTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQ7IGkr KykgeworCQlkcm1fY29ubmVjdG9yX3B1dChmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2ldLT5j b25uZWN0b3IpOworCQlrZnJlZShmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2ldKTsKKwl9CisJ a2ZyZWUoZmJfaGVscGVyLT5jb25uZWN0b3JfaW5mbyk7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9m Yl9oZWxwZXJfZmluaSk7CiAKQEAgLTEzODAsMTMgKzEzNDMsMTQgQEAgc3RhdGljIGludCBzZXRj bWFwX3BzZXVkb19wYWxldHRlKHN0cnVjdCBmYl9jbWFwICpjbWFwLCBzdHJ1Y3QgZmJfaW5mbyAq aW5mbykKIHN0YXRpYyBpbnQgc2V0Y21hcF9sZWdhY3koc3RydWN0IGZiX2NtYXAgKmNtYXAsIHN0 cnVjdCBmYl9pbmZvICppbmZvKQogewogCXN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIg PSBpbmZvLT5wYXI7CisJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldDsKIAlzdHJ1Y3QgZHJt X2NydGMgKmNydGM7CiAJdTE2ICpyLCAqZywgKmI7Ci0JaW50IGksIHJldCA9IDA7CisJaW50IHJl dCA9IDA7CiAKIAlkcm1fbW9kZXNldF9sb2NrX2FsbChmYl9oZWxwZXItPmRldik7Ci0JZm9yIChp ID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsrKSB7Ci0JCWNydGMgPSBmYl9oZWxw ZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldC5jcnRjOworCWRybV9jbGllbnRfZm9yX2VhY2hfbW9k ZXNldChtb2Rlc2V0LCAmZmJfaGVscGVyLT5jbGllbnQpIHsKKwkJY3J0YyA9IG1vZGVzZXQtPmNy dGM7CiAJCWlmICghY3J0Yy0+ZnVuY3MtPmdhbW1hX3NldCB8fCAhY3J0Yy0+Z2FtbWFfc2l6ZSkK IAkJCXJldHVybiAtRUlOVkFMOwogCkBAIC0xNDYyLDEwICsxNDI2LDExIEBAIHN0YXRpYyBpbnQg c2V0Y21hcF9hdG9taWMoc3RydWN0IGZiX2NtYXAgKmNtYXAsIHN0cnVjdCBmYl9pbmZvICppbmZv KQogCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7CiAJc3RydWN0IGRybV9jcnRj X3N0YXRlICpjcnRjX3N0YXRlOwogCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKKwlz dHJ1Y3QgZHJtX21vZGVfc2V0ICptb2Rlc2V0OwogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKIAl1 MTYgKnIsICpnLCAqYjsKLQlpbnQgaSwgcmV0ID0gMDsKIAlib29sIHJlcGxhY2VkOworCWludCBy ZXQgPSAwOwogCiAJZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgsIDApOwogCkBAIC0xNDc3 LDggKzE0NDIsOCBAQCBzdGF0aWMgaW50IHNldGNtYXBfYXRvbWljKHN0cnVjdCBmYl9jbWFwICpj bWFwLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKIAogCXN0YXRlLT5hY3F1aXJlX2N0eCA9ICZjdHg7 CiByZXRyeToKLQlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jcnRjX2NvdW50OyBpKyspIHsK LQkJY3J0YyA9IGZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVfc2V0LmNydGM7CisJZHJtX2Ns aWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVzZXQsICZmYl9oZWxwZXItPmNsaWVudCkgeworCQlj cnRjID0gbW9kZXNldC0+Y3J0YzsKIAogCQlpZiAoIWdhbW1hX2x1dCkKIAkJCWdhbW1hX2x1dCA9 IHNldGNtYXBfbmV3X2dhbW1hX2x1dChjcnRjLCBjbWFwKTsKQEAgLTE1MDYsOCArMTQ3MSw4IEBA IHN0YXRpYyBpbnQgc2V0Y21hcF9hdG9taWMoc3RydWN0IGZiX2NtYXAgKmNtYXAsIHN0cnVjdCBm Yl9pbmZvICppbmZvKQogCWlmIChyZXQpCiAJCWdvdG8gb3V0X3N0YXRlOwogCi0JZm9yIChpID0g MDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsrKSB7Ci0JCWNydGMgPSBmYl9oZWxwZXIt PmNydGNfaW5mb1tpXS5tb2RlX3NldC5jcnRjOworCWRybV9jbGllbnRfZm9yX2VhY2hfbW9kZXNl dChtb2Rlc2V0LCAmZmJfaGVscGVyLT5jbGllbnQpIHsKKwkJY3J0YyA9IG1vZGVzZXQtPmNydGM7 CiAKIAkJciA9IGNydGMtPmdhbW1hX3N0b3JlOwogCQlnID0gciArIGNydGMtPmdhbW1hX3NpemU7 CkBAIC0xNTU3LDEyICsxNTIyLDE0IEBAIGludCBkcm1fZmJfaGVscGVyX3NldGNtYXAoc3RydWN0 IGZiX2NtYXAgKmNtYXAsIHN0cnVjdCBmYl9pbmZvICppbmZvKQogCQlnb3RvIHVubG9jazsKIAl9 CiAKKwltdXRleF9sb2NrKCZmYl9oZWxwZXItPmNsaWVudC5tb2Rlc2V0X211dGV4KTsKIAlpZiAo aW5mby0+Zml4LnZpc3VhbCA9PSBGQl9WSVNVQUxfVFJVRUNPTE9SKQogCQlyZXQgPSBzZXRjbWFw X3BzZXVkb19wYWxldHRlKGNtYXAsIGluZm8pOwogCWVsc2UgaWYgKGRybV9kcnZfdXNlc19hdG9t aWNfbW9kZXNldChmYl9oZWxwZXItPmRldikpCiAJCXJldCA9IHNldGNtYXBfYXRvbWljKGNtYXAs IGluZm8pOwogCWVsc2UKIAkJcmV0ID0gc2V0Y21hcF9sZWdhY3koY21hcCwgaW5mbyk7CisJbXV0 ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmNsaWVudC5tb2Rlc2V0X211dGV4KTsKIAogCWRybV9tYXN0 ZXJfaW50ZXJuYWxfcmVsZWFzZShkZXYpOwogdW5sb2NrOgpAQCAtMTU4Niw3ICsxNTUzLDYgQEAg aW50IGRybV9mYl9oZWxwZXJfaW9jdGwoc3RydWN0IGZiX2luZm8gKmluZm8sIHVuc2lnbmVkIGlu dCBjbWQsCiB7CiAJc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciA9IGluZm8tPnBhcjsK IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZmJfaGVscGVyLT5kZXY7Ci0Jc3RydWN0IGRybV9t b2RlX3NldCAqbW9kZV9zZXQ7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwogCWludCByZXQgPSAw OwogCkBAIC0xNjE0LDggKzE1ODAsNyBAQCBpbnQgZHJtX2ZiX2hlbHBlcl9pb2N0bChzdHJ1Y3Qg ZmJfaW5mbyAqaW5mbywgdW5zaWduZWQgaW50IGNtZCwKIAkJICogbWFrZS4gSWYgd2UncmUgbm90 IHNtYXJ0IGVub3VnaCBoZXJlLCBvbmUgc2hvdWxkCiAJCSAqIGp1c3QgY29uc2lkZXIgc3dpdGNo IHRoZSB1c2Vyc3BhY2UgdG8gS01TLgogCQkgKi8KLQkJbW9kZV9zZXQgPSAmZmJfaGVscGVyLT5j cnRjX2luZm9bMF0ubW9kZV9zZXQ7Ci0JCWNydGMgPSBtb2RlX3NldC0+Y3J0YzsKKwkJY3J0YyA9 IGZiX2hlbHBlci0+Y2xpZW50Lm1vZGVzZXRzWzBdLmNydGM7CiAKIAkJLyoKIAkJICogT25seSB3 YWl0IGZvciBhIHZibGFuayBldmVudCBpZiB0aGUgQ1JUQyBpcwpAQCAtMTgxMiwxNiArMTc3Nywx NCBAQCBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfc2V0X3Bhcik7CiAKIHN0YXRpYyB2b2lk IHBhbl9zZXQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwgaW50IHgsIGludCB5KQog ewotCWludCBpOwotCi0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsr KSB7Ci0JCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVfc2V0OwotCi0JCW1vZGVfc2V0ID0gJmZi X2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVfc2V0OworCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1v ZGVfc2V0OwogCisJbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5jbGllbnQubW9kZXNldF9tdXRleCk7 CisJZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVfc2V0LCAmZmJfaGVscGVyLT5jbGll bnQpIHsKIAkJbW9kZV9zZXQtPnggPSB4OwogCQltb2RlX3NldC0+eSA9IHk7CiAJfQorCW11dGV4 X3VubG9jaygmZmJfaGVscGVyLT5jbGllbnQubW9kZXNldF9tdXRleCk7CiB9CiAKIHN0YXRpYyBp bnQgcGFuX2Rpc3BsYXlfYXRvbWljKHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFyLApAQCAt MTgzMiw3ICsxNzk1LDcgQEAgc3RhdGljIGludCBwYW5fZGlzcGxheV9hdG9taWMoc3RydWN0IGZi X3Zhcl9zY3JlZW5pbmZvICp2YXIsCiAKIAlwYW5fc2V0KGZiX2hlbHBlciwgdmFyLT54b2Zmc2V0 LCB2YXItPnlvZmZzZXQpOwogCi0JcmV0ID0gcmVzdG9yZV9mYmRldl9tb2RlX2F0b21pYyhmYl9o ZWxwZXIsIHRydWUpOworCXJldCA9IHJlc3RvcmVfZmJkZXZfbW9kZV9mb3JjZShmYl9oZWxwZXIp OwogCWlmICghcmV0KSB7CiAJCWluZm8tPnZhci54b2Zmc2V0ID0gdmFyLT54b2Zmc2V0OwogCQlp bmZvLT52YXIueW9mZnNldCA9IHZhci0+eW9mZnNldDsKQEAgLTE4NDYsMTQgKzE4MDksMTMgQEAg c3RhdGljIGludCBwYW5fZGlzcGxheV9sZWdhY3koc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2 YXIsCiAJCQkgICAgICBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKIHsKIAlzdHJ1Y3QgZHJtX2ZiX2hl bHBlciAqZmJfaGVscGVyID0gaW5mby0+cGFyOworCXN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xp ZW50ID0gJmZiX2hlbHBlci0+Y2xpZW50OwogCXN0cnVjdCBkcm1fbW9kZV9zZXQgKm1vZGVzZXQ7 CiAJaW50IHJldCA9IDA7Ci0JaW50IGk7CiAKIAlkcm1fbW9kZXNldF9sb2NrX2FsbChmYl9oZWxw ZXItPmRldik7Ci0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsrKSB7 Ci0JCW1vZGVzZXQgPSAmZmJfaGVscGVyLT5jcnRjX2luZm9baV0ubW9kZV9zZXQ7Ci0KKwltdXRl eF9sb2NrKCZjbGllbnQtPm1vZGVzZXRfbXV0ZXgpOworCWRybV9jbGllbnRfZm9yX2VhY2hfbW9k ZXNldChtb2Rlc2V0LCBjbGllbnQpIHsKIAkJbW9kZXNldC0+eCA9IHZhci0+eG9mZnNldDsKIAkJ bW9kZXNldC0+eSA9IHZhci0+eW9mZnNldDsKIApAQCAtMTg2NSw2ICsxODI3LDcgQEAgc3RhdGlj IGludCBwYW5fZGlzcGxheV9sZWdhY3koc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIsCiAJ CQl9CiAJCX0KIAl9CisJbXV0ZXhfdW5sb2NrKCZjbGllbnQtPm1vZGVzZXRfbXV0ZXgpOwogCWRy bV9tb2Rlc2V0X3VubG9ja19hbGwoZmJfaGVscGVyLT5kZXYpOwogCiAJcmV0dXJuIHJldDsKQEAg LTE5MTEsMTAgKzE4NzQsMTIgQEAgRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX3Bhbl9kaXNw bGF5KTsKIHN0YXRpYyBpbnQgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfZmJfcHJvYmUoc3RydWN0IGRy bV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAkJCQkJIGludCBwcmVmZXJyZWRfYnBwKQogeworCXN0 cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50ID0gJmZiX2hlbHBlci0+Y2xpZW50OwogCWludCBy ZXQgPSAwOwogCWludCBjcnRjX2NvdW50ID0gMDsKIAlpbnQgaTsKIAlzdHJ1Y3QgZHJtX2ZiX2hl bHBlcl9zdXJmYWNlX3NpemUgc2l6ZXM7CisJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZV9zZXQ7 CiAJaW50IGJlc3RfZGVwdGggPSAwOwogCiAJbWVtc2V0KCZzaXplcywgMCwgc2l6ZW9mKHN0cnVj dCBkcm1fZmJfaGVscGVyX3N1cmZhY2Vfc2l6ZSkpOwpAQCAtMTk2NSwxMyArMTkzMCwxMyBAQCBz dGF0aWMgaW50IGRybV9mYl9oZWxwZXJfc2luZ2xlX2ZiX3Byb2JlKHN0cnVjdCBkcm1fZmJfaGVs cGVyICpmYl9oZWxwZXIsCiAJICogc3VwcG9ydHMgUkdCQTU1NTEgKDE2IGJwcCwgZGVwdGggMTUp IGJ1dCBub3QgUkdCNTY1ICgxNiBicHAsIGRlcHRoCiAJICogMTYpIHdlIG5lZWQgdG8gc2NhbGUg ZG93biB0aGUgZGVwdGggb2YgdGhlIHNpemVzIHdlIHJlcXVlc3QuCiAJICovCi0JZm9yIChpID0g MDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgaSsrKSB7Ci0JCXN0cnVjdCBkcm1fbW9kZV9z ZXQgKm1vZGVfc2V0ID0gJmZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVfc2V0OworCW11dGV4 X2xvY2soJmNsaWVudC0+bW9kZXNldF9tdXRleCk7CisJZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rl c2V0KG1vZGVfc2V0LCBjbGllbnQpIHsKIAkJc3RydWN0IGRybV9jcnRjICpjcnRjID0gbW9kZV9z ZXQtPmNydGM7CiAJCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gY3J0Yy0+cHJpbWFyeTsKIAkJ aW50IGo7CiAKLQkJRFJNX0RFQlVHKCJ0ZXN0IENSVEMgJWQgcHJpbWFyeSBwbGFuZVxuIiwgaSk7 CisJCURSTV9ERUJVRygidGVzdCBDUlRDICV1IHByaW1hcnkgcGxhbmVcbiIsIGRybV9jcnRjX2lu ZGV4KGNydGMpKTsKIAogCQlmb3IgKGogPSAwOyBqIDwgcGxhbmUtPmZvcm1hdF9jb3VudDsgaisr KSB7CiAJCQljb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICpmbXQ7CkBAIC0yMDExLDkgKzE5 NzYsOCBAQCBzdGF0aWMgaW50IGRybV9mYl9oZWxwZXJfc2luZ2xlX2ZiX3Byb2JlKHN0cnVjdCBk cm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAKIAkvKiBmaXJzdCB1cCBnZXQgYSBjb3VudCBvZiBj cnRjcyBub3cgaW4gdXNlIGFuZCBuZXcgbWluL21heGVzIHdpZHRoL2hlaWdodHMgKi8KIAljcnRj X2NvdW50ID0gMDsKLQlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jcnRjX2NvdW50OyBpKysp IHsKKwlkcm1fY2xpZW50X2Zvcl9lYWNoX21vZGVzZXQobW9kZV9zZXQsIGNsaWVudCkgewogCQlz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqZGVzaXJlZF9tb2RlOwotCQlzdHJ1Y3QgZHJtX21vZGVf c2V0ICptb2RlX3NldDsKIAkJaW50IHgsIHksIGo7CiAJCS8qIGluIGNhc2Ugb2YgdGlsZSBncm91 cCwgYXJlIHdlIHRoZSBsYXN0IHRpbGUgdmVydCBvciBob3Jpej8KIAkJICogSWYgbm8gdGlsZSBn cm91cCB5b3UgYXJlIGFsd2F5cyB0aGUgbGFzdCBvbmUgYm90aCB2ZXJ0aWNhbGx5CkBAIC0yMDIx LDcgKzE5ODUsNiBAQCBzdGF0aWMgaW50IGRybV9mYl9oZWxwZXJfc2luZ2xlX2ZiX3Byb2JlKHN0 cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCSAqLwogCQlib29sIGxhc3R2ID0gdHJ1 ZSwgbGFzdGggPSB0cnVlOwogCi0JCW1vZGVfc2V0ID0gJmZiX2hlbHBlci0+Y3J0Y19pbmZvW2ld Lm1vZGVfc2V0OwogCQlkZXNpcmVkX21vZGUgPSBtb2RlX3NldC0+bW9kZTsKIAogCQlpZiAoIWRl c2lyZWRfbW9kZSkKQEAgLTIwNTEsNiArMjAxNCw3IEBAIHN0YXRpYyBpbnQgZHJtX2ZiX2hlbHBl cl9zaW5nbGVfZmJfcHJvYmUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAkJaWYg KGxhc3R2KQogCQkJc2l6ZXMuZmJfaGVpZ2h0ID0gbWluX3QodTMyLCBkZXNpcmVkX21vZGUtPnZk aXNwbGF5ICsgeSwgc2l6ZXMuZmJfaGVpZ2h0KTsKIAl9CisJbXV0ZXhfdW5sb2NrKCZjbGllbnQt Pm1vZGVzZXRfbXV0ZXgpOwogCiAJaWYgKGNydGNfY291bnQgPT0gMCB8fCBzaXplcy5mYl93aWR0 aCA9PSAtMSB8fCBzaXplcy5mYl9oZWlnaHQgPT0gLTEpIHsKIAkJRFJNX0lORk8oIkNhbm5vdCBm aW5kIGFueSBjcnRjIG9yIHNpemVzXG4iKTsKQEAgLTIyODIsNyArMjI0Niw3IEBAIHN0YXRpYyBi b29sIGRybV90YXJnZXRfY2xvbmVkKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJ c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRtdF9tb2RlLCAqbW9kZTsKIAogCS8qIG9ubHkgY29u dGVtcGxhdGUgY2xvbmluZyBpbiB0aGUgc2luZ2xlIGNydGMgY2FzZSAqLwotCWlmIChmYl9oZWxw ZXItPmNydGNfY291bnQgPiAxKQorCWlmIChmYl9oZWxwZXItPmRldi0+bW9kZV9jb25maWcubnVt X2NydGMgPiAxKQogCQlyZXR1cm4gZmFsc2U7CiAKIAljb3VudCA9IDA7CkBAIC0yNDcxLDE1ICsy NDM1LDE3IEBAIHN0YXRpYyBib29sIGNvbm5lY3Rvcl9oYXNfcG9zc2libGVfY3J0YyhzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogfQogCiBzdGF0aWMgaW50IGRybV9waWNrX2NydGNz KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCi0JCQkgIHN0cnVjdCBkcm1fZmJfaGVs cGVyX2NydGMgKipiZXN0X2NydGNzLAorCQkJICBzdHJ1Y3QgZHJtX2NydGMgKipiZXN0X2NydGNz LAogCQkJICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqKm1vZGVzLAogCQkJICBpbnQgbiwgaW50 IHdpZHRoLCBpbnQgaGVpZ2h0KQogewotCWludCBjLCBvOworCXN0cnVjdCBkcm1fY2xpZW50X2Rl diAqY2xpZW50ID0gJmZiX2hlbHBlci0+Y2xpZW50OwogCXN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3I7CiAJaW50IG15X3Njb3JlLCBiZXN0X3Njb3JlLCBzY29yZTsKLQlzdHJ1Y3QgZHJt X2ZiX2hlbHBlcl9jcnRjICoqY3J0Y3MsICpjcnRjOworCXN0cnVjdCBkcm1fY3J0YyAqKmNydGNz LCAqY3J0YzsKKwlzdHJ1Y3QgZHJtX21vZGVfc2V0ICptb2Rlc2V0OwogCXN0cnVjdCBkcm1fZmJf aGVscGVyX2Nvbm5lY3RvciAqZmJfaGVscGVyX2Nvbm47CisJaW50IG87CiAKIAlpZiAobiA9PSBm Yl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudCkKIAkJcmV0dXJuIDA7CkBAIC0yNDkyLDggKzI0NTgs NyBAQCBzdGF0aWMgaW50IGRybV9waWNrX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9o ZWxwZXIsCiAJaWYgKG1vZGVzW25dID09IE5VTEwpCiAJCXJldHVybiBiZXN0X3Njb3JlOwogCi0J Y3J0Y3MgPSBrY2FsbG9jKGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50LAotCQkJc2l6ZW9mKHN0 cnVjdCBkcm1fZmJfaGVscGVyX2NydGMgKiksIEdGUF9LRVJORUwpOworCWNydGNzID0ga2NhbGxv YyhmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudCwgc2l6ZW9mKCpjcnRjcyksIEdGUF9LRVJORUwp OwogCWlmICghY3J0Y3MpCiAJCXJldHVybiBiZXN0X3Njb3JlOwogCkBAIC0yNTA5LDExICsyNDc0 LDEwIEBAIHN0YXRpYyBpbnQgZHJtX3BpY2tfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZi X2hlbHBlciwKIAkgKiBzZWxlY3QgYSBjcnRjIGZvciB0aGlzIGNvbm5lY3RvciBhbmQgdGhlbiBh dHRlbXB0IHRvIGNvbmZpZ3VyZQogCSAqIHJlbWFpbmluZyBjb25uZWN0b3JzCiAJICovCi0JZm9y IChjID0gMDsgYyA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsgYysrKSB7Ci0JCWNydGMgPSAmZmJf aGVscGVyLT5jcnRjX2luZm9bY107CisJZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVz ZXQsIGNsaWVudCkgeworCQljcnRjID0gbW9kZXNldC0+Y3J0YzsKIAotCQlpZiAoIWNvbm5lY3Rv cl9oYXNfcG9zc2libGVfY3J0Yyhjb25uZWN0b3IsCi0JCQkJCQkgY3J0Yy0+bW9kZV9zZXQuY3J0 YykpCisJCWlmICghY29ubmVjdG9yX2hhc19wb3NzaWJsZV9jcnRjKGNvbm5lY3RvciwgY3J0Yykp CiAJCQljb250aW51ZTsKIAogCQlmb3IgKG8gPSAwOyBvIDwgbjsgbysrKQpAQCAtMjUyMiw3ICsy NDg2LDcgQEAgc3RhdGljIGludCBkcm1fcGlja19jcnRjcyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAq ZmJfaGVscGVyLAogCiAJCWlmIChvIDwgbikgewogCQkJLyogaWdub3JlIGNsb25pbmcgdW5sZXNz IG9ubHkgYSBzaW5nbGUgY3J0YyAqLwotCQkJaWYgKGZiX2hlbHBlci0+Y3J0Y19jb3VudCA+IDEp CisJCQlpZiAoZmJfaGVscGVyLT5kZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjID4gMSkKIAkJCQlj b250aW51ZTsKIAogCQkJaWYgKCFkcm1fbW9kZV9lcXVhbChtb2Rlc1tvXSwgbW9kZXNbbl0pKQpA QCAtMjUzMCwxNCArMjQ5NCwxMyBAQCBzdGF0aWMgaW50IGRybV9waWNrX2NydGNzKHN0cnVjdCBk cm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCX0KIAogCQljcnRjc1tuXSA9IGNydGM7Ci0JCW1l bWNweShjcnRjcywgYmVzdF9jcnRjcywgbiAqIHNpemVvZihzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9j cnRjICopKTsKKwkJbWVtY3B5KGNydGNzLCBiZXN0X2NydGNzLCBuICogc2l6ZW9mKCpjcnRjcykp OwogCQlzY29yZSA9IG15X3Njb3JlICsgZHJtX3BpY2tfY3J0Y3MoZmJfaGVscGVyLCBjcnRjcywg bW9kZXMsIG4gKyAxLAogCQkJCQkJICB3aWR0aCwgaGVpZ2h0KTsKIAkJaWYgKHNjb3JlID4gYmVz dF9zY29yZSkgewogCQkJYmVzdF9zY29yZSA9IHNjb3JlOwogCQkJbWVtY3B5KGJlc3RfY3J0Y3Ms IGNydGNzLAotCQkJICAgICAgIGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50ICoKLQkJCSAgICAg ICBzaXplb2Yoc3RydWN0IGRybV9mYl9oZWxwZXJfY3J0YyAqKSk7CisJCQkgICAgICAgZmJfaGVs cGVyLT5jb25uZWN0b3JfY291bnQgKiBzaXplb2YoKmNydGNzKSk7CiAJCX0KIAl9CiAKQEAgLTI1 NDUsMjEgKzI1MDgsOSBAQCBzdGF0aWMgaW50IGRybV9waWNrX2NydGNzKHN0cnVjdCBkcm1fZmJf aGVscGVyICpmYl9oZWxwZXIsCiAJcmV0dXJuIGJlc3Rfc2NvcmU7CiB9CiAKLXN0YXRpYyBzdHJ1 Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICoKLWRybV9mYl9oZWxwZXJfY3J0YyhzdHJ1Y3QgZHJtX2Zi X2hlbHBlciAqZmJfaGVscGVyLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCi17Ci0JaW50IGk7Ci0K LQlmb3IgKGkgPSAwOyBpIDwgZmJfaGVscGVyLT5jcnRjX2NvdW50OyBpKyspCi0JCWlmIChmYl9o ZWxwZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldC5jcnRjID09IGNydGMpCi0JCQlyZXR1cm4gJmZi X2hlbHBlci0+Y3J0Y19pbmZvW2ldOwotCi0JcmV0dXJuIE5VTEw7Ci19Ci0KIC8qIFRyeSB0byBy ZWFkIHRoZSBCSU9TIGRpc3BsYXkgY29uZmlndXJhdGlvbiBhbmQgdXNlIGl0IGZvciB0aGUgaW5p dGlhbCBjb25maWcgKi8KIHN0YXRpYyBib29sIGRybV9mYl9oZWxwZXJfZmlybXdhcmVfY29uZmln KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCi0JCQkJCSAgc3RydWN0IGRybV9mYl9o ZWxwZXJfY3J0YyAqKmNydGNzLAorCQkJCQkgIHN0cnVjdCBkcm1fY3J0YyAqKmNydGNzLAogCQkJ CQkgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICoqbW9kZXMsCiAJCQkJCSAgc3RydWN0IGRybV9m Yl9vZmZzZXQgKm9mZnNldHMsCiAJCQkJCSAgYm9vbCAqZW5hYmxlZCwgaW50IHdpZHRoLCBpbnQg aGVpZ2h0KQpAQCAtMjU5MSw3ICsyNTQyLDcgQEAgc3RhdGljIGJvb2wgZHJtX2ZiX2hlbHBlcl9m aXJtd2FyZV9jb25maWcoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAkJc3RydWN0 IGRybV9mYl9oZWxwZXJfY29ubmVjdG9yICpmYl9jb25uOwogCQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yOwogCQlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7Ci0JCXN0cnVjdCBk cm1fZmJfaGVscGVyX2NydGMgKm5ld19jcnRjOworCQlzdHJ1Y3QgZHJtX2NydGMgKm5ld19jcnRj OwogCiAJCWZiX2Nvbm4gPSBmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2ldOwogCQljb25uZWN0 b3IgPSBmYl9jb25uLT5jb25uZWN0b3I7CkBAIC0yNjM0LDcgKzI1ODUsNyBAQCBzdGF0aWMgYm9v bCBkcm1fZmJfaGVscGVyX2Zpcm13YXJlX2NvbmZpZyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJf aGVscGVyLAogCiAJCW51bV9jb25uZWN0b3JzX2VuYWJsZWQrKzsKIAotCQluZXdfY3J0YyA9IGRy bV9mYl9oZWxwZXJfY3J0YyhmYl9oZWxwZXIsIGNvbm5lY3Rvci0+c3RhdGUtPmNydGMpOworCQlu ZXdfY3J0YyA9IGNvbm5lY3Rvci0+c3RhdGUtPmNydGM7CiAKIAkJLyoKIAkJICogTWFrZSBzdXJl IHdlJ3JlIG5vdCB0cnlpbmcgdG8gZHJpdmUgbXVsdGlwbGUgY29ubmVjdG9ycwpAQCAtMjczNiwx MCArMjY4NywxMSBAQCBzdGF0aWMgYm9vbCBkcm1fZmJfaGVscGVyX2Zpcm13YXJlX2NvbmZpZyhz dHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogc3RhdGljIHZvaWQgZHJtX3NldHVwX2Ny dGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCiAJCQkgICAgdTMyIHdpZHRoLCB1 MzIgaGVpZ2h0KQogeworCXN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50ID0gJmZiX2hlbHBl ci0+Y2xpZW50OwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9oZWxwZXItPmRldjsKLQlz dHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICoqY3J0Y3M7CiAJc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKiptb2RlczsKIAlzdHJ1Y3QgZHJtX2ZiX29mZnNldCAqb2Zmc2V0czsKKwlzdHJ1Y3QgZHJt X2NydGMgKipjcnRjczsKIAlib29sICplbmFibGVkOwogCWludCBpOwogCkBAIC0yNzQ3LDggKzI2 OTksNyBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIg KmZiX2hlbHBlciwKIAkvKiBwcmV2ZW50IGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uIG9mIGNvbm5l Y3Rvcl9jb3VudCBieSBob3RwbHVnICovCiAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZmJfaGVscGVy LT5sb2NrKTsKIAotCWNydGNzID0ga2NhbGxvYyhmYl9oZWxwZXItPmNvbm5lY3Rvcl9jb3VudCwK LQkJCXNpemVvZihzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICopLCBHRlBfS0VSTkVMKTsKKwlj cnRjcyA9IGtjYWxsb2MoZmJfaGVscGVyLT5jb25uZWN0b3JfY291bnQsIHNpemVvZigqY3J0Y3Mp LCBHRlBfS0VSTkVMKTsKIAltb2RlcyA9IGtjYWxsb2MoZmJfaGVscGVyLT5jb25uZWN0b3JfY291 bnQsCiAJCQlzaXplb2Yoc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKiksIEdGUF9LRVJORUwpOwog CW9mZnNldHMgPSBrY2FsbG9jKGZiX2hlbHBlci0+Y29ubmVjdG9yX2NvdW50LApAQCAtMjc2MCw2 ICsyNzExLDggQEAgc3RhdGljIHZvaWQgZHJtX3NldHVwX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVs cGVyICpmYl9oZWxwZXIsCiAJCWdvdG8gb3V0OwogCX0KIAorCW11dGV4X2xvY2soJmNsaWVudC0+ bW9kZXNldF9tdXRleCk7CisKIAltdXRleF9sb2NrKCZmYl9oZWxwZXItPmRldi0+bW9kZV9jb25m aWcubXV0ZXgpOwogCWlmIChkcm1fZmJfaGVscGVyX3Byb2JlX2Nvbm5lY3Rvcl9tb2RlcyhmYl9o ZWxwZXIsIHdpZHRoLCBoZWlnaHQpID09IDApCiAJCURSTV9ERUJVR19LTVMoIk5vIGNvbm5lY3Rv cnMgcmVwb3J0ZWQgY29ubmVjdGVkIHdpdGggbW9kZXNcbiIpOwpAQCAtMjc4NCwyNCArMjczNywy NCBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZi X2hlbHBlciwKIAl9CiAJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmRldi0+bW9kZV9jb25maWcu bXV0ZXgpOwogCi0JLyogbmVlZCB0byBzZXQgdGhlIG1vZGVzZXRzIHVwIGhlcmUgZm9yIHVzZSBs YXRlciAqLwotCS8qIGZpbGwgb3V0IHRoZSBjb25uZWN0b3I8LT5jcnRjIG1hcHBpbmdzIGludG8g dGhlIG1vZGVzZXRzICovCi0JZm9yIChpID0gMDsgaSA8IGZiX2hlbHBlci0+Y3J0Y19jb3VudDsg aSsrKQotCQlkcm1fZmJfaGVscGVyX21vZGVzZXRfcmVsZWFzZShmYl9oZWxwZXIsCi0JCQkJCSAg ICAgICZmYl9oZWxwZXItPmNydGNfaW5mb1tpXS5tb2RlX3NldCk7CisJZHJtX2NsaWVudF9tb2Rl c2V0X3JlbGVhc2UoY2xpZW50KTsKIAogCWRybV9mYl9oZWxwZXJfZm9yX2VhY2hfY29ubmVjdG9y KGZiX2hlbHBlciwgaSkgewogCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9IG1vZGVz W2ldOwotCQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jcnRjICpmYl9jcnRjID0gY3J0Y3NbaV07CisJ CXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNydGNzW2ldOwogCQlzdHJ1Y3QgZHJtX2ZiX29mZnNl dCAqb2Zmc2V0ID0gJm9mZnNldHNbaV07CiAKLQkJaWYgKG1vZGUgJiYgZmJfY3J0YykgewotCQkJ c3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldCA9ICZmYl9jcnRjLT5tb2RlX3NldDsKKwkJaWYg KG1vZGUgJiYgY3J0YykgeworCQkJc3RydWN0IGRybV9tb2RlX3NldCAqbW9kZXNldCA9IGRybV9j bGllbnRfZmluZF9tb2Rlc2V0KGNsaWVudCwgY3J0Yyk7CiAJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yID0KIAkJCQlmYl9oZWxwZXItPmNvbm5lY3Rvcl9pbmZvW2ldLT5jb25uZWN0 b3I7CiAKIAkJCURSTV9ERUJVR19LTVMoImRlc2lyZWQgbW9kZSAlcyBzZXQgb24gY3J0YyAlZCAo JWQsJWQpXG4iLAotCQkJCSAgICAgIG1vZGUtPm5hbWUsIGZiX2NydGMtPm1vZGVfc2V0LmNydGMt PmJhc2UuaWQsIG9mZnNldC0+eCwgb2Zmc2V0LT55KTsKKwkJCQkgICAgICBtb2RlLT5uYW1lLCBj cnRjLT5iYXNlLmlkLCBvZmZzZXQtPngsIG9mZnNldC0+eSk7CisKKwkJCWlmIChXQVJOX09OX09O Q0UobW9kZXNldC0+bnVtX2Nvbm5lY3RvcnMgPT0gRFJNX0NMSUVOVF9NQVhfQ0xPTkVEX0NPTk5F Q1RPUlMgfHwKKwkJCQkJIChkZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjID4gMSAmJiBtb2Rlc2V0 LT5udW1fY29ubmVjdG9ycyA9PSAxKSkpCisJCQkJYnJlYWs7CiAKIAkJCW1vZGVzZXQtPm1vZGUg PSBkcm1fbW9kZV9kdXBsaWNhdGUoZGV2LCBtb2RlKTsKIAkJCWRybV9jb25uZWN0b3JfZ2V0KGNv bm5lY3Rvcik7CkBAIC0yODEwLDYgKzI3NjMsOCBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0 Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKIAkJCW1vZGVzZXQtPnkgPSBvZmZz ZXQtPnk7CiAJCX0KIAl9CisKKwltdXRleF91bmxvY2soJmNsaWVudC0+bW9kZXNldF9tdXRleCk7 CiBvdXQ6CiAJa2ZyZWUoY3J0Y3MpOwogCWtmcmVlKG1vZGVzKTsKQEAgLTI4MjYsMTMgKzI3ODEs MTQgQEAgc3RhdGljIHZvaWQgZHJtX3NldHVwX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpm Yl9oZWxwZXIsCiAgKi8KIHN0YXRpYyB2b2lkIGRybV9zZXR1cF9jcnRjc19mYihzdHJ1Y3QgZHJt X2ZiX2hlbHBlciAqZmJfaGVscGVyKQogeworCXN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50 ID0gJmZiX2hlbHBlci0+Y2xpZW50OwogCXN0cnVjdCBmYl9pbmZvICppbmZvID0gZmJfaGVscGVy LT5mYmRldjsKIAl1bnNpZ25lZCBpbnQgcm90YXRpb24sIHN3X3JvdGF0aW9ucyA9IDA7CisJc3Ry dWN0IGRybV9tb2RlX3NldCAqbW9kZXNldDsKIAlpbnQgaTsKIAotCWZvciAoaSA9IDA7IGkgPCBm Yl9oZWxwZXItPmNydGNfY291bnQ7IGkrKykgewotCQlzdHJ1Y3QgZHJtX21vZGVfc2V0ICptb2Rl c2V0ID0gJmZiX2hlbHBlci0+Y3J0Y19pbmZvW2ldLm1vZGVfc2V0OwotCisJbXV0ZXhfbG9jaygm Y2xpZW50LT5tb2Rlc2V0X211dGV4KTsKKwlkcm1fY2xpZW50X2Zvcl9lYWNoX21vZGVzZXQobW9k ZXNldCwgY2xpZW50KSB7CiAJCWlmICghbW9kZXNldC0+bnVtX2Nvbm5lY3RvcnMpCiAJCQljb250 aW51ZTsKIApAQCAtMjg0NCw2ICsyODAwLDcgQEAgc3RhdGljIHZvaWQgZHJtX3NldHVwX2NydGNz X2ZiKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCiAJCWVsc2UKIAkJCXN3X3JvdGF0 aW9ucyB8PSByb3RhdGlvbjsKIAl9CisJbXV0ZXhfdW5sb2NrKCZjbGllbnQtPm1vZGVzZXRfbXV0 ZXgpOwogCiAJbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsK IAlkcm1fZmJfaGVscGVyX2Zvcl9lYWNoX2Nvbm5lY3RvcihmYl9oZWxwZXIsIGkpIHsKQEAgLTMw NjAsOCArMzAxNyw3IEBAIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9ob3RwbHVnX2V2ZW50 KTsKICAqIEBmdW5jczogZmJkZXYgaGVscGVyIGZ1bmN0aW9ucwogICogQHByZWZlcnJlZF9icHA6 IFByZWZlcnJlZCBiaXRzIHBlciBwaXhlbCBmb3IgdGhlIGRldmljZS4KICAqICAgICAgICAgICAg ICAgICBAZGV2LT5tb2RlX2NvbmZpZy5wcmVmZXJyZWRfZGVwdGggaXMgdXNlZCBpZiB0aGlzIGlz IHplcm8uCi0gKiBAbWF4X2Nvbm5fY291bnQ6IE1heGltdW0gbnVtYmVyIG9mIGNvbm5lY3RvcnMu Ci0gKiAgICAgICAgICAgICAgICAgIEBkZXYtPm1vZGVfY29uZmlnLm51bV9jb25uZWN0b3IgaXMg dXNlZCBpZiB0aGlzIGlzIHplcm8uCisgKiBAbWF4X2Nvbm5fY291bnQ6IE1heGltdW0gbnVtYmVy IG9mIGNvbm5lY3RvcnMgKG5vdCB1c2VkKQogICoKICAqIFRoaXMgZnVuY3Rpb24gc2V0cyB1cCBm YmRldiBlbXVsYXRpb24gYW5kIHJlZ2lzdGVycyBmYmRldiBmb3IgYWNjZXNzIGJ5CiAgKiB1c2Vy c3BhY2UuIElmIGFsbCBjb25uZWN0b3JzIGFyZSBkaXNjb25uZWN0ZWQsIHNldHVwIGlzIGRlZmVy cmVkIHRvIHRoZSBuZXh0CkBAIC0zMDg5LDE2ICszMDQ1LDkgQEAgaW50IGRybV9mYl9oZWxwZXJf ZmJkZXZfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAoIXByZWZlcnJlZF9icHAp CiAJCXByZWZlcnJlZF9icHAgPSAzMjsKIAotCWlmICghbWF4X2Nvbm5fY291bnQpCi0JCW1heF9j b25uX2NvdW50ID0gZGV2LT5tb2RlX2NvbmZpZy5udW1fY29ubmVjdG9yOwotCWlmICghbWF4X2Nv bm5fY291bnQpIHsKLQkJRFJNX0RFVl9FUlJPUihkZXYtPmRldiwgImZiZGV2OiBObyBjb25uZWN0 b3JzXG4iKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCiAJZHJtX2ZiX2hlbHBlcl9wcmVwYXJl KGRldiwgZmJfaGVscGVyLCBmdW5jcyk7CiAKLQlyZXQgPSBkcm1fZmJfaGVscGVyX2luaXQoZGV2 LCBmYl9oZWxwZXIsIG1heF9jb25uX2NvdW50KTsKKwlyZXQgPSBkcm1fZmJfaGVscGVyX2luaXQo ZGV2LCBmYl9oZWxwZXIsIDApOwogCWlmIChyZXQgPCAwKSB7CiAJCURSTV9ERVZfRVJST1IoZGV2 LT5kZXYsICJmYmRldjogRmFpbGVkIHRvIGluaXRpYWxpemUgKHJldD0lZClcbiIsIHJldCk7CiAJ CXJldHVybiByZXQ7CkBAIC0zNDExLDcgKzMzNjAsNyBAQCBzdGF0aWMgaW50IGRybV9mYmRldl9j bGllbnRfaG90cGx1ZyhzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCkKIAogCWRybV9mYl9o ZWxwZXJfcHJlcGFyZShkZXYsIGZiX2hlbHBlciwgJmRybV9mYl9oZWxwZXJfZ2VuZXJpY19mdW5j cyk7CiAKLQlyZXQgPSBkcm1fZmJfaGVscGVyX2luaXQoZGV2LCBmYl9oZWxwZXIsIGRldi0+bW9k ZV9jb25maWcubnVtX2Nvbm5lY3Rvcik7CisJcmV0ID0gZHJtX2ZiX2hlbHBlcl9pbml0KGRldiwg ZmJfaGVscGVyLCAwKTsKIAlpZiAocmV0KQogCQlnb3RvIGVycjsKIApkaWZmIC0tZ2l0IGEvaW5j bHVkZS9kcm0vZHJtX2NsaWVudC5oIGIvaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oCmluZGV4IDhi NTUyYjFhNmNlOS4uODU4YzhiZTcwODcwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fY2xp ZW50LmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oCkBAIC0zLDggKzMsMTEgQEAKICNp Zm5kZWYgX0RSTV9DTElFTlRfSF8KICNkZWZpbmUgX0RSTV9DTElFTlRfSF8KIAorI2luY2x1ZGUg PGxpbnV4L211dGV4Lmg+CiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KIAorI2luY2x1ZGUgPGRy bS9kcm1fY3J0Yy5oPgorCiBzdHJ1Y3QgZHJtX2NsaWVudF9kZXY7CiBzdHJ1Y3QgZHJtX2Rldmlj ZTsKIHN0cnVjdCBkcm1fZmlsZTsKQEAgLTEzLDYgKzE2LDggQEAgc3RydWN0IGRybV9nZW1fb2Jq ZWN0Owogc3RydWN0IGRybV9taW5vcjsKIHN0cnVjdCBtb2R1bGU7CiAKKyNkZWZpbmUgRFJNX0NM SUVOVF9NQVhfQ0xPTkVEX0NPTk5FQ1RPUlMJOAorCiAvKioKICAqIHN0cnVjdCBkcm1fY2xpZW50 X2Z1bmNzIC0gRFJNIGNsaWVudCBjYWxsYmFja3MKICAqLwpAQCAtODUsNiArOTAsMTYgQEAgc3Ry dWN0IGRybV9jbGllbnRfZGV2IHsKIAkgKiBAZmlsZTogRFJNIGZpbGUKIAkgKi8KIAlzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGU7CisKKwkvKioKKwkgKiBAbW9kZXNldF9tdXRleDogUHJvdGVjdHMgQG1v ZGVzZXRzLgorCSAqLworCXN0cnVjdCBtdXRleCBtb2Rlc2V0X211dGV4OworCisJLyoqCisJICog QG1vZGVzZXRzOiBDUlRDIGNvbmZpZ3VyYXRpb25zCisJICovCisJc3RydWN0IGRybV9tb2RlX3Nl dCAqbW9kZXNldHM7CiB9OwogCiBpbnQgZHJtX2NsaWVudF9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50LApAQCAtMTM1LDYgKzE1MCwxOSBA QCBzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKgogZHJtX2NsaWVudF9mcmFtZWJ1ZmZlcl9jcmVh dGUoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHUzMiB3aWR0aCwgdTMyIGhlaWdodCwg dTMyIGZvcm1hdCk7CiB2b2lkIGRybV9jbGllbnRfZnJhbWVidWZmZXJfZGVsZXRlKHN0cnVjdCBk cm1fY2xpZW50X2J1ZmZlciAqYnVmZmVyKTsKIAoraW50IGRybV9jbGllbnRfbW9kZXNldF9jcmVh dGUoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQpOwordm9pZCBkcm1fY2xpZW50X21vZGVz ZXRfZnJlZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCk7Cit2b2lkIGRybV9jbGllbnRf bW9kZXNldF9yZWxlYXNlKHN0cnVjdCBkcm1fY2xpZW50X2RldiAqY2xpZW50KTsKK3N0cnVjdCBk cm1fbW9kZV9zZXQgKmRybV9jbGllbnRfZmluZF9tb2Rlc2V0KHN0cnVjdCBkcm1fY2xpZW50X2Rl diAqY2xpZW50LCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOworCisvKioKKyAqIGRybV9jbGllbnRf Zm9yX2VhY2hfbW9kZXNldCgpIC0gSXRlcmF0ZSBvdmVyIGNsaWVudCBtb2Rlc2V0cworICogQG1v ZGVzZXQ6ICZkcm1fbW9kZV9zZXQgbG9vcCBjdXJzb3IKKyAqIEBjbGllbnQ6IERSTSBjbGllbnQK KyAqLworI2RlZmluZSBkcm1fY2xpZW50X2Zvcl9lYWNoX21vZGVzZXQobW9kZXNldCwgY2xpZW50 KSBcCisJZm9yIChtb2Rlc2V0ID0gKGNsaWVudCktPm1vZGVzZXRzOyBtb2Rlc2V0ICYmIG1vZGVz ZXQtPmNydGM7IG1vZGVzZXQrKykKKwogaW50IGRybV9jbGllbnRfZGVidWdmc19pbml0KHN0cnVj dCBkcm1fbWlub3IgKm1pbm9yKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9k cm1fZmJfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmgKaW5kZXggMGQ2ZDIz YTE1YjQyLi44ZDBkZGVhNzRhOWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxw ZXIuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmgKQEAgLTQ2LDEwICs0Niw2IEBA IHN0cnVjdCBkcm1fZmJfb2Zmc2V0IHsKIAlpbnQgeCwgeTsKIH07CiAKLXN0cnVjdCBkcm1fZmJf aGVscGVyX2NydGMgewotCXN0cnVjdCBkcm1fbW9kZV9zZXQgbW9kZV9zZXQ7Ci19OwotCiAvKioK ICAqIHN0cnVjdCBkcm1fZmJfaGVscGVyX3N1cmZhY2Vfc2l6ZSAtIGRlc2NyaWJlcyBmYmRldiBz aXplIGFuZCBzY2Fub3V0IHN1cmZhY2Ugc2l6ZQogICogQGZiX3dpZHRoOiBmYmRldiB3aWR0aApA QCAtMTA4LDggKzEwNCw2IEBAIHN0cnVjdCBkcm1fZmJfaGVscGVyX2Nvbm5lY3RvciB7CiAgKiBz dHJ1Y3QgZHJtX2ZiX2hlbHBlciAtIG1haW4gc3RydWN0dXJlIHRvIGVtdWxhdGUgZmJkZXYgb24g dG9wIG9mIEtNUwogICogQGZiOiBTY2Fub3V0IGZyYW1lYnVmZmVyIG9iamVjdAogICogQGRldjog RFJNIGRldmljZQotICogQGNydGNfY291bnQ6IG51bWJlciBvZiBwb3NzaWJsZSBDUlRDcwotICog QGNydGNfaW5mbzogcGVyLUNSVEMgaGVscGVyIHN0YXRlIChtb2RlLCB4L3kgb2Zmc2V0LCBldGMp CiAgKiBAY29ubmVjdG9yX2NvdW50OiBudW1iZXIgb2YgY29ubmVjdGVkIGNvbm5lY3RvcnMKICAq IEBjb25uZWN0b3JfaW5mb19hbGxvY19jb3VudDogc2l6ZSBvZiBjb25uZWN0b3JfaW5mbwogICog QGZ1bmNzOiBkcml2ZXIgY2FsbGJhY2tzIGZvciBmYiBoZWxwZXIKQEAgLTE0Myw4ICsxMzcsNiBA QCBzdHJ1Y3QgZHJtX2ZiX2hlbHBlciB7CiAKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsK IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2OwotCWludCBjcnRjX2NvdW50OwotCXN0cnVjdCBkcm1f ZmJfaGVscGVyX2NydGMgKmNydGNfaW5mbzsKIAlpbnQgY29ubmVjdG9yX2NvdW50OwogCWludCBj b25uZWN0b3JfaW5mb19hbGxvY19jb3VudDsKIAkvKioKLS0gCjIuMjAuMQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4