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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 98EE2C54E49 for ; Thu, 29 Feb 2024 18:12:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=t/znXWntNLbM+YfbZY+dz2AhKp/In8mrYo4gZ87fW0U=; b=E73ICaWFTWbuRZ vjO+YrUZDIsilrnnbyHSOxM6ZOD1eWo1sML882zojcmDlGBHoa8CJjXX3/mZISIUFSSVWnGg8Onhv oywSNYsldiLHJaeV58mjT5Urp2s6Ogdo0zo/fhQEbFfOz/MB1/qEBDvRde0w/1yPOQg9lp5BH48cA Nz9IdbHFN7XCffVUwS56yBYdHRgS0A17FW1Oz8UXM6G92Agm1TDYji9wvLokdTeauV7dbcUcnK04T XzcduK2N1x1NAUXpfQ8kiH0jzJw7hR3WTQvPjyF5GMHPkZd3b4wUVldXIo6Wu+gmXQdYKXkxOFubW n17RtteQ+QMsp1B0b6bQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rfktC-0000000EdkF-0UAK; Thu, 29 Feb 2024 18:12:14 +0000 Received: from relay3-d.mail.gandi.net ([2001:4b98:dc4:8::223]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rfkrx-0000000Ed7I-3HNs for linux-arm-kernel@lists.infradead.org; Thu, 29 Feb 2024 18:11:03 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id E24DA60007; Thu, 29 Feb 2024 18:10:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1709230254; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XCjh0+aS/A+7IMKQA2FEgABFQthhNr9Va5KccghwM7w=; b=jvWIYsarYxq+v2re+BGMJ5xGczbolXPAw9yNLdoliaYq6qYvVxeFKC1eh4wIDKtm4wEwiB e1cIvfpW1NGjDZ8SDauH0J2RrSFnG6PGiKtMzJzfniECT0TfspwDCOfvqBlw6Nz4EJFCYY ow2MFwEUWhWfvsNbG7nnd5RGaYddWNy9xMdZ/2tWLKXPCj40Q5o822tPvcsV6eu/Q3PaXD Fd+dLqowyHUwTq7nKb16ifPzkXAkI7IWmGaDtKP3JyZSTFsLOIKv8GPkv/cDk/SS1LxWXF cWt08nUhAz10JkycyOEDAvfUBpk+r23dnj871apdVDLDvERL8+311RpgC3l7/Q== From: =?utf-8?q?Th=C3=A9o_Lebrun?= Date: Thu, 29 Feb 2024 19:10:51 +0100 Subject: [PATCH v2 03/11] i2c: nomadik: rename private struct pointers from dev to priv MIME-Version: 1.0 Message-Id: <20240229-mbly-i2c-v2-3-b32ed18c098c@bootlin.com> References: <20240229-mbly-i2c-v2-0-b32ed18c098c@bootlin.com> In-Reply-To: <20240229-mbly-i2c-v2-0-b32ed18c098c@bootlin.com> To: Linus Walleij , Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Thomas Bogendoerfer Cc: linux-arm-kernel@lists.infradead.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mips@vger.kernel.org, Gregory Clement , Vladimir Kondratiev , Thomas Petazzoni , Tawfik Bayouk , =?utf-8?q?Th=C3=A9o_Lebrun?= X-Mailer: b4 0.13.0 X-GND-Sasl: theo.lebrun@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240229_101058_192229_8B76E09C X-CRM114-Status: GOOD ( 26.45 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org RGlzYW1iaWd1YXRlIHRoZSB1c2FnZSBvZiBkZXYgYXMgYSB2YXJpYWJsZSBuYW1lOyBpdCBpcyB1 c3VhbGx5IGJlc3QgdG8Ka2VlcCBpdCByZXNlcnZlZCBmb3Igc3RydWN0IGRldmljZSBwb2ludGVy cy4gQXZvaWQgaGF2aW5nIG11bHRpcGxlCm5hbWVzIGZvciB0aGUgc2FtZSBzdHJ1Y3QgcG9pbnRl ciAocHJldmlvdXNseTogZGV2LCBubWssIG5ta19pMmMpLgoKUmV2aWV3ZWQtYnk6IExpbnVzIFdh bGxlaWogPGxpbnVzLndhbGxlaWpAbGluYXJvLm9yZz4KU2lnbmVkLW9mZi1ieTogVGjDqW8gTGVi cnVuIDx0aGVvLmxlYnJ1bkBib290bGluLmNvbT4KLS0tCiBkcml2ZXJzL2kyYy9idXNzZXMvaTJj LW5vbWFkaWsuYyB8IDQyOCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0K IDEgZmlsZSBjaGFuZ2VkLCAyMTQgaW5zZXJ0aW9ucygrKSwgMjE0IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtbm9tYWRpay5jIGIvZHJpdmVycy9pMmMv YnVzc2VzL2kyYy1ub21hZGlrLmMKaW5kZXggYjEwNTc0ZDQyYjdhLi5jZDUxMWM4ODRmOTkgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtbm9tYWRpay5jCisrKyBiL2RyaXZlcnMv aTJjL2J1c3Nlcy9pMmMtbm9tYWRpay5jCkBAIC0yMDYsMTIgKzIwNiwxMiBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgaTJjX2Nscl9iaXQodm9pZCBfX2lvbWVtICpyZWcsIHUzMiBtYXNrKQogCiAvKioK ICAqIGZsdXNoX2kyY19maWZvKCkgLSBUaGlzIGZ1bmN0aW9uIGZsdXNoZXMgdGhlIEkyQyBGSUZP Ci0gKiBAZGV2OiBwcml2YXRlIGRhdGEgb2YgSTJDIERyaXZlcgorICogQHByaXY6IHByaXZhdGUg ZGF0YSBvZiBJMkMgRHJpdmVyCiAgKgogICogVGhpcyBmdW5jdGlvbiBmbHVzaGVzIHRoZSBJMkMg VHggYW5kIFJ4IEZJRk9zLiBJdCByZXR1cm5zCiAgKiAwIG9uIHN1Y2Nlc3NmdWwgZmx1c2hpbmcg b2YgRklGTwogICovCi1zdGF0aWMgaW50IGZsdXNoX2kyY19maWZvKHN0cnVjdCBubWtfaTJjX2Rl diAqZGV2KQorc3RhdGljIGludCBmbHVzaF9pMmNfZmlmbyhzdHJ1Y3Qgbm1rX2kyY19kZXYgKnBy aXYpCiB7CiAjZGVmaW5lIExPT1BfQVRURU1QVFMgMTAKIAlpbnQgaTsKQEAgLTIyNCwxOSArMjI0 LDE5IEBAIHN0YXRpYyBpbnQgZmx1c2hfaTJjX2ZpZm8oc3RydWN0IG5ta19pMmNfZGV2ICpkZXYp CiAJICogYml0cywgdW50aWwgdGhlbiBubyBvbmUgbXVzdCBhY2Nlc3MgVHgsIFJ4IEZJRk8gYW5k CiAJICogc2hvdWxkIHBvbGwgb24gdGhlc2UgYml0cyB3YWl0aW5nIGZvciB0aGUgY29tcGxldGlv bi4KIAkgKi8KLQl3cml0ZWwoKEkyQ19DUl9GVFggfCBJMkNfQ1JfRlJYKSwgZGV2LT52aXJ0YmFz ZSArIEkyQ19DUik7CisJd3JpdGVsKChJMkNfQ1JfRlRYIHwgSTJDX0NSX0ZSWCksIHByaXYtPnZp cnRiYXNlICsgSTJDX0NSKTsKIAogCWZvciAoaSA9IDA7IGkgPCBMT09QX0FUVEVNUFRTOyBpKysp IHsKLQkJdGltZW91dCA9IGppZmZpZXMgKyBkZXYtPmFkYXAudGltZW91dDsKKwkJdGltZW91dCA9 IGppZmZpZXMgKyBwcml2LT5hZGFwLnRpbWVvdXQ7CiAKIAkJd2hpbGUgKCF0aW1lX2FmdGVyKGpp ZmZpZXMsIHRpbWVvdXQpKSB7Ci0JCQlpZiAoKHJlYWRsKGRldi0+dmlydGJhc2UgKyBJMkNfQ1Ip ICYKKwkJCWlmICgocmVhZGwocHJpdi0+dmlydGJhc2UgKyBJMkNfQ1IpICYKIAkJCQkoSTJDX0NS X0ZUWCB8IEkyQ19DUl9GUlgpKSA9PSAwKQotCQkJCQlyZXR1cm4gMDsKKwkJCQlyZXR1cm4gMDsK IAkJfQogCX0KIAotCWRldl9lcnIoJmRldi0+YWRldi0+ZGV2LAorCWRldl9lcnIoJnByaXYtPmFk ZXYtPmRldiwKIAkJImZsdXNoaW5nIG9wZXJhdGlvbiB0aW1lZCBvdXQgZ2l2aW5nIHVwIGFmdGVy ICVkIGF0dGVtcHRzIiwKIAkJTE9PUF9BVFRFTVBUUyk7CiAKQEAgLTI0NSw0NSArMjQ1LDQ1IEBA IHN0YXRpYyBpbnQgZmx1c2hfaTJjX2ZpZm8oc3RydWN0IG5ta19pMmNfZGV2ICpkZXYpCiAKIC8q KgogICogZGlzYWJsZV9hbGxfaW50ZXJydXB0cygpIC0gRGlzYWJsZSBhbGwgaW50ZXJydXB0cyBv ZiB0aGlzIEkyYyBCdXMKLSAqIEBkZXY6IHByaXZhdGUgZGF0YSBvZiBJMkMgRHJpdmVyCisgKiBA cHJpdjogcHJpdmF0ZSBkYXRhIG9mIEkyQyBEcml2ZXIKICAqLwotc3RhdGljIHZvaWQgZGlzYWJs ZV9hbGxfaW50ZXJydXB0cyhzdHJ1Y3Qgbm1rX2kyY19kZXYgKmRldikKK3N0YXRpYyB2b2lkIGRp c2FibGVfYWxsX2ludGVycnVwdHMoc3RydWN0IG5ta19pMmNfZGV2ICpwcml2KQogewogCXUzMiBt YXNrID0gSVJRX01BU0soMCk7Ci0Jd3JpdGVsKG1hc2ssIGRldi0+dmlydGJhc2UgKyBJMkNfSU1T Q1IpOworCXdyaXRlbChtYXNrLCBwcml2LT52aXJ0YmFzZSArIEkyQ19JTVNDUik7CiB9CiAKIC8q KgogICogY2xlYXJfYWxsX2ludGVycnVwdHMoKSAtIENsZWFyIGFsbCBpbnRlcnJ1cHRzIG9mIEky QyBDb250cm9sbGVyCi0gKiBAZGV2OiBwcml2YXRlIGRhdGEgb2YgSTJDIERyaXZlcgorICogQHBy aXY6IHByaXZhdGUgZGF0YSBvZiBJMkMgRHJpdmVyCiAgKi8KLXN0YXRpYyB2b2lkIGNsZWFyX2Fs bF9pbnRlcnJ1cHRzKHN0cnVjdCBubWtfaTJjX2RldiAqZGV2KQorc3RhdGljIHZvaWQgY2xlYXJf YWxsX2ludGVycnVwdHMoc3RydWN0IG5ta19pMmNfZGV2ICpwcml2KQogewogCXUzMiBtYXNrOwog CW1hc2sgPSBJUlFfTUFTSyhJMkNfQ0xFQVJfQUxMX0lOVFMpOwotCXdyaXRlbChtYXNrLCBkZXYt PnZpcnRiYXNlICsgSTJDX0lDUik7CisJd3JpdGVsKG1hc2ssIHByaXYtPnZpcnRiYXNlICsgSTJD X0lDUik7CiB9CiAKIC8qKgogICogaW5pdF9odygpIC0gaW5pdGlhbGl6ZSB0aGUgSTJDIGhhcmR3 YXJlCi0gKiBAZGV2OiBwcml2YXRlIGRhdGEgb2YgSTJDIERyaXZlcgorICogQHByaXY6IHByaXZh dGUgZGF0YSBvZiBJMkMgRHJpdmVyCiAgKi8KLXN0YXRpYyBpbnQgaW5pdF9odyhzdHJ1Y3Qgbm1r X2kyY19kZXYgKmRldikKK3N0YXRpYyBpbnQgaW5pdF9odyhzdHJ1Y3Qgbm1rX2kyY19kZXYgKnBy aXYpCiB7CiAJaW50IHN0YXQ7CiAKLQlzdGF0ID0gZmx1c2hfaTJjX2ZpZm8oZGV2KTsKKwlzdGF0 ID0gZmx1c2hfaTJjX2ZpZm8ocHJpdik7CiAJaWYgKHN0YXQpCiAJCWdvdG8gZXhpdDsKIAogCS8q IGRpc2FibGUgdGhlIGNvbnRyb2xsZXIgKi8KLQlpMmNfY2xyX2JpdChkZXYtPnZpcnRiYXNlICsg STJDX0NSLCBJMkNfQ1JfUEUpOworCWkyY19jbHJfYml0KHByaXYtPnZpcnRiYXNlICsgSTJDX0NS LCBJMkNfQ1JfUEUpOwogCi0JZGlzYWJsZV9hbGxfaW50ZXJydXB0cyhkZXYpOworCWRpc2FibGVf YWxsX2ludGVycnVwdHMocHJpdik7CiAKLQljbGVhcl9hbGxfaW50ZXJydXB0cyhkZXYpOworCWNs ZWFyX2FsbF9pbnRlcnJ1cHRzKHByaXYpOwogCi0JZGV2LT5jbGkub3BlcmF0aW9uID0gSTJDX05P X09QRVJBVElPTjsKKwlwcml2LT5jbGkub3BlcmF0aW9uID0gSTJDX05PX09QRVJBVElPTjsKIAog ZXhpdDoKIAlyZXR1cm4gc3RhdDsKQEAgLTI5NCwxNSArMjk0LDE1IEBAIHN0YXRpYyBpbnQgaW5p dF9odyhzdHJ1Y3Qgbm1rX2kyY19kZXYgKmRldikKIAogLyoqCiAgKiBsb2FkX2kyY19tY3JfcmVn KCkgLSBsb2FkIHRoZSBNQ1IgcmVnaXN0ZXIKLSAqIEBkZXY6IHByaXZhdGUgZGF0YSBvZiBjb250 cm9sbGVyCisgKiBAcHJpdjogcHJpdmF0ZSBkYXRhIG9mIGNvbnRyb2xsZXIKICAqIEBmbGFnczog bWVzc2FnZSBmbGFncwogICovCi1zdGF0aWMgdTMyIGxvYWRfaTJjX21jcl9yZWcoc3RydWN0IG5t a19pMmNfZGV2ICpkZXYsIHUxNiBmbGFncykKK3N0YXRpYyB1MzIgbG9hZF9pMmNfbWNyX3JlZyhz dHJ1Y3Qgbm1rX2kyY19kZXYgKnByaXYsIHUxNiBmbGFncykKIHsKIAl1MzIgbWNyID0gMDsKIAl1 bnNpZ25lZCBzaG9ydCBzbGF2ZV9hZHJfM21zYl9iaXRzOwogCi0JbWNyIHw9IEdFTl9NQVNLKGRl di0+Y2xpLnNsYXZlX2FkciwgSTJDX01DUl9BNywgMSk7CisJbWNyIHw9IEdFTl9NQVNLKHByaXYt PmNsaS5zbGF2ZV9hZHIsIEkyQ19NQ1JfQTcsIDEpOwogCiAJaWYgKHVubGlrZWx5KGZsYWdzICYg STJDX01fVEVOKSkgewogCQkvKiAxMC1iaXQgYWRkcmVzcyB0cmFuc2FjdGlvbiAqLwpAQCAtMzEz LDcgKzMxMyw3IEBAIHN0YXRpYyB1MzIgbG9hZF9pMmNfbWNyX3JlZyhzdHJ1Y3Qgbm1rX2kyY19k ZXYgKmRldiwgdTE2IGZsYWdzKQogCQkgKiB0aGUgZXh0ZW5zaW9uIChNU0IgYml0cykgb2YgdGhl IDcgYml0IGFkZHJlc3MgbG9hZGVkCiAJCSAqIGluIEE3CiAJCSAqLwotCQlzbGF2ZV9hZHJfM21z Yl9iaXRzID0gKGRldi0+Y2xpLnNsYXZlX2FkciA+PiA3KSAmIDB4NzsKKwkJc2xhdmVfYWRyXzNt c2JfYml0cyA9IChwcml2LT5jbGkuc2xhdmVfYWRyID4+IDcpICYgMHg3OwogCiAJCW1jciB8PSBH RU5fTUFTSyhzbGF2ZV9hZHJfM21zYl9iaXRzLCBJMkNfTUNSX0VBMTAsIDgpOwogCX0gZWxzZSB7 CkBAIC0zMjUsNDAgKzMyNSw0MCBAQCBzdGF0aWMgdTMyIGxvYWRfaTJjX21jcl9yZWcoc3RydWN0 IG5ta19pMmNfZGV2ICpkZXYsIHUxNiBmbGFncykKIAltY3IgfD0gR0VOX01BU0soMCwgSTJDX01D Ul9TQiwgMTEpOwogCiAJLyogY2hlY2sgdGhlIG9wZXJhdGlvbiwgbWFzdGVyIHJlYWQvd3JpdGU/ ICovCi0JaWYgKGRldi0+Y2xpLm9wZXJhdGlvbiA9PSBJMkNfV1JJVEUpCisJaWYgKHByaXYtPmNs aS5vcGVyYXRpb24gPT0gSTJDX1dSSVRFKQogCQltY3IgfD0gR0VOX01BU0soSTJDX1dSSVRFLCBJ MkNfTUNSX09QLCAwKTsKIAllbHNlCiAJCW1jciB8PSBHRU5fTUFTSyhJMkNfUkVBRCwgSTJDX01D Ul9PUCwgMCk7CiAKIAkvKiBzdG9wIG9yIHJlcGVhdGVkIHN0YXJ0PyAqLwotCWlmIChkZXYtPnN0 b3ApCisJaWYgKHByaXYtPnN0b3ApCiAJCW1jciB8PSBHRU5fTUFTSygxLCBJMkNfTUNSX1NUT1As IDE0KTsKIAllbHNlCiAJCW1jciAmPSB+KEdFTl9NQVNLKDEsIEkyQ19NQ1JfU1RPUCwgMTQpKTsK IAotCW1jciB8PSBHRU5fTUFTSyhkZXYtPmNsaS5jb3VudCwgSTJDX01DUl9MRU5HVEgsIDE1KTsK KwltY3IgfD0gR0VOX01BU0socHJpdi0+Y2xpLmNvdW50LCBJMkNfTUNSX0xFTkdUSCwgMTUpOwog CiAJcmV0dXJuIG1jcjsKIH0KIAogLyoqCiAgKiBzZXR1cF9pMmNfY29udHJvbGxlcigpIC0gc2V0 dXAgdGhlIGNvbnRyb2xsZXIKLSAqIEBkZXY6IHByaXZhdGUgZGF0YSBvZiBjb250cm9sbGVyCisg KiBAcHJpdjogcHJpdmF0ZSBkYXRhIG9mIGNvbnRyb2xsZXIKICAqLwotc3RhdGljIHZvaWQgc2V0 dXBfaTJjX2NvbnRyb2xsZXIoc3RydWN0IG5ta19pMmNfZGV2ICpkZXYpCitzdGF0aWMgdm9pZCBz ZXR1cF9pMmNfY29udHJvbGxlcihzdHJ1Y3Qgbm1rX2kyY19kZXYgKnByaXYpCiB7CiAJdTMyIGJy Y3IxLCBicmNyMjsKIAl1MzIgaTJjX2NsaywgZGl2OwogCXUzMiBuczsKIAl1MTYgc2xzdTsKIAot CXdyaXRlbCgweDAsIGRldi0+dmlydGJhc2UgKyBJMkNfQ1IpOwotCXdyaXRlbCgweDAsIGRldi0+ dmlydGJhc2UgKyBJMkNfSFNNQ1IpOwotCXdyaXRlbCgweDAsIGRldi0+dmlydGJhc2UgKyBJMkNf VEZUUik7Ci0Jd3JpdGVsKDB4MCwgZGV2LT52aXJ0YmFzZSArIEkyQ19SRlRSKTsKLQl3cml0ZWwo MHgwLCBkZXYtPnZpcnRiYXNlICsgSTJDX0RNQVIpOworCXdyaXRlbCgweDAsIHByaXYtPnZpcnRi YXNlICsgSTJDX0NSKTsKKwl3cml0ZWwoMHgwLCBwcml2LT52aXJ0YmFzZSArIEkyQ19IU01DUik7 CisJd3JpdGVsKDB4MCwgcHJpdi0+dmlydGJhc2UgKyBJMkNfVEZUUik7CisJd3JpdGVsKDB4MCwg cHJpdi0+dmlydGJhc2UgKyBJMkNfUkZUUik7CisJd3JpdGVsKDB4MCwgcHJpdi0+dmlydGJhc2Ug KyBJMkNfRE1BUik7CiAKLQlpMmNfY2xrID0gY2xrX2dldF9yYXRlKGRldi0+Y2xrKTsKKwlpMmNf Y2xrID0gY2xrX2dldF9yYXRlKHByaXYtPmNsayk7CiAKIAkvKgogCSAqIHNldCB0aGUgc2xzdToK QEAgLTM3Myw3ICszNzMsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9pMmNfY29udHJvbGxlcihzdHJ1 Y3Qgbm1rX2kyY19kZXYgKmRldikKIAkgKiBzbHN1ID0gY3ljbGVzIC8gKDEwMDAwMDAwMDAgLyBm KSArIDEKIAkgKi8KIAlucyA9IERJVl9ST1VORF9VUF9VTEwoMTAwMDAwMDAwMFVMTCwgaTJjX2Ns ayk7Ci0Jc3dpdGNoIChkZXYtPnNtKSB7CisJc3dpdGNoIChwcml2LT5zbSkgewogCWNhc2UgSTJD X0ZSRVFfTU9ERV9GQVNUOgogCWNhc2UgSTJDX0ZSRVFfTU9ERV9GQVNUX1BMVVM6CiAJCXNsc3Ug PSBESVZfUk9VTkRfVVAoMTAwLCBucyk7IC8qIEZhc3QgKi8KQEAgLTM4OCwxNSArMzg4LDE1IEBA IHN0YXRpYyB2b2lkIHNldHVwX2kyY19jb250cm9sbGVyKHN0cnVjdCBubWtfaTJjX2RldiAqZGV2 KQogCX0KIAlzbHN1ICs9IDE7CiAKLQlkZXZfZGJnKCZkZXYtPmFkZXYtPmRldiwgImNhbGN1bGF0 ZWQgU0xTVSA9ICUwNHhcbiIsIHNsc3UpOwotCXdyaXRlbChzbHN1IDw8IDE2LCBkZXYtPnZpcnRi YXNlICsgSTJDX1NDUik7CisJZGV2X2RiZygmcHJpdi0+YWRldi0+ZGV2LCAiY2FsY3VsYXRlZCBT TFNVID0gJTA0eFxuIiwgc2xzdSk7CisJd3JpdGVsKHNsc3UgPDwgMTYsIHByaXYtPnZpcnRiYXNl ICsgSTJDX1NDUik7CiAKIAkvKgogCSAqIFRoZSBzcGVjIHNheXMsIGluIGNhc2Ugb2Ygc3RkLiBt b2RlIHRoZSBkaXZpZGVyIGlzCiAJICogMiB3aGVyZWFzIGl0IGlzIDMgZm9yIGZhc3QgYW5kIGZh c3RwbHVzIG1vZGUgb2YKIAkgKiBvcGVyYXRpb24uIFRPRE8gLSBoaWdoIHNwZWVkIHN1cHBvcnQu CiAJICovCi0JZGl2ID0gKGRldi0+Y2xrX2ZyZXEgPiBJMkNfTUFYX1NUQU5EQVJEX01PREVfRlJF USkgPyAzIDogMjsKKwlkaXYgPSAocHJpdi0+Y2xrX2ZyZXEgPiBJMkNfTUFYX1NUQU5EQVJEX01P REVfRlJFUSkgPyAzIDogMjsKIAogCS8qCiAJICogZ2VuZXJhdGUgdGhlIG1hc2sgZm9yIGJhdWQg cmF0ZSBjb3VudGVycy4gVGhlIGNvbnRyb2xsZXIKQEAgLTQwNiwxMCArNDA2LDEwIEBAIHN0YXRp YyB2b2lkIHNldHVwX2kyY19jb250cm9sbGVyKHN0cnVjdCBubWtfaTJjX2RldiAqZGV2KQogCSAq IHNvIHNldCBicmNyMSB0byAwLgogCSAqLwogCWJyY3IxID0gMCA8PCAxNjsKLQlicmNyMiA9IChp MmNfY2xrLyhkZXYtPmNsa19mcmVxICogZGl2KSkgJiAweGZmZmY7CisJYnJjcjIgPSAoaTJjX2Ns ayAvIChwcml2LT5jbGtfZnJlcSAqIGRpdikpICYgMHhmZmZmOwogCiAJLyogc2V0IHRoZSBiYXVk IHJhdGUgY291bnRlciByZWdpc3RlciAqLwotCXdyaXRlbCgoYnJjcjEgfCBicmNyMiksIGRldi0+ dmlydGJhc2UgKyBJMkNfQlJDUik7CisJd3JpdGVsKChicmNyMSB8IGJyY3IyKSwgcHJpdi0+dmly dGJhc2UgKyBJMkNfQlJDUik7CiAKIAkvKgogCSAqIHNldCB0aGUgc3BlZWQgbW9kZS4gQ3VycmVu dGx5IHdlIHN1cHBvcnQKQEAgLTQxNywxMjUgKzQxNywxMjQgQEAgc3RhdGljIHZvaWQgc2V0dXBf aTJjX2NvbnRyb2xsZXIoc3RydWN0IG5ta19pMmNfZGV2ICpkZXYpCiAJICogVE9ETyAtIHN1cHBv cnQgZm9yIGZhc3QgbW9kZSBwbHVzICh1cCB0byAxTWIvcykKIAkgKiBhbmQgaGlnaCBzcGVlZCAo dXAgdG8gMy40IE1iL3MpCiAJICovCi0JaWYgKGRldi0+c20gPiBJMkNfRlJFUV9NT0RFX0ZBU1Qp IHsKLQkJZGV2X2VycigmZGV2LT5hZGV2LT5kZXYsCisJaWYgKHByaXYtPnNtID4gSTJDX0ZSRVFf TU9ERV9GQVNUKSB7CisJCWRldl9lcnIoJnByaXYtPmFkZXYtPmRldiwKIAkJCSJkbyBub3Qgc3Vw cG9ydCB0aGlzIG1vZGUgZGVmYXVsdGluZyB0byBzdGQuIG1vZGVcbiIpOwogCQlicmNyMiA9IGky Y19jbGsgLyAoSTJDX01BWF9TVEFOREFSRF9NT0RFX0ZSRVEgKiAyKSAmIDB4ZmZmZjsKLQkJd3Jp dGVsKChicmNyMSB8IGJyY3IyKSwgZGV2LT52aXJ0YmFzZSArIEkyQ19CUkNSKTsKKwkJd3JpdGVs KChicmNyMSB8IGJyY3IyKSwgcHJpdi0+dmlydGJhc2UgKyBJMkNfQlJDUik7CiAJCXdyaXRlbChJ MkNfRlJFUV9NT0RFX1NUQU5EQVJEIDw8IDQsCi0JCQkJZGV2LT52aXJ0YmFzZSArIEkyQ19DUik7 CisJCQkJcHJpdi0+dmlydGJhc2UgKyBJMkNfQ1IpOwogCX0KLQl3cml0ZWwoZGV2LT5zbSA8PCA0 LCBkZXYtPnZpcnRiYXNlICsgSTJDX0NSKTsKKwl3cml0ZWwocHJpdi0+c20gPDwgNCwgcHJpdi0+ dmlydGJhc2UgKyBJMkNfQ1IpOwogCiAJLyogc2V0IHRoZSBUeCBhbmQgUnggRklGTyB0aHJlc2hv bGQgKi8KLQl3cml0ZWwoZGV2LT50ZnQsIGRldi0+dmlydGJhc2UgKyBJMkNfVEZUUik7Ci0Jd3Jp dGVsKGRldi0+cmZ0LCBkZXYtPnZpcnRiYXNlICsgSTJDX1JGVFIpOworCXdyaXRlbChwcml2LT50 ZnQsIHByaXYtPnZpcnRiYXNlICsgSTJDX1RGVFIpOworCXdyaXRlbChwcml2LT5yZnQsIHByaXYt PnZpcnRiYXNlICsgSTJDX1JGVFIpOwogfQogCiAvKioKICAqIHJlYWRfaTJjKCkgLSBSZWFkIGZy b20gSTJDIGNsaWVudCBkZXZpY2UKLSAqIEBkZXY6IHByaXZhdGUgZGF0YSBvZiBJMkMgRHJpdmVy CisgKiBAcHJpdjogcHJpdmF0ZSBkYXRhIG9mIEkyQyBEcml2ZXIKICAqIEBmbGFnczogbWVzc2Fn ZSBmbGFncwogICoKICAqIFRoaXMgZnVuY3Rpb24gcmVhZHMgZnJvbSBpMmMgY2xpZW50IGRldmlj ZSB3aGVuIGNvbnRyb2xsZXIgaXMgaW4KICAqIG1hc3RlciBtb2RlLiBUaGVyZSBpcyBhIGNvbXBs ZXRpb24gdGltZW91dC4gSWYgdGhlcmUgaXMgbm8gdHJhbnNmZXIKICAqIGJlZm9yZSB0aW1lb3V0 IGVycm9yIGlzIHJldHVybmVkLgogICovCi1zdGF0aWMgaW50IHJlYWRfaTJjKHN0cnVjdCBubWtf aTJjX2RldiAqZGV2LCB1MTYgZmxhZ3MpCitzdGF0aWMgaW50IHJlYWRfaTJjKHN0cnVjdCBubWtf aTJjX2RldiAqcHJpdiwgdTE2IGZsYWdzKQogewogCWludCBzdGF0dXMgPSAwOwogCXUzMiBtY3Is IGlycV9tYXNrOwogCXVuc2lnbmVkIGxvbmcgdGltZW91dDsKIAotCW1jciA9IGxvYWRfaTJjX21j cl9yZWcoZGV2LCBmbGFncyk7Ci0Jd3JpdGVsKG1jciwgZGV2LT52aXJ0YmFzZSArIEkyQ19NQ1Ip OworCW1jciA9IGxvYWRfaTJjX21jcl9yZWcocHJpdiwgZmxhZ3MpOworCXdyaXRlbChtY3IsIHBy aXYtPnZpcnRiYXNlICsgSTJDX01DUik7CiAKIAkvKiBsb2FkIHRoZSBjdXJyZW50IENSIHZhbHVl ICovCi0Jd3JpdGVsKHJlYWRsKGRldi0+dmlydGJhc2UgKyBJMkNfQ1IpIHwgREVGQVVMVF9JMkNf UkVHX0NSLAotCQkJZGV2LT52aXJ0YmFzZSArIEkyQ19DUik7CisJd3JpdGVsKHJlYWRsKHByaXYt PnZpcnRiYXNlICsgSTJDX0NSKSB8IERFRkFVTFRfSTJDX1JFR19DUiwKKwkgICAgICAgcHJpdi0+ dmlydGJhc2UgKyBJMkNfQ1IpOwogCiAJLyogZW5hYmxlIHRoZSBjb250cm9sbGVyICovCi0JaTJj X3NldF9iaXQoZGV2LT52aXJ0YmFzZSArIEkyQ19DUiwgSTJDX0NSX1BFKTsKKwlpMmNfc2V0X2Jp dChwcml2LT52aXJ0YmFzZSArIEkyQ19DUiwgSTJDX0NSX1BFKTsKIAotCWluaXRfY29tcGxldGlv bigmZGV2LT54ZmVyX2NvbXBsZXRlKTsKKwlpbml0X2NvbXBsZXRpb24oJnByaXYtPnhmZXJfY29t cGxldGUpOwogCiAJLyogZW5hYmxlIGludGVycnVwdHMgYnkgc2V0dGluZyB0aGUgbWFzayAqLwog CWlycV9tYXNrID0gKEkyQ19JVF9SWEZORiB8IEkyQ19JVF9SWEZGIHwKIAkJCUkyQ19JVF9NQUwg fCBJMkNfSVRfQkVSUik7CiAKLQlpZiAoZGV2LT5zdG9wIHx8ICFkZXYtPnZlbmRvci0+aGFzX210 ZHdzKQorCWlmIChwcml2LT5zdG9wIHx8ICFwcml2LT52ZW5kb3ItPmhhc19tdGR3cykKIAkJaXJx X21hc2sgfD0gSTJDX0lUX01URDsKIAllbHNlCiAJCWlycV9tYXNrIHw9IEkyQ19JVF9NVERXUzsK IAogCWlycV9tYXNrID0gSTJDX0NMRUFSX0FMTF9JTlRTICYgSVJRX01BU0soaXJxX21hc2spOwog Ci0Jd3JpdGVsKHJlYWRsKGRldi0+dmlydGJhc2UgKyBJMkNfSU1TQ1IpIHwgaXJxX21hc2ssCi0J CQlkZXYtPnZpcnRiYXNlICsgSTJDX0lNU0NSKTsKKwl3cml0ZWwocmVhZGwocHJpdi0+dmlydGJh c2UgKyBJMkNfSU1TQ1IpIHwgaXJxX21hc2ssCisJICAgICAgIHByaXYtPnZpcnRiYXNlICsgSTJD X0lNU0NSKTsKIAogCXRpbWVvdXQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoCi0JCSZk ZXYtPnhmZXJfY29tcGxldGUsIGRldi0+YWRhcC50aW1lb3V0KTsKKwkJJnByaXYtPnhmZXJfY29t cGxldGUsIHByaXYtPmFkYXAudGltZW91dCk7CiAKIAlpZiAodGltZW91dCA9PSAwKSB7CiAJCS8q IENvbnRyb2xsZXIgdGltZWQgb3V0ICovCi0JCWRldl9lcnIoJmRldi0+YWRldi0+ZGV2LCAicmVh ZCBmcm9tIHNsYXZlIDB4JXggdGltZWQgb3V0XG4iLAotCQkJCWRldi0+Y2xpLnNsYXZlX2Fkcik7 CisJCWRldl9lcnIoJnByaXYtPmFkZXYtPmRldiwgInJlYWQgZnJvbSBzbGF2ZSAweCV4IHRpbWVk IG91dFxuIiwKKwkJCXByaXYtPmNsaS5zbGF2ZV9hZHIpOwogCQlzdGF0dXMgPSAtRVRJTUVET1VU OwogCX0KIAlyZXR1cm4gc3RhdHVzOwogfQogCi1zdGF0aWMgdm9pZCBmaWxsX3R4X2ZpZm8oc3Ry dWN0IG5ta19pMmNfZGV2ICpkZXYsIGludCBub19ieXRlcykKK3N0YXRpYyB2b2lkIGZpbGxfdHhf ZmlmbyhzdHJ1Y3Qgbm1rX2kyY19kZXYgKnByaXYsIGludCBub19ieXRlcykKIHsKIAlpbnQgY291 bnQ7CiAKIAlmb3IgKGNvdW50ID0gKG5vX2J5dGVzIC0gMik7CiAJCQkoY291bnQgPiAwKSAmJgot CQkJKGRldi0+Y2xpLmNvdW50ICE9IDApOworCQkJKHByaXYtPmNsaS5jb3VudCAhPSAwKTsKIAkJ CWNvdW50LS0pIHsKIAkJLyogd3JpdGUgdG8gdGhlIFR4IEZJRk8gKi8KLQkJd3JpdGViKCpkZXYt PmNsaS5idWZmZXIsCi0JCQlkZXYtPnZpcnRiYXNlICsgSTJDX1RGUik7Ci0JCWRldi0+Y2xpLmJ1 ZmZlcisrOwotCQlkZXYtPmNsaS5jb3VudC0tOwotCQlkZXYtPmNsaS54ZmVyX2J5dGVzKys7CisJ CXdyaXRlYigqcHJpdi0+Y2xpLmJ1ZmZlciwgcHJpdi0+dmlydGJhc2UgKyBJMkNfVEZSKTsKKwkJ cHJpdi0+Y2xpLmJ1ZmZlcisrOworCQlwcml2LT5jbGkuY291bnQtLTsKKwkJcHJpdi0+Y2xpLnhm ZXJfYnl0ZXMrKzsKIAl9CiAKIH0KIAogLyoqCiAgKiB3cml0ZV9pMmMoKSAtIFdyaXRlIGRhdGEg dG8gSTJDIGNsaWVudC4KLSAqIEBkZXY6IHByaXZhdGUgZGF0YSBvZiBJMkMgRHJpdmVyCisgKiBA cHJpdjogcHJpdmF0ZSBkYXRhIG9mIEkyQyBEcml2ZXIKICAqIEBmbGFnczogbWVzc2FnZSBmbGFn cwogICoKICAqIFRoaXMgZnVuY3Rpb24gd3JpdGVzIGRhdGEgdG8gSTJDIGNsaWVudAogICovCi1z dGF0aWMgaW50IHdyaXRlX2kyYyhzdHJ1Y3Qgbm1rX2kyY19kZXYgKmRldiwgdTE2IGZsYWdzKQor c3RhdGljIGludCB3cml0ZV9pMmMoc3RydWN0IG5ta19pMmNfZGV2ICpwcml2LCB1MTYgZmxhZ3Mp CiB7CiAJdTMyIHN0YXR1cyA9IDA7CiAJdTMyIG1jciwgaXJxX21hc2s7CiAJdW5zaWduZWQgbG9u ZyB0aW1lb3V0OwogCi0JbWNyID0gbG9hZF9pMmNfbWNyX3JlZyhkZXYsIGZsYWdzKTsKKwltY3Ig PSBsb2FkX2kyY19tY3JfcmVnKHByaXYsIGZsYWdzKTsKIAotCXdyaXRlbChtY3IsIGRldi0+dmly dGJhc2UgKyBJMkNfTUNSKTsKKwl3cml0ZWwobWNyLCBwcml2LT52aXJ0YmFzZSArIEkyQ19NQ1Ip OwogCiAJLyogbG9hZCB0aGUgY3VycmVudCBDUiB2YWx1ZSAqLwotCXdyaXRlbChyZWFkbChkZXYt PnZpcnRiYXNlICsgSTJDX0NSKSB8IERFRkFVTFRfSTJDX1JFR19DUiwKLQkJCWRldi0+dmlydGJh c2UgKyBJMkNfQ1IpOworCXdyaXRlbChyZWFkbChwcml2LT52aXJ0YmFzZSArIEkyQ19DUikgfCBE RUZBVUxUX0kyQ19SRUdfQ1IsCisJICAgICAgIHByaXYtPnZpcnRiYXNlICsgSTJDX0NSKTsKIAog CS8qIGVuYWJsZSB0aGUgY29udHJvbGxlciAqLwotCWkyY19zZXRfYml0KGRldi0+dmlydGJhc2Ug KyBJMkNfQ1IsIEkyQ19DUl9QRSk7CisJaTJjX3NldF9iaXQocHJpdi0+dmlydGJhc2UgKyBJMkNf Q1IsIEkyQ19DUl9QRSk7CiAKLQlpbml0X2NvbXBsZXRpb24oJmRldi0+eGZlcl9jb21wbGV0ZSk7 CisJaW5pdF9jb21wbGV0aW9uKCZwcml2LT54ZmVyX2NvbXBsZXRlKTsKIAogCS8qIGVuYWJsZSBp bnRlcnJ1cHRzIGJ5IHNldHRpbmdzIHRoZSBtYXNrcyAqLwogCWlycV9tYXNrID0gKEkyQ19JVF9U WEZPVlIgfCBJMkNfSVRfTUFMIHwgSTJDX0lUX0JFUlIpOwogCiAJLyogRmlsbCB0aGUgVFggRklG TyB3aXRoIHRyYW5zbWl0IGRhdGEgKi8KLQlmaWxsX3R4X2ZpZm8oZGV2LCBNQVhfSTJDX0ZJRk9f VEhSRVNIT0xEKTsKKwlmaWxsX3R4X2ZpZm8ocHJpdiwgTUFYX0kyQ19GSUZPX1RIUkVTSE9MRCk7 CiAKLQlpZiAoZGV2LT5jbGkuY291bnQgIT0gMCkKKwlpZiAocHJpdi0+Y2xpLmNvdW50ICE9IDAp CiAJCWlycV9tYXNrIHw9IEkyQ19JVF9UWEZORTsKIAogCS8qCkBAIC01NDMsMjMgKzU0MiwyMyBA QCBzdGF0aWMgaW50IHdyaXRlX2kyYyhzdHJ1Y3Qgbm1rX2kyY19kZXYgKmRldiwgdTE2IGZsYWdz KQogCSAqIHNldCB0aGUgTVREV1MgYml0IChNYXN0ZXIgVHJhbnNhY3Rpb24gRG9uZSBXaXRob3V0 IFN0b3ApCiAJICogdG8gc3RhcnQgcmVwZWF0ZWQgc3RhcnQgb3BlcmF0aW9uCiAJICovCi0JaWYg KGRldi0+c3RvcCB8fCAhZGV2LT52ZW5kb3ItPmhhc19tdGR3cykKKwlpZiAocHJpdi0+c3RvcCB8 fCAhcHJpdi0+dmVuZG9yLT5oYXNfbXRkd3MpCiAJCWlycV9tYXNrIHw9IEkyQ19JVF9NVEQ7CiAJ ZWxzZQogCQlpcnFfbWFzayB8PSBJMkNfSVRfTVREV1M7CiAKIAlpcnFfbWFzayA9IEkyQ19DTEVB Ul9BTExfSU5UUyAmIElSUV9NQVNLKGlycV9tYXNrKTsKIAotCXdyaXRlbChyZWFkbChkZXYtPnZp cnRiYXNlICsgSTJDX0lNU0NSKSB8IGlycV9tYXNrLAotCQkJZGV2LT52aXJ0YmFzZSArIEkyQ19J TVNDUik7CisJd3JpdGVsKHJlYWRsKHByaXYtPnZpcnRiYXNlICsgSTJDX0lNU0NSKSB8IGlycV9t YXNrLAorCSAgICAgICBwcml2LT52aXJ0YmFzZSArIEkyQ19JTVNDUik7CiAKIAl0aW1lb3V0ID0g d2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KAotCQkmZGV2LT54ZmVyX2NvbXBsZXRlLCBkZXYt PmFkYXAudGltZW91dCk7CisJCSZwcml2LT54ZmVyX2NvbXBsZXRlLCBwcml2LT5hZGFwLnRpbWVv dXQpOwogCiAJaWYgKHRpbWVvdXQgPT0gMCkgewogCQkvKiBDb250cm9sbGVyIHRpbWVkIG91dCAq LwotCQlkZXZfZXJyKCZkZXYtPmFkZXYtPmRldiwgIndyaXRlIHRvIHNsYXZlIDB4JXggdGltZWQg b3V0XG4iLAotCQkJCWRldi0+Y2xpLnNsYXZlX2Fkcik7CisJCWRldl9lcnIoJnByaXYtPmFkZXYt PmRldiwgIndyaXRlIHRvIHNsYXZlIDB4JXggdGltZWQgb3V0XG4iLAorCQkJcHJpdi0+Y2xpLnNs YXZlX2Fkcik7CiAJCXN0YXR1cyA9IC1FVElNRURPVVQ7CiAJfQogCkBAIC01NjgsMjggKzU2Nywy OCBAQCBzdGF0aWMgaW50IHdyaXRlX2kyYyhzdHJ1Y3Qgbm1rX2kyY19kZXYgKmRldiwgdTE2IGZs YWdzKQogCiAvKioKICAqIG5ta19pMmNfeGZlcl9vbmUoKSAtIHRyYW5zbWl0IGEgc2luZ2xlIEky QyBtZXNzYWdlCi0gKiBAZGV2OiBkZXZpY2Ugd2l0aCBhIG1lc3NhZ2UgZW5jb2RlZCBpbnRvIGl0 CisgKiBAcHJpdjogZGV2aWNlIHdpdGggYSBtZXNzYWdlIGVuY29kZWQgaW50byBpdAogICogQGZs YWdzOiBtZXNzYWdlIGZsYWdzCiAgKi8KLXN0YXRpYyBpbnQgbm1rX2kyY194ZmVyX29uZShzdHJ1 Y3Qgbm1rX2kyY19kZXYgKmRldiwgdTE2IGZsYWdzKQorc3RhdGljIGludCBubWtfaTJjX3hmZXJf b25lKHN0cnVjdCBubWtfaTJjX2RldiAqcHJpdiwgdTE2IGZsYWdzKQogewogCWludCBzdGF0dXM7 CiAKIAlpZiAoZmxhZ3MgJiBJMkNfTV9SRCkgewogCQkvKiByZWFkIG9wZXJhdGlvbiAqLwotCQlk ZXYtPmNsaS5vcGVyYXRpb24gPSBJMkNfUkVBRDsKLQkJc3RhdHVzID0gcmVhZF9pMmMoZGV2LCBm bGFncyk7CisJCXByaXYtPmNsaS5vcGVyYXRpb24gPSBJMkNfUkVBRDsKKwkJc3RhdHVzID0gcmVh ZF9pMmMocHJpdiwgZmxhZ3MpOwogCX0gZWxzZSB7CiAJCS8qIHdyaXRlIG9wZXJhdGlvbiAqLwot CQlkZXYtPmNsaS5vcGVyYXRpb24gPSBJMkNfV1JJVEU7Ci0JCXN0YXR1cyA9IHdyaXRlX2kyYyhk ZXYsIGZsYWdzKTsKKwkJcHJpdi0+Y2xpLm9wZXJhdGlvbiA9IEkyQ19XUklURTsKKwkJc3RhdHVz ID0gd3JpdGVfaTJjKHByaXYsIGZsYWdzKTsKIAl9CiAKLQlpZiAoc3RhdHVzIHx8IChkZXYtPnJl c3VsdCkpIHsKKwlpZiAoc3RhdHVzIHx8IHByaXYtPnJlc3VsdCkgewogCQl1MzIgaTJjX3NyOwog CQl1MzIgY2F1c2U7CiAKLQkJaTJjX3NyID0gcmVhZGwoZGV2LT52aXJ0YmFzZSArIEkyQ19TUik7 CisJCWkyY19zciA9IHJlYWRsKHByaXYtPnZpcnRiYXNlICsgSTJDX1NSKTsKIAkJLyoKIAkJICog Q2hlY2sgaWYgdGhlIGNvbnRyb2xsZXIgSTJDIG9wZXJhdGlvbiBzdGF0dXMKIAkJICogaXMgc2V0 IHRvIEFCT1JUKDExYikuCkBAIC01OTcsMTUgKzU5NiwxNSBAQCBzdGF0aWMgaW50IG5ta19pMmNf eGZlcl9vbmUoc3RydWN0IG5ta19pMmNfZGV2ICpkZXYsIHUxNiBmbGFncykKIAkJaWYgKCgoaTJj X3NyID4+IDIpICYgMHgzKSA9PSAweDMpIHsKIAkJCS8qIGdldCB0aGUgYWJvcnQgY2F1c2UgKi8K IAkJCWNhdXNlID0JKGkyY19zciA+PiA0KSAmIDB4NzsKLQkJCWRldl9lcnIoJmRldi0+YWRldi0+ ZGV2LCAiJXNcbiIsCisJCQlkZXZfZXJyKCZwcml2LT5hZGV2LT5kZXYsICIlc1xuIiwKIAkJCQlj YXVzZSA+PSBBUlJBWV9TSVpFKGFib3J0X2NhdXNlcykgPwogCQkJCSJ1bmtub3duIHJlYXNvbiIg OgogCQkJCWFib3J0X2NhdXNlc1tjYXVzZV0pOwogCQl9CiAKLQkJKHZvaWQpIGluaXRfaHcoZGV2 KTsKKwkJaW5pdF9odyhwcml2KTsKIAotCQlzdGF0dXMgPSBzdGF0dXMgPyBzdGF0dXMgOiBkZXYt PnJlc3VsdDsKKwkJc3RhdHVzID0gc3RhdHVzID8gc3RhdHVzIDogcHJpdi0+cmVzdWx0OwogCX0K IAogCXJldHVybiBzdGF0dXM7CkBAIC02NjMsMjQgKzY2MiwyNCBAQCBzdGF0aWMgaW50IG5ta19p MmNfeGZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmkyY19hZGFwLAogewogCWludCBzdGF0dXMgPSAw OwogCWludCBpOwotCXN0cnVjdCBubWtfaTJjX2RldiAqZGV2ID0gaTJjX2dldF9hZGFwZGF0YShp MmNfYWRhcCk7CisJc3RydWN0IG5ta19pMmNfZGV2ICpwcml2ID0gaTJjX2dldF9hZGFwZGF0YShp MmNfYWRhcCk7CiAJaW50IGo7CiAKLQlwbV9ydW50aW1lX2dldF9zeW5jKCZkZXYtPmFkZXYtPmRl dik7CisJcG1fcnVudGltZV9nZXRfc3luYygmcHJpdi0+YWRldi0+ZGV2KTsKIAogCS8qIEF0dGVt cHQgdGhyZWUgdGltZXMgdG8gc2VuZCB0aGUgbWVzc2FnZSBxdWV1ZSAqLwogCWZvciAoaiA9IDA7 IGogPCAzOyBqKyspIHsKIAkJLyogc2V0dXAgdGhlIGkyYyBjb250cm9sbGVyICovCi0JCXNldHVw X2kyY19jb250cm9sbGVyKGRldik7CisJCXNldHVwX2kyY19jb250cm9sbGVyKHByaXYpOwogCiAJ CWZvciAoaSA9IDA7IGkgPCBudW1fbXNnczsgaSsrKSB7Ci0JCQlkZXYtPmNsaS5zbGF2ZV9hZHIJ PSBtc2dzW2ldLmFkZHI7Ci0JCQlkZXYtPmNsaS5idWZmZXIJCT0gbXNnc1tpXS5idWY7Ci0JCQlk ZXYtPmNsaS5jb3VudAkJPSBtc2dzW2ldLmxlbjsKLQkJCWRldi0+c3RvcCA9IChpIDwgKG51bV9t c2dzIC0gMSkpID8gMCA6IDE7Ci0JCQlkZXYtPnJlc3VsdCA9IDA7CisJCQlwcml2LT5jbGkuc2xh dmVfYWRyCT0gbXNnc1tpXS5hZGRyOworCQkJcHJpdi0+Y2xpLmJ1ZmZlcgkJPSBtc2dzW2ldLmJ1 ZjsKKwkJCXByaXYtPmNsaS5jb3VudAkJPSBtc2dzW2ldLmxlbjsKKwkJCXByaXYtPnN0b3AgPSAo aSA8IChudW1fbXNncyAtIDEpKSA/IDAgOiAxOworCQkJcHJpdi0+cmVzdWx0ID0gMDsKIAotCQkJ c3RhdHVzID0gbm1rX2kyY194ZmVyX29uZShkZXYsIG1zZ3NbaV0uZmxhZ3MpOworCQkJc3RhdHVz ID0gbm1rX2kyY194ZmVyX29uZShwcml2LCBtc2dzW2ldLmZsYWdzKTsKIAkJCWlmIChzdGF0dXMg IT0gMCkKIAkJCQlicmVhazsKIAkJfQpAQCAtNjg4LDcgKzY4Nyw3IEBAIHN0YXRpYyBpbnQgbm1r X2kyY194ZmVyKHN0cnVjdCBpMmNfYWRhcHRlciAqaTJjX2FkYXAsCiAJCQlicmVhazsKIAl9CiAK LQlwbV9ydW50aW1lX3B1dF9zeW5jKCZkZXYtPmFkZXYtPmRldik7CisJcG1fcnVudGltZV9wdXRf c3luYygmcHJpdi0+YWRldi0+ZGV2KTsKIAogCS8qIHJldHVybiB0aGUgbm8uIG1lc3NhZ2VzIHBy b2Nlc3NlZCAqLwogCWlmIChzdGF0dXMpCkBAIC02OTksMTQgKzY5OCwxNCBAQCBzdGF0aWMgaW50 IG5ta19pMmNfeGZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmkyY19hZGFwLAogCiAvKioKICAqIGRp c2FibGVfaW50ZXJydXB0cygpIC0gZGlzYWJsZSB0aGUgaW50ZXJydXB0cwotICogQGRldjogcHJp dmF0ZSBkYXRhIG9mIGNvbnRyb2xsZXIKKyAqIEBwcml2OiBwcml2YXRlIGRhdGEgb2YgY29udHJv bGxlcgogICogQGlycTogaW50ZXJydXB0IG51bWJlcgogICovCi1zdGF0aWMgaW50IGRpc2FibGVf aW50ZXJydXB0cyhzdHJ1Y3Qgbm1rX2kyY19kZXYgKmRldiwgdTMyIGlycSkKK3N0YXRpYyBpbnQg ZGlzYWJsZV9pbnRlcnJ1cHRzKHN0cnVjdCBubWtfaTJjX2RldiAqcHJpdiwgdTMyIGlycSkKIHsK IAlpcnEgPSBJUlFfTUFTSyhpcnEpOwotCXdyaXRlbChyZWFkbChkZXYtPnZpcnRiYXNlICsgSTJD X0lNU0NSKSAmIH4oSTJDX0NMRUFSX0FMTF9JTlRTICYgaXJxKSwKLQkJCWRldi0+dmlydGJhc2Ug KyBJMkNfSU1TQ1IpOworCXdyaXRlbChyZWFkbChwcml2LT52aXJ0YmFzZSArIEkyQ19JTVNDUikg JiB+KEkyQ19DTEVBUl9BTExfSU5UUyAmIGlycSksCisJICAgICAgIHByaXYtPnZpcnRiYXNlICsg STJDX0lNU0NSKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNzIzLDE3ICs3MjIsMTggQEAgc3RhdGlj IGludCBkaXNhYmxlX2ludGVycnVwdHMoc3RydWN0IG5ta19pMmNfZGV2ICpkZXYsIHUzMiBpcnEp CiAgKi8KIHN0YXRpYyBpcnFyZXR1cm5fdCBpMmNfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAq YXJnKQogewotCXN0cnVjdCBubWtfaTJjX2RldiAqZGV2ID0gYXJnOworCXN0cnVjdCBubWtfaTJj X2RldiAqcHJpdiA9IGFyZzsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcHJpdi0+YWRldi0+ZGV2 OwogCXUzMiB0ZnQsIHJmdDsKIAl1MzIgY291bnQ7CiAJdTMyIG1pc3IsIHNyYzsKIAogCS8qIGxv YWQgVHggRklGTyBhbmQgUnggRklGTyB0aHJlc2hvbGQgdmFsdWVzICovCi0JdGZ0ID0gcmVhZGwo ZGV2LT52aXJ0YmFzZSArIEkyQ19URlRSKTsKLQlyZnQgPSByZWFkbChkZXYtPnZpcnRiYXNlICsg STJDX1JGVFIpOworCXRmdCA9IHJlYWRsKHByaXYtPnZpcnRiYXNlICsgSTJDX1RGVFIpOworCXJm dCA9IHJlYWRsKHByaXYtPnZpcnRiYXNlICsgSTJDX1JGVFIpOwogCiAJLyogcmVhZCBpbnRlcnJ1 cHQgc3RhdHVzIHJlZ2lzdGVyICovCi0JbWlzciA9IHJlYWRsKGRldi0+dmlydGJhc2UgKyBJMkNf TUlTUik7CisJbWlzciA9IHJlYWRsKHByaXYtPnZpcnRiYXNlICsgSTJDX01JU1IpOwogCiAJc3Jj ID0gX19mZnMobWlzcik7CiAJc3dpdGNoICgoMSA8PCBzcmMpKSB7CkBAIC03NDEsMjAgKzc0MSwy MCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgaTJjX2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmFy ZykKIAkvKiBUcmFuc21pdCBGSUZPIG5lYXJseSBlbXB0eSBpbnRlcnJ1cHQgKi8KIAljYXNlIEky Q19JVF9UWEZORToKIAl7Ci0JCWlmIChkZXYtPmNsaS5vcGVyYXRpb24gPT0gSTJDX1JFQUQpIHsK KwkJaWYgKHByaXYtPmNsaS5vcGVyYXRpb24gPT0gSTJDX1JFQUQpIHsKIAkJCS8qCiAJCQkgKiBp biByZWFkIG9wZXJhdGlvbiB3aHkgZG8gd2UgY2FyZSBmb3Igd3JpdGluZz8KIAkJCSAqIHNvIGRp c2FibGUgdGhlIFRyYW5zbWl0IEZJRk8gaW50ZXJydXB0CiAJCQkgKi8KLQkJCWRpc2FibGVfaW50 ZXJydXB0cyhkZXYsIEkyQ19JVF9UWEZORSk7CisJCQlkaXNhYmxlX2ludGVycnVwdHMocHJpdiwg STJDX0lUX1RYRk5FKTsKIAkJfSBlbHNlIHsKLQkJCWZpbGxfdHhfZmlmbyhkZXYsIChNQVhfSTJD X0ZJRk9fVEhSRVNIT0xEIC0gdGZ0KSk7CisJCQlmaWxsX3R4X2ZpZm8ocHJpdiwgKE1BWF9JMkNf RklGT19USFJFU0hPTEQgLSB0ZnQpKTsKIAkJCS8qCiAJCQkgKiBpZiBkb25lLCBjbG9zZSB0aGUg dHJhbnNmZXIgYnkgZGlzYWJsaW5nIHRoZQogCQkJICogY29ycmVzcG9uZGluZyBUWEZORSBpbnRl cnJ1cHQKIAkJCSAqLwotCQkJaWYgKGRldi0+Y2xpLmNvdW50ID09IDApCi0JCQkJZGlzYWJsZV9p bnRlcnJ1cHRzKGRldiwJSTJDX0lUX1RYRk5FKTsKKwkJCWlmIChwcml2LT5jbGkuY291bnQgPT0g MCkKKwkJCQlkaXNhYmxlX2ludGVycnVwdHMocHJpdiwJSTJDX0lUX1RYRk5FKTsKIAkJfQogCX0K IAlicmVhazsKQEAgLTc2OCw2MCArNzY4LDU5IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBpMmNfaXJx X2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQogCWNhc2UgSTJDX0lUX1JYRk5GOgogCQlmb3Ig KGNvdW50ID0gcmZ0OyBjb3VudCA+IDA7IGNvdW50LS0pIHsKIAkJCS8qIFJlYWQgdGhlIFJ4IEZJ Rk8gKi8KLQkJCSpkZXYtPmNsaS5idWZmZXIgPSByZWFkYihkZXYtPnZpcnRiYXNlICsgSTJDX1JG Uik7Ci0JCQlkZXYtPmNsaS5idWZmZXIrKzsKKwkJCSpwcml2LT5jbGkuYnVmZmVyID0gcmVhZGIo cHJpdi0+dmlydGJhc2UgKyBJMkNfUkZSKTsKKwkJCXByaXYtPmNsaS5idWZmZXIrKzsKIAkJfQot CQlkZXYtPmNsaS5jb3VudCAtPSByZnQ7Ci0JCWRldi0+Y2xpLnhmZXJfYnl0ZXMgKz0gcmZ0Owor CQlwcml2LT5jbGkuY291bnQgLT0gcmZ0OworCQlwcml2LT5jbGkueGZlcl9ieXRlcyArPSByZnQ7 CiAJCWJyZWFrOwogCiAJLyogUnggRklGTyBmdWxsICovCiAJY2FzZSBJMkNfSVRfUlhGRjoKIAkJ Zm9yIChjb3VudCA9IE1BWF9JMkNfRklGT19USFJFU0hPTEQ7IGNvdW50ID4gMDsgY291bnQtLSkg ewotCQkJKmRldi0+Y2xpLmJ1ZmZlciA9IHJlYWRiKGRldi0+dmlydGJhc2UgKyBJMkNfUkZSKTsK LQkJCWRldi0+Y2xpLmJ1ZmZlcisrOworCQkJKnByaXYtPmNsaS5idWZmZXIgPSByZWFkYihwcml2 LT52aXJ0YmFzZSArIEkyQ19SRlIpOworCQkJcHJpdi0+Y2xpLmJ1ZmZlcisrOwogCQl9Ci0JCWRl di0+Y2xpLmNvdW50IC09IE1BWF9JMkNfRklGT19USFJFU0hPTEQ7Ci0JCWRldi0+Y2xpLnhmZXJf Ynl0ZXMgKz0gTUFYX0kyQ19GSUZPX1RIUkVTSE9MRDsKKwkJcHJpdi0+Y2xpLmNvdW50IC09IE1B WF9JMkNfRklGT19USFJFU0hPTEQ7CisJCXByaXYtPmNsaS54ZmVyX2J5dGVzICs9IE1BWF9JMkNf RklGT19USFJFU0hPTEQ7CiAJCWJyZWFrOwogCiAJLyogTWFzdGVyIFRyYW5zYWN0aW9uIERvbmUg d2l0aC93aXRob3V0IHN0b3AgKi8KIAljYXNlIEkyQ19JVF9NVEQ6CiAJY2FzZSBJMkNfSVRfTVRE V1M6Ci0JCWlmIChkZXYtPmNsaS5vcGVyYXRpb24gPT0gSTJDX1JFQUQpIHsKLQkJCXdoaWxlICgh KHJlYWRsKGRldi0+dmlydGJhc2UgKyBJMkNfUklTUikKKwkJaWYgKHByaXYtPmNsaS5vcGVyYXRp b24gPT0gSTJDX1JFQUQpIHsKKwkJCXdoaWxlICghKHJlYWRsKHByaXYtPnZpcnRiYXNlICsgSTJD X1JJU1IpCiAJCQkJICYgSTJDX0lUX1JYRkUpKSB7Ci0JCQkJaWYgKGRldi0+Y2xpLmNvdW50ID09 IDApCisJCQkJaWYgKHByaXYtPmNsaS5jb3VudCA9PSAwKQogCQkJCQlicmVhazsKLQkJCQkqZGV2 LT5jbGkuYnVmZmVyID0KLQkJCQkJcmVhZGIoZGV2LT52aXJ0YmFzZSArIEkyQ19SRlIpOwotCQkJ CWRldi0+Y2xpLmJ1ZmZlcisrOwotCQkJCWRldi0+Y2xpLmNvdW50LS07Ci0JCQkJZGV2LT5jbGku eGZlcl9ieXRlcysrOworCQkJCSpwcml2LT5jbGkuYnVmZmVyID0KKwkJCQkJcmVhZGIocHJpdi0+ dmlydGJhc2UgKyBJMkNfUkZSKTsKKwkJCQlwcml2LT5jbGkuYnVmZmVyKys7CisJCQkJcHJpdi0+ Y2xpLmNvdW50LS07CisJCQkJcHJpdi0+Y2xpLnhmZXJfYnl0ZXMrKzsKIAkJCX0KIAkJfQogCi0J CWRpc2FibGVfYWxsX2ludGVycnVwdHMoZGV2KTsKLQkJY2xlYXJfYWxsX2ludGVycnVwdHMoZGV2 KTsKKwkJZGlzYWJsZV9hbGxfaW50ZXJydXB0cyhwcml2KTsKKwkJY2xlYXJfYWxsX2ludGVycnVw dHMocHJpdik7CiAKLQkJaWYgKGRldi0+Y2xpLmNvdW50KSB7Ci0JCQlkZXYtPnJlc3VsdCA9IC1F SU87Ci0JCQlkZXZfZXJyKCZkZXYtPmFkZXYtPmRldiwKLQkJCQkiJWx1IGJ5dGVzIHN0aWxsIHJl bWFpbiB0byBiZSB4ZmVyZWRcbiIsCi0JCQkJZGV2LT5jbGkuY291bnQpOwotCQkJKHZvaWQpIGlu aXRfaHcoZGV2KTsKKwkJaWYgKHByaXYtPmNsaS5jb3VudCkgeworCQkJcHJpdi0+cmVzdWx0ID0g LUVJTzsKKwkJCWRldl9lcnIoZGV2LCAiJWx1IGJ5dGVzIHN0aWxsIHJlbWFpbiB0byBiZSB4ZmVy ZWRcbiIsCisJCQkJcHJpdi0+Y2xpLmNvdW50KTsKKwkJCWluaXRfaHcocHJpdik7CiAJCX0KLQkJ Y29tcGxldGUoJmRldi0+eGZlcl9jb21wbGV0ZSk7CisJCWNvbXBsZXRlKCZwcml2LT54ZmVyX2Nv bXBsZXRlKTsKIAogCQlicmVhazsKIAogCS8qIE1hc3RlciBBcmJpdHJhdGlvbiBsb3N0IGludGVy cnVwdCAqLwogCWNhc2UgSTJDX0lUX01BTDoKLQkJZGV2LT5yZXN1bHQgPSAtRUlPOwotCQkodm9p ZCkgaW5pdF9odyhkZXYpOworCQlwcml2LT5yZXN1bHQgPSAtRUlPOworCQlpbml0X2h3KHByaXYp OwogCi0JCWkyY19zZXRfYml0KGRldi0+dmlydGJhc2UgKyBJMkNfSUNSLCBJMkNfSVRfTUFMKTsK LQkJY29tcGxldGUoJmRldi0+eGZlcl9jb21wbGV0ZSk7CisJCWkyY19zZXRfYml0KHByaXYtPnZp cnRiYXNlICsgSTJDX0lDUiwgSTJDX0lUX01BTCk7CisJCWNvbXBsZXRlKCZwcml2LT54ZmVyX2Nv bXBsZXRlKTsKIAogCQlicmVhazsKIApAQCAtODMxLDEzICs4MzAsMTMgQEAgc3RhdGljIGlycXJl dHVybl90IGkyY19pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCiAJICogZHVyaW5nIHRo ZSB0cmFuc2FjdGlvbi4KIAkgKi8KIAljYXNlIEkyQ19JVF9CRVJSOgotCQlkZXYtPnJlc3VsdCA9 IC1FSU87CisJCXByaXYtPnJlc3VsdCA9IC1FSU87CiAJCS8qIGdldCB0aGUgc3RhdHVzICovCi0J CWlmICgoKHJlYWRsKGRldi0+dmlydGJhc2UgKyBJMkNfU1IpID4+IDIpICYgMHgzKSA9PSBJMkNf QUJPUlQpCi0JCQkodm9pZCkgaW5pdF9odyhkZXYpOworCQlpZiAoKChyZWFkbChwcml2LT52aXJ0 YmFzZSArIEkyQ19TUikgPj4gMikgJiAweDMpID09IEkyQ19BQk9SVCkKKwkJCWluaXRfaHcocHJp dik7CiAKLQkJaTJjX3NldF9iaXQoZGV2LT52aXJ0YmFzZSArIEkyQ19JQ1IsIEkyQ19JVF9CRVJS KTsKLQkJY29tcGxldGUoJmRldi0+eGZlcl9jb21wbGV0ZSk7CisJCWkyY19zZXRfYml0KHByaXYt PnZpcnRiYXNlICsgSTJDX0lDUiwgSTJDX0lUX0JFUlIpOworCQljb21wbGV0ZSgmcHJpdi0+eGZl cl9jb21wbGV0ZSk7CiAKIAkJYnJlYWs7CiAKQEAgLTg0NywxMSArODQ2LDExIEBAIHN0YXRpYyBp cnFyZXR1cm5fdCBpMmNfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQogCSAqIHRoZSBU eCBGSUZPIGlzIGZ1bGwuCiAJICovCiAJY2FzZSBJMkNfSVRfVFhGT1ZSOgotCQlkZXYtPnJlc3Vs dCA9IC1FSU87Ci0JCSh2b2lkKSBpbml0X2h3KGRldik7CisJCXByaXYtPnJlc3VsdCA9IC1FSU87 CisJCWluaXRfaHcocHJpdik7CiAKLQkJZGV2X2VycigmZGV2LT5hZGV2LT5kZXYsICJUeCBGaWZv IE92ZXIgcnVuXG4iKTsKLQkJY29tcGxldGUoJmRldi0+eGZlcl9jb21wbGV0ZSk7CisJCWRldl9l cnIoZGV2LCAiVHggRmlmbyBPdmVyIHJ1blxuIik7CisJCWNvbXBsZXRlKCZwcml2LT54ZmVyX2Nv bXBsZXRlKTsKIAogCQlicmVhazsKIApAQCAtODYzLDEwICs4NjIsMTAgQEAgc3RhdGljIGlycXJl dHVybl90IGkyY19pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCiAJY2FzZSBJMkNfSVRf UkZTRToKIAljYXNlIEkyQ19JVF9XVFNSOgogCWNhc2UgSTJDX0lUX1NURDoKLQkJZGV2X2Vycigm ZGV2LT5hZGV2LT5kZXYsICJ1bmhhbmRsZWQgSW50ZXJydXB0XG4iKTsKKwkJZGV2X2VycihkZXYs ICJ1bmhhbmRsZWQgSW50ZXJydXB0XG4iKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJZGV2X2Vy cigmZGV2LT5hZGV2LT5kZXYsICJzcHVyaW91cyBJbnRlcnJ1cHQuLlxuIik7CisJCWRldl9lcnIo ZGV2LCAic3B1cmlvdXMgSW50ZXJydXB0Li5cbiIpOwogCQlicmVhazsKIAl9CiAKQEAgLTg5Myw5 ICs4OTIsOSBAQCBzdGF0aWMgaW50IG5ta19pMmNfcmVzdW1lX2Vhcmx5KHN0cnVjdCBkZXZpY2Ug KmRldikKIHN0YXRpYyBpbnQgbm1rX2kyY19ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAq ZGV2KQogewogCXN0cnVjdCBhbWJhX2RldmljZSAqYWRldiA9IHRvX2FtYmFfZGV2aWNlKGRldik7 Ci0Jc3RydWN0IG5ta19pMmNfZGV2ICpubWtfaTJjID0gYW1iYV9nZXRfZHJ2ZGF0YShhZGV2KTsK KwlzdHJ1Y3Qgbm1rX2kyY19kZXYgKnByaXYgPSBhbWJhX2dldF9kcnZkYXRhKGFkZXYpOwogCi0J Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKG5ta19pMmMtPmNsayk7CisJY2xrX2Rpc2FibGVfdW5wcmVw YXJlKHByaXYtPmNsayk7CiAJcGluY3RybF9wbV9zZWxlY3RfaWRsZV9zdGF0ZShkZXYpOwogCXJl dHVybiAwOwogfQpAQCAtOTAzLDEwICs5MDIsMTAgQEAgc3RhdGljIGludCBubWtfaTJjX3J1bnRp bWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiBzdGF0aWMgaW50IG5ta19pMmNfcnVudGlt ZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogewogCXN0cnVjdCBhbWJhX2RldmljZSAqYWRl diA9IHRvX2FtYmFfZGV2aWNlKGRldik7Ci0Jc3RydWN0IG5ta19pMmNfZGV2ICpubWtfaTJjID0g YW1iYV9nZXRfZHJ2ZGF0YShhZGV2KTsKKwlzdHJ1Y3Qgbm1rX2kyY19kZXYgKnByaXYgPSBhbWJh X2dldF9kcnZkYXRhKGFkZXYpOwogCWludCByZXQ7CiAKLQlyZXQgPSBjbGtfcHJlcGFyZV9lbmFi bGUobm1rX2kyYy0+Y2xrKTsKKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocHJpdi0+Y2xrKTsK IAlpZiAocmV0KSB7CiAJCWRldl9lcnIoZGV2LCAiY2FuJ3QgcHJlcGFyZV9lbmFibGUgY2xvY2tc biIpOwogCQlyZXR1cm4gcmV0OwpAQCAtOTE0LDkgKzkxMyw5IEBAIHN0YXRpYyBpbnQgbm1rX2ky Y19ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAKIAlwaW5jdHJsX3BtX3NlbGVj dF9kZWZhdWx0X3N0YXRlKGRldik7CiAKLQlyZXQgPSBpbml0X2h3KG5ta19pMmMpOworCXJldCA9 IGluaXRfaHcocHJpdik7CiAJaWYgKHJldCkgewotCQljbGtfZGlzYWJsZV91bnByZXBhcmUobm1r X2kyYy0+Y2xrKTsKKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtPmNsayk7CiAJCXBpbmN0 cmxfcG1fc2VsZWN0X2lkbGVfc3RhdGUoZGV2KTsKIAl9CiAKQEAgLTkzOSwxMDcgKzkzOCwxMDgg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfYWxnb3JpdGhtIG5ta19pMmNfYWxnbyA9IHsKIH07 CiAKIHN0YXRpYyB2b2lkIG5ta19pMmNfb2ZfcHJvYmUoc3RydWN0IGRldmljZV9ub2RlICpucCwK LQkJCSAgICAgc3RydWN0IG5ta19pMmNfZGV2ICpubWspCisJCQkgICAgIHN0cnVjdCBubWtfaTJj X2RldiAqcHJpdikKIHsKIAkvKiBEZWZhdWx0IHRvIDEwMCBrSHogaWYgbm8gZnJlcXVlbmN5IGlz IGdpdmVuIGluIHRoZSBub2RlICovCi0JaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAiY2xv Y2stZnJlcXVlbmN5IiwgJm5tay0+Y2xrX2ZyZXEpKQotCQlubWstPmNsa19mcmVxID0gSTJDX01B WF9TVEFOREFSRF9NT0RFX0ZSRVE7CisJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAiY2xv Y2stZnJlcXVlbmN5IiwgJnByaXYtPmNsa19mcmVxKSkKKwkJcHJpdi0+Y2xrX2ZyZXEgPSBJMkNf TUFYX1NUQU5EQVJEX01PREVfRlJFUTsKIAogCS8qIFRoaXMgZHJpdmVyIG9ubHkgc3VwcG9ydHMg J3N0YW5kYXJkJyBhbmQgJ2Zhc3QnIG1vZGVzIG9mIG9wZXJhdGlvbi4gKi8KLQlpZiAobm1rLT5j bGtfZnJlcSA8PSBJMkNfTUFYX1NUQU5EQVJEX01PREVfRlJFUSkKLQkJbm1rLT5zbSA9IEkyQ19G UkVRX01PREVfU1RBTkRBUkQ7CisJaWYgKHByaXYtPmNsa19mcmVxIDw9IEkyQ19NQVhfU1RBTkRB UkRfTU9ERV9GUkVRKQorCQlwcml2LT5zbSA9IEkyQ19GUkVRX01PREVfU1RBTkRBUkQ7CiAJZWxz ZQotCQlubWstPnNtID0gSTJDX0ZSRVFfTU9ERV9GQVNUOwotCW5tay0+dGZ0ID0gMTsgLyogVHgg RklGTyB0aHJlc2hvbGQgKi8KLQlubWstPnJmdCA9IDg7IC8qIFJ4IEZJRk8gdGhyZXNob2xkICov Ci0Jbm1rLT50aW1lb3V0ID0gMjAwOyAvKiBTbGF2ZSByZXNwb25zZSB0aW1lb3V0KG1zKSAqLwor CQlwcml2LT5zbSA9IEkyQ19GUkVRX01PREVfRkFTVDsKKwlwcml2LT50ZnQgPSAxOyAvKiBUeCBG SUZPIHRocmVzaG9sZCAqLworCXByaXYtPnJmdCA9IDg7IC8qIFJ4IEZJRk8gdGhyZXNob2xkICov CisJcHJpdi0+dGltZW91dCA9IDIwMDsgLyogU2xhdmUgcmVzcG9uc2UgdGltZW91dChtcykgKi8K IH0KIAogc3RhdGljIGludCBubWtfaTJjX3Byb2JlKHN0cnVjdCBhbWJhX2RldmljZSAqYWRldiwg Y29uc3Qgc3RydWN0IGFtYmFfaWQgKmlkKQogewogCWludCByZXQgPSAwOworCXN0cnVjdCBubWtf aTJjX2RldiAqcHJpdjsKIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gYWRldi0+ZGV2Lm9mX25v ZGU7Ci0Jc3RydWN0IG5ta19pMmNfZGV2CSpkZXY7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJmFk ZXYtPmRldjsKIAlzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXA7CiAJc3RydWN0IGkyY192ZW5kb3Jf ZGF0YSAqdmVuZG9yID0gaWQtPmRhdGE7CiAJdTMyIG1heF9maWZvX3RocmVzaG9sZCA9ICh2ZW5k b3ItPmZpZm9kZXB0aCAvIDIpIC0gMTsKIAotCWRldiA9IGRldm1fa3phbGxvYygmYWRldi0+ZGV2 LCBzaXplb2YoKmRldiksIEdGUF9LRVJORUwpOwotCWlmICghZGV2KQorCXByaXYgPSBkZXZtX2t6 YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXByaXYpCiAJCXJl dHVybiAtRU5PTUVNOwogCi0JZGV2LT52ZW5kb3IgPSB2ZW5kb3I7Ci0JZGV2LT5hZGV2ID0gYWRl djsKLQlubWtfaTJjX29mX3Byb2JlKG5wLCBkZXYpOworCXByaXYtPnZlbmRvciA9IHZlbmRvcjsK Kwlwcml2LT5hZGV2ID0gYWRldjsKKwlubWtfaTJjX29mX3Byb2JlKG5wLCBwcml2KTsKIAotCWlm IChkZXYtPnRmdCA+IG1heF9maWZvX3RocmVzaG9sZCkgewotCQlkZXZfd2FybigmYWRldi0+ZGV2 LCAicmVxdWVzdGVkIFRYIEZJRk8gdGhyZXNob2xkICV1LCBhZGp1c3RlZCBkb3duIHRvICV1XG4i LAotCQkJIGRldi0+dGZ0LCBtYXhfZmlmb190aHJlc2hvbGQpOwotCQlkZXYtPnRmdCA9IG1heF9m aWZvX3RocmVzaG9sZDsKKwlpZiAocHJpdi0+dGZ0ID4gbWF4X2ZpZm9fdGhyZXNob2xkKSB7CisJ CWRldl93YXJuKGRldiwgInJlcXVlc3RlZCBUWCBGSUZPIHRocmVzaG9sZCAldSwgYWRqdXN0ZWQg ZG93biB0byAldVxuIiwKKwkJCSBwcml2LT50ZnQsIG1heF9maWZvX3RocmVzaG9sZCk7CisJCXBy aXYtPnRmdCA9IG1heF9maWZvX3RocmVzaG9sZDsKIAl9CiAKLQlpZiAoZGV2LT5yZnQgPiBtYXhf Zmlmb190aHJlc2hvbGQpIHsKLQkJZGV2X3dhcm4oJmFkZXYtPmRldiwgInJlcXVlc3RlZCBSWCBG SUZPIHRocmVzaG9sZCAldSwgYWRqdXN0ZWQgZG93biB0byAldVxuIiwKLQkJCWRldi0+cmZ0LCBt YXhfZmlmb190aHJlc2hvbGQpOwotCQlkZXYtPnJmdCA9IG1heF9maWZvX3RocmVzaG9sZDsKKwlp ZiAocHJpdi0+cmZ0ID4gbWF4X2ZpZm9fdGhyZXNob2xkKSB7CisJCWRldl93YXJuKGRldiwgInJl cXVlc3RlZCBSWCBGSUZPIHRocmVzaG9sZCAldSwgYWRqdXN0ZWQgZG93biB0byAldVxuIiwKKwkJ CSBwcml2LT5yZnQsIG1heF9maWZvX3RocmVzaG9sZCk7CisJCXByaXYtPnJmdCA9IG1heF9maWZv X3RocmVzaG9sZDsKIAl9CiAKLQlhbWJhX3NldF9kcnZkYXRhKGFkZXYsIGRldik7CisJYW1iYV9z ZXRfZHJ2ZGF0YShhZGV2LCBwcml2KTsKIAotCWRldi0+dmlydGJhc2UgPSBkZXZtX2lvcmVtYXAo JmFkZXYtPmRldiwgYWRldi0+cmVzLnN0YXJ0LAotCQkJCXJlc291cmNlX3NpemUoJmFkZXYtPnJl cykpOwotCWlmICghZGV2LT52aXJ0YmFzZSkKKwlwcml2LT52aXJ0YmFzZSA9IGRldm1faW9yZW1h cChkZXYsIGFkZXYtPnJlcy5zdGFydCwKKwkJCQkgICAgICByZXNvdXJjZV9zaXplKCZhZGV2LT5y ZXMpKTsKKwlpZiAoIXByaXYtPnZpcnRiYXNlKQogCQlyZXR1cm4gLUVOT01FTTsKIAotCWRldi0+ aXJxID0gYWRldi0+aXJxWzBdOwotCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoJmFkZXYtPmRldiwg ZGV2LT5pcnEsIGkyY19pcnFfaGFuZGxlciwgMCwKLQkJCQlEUklWRVJfTkFNRSwgZGV2KTsKKwlw cml2LT5pcnEgPSBhZGV2LT5pcnFbMF07CisJcmV0ID0gZGV2bV9yZXF1ZXN0X2lycShkZXYsIHBy aXYtPmlycSwgaTJjX2lycV9oYW5kbGVyLCAwLAorCQkJICAgICAgIERSSVZFUl9OQU1FLCBwcml2 KTsKIAlpZiAocmV0KQotCQlyZXR1cm4gZGV2X2Vycl9wcm9iZSgmYWRldi0+ZGV2LCByZXQsCi0J CQkJICAgICAiY2Fubm90IGNsYWltIHRoZSBpcnEgJWRcbiIsIGRldi0+aXJxKTsKKwkJcmV0dXJu IGRldl9lcnJfcHJvYmUoZGV2LCByZXQsCisJCQkJICAgICAiY2Fubm90IGNsYWltIHRoZSBpcnEg JWRcbiIsIHByaXYtPmlycSk7CiAKLQlkZXYtPmNsayA9IGRldm1fY2xrX2dldF9lbmFibGVkKCZh ZGV2LT5kZXYsIE5VTEwpOwotCWlmIChJU19FUlIoZGV2LT5jbGspKQotCQlyZXR1cm4gZGV2X2Vy cl9wcm9iZSgmYWRldi0+ZGV2LCBQVFJfRVJSKGRldi0+Y2xrKSwKKwlwcml2LT5jbGsgPSBkZXZt X2Nsa19nZXRfZW5hYmxlZChkZXYsIE5VTEwpOworCWlmIChJU19FUlIocHJpdi0+Y2xrKSkKKwkJ cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHByaXYtPmNsayksCiAJCQkJICAgICAi Y291bGQgZW5hYmxlIGkyYyBjbG9ja1xuIik7CiAKLQlpbml0X2h3KGRldik7CisJaW5pdF9odyhw cml2KTsKIAotCWFkYXAgPSAmZGV2LT5hZGFwOworCWFkYXAgPSAmcHJpdi0+YWRhcDsKIAlhZGFw LT5kZXYub2Zfbm9kZSA9IG5wOwotCWFkYXAtPmRldi5wYXJlbnQgPSAmYWRldi0+ZGV2OworCWFk YXAtPmRldi5wYXJlbnQgPSBkZXY7CiAJYWRhcC0+b3duZXIgPSBUSElTX01PRFVMRTsKIAlhZGFw LT5jbGFzcyA9IEkyQ19DTEFTU19ERVBSRUNBVEVEOwogCWFkYXAtPmFsZ28gPSAmbm1rX2kyY19h bGdvOwotCWFkYXAtPnRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKGRldi0+dGltZW91dCk7CisJ YWRhcC0+dGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXMocHJpdi0+dGltZW91dCk7CiAJc25wcmlu dGYoYWRhcC0+bmFtZSwgc2l6ZW9mKGFkYXAtPm5hbWUpLAogCQkgIk5vbWFkaWsgSTJDIGF0ICVw UiIsICZhZGV2LT5yZXMpOwogCi0JaTJjX3NldF9hZGFwZGF0YShhZGFwLCBkZXYpOworCWkyY19z ZXRfYWRhcGRhdGEoYWRhcCwgcHJpdik7CiAKLQlkZXZfaW5mbygmYWRldi0+ZGV2LAorCWRldl9p bmZvKGRldiwKIAkJICJpbml0aWFsaXplICVzIG9uIHZpcnR1YWwgYmFzZSAlcFxuIiwKLQkJIGFk YXAtPm5hbWUsIGRldi0+dmlydGJhc2UpOworCQkgYWRhcC0+bmFtZSwgcHJpdi0+dmlydGJhc2Up OwogCiAJcmV0ID0gaTJjX2FkZF9hZGFwdGVyKGFkYXApOwogCWlmIChyZXQpCiAJCXJldHVybiBy ZXQ7CiAKLQlwbV9ydW50aW1lX3B1dCgmYWRldi0+ZGV2KTsKKwlwbV9ydW50aW1lX3B1dChkZXYp OwogCiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkIG5ta19pMmNfcmVtb3ZlKHN0cnVjdCBh bWJhX2RldmljZSAqYWRldikKIHsKLQlzdHJ1Y3Qgbm1rX2kyY19kZXYgKmRldiA9IGFtYmFfZ2V0 X2RydmRhdGEoYWRldik7CisJc3RydWN0IG5ta19pMmNfZGV2ICpwcml2ID0gYW1iYV9nZXRfZHJ2 ZGF0YShhZGV2KTsKIAotCWkyY19kZWxfYWRhcHRlcigmZGV2LT5hZGFwKTsKLQlmbHVzaF9pMmNf ZmlmbyhkZXYpOwotCWRpc2FibGVfYWxsX2ludGVycnVwdHMoZGV2KTsKLQljbGVhcl9hbGxfaW50 ZXJydXB0cyhkZXYpOworCWkyY19kZWxfYWRhcHRlcigmcHJpdi0+YWRhcCk7CisJZmx1c2hfaTJj X2ZpZm8ocHJpdik7CisJZGlzYWJsZV9hbGxfaW50ZXJydXB0cyhwcml2KTsKKwljbGVhcl9hbGxf aW50ZXJydXB0cyhwcml2KTsKIAkvKiBkaXNhYmxlIHRoZSBjb250cm9sbGVyICovCi0JaTJjX2Ns cl9iaXQoZGV2LT52aXJ0YmFzZSArIEkyQ19DUiwgSTJDX0NSX1BFKTsKKwlpMmNfY2xyX2JpdChw cml2LT52aXJ0YmFzZSArIEkyQ19DUiwgSTJDX0NSX1BFKTsKIH0KIAogc3RhdGljIHN0cnVjdCBp MmNfdmVuZG9yX2RhdGEgdmVuZG9yX3N0bjg4MTUgPSB7CgotLSAKMi40NC4wCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBt YWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=