From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: [PATCH 02/28] vmwgfx: Rework device initialization Date: Wed, 12 Aug 2015 22:42:51 -0700 Message-ID: <1439444597-4664-3-git-send-email-thellstrom@vmware.com> References: <1439444597-4664-1-git-send-email-thellstrom@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx6.bahnhof.se (mx6.bahnhof.se [213.80.101.16]) by gabe.freedesktop.org (Postfix) with ESMTPS id 38A0D6EBE4 for ; Wed, 12 Aug 2015 23:00:39 -0700 (PDT) Received: from localhost (mf.bahnhof.se [213.80.101.20]) by mx6-reinject (Postfix) with ESMTP id 37AC54412B for ; Thu, 13 Aug 2015 07:43:33 +0200 (CEST) Received: from mf3.bahnhof.se ([127.0.0.1]) by localhost (mf3.bahnhof.se [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id AYdvVbA5vcvy for ; Thu, 13 Aug 2015 07:43:25 +0200 (CEST) Received: from mail.shipmail.org (h-5-150-198-217.na.cust.bahnhof.se [5.150.198.217]) by mf3.bahnhof.se (Postfix) with ESMTP id 580AD3E8CE6 for ; Thu, 13 Aug 2015 07:43:23 +0200 (CEST) Received: from mail.shipmail.org (lin0.kontor.shipmail.org [127.0.0.1]) by mail.shipmail.org (Postfix) with ESMTP id C72023DC002 for ; Thu, 13 Aug 2015 07:43:22 +0200 (CEST) Received: from localhost.localdomain (lin0.kontor.shipmail.org [127.0.0.1]) by mail.shipmail.org (Postfix) with ESMTP id 9CDAC3DC004 for ; Thu, 13 Aug 2015 07:43:22 +0200 (CEST) In-Reply-To: <1439444597-4664-1-git-send-email-thellstrom@vmware.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VGhpcyBjb21taXQgcmV3b3JrcyBkZXZpY2UgaW5pdGlhbGl6YXRpb24gc28gdGhhdCB3ZSBhbHdh eXMgZW5hYmxlIHRoZQpGSUZPIGF0IGRyaXZlciBsb2FkLCBkZWZlcnJpbmcgU1ZHQSBlbmFibGUg dW50aWwgZWl0aGVyIGZpcnN0IG1vZGVzZXQKb3IgZmJkZXYgZW5hYmxlLgpUaGlzIHNob3VsZCBh bHdheXMgbGVhdmUgdGhlIGZpZm8gcHJvcGVybHkgZW5hYmxlZCBmb3IgcmVuZGVyLSBhbmQKY29u dHJvbCBub2Rlcy4KSW4gYWRkaXRpb24sCiopIFdlIGRpc2FibGUgdGhlIHVzZSBvZiBWUkFNIHdo ZW4gU1ZHQSBpcyBub3QgZW5hYmxlZC4KKikgV2Ugc2ltcGxpZnkgUE0gc3VwcG9ydCBzbyB0aGF0 IHdlIG9ubHkgdGhyb3cgb3V0IHJlc291cmNlcyBvbiBoaWJlcm5hdGUsCm5vdCBvbiBzdXNwZW5k LCBzaW5jZSB0aGUgZGV2aWNlIGtlZXBzIGl0cyBzdGF0ZSBvbiBzdXNwZW5kLgoKU2lnbmVkLW9m Zi1ieTogVGhvbWFzIEhlbGxzdHJvbSA8dGhlbGxzdHJvbUB2bXdhcmUuY29tPgpSZXZpZXdlZC1i eTogU2luY2xhaXIgWWVoIDxzeWVoQHZtd2FyZS5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3Zt d2dmeC92bXdnZnhfY29udGV4dC5jIHwgICA4ICstCiBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Zt d2dmeF9kcnYuYyAgICAgfCAzMzcgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIGRy aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5oICAgICB8ICAxOSArLQogZHJpdmVycy9n cHUvZHJtL3Ztd2dmeC92bXdnZnhfZmIuYyAgICAgIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS92 bXdnZngvdm13Z2Z4X2ZpZm8uYyAgICB8ICAxMiArLQogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92 bXdnZnhfbGR1LmMgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X21v Yi5jICAgICB8ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc2Nybi5jICAg IHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3NoYWRlci5jICB8ICAgNCAr LQogZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc3VyZmFjZS5jIHwgIDEyICstCiAxMCBm aWxlcyBjaGFuZ2VkLCAyMzAgaW5zZXJ0aW9ucygrKSwgMTc0IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2NvbnRleHQuYyBiL2RyaXZlcnMv Z3B1L2RybS92bXdnZngvdm13Z2Z4X2NvbnRleHQuYwppbmRleCA1YWM5Mjg3Li5hOGUzNzBhIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9jb250ZXh0LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfY29udGV4dC5jCkBAIC0xNDAsNyArMTQwLDcg QEAgc3RhdGljIHZvaWQgdm13X2h3X2NvbnRleHRfZGVzdHJveShzdHJ1Y3Qgdm13X3Jlc291cmNl ICpyZXMpCiAJY21kLT5ib2R5LmNpZCA9IGNwdV90b19sZTMyKHJlcy0+aWQpOwogCiAJdm13X2Zp Zm9fY29tbWl0KGRldl9wcml2LCBzaXplb2YoKmNtZCkpOwotCXZtd18zZF9yZXNvdXJjZV9kZWMo ZGV2X3ByaXYsIGZhbHNlKTsKKwl2bXdfZmlmb19yZXNvdXJjZV9kZWMoZGV2X3ByaXYpOwogfQog CiBzdGF0aWMgaW50IHZtd19nYl9jb250ZXh0X2luaXQoc3RydWN0IHZtd19wcml2YXRlICpkZXZf cHJpdiwKQEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgaW50IHZtd19jb250ZXh0X2luaXQoc3Ry dWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKIAljbWQtPmJvZHkuY2lkID0gY3B1X3RvX2xlMzIo cmVzLT5pZCk7CiAKIAl2bXdfZmlmb19jb21taXQoZGV2X3ByaXYsIHNpemVvZigqY21kKSk7Ci0J KHZvaWQpIHZtd18zZF9yZXNvdXJjZV9pbmMoZGV2X3ByaXYsIGZhbHNlKTsKKwl2bXdfZmlmb19y ZXNvdXJjZV9pbmMoZGV2X3ByaXYpOwogCXZtd19yZXNvdXJjZV9hY3RpdmF0ZShyZXMsIHZtd19o d19jb250ZXh0X2Rlc3Ryb3kpOwogCXJldHVybiAwOwogCkBAIC0yODEsNyArMjgxLDcgQEAgc3Rh dGljIGludCB2bXdfZ2JfY29udGV4dF9jcmVhdGUoc3RydWN0IHZtd19yZXNvdXJjZSAqcmVzKQog CWNtZC0+aGVhZGVyLnNpemUgPSBzaXplb2YoY21kLT5ib2R5KTsKIAljbWQtPmJvZHkuY2lkID0g cmVzLT5pZDsKIAl2bXdfZmlmb19jb21taXQoZGV2X3ByaXYsIHNpemVvZigqY21kKSk7Ci0JKHZv aWQpIHZtd18zZF9yZXNvdXJjZV9pbmMoZGV2X3ByaXYsIGZhbHNlKTsKKwl2bXdfZmlmb19yZXNv dXJjZV9pbmMoZGV2X3ByaXYpOwogCiAJcmV0dXJuIDA7CiAKQEAgLTQxNCw3ICs0MTQsNyBAQCBz dGF0aWMgaW50IHZtd19nYl9jb250ZXh0X2Rlc3Ryb3koc3RydWN0IHZtd19yZXNvdXJjZSAqcmVz KQogCWlmIChkZXZfcHJpdi0+cXVlcnlfY2lkID09IHJlcy0+aWQpCiAJCWRldl9wcml2LT5xdWVy eV9jaWRfdmFsaWQgPSBmYWxzZTsKIAl2bXdfcmVzb3VyY2VfcmVsZWFzZV9pZChyZXMpOwotCXZt d18zZF9yZXNvdXJjZV9kZWMoZGV2X3ByaXYsIGZhbHNlKTsKKwl2bXdfZmlmb19yZXNvdXJjZV9k ZWMoZGV2X3ByaXYpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Ry di5jCmluZGV4IDYyMGJiNWMuLmE0NzY2YWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92 bXdnZngvdm13Z2Z4X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Ry di5jCkBAIC0zMzksMjQgKzMzOSw0NyBAQCBzdGF0aWMgaW50IHZtd19kdW1teV9xdWVyeV9ib19j cmVhdGUoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1cm4gcmV0OwogfQogCi1z dGF0aWMgaW50IHZtd19yZXF1ZXN0X2RldmljZShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2 KQorLyoqCisgKiB2bXdfcmVxdWVzdF9kZXZpY2VfbGF0ZSAtIFBlcmZvcm0gbGF0ZSBkZXZpY2Ug c2V0dXAKKyAqCisgKiBAZGV2X3ByaXY6IFBvaW50ZXIgdG8gZGV2aWNlIHByaXZhdGUuCisgKgor ICogVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyBzZXR1cCBvZiBvdGFibGVzIGFuZCBlbmFibGVzIGxh cmdlIGNvbW1hbmQKKyAqIGJ1ZmZlciBzdWJtaXNzaW9uLiBUaGVzZSB0YXNrcyBhcmUgc3BsaXQg b3V0IHRvIGEgc2VwYXJhdGUgZnVuY3Rpb24KKyAqIGJlY2F1c2UgaXQgcmV2ZXJ0cyB2bXdfcmVs ZWFzZV9kZXZpY2VfZWFybHkgYW5kIGlzIGludGVuZGVkIHRvIGJlIHVzZWQKKyAqIGJ5IGFuIGVy cm9yIHBhdGggaW4gdGhlIGhpYmVybmF0aW9uIGNvZGUuCisgKi8KK3N0YXRpYyBpbnQgdm13X3Jl cXVlc3RfZGV2aWNlX2xhdGUoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdikKIHsKIAlpbnQg cmV0OwogCi0JcmV0ID0gdm13X2ZpZm9faW5pdChkZXZfcHJpdiwgJmRldl9wcml2LT5maWZvKTsK LQlpZiAodW5saWtlbHkocmV0ICE9IDApKSB7Ci0JCURSTV9FUlJPUigiVW5hYmxlIHRvIGluaXRp YWxpemUgRklGTy5cbiIpOwotCQlyZXR1cm4gcmV0OwotCX0KLQl2bXdfZmVuY2VfZmlmb191cChk ZXZfcHJpdi0+Zm1hbik7CiAJaWYgKGRldl9wcml2LT5oYXNfbW9iKSB7CiAJCXJldCA9IHZtd19v dGFibGVzX3NldHVwKGRldl9wcml2KTsKIAkJaWYgKHVubGlrZWx5KHJldCAhPSAwKSkgewogCQkJ RFJNX0VSUk9SKCJVbmFibGUgdG8gaW5pdGlhbGl6ZSAiCiAJCQkJICAiZ3Vlc3QgTWVtb3J5IE9C amVjdHMuXG4iKTsKLQkJCWdvdG8gb3V0X25vX21vYjsKKwkJCXJldHVybiByZXQ7CiAJCX0KIAl9 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB2bXdfcmVxdWVzdF9kZXZpY2Uoc3RydWN0 IHZtd19wcml2YXRlICpkZXZfcHJpdikKK3sKKwlpbnQgcmV0OworCisJcmV0ID0gdm13X2ZpZm9f aW5pdChkZXZfcHJpdiwgJmRldl9wcml2LT5maWZvKTsKKwlpZiAodW5saWtlbHkocmV0ICE9IDAp KSB7CisJCURSTV9FUlJPUigiVW5hYmxlIHRvIGluaXRpYWxpemUgRklGTy5cbiIpOworCQlyZXR1 cm4gcmV0OworCX0KKwl2bXdfZmVuY2VfZmlmb191cChkZXZfcHJpdi0+Zm1hbik7CisKKwlyZXQg PSB2bXdfcmVxdWVzdF9kZXZpY2VfbGF0ZShkZXZfcHJpdik7CisJaWYgKHJldCkKKwkJZ290byBv dXRfbm9fbW9iOworCiAJcmV0ID0gdm13X2R1bW15X3F1ZXJ5X2JvX2NyZWF0ZShkZXZfcHJpdik7 CiAJaWYgKHVubGlrZWx5KHJldCAhPSAwKSkKIAkJZ290byBvdXRfbm9fcXVlcnlfYm87CkBAIC0z NjQsMTUgKzM4NywyNSBAQCBzdGF0aWMgaW50IHZtd19yZXF1ZXN0X2RldmljZShzdHJ1Y3Qgdm13 X3ByaXZhdGUgKmRldl9wcml2KQogCXJldHVybiAwOwogCiBvdXRfbm9fcXVlcnlfYm86Ci0JaWYg KGRldl9wcml2LT5oYXNfbW9iKQorCWlmIChkZXZfcHJpdi0+aGFzX21vYikgeworCQkodm9pZCkg dHRtX2JvX2V2aWN0X21tKCZkZXZfcHJpdi0+YmRldiwgVk1XX1BMX01PQik7CiAJCXZtd19vdGFi bGVzX3Rha2Vkb3duKGRldl9wcml2KTsKKwl9CiBvdXRfbm9fbW9iOgogCXZtd19mZW5jZV9maWZv X2Rvd24oZGV2X3ByaXYtPmZtYW4pOwogCXZtd19maWZvX3JlbGVhc2UoZGV2X3ByaXYsICZkZXZf cHJpdi0+Zmlmbyk7CiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQgdm13X3JlbGVhc2Vf ZGV2aWNlKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYpCisvKioKKyAqIHZtd19yZWxlYXNl X2RldmljZV9lYXJseSAtIEVhcmx5IHBhcnQgb2YgZmlmbyB0YWtlZG93bi4KKyAqCisgKiBAZGV2 X3ByaXY6IFBvaW50ZXIgdG8gZGV2aWNlIHByaXZhdGUgc3RydWN0LgorICoKKyAqIFRoaXMgaXMg dGhlIGZpcnN0IHBhcnQgb2YgY29tbWFuZCBzdWJtaXNzaW9uIHRha2Vkb3duLCB0byBiZSBjYWxs ZWQgYmVmb3JlCisgKiBidWZmZXIgbWFuYWdlbWVudCBpcyB0YWtlbiBkb3duLgorICovCitzdGF0 aWMgdm9pZCB2bXdfcmVsZWFzZV9kZXZpY2VfZWFybHkoc3RydWN0IHZtd19wcml2YXRlICpkZXZf cHJpdikKIHsKIAkvKgogCSAqIFByZXZpb3VzIGRlc3RydWN0aW9ucyBzaG91bGQndmUgcmVsZWFz ZWQKQEAgLTM4Miw2NCArNDE1LDI0IEBAIHN0YXRpYyB2b2lkIHZtd19yZWxlYXNlX2RldmljZShz dHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2KQogCUJVR19PTihkZXZfcHJpdi0+cGlubmVkX2Jv ICE9IE5VTEwpOwogCiAJdHRtX2JvX3VucmVmKCZkZXZfcHJpdi0+ZHVtbXlfcXVlcnlfYm8pOwot CWlmIChkZXZfcHJpdi0+aGFzX21vYikKKwlpZiAoZGV2X3ByaXYtPmhhc19tb2IpIHsKKwkJdHRt X2JvX2V2aWN0X21tKCZkZXZfcHJpdi0+YmRldiwgVk1XX1BMX01PQik7CiAJCXZtd19vdGFibGVz X3Rha2Vkb3duKGRldl9wcml2KTsKLQl2bXdfZmVuY2VfZmlmb19kb3duKGRldl9wcml2LT5mbWFu KTsKLQl2bXdfZmlmb19yZWxlYXNlKGRldl9wcml2LCAmZGV2X3ByaXYtPmZpZm8pOwotfQotCi0K LS8qKgotICogSW5jcmVhc2UgdGhlIDNkIHJlc291cmNlIHJlZmNvdW50LgotICogSWYgdGhlIGNv dW50IHdhcyBwcmV2b3VzbHkgemVybywgaW5pdGlhbGl6ZSB0aGUgZmlmbywgc3dpdGNoaW5nIHRv IHN2Z2EKLSAqIG1vZGUuIE5vdGUgdGhhdCB0aGUgbWFzdGVyIGhvbGRzIGEgcmVmIGFzIHdlbGws IGFuZCBtYXkgcmVxdWVzdCBhbgotICogZXhwbGljaXQgc3dpdGNoIHRvIHN2Z2EgbW9kZSBpZiBm YiBpcyBub3QgcnVubmluZywgdXNpbmcgQHVuaGlkZV9zdmdhLgotICovCi1pbnQgdm13XzNkX3Jl c291cmNlX2luYyhzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAotCQkJYm9vbCB1bmhpZGVf c3ZnYSkKLXsKLQlpbnQgcmV0ID0gMDsKLQotCW11dGV4X2xvY2soJmRldl9wcml2LT5yZWxlYXNl X211dGV4KTsKLQlpZiAodW5saWtlbHkoZGV2X3ByaXYtPm51bV8zZF9yZXNvdXJjZXMrKyA9PSAw KSkgewotCQlyZXQgPSB2bXdfcmVxdWVzdF9kZXZpY2UoZGV2X3ByaXYpOwotCQlpZiAodW5saWtl bHkocmV0ICE9IDApKQotCQkJLS1kZXZfcHJpdi0+bnVtXzNkX3Jlc291cmNlczsKLQl9IGVsc2Ug aWYgKHVuaGlkZV9zdmdhKSB7Ci0JCXZtd193cml0ZShkZXZfcHJpdiwgU1ZHQV9SRUdfRU5BQkxF LAotCQkJICB2bXdfcmVhZChkZXZfcHJpdiwgU1ZHQV9SRUdfRU5BQkxFKSAmCi0JCQkgIH5TVkdB X1JFR19FTkFCTEVfSElERSk7CiAJfQotCi0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cmVsZWFz ZV9tdXRleCk7Ci0JcmV0dXJuIHJldDsKIH0KIAogLyoqCi0gKiBEZWNyZWFzZSB0aGUgM2QgcmVz b3VyY2UgcmVmY291bnQuCi0gKiBJZiB0aGUgY291bnQgcmVhY2hlcyB6ZXJvLCBkaXNhYmxlIHRo ZSBmaWZvLCBzd2l0Y2hpbmcgdG8gdmdhIG1vZGUuCi0gKiBOb3RlIHRoYXQgdGhlIG1hc3RlciBo b2xkcyBhIHJlZmNvdW50IGFzIHdlbGwsIGFuZCBtYXkgcmVxdWVzdCBhbgotICogZXhwbGljaXQg c3dpdGNoIHRvIHZnYSBtb2RlIHdoZW4gaXQgcmVsZWFzZXMgaXRzIHJlZmNvdW50IHRvIGFjY291 bnQKLSAqIGZvciB0aGUgc2l0dWF0aW9uIG9mIGFuIFggc2VydmVyIHZ0IHN3aXRjaCB0byBWR0Eg d2l0aCAzZCByZXNvdXJjZXMKLSAqIGFjdGl2ZS4KKyAqIHZtd19yZWxlYXNlX2RldmljZV9sYXRl IC0gTGF0ZSBwYXJ0IG9mIGZpZm8gdGFrZWRvd24uCisgKgorICogQGRldl9wcml2OiBQb2ludGVy IHRvIGRldmljZSBwcml2YXRlIHN0cnVjdC4KKyAqCisgKiBUaGlzIGlzIHRoZSBsYXN0IHBhcnQg b2YgdGhlIGNvbW1hbmQgc3VibWlzc2lvbiB0YWtlZG93biwgdG8gYmUgY2FsbGVkIHdoZW4KKyAq IGNvbW1hbmQgc3VibWlzc2lvbiBpcyBubyBsb25nZXIgbmVlZGVkLiBJdCBtYXkgd2FpdCBvbiBw ZW5kaW5nIGZlbmNlcy4KICAqLwotdm9pZCB2bXdfM2RfcmVzb3VyY2VfZGVjKHN0cnVjdCB2bXdf cHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgYm9vbCBoaWRlX3N2Z2EpCitzdGF0aWMgdm9pZCB2bXdf cmVsZWFzZV9kZXZpY2VfbGF0ZShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2KQogewotCWlu dDMyX3QgbjNkOwotCi0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnJlbGVhc2VfbXV0ZXgpOwotCWlm ICh1bmxpa2VseSgtLWRldl9wcml2LT5udW1fM2RfcmVzb3VyY2VzID09IDApKQotCQl2bXdfcmVs ZWFzZV9kZXZpY2UoZGV2X3ByaXYpOwotCWVsc2UgaWYgKGhpZGVfc3ZnYSkKLQkJdm13X3dyaXRl KGRldl9wcml2LCBTVkdBX1JFR19FTkFCTEUsCi0JCQkgIHZtd19yZWFkKGRldl9wcml2LCBTVkdB X1JFR19FTkFCTEUpIHwKLQkJCSAgU1ZHQV9SRUdfRU5BQkxFX0hJREUpOwotCi0JbjNkID0gKGlu dDMyX3QpIGRldl9wcml2LT5udW1fM2RfcmVzb3VyY2VzOwotCW11dGV4X3VubG9jaygmZGV2X3By aXYtPnJlbGVhc2VfbXV0ZXgpOwotCi0JQlVHX09OKG4zZCA8IDApOworCXZtd19mZW5jZV9maWZv X2Rvd24oZGV2X3ByaXYtPmZtYW4pOworCXZtd19maWZvX3JlbGVhc2UoZGV2X3ByaXYsICZkZXZf cHJpdi0+Zmlmbyk7CiB9CiAKIC8qKgpAQCAtNjAzLDYgKzU5Niw3IEBAIHN0YXRpYyBpbnQgdm13 X2RyaXZlcl9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgY2hpcHNl dCkKIAlzcGluX2xvY2tfaW5pdCgmZGV2X3ByaXYtPmh3X2xvY2spOwogCXNwaW5fbG9ja19pbml0 KCZkZXZfcHJpdi0+d2FpdGVyX2xvY2spOwogCXNwaW5fbG9ja19pbml0KCZkZXZfcHJpdi0+Y2Fw X2xvY2spOworCXNwaW5fbG9ja19pbml0KCZkZXZfcHJpdi0+c3ZnYV9sb2NrKTsKIAogCWZvciAo aSA9IHZtd19yZXNfY29udGV4dDsgaSA8IHZtd19yZXNfbWF4OyArK2kpIHsKIAkJaWRyX2luaXQo JmRldl9wcml2LT5yZXNfaWRyW2ldKTsKQEAgLTcxNCwxNyArNzA4LDYgQEAgc3RhdGljIGludCB2 bXdfZHJpdmVyX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBjaGlw c2V0KQogCWRldl9wcml2LT5hY3RpdmVfbWFzdGVyID0gJmRldl9wcml2LT5mYmRldl9tYXN0ZXI7 CiAKIAotCXJldCA9IHR0bV9ib19kZXZpY2VfaW5pdCgmZGV2X3ByaXYtPmJkZXYsCi0JCQkJIGRl dl9wcml2LT5ib19nbG9iYWxfcmVmLnJlZi5vYmplY3QsCi0JCQkJICZ2bXdfYm9fZHJpdmVyLAot CQkJCSBkZXYtPmFub25faW5vZGUtPmlfbWFwcGluZywKLQkJCQkgVk1XR0ZYX0ZJTEVfUEFHRV9P RkZTRVQsCi0JCQkJIGZhbHNlKTsKLQlpZiAodW5saWtlbHkocmV0ICE9IDApKSB7Ci0JCURSTV9F UlJPUigiRmFpbGVkIGluaXRpYWxpemluZyBUVE0gYnVmZmVyIG9iamVjdCBkcml2ZXIuXG4iKTsK LQkJZ290byBvdXRfZXJyMTsKLQl9Ci0KIAlkZXZfcHJpdi0+bW1pb19tdHJyID0gYXJjaF9waHlz X3djX2FkZChkZXZfcHJpdi0+bW1pb19zdGFydCwKIAkJCQkJICAgICAgIGRldl9wcml2LT5tbWlv X3NpemUpOwogCkBAIC03ODcsMTMgKzc3MCwyOCBAQCBzdGF0aWMgaW50IHZtd19kcml2ZXJfbG9h ZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGNoaXBzZXQpCiAJCWdvdG8g b3V0X25vX2ZtYW47CiAJfQogCisJcmV0ID0gdHRtX2JvX2RldmljZV9pbml0KCZkZXZfcHJpdi0+ YmRldiwKKwkJCQkgZGV2X3ByaXYtPmJvX2dsb2JhbF9yZWYucmVmLm9iamVjdCwKKwkJCQkgJnZt d19ib19kcml2ZXIsCisJCQkJIGRldi0+YW5vbl9pbm9kZS0+aV9tYXBwaW5nLAorCQkJCSBWTVdH RlhfRklMRV9QQUdFX09GRlNFVCwKKwkJCQkgZmFsc2UpOworCWlmICh1bmxpa2VseShyZXQgIT0g MCkpIHsKKwkJRFJNX0VSUk9SKCJGYWlsZWQgaW5pdGlhbGl6aW5nIFRUTSBidWZmZXIgb2JqZWN0 IGRyaXZlci5cbiIpOworCQlnb3RvIG91dF9ub19iZGV2OworCX0KIAorCS8qCisJICogRW5hYmxl IFZSQU0sIGJ1dCBpbml0aWFsbHkgZG9uJ3QgdXNlIGl0IHVudGlsIFNWR0EgaXMgZW5hYmxlZCBh bmQKKwkgKiB1bmhpZGRlbi4KKwkgKi8KIAlyZXQgPSB0dG1fYm9faW5pdF9tbSgmZGV2X3ByaXYt PmJkZXYsIFRUTV9QTF9WUkFNLAogCQkJICAgICAoZGV2X3ByaXYtPnZyYW1fc2l6ZSA+PiBQQUdF X1NISUZUKSk7CiAJaWYgKHVubGlrZWx5KHJldCAhPSAwKSkgewogCQlEUk1fRVJST1IoIkZhaWxl ZCBpbml0aWFsaXppbmcgbWVtb3J5IG1hbmFnZXIgZm9yIFZSQU0uXG4iKTsKIAkJZ290byBvdXRf bm9fdnJhbTsKIAl9CisJZGV2X3ByaXYtPmJkZXYubWFuW1RUTV9QTF9WUkFNXS51c2VfdHlwZSA9 IGZhbHNlOwogCiAJZGV2X3ByaXYtPmhhc19nbXIgPSB0cnVlOwogCWlmICgoKGRldl9wcml2LT5j YXBhYmlsaXRpZXMgJiAoU1ZHQV9DQVBfR01SIHwgU1ZHQV9DQVBfR01SMikpID09IDApIHx8CkBA IC04MTQsMTggKzgxMiwxOCBAQCBzdGF0aWMgaW50IHZtd19kcml2ZXJfbG9hZChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGNoaXBzZXQpCiAJCX0KIAl9CiAKLQl2bXdfa21z X3NhdmVfdmdhKGRldl9wcml2KTsKLQotCS8qIFN0YXJ0IGttcyBhbmQgb3ZlcmxheSBzeXN0ZW1z LCBuZWVkcyBmaWZvLiAqLwogCXJldCA9IHZtd19rbXNfaW5pdChkZXZfcHJpdik7CiAJaWYgKHVu bGlrZWx5KHJldCAhPSAwKSkKIAkJZ290byBvdXRfbm9fa21zOwogCXZtd19vdmVybGF5X2luaXQo ZGV2X3ByaXYpOwogCisJcmV0ID0gdm13X3JlcXVlc3RfZGV2aWNlKGRldl9wcml2KTsKKwlpZiAo cmV0KQorCQlnb3RvIG91dF9ub19maWZvOworCiAJaWYgKGRldl9wcml2LT5lbmFibGVfZmIpIHsK LQkJcmV0ID0gdm13XzNkX3Jlc291cmNlX2luYyhkZXZfcHJpdiwgdHJ1ZSk7Ci0JCWlmICh1bmxp a2VseShyZXQgIT0gMCkpCi0JCQlnb3RvIG91dF9ub19maWZvOworCQl2bXdfZmlmb19yZXNvdXJj ZV9pbmMoZGV2X3ByaXYpOworCQl2bXdfc3ZnYV9lbmFibGUoZGV2X3ByaXYpOwogCQl2bXdfZmJf aW5pdChkZXZfcHJpdik7CiAJfQogCkBAIC04MzgsMTMgKzgzNiwxNCBAQCBvdXRfbm9fZmlmbzoK IAl2bXdfb3ZlcmxheV9jbG9zZShkZXZfcHJpdik7CiAJdm13X2ttc19jbG9zZShkZXZfcHJpdik7 CiBvdXRfbm9fa21zOgotCXZtd19rbXNfcmVzdG9yZV92Z2EoZGV2X3ByaXYpOwogCWlmIChkZXZf cHJpdi0+aGFzX21vYikKIAkJKHZvaWQpIHR0bV9ib19jbGVhbl9tbSgmZGV2X3ByaXYtPmJkZXYs IFZNV19QTF9NT0IpOwogCWlmIChkZXZfcHJpdi0+aGFzX2dtcikKIAkJKHZvaWQpIHR0bV9ib19j bGVhbl9tbSgmZGV2X3ByaXYtPmJkZXYsIFZNV19QTF9HTVIpOwogCSh2b2lkKXR0bV9ib19jbGVh bl9tbSgmZGV2X3ByaXYtPmJkZXYsIFRUTV9QTF9WUkFNKTsKIG91dF9ub192cmFtOgorCSh2b2lk KXR0bV9ib19kZXZpY2VfcmVsZWFzZSgmZGV2X3ByaXYtPmJkZXYpOworb3V0X25vX2JkZXY6CiAJ dm13X2ZlbmNlX21hbmFnZXJfdGFrZWRvd24oZGV2X3ByaXYtPmZtYW4pOwogb3V0X25vX2ZtYW46 CiAJaWYgKGRldl9wcml2LT5jYXBhYmlsaXRpZXMgJiBTVkdBX0NBUF9JUlFNQVNLKQpAQCAtODYw LDggKzg1OSw2IEBAIG91dF9lcnI0OgogCWlvdW5tYXAoZGV2X3ByaXYtPm1taW9fdmlydCk7CiBv dXRfZXJyMzoKIAlhcmNoX3BoeXNfd2NfZGVsKGRldl9wcml2LT5tbWlvX210cnIpOwotCSh2b2lk KXR0bV9ib19kZXZpY2VfcmVsZWFzZSgmZGV2X3ByaXYtPmJkZXYpOwotb3V0X2VycjE6CiAJdm13 X3R0bV9nbG9iYWxfcmVsZWFzZShkZXZfcHJpdik7CiBvdXRfZXJyMDoKIAlmb3IgKGkgPSB2bXdf cmVzX2NvbnRleHQ7IGkgPCB2bXdfcmVzX21heDsgKytpKQpAQCAtODgzLDE4ICs4ODAsMjIgQEAg c3RhdGljIGludCB2bXdfZHJpdmVyX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCXZm cmVlKGRldl9wcml2LT5jdHguY21kX2JvdW5jZSk7CiAJaWYgKGRldl9wcml2LT5lbmFibGVfZmIp IHsKIAkJdm13X2ZiX2Nsb3NlKGRldl9wcml2KTsKLQkJdm13X2ttc19yZXN0b3JlX3ZnYShkZXZf cHJpdik7Ci0JCXZtd18zZF9yZXNvdXJjZV9kZWMoZGV2X3ByaXYsIGZhbHNlKTsKKwkJdm13X2Zp Zm9fcmVzb3VyY2VfZGVjKGRldl9wcml2KTsKKwkJdm13X3N2Z2FfZGlzYWJsZShkZXZfcHJpdik7 CiAJfQorCiAJdm13X2ttc19jbG9zZShkZXZfcHJpdik7CiAJdm13X292ZXJsYXlfY2xvc2UoZGV2 X3ByaXYpOwogCi0JaWYgKGRldl9wcml2LT5oYXNfbW9iKQotCQkodm9pZCkgdHRtX2JvX2NsZWFu X21tKCZkZXZfcHJpdi0+YmRldiwgVk1XX1BMX01PQik7CiAJaWYgKGRldl9wcml2LT5oYXNfZ21y KQogCQkodm9pZCl0dG1fYm9fY2xlYW5fbW0oJmRldl9wcml2LT5iZGV2LCBWTVdfUExfR01SKTsK IAkodm9pZCl0dG1fYm9fY2xlYW5fbW0oJmRldl9wcml2LT5iZGV2LCBUVE1fUExfVlJBTSk7CiAK Kwl2bXdfcmVsZWFzZV9kZXZpY2VfZWFybHkoZGV2X3ByaXYpOworCWlmIChkZXZfcHJpdi0+aGFz X21vYikKKwkJKHZvaWQpIHR0bV9ib19jbGVhbl9tbSgmZGV2X3ByaXYtPmJkZXYsIFZNV19QTF9N T0IpOworCSh2b2lkKSB0dG1fYm9fZGV2aWNlX3JlbGVhc2UoJmRldl9wcml2LT5iZGV2KTsKKwl2 bXdfcmVsZWFzZV9kZXZpY2VfbGF0ZShkZXZfcHJpdik7CiAJdm13X2ZlbmNlX21hbmFnZXJfdGFr ZWRvd24oZGV2X3ByaXYtPmZtYW4pOwogCWlmIChkZXZfcHJpdi0+Y2FwYWJpbGl0aWVzICYgU1ZH QV9DQVBfSVJRTUFTSykKIAkJZHJtX2lycV91bmluc3RhbGwoZGV2X3ByaXYtPmRldik7CkBAIC0x MTQ4LDI3ICsxMTQ5LDEzIEBAIHN0YXRpYyBpbnQgdm13X21hc3Rlcl9zZXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAlzdHJ1Y3Qgdm13X21hc3RlciAqdm1hc3RlciA9IHZtd19tYXN0ZXIoZmls ZV9wcml2LT5tYXN0ZXIpOwogCWludCByZXQgPSAwOwogCi0JaWYgKCFkZXZfcHJpdi0+ZW5hYmxl X2ZiKSB7Ci0JCXJldCA9IHZtd18zZF9yZXNvdXJjZV9pbmMoZGV2X3ByaXYsIHRydWUpOwotCQlp ZiAodW5saWtlbHkocmV0ICE9IDApKQotCQkJcmV0dXJuIHJldDsKLQkJdm13X2ttc19zYXZlX3Zn YShkZXZfcHJpdik7Ci0JCXZtd193cml0ZShkZXZfcHJpdiwgU1ZHQV9SRUdfVFJBQ0VTLCAwKTsK LQl9Ci0KIAlpZiAoYWN0aXZlKSB7CiAJCUJVR19PTihhY3RpdmUgIT0gJmRldl9wcml2LT5mYmRl dl9tYXN0ZXIpOwogCQlyZXQgPSB0dG1fdnRfbG9jaygmYWN0aXZlLT5sb2NrLCBmYWxzZSwgdm13 X2ZwLT50ZmlsZSk7CiAJCWlmICh1bmxpa2VseShyZXQgIT0gMCkpCi0JCQlnb3RvIG91dF9ub19h Y3RpdmVfbG9jazsKKwkJCXJldHVybiByZXQ7CiAKIAkJdHRtX2xvY2tfc2V0X2tpbGwoJmFjdGl2 ZS0+bG9jaywgdHJ1ZSwgU0lHVEVSTSk7Ci0JCXJldCA9IHR0bV9ib19ldmljdF9tbSgmZGV2X3By aXYtPmJkZXYsIFRUTV9QTF9WUkFNKTsKLQkJaWYgKHVubGlrZWx5KHJldCAhPSAwKSkgewotCQkJ RFJNX0VSUk9SKCJVbmFibGUgdG8gY2xlYW4gVlJBTSBvbiAiCi0JCQkJICAibWFzdGVyIGRyb3Au XG4iKTsKLQkJfQotCiAJCWRldl9wcml2LT5hY3RpdmVfbWFzdGVyID0gTlVMTDsKIAl9CiAKQEAg LTExODIsMTQgKzExNjksNiBAQCBzdGF0aWMgaW50IHZtd19tYXN0ZXJfc2V0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAJZGV2X3ByaXYtPmFjdGl2ZV9tYXN0ZXIgPSB2bWFzdGVyOwogCiAJcmV0 dXJuIDA7Ci0KLW91dF9ub19hY3RpdmVfbG9jazoKLQlpZiAoIWRldl9wcml2LT5lbmFibGVfZmIp IHsKLQkJdm13X2ttc19yZXN0b3JlX3ZnYShkZXZfcHJpdik7Ci0JCXZtd18zZF9yZXNvdXJjZV9k ZWMoZGV2X3ByaXYsIHRydWUpOwotCQl2bXdfd3JpdGUoZGV2X3ByaXYsIFNWR0FfUkVHX1RSQUNF UywgMSk7Ci0JfQotCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkIHZtd19tYXN0ZXJfZHJv cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LApAQCAtMTIxNCwxNiArMTE5Myw5IEBAIHN0YXRpYyB2 b2lkIHZtd19tYXN0ZXJfZHJvcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCX0KIAogCXR0bV9s b2NrX3NldF9raWxsKCZ2bWFzdGVyLT5sb2NrLCBmYWxzZSwgU0lHVEVSTSk7Ci0Jdm13X2V4ZWNi dWZfcmVsZWFzZV9waW5uZWRfYm8oZGV2X3ByaXYpOwogCi0JaWYgKCFkZXZfcHJpdi0+ZW5hYmxl X2ZiKSB7Ci0JCXJldCA9IHR0bV9ib19ldmljdF9tbSgmZGV2X3ByaXYtPmJkZXYsIFRUTV9QTF9W UkFNKTsKLQkJaWYgKHVubGlrZWx5KHJldCAhPSAwKSkKLQkJCURSTV9FUlJPUigiVW5hYmxlIHRv IGNsZWFuIFZSQU0gb24gbWFzdGVyIGRyb3AuXG4iKTsKLQkJdm13X2ttc19yZXN0b3JlX3ZnYShk ZXZfcHJpdik7Ci0JCXZtd18zZF9yZXNvdXJjZV9kZWMoZGV2X3ByaXYsIHRydWUpOwotCQl2bXdf d3JpdGUoZGV2X3ByaXYsIFNWR0FfUkVHX1RSQUNFUywgMSk7Ci0JfQorCWlmICghZGV2X3ByaXYt PmVuYWJsZV9mYikKKwkJdm13X3N2Z2FfZGlzYWJsZShkZXZfcHJpdik7CiAKIAlkZXZfcHJpdi0+ YWN0aXZlX21hc3RlciA9ICZkZXZfcHJpdi0+ZmJkZXZfbWFzdGVyOwogCXR0bV9sb2NrX3NldF9r aWxsKCZkZXZfcHJpdi0+ZmJkZXZfbWFzdGVyLmxvY2ssIGZhbHNlLCBTSUdURVJNKTsKQEAgLTEy MzMsNiArMTIwNSw3NCBAQCBzdGF0aWMgdm9pZCB2bXdfbWFzdGVyX2Ryb3Aoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKIAkJdm13X2ZiX29uKGRldl9wcml2KTsKIH0KIAorLyoqCisgKiBfX3Ztd19z dmdhX2VuYWJsZSAtIEVuYWJsZSBTVkdBIG1vZGUsIEZJRk8gYW5kIHVzZSBvZiBWUkFNLgorICoK KyAqIEBkZXZfcHJpdjogUG9pbnRlciB0byBkZXZpY2UgcHJpdmF0ZSBzdHJ1Y3QuCisgKiBOZWVk cyB0aGUgcmVzZXJ2YXRpb24gc2VtIHRvIGJlIGhlbGQgaW4gbm9uLWV4Y2x1c2l2ZSBtb2RlLgor ICovCit2b2lkIF9fdm13X3N2Z2FfZW5hYmxlKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYp Cit7CisJc3Bpbl9sb2NrKCZkZXZfcHJpdi0+c3ZnYV9sb2NrKTsKKwlpZiAoIWRldl9wcml2LT5i ZGV2Lm1hbltUVE1fUExfVlJBTV0udXNlX3R5cGUpIHsKKwkJdm13X3dyaXRlKGRldl9wcml2LCBT VkdBX1JFR19FTkFCTEUsIFNWR0FfUkVHX0VOQUJMRSk7CisJCWRldl9wcml2LT5iZGV2Lm1hbltU VE1fUExfVlJBTV0udXNlX3R5cGUgPSB0cnVlOworCX0KKwlzcGluX3VubG9jaygmZGV2X3ByaXYt PnN2Z2FfbG9jayk7Cit9CisKKy8qKgorICogdm13X3N2Z2FfZW5hYmxlIC0gRW5hYmxlIFNWR0Eg bW9kZSwgRklGTyBhbmQgdXNlIG9mIFZSQU0uCisgKgorICogQGRldl9wcml2OiBQb2ludGVyIHRv IGRldmljZSBwcml2YXRlIHN0cnVjdC4KKyAqLwordm9pZCB2bXdfc3ZnYV9lbmFibGUoc3RydWN0 IHZtd19wcml2YXRlICpkZXZfcHJpdikKK3sKKwl0dG1fcmVhZF9sb2NrKCZkZXZfcHJpdi0+cmVz ZXJ2YXRpb25fc2VtLCBmYWxzZSk7CisJX192bXdfc3ZnYV9lbmFibGUoZGV2X3ByaXYpOworCXR0 bV9yZWFkX3VubG9jaygmZGV2X3ByaXYtPnJlc2VydmF0aW9uX3NlbSk7Cit9CisKKy8qKgorICog X192bXdfc3ZnYV9kaXNhYmxlIC0gRGlzYWJsZSBTVkdBIG1vZGUgYW5kIHVzZSBvZiBWUkFNLgor ICoKKyAqIEBkZXZfcHJpdjogUG9pbnRlciB0byBkZXZpY2UgcHJpdmF0ZSBzdHJ1Y3QuCisgKiBO ZWVkcyB0aGUgcmVzZXJ2YXRpb24gc2VtIHRvIGJlIGhlbGQgaW4gZXhjbHVzaXZlIG1vZGUuCisg KiBXaWxsIG5vdCBlbXB0eSBWUkFNLiBWUkFNIG11c3QgYmUgZW1wdGllZCBieSBjYWxsZXIuCisg Ki8KK3ZvaWQgX192bXdfc3ZnYV9kaXNhYmxlKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYp Cit7CisJc3Bpbl9sb2NrKCZkZXZfcHJpdi0+c3ZnYV9sb2NrKTsKKwlpZiAoZGV2X3ByaXYtPmJk ZXYubWFuW1RUTV9QTF9WUkFNXS51c2VfdHlwZSkgeworCQlkZXZfcHJpdi0+YmRldi5tYW5bVFRN X1BMX1ZSQU1dLnVzZV90eXBlID0gZmFsc2U7CisJCXZtd193cml0ZShkZXZfcHJpdiwgU1ZHQV9S RUdfRU5BQkxFLAorCQkJICBTVkdBX1JFR19FTkFCTEVfRU5BQkxFX0hJREUpOworCX0KKwlzcGlu X3VubG9jaygmZGV2X3ByaXYtPnN2Z2FfbG9jayk7Cit9CisKKy8qKgorICogdm13X3N2Z2FfZGlz YWJsZSAtIERpc2FibGUgU1ZHQV9NT0RFLCBhbmQgdXNlIG9mIFZSQU0uIEtlZXAgdGhlIGZpZm8K KyAqIHJ1bm5pbmcuCisgKgorICogQGRldl9wcml2OiBQb2ludGVyIHRvIGRldmljZSBwcml2YXRl IHN0cnVjdC4KKyAqIFdpbGwgZW1wdHkgVlJBTS4KKyAqLwordm9pZCB2bXdfc3ZnYV9kaXNhYmxl KHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJdHRtX3dyaXRlX2xvY2soJmRldl9w cml2LT5yZXNlcnZhdGlvbl9zZW0sIGZhbHNlKTsKKwlzcGluX2xvY2soJmRldl9wcml2LT5zdmdh X2xvY2spOworCWlmIChkZXZfcHJpdi0+YmRldi5tYW5bVFRNX1BMX1ZSQU1dLnVzZV90eXBlKSB7 CisJCWRldl9wcml2LT5iZGV2Lm1hbltUVE1fUExfVlJBTV0udXNlX3R5cGUgPSBmYWxzZTsKKwkJ dm13X3dyaXRlKGRldl9wcml2LCBTVkdBX1JFR19FTkFCTEUsCisJCQkgIFNWR0FfUkVHX0VOQUJM RV9FTkFCTEVfSElERSk7CisJCXNwaW5fdW5sb2NrKCZkZXZfcHJpdi0+c3ZnYV9sb2NrKTsKKwkJ aWYgKHR0bV9ib19ldmljdF9tbSgmZGV2X3ByaXYtPmJkZXYsIFRUTV9QTF9WUkFNKSkKKwkJCURS TV9FUlJPUigiRmFpbGVkIGV2aWN0aW5nIFZSQU0gYnVmZmVycy5cbiIpOworCX0gZWxzZQorCQlz cGluX3VubG9jaygmZGV2X3ByaXYtPnN2Z2FfbG9jayk7CisJdHRtX3dyaXRlX3VubG9jaygmZGV2 X3ByaXYtPnJlc2VydmF0aW9uX3NlbSk7Cit9CiAKIHN0YXRpYyB2b2lkIHZtd19yZW1vdmUoc3Ry dWN0IHBjaV9kZXYgKnBkZXYpCiB7CkBAIC0xMjUwLDIxICsxMjkwLDIxIEBAIHN0YXRpYyBpbnQg dm13Z2Z4X3BtX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxv bmcgdmFsLAogCiAJc3dpdGNoICh2YWwpIHsKIAljYXNlIFBNX0hJQkVSTkFUSU9OX1BSRVBBUkU6 Ci0JY2FzZSBQTV9TVVNQRU5EX1BSRVBBUkU6CiAJCXR0bV9zdXNwZW5kX2xvY2soJmRldl9wcml2 LT5yZXNlcnZhdGlvbl9zZW0pOwogCi0JCS8qKgorCQkvKgogCQkgKiBUaGlzIGVtcHRpZXMgVlJB TSBhbmQgdW5iaW5kcyBhbGwgR01SIGJpbmRpbmdzLgogCQkgKiBCdWZmZXIgY29udGVudHMgaXMg bW92ZWQgdG8gc3dhcHBhYmxlIG1lbW9yeS4KIAkJICovCiAJCXZtd19leGVjYnVmX3JlbGVhc2Vf cGlubmVkX2JvKGRldl9wcml2KTsKIAkJdm13X3Jlc291cmNlX2V2aWN0X2FsbChkZXZfcHJpdik7 CisJCXZtd19yZWxlYXNlX2RldmljZV9lYXJseShkZXZfcHJpdik7CiAJCXR0bV9ib19zd2Fwb3V0 X2FsbCgmZGV2X3ByaXYtPmJkZXYpOwotCisJCXZtd19mZW5jZV9maWZvX2Rvd24oZGV2X3ByaXYt PmZtYW4pOwogCQlicmVhazsKIAljYXNlIFBNX1BPU1RfSElCRVJOQVRJT046Ci0JY2FzZSBQTV9Q T1NUX1NVU1BFTkQ6CiAJY2FzZSBQTV9QT1NUX1JFU1RPUkU6CisJCXZtd19mZW5jZV9maWZvX3Vw KGRldl9wcml2LT5mbWFuKTsKIAkJdHRtX3N1c3BlbmRfdW5sb2NrKCZkZXZfcHJpdi0+cmVzZXJ2 YXRpb25fc2VtKTsKIAogCQlicmVhazsKQEAgLTEyNzYsMjAgKzEzMTYsMTMgQEAgc3RhdGljIGlu dCB2bXdnZnhfcG1fbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdW5zaWduZWQg bG9uZyB2YWwsCiAJcmV0dXJuIDA7CiB9CiAKLS8qKgotICogVGhlc2UgbWlnaHQgbm90IGJlIG5l ZWRlZCB3aXRoIHRoZSB2aXJ0dWFsIFNWR0EgZGV2aWNlLgotICovCi0KIHN0YXRpYyBpbnQgdm13 X3BjaV9zdXNwZW5kKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBwbV9tZXNzYWdlX3Qgc3RhdGUpCiB7 CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTsKIAlzdHJ1 Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2ID0gdm13X3ByaXYoZGV2KTsKIAotCWlmIChkZXZfcHJp di0+bnVtXzNkX3Jlc291cmNlcyAhPSAwKSB7Ci0JCURSTV9JTkZPKCJDYW4ndCBzdXNwZW5kIG9y IGhpYmVybmF0ZSAiCi0JCQkgIndoaWxlIDNEIHJlc291cmNlcyBhcmUgYWN0aXZlLlxuIik7CisJ aWYgKGRldl9wcml2LT5yZWZ1c2VfaGliZXJuYXRpb24pCiAJCXJldHVybiAtRUJVU1k7Ci0JfQog CiAJcGNpX3NhdmVfc3RhdGUocGRldik7CiAJcGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpOwpAQCAt MTMyMSw1NiArMTM1NCw2MiBAQCBzdGF0aWMgaW50IHZtd19wbV9yZXN1bWUoc3RydWN0IGRldmlj ZSAqa2RldikKIAlyZXR1cm4gdm13X3BjaV9yZXN1bWUocGRldik7CiB9CiAKLXN0YXRpYyBpbnQg dm13X3BtX3ByZXBhcmUoc3RydWN0IGRldmljZSAqa2RldikKK3N0YXRpYyBpbnQgdm13X3BtX2Zy ZWV6ZShzdHJ1Y3QgZGV2aWNlICprZGV2KQogewogCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gdG9f cGNpX2RldihrZGV2KTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGNpX2dldF9kcnZkYXRh KHBkZXYpOwogCXN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYgPSB2bXdfcHJpdihkZXYpOwog Ci0JLyoqCi0JICogUmVsZWFzZSAzZCByZWZlcmVuY2UgaGVsZCBieSBmYmRldiBhbmQgcG90ZW50 aWFsbHkKLQkgKiBzdG9wIGZpZm8uCi0JICovCiAJZGV2X3ByaXYtPnN1c3BlbmRlZCA9IHRydWU7 CiAJaWYgKGRldl9wcml2LT5lbmFibGVfZmIpCi0JCQl2bXdfM2RfcmVzb3VyY2VfZGVjKGRldl9w cml2LCB0cnVlKTsKLQotCWlmIChkZXZfcHJpdi0+bnVtXzNkX3Jlc291cmNlcyAhPSAwKSB7Ci0K LQkJRFJNX0lORk8oIkNhbid0IHN1c3BlbmQgb3IgaGliZXJuYXRlICIKLQkJCSAid2hpbGUgM0Qg cmVzb3VyY2VzIGFyZSBhY3RpdmUuXG4iKTsKKwkJdm13X2ZpZm9fcmVzb3VyY2VfZGVjKGRldl9w cml2KTsKIAorCWlmIChhdG9taWNfcmVhZCgmZGV2X3ByaXYtPm51bV9maWZvX3Jlc291cmNlcykg IT0gMCkgeworCQlEUk1fRVJST1IoIkNhbid0IGhpYmVybmF0ZSB3aGlsZSAzRCByZXNvdXJjZXMg YXJlIGFjdGl2ZS5cbiIpOwogCQlpZiAoZGV2X3ByaXYtPmVuYWJsZV9mYikKLQkJCXZtd18zZF9y ZXNvdXJjZV9pbmMoZGV2X3ByaXYsIHRydWUpOworCQkJdm13X2ZpZm9fcmVzb3VyY2VfaW5jKGRl dl9wcml2KTsKKwkJV0FSTl9PTih2bXdfcmVxdWVzdF9kZXZpY2VfbGF0ZShkZXZfcHJpdikpOwog CQlkZXZfcHJpdi0+c3VzcGVuZGVkID0gZmFsc2U7CiAJCXJldHVybiAtRUJVU1k7CiAJfQogCisJ aWYgKGRldl9wcml2LT5lbmFibGVfZmIpCisJCV9fdm13X3N2Z2FfZGlzYWJsZShkZXZfcHJpdik7 CisJCisJdm13X3JlbGVhc2VfZGV2aWNlX2xhdGUoZGV2X3ByaXYpOworCiAJcmV0dXJuIDA7CiB9 CiAKLXN0YXRpYyB2b2lkIHZtd19wbV9jb21wbGV0ZShzdHJ1Y3QgZGV2aWNlICprZGV2KQorc3Rh dGljIGludCB2bXdfcG1fcmVzdG9yZShzdHJ1Y3QgZGV2aWNlICprZGV2KQogewogCXN0cnVjdCBw Y2lfZGV2ICpwZGV2ID0gdG9fcGNpX2RldihrZGV2KTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpOwogCXN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYg PSB2bXdfcHJpdihkZXYpOworCWludCByZXQ7CiAKIAl2bXdfd3JpdGUoZGV2X3ByaXYsIFNWR0Ff UkVHX0lELCBTVkdBX0lEXzIpOwogCSh2b2lkKSB2bXdfcmVhZChkZXZfcHJpdiwgU1ZHQV9SRUdf SUQpOwogCi0JLyoqCi0JICogUmVjbGFpbSAzZCByZWZlcmVuY2UgaGVsZCBieSBmYmRldiBhbmQg cG90ZW50aWFsbHkKLQkgKiBzdGFydCBmaWZvLgotCSAqLwogCWlmIChkZXZfcHJpdi0+ZW5hYmxl X2ZiKQotCQkJdm13XzNkX3Jlc291cmNlX2luYyhkZXZfcHJpdiwgZmFsc2UpOworCQl2bXdfZmlm b19yZXNvdXJjZV9pbmMoZGV2X3ByaXYpOworCisJcmV0ID0gdm13X3JlcXVlc3RfZGV2aWNlKGRl dl9wcml2KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJaWYgKGRldl9wcml2LT5lbmFi bGVfZmIpCisJCV9fdm13X3N2Z2FfZW5hYmxlKGRldl9wcml2KTsKIAogCWRldl9wcml2LT5zdXNw ZW5kZWQgPSBmYWxzZTsKKworCXJldHVybiAwOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRl dl9wbV9vcHMgdm13X3BtX29wcyA9IHsKLQkucHJlcGFyZSA9IHZtd19wbV9wcmVwYXJlLAotCS5j b21wbGV0ZSA9IHZtd19wbV9jb21wbGV0ZSwKKwkuZnJlZXplID0gdm13X3BtX2ZyZWV6ZSwKKwku dGhhdyA9IHZtd19wbV9yZXN0b3JlLAorCS5yZXN0b3JlID0gdm13X3BtX3Jlc3RvcmUsCiAJLnN1 c3BlbmQgPSB2bXdfcG1fc3VzcGVuZCwKIAkucmVzdW1lID0gdm13X3BtX3Jlc3VtZSwKIH07CmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5oCmluZGV4IGQyNmE2ZGEuLmE1ZjIyMWUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5oCkBAIC00ODQsNiArNDg0LDcgQEAgc3RydWN0IHZt d19wcml2YXRlIHsKIAogCWJvb2wgc3RlYWx0aDsKIAlib29sIGVuYWJsZV9mYjsKKwlzcGlubG9j a190IHN2Z2FfbG9jazsKIAogCS8qKgogCSAqIE1hc3RlciBtYW5hZ2VtZW50LgpAQCAtNDkzLDkg KzQ5NCwxMCBAQCBzdHJ1Y3Qgdm13X3ByaXZhdGUgewogCXN0cnVjdCB2bXdfbWFzdGVyIGZiZGV2 X21hc3RlcjsKIAlzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgcG1fbmI7CiAJYm9vbCBzdXNwZW5kZWQ7 CisJYm9vbCByZWZ1c2VfaGliZXJuYXRpb247CiAKIAlzdHJ1Y3QgbXV0ZXggcmVsZWFzZV9tdXRl eDsKLQl1aW50MzJfdCBudW1fM2RfcmVzb3VyY2VzOworCWF0b21pY190IG51bV9maWZvX3Jlc291 cmNlczsKIAogCS8qCiAJICogUmVwbGFjZSB0aGlzIHdpdGggYW4gcndzZW0gYXMgc29vbiBhcyB3 ZSBoYXZlIGRvd25feHhfaW50ZXJydXB0aWJsZSgpCkBAIC01ODcsOCArNTg5LDkgQEAgc3RhdGlj IGlubGluZSB1aW50MzJfdCB2bXdfcmVhZChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAog CXJldHVybiB2YWw7CiB9CiAKLWludCB2bXdfM2RfcmVzb3VyY2VfaW5jKHN0cnVjdCB2bXdfcHJp dmF0ZSAqZGV2X3ByaXYsIGJvb2wgdW5oaWRlX3N2Z2EpOwotdm9pZCB2bXdfM2RfcmVzb3VyY2Vf ZGVjKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgaGlkZV9zdmdhKTsKK2V4dGVy biB2b2lkIHZtd19zdmdhX2VuYWJsZShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2KTsKK2V4 dGVybiB2b2lkIHZtd19zdmdhX2Rpc2FibGUoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdik7 CisKIAogLyoqCiAgKiBHTVIgdXRpbGl0aWVzIC0gdm13Z2Z4X2dtci5jCkBAIC0xMTE2LDQgKzEx MTksMTQgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgdHRtX21lbV9nbG9iYWwgKnZtd19tZW1fZ2xv YihzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2KQogewogCXJldHVybiAoc3RydWN0IHR0bV9t ZW1fZ2xvYmFsICopIGRldl9wcml2LT5tZW1fZ2xvYmFsX3JlZi5vYmplY3Q7CiB9CisKK3N0YXRp YyBpbmxpbmUgdm9pZCB2bXdfZmlmb19yZXNvdXJjZV9pbmMoc3RydWN0IHZtd19wcml2YXRlICpk ZXZfcHJpdikKK3sKKwlhdG9taWNfaW5jKCZkZXZfcHJpdi0+bnVtX2ZpZm9fcmVzb3VyY2VzKTsK K30KKworc3RhdGljIGlubGluZSB2b2lkIHZtd19maWZvX3Jlc291cmNlX2RlYyhzdHJ1Y3Qgdm13 X3ByaXZhdGUgKmRldl9wcml2KQoreworCWF0b21pY19kZWMoJmRldl9wcml2LT5udW1fZmlmb19y ZXNvdXJjZXMpOworfQogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4 L3Ztd2dmeF9mYi5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZmIuYwppbmRleCBl MmQ0MGViLi5lY2RjOGQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dm eF9mYi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ZiLmMKQEAgLTU5Niw3 ICs1OTYsMTAgQEAgaW50IHZtd19mYl9vZmYoc3RydWN0IHZtd19wcml2YXRlICp2bXdfcHJpdikK IAogCWluZm8gPSB2bXdfcHJpdi0+ZmJfaW5mbzsKIAlwYXIgPSBpbmZvLT5wYXI7CisJaWYgKCFw YXItPmJvX3B0cikKKwkJcmV0dXJuIDA7CiAKKwl2bXdfa21zX3NhdmVfdmdhKHZtd19wcml2KTsK IAlzcGluX2xvY2tfaXJxc2F2ZSgmcGFyLT5kaXJ0eS5sb2NrLCBmbGFncyk7CiAJcGFyLT5kaXJ0 eS5hY3RpdmUgPSBmYWxzZTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwYXItPmRpcnR5Lmxv Y2ssIGZsYWdzKTsKQEAgLTY0OCw2ICs2NTEsNyBAQCBpbnQgdm13X2ZiX29uKHN0cnVjdCB2bXdf cHJpdmF0ZSAqdm13X3ByaXYpCiAJc3Bpbl9sb2NrX2lycXNhdmUoJnBhci0+ZGlydHkubG9jaywg ZmxhZ3MpOwogCXBhci0+ZGlydHkuYWN0aXZlID0gdHJ1ZTsKIAlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZwYXItPmRpcnR5LmxvY2ssIGZsYWdzKTsKKwl2bXdfa21zX3Jlc3RvcmVfdmdhKHZtd19w cml2KTsKIAogZXJyX25vX2J1ZmZlcjoKIAl2bXdfZmJfc2V0X3BhcihpbmZvKTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2ZpZm8uYyBiL2RyaXZlcnMvZ3B1L2Ry bS92bXdnZngvdm13Z2Z4X2ZpZm8uYwppbmRleCAzOWYyYjAzLi5jZDVkOWYzIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9maWZvLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL3Ztd2dmeC92bXdnZnhfZmlmby5jCkBAIC05OCw3ICs5OCw2IEBAIGludCB2bXdfZmlmb19p bml0KHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsIHN0cnVjdCB2bXdfZmlmb19zdGF0ZSAq ZmlmbykKIAlfX2xlMzIgX19pb21lbSAqZmlmb19tZW0gPSBkZXZfcHJpdi0+bW1pb192aXJ0Owog CXVpbnQzMl90IG1heDsKIAl1aW50MzJfdCBtaW47Ci0JdWludDMyX3QgZHVtbXk7CiAKIAlmaWZv LT5zdGF0aWNfYnVmZmVyX3NpemUgPSBWTVdHRlhfRklGT19TVEFUSUNfU0laRTsKIAlmaWZvLT5z dGF0aWNfYnVmZmVyID0gdm1hbGxvYyhmaWZvLT5zdGF0aWNfYnVmZmVyX3NpemUpOwpAQCAtMTEy LDEwICsxMTEsNiBAQCBpbnQgdm13X2ZpZm9faW5pdChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9w cml2LCBzdHJ1Y3Qgdm13X2ZpZm9fc3RhdGUgKmZpZm8pCiAJbXV0ZXhfaW5pdCgmZmlmby0+Zmlm b19tdXRleCk7CiAJaW5pdF9yd3NlbSgmZmlmby0+cndzZW0pOwogCi0JLyoKLQkgKiBBbGxvdyBt YXBwaW5nIHRoZSBmaXJzdCBwYWdlIHJlYWQtb25seSB0byB1c2VyLXNwYWNlLgotCSAqLwotCiAJ RFJNX0lORk8oIndpZHRoICVkXG4iLCB2bXdfcmVhZChkZXZfcHJpdiwgU1ZHQV9SRUdfV0lEVEgp KTsKIAlEUk1fSU5GTygiaGVpZ2h0ICVkXG4iLCB2bXdfcmVhZChkZXZfcHJpdiwgU1ZHQV9SRUdf SEVJR0hUKSk7CiAJRFJNX0lORk8oImJwcCAlZFxuIiwgdm13X3JlYWQoZGV2X3ByaXYsIFNWR0Ff UkVHX0JJVFNfUEVSX1BJWEVMKSk7CkBAIC0xMjMsNyArMTE4LDkgQEAgaW50IHZtd19maWZvX2lu aXQoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0IHZtd19maWZvX3N0YXRlICpm aWZvKQogCWRldl9wcml2LT5lbmFibGVfc3RhdGUgPSB2bXdfcmVhZChkZXZfcHJpdiwgU1ZHQV9S RUdfRU5BQkxFKTsKIAlkZXZfcHJpdi0+Y29uZmlnX2RvbmVfc3RhdGUgPSB2bXdfcmVhZChkZXZf cHJpdiwgU1ZHQV9SRUdfQ09ORklHX0RPTkUpOwogCWRldl9wcml2LT50cmFjZXNfc3RhdGUgPSB2 bXdfcmVhZChkZXZfcHJpdiwgU1ZHQV9SRUdfVFJBQ0VTKTsKLQl2bXdfd3JpdGUoZGV2X3ByaXYs IFNWR0FfUkVHX0VOQUJMRSwgMSk7CisKKwl2bXdfd3JpdGUoZGV2X3ByaXYsIFNWR0FfUkVHX0VO QUJMRSwgU1ZHQV9SRUdfRU5BQkxFX0VOQUJMRV9ISURFKTsKKwl2bXdfd3JpdGUoZGV2X3ByaXYs IFNWR0FfUkVHX1RSQUNFUywgMCk7CiAKIAltaW4gPSA0OwogCWlmIChkZXZfcHJpdi0+Y2FwYWJp bGl0aWVzICYgU1ZHQV9DQVBfRVhURU5ERURfRklGTykKQEAgLTE1NSw3ICsxNTIsOCBAQCBpbnQg dm13X2ZpZm9faW5pdChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LCBzdHJ1Y3Qgdm13X2Zp Zm9fc3RhdGUgKmZpZm8pCiAJYXRvbWljX3NldCgmZGV2X3ByaXYtPm1hcmtlcl9zZXEsIGRldl9w cml2LT5sYXN0X3JlYWRfc2Vxbm8pOwogCWlvd3JpdGUzMihkZXZfcHJpdi0+bGFzdF9yZWFkX3Nl cW5vLCBmaWZvX21lbSArIFNWR0FfRklGT19GRU5DRSk7CiAJdm13X21hcmtlcl9xdWV1ZV9pbml0 KCZmaWZvLT5tYXJrZXJfcXVldWUpOwotCXJldHVybiB2bXdfZmlmb19zZW5kX2ZlbmNlKGRldl9w cml2LCAmZHVtbXkpOworCisJcmV0dXJuIDA7CiB9CiAKIHZvaWQgdm13X2ZpZm9fcGluZ19ob3N0 KHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsIHVpbnQzMl90IHJlYXNvbikKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2xkdS5jIGIvZHJpdmVycy9ncHUvZHJt L3Ztd2dmeC92bXdnZnhfbGR1LmMKaW5kZXggNWMyODlmNy4uNTM1NzlmMiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfbGR1LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L3Ztd2dmeC92bXdnZnhfbGR1LmMKQEAgLTI4MCw2ICsyODAsNyBAQCBzdGF0aWMgaW50IHZtd19s ZHVfY3J0Y19zZXRfY29uZmlnKHN0cnVjdCBkcm1fbW9kZV9zZXQgKnNldCkKIAl9CiAKIAl2bXdf ZmJfb2ZmKGRldl9wcml2KTsKKwl2bXdfc3ZnYV9lbmFibGUoZGV2X3ByaXYpOwogCiAJY3J0Yy0+ cHJpbWFyeS0+ZmIgPSBmYjsKIAllbmNvZGVyLT5jcnRjID0gY3J0YzsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X21vYi5jIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfbW9iLmMKaW5kZXggMDRhNjRiOC4uZjA2ZDYwZiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfbW9iLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfbW9iLmMKQEAgLTU3NCw3ICs1NzQsNyBAQCB2b2lkIHZtd19tb2JfdW5iaW5kKHN0 cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCXZtd19mZW5jZV9zaW5nbGVfYm8oYm8sIE5V TEwpOwogCQl0dG1fYm9fdW5yZXNlcnZlKGJvKTsKIAl9Ci0Jdm13XzNkX3Jlc291cmNlX2RlYyhk ZXZfcHJpdiwgZmFsc2UpOworCXZtd19maWZvX3Jlc291cmNlX2RlYyhkZXZfcHJpdik7CiB9CiAK IC8qCkBAIC02MjcsNyArNjI3LDcgQEAgaW50IHZtd19tb2JfYmluZChzdHJ1Y3Qgdm13X3ByaXZh dGUgKmRldl9wcml2LAogCQltb2ItPnB0X2xldmVsICs9IFZNV19NT0JGTVRfUFRERVBUSF8xIC0g U1ZHQTNEX01PQkZNVF9QVERFUFRIXzE7CiAJfQogCi0JKHZvaWQpIHZtd18zZF9yZXNvdXJjZV9p bmMoZGV2X3ByaXYsIGZhbHNlKTsKKwl2bXdfZmlmb19yZXNvdXJjZV9pbmMoZGV2X3ByaXYpOwog CiAJY21kID0gdm13X2ZpZm9fcmVzZXJ2ZShkZXZfcHJpdiwgc2l6ZW9mKCpjbWQpKTsKIAlpZiAo dW5saWtlbHkoY21kID09IE5VTEwpKSB7CkBAIC02NDgsNyArNjQ4LDcgQEAgaW50IHZtd19tb2Jf YmluZChzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9wcml2LAogCXJldHVybiAwOwogCiBvdXRfbm9f Y21kX3NwYWNlOgotCXZtd18zZF9yZXNvdXJjZV9kZWMoZGV2X3ByaXYsIGZhbHNlKTsKKwl2bXdf Zmlmb19yZXNvdXJjZV9kZWMoZGV2X3ByaXYpOwogCWlmIChwdF9zZXRfdXApCiAJCXR0bV9ib191 bnJlZigmbW9iLT5wdF9ibyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngv dm13Z2Z4X3Njcm4uYyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3Njcm4uYwppbmRl eCA3ZGM1OTFkLi45ZThlYjM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Zt d2dmeF9zY3JuLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc2Nybi5jCkBA IC0zMzIsNiArMzMyLDcgQEAgc3RhdGljIGludCB2bXdfc291X2NydGNfc2V0X2NvbmZpZyhzdHJ1 Y3QgZHJtX21vZGVfc2V0ICpzZXQpCiAJfQogCiAJdm13X2ZiX29mZihkZXZfcHJpdik7CisJdm13 X3N2Z2FfZW5hYmxlKGRldl9wcml2KTsKIAogCWlmIChtb2RlLT5oZGlzcGxheSAhPSBjcnRjLT5t b2RlLmhkaXNwbGF5IHx8CiAJICAgIG1vZGUtPnZkaXNwbGF5ICE9IGNydGMtPm1vZGUudmRpc3Bs YXkpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3NoYWRlci5j IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc2hhZGVyLmMKaW5kZXggNmE0NTg0YS4u NjExMGE0MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc2hhZGVy LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc2hhZGVyLmMKQEAgLTE2NSw3 ICsxNjUsNyBAQCBzdGF0aWMgaW50IHZtd19nYl9zaGFkZXJfY3JlYXRlKHN0cnVjdCB2bXdfcmVz b3VyY2UgKnJlcykKIAljbWQtPmJvZHkudHlwZSA9IHNoYWRlci0+dHlwZTsKIAljbWQtPmJvZHku c2l6ZUluQnl0ZXMgPSBzaGFkZXItPnNpemU7CiAJdm13X2ZpZm9fY29tbWl0KGRldl9wcml2LCBz aXplb2YoKmNtZCkpOwotCSh2b2lkKSB2bXdfM2RfcmVzb3VyY2VfaW5jKGRldl9wcml2LCBmYWxz ZSk7CisJdm13X2ZpZm9fcmVzb3VyY2VfaW5jKGRldl9wcml2KTsKIAogCXJldHVybiAwOwogCkBA IC0yNzUsNyArMjc1LDcgQEAgc3RhdGljIGludCB2bXdfZ2Jfc2hhZGVyX2Rlc3Ryb3koc3RydWN0 IHZtd19yZXNvdXJjZSAqcmVzKQogCXZtd19maWZvX2NvbW1pdChkZXZfcHJpdiwgc2l6ZW9mKCpj bWQpKTsKIAltdXRleF91bmxvY2soJmRldl9wcml2LT5iaW5kaW5nX211dGV4KTsKIAl2bXdfcmVz b3VyY2VfcmVsZWFzZV9pZChyZXMpOwotCXZtd18zZF9yZXNvdXJjZV9kZWMoZGV2X3ByaXYsIGZh bHNlKTsKKwl2bXdfZmlmb19yZXNvdXJjZV9kZWMoZGV2X3ByaXYpOwogCiAJcmV0dXJuIDA7CiB9 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9zdXJmYWNlLmMgYi9k cml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9zdXJmYWNlLmMKaW5kZXggNGVjZGJmMy4uNGQw Yzk4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfc3VyZmFjZS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3N1cmZhY2UuYwpAQCAtMzQwLDcg KzM0MCw3IEBAIHN0YXRpYyB2b2lkIHZtd19od19zdXJmYWNlX2Rlc3Ryb3koc3RydWN0IHZtd19y ZXNvdXJjZSAqcmVzKQogCQlkZXZfcHJpdi0+dXNlZF9tZW1vcnlfc2l6ZSAtPSByZXMtPmJhY2t1 cF9zaXplOwogCQltdXRleF91bmxvY2soJmRldl9wcml2LT5jbWRidWZfbXV0ZXgpOwogCX0KLQl2 bXdfM2RfcmVzb3VyY2VfZGVjKGRldl9wcml2LCBmYWxzZSk7CisJdm13X2ZpZm9fcmVzb3VyY2Vf ZGVjKGRldl9wcml2KTsKIH0KIAogLyoqCkBAIC01NzYsMTQgKzU3NiwxNCBAQCBzdGF0aWMgaW50 IHZtd19zdXJmYWNlX2luaXQoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiwKIAogCUJVR19P TihyZXNfZnJlZSA9PSBOVUxMKTsKIAlpZiAoIWRldl9wcml2LT5oYXNfbW9iKQotCQkodm9pZCkg dm13XzNkX3Jlc291cmNlX2luYyhkZXZfcHJpdiwgZmFsc2UpOworCQl2bXdfZmlmb19yZXNvdXJj ZV9pbmMoZGV2X3ByaXYpOwogCXJldCA9IHZtd19yZXNvdXJjZV9pbml0KGRldl9wcml2LCByZXMs IHRydWUsIHJlc19mcmVlLAogCQkJCShkZXZfcHJpdi0+aGFzX21vYikgPyAmdm13X2diX3N1cmZh Y2VfZnVuYyA6CiAJCQkJJnZtd19sZWdhY3lfc3VyZmFjZV9mdW5jKTsKIAogCWlmICh1bmxpa2Vs eShyZXQgIT0gMCkpIHsKIAkJaWYgKCFkZXZfcHJpdi0+aGFzX21vYikKLQkJCXZtd18zZF9yZXNv dXJjZV9kZWMoZGV2X3ByaXYsIGZhbHNlKTsKKwkJCXZtd19maWZvX3Jlc291cmNlX2RlYyhkZXZf cHJpdik7CiAJCXJlc19mcmVlKHJlcyk7CiAJCXJldHVybiByZXQ7CiAJfQpAQCAtMTAyOCw3ICsx MDI4LDcgQEAgc3RhdGljIGludCB2bXdfZ2Jfc3VyZmFjZV9jcmVhdGUoc3RydWN0IHZtd19yZXNv dXJjZSAqcmVzKQogCWlmIChsaWtlbHkocmVzLT5pZCAhPSAtMSkpCiAJCXJldHVybiAwOwogCi0J KHZvaWQpIHZtd18zZF9yZXNvdXJjZV9pbmMoZGV2X3ByaXYsIGZhbHNlKTsKKwl2bXdfZmlmb19y ZXNvdXJjZV9pbmMoZGV2X3ByaXYpOwogCXJldCA9IHZtd19yZXNvdXJjZV9hbGxvY19pZChyZXMp OwogCWlmICh1bmxpa2VseShyZXQgIT0gMCkpIHsKIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYWxs b2NhdGUgYSBzdXJmYWNlIGlkLlxuIik7CkBAIC0xMDY4LDcgKzEwNjgsNyBAQCBzdGF0aWMgaW50 IHZtd19nYl9zdXJmYWNlX2NyZWF0ZShzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMpCiBvdXRfbm9f ZmlmbzoKIAl2bXdfcmVzb3VyY2VfcmVsZWFzZV9pZChyZXMpOwogb3V0X25vX2lkOgotCXZtd18z ZF9yZXNvdXJjZV9kZWMoZGV2X3ByaXYsIGZhbHNlKTsKKwl2bXdfZmlmb19yZXNvdXJjZV9kZWMo ZGV2X3ByaXYpOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTEyMTMsNyArMTIxMyw3IEBAIHN0YXRp YyBpbnQgdm13X2diX3N1cmZhY2VfZGVzdHJveShzdHJ1Y3Qgdm13X3Jlc291cmNlICpyZXMpCiAJ dm13X2ZpZm9fY29tbWl0KGRldl9wcml2LCBzaXplb2YoKmNtZCkpOwogCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPmJpbmRpbmdfbXV0ZXgpOwogCXZtd19yZXNvdXJjZV9yZWxlYXNlX2lkKHJlcyk7 Ci0Jdm13XzNkX3Jlc291cmNlX2RlYyhkZXZfcHJpdiwgZmFsc2UpOworCXZtd19maWZvX3Jlc291 cmNlX2RlYyhkZXZfcHJpdik7CiAKIAlyZXR1cm4gMDsKIH0KLS0gCjIuMS4wCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK