From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 20312CD6E57 for ; Wed, 3 Jun 2026 22:26:05 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7F79A11242E; Wed, 3 Jun 2026 22:26:04 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=igalia.com header.i=@igalia.com header.b="cnFP6RN/"; dkim-atps=neutral Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) by gabe.freedesktop.org (Postfix) with ESMTPS id 69BA211242E for ; Wed, 3 Jun 2026 22:26:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Cc:To:In-Reply-To:References:Message-Id: Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:Sender: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=GYGorHaFaIogamLgUMnAjU+HqEKH/VzmqnzAfaBGY90=; b=cnFP6RN/wcZIEMZEa8CgafR4JC wAWc3sKMfW7l2bPuU5r4G5Dhvz8b17onrVYFK4u/kXDqrBn28OhV0NCwDMGpSigAeZatMRqhSk4Cz nKMe2e7ix44L84aHXvAabXv4cG/Ysg3G41k4DnssQif9po1rgf0ZDw96C1Qy+Vwd3Q7DLvbewsBia LtWLvFkt9CcBUdv/jUhUYi5p9vDMeP2EvzcysRXMYgNVOYaa1RB2KyBagy5E9/tpWNQvgCNMCsN1/ 7l1aizYHecHsbtbYBjd9OjC65gkHSF1I6qC5j9LxI42N3OJ1M529hPP0tJcLtHhw1ldOzFrOaZFaa KclITT8Q==; Received: from [189.7.87.67] (helo=[10.0.0.1]) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256) (Exim) id 1wUu29-00CNgx-HZ; Thu, 04 Jun 2026 00:25:57 +0200 From: =?utf-8?q?Ma=C3=ADra_Canal?= Date: Wed, 03 Jun 2026 19:25:12 -0300 Subject: [PATCH v3 10/14] drm/v3d: Convert submit helpers to operate on struct v3d_submit MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-Id: <20260603-v3d-sched-misc-fixes-v3-10-d7114bba55a0@igalia.com> References: <20260603-v3d-sched-misc-fixes-v3-0-d7114bba55a0@igalia.com> In-Reply-To: <20260603-v3d-sched-misc-fixes-v3-0-d7114bba55a0@igalia.com> To: Melissa Wen , Iago Toral , Tvrtko Ursulin , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , =?utf-8?q?Christian_K=C3=B6nig?= Cc: kernel-dev@igalia.com, dri-devel@lists.freedesktop.org, =?utf-8?q?Ma=C3=ADra_Canal?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=18404; i=mcanal@igalia.com; h=from:subject:message-id; bh=dkPh6yDFUM28JiwqCo7uSPVKHAiGJyXZ/djh6RZ6UNM=; b=owEBbQGS/pANAwAKAT/zDop2iPqqAcsmYgBqIKnGMPbq7xXuBTdiej1iK3EZvh/QLrz9cCG56 yCh8/Eyu8qJATMEAAEKAB0WIQT45F19ARZ3Bymmd9E/8w6Kdoj6qgUCaiCpxgAKCRA/8w6Kdoj6 qqI6B/47sGf6GefUXmoGuVQTmBqyVmozOq7H0jippZpnrxDYXoZ0txctYyx1pX6srwzNdkbABSR 6gXMi13HeZI8e2QtWASx2SuZjMFSuqGkK8IFhWzVBvS24j/yfAzLA3Tx+ooT2Ybz8NtGW8q5GBs aJKfIREIww+x+XVgIKCANVmHnN+o1E8opw+o9GyxCtFL6RTiqOz4cTV/Qm5B88yZhL43B7HXIyz uWRmJudwVI6XW0oPdwSiTsHzwRbe4I+N+MBVw5izyOpbM+vzgTqMTJkAKoc6TNaxPvRStRDTWiB mk26PC14l9ks8UqsQuMbhnu/fgfiROk+w7Zp/2nFWZK7qOPf X-Developer-Key: i=mcanal@igalia.com; a=openpgp; fpr=F8E45D7D0116770729A677D13FF30E8A7688FAAA X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" R2VuZXJhbGl6ZSB0aGUgc3VibWlzc2lvbiBoZWxwZXJzIHNvIHRoZXkgYWN0IG9uIGEgd2hvbGUg c3RydWN0IHYzZF9zdWJtaXQKKHRoZSBlbnRpcmUgam9iIGNoYWluKSByYXRoZXIgdGhhbiBvbiBp bmRpdmlkdWFsIGpvYnMgYW5kIGEgZHJtX2V4ZWMuIFRoaXMKbGV0cyBhIHN1Ym1pc3Npb24gb2Yg c2V2ZXJhbCBjaGFpbmVkIGpvYnMgYmUgbG9ja2VkLCBmZW5jZWQsIGFuZCBmaW5hbGl6ZWQKYXMg YSBzaW5nbGUgdW5pdCwgYW5kIGlzIHRoZSBncm91bmR3b3JrIGZvciBjb2xsYXBzaW5nIHRoZSBp bmRpcmVjdCBDU0QKcGF0aCBpbnRvIG9uZSBjaGFpbi4KClRoZSBmb2xsb3dpbmcgaGVscGVycyB3 ZXJlIGdlbmVyYWxpemVkOgoKICAtIHYzZF9sb29rdXBfYm9zKCkKICAtIHYzZF9sb2NrX2JvX3Jl c2VydmF0aW9ucygpIChyZW5hbWVkIHRvIHYzZF9zdWJtaXRfbG9ja19yZXNlcnZhdGlvbnMoKSk6 CiAgLSB2M2RfYXR0YWNoX2ZlbmNlc19hbmRfdW5sb2NrX3Jlc2VydmF0aW9uKCkKICAtIHYzZF9z ZXR1cF9jc2Rfam9ic19hbmRfYm9zKCkKCk5vdywgdGhlIGxvY2tpbmcgaGVscGVyIG5vdyBpdGVy YXRlcyBvdmVyIGFsbCBqb2JzIGFuZCBsb2NrcyB0aGUgdW5pb24gb2YKdGhlaXIgQk9zIHVuZGVy IG9uZSBEUk0gZXhlYywgdXNpbmcgRFJNX0VYRUNfSUdOT1JFX0RVUExJQ0FURVMgdG8gdG9sZXJh dGUKc2hhcmVkIEJPIHJlZmVyZW5jZXMuIFRoZSBmZW5jZS1hdHRhY2ggaGVscGVyIHNpbWlsYXJs eSB3YWxrcyBldmVyeSBqb2IKYW5kIGF0dGFjaGVzIHRoZSBjaGFpbidzIGxhc3QgZmVuY2UgdG8g YWxsIHRvdWNoZWQgQk9zLgoKQWxzbywgdjNkX3N1Ym1pdF9qb2JzKCkgYmVjb21lcyB0aGUgc2lu Z2xlIHN1Ym1pdC1hbmQtZmluYWxpemUgZW50cnkKcG9pbnQgYW5kIGNhbGxlcnMgbm8gbG9uZ2Vy IG5lZWQgdG8gb3Blbi1jb2RlIGZlbmNlIGF0dGFjaG1lbnQsCnJlc2VydmF0aW9uIHVubG9ja2lu ZywgZXRjLgoKVXBkYXRlIENML1RGVS9DU0QvQ1BVIGlvY3RscyB0byB1c2UgdGhlIG5ldyBoZWxw ZXIgc2lnbmF0dXJlcy4gVGhlIENQVQppb2N0bCBzdGlsbCB1c2VzIHR3byBzdHJ1Y3QgdjNkX3N1 Ym1pdCBpbnN0YW5jZXMgKG9uZSBmb3IgdGhlIENQVSBqb2IsCm9uZSBmb3IgdGhlIGluZGlyZWN0 IENTRCBqb2JzKSBhbmQga2VlcHMgaXRzIG1hbnVhbCB0d28tcGFzcyBmZW5jZS1hdHRhY2gKZmxv dy4gQ29udmVydGluZyB0aGUgaW5kaXJlY3QgQ1NEIHBhdGggaW50byB0aGUgdW5pZmllZCBjaGFp biBpcyBkb25lIGluCnRoZSBuZXh0IGNvbW1pdC4KCk5vIGZ1bmN0aW9uYWwgY2hhbmdlLgoKU2ln bmVkLW9mZi1ieTogTWHDrXJhIENhbmFsIDxtY2FuYWxAaWdhbGlhLmNvbT4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vdjNkL3YzZF9zdWJtaXQuYyB8IDM0MCArKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMjggaW5zZXJ0aW9ucygrKSwgMjEyIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3N1Ym1pdC5j IGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2Rfc3VibWl0LmMKaW5kZXggNjRlYmE5MTJkYzY0Li42 MmMyM2ZlYjhmYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3N1Ym1pdC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3N1Ym1pdC5jCkBAIC0yMCwzMiArMjAsNTEg QEAKICAqIHRvIHYzZCwgc28gd2UgZG9uJ3QgYXR0YWNoIGRtYS1idWYgZmVuY2VzIHRvIHRoZW0u CiAgKi8KIHN0YXRpYyBpbnQKLXYzZF9sb2NrX2JvX3Jlc2VydmF0aW9ucyhzdHJ1Y3QgdjNkX2pv YiAqam9iLCBzdHJ1Y3QgZHJtX2V4ZWMgKmV4ZWMpCit2M2Rfc3VibWl0X2xvY2tfcmVzZXJ2YXRp b25zKHN0cnVjdCB2M2Rfc3VibWl0ICpzdWJtaXQpCiB7Ci0JaW50IGksIHJldDsKKwlpbnQgaSwg aiwgcmV0OwogCi0JZHJtX2V4ZWNfaW5pdChleGVjLCBEUk1fRVhFQ19JTlRFUlJVUFRJQkxFX1dB SVQsIGpvYi0+Ym9fY291bnQpOwotCWRybV9leGVjX3VudGlsX2FsbF9sb2NrZWQoZXhlYykgewot CQlyZXQgPSBkcm1fZXhlY19wcmVwYXJlX2FycmF5KGV4ZWMsIGpvYi0+Ym8sIGpvYi0+Ym9fY291 bnQsIDEpOwotCX0KKwlkcm1fZXhlY19pbml0KCZzdWJtaXQtPmV4ZWMsCisJCSAgICAgIERSTV9F WEVDX0lOVEVSUlVQVElCTEVfV0FJVCB8IERSTV9FWEVDX0lHTk9SRV9EVVBMSUNBVEVTLCAwKTsK Kwlkcm1fZXhlY191bnRpbF9hbGxfbG9ja2VkKCZzdWJtaXQtPmV4ZWMpIHsKKwkJZm9yIChpID0g MDsgaSA8IHN1Ym1pdC0+am9iX2NvdW50OyBpKyspIHsKKwkJCXN0cnVjdCB2M2Rfam9iICpqb2Ig PSBzdWJtaXQtPmpvYnNbaV07CiAKLQlpZiAocmV0KQotCQlnb3RvIGZhaWw7Ci0KLQlmb3IgKGkg PSAwOyBpIDwgam9iLT5ib19jb3VudDsgaSsrKSB7Ci0JCXJldCA9IGRybV9zY2hlZF9qb2JfYWRk X2ltcGxpY2l0X2RlcGVuZGVuY2llcygmam9iLT5iYXNlLAotCQkJCQkJCSAgICAgIGpvYi0+Ym9b aV0sIHRydWUpOworCQkJcmV0ID0gZHJtX2V4ZWNfcHJlcGFyZV9hcnJheSgmc3VibWl0LT5leGVj LCBqb2ItPmJvLAorCQkJCQkJICAgICBqb2ItPmJvX2NvdW50LCAxKTsKKwkJCWlmIChyZXQpCisJ CQkJYnJlYWs7CisJCX0KKwkJZHJtX2V4ZWNfcmV0cnlfb25fY29udGVudGlvbigmc3VibWl0LT5l eGVjKTsKIAkJaWYgKHJldCkKIAkJCWdvdG8gZmFpbDsKIAl9CiAKKwlmb3IgKGkgPSAwOyBpIDwg c3VibWl0LT5qb2JfY291bnQ7IGkrKykgeworCQlzdHJ1Y3QgdjNkX2pvYiAqam9iID0gc3VibWl0 LT5qb2JzW2ldOworCisJCWZvciAoaiA9IDA7IGogPCBqb2ItPmJvX2NvdW50OyBqKyspIHsKKwkJ CXJldCA9IGRybV9zY2hlZF9qb2JfYWRkX2ltcGxpY2l0X2RlcGVuZGVuY2llcygmam9iLT5iYXNl LAorCQkJCQkJCQkgICAgICBqb2ItPmJvW2pdLAorCQkJCQkJCQkgICAgICB0cnVlKTsKKwkJCWlm IChyZXQpCisJCQkJZ290byBmYWlsOworCQl9CisJfQorCiAJcmV0dXJuIDA7CiAKIGZhaWw6Ci0J ZHJtX2V4ZWNfZmluaShleGVjKTsKKwlkcm1fZXhlY19maW5pKCZzdWJtaXQtPmV4ZWMpOwogCXJl dHVybiByZXQ7CiB9CiAKK3N0YXRpYyB2b2lkCit2M2Rfc3VibWl0X3VubG9ja19yZXNlcnZhdGlv bnMoc3RydWN0IHYzZF9zdWJtaXQgKnN1Ym1pdCkKK3sKKwlkcm1fZXhlY19maW5pKCZzdWJtaXQt PmV4ZWMpOworfQorCiAvKioKICAqIHYzZF9sb29rdXBfYm9zKCkgLSBTZXRzIHVwIGpvYi0+Ym9b XSB3aXRoIHRoZSBHRU0gb2JqZWN0cwogICogcmVmZXJlbmNlZCBieSB0aGUgam9iLgpAQCAtNjMs MjUgKzgyLDIzIEBAIHYzZF9sb2NrX2JvX3Jlc2VydmF0aW9ucyhzdHJ1Y3QgdjNkX2pvYiAqam9i LCBzdHJ1Y3QgZHJtX2V4ZWMgKmV4ZWMpCiAgKiBmYWlsdXJlLCBiZWNhdXNlIHRoYXQgd2lsbCBo YXBwZW4gYXQgYHYzZF9qb2JfZnJlZSgpYC4KICAqLwogc3RhdGljIGludAotdjNkX2xvb2t1cF9i b3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxl X3ByaXYsCi0JICAgICAgIHN0cnVjdCB2M2Rfam9iICpqb2IsCi0JICAgICAgIHU2NCBib19oYW5k bGVzLAotCSAgICAgICB1MzIgYm9fY291bnQpCit2M2RfbG9va3VwX2JvcyhzdHJ1Y3QgdjNkX3N1 Ym1pdCAqc3VibWl0LCB1NjQgYm9faGFuZGxlcywgdTMyIGJvX2NvdW50KQogewotCWpvYi0+Ym9f Y291bnQgPSBib19jb3VudDsKKwlzdHJ1Y3QgdjNkX2pvYiAqbGFzdF9qb2IgPSBzdWJtaXQtPmpv YnNbc3VibWl0LT5qb2JfY291bnQgLSAxXTsKIAotCWlmICgham9iLT5ib19jb3VudCkgeworCWxh c3Rfam9iLT5ib19jb3VudCA9IGJvX2NvdW50OworCisJaWYgKCFsYXN0X2pvYi0+Ym9fY291bnQp IHsKIAkJLyogU2VlIGNvbW1lbnQgb24gYm9faW5kZXggZm9yIHdoeSB3ZSBoYXZlIHRvIGNoZWNr CiAJCSAqIHRoaXMuCiAJCSAqLwotCQlkcm1fd2FybihkZXYsICJSZW5kZXJpbmcgcmVxdWlyZXMg Qk9zXG4iKTsKKwkJZHJtX3dhcm4oJnN1Ym1pdC0+djNkLT5kcm0sICJSZW5kZXJpbmcgcmVxdWly ZXMgQk9zXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JcmV0dXJuIGRybV9nZW1fb2Jq ZWN0c19sb29rdXAoZmlsZV9wcml2LAorCXJldHVybiBkcm1fZ2VtX29iamVjdHNfbG9va3VwKHN1 Ym1pdC0+ZmlsZV9wcml2LAogCQkJCSAgICAgICh2b2lkIF9fdXNlciAqKSh1aW50cHRyX3QpYm9f aGFuZGxlcywKLQkJCQkgICAgICBqb2ItPmJvX2NvdW50LCAmam9iLT5ibyk7CisJCQkJICAgICAg bGFzdF9qb2ItPmJvX2NvdW50LCAmbGFzdF9qb2ItPmJvKTsKIH0KIAogc3RhdGljIHZvaWQKQEAg LTE2MCwyNSArMTc3LDYgQEAgdm9pZCB2M2Rfam9iX3B1dChzdHJ1Y3QgdjNkX2pvYiAqam9iKQog CWtyZWZfcHV0KCZqb2ItPnJlZmNvdW50LCBqb2ItPmZyZWUpOwogfQogCi1zdGF0aWMgaW50Ci12 M2Rfam9iX2FsbG9jYXRlKHN0cnVjdCB2M2RfZGV2ICp2M2QsIHZvaWQgKipjb250YWluZXIsIHNp emVfdCBzaXplKQotewotCSpjb250YWluZXIgPSBrY2FsbG9jKDEsIHNpemUsIEdGUF9LRVJORUwp OwotCWlmICghKmNvbnRhaW5lcikgewotCQlkcm1fZXJyKCZ2M2QtPmRybSwgIkNhbm5vdCBhbGxv Y2F0ZSBtZW1vcnkgZm9yIFYzRCBqb2IuXG4iKTsKLQkJcmV0dXJuIC1FTk9NRU07Ci0JfQotCi0J cmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB2b2lkCi12M2Rfam9iX2RlYWxsb2NhdGUodm9pZCAqKmNv bnRhaW5lcikKLXsKLQlrZnJlZSgqY29udGFpbmVyKTsKLQkqY29udGFpbmVyID0gTlVMTDsKLX0K LQogc3RhdGljIGludAogdjNkX2pvYl9hZGRfc3luY29ianMoc3RydWN0IHYzZF9qb2IgKmpvYiwg c3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCiAJCSAgICAgdTMyIGluX3N5bmMsIHN0cnVjdCB2 M2Rfc3VibWl0X2V4dCAqc2UpCkBAIC0yMTksNDggKzIxNyw2IEBAIHYzZF9qb2JfYWRkX3N5bmNv YmpzKHN0cnVjdCB2M2Rfam9iICpqb2IsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAogCXJl dHVybiAwOwogfQogCi1zdGF0aWMgaW50Ci12M2Rfam9iX2luaXQoc3RydWN0IHYzZF9kZXYgKnYz ZCwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCi0JICAgICBzdHJ1Y3QgdjNkX2pvYiAqam9i LCB2b2lkICgqZnJlZSkoc3RydWN0IGtyZWYgKnJlZiksCi0JICAgICB1MzIgaW5fc3luYywgc3Ry dWN0IHYzZF9zdWJtaXRfZXh0ICpzZSwgZW51bSB2M2RfcXVldWUgcXVldWUpCi17Ci0Jc3RydWN0 IHYzZF9maWxlX3ByaXYgKnYzZF9wcml2ID0gZmlsZV9wcml2LT5kcml2ZXJfcHJpdjsKLQlpbnQg cmV0OwotCi0Jam9iLT52M2QgPSB2M2Q7Ci0Jam9iLT5mcmVlID0gZnJlZTsKLQlqb2ItPnF1ZXVl ID0gcXVldWU7Ci0Jam9iLT5maWxlX3ByaXYgPSB2M2RfcHJpdjsKLQotCXJldCA9IGRybV9zY2hl ZF9qb2JfaW5pdCgmam9iLT5iYXNlLCAmdjNkX3ByaXYtPnNjaGVkX2VudGl0eVtxdWV1ZV0sCi0J CQkJIDEsIHYzZF9wcml2LCBmaWxlX3ByaXYtPmNsaWVudF9pZCk7Ci0JaWYgKHJldCkKLQkJcmV0 dXJuIHJldDsKLQotCXJldCA9IHYzZF9qb2JfYWRkX3N5bmNvYmpzKGpvYiwgZmlsZV9wcml2LCBp bl9zeW5jLCBzZSk7Ci0JaWYgKHJldCkKLQkJZ290byBmYWlsX2pvYl9pbml0OwotCi0JLyogQ1BV IGpvYnMgZG9uJ3QgcmVxdWlyZSBoYXJkd2FyZSByZXNvdXJjZXMgKi8KLQlpZiAocXVldWUgIT0g VjNEX0NQVSkgewotCQlyZXQgPSB2M2RfcG1fcnVudGltZV9nZXQodjNkKTsKLQkJaWYgKHJldCkK LQkJCWdvdG8gZmFpbF9qb2JfaW5pdDsKLQkJam9iLT5oYXNfcG1fcmVmID0gdHJ1ZTsKLQl9Ci0K LQlrcmVmX2luaXQoJmpvYi0+cmVmY291bnQpOwotCi0Jam9iLT5jbGllbnRfc3RhdHMgPSB2M2Rf c3RhdHNfZ2V0KHYzZF9wcml2LT5zdGF0c1txdWV1ZV0pOwotCWpvYi0+Z2xvYmFsX3N0YXRzID0g djNkX3N0YXRzX2dldCh2M2QtPnF1ZXVlW3F1ZXVlXS5zdGF0cyk7Ci0KLQlyZXR1cm4gMDsKLQot ZmFpbF9qb2JfaW5pdDoKLQlkcm1fc2NoZWRfam9iX2NsZWFudXAoJmpvYi0+YmFzZSk7Ci0JcmV0 dXJuIHJldDsKLX0KLQogc3RhdGljIGNvbnN0IHN0cnVjdCB7CiAJc2l6ZV90IHNpemU7CiAJdm9p ZCAoKmZyZWUpKHN0cnVjdCBrcmVmICpyZWYpOwpAQCAtMzYzLDMxICszMTksMzQgQEAgdjNkX2F0 dGFjaF9wZXJmbW9uX3RvX2pvYnMoc3RydWN0IHYzZF9zdWJtaXQgKnN1Ym1pdCwgdTMyIHBlcmZt b25faWQpCiB9CiAKIHN0YXRpYyB2b2lkCi12M2RfYXR0YWNoX2ZlbmNlc19hbmRfdW5sb2NrX3Jl c2VydmF0aW9uKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAotCQkJCQkgc3RydWN0IHYzZF9q b2IgKmpvYiwKLQkJCQkJIHN0cnVjdCBkcm1fZXhlYyAqZXhlYywKLQkJCQkJIHUzMiBvdXRfc3lu YywKLQkJCQkJIHN0cnVjdCB2M2Rfc3VibWl0X2V4dCAqc2UsCi0JCQkJCSBzdHJ1Y3QgZG1hX2Zl bmNlICpkb25lX2ZlbmNlKQordjNkX2F0dGFjaF9mZW5jZXNfYW5kX3VubG9ja19yZXNlcnZhdGlv bihzdHJ1Y3QgdjNkX3N1Ym1pdCAqc3VibWl0LAorCQkJCQkgdTMyIG91dF9zeW5jLCBzdHJ1Y3Qg djNkX3N1Ym1pdF9leHQgKnNlKQogewotCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY19vdXQ7CiAJ Ym9vbCBoYXNfbXVsdGlzeW5jID0gc2UgJiYgKHNlLT5mbGFncyAmIERSTV9WM0RfRVhUX0lEX01V TFRJX1NZTkMpOwotCWludCBpOworCXN0cnVjdCB2M2Rfam9iICpsYXN0X2pvYiA9IHN1Ym1pdC0+ am9ic1tzdWJtaXQtPmpvYl9jb3VudCAtIDFdOworCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY19v dXQ7CiAKLQlmb3IgKGkgPSAwOyBpIDwgam9iLT5ib19jb3VudDsgaSsrKSB7Ci0JCS8qIFhYWDog VXNlIHNoYXJlZCBmZW5jZXMgZm9yIHJlYWQtb25seSBvYmplY3RzLiAqLwotCQlkbWFfcmVzdl9h ZGRfZmVuY2Uoam9iLT5ib1tpXS0+cmVzdiwgam9iLT5kb25lX2ZlbmNlLAotCQkJCSAgIERNQV9S RVNWX1VTQUdFX1dSSVRFKTsKKwkvKiBUaGUgc3VibWlzc2lvbidzIGxhc3QgZmVuY2UgY292ZXJz IHRoZSBlbnRpcmUgc3VibWlzc2lvbi4gQXR0YWNoIGl0CisJICogdG8gZXZlcnkgQk8gdG91Y2hl ZCBieSBhbnkgam9iIGluIHRoZSBzdWJtaXNzaW9uLgorCSAqLworCWZvciAoaW50IGkgPSAwOyBp IDwgc3VibWl0LT5qb2JfY291bnQ7IGkrKykgeworCQlzdHJ1Y3QgdjNkX2pvYiAqam9iID0gc3Vi bWl0LT5qb2JzW2ldOworCisJCWZvciAoaW50IGogPSAwOyBqIDwgam9iLT5ib19jb3VudDsgaisr KSB7CisJCQkvKiBYWFg6IFVzZSBzaGFyZWQgZmVuY2VzIGZvciByZWFkLW9ubHkgb2JqZWN0cy4g Ki8KKwkJCWRtYV9yZXN2X2FkZF9mZW5jZShqb2ItPmJvW2pdLT5yZXN2LCBsYXN0X2pvYi0+ZG9u ZV9mZW5jZSwKKwkJCQkJICAgRE1BX1JFU1ZfVVNBR0VfV1JJVEUpOworCQl9CiAJfQogCi0JZHJt X2V4ZWNfZmluaShleGVjKTsKKwl2M2Rfc3VibWl0X3VubG9ja19yZXNlcnZhdGlvbnMoc3VibWl0 KTsKIAogCS8qIFVwZGF0ZSB0aGUgcmV0dXJuIHN5bmMgb2JqZWN0IGZvciB0aGUgam9iICovCiAJ LyogSWYgaXQgb25seSBzdXBwb3J0cyBhIHNpbmdsZSBzaWduYWwgc2VtYXBob3JlKi8KIAlpZiAo IWhhc19tdWx0aXN5bmMpIHsKLQkJc3luY19vdXQgPSBkcm1fc3luY29ial9maW5kKGZpbGVfcHJp diwgb3V0X3N5bmMpOworCQlzeW5jX291dCA9IGRybV9zeW5jb2JqX2ZpbmQoc3VibWl0LT5maWxl X3ByaXYsIG91dF9zeW5jKTsKIAkJaWYgKHN5bmNfb3V0KSB7Ci0JCQlkcm1fc3luY29ial9yZXBs YWNlX2ZlbmNlKHN5bmNfb3V0LCBkb25lX2ZlbmNlKTsKKwkJCWRybV9zeW5jb2JqX3JlcGxhY2Vf ZmVuY2Uoc3luY19vdXQsIGxhc3Rfam9iLT5kb25lX2ZlbmNlKTsKIAkJCWRybV9zeW5jb2JqX3B1 dChzeW5jX291dCk7CiAJCX0KIAkJcmV0dXJuOwpAQCAtMzk1LDkgKzM1NCw5IEBAIHYzZF9hdHRh Y2hfZmVuY2VzX2FuZF91bmxvY2tfcmVzZXJ2YXRpb24oc3RydWN0IGRybV9maWxlICpmaWxlX3By aXYsCiAKIAkvKiBJZiBtdWx0aXBsZSBzZW1hcGhvcmVzIGV4dGVuc2lvbiBpcyBzdXBwb3J0ZWQg Ki8KIAlpZiAoc2UtPm91dF9zeW5jX2NvdW50KSB7Ci0JCWZvciAoaSA9IDA7IGkgPCBzZS0+b3V0 X3N5bmNfY291bnQ7IGkrKykgeworCQlmb3IgKGludCBpID0gMDsgaSA8IHNlLT5vdXRfc3luY19j b3VudDsgaSsrKSB7CiAJCQlkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHNlLT5vdXRfc3luY3Nb aV0uc3luY29iaiwKLQkJCQkJCSAgZG9uZV9mZW5jZSk7CisJCQkJCQkgIGxhc3Rfam9iLT5kb25l X2ZlbmNlKTsKIAkJCWRybV9zeW5jb2JqX3B1dChzZS0+b3V0X3N5bmNzW2ldLnN5bmNvYmopOwog CQl9CiAJCWt2ZnJlZShzZS0+b3V0X3N5bmNzKTsKQEAgLTQxOCw3ICszNzcsOCBAQCB2M2RfcHVz aF9qb2Ioc3RydWN0IHYzZF9qb2IgKmpvYikKIH0KIAogc3RhdGljIGludAotdjNkX3N1Ym1pdF9q b2JzKHN0cnVjdCB2M2Rfc3VibWl0ICpzdWJtaXQpCit2M2Rfc3VibWl0X2pvYnMoc3RydWN0IHYz ZF9zdWJtaXQgKnN1Ym1pdCwgdTMyIG91dF9zeW5jLAorCQlzdHJ1Y3QgdjNkX3N1Ym1pdF9leHQg KnNlKQogewogCXN0cnVjdCB2M2RfZGV2ICp2M2QgPSBzdWJtaXQtPnYzZDsKIAlpbnQgcmV0ID0g MDsKQEAgLTQzOCw1MiArMzk4LDQyIEBAIHYzZF9zdWJtaXRfam9icyhzdHJ1Y3QgdjNkX3N1Ym1p dCAqc3VibWl0KQogCQl9CiAJfQogCisJbXV0ZXhfdW5sb2NrKCZ2M2QtPnNjaGVkX2xvY2spOwor CisJdjNkX2F0dGFjaF9mZW5jZXNfYW5kX3VubG9ja19yZXNlcnZhdGlvbihzdWJtaXQsIG91dF9z eW5jLCBzZSk7CisJdjNkX3N1Ym1pdF9wdXRfam9icyhzdWJtaXQpOworCisJcmV0dXJuIDA7CisK IGVycjoKIAltdXRleF91bmxvY2soJnYzZC0+c2NoZWRfbG9jayk7CiAJcmV0dXJuIHJldDsKIH0K IAogc3RhdGljIGludAotdjNkX3NldHVwX2NzZF9qb2JzX2FuZF9ib3Moc3RydWN0IGRybV9maWxl ICpmaWxlX3ByaXYsCi0JCQkgICBzdHJ1Y3QgdjNkX2RldiAqdjNkLAordjNkX3NldHVwX2NzZF9q b2JzX2FuZF9ib3Moc3RydWN0IHYzZF9zdWJtaXQgKnN1Ym1pdCwKIAkJCSAgIHN0cnVjdCBkcm1f djNkX3N1Ym1pdF9jc2QgKmFyZ3MsCi0JCQkgICBzdHJ1Y3QgdjNkX2NzZF9qb2IgKipqb2IsCi0J CQkgICBzdHJ1Y3QgdjNkX2pvYiAqKmNsZWFuX2pvYiwKLQkJCSAgIHN0cnVjdCB2M2Rfc3VibWl0 X2V4dCAqc2UsCi0JCQkgICBzdHJ1Y3QgZHJtX2V4ZWMgKmV4ZWMpCisJCQkgICBzdHJ1Y3QgdjNk X3N1Ym1pdF9leHQgKnNlKQogeworCXN0cnVjdCB2M2RfY3NkX2pvYiAqam9iOworCXN0cnVjdCB2 M2Rfam9iICpjbGVhbl9qb2I7CiAJaW50IHJldDsKIAotCXJldCA9IHYzZF9qb2JfYWxsb2NhdGUo djNkLCAodm9pZCAqKWpvYiwgc2l6ZW9mKCoqam9iKSk7CisJam9iID0gKHN0cnVjdCB2M2RfY3Nk X2pvYiAqKSB2M2Rfc3VibWl0X2FkZF9qb2Ioc3VibWl0LCBWM0RfQ1NEKTsKKwlpZiAoSVNfRVJS KGpvYikpCisJCXJldHVybiBQVFJfRVJSKGpvYik7CisKKwlyZXQgPSB2M2Rfam9iX2FkZF9zeW5j b2Jqcygmam9iLT5iYXNlLCBzdWJtaXQtPmZpbGVfcHJpdiwgYXJncy0+aW5fc3luYywgc2UpOwog CWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXQgPSB2M2Rfam9iX2luaXQodjNkLCBmaWxl X3ByaXYsICYoKmpvYiktPmJhc2UsCi0JCQkgICB2M2Rfam9iX2ZyZWUsIGFyZ3MtPmluX3N5bmMs IHNlLCBWM0RfQ1NEKTsKLQlpZiAocmV0KSB7Ci0JCXYzZF9qb2JfZGVhbGxvY2F0ZSgodm9pZCAq KWpvYik7Ci0JCXJldHVybiByZXQ7Ci0JfQorCWpvYi0+YXJncyA9ICphcmdzOwogCi0JcmV0ID0g djNkX2pvYl9hbGxvY2F0ZSh2M2QsICh2b2lkICopY2xlYW5fam9iLCBzaXplb2YoKipjbGVhbl9q b2IpKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCWNsZWFuX2pvYiA9IHYzZF9zdWJtaXRf YWRkX2pvYihzdWJtaXQsIFYzRF9DQUNIRV9DTEVBTik7CisJaWYgKElTX0VSUihjbGVhbl9qb2Ip KQorCQlyZXR1cm4gUFRSX0VSUihjbGVhbl9qb2IpOwogCi0JcmV0ID0gdjNkX2pvYl9pbml0KHYz ZCwgZmlsZV9wcml2LCAqY2xlYW5fam9iLAotCQkJICAgdjNkX2pvYl9mcmVlLCAwLCBOVUxMLCBW M0RfQ0FDSEVfQ0xFQU4pOwotCWlmIChyZXQpIHsKLQkJdjNkX2pvYl9kZWFsbG9jYXRlKCh2b2lk ICopY2xlYW5fam9iKTsKLQkJcmV0dXJuIHJldDsKLQl9Ci0KLQkoKmpvYiktPmFyZ3MgPSAqYXJn czsKLQotCXJldCA9IHYzZF9sb29rdXBfYm9zKCZ2M2QtPmRybSwgZmlsZV9wcml2LCAqY2xlYW5f am9iLAotCQkJICAgICBhcmdzLT5ib19oYW5kbGVzLCBhcmdzLT5ib19oYW5kbGVfY291bnQpOwot CWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQlyZXR1cm4gdjNkX2xvY2tfYm9fcmVzZXJ2YXRp b25zKCpjbGVhbl9qb2IsIGV4ZWMpOworCXJldHVybiB2M2RfbG9va3VwX2JvcyhzdWJtaXQsIGFy Z3MtPmJvX2hhbmRsZXMsIGFyZ3MtPmJvX2hhbmRsZV9jb3VudCk7CiB9CiAKIHN0YXRpYyB2b2lk CkBAIC0xMTIzLDMzICsxMDczLDIyIEBAIHYzZF9zdWJtaXRfY2xfaW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpZiAocmV0KQogCQlnb3RvIGZhaWw7CiAKLQlyZXQg PSB2M2RfbG9va3VwX2JvcyhkZXYsIGZpbGVfcHJpdiwKLQkJCSAgICAgc3VibWl0LmpvYnNbc3Vi bWl0LmpvYl9jb3VudCAtIDFdLAotCQkJICAgICBhcmdzLT5ib19oYW5kbGVzLCBhcmdzLT5ib19o YW5kbGVfY291bnQpOworCXJldCA9IHYzZF9sb29rdXBfYm9zKCZzdWJtaXQsIGFyZ3MtPmJvX2hh bmRsZXMsIGFyZ3MtPmJvX2hhbmRsZV9jb3VudCk7CiAJaWYgKHJldCkKIAkJZ290byBmYWlsOwog Ci0JcmV0ID0gdjNkX2xvY2tfYm9fcmVzZXJ2YXRpb25zKHN1Ym1pdC5qb2JzW3N1Ym1pdC5qb2Jf Y291bnQgLSAxXSwKLQkJCQkgICAgICAgJnN1Ym1pdC5leGVjKTsKKwlyZXQgPSB2M2Rfc3VibWl0 X2xvY2tfcmVzZXJ2YXRpb25zKCZzdWJtaXQpOwogCWlmIChyZXQpCiAJCWdvdG8gZmFpbDsKIAot CXJldCA9IHYzZF9zdWJtaXRfam9icygmc3VibWl0KTsKKwlyZXQgPSB2M2Rfc3VibWl0X2pvYnMo JnN1Ym1pdCwgYXJncy0+b3V0X3N5bmMsICZzZSk7CiAJaWYgKHJldCkKIAkJZ290byBmYWlsX3Vu cmVzZXJ2ZTsKIAotCXYzZF9hdHRhY2hfZmVuY2VzX2FuZF91bmxvY2tfcmVzZXJ2YXRpb24oZmls ZV9wcml2LAotCQkJCQkJIHN1Ym1pdC5qb2JzW3N1Ym1pdC5qb2JfY291bnQgLSAxXSwKLQkJCQkJ CSAmc3VibWl0LmV4ZWMsCi0JCQkJCQkgYXJncy0+b3V0X3N5bmMsICZzZSwKLQkJCQkJCSBzdWJt aXQuam9ic1tzdWJtaXQuam9iX2NvdW50IC0gMV0tPmRvbmVfZmVuY2UpOwotCi0JdjNkX3N1Ym1p dF9wdXRfam9icygmc3VibWl0KTsKLQogCXJldHVybiAwOwogCiBmYWlsX3VucmVzZXJ2ZToKLQlk cm1fZXhlY19maW5pKCZzdWJtaXQuZXhlYyk7CisJdjNkX3N1Ym1pdF91bmxvY2tfcmVzZXJ2YXRp b25zKCZzdWJtaXQpOwogZmFpbDoKIAl2M2Rfc3VibWl0X2NsZWFudXBfam9icygmc3VibWl0KTsK IAl2M2RfcHV0X211bHRpc3luY19wb3N0X2RlcHMoJnNlKTsKQEAgLTEyMjgsMjUgKzExNjcsMTgg QEAgdjNkX3N1Ym1pdF90ZnVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKIAkJam9iLT5iYXNlLmJvW2pvYi0+YmFzZS5ib19jb3VudF0gPSBibzsKIAl9CiAKLQlyZXQg PSB2M2RfbG9ja19ib19yZXNlcnZhdGlvbnMoJmpvYi0+YmFzZSwgJnN1Ym1pdC5leGVjKTsKKwly ZXQgPSB2M2Rfc3VibWl0X2xvY2tfcmVzZXJ2YXRpb25zKCZzdWJtaXQpOwogCWlmIChyZXQpCiAJ CWdvdG8gZmFpbDsKIAotCXJldCA9IHYzZF9zdWJtaXRfam9icygmc3VibWl0KTsKKwlyZXQgPSB2 M2Rfc3VibWl0X2pvYnMoJnN1Ym1pdCwgYXJncy0+b3V0X3N5bmMsICZzZSk7CiAJaWYgKHJldCkK IAkJZ290byBmYWlsX3VucmVzZXJ2ZTsKIAotCXYzZF9hdHRhY2hfZmVuY2VzX2FuZF91bmxvY2tf cmVzZXJ2YXRpb24oZmlsZV9wcml2LAotCQkJCQkJICZqb2ItPmJhc2UsICZzdWJtaXQuZXhlYywK LQkJCQkJCSBhcmdzLT5vdXRfc3luYywgJnNlLAotCQkJCQkJIGpvYi0+YmFzZS5kb25lX2ZlbmNl KTsKLQotCXYzZF9zdWJtaXRfcHV0X2pvYnMoJnN1Ym1pdCk7Ci0KIAlyZXR1cm4gMDsKIAogZmFp bF91bnJlc2VydmU6Ci0JZHJtX2V4ZWNfZmluaSgmc3VibWl0LmV4ZWMpOworCXYzZF9zdWJtaXRf dW5sb2NrX3Jlc2VydmF0aW9ucygmc3VibWl0KTsKIGZhaWw6CiAJdjNkX3N1Ym1pdF9jbGVhbnVw X2pvYnMoJnN1Ym1pdCk7CiAJdjNkX3B1dF9tdWx0aXN5bmNfcG9zdF9kZXBzKCZzZSk7CkBAIC0x MjcwLDggKzEyMDIsNiBAQCB2M2Rfc3VibWl0X2NzZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAogCXN0cnVjdCB2M2Rfc3VibWl0IHN1Ym1pdCA9IHsgLnYzZCA9IHRv X3YzZF9kZXYoZGV2KSwgLmZpbGVfcHJpdiA9IGZpbGVfcHJpdiB9OwogCXN0cnVjdCBkcm1fdjNk X3N1Ym1pdF9jc2QgKmFyZ3MgPSBkYXRhOwogCXN0cnVjdCB2M2Rfc3VibWl0X2V4dCBzZSA9IHsw fTsKLQlzdHJ1Y3QgdjNkX2NzZF9qb2IgKmpvYiA9IE5VTEw7Ci0Jc3RydWN0IHYzZF9qb2IgKmNs ZWFuX2pvYiA9IE5VTEw7CiAJaW50IHJldDsKIAogCXRyYWNlX3YzZF9zdWJtaXRfY3NkX2lvY3Rs KGRldiwgYXJncy0+Y2ZnWzVdLCBhcmdzLT5jZmdbNl0pOwpAQCAtMTI5NywzNCArMTIyNywyNiBA QCB2M2Rfc3VibWl0X2NzZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAogCQl9CiAJfQogCi0JcmV0ID0gdjNkX3NldHVwX2NzZF9qb2JzX2FuZF9ib3MoZmlsZV9wcml2 LCBzdWJtaXQudjNkLCBhcmdzLAotCQkJCQkgJmpvYiwgJmNsZWFuX2pvYiwgJnNlLCAmc3VibWl0 LmV4ZWMpOworCXJldCA9IHYzZF9zZXR1cF9jc2Rfam9ic19hbmRfYm9zKCZzdWJtaXQsIGFyZ3Ms ICZzZSk7CiAJaWYgKHJldCkKIAkJZ290byBmYWlsOwogCi0Jc3VibWl0LmpvYnNbc3VibWl0Lmpv Yl9jb3VudCsrXSA9ICZqb2ItPmJhc2U7Ci0Jc3VibWl0LmpvYnNbc3VibWl0LmpvYl9jb3VudCsr XSA9IGNsZWFuX2pvYjsKLQogCXJldCA9IHYzZF9hdHRhY2hfcGVyZm1vbl90b19qb2JzKCZzdWJt aXQsIGFyZ3MtPnBlcmZtb25faWQpOwogCWlmIChyZXQpCi0JCWdvdG8gZmFpbF91bnJlc2VydmU7 CisJCWdvdG8gZmFpbDsKIAotCXJldCA9IHYzZF9zdWJtaXRfam9icygmc3VibWl0KTsKKwlyZXQg PSB2M2Rfc3VibWl0X2xvY2tfcmVzZXJ2YXRpb25zKCZzdWJtaXQpOworCWlmIChyZXQpCisJCWdv dG8gZmFpbDsKKworCXJldCA9IHYzZF9zdWJtaXRfam9icygmc3VibWl0LCBhcmdzLT5vdXRfc3lu YywgJnNlKTsKIAlpZiAocmV0KQogCQlnb3RvIGZhaWxfdW5yZXNlcnZlOwogCi0JdjNkX2F0dGFj aF9mZW5jZXNfYW5kX3VubG9ja19yZXNlcnZhdGlvbihmaWxlX3ByaXYsCi0JCQkJCQkgY2xlYW5f am9iLAotCQkJCQkJICZzdWJtaXQuZXhlYywKLQkJCQkJCSBhcmdzLT5vdXRfc3luYywgJnNlLAot CQkJCQkJIGNsZWFuX2pvYi0+ZG9uZV9mZW5jZSk7Ci0KLQl2M2Rfc3VibWl0X3B1dF9qb2JzKCZz dWJtaXQpOwotCiAJcmV0dXJuIDA7CiAKIGZhaWxfdW5yZXNlcnZlOgotCWRybV9leGVjX2Zpbmko JnN1Ym1pdC5leGVjKTsKKwl2M2Rfc3VibWl0X3VubG9ja19yZXNlcnZhdGlvbnMoJnN1Ym1pdCk7 CiBmYWlsOgogCXYzZF9zdWJtaXRfY2xlYW51cF9qb2JzKCZzdWJtaXQpOwogCXYzZF9wdXRfbXVs dGlzeW5jX3Bvc3RfZGVwcygmc2UpOwpAQCAtMTM1NSwxMyArMTI3NywxNCBAQCB2M2Rfc3VibWl0 X2NwdV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkgICAgIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQogewogCXN0cnVjdCB2M2RfZGV2ICp2M2QgPSB0b192 M2RfZGV2KGRldik7CisJc3RydWN0IHYzZF9zdWJtaXQgc3VibWl0ID0geyAudjNkID0gdG9fdjNk X2RldihkZXYpLCAuZmlsZV9wcml2ID0gZmlsZV9wcml2IH07CisJc3RydWN0IHYzZF9zdWJtaXQg aW5kaXJlY3Rfc3VibWl0ID0geyAudjNkID0gdG9fdjNkX2RldihkZXYpLCAuZmlsZV9wcml2ID0g ZmlsZV9wcml2IH07CiAJc3RydWN0IGRybV92M2Rfc3VibWl0X2NwdSAqYXJncyA9IGRhdGE7CiAJ c3RydWN0IHYzZF9zdWJtaXRfZXh0IHNlID0gezB9OwogCXN0cnVjdCB2M2Rfc3VibWl0X2V4dCAq b3V0X3NlID0gTlVMTDsKIAlzdHJ1Y3QgdjNkX2NwdV9qb2IgKmNwdV9qb2IgPSBOVUxMOwogCXN0 cnVjdCB2M2RfY3NkX2pvYiAqY3NkX2pvYiA9IE5VTEw7CiAJc3RydWN0IHYzZF9qb2IgKmNsZWFu X2pvYiA9IE5VTEw7Ci0Jc3RydWN0IGRybV9leGVjIGV4ZWM7CiAJaW50IHJldDsKIAogCWlmIChh cmdzLT5mbGFncyAmJiAhKGFyZ3MtPmZsYWdzICYgRFJNX1YzRF9TVUJNSVRfRVhURU5TSU9OKSkg ewpAQCAtMTM2OSw5ICsxMjkyLDkgQEAgdjNkX3N1Ym1pdF9jcHVfaW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JcmV0ID0g djNkX2pvYl9hbGxvY2F0ZSh2M2QsICh2b2lkICopJmNwdV9qb2IsIHNpemVvZigqY3B1X2pvYikp OwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CisJY3B1X2pvYiA9IChzdHJ1Y3QgdjNkX2NwdV9q b2IgKikgdjNkX3N1Ym1pdF9hZGRfam9iKCZzdWJtaXQsIFYzRF9DUFUpOworCWlmIChJU19FUlIo Y3B1X2pvYikpCisJCXJldHVybiBQVFJfRVJSKGNwdV9qb2IpOwogCiAJaWYgKGFyZ3MtPmZsYWdz ICYgRFJNX1YzRF9TVUJNSVRfRVhURU5TSU9OKSB7CiAJCXJldCA9IHYzZF9nZXRfZXh0ZW5zaW9u cyhmaWxlX3ByaXYsIGFyZ3MtPmV4dGVuc2lvbnMsICZzZSwgY3B1X2pvYik7CkBAIC0xMzk2LDM0 ICsxMzE5LDM1IEBAIHYzZF9zdWJtaXRfY3B1X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCiAKIAl0cmFjZV92M2Rfc3VibWl0X2NwdV9pb2N0bCgmdjNkLT5kcm0sIGNw dV9qb2ItPmpvYl90eXBlKTsKIAotCXJldCA9IHYzZF9qb2JfaW5pdCh2M2QsIGZpbGVfcHJpdiwg JmNwdV9qb2ItPmJhc2UsCi0JCQkgICB2M2RfY3B1X2pvYl9mcmVlLCAwLCAmc2UsIFYzRF9DUFUp OwotCWlmIChyZXQpIHsKLQkJdjNkX2pvYl9kZWFsbG9jYXRlKCh2b2lkICopJmNwdV9qb2IpOwor CXJldCA9IHYzZF9qb2JfYWRkX3N5bmNvYmpzKCZjcHVfam9iLT5iYXNlLCBmaWxlX3ByaXYsIDAs ICZzZSk7CisJaWYgKHJldCkKIAkJZ290byBmYWlsOwotCX0KIAogCWlmIChjcHVfam9iLT5qb2Jf dHlwZSA9PSBWM0RfQ1BVX0pPQl9UWVBFX0lORElSRUNUX0NTRCkgewotCQlyZXQgPSB2M2Rfc2V0 dXBfY3NkX2pvYnNfYW5kX2JvcyhmaWxlX3ByaXYsIHYzZCwKKwkJcmV0ID0gdjNkX3NldHVwX2Nz ZF9qb2JzX2FuZF9ib3MoJmluZGlyZWN0X3N1Ym1pdCwKIAkJCQkJCSAmY3B1X2pvYi0+aW5kaXJl Y3RfY3NkLmFyZ3MsCi0JCQkJCQkgJmNwdV9qb2ItPmluZGlyZWN0X2NzZC5qb2IsCi0JCQkJCQkg JmNwdV9qb2ItPmluZGlyZWN0X2NzZC5jbGVhbl9qb2IsCi0JCQkJCQkgTlVMTCwKLQkJCQkJCSAm Y3B1X2pvYi0+aW5kaXJlY3RfY3NkLmV4ZWMpOworCQkJCQkJIE5VTEwpOwogCQlpZiAocmV0KQog CQkJZ290byBmYWlsOworCisJCXJldCA9IHYzZF9zdWJtaXRfbG9ja19yZXNlcnZhdGlvbnMoJmlu ZGlyZWN0X3N1Ym1pdCk7CisJCWlmIChyZXQpCisJCQlnb3RvIGZhaWw7CisKKwkJY3B1X2pvYi0+ aW5kaXJlY3RfY3NkLmpvYiA9IGNvbnRhaW5lcl9vZihpbmRpcmVjdF9zdWJtaXQuam9ic1swXSwK KwkJCQkJCQkgc3RydWN0IHYzZF9jc2Rfam9iLCBiYXNlKTsKKwkJY3B1X2pvYi0+aW5kaXJlY3Rf Y3NkLmNsZWFuX2pvYiA9IGluZGlyZWN0X3N1Ym1pdC5qb2JzWzFdOworCisJCWNsZWFuX2pvYiA9 IGNwdV9qb2ItPmluZGlyZWN0X2NzZC5jbGVhbl9qb2I7CisJCWNzZF9qb2IgPSBjcHVfam9iLT5p bmRpcmVjdF9jc2Quam9iOwogCX0KIAotCWNsZWFuX2pvYiA9IGNwdV9qb2ItPmluZGlyZWN0X2Nz ZC5jbGVhbl9qb2I7Ci0JY3NkX2pvYiA9IGNwdV9qb2ItPmluZGlyZWN0X2NzZC5qb2I7Ci0KIAlp ZiAoYXJncy0+Ym9faGFuZGxlX2NvdW50KSB7Ci0JCXJldCA9IHYzZF9sb29rdXBfYm9zKGRldiwg ZmlsZV9wcml2LCAmY3B1X2pvYi0+YmFzZSwKLQkJCQkgICAgIGFyZ3MtPmJvX2hhbmRsZXMsIGFy Z3MtPmJvX2hhbmRsZV9jb3VudCk7CisJCXJldCA9IHYzZF9sb29rdXBfYm9zKCZzdWJtaXQsIGFy Z3MtPmJvX2hhbmRsZXMsIGFyZ3MtPmJvX2hhbmRsZV9jb3VudCk7CiAJCWlmIChyZXQpCiAJCQln b3RvIGZhaWw7CiAKLQkJcmV0ID0gdjNkX2xvY2tfYm9fcmVzZXJ2YXRpb25zKCZjcHVfam9iLT5i YXNlLCAmZXhlYyk7CisJCXJldCA9IHYzZF9zdWJtaXRfbG9ja19yZXNlcnZhdGlvbnMoJnN1Ym1p dCk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIGZhaWw7CiAJfQpAQCAtMTQ1NSwzNiArMTM3OSwyOCBA QCB2M2Rfc3VibWl0X2NwdV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAogCiAJb3V0X3NlID0gKGNwdV9qb2ItPmpvYl90eXBlID09IFYzRF9DUFVfSk9CX1RZUEVfSU5E SVJFQ1RfQ1NEKSA/IE5VTEwgOiAmc2U7CiAKLQl2M2RfYXR0YWNoX2ZlbmNlc19hbmRfdW5sb2Nr X3Jlc2VydmF0aW9uKGZpbGVfcHJpdiwKLQkJCQkJCSAmY3B1X2pvYi0+YmFzZSwKLQkJCQkJCSAm ZXhlYywgMCwKLQkJCQkJCSBvdXRfc2UsIGNwdV9qb2ItPmJhc2UuZG9uZV9mZW5jZSk7CisJdjNk X2F0dGFjaF9mZW5jZXNfYW5kX3VubG9ja19yZXNlcnZhdGlvbigmc3VibWl0LCAwLCBvdXRfc2Up OwogCiAJc3dpdGNoIChjcHVfam9iLT5qb2JfdHlwZSkgewogCWNhc2UgVjNEX0NQVV9KT0JfVFlQ RV9JTkRJUkVDVF9DU0Q6Ci0JCXYzZF9hdHRhY2hfZmVuY2VzX2FuZF91bmxvY2tfcmVzZXJ2YXRp b24oZmlsZV9wcml2LAotCQkJCQkJCSBjbGVhbl9qb2IsCi0JCQkJCQkJICZjcHVfam9iLT5pbmRp cmVjdF9jc2QuZXhlYywKLQkJCQkJCQkgMCwgJnNlLCBjbGVhbl9qb2ItPmRvbmVfZmVuY2UpOwor CQl2M2RfYXR0YWNoX2ZlbmNlc19hbmRfdW5sb2NrX3Jlc2VydmF0aW9uKCZpbmRpcmVjdF9zdWJt aXQsIDAsICZzZSk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWJyZWFrOwogCX0KIAotCXYzZF9q b2JfcHV0KCZjcHVfam9iLT5iYXNlKTsKLQl2M2Rfam9iX3B1dCgmY3NkX2pvYi0+YmFzZSk7Ci0J djNkX2pvYl9wdXQoY2xlYW5fam9iKTsKKwl2M2Rfc3VibWl0X3B1dF9qb2JzKCZzdWJtaXQpOwor CXYzZF9zdWJtaXRfcHV0X2pvYnMoJmluZGlyZWN0X3N1Ym1pdCk7CiAKIAlyZXR1cm4gMDsKIAog ZmFpbF91bnJlc2VydmU6CiAJbXV0ZXhfdW5sb2NrKCZ2M2QtPnNjaGVkX2xvY2spOwotCWRybV9l eGVjX2ZpbmkoJmV4ZWMpOwotCWRybV9leGVjX2ZpbmkoJmNwdV9qb2ItPmluZGlyZWN0X2NzZC5l eGVjKTsKKwl2M2Rfc3VibWl0X3VubG9ja19yZXNlcnZhdGlvbnMoJnN1Ym1pdCk7CisJdjNkX3N1 Ym1pdF91bmxvY2tfcmVzZXJ2YXRpb25zKCZpbmRpcmVjdF9zdWJtaXQpOwogZmFpbDoKLQl2M2Rf am9iX2NsZWFudXAoKHZvaWQgKiljcHVfam9iKTsKLQl2M2Rfam9iX2NsZWFudXAoKHZvaWQgKilj c2Rfam9iKTsKLQl2M2Rfam9iX2NsZWFudXAoY2xlYW5fam9iKTsKKwl2M2Rfc3VibWl0X2NsZWFu dXBfam9icygmc3VibWl0KTsKKwl2M2Rfc3VibWl0X2NsZWFudXBfam9icygmaW5kaXJlY3Rfc3Vi bWl0KTsKIAl2M2RfcHV0X211bHRpc3luY19wb3N0X2RlcHMoJnNlKTsKIAogCXJldHVybiByZXQ7 CgotLSAKMi41NC4wCgo=