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 ADB25CD37B2 for ; Sun, 10 May 2026 22:13:03 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1BC4D10E43F; Sun, 10 May 2026 22:13:03 +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="grdeLceF"; dkim-atps=neutral Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8A4C610E43F for ; Sun, 10 May 2026 22:13:01 +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=sjmZV/41KD/v13lt7nygw93s6Z3QXCTeLNyN1HjvRAI=; b=grdeLceFkh5Eaislpq5Ul4IVKk ejA9RX0Ja2bxwggbh6g5lb9LrzpMerW/UVR5MN1mg5+hxFSnNx8U1YAgYeji8yubyrjbilW40zCMR TH1AYGsK1MzSeVELLLSatc5O7O+u6qo1NRgB/K5EFyklum9f+zPRMpkjBO+gCst+Ct68K9OKhSYw3 SncFr7rTgT051e2NsB3PtCfqxS16N02lB2ra18slx0K4GWKD29IvsBe89UpeQWzdSj5PJ5iuzY0qy snM0VPZU2iDm/pcL2ZP1da+6qvVztPSPYZMPADyAKp2sou0mH4JexN8PNL+Ko630ggCvpaUHefHxz hhZ4noJg==; 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 1wMCOO-008k1J-9a; Mon, 11 May 2026 00:12:55 +0200 From: =?utf-8?q?Ma=C3=ADra_Canal?= Date: Sun, 10 May 2026 19:12:07 -0300 Subject: [PATCH v2 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: <20260510-v3d-sched-misc-fixes-v2-10-ca4aba343ef6@igalia.com> References: <20260510-v3d-sched-misc-fixes-v2-0-ca4aba343ef6@igalia.com> In-Reply-To: <20260510-v3d-sched-misc-fixes-v2-0-ca4aba343ef6@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=17486; i=mcanal@igalia.com; h=from:subject:message-id; bh=xLCcQ0fu3BBAUcDZp0Yx8PtVW/99j822qBdkjxcVTwM=; b=owEBbQGS/pANAwAKAT/zDop2iPqqAcsmYgBqAQK0m/+RH7SdyPLSowkvmeGcVIkLNk8AUOy4T zLtLcEa+taJATMEAAEKAB0WIQT45F19ARZ3Bymmd9E/8w6Kdoj6qgUCagECtAAKCRA/8w6Kdoj6 qjJjCACCtFuUrh10DX4j2DAWmmhqz/hdt6hSWesXLcnS/7pkbSF3n+Xka+LJMxTYml5Ql8ZjEAM DdODGe8rjwRI7KTtAmN2wyey2CBnLo80i5/iSf/iRULVPWSINt0stwSS1mfgqEeTDr6jr4Tcg2l 0fhomIXei6EdBdHh0zhA/8chuiHYxZphCpll5jm4ChDBa2ZeJpC4n4OGk6Fg6ueAhms5qnIKRgo dV5nL8lcKprdSazRe9yUN54SEIJk+plxNLdnMaGMqYoIjfrIq33sHnOkV3fDGJ8P6JLGINrUFe1 HQlEThKJVuGugq42Q7Xhwi2h4H3EyO75aNBxOjQ5nbgvq9hx 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" R2VuZXJhbGl6ZSB2M2RfbG9va3VwX2JvcygpLCB2M2RfbG9ja19ib19yZXNlcnZhdGlvbnMoKSAo cmVuYW1lZCB0bwp2M2Rfc3VibWl0X2xvY2tfcmVzZXJ2YXRpb25zKCkpLCB2M2RfYXR0YWNoX2Zl bmNlc19hbmRfdW5sb2NrX3Jlc2VydmF0aW9uKCkKYW5kIHYzZF9zZXR1cF9jc2Rfam9ic19hbmRf Ym9zKCkgc28gdGhleSBhbGwgdGFrZSBhIHN0cnVjdCB2M2Rfc3VibWl0CmFuZCBvcGVyYXRlIG9u IGV2ZXJ5IGpvYiBpbiB0aGUgY2hhaW4uCgpOb3csIHRoZSBsb2NraW5nIGhlbHBlciBub3cgaXRl cmF0ZXMgb3ZlciBhbGwgam9icyBhbmQgbG9ja3MgdGhlIHVuaW9uIG9mCnRoZWlyIEJPcyB1bmRl ciBvbmUgRFJNIGV4ZWMsIHVzaW5nIERSTV9FWEVDX0lHTk9SRV9EVVBMSUNBVEVTIHRvIHRvbGVy YXRlCnNoYXJlZCBCTyByZWZlcmVuY2VzLiBUaGUgZmVuY2UtYXR0YWNoIGhlbHBlciBzaW1pbGFy bHkgd2Fsa3MgZXZlcnkgam9iCmFuZCBhdHRhY2hlcyB0aGUgY2hhaW4ncyBsYXN0IGZlbmNlIHRv IGFsbCB0b3VjaGVkIEJPcy4KClVwZGF0ZSBDTC9URlUvQ1NEL0NQVSBpb2N0bHMgdG8gdXNlIHRo ZSBuZXcgaGVscGVyIHNpZ25hdHVyZXMuIFRoZSBDUFUKaW9jdGwgc3RpbGwgdXNlcyB0d28gc3Ry dWN0IHYzZF9zdWJtaXQgaW5zdGFuY2VzIChvbmUgZm9yIHRoZSBDUFUgam9iLApvbmUgZm9yIHRo ZSBpbmRpcmVjdCBDU0Qgam9icykgYW5kIGtlZXBzIGl0cyBtYW51YWwgbXV0ZXgvcHVzaC90d28t cGFzcwpmZW5jZS1hdHRhY2ggZmxvdy4gQ29udmVydGluZyB0aGUgaW5kaXJlY3QgQ1NEIHBhdGgg aW50byB0aGUgdW5pZmllZApjaGFpbiBpcyBkb25lIGluIHRoZSBuZXh0IGNvbW1pdC4KCk5vIGZ1 bmN0aW9uYWwgY2hhbmdlLgoKU2lnbmVkLW9mZi1ieTogTWHDrXJhIENhbmFsIDxtY2FuYWxAaWdh bGlhLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9zdWJtaXQuYyB8IDI5NSArKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMDgg aW5zZXJ0aW9ucygrKSwgMTg3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS92M2QvdjNkX3N1Ym1pdC5jIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2Rfc3VibWl0LmMK aW5kZXggZWYwMDNjYTZiNDJhLi44OTkxMjhmYzJiZDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS92M2QvdjNkX3N1Ym1pdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3N1Ym1p dC5jCkBAIC0yMCwzMiArMjAsNTEgQEAKICAqIHRvIHYzZCwgc28gd2UgZG9uJ3QgYXR0YWNoIGRt YS1idWYgZmVuY2VzIHRvIHRoZW0uCiAgKi8KIHN0YXRpYyBpbnQKLXYzZF9sb2NrX2JvX3Jlc2Vy dmF0aW9ucyhzdHJ1Y3QgdjNkX2pvYiAqam9iLCBzdHJ1Y3QgZHJtX2V4ZWMgKmV4ZWMpCit2M2Rf c3VibWl0X2xvY2tfcmVzZXJ2YXRpb25zKHN0cnVjdCB2M2Rfc3VibWl0ICpzdWJtaXQpCiB7Ci0J aW50IGksIHJldDsKKwlpbnQgaSwgaiwgcmV0OwogCi0JZHJtX2V4ZWNfaW5pdChleGVjLCBEUk1f RVhFQ19JTlRFUlJVUFRJQkxFX1dBSVQsIGpvYi0+Ym9fY291bnQpOwotCWRybV9leGVjX3VudGls X2FsbF9sb2NrZWQoZXhlYykgewotCQlyZXQgPSBkcm1fZXhlY19wcmVwYXJlX2FycmF5KGV4ZWMs IGpvYi0+Ym8sIGpvYi0+Ym9fY291bnQsIDEpOwotCX0KKwlkcm1fZXhlY19pbml0KCZzdWJtaXQt PmV4ZWMsCisJCSAgICAgIERSTV9FWEVDX0lOVEVSUlVQVElCTEVfV0FJVCB8IERSTV9FWEVDX0lH Tk9SRV9EVVBMSUNBVEVTLCAwKTsKKwlkcm1fZXhlY191bnRpbF9hbGxfbG9ja2VkKCZzdWJtaXQt PmV4ZWMpIHsKKwkJZm9yIChpID0gMDsgaSA8IHN1Ym1pdC0+am9iX2NvdW50OyBpKyspIHsKKwkJ CXN0cnVjdCB2M2Rfam9iICpqb2IgPSBzdWJtaXQtPmpvYnNbaV07CiAKLQlpZiAocmV0KQotCQln b3RvIGZhaWw7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgam9iLT5ib19jb3VudDsgaSsrKSB7Ci0JCXJl dCA9IGRybV9zY2hlZF9qb2JfYWRkX2ltcGxpY2l0X2RlcGVuZGVuY2llcygmam9iLT5iYXNlLAot CQkJCQkJCSAgICAgIGpvYi0+Ym9baV0sIHRydWUpOworCQkJcmV0ID0gZHJtX2V4ZWNfcHJlcGFy ZV9hcnJheSgmc3VibWl0LT5leGVjLCBqb2ItPmJvLAorCQkJCQkJICAgICBqb2ItPmJvX2NvdW50 LCAxKTsKKwkJCWlmIChyZXQpCisJCQkJYnJlYWs7CisJCX0KKwkJZHJtX2V4ZWNfcmV0cnlfb25f Y29udGVudGlvbigmc3VibWl0LT5leGVjKTsKIAkJaWYgKHJldCkKIAkJCWdvdG8gZmFpbDsKIAl9 CiAKKwlmb3IgKGkgPSAwOyBpIDwgc3VibWl0LT5qb2JfY291bnQ7IGkrKykgeworCQlzdHJ1Y3Qg djNkX2pvYiAqam9iID0gc3VibWl0LT5qb2JzW2ldOworCisJCWZvciAoaiA9IDA7IGogPCBqb2It PmJvX2NvdW50OyBqKyspIHsKKwkJCXJldCA9IGRybV9zY2hlZF9qb2JfYWRkX2ltcGxpY2l0X2Rl cGVuZGVuY2llcygmam9iLT5iYXNlLAorCQkJCQkJCQkgICAgICBqb2ItPmJvW2pdLAorCQkJCQkJ CQkgICAgICB0cnVlKTsKKwkJCWlmIChyZXQpCisJCQkJZ290byBmYWlsOworCQl9CisJfQorCiAJ cmV0dXJuIDA7CiAKIGZhaWw6Ci0JZHJtX2V4ZWNfZmluaShleGVjKTsKKwlkcm1fZXhlY19maW5p KCZzdWJtaXQtPmV4ZWMpOwogCXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyB2b2lkCit2M2Rfc3Vi bWl0X3VubG9ja19yZXNlcnZhdGlvbnMoc3RydWN0IHYzZF9zdWJtaXQgKnN1Ym1pdCkKK3sKKwlk cm1fZXhlY19maW5pKCZzdWJtaXQtPmV4ZWMpOworfQorCiAvKioKICAqIHYzZF9sb29rdXBfYm9z KCkgLSBTZXRzIHVwIGpvYi0+Ym9bXSB3aXRoIHRoZSBHRU0gb2JqZWN0cwogICogcmVmZXJlbmNl ZCBieSB0aGUgam9iLgpAQCAtNjMsMjUgKzgyLDIzIEBAIHYzZF9sb2NrX2JvX3Jlc2VydmF0aW9u cyhzdHJ1Y3QgdjNkX2pvYiAqam9iLCBzdHJ1Y3QgZHJtX2V4ZWMgKmV4ZWMpCiAgKiBmYWlsdXJl LCBiZWNhdXNlIHRoYXQgd2lsbCBoYXBwZW4gYXQgYHYzZF9qb2JfZnJlZSgpYC4KICAqLwogc3Rh dGljIGludAotdjNkX2xvb2t1cF9ib3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkgICAgICAg c3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCi0JICAgICAgIHN0cnVjdCB2M2Rfam9iICpqb2Is Ci0JICAgICAgIHU2NCBib19oYW5kbGVzLAotCSAgICAgICB1MzIgYm9fY291bnQpCit2M2RfbG9v a3VwX2JvcyhzdHJ1Y3QgdjNkX3N1Ym1pdCAqc3VibWl0LCB1NjQgYm9faGFuZGxlcywgdTMyIGJv X2NvdW50KQogewotCWpvYi0+Ym9fY291bnQgPSBib19jb3VudDsKKwlzdHJ1Y3QgdjNkX2pvYiAq bGFzdF9qb2IgPSBzdWJtaXQtPmpvYnNbc3VibWl0LT5qb2JfY291bnQgLSAxXTsKIAotCWlmICgh am9iLT5ib19jb3VudCkgeworCWxhc3Rfam9iLT5ib19jb3VudCA9IGJvX2NvdW50OworCisJaWYg KCFsYXN0X2pvYi0+Ym9fY291bnQpIHsKIAkJLyogU2VlIGNvbW1lbnQgb24gYm9faW5kZXggZm9y IHdoeSB3ZSBoYXZlIHRvIGNoZWNrCiAJCSAqIHRoaXMuCiAJCSAqLwotCQlkcm1fd2FybihkZXYs ICJSZW5kZXJpbmcgcmVxdWlyZXMgQk9zXG4iKTsKKwkJZHJtX3dhcm4oJnN1Ym1pdC0+djNkLT5k cm0sICJSZW5kZXJpbmcgcmVxdWlyZXMgQk9zXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQog Ci0JcmV0dXJuIGRybV9nZW1fb2JqZWN0c19sb29rdXAoZmlsZV9wcml2LAorCXJldHVybiBkcm1f Z2VtX29iamVjdHNfbG9va3VwKHN1Ym1pdC0+ZmlsZV9wcml2LAogCQkJCSAgICAgICh2b2lkIF9f dXNlciAqKSh1aW50cHRyX3QpYm9faGFuZGxlcywKLQkJCQkgICAgICBqb2ItPmJvX2NvdW50LCAm am9iLT5ibyk7CisJCQkJICAgICAgbGFzdF9qb2ItPmJvX2NvdW50LCAmbGFzdF9qb2ItPmJvKTsK IH0KIAogc3RhdGljIHZvaWQKQEAgLTE0MiwyNSArMTU5LDYgQEAgdm9pZCB2M2Rfam9iX3B1dChz dHJ1Y3QgdjNkX2pvYiAqam9iKQogCWtyZWZfcHV0KCZqb2ItPnJlZmNvdW50LCBqb2ItPmZyZWUp OwogfQogCi1zdGF0aWMgaW50Ci12M2Rfam9iX2FsbG9jYXRlKHN0cnVjdCB2M2RfZGV2ICp2M2Qs IHZvaWQgKipjb250YWluZXIsIHNpemVfdCBzaXplKQotewotCSpjb250YWluZXIgPSBrY2FsbG9j KDEsIHNpemUsIEdGUF9LRVJORUwpOwotCWlmICghKmNvbnRhaW5lcikgewotCQlkcm1fZXJyKCZ2 M2QtPmRybSwgIkNhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIFYzRCBqb2IuXG4iKTsKLQkJcmV0 dXJuIC1FTk9NRU07Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB2b2lkCi12M2Rfam9i X2RlYWxsb2NhdGUodm9pZCAqKmNvbnRhaW5lcikKLXsKLQlrZnJlZSgqY29udGFpbmVyKTsKLQkq Y29udGFpbmVyID0gTlVMTDsKLX0KLQogc3RhdGljIGludAogdjNkX2pvYl9hZGRfc3luY29ianMo c3RydWN0IHYzZF9qb2IgKmpvYiwgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCiAJCSAgICAg dTMyIGluX3N5bmMsIHN0cnVjdCB2M2Rfc3VibWl0X2V4dCAqc2UsIGVudW0gdjNkX3F1ZXVlIHF1 ZXVlKQpAQCAtMjAxLDQ3ICsxOTksNiBAQCB2M2Rfam9iX2FkZF9zeW5jb2JqcyhzdHJ1Y3QgdjNk X2pvYiAqam9iLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKIAlyZXR1cm4gMDsKIH0KIAot c3RhdGljIGludAotdjNkX2pvYl9pbml0KHN0cnVjdCB2M2RfZGV2ICp2M2QsIHN0cnVjdCBkcm1f ZmlsZSAqZmlsZV9wcml2LAotCSAgICAgc3RydWN0IHYzZF9qb2IgKmpvYiwgdm9pZCAoKmZyZWUp KHN0cnVjdCBrcmVmICpyZWYpLAotCSAgICAgdTMyIGluX3N5bmMsIHN0cnVjdCB2M2Rfc3VibWl0 X2V4dCAqc2UsIGVudW0gdjNkX3F1ZXVlIHF1ZXVlKQotewotCXN0cnVjdCB2M2RfZmlsZV9wcml2 ICp2M2RfcHJpdiA9IGZpbGVfcHJpdi0+ZHJpdmVyX3ByaXY7Ci0JaW50IHJldDsKLQotCWpvYi0+ djNkID0gdjNkOwotCWpvYi0+ZnJlZSA9IGZyZWU7Ci0Jam9iLT5maWxlX3ByaXYgPSB2M2RfcHJp djsKLQotCXJldCA9IGRybV9zY2hlZF9qb2JfaW5pdCgmam9iLT5iYXNlLCAmdjNkX3ByaXYtPnNj aGVkX2VudGl0eVtxdWV1ZV0sCi0JCQkJIDEsIHYzZF9wcml2LCBmaWxlX3ByaXYtPmNsaWVudF9p ZCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCXJldCA9IHYzZF9qb2JfYWRkX3N5bmNv YmpzKGpvYiwgZmlsZV9wcml2LCBpbl9zeW5jLCBzZSwgcXVldWUpOwotCWlmIChyZXQpCi0JCWdv dG8gZmFpbF9qb2JfaW5pdDsKLQotCS8qIENQVSBqb2JzIGRvbid0IHJlcXVpcmUgaGFyZHdhcmUg cmVzb3VyY2VzICovCi0JaWYgKHF1ZXVlICE9IFYzRF9DUFUpIHsKLQkJcmV0ID0gdjNkX3BtX3J1 bnRpbWVfZ2V0KHYzZCk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGZhaWxfam9iX2luaXQ7Ci0JCWpv Yi0+aGFzX3BtX3JlZiA9IHRydWU7Ci0JfQotCi0Ja3JlZl9pbml0KCZqb2ItPnJlZmNvdW50KTsK LQotCWpvYi0+Y2xpZW50X3N0YXRzID0gdjNkX3N0YXRzX2dldCh2M2RfcHJpdi0+c3RhdHNbcXVl dWVdKTsKLQlqb2ItPmdsb2JhbF9zdGF0cyA9IHYzZF9zdGF0c19nZXQodjNkLT5xdWV1ZVtxdWV1 ZV0uc3RhdHMpOwotCi0JcmV0dXJuIDA7Ci0KLWZhaWxfam9iX2luaXQ6Ci0JZHJtX3NjaGVkX2pv Yl9jbGVhbnVwKCZqb2ItPmJhc2UpOwotCXJldHVybiByZXQ7Ci19Ci0KIHN0YXRpYyBpbnQKIHYz ZF9zdWJtaXRfYWRkX2pvYihzdHJ1Y3QgdjNkX3N1Ym1pdCAqc3VibWl0LCB2b2lkICoqY29udGFp bmVyLCBzaXplX3Qgc2l6ZSwKIAkJICAgdm9pZCAoKmZyZWUpKHN0cnVjdCBrcmVmICpyZWYpLCBl bnVtIHYzZF9xdWV1ZSBxdWV1ZSkKQEAgLTM3MCwzMSArMzI3LDM0IEBAIHYzZF9zdWJtaXRfY2xl YW51cF9qb2JzKHN0cnVjdCB2M2Rfc3VibWl0ICpzdWJtaXQpCiB9CiAKIHN0YXRpYyB2b2lkCi12 M2RfYXR0YWNoX2ZlbmNlc19hbmRfdW5sb2NrX3Jlc2VydmF0aW9uKHN0cnVjdCBkcm1fZmlsZSAq ZmlsZV9wcml2LAotCQkJCQkgc3RydWN0IHYzZF9qb2IgKmpvYiwKLQkJCQkJIHN0cnVjdCBkcm1f ZXhlYyAqZXhlYywKLQkJCQkJIHUzMiBvdXRfc3luYywKLQkJCQkJIHN0cnVjdCB2M2Rfc3VibWl0 X2V4dCAqc2UsCi0JCQkJCSBzdHJ1Y3QgZG1hX2ZlbmNlICpkb25lX2ZlbmNlKQordjNkX2F0dGFj aF9mZW5jZXNfYW5kX3VubG9ja19yZXNlcnZhdGlvbihzdHJ1Y3QgdjNkX3N1Ym1pdCAqc3VibWl0 LAorCQkJCQkgdTMyIG91dF9zeW5jLCBzdHJ1Y3QgdjNkX3N1Ym1pdF9leHQgKnNlKQogewotCXN0 cnVjdCBkcm1fc3luY29iaiAqc3luY19vdXQ7CiAJYm9vbCBoYXNfbXVsdGlzeW5jID0gc2UgJiYg KHNlLT5mbGFncyAmIERSTV9WM0RfRVhUX0lEX01VTFRJX1NZTkMpOwotCWludCBpOworCXN0cnVj dCB2M2Rfam9iICpsYXN0X2pvYiA9IHN1Ym1pdC0+am9ic1tzdWJtaXQtPmpvYl9jb3VudCAtIDFd OworCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY19vdXQ7CiAKLQlmb3IgKGkgPSAwOyBpIDwgam9i LT5ib19jb3VudDsgaSsrKSB7Ci0JCS8qIFhYWDogVXNlIHNoYXJlZCBmZW5jZXMgZm9yIHJlYWQt b25seSBvYmplY3RzLiAqLwotCQlkbWFfcmVzdl9hZGRfZmVuY2Uoam9iLT5ib1tpXS0+cmVzdiwg am9iLT5kb25lX2ZlbmNlLAotCQkJCSAgIERNQV9SRVNWX1VTQUdFX1dSSVRFKTsKKwkvKiBUaGUg c3VibWlzc2lvbidzIGxhc3QgZmVuY2UgY292ZXJzIHRoZSBlbnRpcmUgc3VibWlzc2lvbi4gQXR0 YWNoIGl0CisJICogdG8gZXZlcnkgQk8gdG91Y2hlZCBieSBhbnkgam9iIGluIHRoZSBzdWJtaXNz aW9uLgorCSAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgc3VibWl0LT5qb2JfY291bnQ7IGkrKykg eworCQlzdHJ1Y3QgdjNkX2pvYiAqam9iID0gc3VibWl0LT5qb2JzW2ldOworCisJCWZvciAoaW50 IGogPSAwOyBqIDwgam9iLT5ib19jb3VudDsgaisrKSB7CisJCQkvKiBYWFg6IFVzZSBzaGFyZWQg ZmVuY2VzIGZvciByZWFkLW9ubHkgb2JqZWN0cy4gKi8KKwkJCWRtYV9yZXN2X2FkZF9mZW5jZShq b2ItPmJvW2pdLT5yZXN2LCBsYXN0X2pvYi0+ZG9uZV9mZW5jZSwKKwkJCQkJICAgRE1BX1JFU1Zf VVNBR0VfV1JJVEUpOworCQl9CiAJfQogCi0JZHJtX2V4ZWNfZmluaShleGVjKTsKKwl2M2Rfc3Vi bWl0X3VubG9ja19yZXNlcnZhdGlvbnMoc3VibWl0KTsKIAogCS8qIFVwZGF0ZSB0aGUgcmV0dXJu IHN5bmMgb2JqZWN0IGZvciB0aGUgam9iICovCiAJLyogSWYgaXQgb25seSBzdXBwb3J0cyBhIHNp bmdsZSBzaWduYWwgc2VtYXBob3JlKi8KIAlpZiAoIWhhc19tdWx0aXN5bmMpIHsKLQkJc3luY19v dXQgPSBkcm1fc3luY29ial9maW5kKGZpbGVfcHJpdiwgb3V0X3N5bmMpOworCQlzeW5jX291dCA9 IGRybV9zeW5jb2JqX2ZpbmQoc3VibWl0LT5maWxlX3ByaXYsIG91dF9zeW5jKTsKIAkJaWYgKHN5 bmNfb3V0KSB7Ci0JCQlkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN5bmNfb3V0LCBkb25lX2Zl bmNlKTsKKwkJCWRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uoc3luY19vdXQsIGxhc3Rfam9iLT5k b25lX2ZlbmNlKTsKIAkJCWRybV9zeW5jb2JqX3B1dChzeW5jX291dCk7CiAJCX0KIAkJcmV0dXJu OwpAQCAtNDAyLDkgKzM2Miw5IEBAIHYzZF9hdHRhY2hfZmVuY2VzX2FuZF91bmxvY2tfcmVzZXJ2 YXRpb24oc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCiAKIAkvKiBJZiBtdWx0aXBsZSBzZW1h cGhvcmVzIGV4dGVuc2lvbiBpcyBzdXBwb3J0ZWQgKi8KIAlpZiAoc2UtPm91dF9zeW5jX2NvdW50 KSB7Ci0JCWZvciAoaSA9IDA7IGkgPCBzZS0+b3V0X3N5bmNfY291bnQ7IGkrKykgeworCQlmb3Ig KGludCBpID0gMDsgaSA8IHNlLT5vdXRfc3luY19jb3VudDsgaSsrKSB7CiAJCQlkcm1fc3luY29i al9yZXBsYWNlX2ZlbmNlKHNlLT5vdXRfc3luY3NbaV0uc3luY29iaiwKLQkJCQkJCSAgZG9uZV9m ZW5jZSk7CisJCQkJCQkgIGxhc3Rfam9iLT5kb25lX2ZlbmNlKTsKIAkJCWRybV9zeW5jb2JqX3B1 dChzZS0+b3V0X3N5bmNzW2ldLnN5bmNvYmopOwogCQl9CiAJCWt2ZnJlZShzZS0+b3V0X3N5bmNz KTsKQEAgLTQxMiw0NiArMzcyLDM2IEBAIHYzZF9hdHRhY2hfZmVuY2VzX2FuZF91bmxvY2tfcmVz ZXJ2YXRpb24oc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCiB9CiAKIHN0YXRpYyBpbnQKLXYz ZF9zZXR1cF9jc2Rfam9ic19hbmRfYm9zKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAotCQkJ ICAgc3RydWN0IHYzZF9kZXYgKnYzZCwKK3YzZF9zZXR1cF9jc2Rfam9ic19hbmRfYm9zKHN0cnVj dCB2M2Rfc3VibWl0ICpzdWJtaXQsCiAJCQkgICBzdHJ1Y3QgZHJtX3YzZF9zdWJtaXRfY3NkICph cmdzLAotCQkJICAgc3RydWN0IHYzZF9jc2Rfam9iICoqam9iLAotCQkJICAgc3RydWN0IHYzZF9q b2IgKipjbGVhbl9qb2IsCi0JCQkgICBzdHJ1Y3QgdjNkX3N1Ym1pdF9leHQgKnNlLAotCQkJICAg c3RydWN0IGRybV9leGVjICpleGVjKQorCQkJICAgc3RydWN0IHYzZF9zdWJtaXRfZXh0ICpzZSkK IHsKKwlzdHJ1Y3QgdjNkX2NzZF9qb2IgKmpvYiA9IE5VTEw7CisJc3RydWN0IHYzZF9qb2IgKmNs ZWFuX2pvYiA9IE5VTEw7CiAJaW50IHJldDsKIAotCXJldCA9IHYzZF9qb2JfYWxsb2NhdGUodjNk LCAodm9pZCAqKWpvYiwgc2l6ZW9mKCoqam9iKSk7CisJcmV0ID0gdjNkX3N1Ym1pdF9hZGRfam9i KHN1Ym1pdCwgKHZvaWQgKiopJmpvYiwgc2l6ZW9mKCpqb2IpLAorCQkJCSB2M2Rfam9iX2ZyZWUs IFYzRF9DU0QpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQlyZXQgPSB2M2Rfam9iX2lu aXQodjNkLCBmaWxlX3ByaXYsICYoKmpvYiktPmJhc2UsCi0JCQkgICB2M2Rfam9iX2ZyZWUsIGFy Z3MtPmluX3N5bmMsIHNlLCBWM0RfQ1NEKTsKLQlpZiAocmV0KSB7Ci0JCXYzZF9qb2JfZGVhbGxv Y2F0ZSgodm9pZCAqKWpvYik7Ci0JCXJldHVybiByZXQ7Ci0JfQotCi0JcmV0ID0gdjNkX2pvYl9h bGxvY2F0ZSh2M2QsICh2b2lkICopY2xlYW5fam9iLCBzaXplb2YoKipjbGVhbl9qb2IpKTsKKwly ZXQgPSB2M2Rfam9iX2FkZF9zeW5jb2Jqcygmam9iLT5iYXNlLCBzdWJtaXQtPmZpbGVfcHJpdiwg YXJncy0+aW5fc3luYywKKwkJCQkgICBzZSwgVjNEX0NTRCk7CiAJaWYgKHJldCkKIAkJcmV0dXJu IHJldDsKIAotCXJldCA9IHYzZF9qb2JfaW5pdCh2M2QsIGZpbGVfcHJpdiwgKmNsZWFuX2pvYiwK LQkJCSAgIHYzZF9qb2JfZnJlZSwgMCwgTlVMTCwgVjNEX0NBQ0hFX0NMRUFOKTsKLQlpZiAocmV0 KSB7Ci0JCXYzZF9qb2JfZGVhbGxvY2F0ZSgodm9pZCAqKWNsZWFuX2pvYik7Ci0JCXJldHVybiBy ZXQ7Ci0JfQorCWpvYi0+YXJncyA9ICphcmdzOwogCi0JKCpqb2IpLT5hcmdzID0gKmFyZ3M7Ci0K LQlyZXQgPSB2M2RfbG9va3VwX2JvcygmdjNkLT5kcm0sIGZpbGVfcHJpdiwgKmNsZWFuX2pvYiwK LQkJCSAgICAgYXJncy0+Ym9faGFuZGxlcywgYXJncy0+Ym9faGFuZGxlX2NvdW50KTsKKwlyZXQg PSB2M2Rfc3VibWl0X2FkZF9qb2Ioc3VibWl0LCAodm9pZCAqKikmY2xlYW5fam9iLCBzaXplb2Yo KmNsZWFuX2pvYiksCisJCQkJIHYzZF9qb2JfZnJlZSwgVjNEX0NBQ0hFX0NMRUFOKTsKIAlpZiAo cmV0KQogCQlyZXR1cm4gcmV0OwogCi0JcmV0dXJuIHYzZF9sb2NrX2JvX3Jlc2VydmF0aW9ucygq Y2xlYW5fam9iLCBleGVjKTsKKwlyZXQgPSB2M2RfbG9va3VwX2JvcyhzdWJtaXQsIGFyZ3MtPmJv X2hhbmRsZXMsIGFyZ3MtPmJvX2hhbmRsZV9jb3VudCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJl dDsKKworCXJldHVybiB2M2Rfc3VibWl0X2xvY2tfcmVzZXJ2YXRpb25zKHN1Ym1pdCk7CiB9CiAK IHN0YXRpYyB2b2lkCkBAIC0xMDg2LDE0ICsxMDM2LDExIEBAIHYzZF9zdWJtaXRfY2xfaW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCWdvdG8gZmFpbDsKIAl9CiAK LQlyZXQgPSB2M2RfbG9va3VwX2JvcyhkZXYsIGZpbGVfcHJpdiwKLQkJCSAgICAgc3VibWl0Lmpv YnNbc3VibWl0LmpvYl9jb3VudCAtIDFdLAotCQkJICAgICBhcmdzLT5ib19oYW5kbGVzLCBhcmdz LT5ib19oYW5kbGVfY291bnQpOworCXJldCA9IHYzZF9sb29rdXBfYm9zKCZzdWJtaXQsIGFyZ3Mt PmJvX2hhbmRsZXMsIGFyZ3MtPmJvX2hhbmRsZV9jb3VudCk7CiAJaWYgKHJldCkKIAkJZ290byBm YWlsOwogCi0JcmV0ID0gdjNkX2xvY2tfYm9fcmVzZXJ2YXRpb25zKHN1Ym1pdC5qb2JzW3N1Ym1p dC5qb2JfY291bnQgLSAxXSwKLQkJCQkgICAgICAgJnN1Ym1pdC5leGVjKTsKKwlyZXQgPSB2M2Rf c3VibWl0X2xvY2tfcmVzZXJ2YXRpb25zKCZzdWJtaXQpOwogCWlmIChyZXQpCiAJCWdvdG8gZmFp bDsKIApAQCAtMTEwNSwxOCArMTA1MiwxNCBAQCB2M2Rfc3VibWl0X2NsX2lvY3RsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKHJldCkKIAkJZ290byBmYWlsX3VucmVz ZXJ2ZTsKIAotCXYzZF9hdHRhY2hfZmVuY2VzX2FuZF91bmxvY2tfcmVzZXJ2YXRpb24oZmlsZV9w cml2LAotCQkJCQkJIHN1Ym1pdC5qb2JzW3N1Ym1pdC5qb2JfY291bnQgLSAxXSwKLQkJCQkJCSAm c3VibWl0LmV4ZWMsCi0JCQkJCQkgYXJncy0+b3V0X3N5bmMsICZzZSwKLQkJCQkJCSBzdWJtaXQu am9ic1tzdWJtaXQuam9iX2NvdW50IC0gMV0tPmRvbmVfZmVuY2UpOworCXYzZF9hdHRhY2hfZmVu Y2VzX2FuZF91bmxvY2tfcmVzZXJ2YXRpb24oJnN1Ym1pdCwgYXJncy0+b3V0X3N5bmMsICZzZSk7 CiAKIAl2M2Rfc3VibWl0X3B1dF9qb2JzKCZzdWJtaXQpOwogCiAJcmV0dXJuIDA7CiAKIGZhaWxf dW5yZXNlcnZlOgotCWRybV9leGVjX2ZpbmkoJnN1Ym1pdC5leGVjKTsKKwl2M2Rfc3VibWl0X3Vu bG9ja19yZXNlcnZhdGlvbnMoJnN1Ym1pdCk7CiBmYWlsOgogCXYzZF9zdWJtaXRfY2xlYW51cF9q b2JzKCZzdWJtaXQpOwogCXYzZF9wdXRfbXVsdGlzeW5jX3Bvc3RfZGVwcygmc2UpOwpAQCAtMTE5 NCw3ICsxMTM3LDcgQEAgdjNkX3N1Ym1pdF90ZnVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKIAkJam9iLT5iYXNlLmJvW2pvYi0+YmFzZS5ib19jb3VudF0gPSBibzsK IAl9CiAKLQlyZXQgPSB2M2RfbG9ja19ib19yZXNlcnZhdGlvbnMoJmpvYi0+YmFzZSwgJnN1Ym1p dC5leGVjKTsKKwlyZXQgPSB2M2Rfc3VibWl0X2xvY2tfcmVzZXJ2YXRpb25zKCZzdWJtaXQpOwog CWlmIChyZXQpCiAJCWdvdG8gZmFpbDsKIApAQCAtMTIwMiwxNyArMTE0NSwxNCBAQCB2M2Rfc3Vi bWl0X3RmdV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCWlmIChy ZXQpCiAJCWdvdG8gZmFpbF91bnJlc2VydmU7CiAKLQl2M2RfYXR0YWNoX2ZlbmNlc19hbmRfdW5s b2NrX3Jlc2VydmF0aW9uKGZpbGVfcHJpdiwKLQkJCQkJCSAmam9iLT5iYXNlLCAmc3VibWl0LmV4 ZWMsCi0JCQkJCQkgYXJncy0+b3V0X3N5bmMsICZzZSwKLQkJCQkJCSBqb2ItPmJhc2UuZG9uZV9m ZW5jZSk7CisJdjNkX2F0dGFjaF9mZW5jZXNfYW5kX3VubG9ja19yZXNlcnZhdGlvbigmc3VibWl0 LCBhcmdzLT5vdXRfc3luYywgJnNlKTsKIAogCXYzZF9zdWJtaXRfcHV0X2pvYnMoJnN1Ym1pdCk7 CiAKIAlyZXR1cm4gMDsKIAogZmFpbF91bnJlc2VydmU6Ci0JZHJtX2V4ZWNfZmluaSgmc3VibWl0 LmV4ZWMpOworCXYzZF9zdWJtaXRfdW5sb2NrX3Jlc2VydmF0aW9ucygmc3VibWl0KTsKIGZhaWw6 CiAJdjNkX3N1Ym1pdF9jbGVhbnVwX2pvYnMoJnN1Ym1pdCk7CiAJdjNkX3B1dF9tdWx0aXN5bmNf cG9zdF9kZXBzKCZzZSk7CkBAIC0xMjM2LDggKzExNzYsNiBAQCB2M2Rfc3VibWl0X2NzZF9pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXN0cnVjdCB2M2Rfc3VibWl0 IHN1Ym1pdCA9IHsgLnYzZCA9IHRvX3YzZF9kZXYoZGV2KSwgLmZpbGVfcHJpdiA9IGZpbGVfcHJp diB9OwogCXN0cnVjdCBkcm1fdjNkX3N1Ym1pdF9jc2QgKmFyZ3MgPSBkYXRhOwogCXN0cnVjdCB2 M2Rfc3VibWl0X2V4dCBzZSA9IHswfTsKLQlzdHJ1Y3QgdjNkX2NzZF9qb2IgKmpvYiA9IE5VTEw7 Ci0Jc3RydWN0IHYzZF9qb2IgKmNsZWFuX2pvYiA9IE5VTEw7CiAJaW50IHJldDsKIAogCXRyYWNl X3YzZF9zdWJtaXRfY3NkX2lvY3RsKGRldiwgYXJncy0+Y2ZnWzVdLCBhcmdzLT5jZmdbNl0pOwpA QCAtMTI2MywxNCArMTIwMSwxMCBAQCB2M2Rfc3VibWl0X2NzZF9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQl9CiAJfQogCi0JcmV0ID0gdjNkX3NldHVwX2NzZF9q b2JzX2FuZF9ib3MoZmlsZV9wcml2LCBzdWJtaXQudjNkLCBhcmdzLAotCQkJCQkgJmpvYiwgJmNs ZWFuX2pvYiwgJnNlLCAmc3VibWl0LmV4ZWMpOworCXJldCA9IHYzZF9zZXR1cF9jc2Rfam9ic19h bmRfYm9zKCZzdWJtaXQsIGFyZ3MsICZzZSk7CiAJaWYgKHJldCkKIAkJZ290byBmYWlsOwogCi0J c3VibWl0LmpvYnNbc3VibWl0LmpvYl9jb3VudCsrXSA9ICZqb2ItPmJhc2U7Ci0Jc3VibWl0Lmpv YnNbc3VibWl0LmpvYl9jb3VudCsrXSA9IGNsZWFuX2pvYjsKLQogCXJldCA9IHYzZF9hdHRhY2hf cGVyZm1vbl90b19qb2JzKCZzdWJtaXQsIGFyZ3MtPnBlcmZtb25faWQpOwogCWlmIChyZXQpCiAJ CWdvdG8gZmFpbF91bnJlc2VydmU7CkBAIC0xMjc5LDE4ICsxMjEzLDE0IEBAIHYzZF9zdWJtaXRf Y3NkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJaWYgKHJldCkK IAkJZ290byBmYWlsX3VucmVzZXJ2ZTsKIAotCXYzZF9hdHRhY2hfZmVuY2VzX2FuZF91bmxvY2tf cmVzZXJ2YXRpb24oZmlsZV9wcml2LAotCQkJCQkJIGNsZWFuX2pvYiwKLQkJCQkJCSAmc3VibWl0 LmV4ZWMsCi0JCQkJCQkgYXJncy0+b3V0X3N5bmMsICZzZSwKLQkJCQkJCSBjbGVhbl9qb2ItPmRv bmVfZmVuY2UpOworCXYzZF9hdHRhY2hfZmVuY2VzX2FuZF91bmxvY2tfcmVzZXJ2YXRpb24oJnN1 Ym1pdCwgYXJncy0+b3V0X3N5bmMsICZzZSk7CiAKIAl2M2Rfc3VibWl0X3B1dF9qb2JzKCZzdWJt aXQpOwogCiAJcmV0dXJuIDA7CiAKIGZhaWxfdW5yZXNlcnZlOgotCWRybV9leGVjX2ZpbmkoJnN1 Ym1pdC5leGVjKTsKKwl2M2Rfc3VibWl0X3VubG9ja19yZXNlcnZhdGlvbnMoJnN1Ym1pdCk7CiBm YWlsOgogCXYzZF9zdWJtaXRfY2xlYW51cF9qb2JzKCZzdWJtaXQpOwogCXYzZF9wdXRfbXVsdGlz eW5jX3Bvc3RfZGVwcygmc2UpOwpAQCAtMTMyMSwxMyArMTI1MSwxNCBAQCB2M2Rfc3VibWl0X2Nw dV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkgICAgIHN0cnVj dCBkcm1fZmlsZSAqZmlsZV9wcml2KQogewogCXN0cnVjdCB2M2RfZGV2ICp2M2QgPSB0b192M2Rf ZGV2KGRldik7CisJc3RydWN0IHYzZF9zdWJtaXQgc3VibWl0ID0geyAudjNkID0gdG9fdjNkX2Rl dihkZXYpLCAuZmlsZV9wcml2ID0gZmlsZV9wcml2IH07CisJc3RydWN0IHYzZF9zdWJtaXQgaW5k aXJlY3Rfc3VibWl0ID0geyAudjNkID0gdG9fdjNkX2RldihkZXYpLCAuZmlsZV9wcml2ID0gZmls ZV9wcml2IH07CiAJc3RydWN0IGRybV92M2Rfc3VibWl0X2NwdSAqYXJncyA9IGRhdGE7CiAJc3Ry dWN0IHYzZF9zdWJtaXRfZXh0IHNlID0gezB9OwogCXN0cnVjdCB2M2Rfc3VibWl0X2V4dCAqb3V0 X3NlID0gTlVMTDsKIAlzdHJ1Y3QgdjNkX2NwdV9qb2IgKmNwdV9qb2IgPSBOVUxMOwogCXN0cnVj dCB2M2RfY3NkX2pvYiAqY3NkX2pvYiA9IE5VTEw7CiAJc3RydWN0IHYzZF9qb2IgKmNsZWFuX2pv YiA9IE5VTEw7Ci0Jc3RydWN0IGRybV9leGVjIGV4ZWM7CiAJaW50IHJldDsKIAogCWlmIChhcmdz LT5mbGFncyAmJiAhKGFyZ3MtPmZsYWdzICYgRFJNX1YzRF9TVUJNSVRfRVhURU5TSU9OKSkgewpA QCAtMTMzNSw3ICsxMjY2LDggQEAgdjNkX3N1Ym1pdF9jcHVfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JcmV0ID0gdjNk X2pvYl9hbGxvY2F0ZSh2M2QsICh2b2lkICopJmNwdV9qb2IsIHNpemVvZigqY3B1X2pvYikpOwor CXJldCA9IHYzZF9zdWJtaXRfYWRkX2pvYigmc3VibWl0LCAodm9pZCAqKikmY3B1X2pvYiwgc2l6 ZW9mKCpjcHVfam9iKSwKKwkJCQkgdjNkX2pvYl9mcmVlLCBWM0RfQ1BVKTsKIAlpZiAocmV0KQog CQlyZXR1cm4gcmV0OwogCkBAIC0xMzYyLDM0ICsxMjk0LDMxIEBAIHYzZF9zdWJtaXRfY3B1X2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAKIAl0cmFjZV92M2Rfc3Vi bWl0X2NwdV9pb2N0bCgmdjNkLT5kcm0sIGNwdV9qb2ItPmpvYl90eXBlKTsKIAotCXJldCA9IHYz ZF9qb2JfaW5pdCh2M2QsIGZpbGVfcHJpdiwgJmNwdV9qb2ItPmJhc2UsCi0JCQkgICB2M2Rfam9i X2ZyZWUsIDAsICZzZSwgVjNEX0NQVSk7Ci0JaWYgKHJldCkgewotCQl2M2Rfam9iX2RlYWxsb2Nh dGUoKHZvaWQgKikmY3B1X2pvYik7CisJcmV0ID0gdjNkX2pvYl9hZGRfc3luY29ianMoJmNwdV9q b2ItPmJhc2UsIGZpbGVfcHJpdiwgMCwgJnNlLCBWM0RfQ1BVKTsKKwlpZiAocmV0KQogCQlnb3Rv IGZhaWw7Ci0JfQogCiAJaWYgKGNwdV9qb2ItPmpvYl90eXBlID09IFYzRF9DUFVfSk9CX1RZUEVf SU5ESVJFQ1RfQ1NEKSB7Ci0JCXJldCA9IHYzZF9zZXR1cF9jc2Rfam9ic19hbmRfYm9zKGZpbGVf cHJpdiwgdjNkLAorCQlyZXQgPSB2M2Rfc2V0dXBfY3NkX2pvYnNfYW5kX2JvcygmaW5kaXJlY3Rf c3VibWl0LAogCQkJCQkJICZjcHVfam9iLT5pbmRpcmVjdF9jc2QuYXJncywKLQkJCQkJCSAmY3B1 X2pvYi0+aW5kaXJlY3RfY3NkLmpvYiwKLQkJCQkJCSAmY3B1X2pvYi0+aW5kaXJlY3RfY3NkLmNs ZWFuX2pvYiwKLQkJCQkJCSBOVUxMLAotCQkJCQkJICZjcHVfam9iLT5pbmRpcmVjdF9jc2QuZXhl Yyk7CisJCQkJCQkgTlVMTCk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIGZhaWw7CisKKwkJY3B1X2pv Yi0+aW5kaXJlY3RfY3NkLmpvYiA9IGNvbnRhaW5lcl9vZihpbmRpcmVjdF9zdWJtaXQuam9ic1sw XSwKKwkJCQkJCQkgc3RydWN0IHYzZF9jc2Rfam9iLCBiYXNlKTsKKwkJY3B1X2pvYi0+aW5kaXJl Y3RfY3NkLmNsZWFuX2pvYiA9IGluZGlyZWN0X3N1Ym1pdC5qb2JzWzFdOwogCX0KIAogCWNsZWFu X2pvYiA9IGNwdV9qb2ItPmluZGlyZWN0X2NzZC5jbGVhbl9qb2I7CiAJY3NkX2pvYiA9IGNwdV9q b2ItPmluZGlyZWN0X2NzZC5qb2I7CiAKIAlpZiAoYXJncy0+Ym9faGFuZGxlX2NvdW50KSB7Ci0J CXJldCA9IHYzZF9sb29rdXBfYm9zKGRldiwgZmlsZV9wcml2LCAmY3B1X2pvYi0+YmFzZSwKLQkJ CQkgICAgIGFyZ3MtPmJvX2hhbmRsZXMsIGFyZ3MtPmJvX2hhbmRsZV9jb3VudCk7CisJCXJldCA9 IHYzZF9sb29rdXBfYm9zKCZzdWJtaXQsIGFyZ3MtPmJvX2hhbmRsZXMsIGFyZ3MtPmJvX2hhbmRs ZV9jb3VudCk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIGZhaWw7CiAKLQkJcmV0ID0gdjNkX2xvY2tf Ym9fcmVzZXJ2YXRpb25zKCZjcHVfam9iLT5iYXNlLCAmZXhlYyk7CisJCXJldCA9IHYzZF9zdWJt aXRfbG9ja19yZXNlcnZhdGlvbnMoJnN1Ym1pdCk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIGZhaWw7 CiAJfQpAQCAtMTQyMSwzNiArMTM1MCwyOCBAQCB2M2Rfc3VibWl0X2NwdV9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCiAJb3V0X3NlID0gKGNwdV9qb2ItPmpvYl90 eXBlID09IFYzRF9DUFVfSk9CX1RZUEVfSU5ESVJFQ1RfQ1NEKSA/IE5VTEwgOiAmc2U7CiAKLQl2 M2RfYXR0YWNoX2ZlbmNlc19hbmRfdW5sb2NrX3Jlc2VydmF0aW9uKGZpbGVfcHJpdiwKLQkJCQkJ CSAmY3B1X2pvYi0+YmFzZSwKLQkJCQkJCSAmZXhlYywgMCwKLQkJCQkJCSBvdXRfc2UsIGNwdV9q b2ItPmJhc2UuZG9uZV9mZW5jZSk7CisJdjNkX2F0dGFjaF9mZW5jZXNfYW5kX3VubG9ja19yZXNl cnZhdGlvbigmc3VibWl0LCAwLCBvdXRfc2UpOwogCiAJc3dpdGNoIChjcHVfam9iLT5qb2JfdHlw ZSkgewogCWNhc2UgVjNEX0NQVV9KT0JfVFlQRV9JTkRJUkVDVF9DU0Q6Ci0JCXYzZF9hdHRhY2hf ZmVuY2VzX2FuZF91bmxvY2tfcmVzZXJ2YXRpb24oZmlsZV9wcml2LAotCQkJCQkJCSBjbGVhbl9q b2IsCi0JCQkJCQkJICZjcHVfam9iLT5pbmRpcmVjdF9jc2QuZXhlYywKLQkJCQkJCQkgMCwgJnNl LCBjbGVhbl9qb2ItPmRvbmVfZmVuY2UpOworCQl2M2RfYXR0YWNoX2ZlbmNlc19hbmRfdW5sb2Nr X3Jlc2VydmF0aW9uKCZpbmRpcmVjdF9zdWJtaXQsIDAsICZzZSk7CiAJCWJyZWFrOwogCWRlZmF1 bHQ6CiAJCWJyZWFrOwogCX0KIAotCXYzZF9qb2JfcHV0KCZjcHVfam9iLT5iYXNlKTsKLQl2M2Rf am9iX3B1dCgmY3NkX2pvYi0+YmFzZSk7Ci0JdjNkX2pvYl9wdXQoY2xlYW5fam9iKTsKKwl2M2Rf c3VibWl0X3B1dF9qb2JzKCZzdWJtaXQpOworCXYzZF9zdWJtaXRfcHV0X2pvYnMoJmluZGlyZWN0 X3N1Ym1pdCk7CiAKIAlyZXR1cm4gMDsKIAogZmFpbF91bnJlc2VydmU6CiAJbXV0ZXhfdW5sb2Nr KCZ2M2QtPnNjaGVkX2xvY2spOwotCWRybV9leGVjX2ZpbmkoJmV4ZWMpOwotCWRybV9leGVjX2Zp bmkoJmNwdV9qb2ItPmluZGlyZWN0X2NzZC5leGVjKTsKKwl2M2Rfc3VibWl0X3VubG9ja19yZXNl cnZhdGlvbnMoJnN1Ym1pdCk7CisJdjNkX3N1Ym1pdF91bmxvY2tfcmVzZXJ2YXRpb25zKCZpbmRp cmVjdF9zdWJtaXQpOwogZmFpbDoKLQl2M2Rfam9iX2NsZWFudXAoKHZvaWQgKiljcHVfam9iKTsK LQl2M2Rfam9iX2NsZWFudXAoKHZvaWQgKiljc2Rfam9iKTsKLQl2M2Rfam9iX2NsZWFudXAoY2xl YW5fam9iKTsKKwl2M2Rfc3VibWl0X2NsZWFudXBfam9icygmc3VibWl0KTsKKwl2M2Rfc3VibWl0 X2NsZWFudXBfam9icygmaW5kaXJlY3Rfc3VibWl0KTsKIAl2M2RfcHV0X211bHRpc3luY19wb3N0 X2RlcHMoJnNlKTsKIAlrdmZyZWUoY3B1X2pvYi0+dGltZXN0YW1wX3F1ZXJ5LnF1ZXJpZXMpOwog CWt2ZnJlZShjcHVfam9iLT5wZXJmb3JtYW5jZV9xdWVyeS5xdWVyaWVzKTsKCi0tIAoyLjU0LjAK Cg==