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 73FBACD6E55 for ; Wed, 3 Jun 2026 22:25:56 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id D032111242D; Wed, 3 Jun 2026 22:25:55 +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="UvdJLA9U"; dkim-atps=neutral Received: from fanzine2.igalia.com (fanzine2.igalia.com [213.97.179.56]) by gabe.freedesktop.org (Postfix) with ESMTPS id D36F511242D for ; Wed, 3 Jun 2026 22:25:54 +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=nIdmmDEPgfxC6JtBY9CjbnDC+kep1zlYXFNpf9g0htg=; b=UvdJLA9UgIEwdD6qa1Qvxik1Bz y1JBvelK1vqwz+PYACC/06F80z5UP4XiDCpSb1pqSj9r2PqAL4Osap/lI9dlSyv4Kgxi/X2KCgutx Ig0yj3DTQ3vX9YXQSvNGk0gjCi9w+oxI6Qp5w09QyLiAL8/7P5eCEiUmUES3I8rAlX6DWKuk2E9pO DMaihRznVGEOtPsyt4XsL77BQsqDojlD09ivou9iMN+IKycr7cwPEVis4VfSmvqYx8bu4nU4bAhl9 CbT4/gF3TN//z9KnlKyzDHYqRLpleDbpR7mmL7pDGNPmx+X2SiJuMf5mj24ki4ifP19dNzGteUabz aY1fM3NQ==; 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 1wUu20-00CNgx-WA; Thu, 04 Jun 2026 00:25:49 +0200 From: =?utf-8?q?Ma=C3=ADra_Canal?= Date: Wed, 03 Jun 2026 19:25:10 -0300 Subject: [PATCH v3 08/14] drm/v3d: Introduce struct v3d_submit and convert CL/TFU/CSD ioctls MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Message-Id: <20260603-v3d-sched-misc-fixes-v3-8-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=17089; i=mcanal@igalia.com; h=from:subject:message-id; bh=Thp7la4lh1H0yP+es48dflHqBxIR2y4w4qZ8fEKDt5M=; b=owGbwMvMwMVo/5mvq6zj1yrG02pJDFkKK4/tq/z4szR35uwN0XEPd4a0iFc9f3Gw4LXI60DXN Q9l8xiZOxmNWRgYuRhkxRRZfjyJrWUUK2fXXFZ+EWYQKxPIFAYuTgGYyEEvDoZDBftzrTZV3Zll soSJOelTeZOgjtbSVZ94cjU0md2N106c1PGi7N5W1SrBM3tcrrxuSgmS2vNWyWkFa+IiOZPNa7Y Lr/zPf6fytqmkXuQR56eCMsVGf7fr5Iju2+yapNQrk3x6v3VTee28pWKM9e8bL2x4sfOfZKIX49 K4Ev1Gt3t39PfdfOom42kWrGCwkq/RyjNNcdk3xnyzvav07m68UnU/PCHCpUp195/Ier/bsTxpR bzlCnZ3i3l4jX7EzW2obamOezRf2qr05t7/xYHybmfmz1TT7I74fzY46LnMCysln1Apqandhg3V vxqtK/yfRGjpe095+v617pyXLfYmqolnZ83bVSt8rSkSAA== 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" QXMgdGhlIFYzRCBkcml2ZXIgZ3JldyB3aXRoIHRpbWUsIGRpZmZlcmVudCB0eXBlcyBvZiBzdWJt aXNzaW9uIHdlcmUgYWRkZWQKYW5kIHRoZSBzdWJtaXNzaW9uIGNvZGUgZ3JldyBtb3JlIGNvbXBs ZXgsIGJ1dCB0aGUgZHJpdmVyIHN0dWNrIHdpdGggdGhlCnNhbWUgYWJzdHJhY3Rpb25zLgoKTm93 YWRheXMsIHRoZSBzdWJtaXNzaW9uIGlvY3RscyBkb24ndCBzdWJtaXQgYSBzaW5nbGUgam9iLCBi dXQgYQpjaGFpbiBvZiBqb2JzOgoKMS4gdjNkX3N1Ym1pdF9jbF9pb2N0bCgpIHN1Ym1pdHMgYSBC SU4gam9iIChvcHRpb25hbCksIFJFTkRFUiBqb2IKICAgKG1hbmRhdG9yeSksIGFuZCBhIENMRUFO X0NBQ0hFIGpvYiAob3B0aW9uYWwpLgoyLiB2M2Rfc3VibWl0X2NzZF9pb2N0bCgpIHN1Ym1pdHMg YSBDU0QsIGFuZCBhIENMRUFOX0NBQ0hFIGpvYi4KMy4gdjNkX3N1Ym1pdF90ZnVfaW9jdGwoKSBz dWJtaXRzIGEgVEZVIGpvYi4KClRoZXJlZm9yZSwgZWFjaCBpb2N0bCBzdWJtaXRzIGEgY2hhaW4g b2Ygam9icyBpbiB3aGljaCBlYWNoIGpvYiBkZXBlbmRzIG9uCnRoZSBwcmV2aW91cyBvbmUuIEhv d2V2ZXIsIHRoaXMgY29uY2VwdCBpcyBub3Qgd2VsbCByZXByZXNlbnRlZCBpbiBzb2Z0d2FyZQph dCB0aGUgbW9tZW50LgoKVG8gYWRkcmVzcyB0aGlzLCBpbnRyb2R1Y2UgYSBuZXcgY29uY2VwdDog dGhlIHN0cnVjdCB2M2Rfc3VibWl0LCB3aGljaApncm91cHMgdGhlIHN1Ym1pc3Npb24gc3RhdGUg YW5kIHJlcHJlc2VudHMgdGhlIHN1Ym1pc3Npb24gY2hhaW4gZm9ybWVkIGJ5CmFuIG9yZGVyZWQg YXJyYXkgb2Ygam9icy4KCkFkZCBuZXcgaGVscGVycyB0byBhbGxvY2F0ZSwgYWRkIGpvYnMgdG8g dGhlIGNoYWluIGFuZCBzdWJtaXQgam9icyB0bwp0aGUgc2NoZWR1bGVyLCBhbGwgYmFzZWQgb24g dGhlIG5ldyBzdHJ1Y3QuIENvbnZlcnQgdjNkX3N1Ym1pdF9jbF9pb2N0bCgpLAp2M2Rfc3VibWl0 X3RmdV9pb2N0bCgpIGFuZCB2M2Rfc3VibWl0X2NzZF9pb2N0bCgpIHRvIHRoZSBuZXcgcGF0dGVy bi4gRWFjaAppb2N0bCBub3cgZm9sbG93cyB0aGUgc2FtZSBmbG93OiBhZGQgam9icyAtPiBhdHRh Y2ggcGVyZm1vbiAtPiBsb29rdXAgQk9zCi0+IGxvY2sgcmVzZXJ2YXRpb25zIC0+IHN1Ym1pdCBj aGFpbiAtPiBhdHRhY2ggZmVuY2VzIC0+IHB1dCBqb2JzLgoKVGhlIENQVSBpb2N0bCBpcyBsZWZ0 IG9uIHRoZSBvbGQgaGVscGVycyBmb3Igbm93OyBpdHMgaW5kaXJlY3QgQ1NEIHBhdGgKcmVxdWly ZXMgc29tZSByZXN0cnVjdHVyaW5nIHRoYXQgd2lsbCBiZSBhZGRyZXNzZWQgaW4gdGhlIG5leHQg ZmV3CmNvbW1pdHMuCgpTaWduZWQtb2ZmLWJ5OiBNYcOtcmEgQ2FuYWwgPG1jYW5hbEBpZ2FsaWEu Y29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS92M2QvdjNkX2Rydi5oICAgIHwgIDIxICsrKwogZHJp dmVycy9ncHUvZHJtL3YzZC92M2Rfc3VibWl0LmMgfCAzODYgKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDI0MSBpbnNlcnRpb25zKCspLCAx NjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vdjNkL3YzZF9kcnYuaAppbmRleCAwN2JiZGY1MmMzM2MuLmZh ZTBjNTNlN2FhMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZHJ2LmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2RfZHJ2LmgKQEAgLTI4OCw2ICsyODgsMjcgQEAgdG9f djNkX2ZlbmNlKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQogI2RlZmluZSBWM0RfQ09SRV9SRUFE KGNvcmUsIG9mZnNldCkgcmVhZGwodjNkLT5jb3JlX3JlZ3NbY29yZV0gKyBvZmZzZXQpCiAjZGVm aW5lIFYzRF9DT1JFX1dSSVRFKGNvcmUsIG9mZnNldCwgdmFsKSB3cml0ZWwodmFsLCB2M2QtPmNv cmVfcmVnc1tjb3JlXSArIG9mZnNldCkKIAorI2RlZmluZSBWM0RfTUFYX0pPQlNfUEVSX1NVQk1J U1NJT04gMworCisvKiBQZXItaW9jdGwgc3VibWlzc2lvbiBjb250ZXh0ICovCitzdHJ1Y3QgdjNk X3N1Ym1pdCB7CisJc3RydWN0IHYzZF9kZXYgKnYzZDsKKworCXN0cnVjdCBkcm1fZmlsZSAqZmls ZV9wcml2OworCisJLyogRFJNIGV4ZWMgY29udGV4dCBmb3IgdGhpcyBzdWJtaXNzaW9uLiAqLwor CXN0cnVjdCBkcm1fZXhlYyBleGVjOworCisJLyogT3JkZXJlZCBhcnJheSBvZiBqb2JzIGZvcm1p bmcgdGhlIHN1Ym1pc3Npb24gY2hhaW4uIEpvYnMgYXJlCisJICogYXBwZW5kZWQgdmlhIHYzZF9z dWJtaXRfYWRkX2pvYigpLCB0aGVuIGNoYWluZWQgYW5kIHB1c2hlZCB0bworCSAqIHRoZSBzY2hl ZHVsZXIgYnkgdjNkX3N1Ym1pdF9qb2JzKCkuCisJICovCisJc3RydWN0IHYzZF9qb2IgKmpvYnNb VjNEX01BWF9KT0JTX1BFUl9TVUJNSVNTSU9OXTsKKworCS8qIE51bWJlciBvZiBqb2JzIGN1cnJl bnRseSBpbiBAam9icy4gKi8KKwl1MzIgam9iX2NvdW50OworfTsKKwogc3RydWN0IHYzZF9qb2Ig ewogCXN0cnVjdCBkcm1fc2NoZWRfam9iIGJhc2U7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS92M2QvdjNkX3N1Ym1pdC5jIGIvZHJpdmVycy9ncHUvZHJtL3YzZC92M2Rfc3VibWl0LmMK aW5kZXggZDgwYWZiZjJjMDNiLi5mY2FmM2E2Y2ZkZGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS92M2QvdjNkX3N1Ym1pdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS92M2QvdjNkX3N1Ym1p dC5jCkBAIC0yNjEsMTcgKzI2MSwxMDUgQEAgdjNkX2pvYl9pbml0KHN0cnVjdCB2M2RfZGV2ICp2 M2QsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRp YyB2b2lkCi12M2RfcHVzaF9qb2Ioc3RydWN0IHYzZF9qb2IgKmpvYikKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgeworCXNpemVfdCBzaXplOworCXZvaWQgKCpmcmVlKShzdHJ1Y3Qga3JlZiAqcmVmKTsK K30gdjNkX2pvYl90eXBlc1tdID0geworCVtWM0RfQklOXQkJPSB7IHNpemVvZihzdHJ1Y3QgdjNk X2Jpbl9qb2IpLCB2M2Rfam9iX2ZyZWUgfSwKKwlbVjNEX1JFTkRFUl0JCT0geyBzaXplb2Yoc3Ry dWN0IHYzZF9yZW5kZXJfam9iKSwgdjNkX3JlbmRlcl9qb2JfZnJlZSB9LAorCVtWM0RfVEZVXQkJ PSB7IHNpemVvZihzdHJ1Y3QgdjNkX3RmdV9qb2IpLCB2M2Rfam9iX2ZyZWUgfSwKKwlbVjNEX0NT RF0JCT0geyBzaXplb2Yoc3RydWN0IHYzZF9jc2Rfam9iKSwgdjNkX2pvYl9mcmVlIH0sCisJW1Yz RF9DQUNIRV9DTEVBTl0JPSB7IHNpemVvZihzdHJ1Y3QgdjNkX2pvYiksIHYzZF9qb2JfZnJlZSB9 LAorCVtWM0RfQ1BVXQkJPSB7IHNpemVvZihzdHJ1Y3QgdjNkX2NwdV9qb2IpLCB2M2RfY3B1X2pv Yl9mcmVlIH0sCit9OworCitzdGF0aWMgc3RydWN0IHYzZF9qb2IgKgordjNkX3N1Ym1pdF9hZGRf am9iKHN0cnVjdCB2M2Rfc3VibWl0ICpzdWJtaXQsIGVudW0gdjNkX3F1ZXVlIHF1ZXVlKQogewot CWRybV9zY2hlZF9qb2JfYXJtKCZqb2ItPmJhc2UpOworCXN0cnVjdCB2M2RfZmlsZV9wcml2ICp2 M2RfcHJpdiA9IHN1Ym1pdC0+ZmlsZV9wcml2LT5kcml2ZXJfcHJpdjsKKwlzdHJ1Y3QgdjNkX2Rl diAqdjNkID0gc3VibWl0LT52M2Q7CisJc3RydWN0IHYzZF9qb2IgKmpvYjsKKwlpbnQgcmV0Owog Ci0Jam9iLT5kb25lX2ZlbmNlID0gZG1hX2ZlbmNlX2dldCgmam9iLT5iYXNlLnNfZmVuY2UtPmZp bmlzaGVkKTsKKwlpZiAocXVldWUgPj0gVjNEX01BWF9RVUVVRVMpCisJCXJldHVybiBFUlJfUFRS KC1FSU5WQUwpOwogCi0JLyogcHV0IGJ5IHNjaGVkdWxlciBqb2IgY29tcGxldGlvbiAqLwotCWty ZWZfZ2V0KCZqb2ItPnJlZmNvdW50KTsKKwlqb2IgPSBremFsbG9jKHYzZF9qb2JfdHlwZXNbcXVl dWVdLnNpemUsIEdGUF9LRVJORUwpOworCWlmICgham9iKQorCQlyZXR1cm4gRVJSX1BUUigtRU5P TUVNKTsKIAotCWRybV9zY2hlZF9lbnRpdHlfcHVzaF9qb2IoJmpvYi0+YmFzZSk7CisJam9iLT52 M2QgPSB2M2Q7CisJam9iLT5xdWV1ZSA9IHF1ZXVlOworCWpvYi0+ZmlsZV9wcml2ID0gdjNkX3By aXY7CisJam9iLT5mcmVlID0gdjNkX2pvYl90eXBlc1txdWV1ZV0uZnJlZTsKKworCXJldCA9IGRy bV9zY2hlZF9qb2JfaW5pdCgmam9iLT5iYXNlLCAmdjNkX3ByaXYtPnNjaGVkX2VudGl0eVtxdWV1 ZV0sCisJCQkJIDEsIHYzZF9wcml2LCBzdWJtaXQtPmZpbGVfcHJpdi0+Y2xpZW50X2lkKTsKKwlp ZiAocmV0KQorCQlnb3RvIGZhaWxfZnJlZTsKKworCS8qIENQVSBqb2JzIGRvbid0IHJlcXVpcmUg aGFyZHdhcmUgcmVzb3VyY2VzICovCisJaWYgKHF1ZXVlICE9IFYzRF9DUFUpIHsKKwkJcmV0ID0g djNkX3BtX3J1bnRpbWVfZ2V0KHYzZCk7CisJCWlmIChyZXQpCisJCQlnb3RvIGZhaWxfc2NoZWRf am9iOworCQlqb2ItPmhhc19wbV9yZWYgPSB0cnVlOworCX0KKworCWtyZWZfaW5pdCgmam9iLT5y ZWZjb3VudCk7CisKKwlqb2ItPmNsaWVudF9zdGF0cyA9IHYzZF9zdGF0c19nZXQodjNkX3ByaXYt PnN0YXRzW3F1ZXVlXSk7CisJam9iLT5nbG9iYWxfc3RhdHMgPSB2M2Rfc3RhdHNfZ2V0KHYzZC0+ cXVldWVbcXVldWVdLnN0YXRzKTsKKworCXN1Ym1pdC0+am9ic1tzdWJtaXQtPmpvYl9jb3VudCsr XSA9IGpvYjsKKworCXJldHVybiBqb2I7CisKK2ZhaWxfc2NoZWRfam9iOgorCWRybV9zY2hlZF9q b2JfY2xlYW51cCgmam9iLT5iYXNlKTsKK2ZhaWxfZnJlZToKKwlrZnJlZShqb2IpOworCXJldHVy biBFUlJfUFRSKHJldCk7Cit9CisKK3N0YXRpYyB2b2lkCit2M2Rfc3VibWl0X3B1dF9qb2JzKHN0 cnVjdCB2M2Rfc3VibWl0ICpzdWJtaXQpCit7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBzdWJtaXQt PmpvYl9jb3VudDsgaSsrKQorCQl2M2Rfam9iX3B1dChzdWJtaXQtPmpvYnNbaV0pOworfQorCitz dGF0aWMgdm9pZAordjNkX3N1Ym1pdF9jbGVhbnVwX2pvYnMoc3RydWN0IHYzZF9zdWJtaXQgKnN1 Ym1pdCkKK3sKKwlmb3IgKGludCBpID0gMDsgaSA8IHN1Ym1pdC0+am9iX2NvdW50OyBpKyspCisJ CXYzZF9qb2JfY2xlYW51cChzdWJtaXQtPmpvYnNbaV0pOworfQorCitzdGF0aWMgaW50Cit2M2Rf YXR0YWNoX3BlcmZtb25fdG9fam9icyhzdHJ1Y3QgdjNkX3N1Ym1pdCAqc3VibWl0LCB1MzIgcGVy Zm1vbl9pZCkKK3sKKwlzdHJ1Y3QgdjNkX2ZpbGVfcHJpdiAqdjNkX3ByaXYgPSBzdWJtaXQtPmZp bGVfcHJpdi0+ZHJpdmVyX3ByaXY7CisJc3RydWN0IHYzZF9kZXYgKnYzZCA9IHN1Ym1pdC0+djNk OworCXN0cnVjdCB2M2RfcGVyZm1vbiAqcGVyZm1vbjsKKworCWlmICghcGVyZm1vbl9pZCkKKwkJ cmV0dXJuIDA7CisKKwlpZiAodjNkLT5nbG9iYWxfcGVyZm1vbikKKwkJcmV0dXJuIC1FQUdBSU47 CisKKwlwZXJmbW9uID0gdjNkX3BlcmZtb25fZmluZCh2M2RfcHJpdiwgcGVyZm1vbl9pZCk7CisJ aWYgKCFwZXJmbW9uKQorCQlyZXR1cm4gLUVOT0VOVDsKKworCWZvciAoaW50IGkgPSAwOyBpIDwg c3VibWl0LT5qb2JfY291bnQ7IGkrKykgeworCQlzdWJtaXQtPmpvYnNbaV0tPnBlcmZtb24gPSBw ZXJmbW9uOworCQlpZiAoaSAhPSAwKQorCQkJdjNkX3BlcmZtb25fZ2V0KHBlcmZtb24pOworCX0K KworCXJldHVybiAwOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMzE2LDYgKzQwNCw0NSBAQCB2M2Rf YXR0YWNoX2ZlbmNlc19hbmRfdW5sb2NrX3Jlc2VydmF0aW9uKHN0cnVjdCBkcm1fZmlsZSAqZmls ZV9wcml2LAogCX0KIH0KIAorc3RhdGljIHZvaWQKK3YzZF9wdXNoX2pvYihzdHJ1Y3QgdjNkX2pv YiAqam9iKQoreworCWRybV9zY2hlZF9qb2JfYXJtKCZqb2ItPmJhc2UpOworCisJam9iLT5kb25l X2ZlbmNlID0gZG1hX2ZlbmNlX2dldCgmam9iLT5iYXNlLnNfZmVuY2UtPmZpbmlzaGVkKTsKKwor CS8qIHB1dCBieSBzY2hlZHVsZXIgam9iIGNvbXBsZXRpb24gKi8KKwlrcmVmX2dldCgmam9iLT5y ZWZjb3VudCk7CisKKwlkcm1fc2NoZWRfZW50aXR5X3B1c2hfam9iKCZqb2ItPmJhc2UpOworfQor CitzdGF0aWMgaW50Cit2M2Rfc3VibWl0X2pvYnMoc3RydWN0IHYzZF9zdWJtaXQgKnN1Ym1pdCkK K3sKKwlzdHJ1Y3QgdjNkX2RldiAqdjNkID0gc3VibWl0LT52M2Q7CisJaW50IHJldCA9IDA7CisK KwltdXRleF9sb2NrKCZ2M2QtPnNjaGVkX2xvY2spOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBz dWJtaXQtPmpvYl9jb3VudDsgaSsrKSB7CisJCXN0cnVjdCB2M2Rfam9iICpqb2IgPSBzdWJtaXQt PmpvYnNbaV07CisKKwkJdjNkX3B1c2hfam9iKGpvYik7CisKKwkJaWYgKGkgKyAxIDwgc3VibWl0 LT5qb2JfY291bnQpIHsKKwkJCXJldCA9IGRybV9zY2hlZF9qb2JfYWRkX2RlcGVuZGVuY3koJnN1 Ym1pdC0+am9ic1tpICsgMV0tPmJhc2UsCisJCQkJCQkJICAgZG1hX2ZlbmNlX2dldChqb2ItPmRv bmVfZmVuY2UpKTsKKwkJCWlmIChyZXQpCisJCQkJZ290byBlcnI7CisJCX0KKwl9CisKK2VycjoK KwltdXRleF91bmxvY2soJnYzZC0+c2NoZWRfbG9jayk7CisJcmV0dXJuIHJldDsKK30KKwogc3Rh dGljIGludAogdjNkX3NldHVwX2NzZF9qb2JzX2FuZF9ib3Moc3RydWN0IGRybV9maWxlICpmaWxl X3ByaXYsCiAJCQkgICBzdHJ1Y3QgdjNkX2RldiAqdjNkLApAQCAtOTIxLDE4ICsxMDQ4LDE1IEBA IGludAogdjNkX3N1Ym1pdF9jbF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpk YXRhLAogCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCiB7Ci0Jc3RydWN0IHYzZF9k ZXYgKnYzZCA9IHRvX3YzZF9kZXYoZGV2KTsKLQlzdHJ1Y3QgdjNkX2ZpbGVfcHJpdiAqdjNkX3By aXYgPSBmaWxlX3ByaXYtPmRyaXZlcl9wcml2OworCXN0cnVjdCB2M2Rfc3VibWl0IHN1Ym1pdCA9 IHsgLnYzZCA9IHRvX3YzZF9kZXYoZGV2KSwgLmZpbGVfcHJpdiA9IGZpbGVfcHJpdiB9OwogCXN0 cnVjdCBkcm1fdjNkX3N1Ym1pdF9jbCAqYXJncyA9IGRhdGE7CiAJc3RydWN0IHYzZF9zdWJtaXRf ZXh0IHNlID0gezB9OwogCXN0cnVjdCB2M2RfYmluX2pvYiAqYmluID0gTlVMTDsKIAlzdHJ1Y3Qg djNkX3JlbmRlcl9qb2IgKnJlbmRlciA9IE5VTEw7CiAJc3RydWN0IHYzZF9qb2IgKmNsZWFuX2pv YiA9IE5VTEw7Ci0Jc3RydWN0IHYzZF9qb2IgKmxhc3Rfam9iOwotCXN0cnVjdCBkcm1fZXhlYyBl eGVjOwotCWludCByZXQgPSAwOworCWludCByZXQ7CiAKLQl0cmFjZV92M2Rfc3VibWl0X2NsX2lv Y3RsKCZ2M2QtPmRybSwgYXJncy0+cmNsX3N0YXJ0LCBhcmdzLT5yY2xfZW5kKTsKKwl0cmFjZV92 M2Rfc3VibWl0X2NsX2lvY3RsKGRldiwgYXJncy0+cmNsX3N0YXJ0LCBhcmdzLT5yY2xfZW5kKTsK IAogCWlmIChhcmdzLT5wYWQpCiAJCXJldHVybiAtRUlOVkFMOwpAQCAtOTUyLDMwICsxMDc2LDEw IEBAIHYzZF9zdWJtaXRfY2xfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKIAkJfQogCX0KIAotCXJldCA9IHYzZF9qb2JfYWxsb2NhdGUodjNkLCAodm9pZCAqKSZyZW5k ZXIsIHNpemVvZigqcmVuZGVyKSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCXJldCA9 IHYzZF9qb2JfaW5pdCh2M2QsIGZpbGVfcHJpdiwgJnJlbmRlci0+YmFzZSwKLQkJCSAgIHYzZF9y ZW5kZXJfam9iX2ZyZWUsIGFyZ3MtPmluX3N5bmNfcmNsLCAmc2UsIFYzRF9SRU5ERVIpOwotCWlm IChyZXQpIHsKLQkJdjNkX2pvYl9kZWFsbG9jYXRlKCh2b2lkICopJnJlbmRlcik7Ci0JCWdvdG8g ZmFpbDsKLQl9Ci0KLQlyZW5kZXItPnN0YXJ0ID0gYXJncy0+cmNsX3N0YXJ0OwotCXJlbmRlci0+ ZW5kID0gYXJncy0+cmNsX2VuZDsKLQlJTklUX0xJU1RfSEVBRCgmcmVuZGVyLT51bnJlZl9saXN0 KTsKLQogCWlmIChhcmdzLT5iY2xfc3RhcnQgIT0gYXJncy0+YmNsX2VuZCkgewotCQlyZXQgPSB2 M2Rfam9iX2FsbG9jYXRlKHYzZCwgKHZvaWQgKikmYmluLCBzaXplb2YoKmJpbikpOwotCQlpZiAo cmV0KQotCQkJZ290byBmYWlsOwotCi0JCXJldCA9IHYzZF9qb2JfaW5pdCh2M2QsIGZpbGVfcHJp diwgJmJpbi0+YmFzZSwKLQkJCQkgICB2M2Rfam9iX2ZyZWUsIGFyZ3MtPmluX3N5bmNfYmNsLCAm c2UsIFYzRF9CSU4pOwotCQlpZiAocmV0KSB7Ci0JCQl2M2Rfam9iX2RlYWxsb2NhdGUoKHZvaWQg KikmYmluKTsKKwkJYmluID0gKHN0cnVjdCB2M2RfYmluX2pvYiAqKSB2M2Rfc3VibWl0X2FkZF9q b2IoJnN1Ym1pdCwgVjNEX0JJTik7CisJCWlmIChJU19FUlIoYmluKSkgeworCQkJcmV0ID0gUFRS X0VSUihiaW4pOwogCQkJZ290byBmYWlsOwogCQl9CiAKQEAgLTk4NCw5OSArMTA4OCw3MSBAQCB2 M2Rfc3VibWl0X2NsX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJ CWJpbi0+cW1hID0gYXJncy0+cW1hOwogCQliaW4tPnFtcyA9IGFyZ3MtPnFtczsKIAkJYmluLT5x dHMgPSBhcmdzLT5xdHM7Ci0JCWJpbi0+cmVuZGVyID0gcmVuZGVyOwotCX0KIAotCWlmIChhcmdz LT5mbGFncyAmIERSTV9WM0RfU1VCTUlUX0NMX0ZMVVNIX0NBQ0hFKSB7Ci0JCXJldCA9IHYzZF9q b2JfYWxsb2NhdGUodjNkLCAodm9pZCAqKSZjbGVhbl9qb2IsIHNpemVvZigqY2xlYW5fam9iKSk7 CisJCXJldCA9IHYzZF9qb2JfYWRkX3N5bmNvYmpzKCZiaW4tPmJhc2UsIGZpbGVfcHJpdiwgYXJn cy0+aW5fc3luY19iY2wsCisJCQkJCSAgICZzZSk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIGZhaWw7 Ci0KLQkJcmV0ID0gdjNkX2pvYl9pbml0KHYzZCwgZmlsZV9wcml2LCBjbGVhbl9qb2IsCi0JCQkJ ICAgdjNkX2pvYl9mcmVlLCAwLCBOVUxMLCBWM0RfQ0FDSEVfQ0xFQU4pOwotCQlpZiAocmV0KSB7 Ci0JCQl2M2Rfam9iX2RlYWxsb2NhdGUoKHZvaWQgKikmY2xlYW5fam9iKTsKLQkJCWdvdG8gZmFp bDsKLQkJfQotCi0JCWxhc3Rfam9iID0gY2xlYW5fam9iOwotCX0gZWxzZSB7Ci0JCWxhc3Rfam9i ID0gJnJlbmRlci0+YmFzZTsKIAl9CiAKLQlyZXQgPSB2M2RfbG9va3VwX2JvcyhkZXYsIGZpbGVf cHJpdiwgbGFzdF9qb2IsCisJcmVuZGVyID0gKHN0cnVjdCB2M2RfcmVuZGVyX2pvYiAqKSB2M2Rf c3VibWl0X2FkZF9qb2IoJnN1Ym1pdCwgVjNEX1JFTkRFUik7CisJaWYgKElTX0VSUihyZW5kZXIp KSB7CisJCXJldCA9IFBUUl9FUlIocmVuZGVyKTsKKwkJZ290byBmYWlsOworCX0KKworCUlOSVRf TElTVF9IRUFEKCZyZW5kZXItPnVucmVmX2xpc3QpOworCXJlbmRlci0+c3RhcnQgPSBhcmdzLT5y Y2xfc3RhcnQ7CisJcmVuZGVyLT5lbmQgPSBhcmdzLT5yY2xfZW5kOworCisJaWYgKGJpbikKKwkJ YmluLT5yZW5kZXIgPSByZW5kZXI7CisKKwlyZXQgPSB2M2Rfam9iX2FkZF9zeW5jb2JqcygmcmVu ZGVyLT5iYXNlLCBmaWxlX3ByaXYsIGFyZ3MtPmluX3N5bmNfcmNsLCAmc2UpOworCWlmIChyZXQp CisJCWdvdG8gZmFpbDsKKworCWlmIChhcmdzLT5mbGFncyAmIERSTV9WM0RfU1VCTUlUX0NMX0ZM VVNIX0NBQ0hFKSB7CisJCWNsZWFuX2pvYiA9IHYzZF9zdWJtaXRfYWRkX2pvYigmc3VibWl0LCBW M0RfQ0FDSEVfQ0xFQU4pOworCQlpZiAoSVNfRVJSKGNsZWFuX2pvYikpIHsKKwkJCXJldCA9IFBU Ul9FUlIoY2xlYW5fam9iKTsKKwkJCWdvdG8gZmFpbDsKKwkJfQorCX0KKworCXJldCA9IHYzZF9h dHRhY2hfcGVyZm1vbl90b19qb2JzKCZzdWJtaXQsIGFyZ3MtPnBlcmZtb25faWQpOworCWlmIChy ZXQpCisJCWdvdG8gZmFpbDsKKworCXJldCA9IHYzZF9sb29rdXBfYm9zKGRldiwgZmlsZV9wcml2 LAorCQkJICAgICBzdWJtaXQuam9ic1tzdWJtaXQuam9iX2NvdW50IC0gMV0sCiAJCQkgICAgIGFy Z3MtPmJvX2hhbmRsZXMsIGFyZ3MtPmJvX2hhbmRsZV9jb3VudCk7CiAJaWYgKHJldCkKIAkJZ290 byBmYWlsOwogCi0JcmV0ID0gdjNkX2xvY2tfYm9fcmVzZXJ2YXRpb25zKGxhc3Rfam9iLCAmZXhl Yyk7CisJcmV0ID0gdjNkX2xvY2tfYm9fcmVzZXJ2YXRpb25zKHN1Ym1pdC5qb2JzW3N1Ym1pdC5q b2JfY291bnQgLSAxXSwKKwkJCQkgICAgICAgJnN1Ym1pdC5leGVjKTsKIAlpZiAocmV0KQogCQln b3RvIGZhaWw7CiAKLQlpZiAoYXJncy0+cGVyZm1vbl9pZCkgewotCQlpZiAodjNkLT5nbG9iYWxf cGVyZm1vbikgewotCQkJcmV0ID0gLUVBR0FJTjsKLQkJCWdvdG8gZmFpbF9wZXJmbW9uOwotCQl9 Ci0KLQkJcmVuZGVyLT5iYXNlLnBlcmZtb24gPSB2M2RfcGVyZm1vbl9maW5kKHYzZF9wcml2LAot CQkJCQkJCWFyZ3MtPnBlcmZtb25faWQpOwotCi0JCWlmICghcmVuZGVyLT5iYXNlLnBlcmZtb24p IHsKLQkJCXJldCA9IC1FTk9FTlQ7Ci0JCQlnb3RvIGZhaWxfcGVyZm1vbjsKLQkJfQotCX0KLQot CW11dGV4X2xvY2soJnYzZC0+c2NoZWRfbG9jayk7Ci0JaWYgKGJpbikgewotCQliaW4tPmJhc2Uu cGVyZm1vbiA9IHJlbmRlci0+YmFzZS5wZXJmbW9uOwotCQl2M2RfcGVyZm1vbl9nZXQoYmluLT5i YXNlLnBlcmZtb24pOwotCQl2M2RfcHVzaF9qb2IoJmJpbi0+YmFzZSk7Ci0KLQkJcmV0ID0gZHJt X3NjaGVkX2pvYl9hZGRfZGVwZW5kZW5jeSgmcmVuZGVyLT5iYXNlLmJhc2UsCi0JCQkJCQkgICBk bWFfZmVuY2VfZ2V0KGJpbi0+YmFzZS5kb25lX2ZlbmNlKSk7Ci0JCWlmIChyZXQpCi0JCQlnb3Rv IGZhaWxfdW5yZXNlcnZlOwotCX0KLQotCXYzZF9wdXNoX2pvYigmcmVuZGVyLT5iYXNlKTsKLQot CWlmIChjbGVhbl9qb2IpIHsKLQkJc3RydWN0IGRtYV9mZW5jZSAqcmVuZGVyX2ZlbmNlID0KLQkJ CWRtYV9mZW5jZV9nZXQocmVuZGVyLT5iYXNlLmRvbmVfZmVuY2UpOwotCQlyZXQgPSBkcm1fc2No ZWRfam9iX2FkZF9kZXBlbmRlbmN5KCZjbGVhbl9qb2ItPmJhc2UsCi0JCQkJCQkgICByZW5kZXJf ZmVuY2UpOwotCQlpZiAocmV0KQotCQkJZ290byBmYWlsX3VucmVzZXJ2ZTsKLQkJY2xlYW5fam9i LT5wZXJmbW9uID0gcmVuZGVyLT5iYXNlLnBlcmZtb247Ci0JCXYzZF9wZXJmbW9uX2dldChjbGVh bl9qb2ItPnBlcmZtb24pOwotCQl2M2RfcHVzaF9qb2IoY2xlYW5fam9iKTsKLQl9Ci0KLQltdXRl eF91bmxvY2soJnYzZC0+c2NoZWRfbG9jayk7CisJcmV0ID0gdjNkX3N1Ym1pdF9qb2JzKCZzdWJt aXQpOworCWlmIChyZXQpCisJCWdvdG8gZmFpbF91bnJlc2VydmU7CiAKIAl2M2RfYXR0YWNoX2Zl bmNlc19hbmRfdW5sb2NrX3Jlc2VydmF0aW9uKGZpbGVfcHJpdiwKLQkJCQkJCSBsYXN0X2pvYiwK LQkJCQkJCSAmZXhlYywKLQkJCQkJCSBhcmdzLT5vdXRfc3luYywKLQkJCQkJCSAmc2UsCi0JCQkJ CQkgbGFzdF9qb2ItPmRvbmVfZmVuY2UpOworCQkJCQkJIHN1Ym1pdC5qb2JzW3N1Ym1pdC5qb2Jf Y291bnQgLSAxXSwKKwkJCQkJCSAmc3VibWl0LmV4ZWMsCisJCQkJCQkgYXJncy0+b3V0X3N5bmMs ICZzZSwKKwkJCQkJCSBzdWJtaXQuam9ic1tzdWJtaXQuam9iX2NvdW50IC0gMV0tPmRvbmVfZmVu Y2UpOwogCi0JdjNkX2pvYl9wdXQoJmJpbi0+YmFzZSk7Ci0JdjNkX2pvYl9wdXQoJnJlbmRlci0+ YmFzZSk7Ci0JdjNkX2pvYl9wdXQoY2xlYW5fam9iKTsKKwl2M2Rfc3VibWl0X3B1dF9qb2JzKCZz dWJtaXQpOwogCiAJcmV0dXJuIDA7CiAKIGZhaWxfdW5yZXNlcnZlOgotCW11dGV4X3VubG9jaygm djNkLT5zY2hlZF9sb2NrKTsKLWZhaWxfcGVyZm1vbjoKLQlkcm1fZXhlY19maW5pKCZleGVjKTsK Kwlkcm1fZXhlY19maW5pKCZzdWJtaXQuZXhlYyk7CiBmYWlsOgotCXYzZF9qb2JfY2xlYW51cCgo dm9pZCAqKWJpbik7Ci0JdjNkX2pvYl9jbGVhbnVwKCh2b2lkICopcmVuZGVyKTsKLQl2M2Rfam9i X2NsZWFudXAoY2xlYW5fam9iKTsKKwl2M2Rfc3VibWl0X2NsZWFudXBfam9icygmc3VibWl0KTsK IAl2M2RfcHV0X211bHRpc3luY19wb3N0X2RlcHMoJnNlKTsKIAogCXJldHVybiByZXQ7CkBAIC0x MDk1LDE0ICsxMTcxLDEzIEBAIGludAogdjNkX3N1Ym1pdF90ZnVfaW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJp dikKIHsKLQlzdHJ1Y3QgdjNkX2RldiAqdjNkID0gdG9fdjNkX2RldihkZXYpOworCXN0cnVjdCB2 M2Rfc3VibWl0IHN1Ym1pdCA9IHsgLnYzZCA9IHRvX3YzZF9kZXYoZGV2KSwgLmZpbGVfcHJpdiA9 IGZpbGVfcHJpdiB9OwogCXN0cnVjdCBkcm1fdjNkX3N1Ym1pdF90ZnUgKmFyZ3MgPSBkYXRhOwog CXN0cnVjdCB2M2Rfc3VibWl0X2V4dCBzZSA9IHswfTsKIAlzdHJ1Y3QgdjNkX3RmdV9qb2IgKmpv YiA9IE5VTEw7Ci0Jc3RydWN0IGRybV9leGVjIGV4ZWM7CiAJaW50IHJldCA9IDA7CiAKLQl0cmFj ZV92M2Rfc3VibWl0X3RmdV9pb2N0bCgmdjNkLT5kcm0sIGFyZ3MtPmlpYSk7CisJdHJhY2VfdjNk X3N1Ym1pdF90ZnVfaW9jdGwoZGV2LCBhcmdzLT5paWEpOwogCiAJaWYgKGFyZ3MtPmZsYWdzICYm ICEoYXJncy0+ZmxhZ3MgJiBEUk1fVjNEX1NVQk1JVF9FWFRFTlNJT04pKSB7CiAJCWRybV9kYmco ZGV2LCAiaW52YWxpZCBmbGFnczogJWRcbiIsIGFyZ3MtPmZsYWdzKTsKQEAgLTExMTcsMTcgKzEx OTIsMTYgQEAgdjNkX3N1Ym1pdF90ZnVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9p ZCAqZGF0YSwKIAkJfQogCX0KIAotCXJldCA9IHYzZF9qb2JfYWxsb2NhdGUodjNkLCAodm9pZCAq KSZqb2IsIHNpemVvZigqam9iKSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCXJldCA9 IHYzZF9qb2JfaW5pdCh2M2QsIGZpbGVfcHJpdiwgJmpvYi0+YmFzZSwKLQkJCSAgIHYzZF9qb2Jf ZnJlZSwgYXJncy0+aW5fc3luYywgJnNlLCBWM0RfVEZVKTsKLQlpZiAocmV0KSB7Ci0JCXYzZF9q b2JfZGVhbGxvY2F0ZSgodm9pZCAqKSZqb2IpOworCWpvYiA9IChzdHJ1Y3QgdjNkX3RmdV9qb2Ig KikgdjNkX3N1Ym1pdF9hZGRfam9iKCZzdWJtaXQsIFYzRF9URlUpOworCWlmIChJU19FUlIoam9i KSkgeworCQlyZXQgPSBQVFJfRVJSKGpvYik7CiAJCWdvdG8gZmFpbDsKIAl9CiAKKwlyZXQgPSB2 M2Rfam9iX2FkZF9zeW5jb2Jqcygmam9iLT5iYXNlLCBmaWxlX3ByaXYsIGFyZ3MtPmluX3N5bmMs ICZzZSk7CisJaWYgKHJldCkKKwkJZ290byBmYWlsOworCiAJam9iLT5iYXNlLmJvID0ga3phbGxv Y19vYmpzKCpqb2ItPmJhc2UuYm8sIEFSUkFZX1NJWkUoYXJncy0+Ym9faGFuZGxlcykpOwogCWlm ICgham9iLT5iYXNlLmJvKSB7CiAJCXJldCA9IC1FTk9NRU07CkBAIC0xMTU1LDI2ICsxMjI5LDI3 IEBAIHYzZF9zdWJtaXRfdGZ1X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRh dGEsCiAJCWpvYi0+YmFzZS5ib1tqb2ItPmJhc2UuYm9fY291bnRdID0gYm87CiAJfQogCi0JcmV0 ID0gdjNkX2xvY2tfYm9fcmVzZXJ2YXRpb25zKCZqb2ItPmJhc2UsICZleGVjKTsKKwlyZXQgPSB2 M2RfbG9ja19ib19yZXNlcnZhdGlvbnMoJmpvYi0+YmFzZSwgJnN1Ym1pdC5leGVjKTsKIAlpZiAo cmV0KQogCQlnb3RvIGZhaWw7CiAKLQltdXRleF9sb2NrKCZ2M2QtPnNjaGVkX2xvY2spOwotCXYz ZF9wdXNoX2pvYigmam9iLT5iYXNlKTsKLQltdXRleF91bmxvY2soJnYzZC0+c2NoZWRfbG9jayk7 CisJcmV0ID0gdjNkX3N1Ym1pdF9qb2JzKCZzdWJtaXQpOworCWlmIChyZXQpCisJCWdvdG8gZmFp bF91bnJlc2VydmU7CiAKIAl2M2RfYXR0YWNoX2ZlbmNlc19hbmRfdW5sb2NrX3Jlc2VydmF0aW9u KGZpbGVfcHJpdiwKLQkJCQkJCSAmam9iLT5iYXNlLCAmZXhlYywKLQkJCQkJCSBhcmdzLT5vdXRf c3luYywKLQkJCQkJCSAmc2UsCisJCQkJCQkgJmpvYi0+YmFzZSwgJnN1Ym1pdC5leGVjLAorCQkJ CQkJIGFyZ3MtPm91dF9zeW5jLCAmc2UsCiAJCQkJCQkgam9iLT5iYXNlLmRvbmVfZmVuY2UpOwog Ci0JdjNkX2pvYl9wdXQoJmpvYi0+YmFzZSk7CisJdjNkX3N1Ym1pdF9wdXRfam9icygmc3VibWl0 KTsKIAogCXJldHVybiAwOwogCitmYWlsX3VucmVzZXJ2ZToKKwlkcm1fZXhlY19maW5pKCZzdWJt aXQuZXhlYyk7CiBmYWlsOgotCXYzZF9qb2JfY2xlYW51cCgodm9pZCAqKWpvYik7CisJdjNkX3N1 Ym1pdF9jbGVhbnVwX2pvYnMoJnN1Ym1pdCk7CiAJdjNkX3B1dF9tdWx0aXN5bmNfcG9zdF9kZXBz KCZzZSk7CiAKIAlyZXR1cm4gcmV0OwpAQCAtMTE5MywyMSArMTI2OCwxOSBAQCBpbnQKIHYzZF9z dWJtaXRfY3NkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCSAg ICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpCiB7Ci0Jc3RydWN0IHYzZF9kZXYgKnYzZCA9 IHRvX3YzZF9kZXYoZGV2KTsKLQlzdHJ1Y3QgdjNkX2ZpbGVfcHJpdiAqdjNkX3ByaXYgPSBmaWxl X3ByaXYtPmRyaXZlcl9wcml2OworCXN0cnVjdCB2M2Rfc3VibWl0IHN1Ym1pdCA9IHsgLnYzZCA9 IHRvX3YzZF9kZXYoZGV2KSwgLmZpbGVfcHJpdiA9IGZpbGVfcHJpdiB9OwogCXN0cnVjdCBkcm1f djNkX3N1Ym1pdF9jc2QgKmFyZ3MgPSBkYXRhOwogCXN0cnVjdCB2M2Rfc3VibWl0X2V4dCBzZSA9 IHswfTsKIAlzdHJ1Y3QgdjNkX2NzZF9qb2IgKmpvYiA9IE5VTEw7CiAJc3RydWN0IHYzZF9qb2Ig KmNsZWFuX2pvYiA9IE5VTEw7Ci0Jc3RydWN0IGRybV9leGVjIGV4ZWM7CiAJaW50IHJldDsKIAot CXRyYWNlX3YzZF9zdWJtaXRfY3NkX2lvY3RsKCZ2M2QtPmRybSwgYXJncy0+Y2ZnWzVdLCBhcmdz LT5jZmdbNl0pOworCXRyYWNlX3YzZF9zdWJtaXRfY3NkX2lvY3RsKGRldiwgYXJncy0+Y2ZnWzVd LCBhcmdzLT5jZmdbNl0pOwogCiAJaWYgKGFyZ3MtPnBhZCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAK LQlpZiAoIXYzZF9oYXNfY3NkKHYzZCkpIHsKKwlpZiAoIXYzZF9oYXNfY3NkKHN1Ym1pdC52M2Qp KSB7CiAJCWRybV93YXJuKGRldiwgIkF0dGVtcHRpbmcgQ1NEIHN1Ym1pdCBvbiBub24tQ1NEIGhh cmR3YXJlXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpAQCAtMTIyNSw1NSArMTI5OCwzNiBA QCB2M2Rfc3VibWl0X2NzZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAogCQl9CiAJfQogCi0JcmV0ID0gdjNkX3NldHVwX2NzZF9qb2JzX2FuZF9ib3MoZmlsZV9wcml2 LCB2M2QsIGFyZ3MsCi0JCQkJCSAmam9iLCAmY2xlYW5fam9iLCAmc2UsICZleGVjKTsKKwlyZXQg PSB2M2Rfc2V0dXBfY3NkX2pvYnNfYW5kX2JvcyhmaWxlX3ByaXYsIHN1Ym1pdC52M2QsIGFyZ3Ms CisJCQkJCSAmam9iLCAmY2xlYW5fam9iLCAmc2UsICZzdWJtaXQuZXhlYyk7CiAJaWYgKHJldCkK IAkJZ290byBmYWlsOwogCi0JaWYgKGFyZ3MtPnBlcmZtb25faWQpIHsKLQkJaWYgKHYzZC0+Z2xv YmFsX3BlcmZtb24pIHsKLQkJCXJldCA9IC1FQUdBSU47Ci0JCQlnb3RvIGZhaWxfcGVyZm1vbjsK LQkJfQorCXN1Ym1pdC5qb2JzW3N1Ym1pdC5qb2JfY291bnQrK10gPSAmam9iLT5iYXNlOworCXN1 Ym1pdC5qb2JzW3N1Ym1pdC5qb2JfY291bnQrK10gPSBjbGVhbl9qb2I7CiAKLQkJam9iLT5iYXNl LnBlcmZtb24gPSB2M2RfcGVyZm1vbl9maW5kKHYzZF9wcml2LAotCQkJCQkJICAgICBhcmdzLT5w ZXJmbW9uX2lkKTsKLQkJaWYgKCFqb2ItPmJhc2UucGVyZm1vbikgewotCQkJcmV0ID0gLUVOT0VO VDsKLQkJCWdvdG8gZmFpbF9wZXJmbW9uOwotCQl9Ci0JfQotCi0JbXV0ZXhfbG9jaygmdjNkLT5z Y2hlZF9sb2NrKTsKLQl2M2RfcHVzaF9qb2IoJmpvYi0+YmFzZSk7Ci0KLQlyZXQgPSBkcm1fc2No ZWRfam9iX2FkZF9kZXBlbmRlbmN5KCZjbGVhbl9qb2ItPmJhc2UsCi0JCQkJCSAgIGRtYV9mZW5j ZV9nZXQoam9iLT5iYXNlLmRvbmVfZmVuY2UpKTsKKwlyZXQgPSB2M2RfYXR0YWNoX3BlcmZtb25f dG9fam9icygmc3VibWl0LCBhcmdzLT5wZXJmbW9uX2lkKTsKIAlpZiAocmV0KQogCQlnb3RvIGZh aWxfdW5yZXNlcnZlOwogCi0JdjNkX3B1c2hfam9iKGNsZWFuX2pvYik7Ci0JbXV0ZXhfdW5sb2Nr KCZ2M2QtPnNjaGVkX2xvY2spOworCXJldCA9IHYzZF9zdWJtaXRfam9icygmc3VibWl0KTsKKwlp ZiAocmV0KQorCQlnb3RvIGZhaWxfdW5yZXNlcnZlOwogCiAJdjNkX2F0dGFjaF9mZW5jZXNfYW5k X3VubG9ja19yZXNlcnZhdGlvbihmaWxlX3ByaXYsCiAJCQkJCQkgY2xlYW5fam9iLAotCQkJCQkJ ICZleGVjLAotCQkJCQkJIGFyZ3MtPm91dF9zeW5jLAotCQkJCQkJICZzZSwKKwkJCQkJCSAmc3Vi bWl0LmV4ZWMsCisJCQkJCQkgYXJncy0+b3V0X3N5bmMsICZzZSwKIAkJCQkJCSBjbGVhbl9qb2It PmRvbmVfZmVuY2UpOwogCi0JdjNkX2pvYl9wdXQoJmpvYi0+YmFzZSk7Ci0JdjNkX2pvYl9wdXQo Y2xlYW5fam9iKTsKKwl2M2Rfc3VibWl0X3B1dF9qb2JzKCZzdWJtaXQpOwogCiAJcmV0dXJuIDA7 CiAKIGZhaWxfdW5yZXNlcnZlOgotCW11dGV4X3VubG9jaygmdjNkLT5zY2hlZF9sb2NrKTsKLWZh aWxfcGVyZm1vbjoKLQlkcm1fZXhlY19maW5pKCZleGVjKTsKKwlkcm1fZXhlY19maW5pKCZzdWJt aXQuZXhlYyk7CiBmYWlsOgotCXYzZF9qb2JfY2xlYW51cCgodm9pZCAqKWpvYik7Ci0JdjNkX2pv Yl9jbGVhbnVwKGNsZWFuX2pvYik7CisJdjNkX3N1Ym1pdF9jbGVhbnVwX2pvYnMoJnN1Ym1pdCk7 CiAJdjNkX3B1dF9tdWx0aXN5bmNfcG9zdF9kZXBzKCZzZSk7CiAKIAlyZXR1cm4gcmV0OwoKLS0g CjIuNTQuMAoK