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 499D1C48BC4 for ; Thu, 15 Feb 2024 16:54:32 +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=eSPUotZ2Udkr8L7ltKKpHn7NLGEzA9+LE/ftQ0H7UiM=; b=TntayeqBVh0SZa t07t2ch5CyrM+psbbqVoxPTVu8TrYpfyDtgQSOBGht33bSI4M339xGuYwfRIgybmJzPo+3vp3OynT MIMOQNUKXKwBrcRvqvWMNasg9l63uukBluEISBHliYMmaYz94dI0Y/bVdKw7NqCKj7UwWfLDouaHA It50mMmXj0WorVCq1Mc2+QlRppbxIGMc3qufdHiBvFhSH/w3Yxk1HQu07HlLCThNQhYpdCK2rH6AZ ulQs22RObQODoZRGkTglX5GJU+/zCT4wjHo3ZhlgZ3mfxkbO+3zgkD+u/wwjireKwRFZhSHeLjq4o 043z5eSao61DYzS4RXlA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1raf01-0000000H4AD-1zAd; Thu, 15 Feb 2024 16:54:13 +0000 Received: from relay4-d.mail.gandi.net ([2001:4b98:dc4:8::224]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1raeyU-0000000H3Em-3vqg for linux-arm-kernel@lists.infradead.org; Thu, 15 Feb 2024 16:52:47 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 80490E001A; Thu, 15 Feb 2024 16:52:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1708015956; 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=hyH7SfeXxPg/LI+DuoNNLyUBD7ArBeMQtzlwIGbNgAw=; b=XcCCPME7Zq+RNpxDFty9Koiyfd/VyLwkXa2xaZWAF7LABHuKTpaUT9djezrpdaLPGUldFz Px4FJzAlrIXKcv2J78oYomU8lHBUO/EqkUoyJn2cxDw3SHrrAoqdb/cmaxYMH7cC45ufN/ THGlJr/QqYisQg9xUFsJiMkOdKFfLv6aa0TDzftq1gYFf9fBYuuyrfTUhQehOCdgbXiXTl 5x37KB6fgHPEWDLZ2tGVEvWYQYu/1BXd0x1UTvxAKR3phPR5AaTZNmJjGMWmw+aeou1NEi vVpAisTkVWImhzfB6CiZowxTo3jmH00Y4/o0LxttZYVf/wH8NthFdSLVfOwxMA== From: =?utf-8?q?Th=C3=A9o_Lebrun?= Date: Thu, 15 Feb 2024 17:52:11 +0100 Subject: [PATCH 04/13] i2c: nomadik: rename private struct pointers from dev to priv MIME-Version: 1.0 Message-Id: <20240215-mbly-i2c-v1-4-19a336e91dca@bootlin.com> References: <20240215-mbly-i2c-v1-0-19a336e91dca@bootlin.com> In-Reply-To: <20240215-mbly-i2c-v1-0-19a336e91dca@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.12.4 X-GND-Sasl: theo.lebrun@bootlin.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240215_085239_391153_F26242C9 X-CRM114-Status: GOOD ( 26.02 ) 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 ciAocHJldmlvdXNseTogZGV2LCBubWssIG5ta19pMmMpLgoKU2lnbmVkLW9mZi1ieTogVGjDqW8g TGVicnVuIDx0aGVvLmxlYnJ1bkBib290bGluLmNvbT4KLS0tCiBkcml2ZXJzL2kyYy9idXNzZXMv aTJjLW5vbWFkaWsuYyB8IDQyOCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t LS0KIDEgZmlsZSBjaGFuZ2VkLCAyMTQgaW5zZXJ0aW9ucygrKSwgMjE0IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtbm9tYWRpay5jIGIvZHJpdmVycy9p MmMvYnVzc2VzL2kyYy1ub21hZGlrLmMKaW5kZXggYjEwNTc0ZDQyYjdhLi5jZDUxMWM4ODRmOTkg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtbm9tYWRpay5jCisrKyBiL2RyaXZl cnMvaTJjL2J1c3Nlcy9pMmMtbm9tYWRpay5jCkBAIC0yMDYsMTIgKzIwNiwxMiBAQCBzdGF0aWMg aW5saW5lIHZvaWQgaTJjX2Nscl9iaXQodm9pZCBfX2lvbWVtICpyZWcsIHUzMiBtYXNrKQogCiAv KioKICAqIGZsdXNoX2kyY19maWZvKCkgLSBUaGlzIGZ1bmN0aW9uIGZsdXNoZXMgdGhlIEkyQyBG SUZPCi0gKiBAZGV2OiBwcml2YXRlIGRhdGEgb2YgSTJDIERyaXZlcgorICogQHByaXY6IHByaXZh dGUgZGF0YSBvZiBJMkMgRHJpdmVyCiAgKgogICogVGhpcyBmdW5jdGlvbiBmbHVzaGVzIHRoZSBJ MkMgVHggYW5kIFJ4IEZJRk9zLiBJdCByZXR1cm5zCiAgKiAwIG9uIHN1Y2Nlc3NmdWwgZmx1c2hp bmcgb2YgRklGTwogICovCi1zdGF0aWMgaW50IGZsdXNoX2kyY19maWZvKHN0cnVjdCBubWtfaTJj X2RldiAqZGV2KQorc3RhdGljIGludCBmbHVzaF9pMmNfZmlmbyhzdHJ1Y3Qgbm1rX2kyY19kZXYg KnByaXYpCiB7CiAjZGVmaW5lIExPT1BfQVRURU1QVFMgMTAKIAlpbnQgaTsKQEAgLTIyNCwxOSAr MjI0LDE5IEBAIHN0YXRpYyBpbnQgZmx1c2hfaTJjX2ZpZm8oc3RydWN0IG5ta19pMmNfZGV2ICpk ZXYpCiAJICogYml0cywgdW50aWwgdGhlbiBubyBvbmUgbXVzdCBhY2Nlc3MgVHgsIFJ4IEZJRk8g YW5kCiAJICogc2hvdWxkIHBvbGwgb24gdGhlc2UgYml0cyB3YWl0aW5nIGZvciB0aGUgY29tcGxl dGlvbi4KIAkgKi8KLQl3cml0ZWwoKEkyQ19DUl9GVFggfCBJMkNfQ1JfRlJYKSwgZGV2LT52aXJ0 YmFzZSArIEkyQ19DUik7CisJd3JpdGVsKChJMkNfQ1JfRlRYIHwgSTJDX0NSX0ZSWCksIHByaXYt PnZpcnRiYXNlICsgSTJDX0NSKTsKIAogCWZvciAoaSA9IDA7IGkgPCBMT09QX0FUVEVNUFRTOyBp KyspIHsKLQkJdGltZW91dCA9IGppZmZpZXMgKyBkZXYtPmFkYXAudGltZW91dDsKKwkJdGltZW91 dCA9IGppZmZpZXMgKyBwcml2LT5hZGFwLnRpbWVvdXQ7CiAKIAkJd2hpbGUgKCF0aW1lX2FmdGVy KGppZmZpZXMsIHRpbWVvdXQpKSB7Ci0JCQlpZiAoKHJlYWRsKGRldi0+dmlydGJhc2UgKyBJMkNf Q1IpICYKKwkJCWlmICgocmVhZGwocHJpdi0+dmlydGJhc2UgKyBJMkNfQ1IpICYKIAkJCQkoSTJD X0NSX0ZUWCB8IEkyQ19DUl9GUlgpKSA9PSAwKQotCQkJCQlyZXR1cm4gMDsKKwkJCQlyZXR1cm4g MDsKIAkJfQogCX0KIAotCWRldl9lcnIoJmRldi0+YWRldi0+ZGV2LAorCWRldl9lcnIoJnByaXYt PmFkZXYtPmRldiwKIAkJImZsdXNoaW5nIG9wZXJhdGlvbiB0aW1lZCBvdXQgZ2l2aW5nIHVwIGFm dGVyICVkIGF0dGVtcHRzIiwKIAkJTE9PUF9BVFRFTVBUUyk7CiAKQEAgLTI0NSw0NSArMjQ1LDQ1 IEBAIHN0YXRpYyBpbnQgZmx1c2hfaTJjX2ZpZm8oc3RydWN0IG5ta19pMmNfZGV2ICpkZXYpCiAK IC8qKgogICogZGlzYWJsZV9hbGxfaW50ZXJydXB0cygpIC0gRGlzYWJsZSBhbGwgaW50ZXJydXB0 cyBvZiB0aGlzIEkyYyBCdXMKLSAqIEBkZXY6IHByaXZhdGUgZGF0YSBvZiBJMkMgRHJpdmVyCisg KiBAcHJpdjogcHJpdmF0ZSBkYXRhIG9mIEkyQyBEcml2ZXIKICAqLwotc3RhdGljIHZvaWQgZGlz YWJsZV9hbGxfaW50ZXJydXB0cyhzdHJ1Y3Qgbm1rX2kyY19kZXYgKmRldikKK3N0YXRpYyB2b2lk IGRpc2FibGVfYWxsX2ludGVycnVwdHMoc3RydWN0IG5ta19pMmNfZGV2ICpwcml2KQogewogCXUz MiBtYXNrID0gSVJRX01BU0soMCk7Ci0Jd3JpdGVsKG1hc2ssIGRldi0+dmlydGJhc2UgKyBJMkNf SU1TQ1IpOworCXdyaXRlbChtYXNrLCBwcml2LT52aXJ0YmFzZSArIEkyQ19JTVNDUik7CiB9CiAK IC8qKgogICogY2xlYXJfYWxsX2ludGVycnVwdHMoKSAtIENsZWFyIGFsbCBpbnRlcnJ1cHRzIG9m IEkyQyBDb250cm9sbGVyCi0gKiBAZGV2OiBwcml2YXRlIGRhdGEgb2YgSTJDIERyaXZlcgorICog QHByaXY6IHByaXZhdGUgZGF0YSBvZiBJMkMgRHJpdmVyCiAgKi8KLXN0YXRpYyB2b2lkIGNsZWFy X2FsbF9pbnRlcnJ1cHRzKHN0cnVjdCBubWtfaTJjX2RldiAqZGV2KQorc3RhdGljIHZvaWQgY2xl YXJfYWxsX2ludGVycnVwdHMoc3RydWN0IG5ta19pMmNfZGV2ICpwcml2KQogewogCXUzMiBtYXNr OwogCW1hc2sgPSBJUlFfTUFTSyhJMkNfQ0xFQVJfQUxMX0lOVFMpOwotCXdyaXRlbChtYXNrLCBk ZXYtPnZpcnRiYXNlICsgSTJDX0lDUik7CisJd3JpdGVsKG1hc2ssIHByaXYtPnZpcnRiYXNlICsg STJDX0lDUik7CiB9CiAKIC8qKgogICogaW5pdF9odygpIC0gaW5pdGlhbGl6ZSB0aGUgSTJDIGhh cmR3YXJlCi0gKiBAZGV2OiBwcml2YXRlIGRhdGEgb2YgSTJDIERyaXZlcgorICogQHByaXY6IHBy aXZhdGUgZGF0YSBvZiBJMkMgRHJpdmVyCiAgKi8KLXN0YXRpYyBpbnQgaW5pdF9odyhzdHJ1Y3Qg bm1rX2kyY19kZXYgKmRldikKK3N0YXRpYyBpbnQgaW5pdF9odyhzdHJ1Y3Qgbm1rX2kyY19kZXYg KnByaXYpCiB7CiAJaW50IHN0YXQ7CiAKLQlzdGF0ID0gZmx1c2hfaTJjX2ZpZm8oZGV2KTsKKwlz dGF0ID0gZmx1c2hfaTJjX2ZpZm8ocHJpdik7CiAJaWYgKHN0YXQpCiAJCWdvdG8gZXhpdDsKIAog CS8qIGRpc2FibGUgdGhlIGNvbnRyb2xsZXIgKi8KLQlpMmNfY2xyX2JpdChkZXYtPnZpcnRiYXNl ICsgSTJDX0NSLCBJMkNfQ1JfUEUpOworCWkyY19jbHJfYml0KHByaXYtPnZpcnRiYXNlICsgSTJD X0NSLCBJMkNfQ1JfUEUpOwogCi0JZGlzYWJsZV9hbGxfaW50ZXJydXB0cyhkZXYpOworCWRpc2Fi bGVfYWxsX2ludGVycnVwdHMocHJpdik7CiAKLQljbGVhcl9hbGxfaW50ZXJydXB0cyhkZXYpOwor CWNsZWFyX2FsbF9pbnRlcnJ1cHRzKHByaXYpOwogCi0JZGV2LT5jbGkub3BlcmF0aW9uID0gSTJD X05PX09QRVJBVElPTjsKKwlwcml2LT5jbGkub3BlcmF0aW9uID0gSTJDX05PX09QRVJBVElPTjsK IAogZXhpdDoKIAlyZXR1cm4gc3RhdDsKQEAgLTI5NCwxNSArMjk0LDE1IEBAIHN0YXRpYyBpbnQg aW5pdF9odyhzdHJ1Y3Qgbm1rX2kyY19kZXYgKmRldikKIAogLyoqCiAgKiBsb2FkX2kyY19tY3Jf cmVnKCkgLSBsb2FkIHRoZSBNQ1IgcmVnaXN0ZXIKLSAqIEBkZXY6IHByaXZhdGUgZGF0YSBvZiBj b250cm9sbGVyCisgKiBAcHJpdjogcHJpdmF0ZSBkYXRhIG9mIGNvbnRyb2xsZXIKICAqIEBmbGFn czogbWVzc2FnZSBmbGFncwogICovCi1zdGF0aWMgdTMyIGxvYWRfaTJjX21jcl9yZWcoc3RydWN0 IG5ta19pMmNfZGV2ICpkZXYsIHUxNiBmbGFncykKK3N0YXRpYyB1MzIgbG9hZF9pMmNfbWNyX3Jl ZyhzdHJ1Y3Qgbm1rX2kyY19kZXYgKnByaXYsIHUxNiBmbGFncykKIHsKIAl1MzIgbWNyID0gMDsK IAl1bnNpZ25lZCBzaG9ydCBzbGF2ZV9hZHJfM21zYl9iaXRzOwogCi0JbWNyIHw9IEdFTl9NQVNL KGRldi0+Y2xpLnNsYXZlX2FkciwgSTJDX01DUl9BNywgMSk7CisJbWNyIHw9IEdFTl9NQVNLKHBy aXYtPmNsaS5zbGF2ZV9hZHIsIEkyQ19NQ1JfQTcsIDEpOwogCiAJaWYgKHVubGlrZWx5KGZsYWdz ICYgSTJDX01fVEVOKSkgewogCQkvKiAxMC1iaXQgYWRkcmVzcyB0cmFuc2FjdGlvbiAqLwpAQCAt MzEzLDcgKzMxMyw3IEBAIHN0YXRpYyB1MzIgbG9hZF9pMmNfbWNyX3JlZyhzdHJ1Y3Qgbm1rX2ky Y19kZXYgKmRldiwgdTE2IGZsYWdzKQogCQkgKiB0aGUgZXh0ZW5zaW9uIChNU0IgYml0cykgb2Yg dGhlIDcgYml0IGFkZHJlc3MgbG9hZGVkCiAJCSAqIGluIEE3CiAJCSAqLwotCQlzbGF2ZV9hZHJf M21zYl9iaXRzID0gKGRldi0+Y2xpLnNsYXZlX2FkciA+PiA3KSAmIDB4NzsKKwkJc2xhdmVfYWRy XzNtc2JfYml0cyA9IChwcml2LT5jbGkuc2xhdmVfYWRyID4+IDcpICYgMHg3OwogCiAJCW1jciB8 PSBHRU5fTUFTSyhzbGF2ZV9hZHJfM21zYl9iaXRzLCBJMkNfTUNSX0VBMTAsIDgpOwogCX0gZWxz ZSB7CkBAIC0zMjUsNDAgKzMyNSw0MCBAQCBzdGF0aWMgdTMyIGxvYWRfaTJjX21jcl9yZWcoc3Ry dWN0IG5ta19pMmNfZGV2ICpkZXYsIHUxNiBmbGFncykKIAltY3IgfD0gR0VOX01BU0soMCwgSTJD X01DUl9TQiwgMTEpOwogCiAJLyogY2hlY2sgdGhlIG9wZXJhdGlvbiwgbWFzdGVyIHJlYWQvd3Jp dGU/ICovCi0JaWYgKGRldi0+Y2xpLm9wZXJhdGlvbiA9PSBJMkNfV1JJVEUpCisJaWYgKHByaXYt PmNsaS5vcGVyYXRpb24gPT0gSTJDX1dSSVRFKQogCQltY3IgfD0gR0VOX01BU0soSTJDX1dSSVRF LCBJMkNfTUNSX09QLCAwKTsKIAllbHNlCiAJCW1jciB8PSBHRU5fTUFTSyhJMkNfUkVBRCwgSTJD X01DUl9PUCwgMCk7CiAKIAkvKiBzdG9wIG9yIHJlcGVhdGVkIHN0YXJ0PyAqLwotCWlmIChkZXYt PnN0b3ApCisJaWYgKHByaXYtPnN0b3ApCiAJCW1jciB8PSBHRU5fTUFTSygxLCBJMkNfTUNSX1NU T1AsIDE0KTsKIAllbHNlCiAJCW1jciAmPSB+KEdFTl9NQVNLKDEsIEkyQ19NQ1JfU1RPUCwgMTQp KTsKIAotCW1jciB8PSBHRU5fTUFTSyhkZXYtPmNsaS5jb3VudCwgSTJDX01DUl9MRU5HVEgsIDE1 KTsKKwltY3IgfD0gR0VOX01BU0socHJpdi0+Y2xpLmNvdW50LCBJMkNfTUNSX0xFTkdUSCwgMTUp OwogCiAJcmV0dXJuIG1jcjsKIH0KIAogLyoqCiAgKiBzZXR1cF9pMmNfY29udHJvbGxlcigpIC0g c2V0dXAgdGhlIGNvbnRyb2xsZXIKLSAqIEBkZXY6IHByaXZhdGUgZGF0YSBvZiBjb250cm9sbGVy CisgKiBAcHJpdjogcHJpdmF0ZSBkYXRhIG9mIGNvbnRyb2xsZXIKICAqLwotc3RhdGljIHZvaWQg c2V0dXBfaTJjX2NvbnRyb2xsZXIoc3RydWN0IG5ta19pMmNfZGV2ICpkZXYpCitzdGF0aWMgdm9p ZCBzZXR1cF9pMmNfY29udHJvbGxlcihzdHJ1Y3Qgbm1rX2kyY19kZXYgKnByaXYpCiB7CiAJdTMy IGJyY3IxLCBicmNyMjsKIAl1MzIgaTJjX2NsaywgZGl2OwogCXUzMiBuczsKIAl1MTYgc2xzdTsK IAotCXdyaXRlbCgweDAsIGRldi0+dmlydGJhc2UgKyBJMkNfQ1IpOwotCXdyaXRlbCgweDAsIGRl di0+dmlydGJhc2UgKyBJMkNfSFNNQ1IpOwotCXdyaXRlbCgweDAsIGRldi0+dmlydGJhc2UgKyBJ MkNfVEZUUik7Ci0Jd3JpdGVsKDB4MCwgZGV2LT52aXJ0YmFzZSArIEkyQ19SRlRSKTsKLQl3cml0 ZWwoMHgwLCBkZXYtPnZpcnRiYXNlICsgSTJDX0RNQVIpOworCXdyaXRlbCgweDAsIHByaXYtPnZp cnRiYXNlICsgSTJDX0NSKTsKKwl3cml0ZWwoMHgwLCBwcml2LT52aXJ0YmFzZSArIEkyQ19IU01D Uik7CisJd3JpdGVsKDB4MCwgcHJpdi0+dmlydGJhc2UgKyBJMkNfVEZUUik7CisJd3JpdGVsKDB4 MCwgcHJpdi0+dmlydGJhc2UgKyBJMkNfUkZUUik7CisJd3JpdGVsKDB4MCwgcHJpdi0+dmlydGJh c2UgKyBJMkNfRE1BUik7CiAKLQlpMmNfY2xrID0gY2xrX2dldF9yYXRlKGRldi0+Y2xrKTsKKwlp MmNfY2xrID0gY2xrX2dldF9yYXRlKHByaXYtPmNsayk7CiAKIAkvKgogCSAqIHNldCB0aGUgc2xz dToKQEAgLTM3Myw3ICszNzMsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9pMmNfY29udHJvbGxlcihz dHJ1Y3Qgbm1rX2kyY19kZXYgKmRldikKIAkgKiBzbHN1ID0gY3ljbGVzIC8gKDEwMDAwMDAwMDAg LyBmKSArIDEKIAkgKi8KIAlucyA9IERJVl9ST1VORF9VUF9VTEwoMTAwMDAwMDAwMFVMTCwgaTJj X2Nsayk7Ci0Jc3dpdGNoIChkZXYtPnNtKSB7CisJc3dpdGNoIChwcml2LT5zbSkgewogCWNhc2Ug STJDX0ZSRVFfTU9ERV9GQVNUOgogCWNhc2UgSTJDX0ZSRVFfTU9ERV9GQVNUX1BMVVM6CiAJCXNs c3UgPSBESVZfUk9VTkRfVVAoMTAwLCBucyk7IC8qIEZhc3QgKi8KQEAgLTM4OCwxNSArMzg4LDE1 IEBAIHN0YXRpYyB2b2lkIHNldHVwX2kyY19jb250cm9sbGVyKHN0cnVjdCBubWtfaTJjX2RldiAq ZGV2KQogCX0KIAlzbHN1ICs9IDE7CiAKLQlkZXZfZGJnKCZkZXYtPmFkZXYtPmRldiwgImNhbGN1 bGF0ZWQgU0xTVSA9ICUwNHhcbiIsIHNsc3UpOwotCXdyaXRlbChzbHN1IDw8IDE2LCBkZXYtPnZp cnRiYXNlICsgSTJDX1NDUik7CisJZGV2X2RiZygmcHJpdi0+YWRldi0+ZGV2LCAiY2FsY3VsYXRl ZCBTTFNVID0gJTA0eFxuIiwgc2xzdSk7CisJd3JpdGVsKHNsc3UgPDwgMTYsIHByaXYtPnZpcnRi YXNlICsgSTJDX1NDUik7CiAKIAkvKgogCSAqIFRoZSBzcGVjIHNheXMsIGluIGNhc2Ugb2Ygc3Rk LiBtb2RlIHRoZSBkaXZpZGVyIGlzCiAJICogMiB3aGVyZWFzIGl0IGlzIDMgZm9yIGZhc3QgYW5k IGZhc3RwbHVzIG1vZGUgb2YKIAkgKiBvcGVyYXRpb24uIFRPRE8gLSBoaWdoIHNwZWVkIHN1cHBv cnQuCiAJICovCi0JZGl2ID0gKGRldi0+Y2xrX2ZyZXEgPiBJMkNfTUFYX1NUQU5EQVJEX01PREVf RlJFUSkgPyAzIDogMjsKKwlkaXYgPSAocHJpdi0+Y2xrX2ZyZXEgPiBJMkNfTUFYX1NUQU5EQVJE X01PREVfRlJFUSkgPyAzIDogMjsKIAogCS8qCiAJICogZ2VuZXJhdGUgdGhlIG1hc2sgZm9yIGJh dWQgcmF0ZSBjb3VudGVycy4gVGhlIGNvbnRyb2xsZXIKQEAgLTQwNiwxMCArNDA2LDEwIEBAIHN0 YXRpYyB2b2lkIHNldHVwX2kyY19jb250cm9sbGVyKHN0cnVjdCBubWtfaTJjX2RldiAqZGV2KQog CSAqIHNvIHNldCBicmNyMSB0byAwLgogCSAqLwogCWJyY3IxID0gMCA8PCAxNjsKLQlicmNyMiA9 IChpMmNfY2xrLyhkZXYtPmNsa19mcmVxICogZGl2KSkgJiAweGZmZmY7CisJYnJjcjIgPSAoaTJj X2NsayAvIChwcml2LT5jbGtfZnJlcSAqIGRpdikpICYgMHhmZmZmOwogCiAJLyogc2V0IHRoZSBi YXVkIHJhdGUgY291bnRlciByZWdpc3RlciAqLwotCXdyaXRlbCgoYnJjcjEgfCBicmNyMiksIGRl di0+dmlydGJhc2UgKyBJMkNfQlJDUik7CisJd3JpdGVsKChicmNyMSB8IGJyY3IyKSwgcHJpdi0+ dmlydGJhc2UgKyBJMkNfQlJDUik7CiAKIAkvKgogCSAqIHNldCB0aGUgc3BlZWQgbW9kZS4gQ3Vy cmVudGx5IHdlIHN1cHBvcnQKQEAgLTQxNywxMjUgKzQxNywxMjQgQEAgc3RhdGljIHZvaWQgc2V0 dXBfaTJjX2NvbnRyb2xsZXIoc3RydWN0IG5ta19pMmNfZGV2ICpkZXYpCiAJICogVE9ETyAtIHN1 cHBvcnQgZm9yIGZhc3QgbW9kZSBwbHVzICh1cCB0byAxTWIvcykKIAkgKiBhbmQgaGlnaCBzcGVl ZCAodXAgdG8gMy40IE1iL3MpCiAJICovCi0JaWYgKGRldi0+c20gPiBJMkNfRlJFUV9NT0RFX0ZB U1QpIHsKLQkJZGV2X2VycigmZGV2LT5hZGV2LT5kZXYsCisJaWYgKHByaXYtPnNtID4gSTJDX0ZS RVFfTU9ERV9GQVNUKSB7CisJCWRldl9lcnIoJnByaXYtPmFkZXYtPmRldiwKIAkJCSJkbyBub3Qg c3VwcG9ydCB0aGlzIG1vZGUgZGVmYXVsdGluZyB0byBzdGQuIG1vZGVcbiIpOwogCQlicmNyMiA9 IGkyY19jbGsgLyAoSTJDX01BWF9TVEFOREFSRF9NT0RFX0ZSRVEgKiAyKSAmIDB4ZmZmZjsKLQkJ d3JpdGVsKChicmNyMSB8IGJyY3IyKSwgZGV2LT52aXJ0YmFzZSArIEkyQ19CUkNSKTsKKwkJd3Jp dGVsKChicmNyMSB8IGJyY3IyKSwgcHJpdi0+dmlydGJhc2UgKyBJMkNfQlJDUik7CiAJCXdyaXRl bChJMkNfRlJFUV9NT0RFX1NUQU5EQVJEIDw8IDQsCi0JCQkJZGV2LT52aXJ0YmFzZSArIEkyQ19D Uik7CisJCQkJcHJpdi0+dmlydGJhc2UgKyBJMkNfQ1IpOwogCX0KLQl3cml0ZWwoZGV2LT5zbSA8 PCA0LCBkZXYtPnZpcnRiYXNlICsgSTJDX0NSKTsKKwl3cml0ZWwocHJpdi0+c20gPDwgNCwgcHJp di0+dmlydGJhc2UgKyBJMkNfQ1IpOwogCiAJLyogc2V0IHRoZSBUeCBhbmQgUnggRklGTyB0aHJl c2hvbGQgKi8KLQl3cml0ZWwoZGV2LT50ZnQsIGRldi0+dmlydGJhc2UgKyBJMkNfVEZUUik7Ci0J d3JpdGVsKGRldi0+cmZ0LCBkZXYtPnZpcnRiYXNlICsgSTJDX1JGVFIpOworCXdyaXRlbChwcml2 LT50ZnQsIHByaXYtPnZpcnRiYXNlICsgSTJDX1RGVFIpOworCXdyaXRlbChwcml2LT5yZnQsIHBy aXYtPnZpcnRiYXNlICsgSTJDX1JGVFIpOwogfQogCiAvKioKICAqIHJlYWRfaTJjKCkgLSBSZWFk IGZyb20gSTJDIGNsaWVudCBkZXZpY2UKLSAqIEBkZXY6IHByaXZhdGUgZGF0YSBvZiBJMkMgRHJp dmVyCisgKiBAcHJpdjogcHJpdmF0ZSBkYXRhIG9mIEkyQyBEcml2ZXIKICAqIEBmbGFnczogbWVz c2FnZSBmbGFncwogICoKICAqIFRoaXMgZnVuY3Rpb24gcmVhZHMgZnJvbSBpMmMgY2xpZW50IGRl dmljZSB3aGVuIGNvbnRyb2xsZXIgaXMgaW4KICAqIG1hc3RlciBtb2RlLiBUaGVyZSBpcyBhIGNv bXBsZXRpb24gdGltZW91dC4gSWYgdGhlcmUgaXMgbm8gdHJhbnNmZXIKICAqIGJlZm9yZSB0aW1l b3V0IGVycm9yIGlzIHJldHVybmVkLgogICovCi1zdGF0aWMgaW50IHJlYWRfaTJjKHN0cnVjdCBu bWtfaTJjX2RldiAqZGV2LCB1MTYgZmxhZ3MpCitzdGF0aWMgaW50IHJlYWRfaTJjKHN0cnVjdCBu bWtfaTJjX2RldiAqcHJpdiwgdTE2IGZsYWdzKQogewogCWludCBzdGF0dXMgPSAwOwogCXUzMiBt Y3IsIGlycV9tYXNrOwogCXVuc2lnbmVkIGxvbmcgdGltZW91dDsKIAotCW1jciA9IGxvYWRfaTJj X21jcl9yZWcoZGV2LCBmbGFncyk7Ci0Jd3JpdGVsKG1jciwgZGV2LT52aXJ0YmFzZSArIEkyQ19N Q1IpOworCW1jciA9IGxvYWRfaTJjX21jcl9yZWcocHJpdiwgZmxhZ3MpOworCXdyaXRlbChtY3Is IHByaXYtPnZpcnRiYXNlICsgSTJDX01DUik7CiAKIAkvKiBsb2FkIHRoZSBjdXJyZW50IENSIHZh bHVlICovCi0Jd3JpdGVsKHJlYWRsKGRldi0+dmlydGJhc2UgKyBJMkNfQ1IpIHwgREVGQVVMVF9J MkNfUkVHX0NSLAotCQkJZGV2LT52aXJ0YmFzZSArIEkyQ19DUik7CisJd3JpdGVsKHJlYWRsKHBy aXYtPnZpcnRiYXNlICsgSTJDX0NSKSB8IERFRkFVTFRfSTJDX1JFR19DUiwKKwkgICAgICAgcHJp di0+dmlydGJhc2UgKyBJMkNfQ1IpOwogCiAJLyogZW5hYmxlIHRoZSBjb250cm9sbGVyICovCi0J aTJjX3NldF9iaXQoZGV2LT52aXJ0YmFzZSArIEkyQ19DUiwgSTJDX0NSX1BFKTsKKwlpMmNfc2V0 X2JpdChwcml2LT52aXJ0YmFzZSArIEkyQ19DUiwgSTJDX0NSX1BFKTsKIAotCWluaXRfY29tcGxl dGlvbigmZGV2LT54ZmVyX2NvbXBsZXRlKTsKKwlpbml0X2NvbXBsZXRpb24oJnByaXYtPnhmZXJf Y29tcGxldGUpOwogCiAJLyogZW5hYmxlIGludGVycnVwdHMgYnkgc2V0dGluZyB0aGUgbWFzayAq LwogCWlycV9tYXNrID0gKEkyQ19JVF9SWEZORiB8IEkyQ19JVF9SWEZGIHwKIAkJCUkyQ19JVF9N QUwgfCBJMkNfSVRfQkVSUik7CiAKLQlpZiAoZGV2LT5zdG9wIHx8ICFkZXYtPnZlbmRvci0+aGFz X210ZHdzKQorCWlmIChwcml2LT5zdG9wIHx8ICFwcml2LT52ZW5kb3ItPmhhc19tdGR3cykKIAkJ aXJxX21hc2sgfD0gSTJDX0lUX01URDsKIAllbHNlCiAJCWlycV9tYXNrIHw9IEkyQ19JVF9NVERX UzsKIAogCWlycV9tYXNrID0gSTJDX0NMRUFSX0FMTF9JTlRTICYgSVJRX01BU0soaXJxX21hc2sp OwogCi0Jd3JpdGVsKHJlYWRsKGRldi0+dmlydGJhc2UgKyBJMkNfSU1TQ1IpIHwgaXJxX21hc2ss Ci0JCQlkZXYtPnZpcnRiYXNlICsgSTJDX0lNU0NSKTsKKwl3cml0ZWwocmVhZGwocHJpdi0+dmly dGJhc2UgKyBJMkNfSU1TQ1IpIHwgaXJxX21hc2ssCisJICAgICAgIHByaXYtPnZpcnRiYXNlICsg STJDX0lNU0NSKTsKIAogCXRpbWVvdXQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX3RpbWVvdXQoCi0J CSZkZXYtPnhmZXJfY29tcGxldGUsIGRldi0+YWRhcC50aW1lb3V0KTsKKwkJJnByaXYtPnhmZXJf Y29tcGxldGUsIHByaXYtPmFkYXAudGltZW91dCk7CiAKIAlpZiAodGltZW91dCA9PSAwKSB7CiAJ CS8qIENvbnRyb2xsZXIgdGltZWQgb3V0ICovCi0JCWRldl9lcnIoJmRldi0+YWRldi0+ZGV2LCAi cmVhZCBmcm9tIHNsYXZlIDB4JXggdGltZWQgb3V0XG4iLAotCQkJCWRldi0+Y2xpLnNsYXZlX2Fk cik7CisJCWRldl9lcnIoJnByaXYtPmFkZXYtPmRldiwgInJlYWQgZnJvbSBzbGF2ZSAweCV4IHRp bWVkIG91dFxuIiwKKwkJCXByaXYtPmNsaS5zbGF2ZV9hZHIpOwogCQlzdGF0dXMgPSAtRVRJTUVE T1VUOwogCX0KIAlyZXR1cm4gc3RhdHVzOwogfQogCi1zdGF0aWMgdm9pZCBmaWxsX3R4X2ZpZm8o c3RydWN0IG5ta19pMmNfZGV2ICpkZXYsIGludCBub19ieXRlcykKK3N0YXRpYyB2b2lkIGZpbGxf dHhfZmlmbyhzdHJ1Y3Qgbm1rX2kyY19kZXYgKnByaXYsIGludCBub19ieXRlcykKIHsKIAlpbnQg Y291bnQ7CiAKIAlmb3IgKGNvdW50ID0gKG5vX2J5dGVzIC0gMik7CiAJCQkoY291bnQgPiAwKSAm JgotCQkJKGRldi0+Y2xpLmNvdW50ICE9IDApOworCQkJKHByaXYtPmNsaS5jb3VudCAhPSAwKTsK IAkJCWNvdW50LS0pIHsKIAkJLyogd3JpdGUgdG8gdGhlIFR4IEZJRk8gKi8KLQkJd3JpdGViKCpk ZXYtPmNsaS5idWZmZXIsCi0JCQlkZXYtPnZpcnRiYXNlICsgSTJDX1RGUik7Ci0JCWRldi0+Y2xp LmJ1ZmZlcisrOwotCQlkZXYtPmNsaS5jb3VudC0tOwotCQlkZXYtPmNsaS54ZmVyX2J5dGVzKys7 CisJCXdyaXRlYigqcHJpdi0+Y2xpLmJ1ZmZlciwgcHJpdi0+dmlydGJhc2UgKyBJMkNfVEZSKTsK KwkJcHJpdi0+Y2xpLmJ1ZmZlcisrOworCQlwcml2LT5jbGkuY291bnQtLTsKKwkJcHJpdi0+Y2xp LnhmZXJfYnl0ZXMrKzsKIAl9CiAKIH0KIAogLyoqCiAgKiB3cml0ZV9pMmMoKSAtIFdyaXRlIGRh dGEgdG8gSTJDIGNsaWVudC4KLSAqIEBkZXY6IHByaXZhdGUgZGF0YSBvZiBJMkMgRHJpdmVyCisg KiBAcHJpdjogcHJpdmF0ZSBkYXRhIG9mIEkyQyBEcml2ZXIKICAqIEBmbGFnczogbWVzc2FnZSBm bGFncwogICoKICAqIFRoaXMgZnVuY3Rpb24gd3JpdGVzIGRhdGEgdG8gSTJDIGNsaWVudAogICov Ci1zdGF0aWMgaW50IHdyaXRlX2kyYyhzdHJ1Y3Qgbm1rX2kyY19kZXYgKmRldiwgdTE2IGZsYWdz KQorc3RhdGljIGludCB3cml0ZV9pMmMoc3RydWN0IG5ta19pMmNfZGV2ICpwcml2LCB1MTYgZmxh Z3MpCiB7CiAJdTMyIHN0YXR1cyA9IDA7CiAJdTMyIG1jciwgaXJxX21hc2s7CiAJdW5zaWduZWQg bG9uZyB0aW1lb3V0OwogCi0JbWNyID0gbG9hZF9pMmNfbWNyX3JlZyhkZXYsIGZsYWdzKTsKKwlt Y3IgPSBsb2FkX2kyY19tY3JfcmVnKHByaXYsIGZsYWdzKTsKIAotCXdyaXRlbChtY3IsIGRldi0+ dmlydGJhc2UgKyBJMkNfTUNSKTsKKwl3cml0ZWwobWNyLCBwcml2LT52aXJ0YmFzZSArIEkyQ19N Q1IpOwogCiAJLyogbG9hZCB0aGUgY3VycmVudCBDUiB2YWx1ZSAqLwotCXdyaXRlbChyZWFkbChk ZXYtPnZpcnRiYXNlICsgSTJDX0NSKSB8IERFRkFVTFRfSTJDX1JFR19DUiwKLQkJCWRldi0+dmly dGJhc2UgKyBJMkNfQ1IpOworCXdyaXRlbChyZWFkbChwcml2LT52aXJ0YmFzZSArIEkyQ19DUikg fCBERUZBVUxUX0kyQ19SRUdfQ1IsCisJICAgICAgIHByaXYtPnZpcnRiYXNlICsgSTJDX0NSKTsK IAogCS8qIGVuYWJsZSB0aGUgY29udHJvbGxlciAqLwotCWkyY19zZXRfYml0KGRldi0+dmlydGJh c2UgKyBJMkNfQ1IsIEkyQ19DUl9QRSk7CisJaTJjX3NldF9iaXQocHJpdi0+dmlydGJhc2UgKyBJ MkNfQ1IsIEkyQ19DUl9QRSk7CiAKLQlpbml0X2NvbXBsZXRpb24oJmRldi0+eGZlcl9jb21wbGV0 ZSk7CisJaW5pdF9jb21wbGV0aW9uKCZwcml2LT54ZmVyX2NvbXBsZXRlKTsKIAogCS8qIGVuYWJs ZSBpbnRlcnJ1cHRzIGJ5IHNldHRpbmdzIHRoZSBtYXNrcyAqLwogCWlycV9tYXNrID0gKEkyQ19J VF9UWEZPVlIgfCBJMkNfSVRfTUFMIHwgSTJDX0lUX0JFUlIpOwogCiAJLyogRmlsbCB0aGUgVFgg RklGTyB3aXRoIHRyYW5zbWl0IGRhdGEgKi8KLQlmaWxsX3R4X2ZpZm8oZGV2LCBNQVhfSTJDX0ZJ Rk9fVEhSRVNIT0xEKTsKKwlmaWxsX3R4X2ZpZm8ocHJpdiwgTUFYX0kyQ19GSUZPX1RIUkVTSE9M RCk7CiAKLQlpZiAoZGV2LT5jbGkuY291bnQgIT0gMCkKKwlpZiAocHJpdi0+Y2xpLmNvdW50ICE9 IDApCiAJCWlycV9tYXNrIHw9IEkyQ19JVF9UWEZORTsKIAogCS8qCkBAIC01NDMsMjMgKzU0Miwy MyBAQCBzdGF0aWMgaW50IHdyaXRlX2kyYyhzdHJ1Y3Qgbm1rX2kyY19kZXYgKmRldiwgdTE2IGZs YWdzKQogCSAqIHNldCB0aGUgTVREV1MgYml0IChNYXN0ZXIgVHJhbnNhY3Rpb24gRG9uZSBXaXRo b3V0IFN0b3ApCiAJICogdG8gc3RhcnQgcmVwZWF0ZWQgc3RhcnQgb3BlcmF0aW9uCiAJICovCi0J aWYgKGRldi0+c3RvcCB8fCAhZGV2LT52ZW5kb3ItPmhhc19tdGR3cykKKwlpZiAocHJpdi0+c3Rv cCB8fCAhcHJpdi0+dmVuZG9yLT5oYXNfbXRkd3MpCiAJCWlycV9tYXNrIHw9IEkyQ19JVF9NVEQ7 CiAJZWxzZQogCQlpcnFfbWFzayB8PSBJMkNfSVRfTVREV1M7CiAKIAlpcnFfbWFzayA9IEkyQ19D TEVBUl9BTExfSU5UUyAmIElSUV9NQVNLKGlycV9tYXNrKTsKIAotCXdyaXRlbChyZWFkbChkZXYt PnZpcnRiYXNlICsgSTJDX0lNU0NSKSB8IGlycV9tYXNrLAotCQkJZGV2LT52aXJ0YmFzZSArIEky Q19JTVNDUik7CisJd3JpdGVsKHJlYWRsKHByaXYtPnZpcnRiYXNlICsgSTJDX0lNU0NSKSB8IGly cV9tYXNrLAorCSAgICAgICBwcml2LT52aXJ0YmFzZSArIEkyQ19JTVNDUik7CiAKIAl0aW1lb3V0 ID0gd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KAotCQkmZGV2LT54ZmVyX2NvbXBsZXRlLCBk ZXYtPmFkYXAudGltZW91dCk7CisJCSZwcml2LT54ZmVyX2NvbXBsZXRlLCBwcml2LT5hZGFwLnRp bWVvdXQpOwogCiAJaWYgKHRpbWVvdXQgPT0gMCkgewogCQkvKiBDb250cm9sbGVyIHRpbWVkIG91 dCAqLwotCQlkZXZfZXJyKCZkZXYtPmFkZXYtPmRldiwgIndyaXRlIHRvIHNsYXZlIDB4JXggdGlt ZWQgb3V0XG4iLAotCQkJCWRldi0+Y2xpLnNsYXZlX2Fkcik7CisJCWRldl9lcnIoJnByaXYtPmFk ZXYtPmRldiwgIndyaXRlIHRvIHNsYXZlIDB4JXggdGltZWQgb3V0XG4iLAorCQkJcHJpdi0+Y2xp LnNsYXZlX2Fkcik7CiAJCXN0YXR1cyA9IC1FVElNRURPVVQ7CiAJfQogCkBAIC01NjgsMjggKzU2 NywyOCBAQCBzdGF0aWMgaW50IHdyaXRlX2kyYyhzdHJ1Y3Qgbm1rX2kyY19kZXYgKmRldiwgdTE2 IGZsYWdzKQogCiAvKioKICAqIG5ta19pMmNfeGZlcl9vbmUoKSAtIHRyYW5zbWl0IGEgc2luZ2xl IEkyQyBtZXNzYWdlCi0gKiBAZGV2OiBkZXZpY2Ugd2l0aCBhIG1lc3NhZ2UgZW5jb2RlZCBpbnRv IGl0CisgKiBAcHJpdjogZGV2aWNlIHdpdGggYSBtZXNzYWdlIGVuY29kZWQgaW50byBpdAogICog QGZsYWdzOiBtZXNzYWdlIGZsYWdzCiAgKi8KLXN0YXRpYyBpbnQgbm1rX2kyY194ZmVyX29uZShz dHJ1Y3Qgbm1rX2kyY19kZXYgKmRldiwgdTE2IGZsYWdzKQorc3RhdGljIGludCBubWtfaTJjX3hm ZXJfb25lKHN0cnVjdCBubWtfaTJjX2RldiAqcHJpdiwgdTE2IGZsYWdzKQogewogCWludCBzdGF0 dXM7CiAKIAlpZiAoZmxhZ3MgJiBJMkNfTV9SRCkgewogCQkvKiByZWFkIG9wZXJhdGlvbiAqLwot CQlkZXYtPmNsaS5vcGVyYXRpb24gPSBJMkNfUkVBRDsKLQkJc3RhdHVzID0gcmVhZF9pMmMoZGV2 LCBmbGFncyk7CisJCXByaXYtPmNsaS5vcGVyYXRpb24gPSBJMkNfUkVBRDsKKwkJc3RhdHVzID0g cmVhZF9pMmMocHJpdiwgZmxhZ3MpOwogCX0gZWxzZSB7CiAJCS8qIHdyaXRlIG9wZXJhdGlvbiAq LwotCQlkZXYtPmNsaS5vcGVyYXRpb24gPSBJMkNfV1JJVEU7Ci0JCXN0YXR1cyA9IHdyaXRlX2ky YyhkZXYsIGZsYWdzKTsKKwkJcHJpdi0+Y2xpLm9wZXJhdGlvbiA9IEkyQ19XUklURTsKKwkJc3Rh dHVzID0gd3JpdGVfaTJjKHByaXYsIGZsYWdzKTsKIAl9CiAKLQlpZiAoc3RhdHVzIHx8IChkZXYt PnJlc3VsdCkpIHsKKwlpZiAoc3RhdHVzIHx8IHByaXYtPnJlc3VsdCkgewogCQl1MzIgaTJjX3Ny OwogCQl1MzIgY2F1c2U7CiAKLQkJaTJjX3NyID0gcmVhZGwoZGV2LT52aXJ0YmFzZSArIEkyQ19T Uik7CisJCWkyY19zciA9IHJlYWRsKHByaXYtPnZpcnRiYXNlICsgSTJDX1NSKTsKIAkJLyoKIAkJ ICogQ2hlY2sgaWYgdGhlIGNvbnRyb2xsZXIgSTJDIG9wZXJhdGlvbiBzdGF0dXMKIAkJICogaXMg c2V0IHRvIEFCT1JUKDExYikuCkBAIC01OTcsMTUgKzU5NiwxNSBAQCBzdGF0aWMgaW50IG5ta19p MmNfeGZlcl9vbmUoc3RydWN0IG5ta19pMmNfZGV2ICpkZXYsIHUxNiBmbGFncykKIAkJaWYgKCgo aTJjX3NyID4+IDIpICYgMHgzKSA9PSAweDMpIHsKIAkJCS8qIGdldCB0aGUgYWJvcnQgY2F1c2Ug Ki8KIAkJCWNhdXNlID0JKGkyY19zciA+PiA0KSAmIDB4NzsKLQkJCWRldl9lcnIoJmRldi0+YWRl di0+ZGV2LCAiJXNcbiIsCisJCQlkZXZfZXJyKCZwcml2LT5hZGV2LT5kZXYsICIlc1xuIiwKIAkJ CQljYXVzZSA+PSBBUlJBWV9TSVpFKGFib3J0X2NhdXNlcykgPwogCQkJCSJ1bmtub3duIHJlYXNv biIgOgogCQkJCWFib3J0X2NhdXNlc1tjYXVzZV0pOwogCQl9CiAKLQkJKHZvaWQpIGluaXRfaHco ZGV2KTsKKwkJaW5pdF9odyhwcml2KTsKIAotCQlzdGF0dXMgPSBzdGF0dXMgPyBzdGF0dXMgOiBk ZXYtPnJlc3VsdDsKKwkJc3RhdHVzID0gc3RhdHVzID8gc3RhdHVzIDogcHJpdi0+cmVzdWx0Owog CX0KIAogCXJldHVybiBzdGF0dXM7CkBAIC02NjMsMjQgKzY2MiwyNCBAQCBzdGF0aWMgaW50IG5t a19pMmNfeGZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmkyY19hZGFwLAogewogCWludCBzdGF0dXMg PSAwOwogCWludCBpOwotCXN0cnVjdCBubWtfaTJjX2RldiAqZGV2ID0gaTJjX2dldF9hZGFwZGF0 YShpMmNfYWRhcCk7CisJc3RydWN0IG5ta19pMmNfZGV2ICpwcml2ID0gaTJjX2dldF9hZGFwZGF0 YShpMmNfYWRhcCk7CiAJaW50IGo7CiAKLQlwbV9ydW50aW1lX2dldF9zeW5jKCZkZXYtPmFkZXYt PmRldik7CisJcG1fcnVudGltZV9nZXRfc3luYygmcHJpdi0+YWRldi0+ZGV2KTsKIAogCS8qIEF0 dGVtcHQgdGhyZWUgdGltZXMgdG8gc2VuZCB0aGUgbWVzc2FnZSBxdWV1ZSAqLwogCWZvciAoaiA9 IDA7IGogPCAzOyBqKyspIHsKIAkJLyogc2V0dXAgdGhlIGkyYyBjb250cm9sbGVyICovCi0JCXNl dHVwX2kyY19jb250cm9sbGVyKGRldik7CisJCXNldHVwX2kyY19jb250cm9sbGVyKHByaXYpOwog CiAJCWZvciAoaSA9IDA7IGkgPCBudW1fbXNnczsgaSsrKSB7Ci0JCQlkZXYtPmNsaS5zbGF2ZV9h ZHIJPSBtc2dzW2ldLmFkZHI7Ci0JCQlkZXYtPmNsaS5idWZmZXIJCT0gbXNnc1tpXS5idWY7Ci0J CQlkZXYtPmNsaS5jb3VudAkJPSBtc2dzW2ldLmxlbjsKLQkJCWRldi0+c3RvcCA9IChpIDwgKG51 bV9tc2dzIC0gMSkpID8gMCA6IDE7Ci0JCQlkZXYtPnJlc3VsdCA9IDA7CisJCQlwcml2LT5jbGku c2xhdmVfYWRyCT0gbXNnc1tpXS5hZGRyOworCQkJcHJpdi0+Y2xpLmJ1ZmZlcgkJPSBtc2dzW2ld LmJ1ZjsKKwkJCXByaXYtPmNsaS5jb3VudAkJPSBtc2dzW2ldLmxlbjsKKwkJCXByaXYtPnN0b3Ag PSAoaSA8IChudW1fbXNncyAtIDEpKSA/IDAgOiAxOworCQkJcHJpdi0+cmVzdWx0ID0gMDsKIAot CQkJc3RhdHVzID0gbm1rX2kyY194ZmVyX29uZShkZXYsIG1zZ3NbaV0uZmxhZ3MpOworCQkJc3Rh dHVzID0gbm1rX2kyY194ZmVyX29uZShwcml2LCBtc2dzW2ldLmZsYWdzKTsKIAkJCWlmIChzdGF0 dXMgIT0gMCkKIAkJCQlicmVhazsKIAkJfQpAQCAtNjg4LDcgKzY4Nyw3IEBAIHN0YXRpYyBpbnQg bm1rX2kyY194ZmVyKHN0cnVjdCBpMmNfYWRhcHRlciAqaTJjX2FkYXAsCiAJCQlicmVhazsKIAl9 CiAKLQlwbV9ydW50aW1lX3B1dF9zeW5jKCZkZXYtPmFkZXYtPmRldik7CisJcG1fcnVudGltZV9w dXRfc3luYygmcHJpdi0+YWRldi0+ZGV2KTsKIAogCS8qIHJldHVybiB0aGUgbm8uIG1lc3NhZ2Vz IHByb2Nlc3NlZCAqLwogCWlmIChzdGF0dXMpCkBAIC02OTksMTQgKzY5OCwxNCBAQCBzdGF0aWMg aW50IG5ta19pMmNfeGZlcihzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmkyY19hZGFwLAogCiAvKioKICAq IGRpc2FibGVfaW50ZXJydXB0cygpIC0gZGlzYWJsZSB0aGUgaW50ZXJydXB0cwotICogQGRldjog cHJpdmF0ZSBkYXRhIG9mIGNvbnRyb2xsZXIKKyAqIEBwcml2OiBwcml2YXRlIGRhdGEgb2YgY29u dHJvbGxlcgogICogQGlycTogaW50ZXJydXB0IG51bWJlcgogICovCi1zdGF0aWMgaW50IGRpc2Fi bGVfaW50ZXJydXB0cyhzdHJ1Y3Qgbm1rX2kyY19kZXYgKmRldiwgdTMyIGlycSkKK3N0YXRpYyBp bnQgZGlzYWJsZV9pbnRlcnJ1cHRzKHN0cnVjdCBubWtfaTJjX2RldiAqcHJpdiwgdTMyIGlycSkK IHsKIAlpcnEgPSBJUlFfTUFTSyhpcnEpOwotCXdyaXRlbChyZWFkbChkZXYtPnZpcnRiYXNlICsg STJDX0lNU0NSKSAmIH4oSTJDX0NMRUFSX0FMTF9JTlRTICYgaXJxKSwKLQkJCWRldi0+dmlydGJh c2UgKyBJMkNfSU1TQ1IpOworCXdyaXRlbChyZWFkbChwcml2LT52aXJ0YmFzZSArIEkyQ19JTVND UikgJiB+KEkyQ19DTEVBUl9BTExfSU5UUyAmIGlycSksCisJICAgICAgIHByaXYtPnZpcnRiYXNl ICsgSTJDX0lNU0NSKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNzIzLDE3ICs3MjIsMTggQEAgc3Rh dGljIGludCBkaXNhYmxlX2ludGVycnVwdHMoc3RydWN0IG5ta19pMmNfZGV2ICpkZXYsIHUzMiBp cnEpCiAgKi8KIHN0YXRpYyBpcnFyZXR1cm5fdCBpMmNfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9p ZCAqYXJnKQogewotCXN0cnVjdCBubWtfaTJjX2RldiAqZGV2ID0gYXJnOworCXN0cnVjdCBubWtf aTJjX2RldiAqcHJpdiA9IGFyZzsKKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcHJpdi0+YWRldi0+ ZGV2OwogCXUzMiB0ZnQsIHJmdDsKIAl1MzIgY291bnQ7CiAJdTMyIG1pc3IsIHNyYzsKIAogCS8q IGxvYWQgVHggRklGTyBhbmQgUnggRklGTyB0aHJlc2hvbGQgdmFsdWVzICovCi0JdGZ0ID0gcmVh ZGwoZGV2LT52aXJ0YmFzZSArIEkyQ19URlRSKTsKLQlyZnQgPSByZWFkbChkZXYtPnZpcnRiYXNl ICsgSTJDX1JGVFIpOworCXRmdCA9IHJlYWRsKHByaXYtPnZpcnRiYXNlICsgSTJDX1RGVFIpOwor CXJmdCA9IHJlYWRsKHByaXYtPnZpcnRiYXNlICsgSTJDX1JGVFIpOwogCiAJLyogcmVhZCBpbnRl cnJ1cHQgc3RhdHVzIHJlZ2lzdGVyICovCi0JbWlzciA9IHJlYWRsKGRldi0+dmlydGJhc2UgKyBJ MkNfTUlTUik7CisJbWlzciA9IHJlYWRsKHByaXYtPnZpcnRiYXNlICsgSTJDX01JU1IpOwogCiAJ c3JjID0gX19mZnMobWlzcik7CiAJc3dpdGNoICgoMSA8PCBzcmMpKSB7CkBAIC03NDEsMjAgKzc0 MSwyMCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgaTJjX2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQg KmFyZykKIAkvKiBUcmFuc21pdCBGSUZPIG5lYXJseSBlbXB0eSBpbnRlcnJ1cHQgKi8KIAljYXNl IEkyQ19JVF9UWEZORToKIAl7Ci0JCWlmIChkZXYtPmNsaS5vcGVyYXRpb24gPT0gSTJDX1JFQUQp IHsKKwkJaWYgKHByaXYtPmNsaS5vcGVyYXRpb24gPT0gSTJDX1JFQUQpIHsKIAkJCS8qCiAJCQkg KiBpbiByZWFkIG9wZXJhdGlvbiB3aHkgZG8gd2UgY2FyZSBmb3Igd3JpdGluZz8KIAkJCSAqIHNv IGRpc2FibGUgdGhlIFRyYW5zbWl0IEZJRk8gaW50ZXJydXB0CiAJCQkgKi8KLQkJCWRpc2FibGVf aW50ZXJydXB0cyhkZXYsIEkyQ19JVF9UWEZORSk7CisJCQlkaXNhYmxlX2ludGVycnVwdHMocHJp diwgSTJDX0lUX1RYRk5FKTsKIAkJfSBlbHNlIHsKLQkJCWZpbGxfdHhfZmlmbyhkZXYsIChNQVhf STJDX0ZJRk9fVEhSRVNIT0xEIC0gdGZ0KSk7CisJCQlmaWxsX3R4X2ZpZm8ocHJpdiwgKE1BWF9J MkNfRklGT19USFJFU0hPTEQgLSB0ZnQpKTsKIAkJCS8qCiAJCQkgKiBpZiBkb25lLCBjbG9zZSB0 aGUgdHJhbnNmZXIgYnkgZGlzYWJsaW5nIHRoZQogCQkJICogY29ycmVzcG9uZGluZyBUWEZORSBp bnRlcnJ1cHQKIAkJCSAqLwotCQkJaWYgKGRldi0+Y2xpLmNvdW50ID09IDApCi0JCQkJZGlzYWJs ZV9pbnRlcnJ1cHRzKGRldiwJSTJDX0lUX1RYRk5FKTsKKwkJCWlmIChwcml2LT5jbGkuY291bnQg PT0gMCkKKwkJCQlkaXNhYmxlX2ludGVycnVwdHMocHJpdiwJSTJDX0lUX1RYRk5FKTsKIAkJfQog CX0KIAlicmVhazsKQEAgLTc2OCw2MCArNzY4LDU5IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBpMmNf aXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQogCWNhc2UgSTJDX0lUX1JYRk5GOgogCQlm b3IgKGNvdW50ID0gcmZ0OyBjb3VudCA+IDA7IGNvdW50LS0pIHsKIAkJCS8qIFJlYWQgdGhlIFJ4 IEZJRk8gKi8KLQkJCSpkZXYtPmNsaS5idWZmZXIgPSByZWFkYihkZXYtPnZpcnRiYXNlICsgSTJD X1JGUik7Ci0JCQlkZXYtPmNsaS5idWZmZXIrKzsKKwkJCSpwcml2LT5jbGkuYnVmZmVyID0gcmVh ZGIocHJpdi0+dmlydGJhc2UgKyBJMkNfUkZSKTsKKwkJCXByaXYtPmNsaS5idWZmZXIrKzsKIAkJ fQotCQlkZXYtPmNsaS5jb3VudCAtPSByZnQ7Ci0JCWRldi0+Y2xpLnhmZXJfYnl0ZXMgKz0gcmZ0 OworCQlwcml2LT5jbGkuY291bnQgLT0gcmZ0OworCQlwcml2LT5jbGkueGZlcl9ieXRlcyArPSBy ZnQ7CiAJCWJyZWFrOwogCiAJLyogUnggRklGTyBmdWxsICovCiAJY2FzZSBJMkNfSVRfUlhGRjoK IAkJZm9yIChjb3VudCA9IE1BWF9JMkNfRklGT19USFJFU0hPTEQ7IGNvdW50ID4gMDsgY291bnQt LSkgewotCQkJKmRldi0+Y2xpLmJ1ZmZlciA9IHJlYWRiKGRldi0+dmlydGJhc2UgKyBJMkNfUkZS KTsKLQkJCWRldi0+Y2xpLmJ1ZmZlcisrOworCQkJKnByaXYtPmNsaS5idWZmZXIgPSByZWFkYihw cml2LT52aXJ0YmFzZSArIEkyQ19SRlIpOworCQkJcHJpdi0+Y2xpLmJ1ZmZlcisrOwogCQl9Ci0J CWRldi0+Y2xpLmNvdW50IC09IE1BWF9JMkNfRklGT19USFJFU0hPTEQ7Ci0JCWRldi0+Y2xpLnhm ZXJfYnl0ZXMgKz0gTUFYX0kyQ19GSUZPX1RIUkVTSE9MRDsKKwkJcHJpdi0+Y2xpLmNvdW50IC09 IE1BWF9JMkNfRklGT19USFJFU0hPTEQ7CisJCXByaXYtPmNsaS54ZmVyX2J5dGVzICs9IE1BWF9J MkNfRklGT19USFJFU0hPTEQ7CiAJCWJyZWFrOwogCiAJLyogTWFzdGVyIFRyYW5zYWN0aW9uIERv bmUgd2l0aC93aXRob3V0IHN0b3AgKi8KIAljYXNlIEkyQ19JVF9NVEQ6CiAJY2FzZSBJMkNfSVRf TVREV1M6Ci0JCWlmIChkZXYtPmNsaS5vcGVyYXRpb24gPT0gSTJDX1JFQUQpIHsKLQkJCXdoaWxl ICghKHJlYWRsKGRldi0+dmlydGJhc2UgKyBJMkNfUklTUikKKwkJaWYgKHByaXYtPmNsaS5vcGVy YXRpb24gPT0gSTJDX1JFQUQpIHsKKwkJCXdoaWxlICghKHJlYWRsKHByaXYtPnZpcnRiYXNlICsg STJDX1JJU1IpCiAJCQkJICYgSTJDX0lUX1JYRkUpKSB7Ci0JCQkJaWYgKGRldi0+Y2xpLmNvdW50 ID09IDApCisJCQkJaWYgKHByaXYtPmNsaS5jb3VudCA9PSAwKQogCQkJCQlicmVhazsKLQkJCQkq ZGV2LT5jbGkuYnVmZmVyID0KLQkJCQkJcmVhZGIoZGV2LT52aXJ0YmFzZSArIEkyQ19SRlIpOwot CQkJCWRldi0+Y2xpLmJ1ZmZlcisrOwotCQkJCWRldi0+Y2xpLmNvdW50LS07Ci0JCQkJZGV2LT5j bGkueGZlcl9ieXRlcysrOworCQkJCSpwcml2LT5jbGkuYnVmZmVyID0KKwkJCQkJcmVhZGIocHJp di0+dmlydGJhc2UgKyBJMkNfUkZSKTsKKwkJCQlwcml2LT5jbGkuYnVmZmVyKys7CisJCQkJcHJp di0+Y2xpLmNvdW50LS07CisJCQkJcHJpdi0+Y2xpLnhmZXJfYnl0ZXMrKzsKIAkJCX0KIAkJfQog Ci0JCWRpc2FibGVfYWxsX2ludGVycnVwdHMoZGV2KTsKLQkJY2xlYXJfYWxsX2ludGVycnVwdHMo ZGV2KTsKKwkJZGlzYWJsZV9hbGxfaW50ZXJydXB0cyhwcml2KTsKKwkJY2xlYXJfYWxsX2ludGVy cnVwdHMocHJpdik7CiAKLQkJaWYgKGRldi0+Y2xpLmNvdW50KSB7Ci0JCQlkZXYtPnJlc3VsdCA9 IC1FSU87Ci0JCQlkZXZfZXJyKCZkZXYtPmFkZXYtPmRldiwKLQkJCQkiJWx1IGJ5dGVzIHN0aWxs IHJlbWFpbiB0byBiZSB4ZmVyZWRcbiIsCi0JCQkJZGV2LT5jbGkuY291bnQpOwotCQkJKHZvaWQp IGluaXRfaHcoZGV2KTsKKwkJaWYgKHByaXYtPmNsaS5jb3VudCkgeworCQkJcHJpdi0+cmVzdWx0 ID0gLUVJTzsKKwkJCWRldl9lcnIoZGV2LCAiJWx1IGJ5dGVzIHN0aWxsIHJlbWFpbiB0byBiZSB4 ZmVyZWRcbiIsCisJCQkJcHJpdi0+Y2xpLmNvdW50KTsKKwkJCWluaXRfaHcocHJpdik7CiAJCX0K LQkJY29tcGxldGUoJmRldi0+eGZlcl9jb21wbGV0ZSk7CisJCWNvbXBsZXRlKCZwcml2LT54ZmVy X2NvbXBsZXRlKTsKIAogCQlicmVhazsKIAogCS8qIE1hc3RlciBBcmJpdHJhdGlvbiBsb3N0IGlu dGVycnVwdCAqLwogCWNhc2UgSTJDX0lUX01BTDoKLQkJZGV2LT5yZXN1bHQgPSAtRUlPOwotCQko dm9pZCkgaW5pdF9odyhkZXYpOworCQlwcml2LT5yZXN1bHQgPSAtRUlPOworCQlpbml0X2h3KHBy aXYpOwogCi0JCWkyY19zZXRfYml0KGRldi0+dmlydGJhc2UgKyBJMkNfSUNSLCBJMkNfSVRfTUFM KTsKLQkJY29tcGxldGUoJmRldi0+eGZlcl9jb21wbGV0ZSk7CisJCWkyY19zZXRfYml0KHByaXYt PnZpcnRiYXNlICsgSTJDX0lDUiwgSTJDX0lUX01BTCk7CisJCWNvbXBsZXRlKCZwcml2LT54ZmVy X2NvbXBsZXRlKTsKIAogCQlicmVhazsKIApAQCAtODMxLDEzICs4MzAsMTMgQEAgc3RhdGljIGly cXJldHVybl90IGkyY19pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCiAJICogZHVyaW5n IHRoZSB0cmFuc2FjdGlvbi4KIAkgKi8KIAljYXNlIEkyQ19JVF9CRVJSOgotCQlkZXYtPnJlc3Vs dCA9IC1FSU87CisJCXByaXYtPnJlc3VsdCA9IC1FSU87CiAJCS8qIGdldCB0aGUgc3RhdHVzICov Ci0JCWlmICgoKHJlYWRsKGRldi0+dmlydGJhc2UgKyBJMkNfU1IpID4+IDIpICYgMHgzKSA9PSBJ MkNfQUJPUlQpCi0JCQkodm9pZCkgaW5pdF9odyhkZXYpOworCQlpZiAoKChyZWFkbChwcml2LT52 aXJ0YmFzZSArIEkyQ19TUikgPj4gMikgJiAweDMpID09IEkyQ19BQk9SVCkKKwkJCWluaXRfaHco cHJpdik7CiAKLQkJaTJjX3NldF9iaXQoZGV2LT52aXJ0YmFzZSArIEkyQ19JQ1IsIEkyQ19JVF9C RVJSKTsKLQkJY29tcGxldGUoJmRldi0+eGZlcl9jb21wbGV0ZSk7CisJCWkyY19zZXRfYml0KHBy aXYtPnZpcnRiYXNlICsgSTJDX0lDUiwgSTJDX0lUX0JFUlIpOworCQljb21wbGV0ZSgmcHJpdi0+ eGZlcl9jb21wbGV0ZSk7CiAKIAkJYnJlYWs7CiAKQEAgLTg0NywxMSArODQ2LDExIEBAIHN0YXRp YyBpcnFyZXR1cm5fdCBpMmNfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQogCSAqIHRo ZSBUeCBGSUZPIGlzIGZ1bGwuCiAJICovCiAJY2FzZSBJMkNfSVRfVFhGT1ZSOgotCQlkZXYtPnJl c3VsdCA9IC1FSU87Ci0JCSh2b2lkKSBpbml0X2h3KGRldik7CisJCXByaXYtPnJlc3VsdCA9IC1F SU87CisJCWluaXRfaHcocHJpdik7CiAKLQkJZGV2X2VycigmZGV2LT5hZGV2LT5kZXYsICJUeCBG aWZvIE92ZXIgcnVuXG4iKTsKLQkJY29tcGxldGUoJmRldi0+eGZlcl9jb21wbGV0ZSk7CisJCWRl dl9lcnIoZGV2LCAiVHggRmlmbyBPdmVyIHJ1blxuIik7CisJCWNvbXBsZXRlKCZwcml2LT54ZmVy X2NvbXBsZXRlKTsKIAogCQlicmVhazsKIApAQCAtODYzLDEwICs4NjIsMTAgQEAgc3RhdGljIGly cXJldHVybl90IGkyY19pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICphcmcpCiAJY2FzZSBJMkNf SVRfUkZTRToKIAljYXNlIEkyQ19JVF9XVFNSOgogCWNhc2UgSTJDX0lUX1NURDoKLQkJZGV2X2Vy cigmZGV2LT5hZGV2LT5kZXYsICJ1bmhhbmRsZWQgSW50ZXJydXB0XG4iKTsKKwkJZGV2X2Vycihk ZXYsICJ1bmhhbmRsZWQgSW50ZXJydXB0XG4iKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJZGV2 X2VycigmZGV2LT5hZGV2LT5kZXYsICJzcHVyaW91cyBJbnRlcnJ1cHQuLlxuIik7CisJCWRldl9l cnIoZGV2LCAic3B1cmlvdXMgSW50ZXJydXB0Li5cbiIpOwogCQlicmVhazsKIAl9CiAKQEAgLTg5 Myw5ICs4OTIsOSBAQCBzdGF0aWMgaW50IG5ta19pMmNfcmVzdW1lX2Vhcmx5KHN0cnVjdCBkZXZp Y2UgKmRldikKIHN0YXRpYyBpbnQgbm1rX2kyY19ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmlj ZSAqZGV2KQogewogCXN0cnVjdCBhbWJhX2RldmljZSAqYWRldiA9IHRvX2FtYmFfZGV2aWNlKGRl dik7Ci0Jc3RydWN0IG5ta19pMmNfZGV2ICpubWtfaTJjID0gYW1iYV9nZXRfZHJ2ZGF0YShhZGV2 KTsKKwlzdHJ1Y3Qgbm1rX2kyY19kZXYgKnByaXYgPSBhbWJhX2dldF9kcnZkYXRhKGFkZXYpOwog Ci0JY2xrX2Rpc2FibGVfdW5wcmVwYXJlKG5ta19pMmMtPmNsayk7CisJY2xrX2Rpc2FibGVfdW5w cmVwYXJlKHByaXYtPmNsayk7CiAJcGluY3RybF9wbV9zZWxlY3RfaWRsZV9zdGF0ZShkZXYpOwog CXJldHVybiAwOwogfQpAQCAtOTAzLDEwICs5MDIsMTAgQEAgc3RhdGljIGludCBubWtfaTJjX3J1 bnRpbWVfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiBzdGF0aWMgaW50IG5ta19pMmNfcnVu dGltZV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KQogewogCXN0cnVjdCBhbWJhX2RldmljZSAq YWRldiA9IHRvX2FtYmFfZGV2aWNlKGRldik7Ci0Jc3RydWN0IG5ta19pMmNfZGV2ICpubWtfaTJj ID0gYW1iYV9nZXRfZHJ2ZGF0YShhZGV2KTsKKwlzdHJ1Y3Qgbm1rX2kyY19kZXYgKnByaXYgPSBh bWJhX2dldF9kcnZkYXRhKGFkZXYpOwogCWludCByZXQ7CiAKLQlyZXQgPSBjbGtfcHJlcGFyZV9l bmFibGUobm1rX2kyYy0+Y2xrKTsKKwlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocHJpdi0+Y2xr KTsKIAlpZiAocmV0KSB7CiAJCWRldl9lcnIoZGV2LCAiY2FuJ3QgcHJlcGFyZV9lbmFibGUgY2xv Y2tcbiIpOwogCQlyZXR1cm4gcmV0OwpAQCAtOTE0LDkgKzkxMyw5IEBAIHN0YXRpYyBpbnQgbm1r X2kyY19ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAKIAlwaW5jdHJsX3BtX3Nl bGVjdF9kZWZhdWx0X3N0YXRlKGRldik7CiAKLQlyZXQgPSBpbml0X2h3KG5ta19pMmMpOworCXJl dCA9IGluaXRfaHcocHJpdik7CiAJaWYgKHJldCkgewotCQljbGtfZGlzYWJsZV91bnByZXBhcmUo bm1rX2kyYy0+Y2xrKTsKKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKHByaXYtPmNsayk7CiAJCXBp bmN0cmxfcG1fc2VsZWN0X2lkbGVfc3RhdGUoZGV2KTsKIAl9CiAKQEAgLTkzOSwxMDcgKzkzOCwx MDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfYWxnb3JpdGhtIG5ta19pMmNfYWxnbyA9IHsK IH07CiAKIHN0YXRpYyB2b2lkIG5ta19pMmNfb2ZfcHJvYmUoc3RydWN0IGRldmljZV9ub2RlICpu cCwKLQkJCSAgICAgc3RydWN0IG5ta19pMmNfZGV2ICpubWspCisJCQkgICAgIHN0cnVjdCBubWtf aTJjX2RldiAqcHJpdikKIHsKIAkvKiBEZWZhdWx0IHRvIDEwMCBrSHogaWYgbm8gZnJlcXVlbmN5 IGlzIGdpdmVuIGluIHRoZSBub2RlICovCi0JaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAi Y2xvY2stZnJlcXVlbmN5IiwgJm5tay0+Y2xrX2ZyZXEpKQotCQlubWstPmNsa19mcmVxID0gSTJD X01BWF9TVEFOREFSRF9NT0RFX0ZSRVE7CisJaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAi Y2xvY2stZnJlcXVlbmN5IiwgJnByaXYtPmNsa19mcmVxKSkKKwkJcHJpdi0+Y2xrX2ZyZXEgPSBJ MkNfTUFYX1NUQU5EQVJEX01PREVfRlJFUTsKIAogCS8qIFRoaXMgZHJpdmVyIG9ubHkgc3VwcG9y dHMgJ3N0YW5kYXJkJyBhbmQgJ2Zhc3QnIG1vZGVzIG9mIG9wZXJhdGlvbi4gKi8KLQlpZiAobm1r LT5jbGtfZnJlcSA8PSBJMkNfTUFYX1NUQU5EQVJEX01PREVfRlJFUSkKLQkJbm1rLT5zbSA9IEky Q19GUkVRX01PREVfU1RBTkRBUkQ7CisJaWYgKHByaXYtPmNsa19mcmVxIDw9IEkyQ19NQVhfU1RB TkRBUkRfTU9ERV9GUkVRKQorCQlwcml2LT5zbSA9IEkyQ19GUkVRX01PREVfU1RBTkRBUkQ7CiAJ ZWxzZQotCQlubWstPnNtID0gSTJDX0ZSRVFfTU9ERV9GQVNUOwotCW5tay0+dGZ0ID0gMTsgLyog VHggRklGTyB0aHJlc2hvbGQgKi8KLQlubWstPnJmdCA9IDg7IC8qIFJ4IEZJRk8gdGhyZXNob2xk ICovCi0Jbm1rLT50aW1lb3V0ID0gMjAwOyAvKiBTbGF2ZSByZXNwb25zZSB0aW1lb3V0KG1zKSAq LworCQlwcml2LT5zbSA9IEkyQ19GUkVRX01PREVfRkFTVDsKKwlwcml2LT50ZnQgPSAxOyAvKiBU eCBGSUZPIHRocmVzaG9sZCAqLworCXByaXYtPnJmdCA9IDg7IC8qIFJ4IEZJRk8gdGhyZXNob2xk ICovCisJcHJpdi0+dGltZW91dCA9IDIwMDsgLyogU2xhdmUgcmVzcG9uc2UgdGltZW91dChtcykg Ki8KIH0KIAogc3RhdGljIGludCBubWtfaTJjX3Byb2JlKHN0cnVjdCBhbWJhX2RldmljZSAqYWRl diwgY29uc3Qgc3RydWN0IGFtYmFfaWQgKmlkKQogewogCWludCByZXQgPSAwOworCXN0cnVjdCBu bWtfaTJjX2RldiAqcHJpdjsKIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gYWRldi0+ZGV2Lm9m X25vZGU7Ci0Jc3RydWN0IG5ta19pMmNfZGV2CSpkZXY7CisJc3RydWN0IGRldmljZSAqZGV2ID0g JmFkZXYtPmRldjsKIAlzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXA7CiAJc3RydWN0IGkyY192ZW5k b3JfZGF0YSAqdmVuZG9yID0gaWQtPmRhdGE7CiAJdTMyIG1heF9maWZvX3RocmVzaG9sZCA9ICh2 ZW5kb3ItPmZpZm9kZXB0aCAvIDIpIC0gMTsKIAotCWRldiA9IGRldm1fa3phbGxvYygmYWRldi0+ ZGV2LCBzaXplb2YoKmRldiksIEdGUF9LRVJORUwpOwotCWlmICghZGV2KQorCXByaXYgPSBkZXZt X2t6YWxsb2MoZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXByaXYpCiAJ CXJldHVybiAtRU5PTUVNOwogCi0JZGV2LT52ZW5kb3IgPSB2ZW5kb3I7Ci0JZGV2LT5hZGV2ID0g YWRldjsKLQlubWtfaTJjX29mX3Byb2JlKG5wLCBkZXYpOworCXByaXYtPnZlbmRvciA9IHZlbmRv cjsKKwlwcml2LT5hZGV2ID0gYWRldjsKKwlubWtfaTJjX29mX3Byb2JlKG5wLCBwcml2KTsKIAot CWlmIChkZXYtPnRmdCA+IG1heF9maWZvX3RocmVzaG9sZCkgewotCQlkZXZfd2FybigmYWRldi0+ ZGV2LCAicmVxdWVzdGVkIFRYIEZJRk8gdGhyZXNob2xkICV1LCBhZGp1c3RlZCBkb3duIHRvICV1 XG4iLAotCQkJIGRldi0+dGZ0LCBtYXhfZmlmb190aHJlc2hvbGQpOwotCQlkZXYtPnRmdCA9IG1h eF9maWZvX3RocmVzaG9sZDsKKwlpZiAocHJpdi0+dGZ0ID4gbWF4X2ZpZm9fdGhyZXNob2xkKSB7 CisJCWRldl93YXJuKGRldiwgInJlcXVlc3RlZCBUWCBGSUZPIHRocmVzaG9sZCAldSwgYWRqdXN0 ZWQgZG93biB0byAldVxuIiwKKwkJCSBwcml2LT50ZnQsIG1heF9maWZvX3RocmVzaG9sZCk7CisJ CXByaXYtPnRmdCA9IG1heF9maWZvX3RocmVzaG9sZDsKIAl9CiAKLQlpZiAoZGV2LT5yZnQgPiBt YXhfZmlmb190aHJlc2hvbGQpIHsKLQkJZGV2X3dhcm4oJmFkZXYtPmRldiwgInJlcXVlc3RlZCBS WCBGSUZPIHRocmVzaG9sZCAldSwgYWRqdXN0ZWQgZG93biB0byAldVxuIiwKLQkJCWRldi0+cmZ0 LCBtYXhfZmlmb190aHJlc2hvbGQpOwotCQlkZXYtPnJmdCA9IG1heF9maWZvX3RocmVzaG9sZDsK KwlpZiAocHJpdi0+cmZ0ID4gbWF4X2ZpZm9fdGhyZXNob2xkKSB7CisJCWRldl93YXJuKGRldiwg InJlcXVlc3RlZCBSWCBGSUZPIHRocmVzaG9sZCAldSwgYWRqdXN0ZWQgZG93biB0byAldVxuIiwK KwkJCSBwcml2LT5yZnQsIG1heF9maWZvX3RocmVzaG9sZCk7CisJCXByaXYtPnJmdCA9IG1heF9m aWZvX3RocmVzaG9sZDsKIAl9CiAKLQlhbWJhX3NldF9kcnZkYXRhKGFkZXYsIGRldik7CisJYW1i YV9zZXRfZHJ2ZGF0YShhZGV2LCBwcml2KTsKIAotCWRldi0+dmlydGJhc2UgPSBkZXZtX2lvcmVt YXAoJmFkZXYtPmRldiwgYWRldi0+cmVzLnN0YXJ0LAotCQkJCXJlc291cmNlX3NpemUoJmFkZXYt PnJlcykpOwotCWlmICghZGV2LT52aXJ0YmFzZSkKKwlwcml2LT52aXJ0YmFzZSA9IGRldm1faW9y ZW1hcChkZXYsIGFkZXYtPnJlcy5zdGFydCwKKwkJCQkgICAgICByZXNvdXJjZV9zaXplKCZhZGV2 LT5yZXMpKTsKKwlpZiAoIXByaXYtPnZpcnRiYXNlKQogCQlyZXR1cm4gLUVOT01FTTsKIAotCWRl di0+aXJxID0gYWRldi0+aXJxWzBdOwotCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoJmFkZXYtPmRl diwgZGV2LT5pcnEsIGkyY19pcnFfaGFuZGxlciwgMCwKLQkJCQlEUklWRVJfTkFNRSwgZGV2KTsK Kwlwcml2LT5pcnEgPSBhZGV2LT5pcnFbMF07CisJcmV0ID0gZGV2bV9yZXF1ZXN0X2lycShkZXYs IHByaXYtPmlycSwgaTJjX2lycV9oYW5kbGVyLCAwLAorCQkJICAgICAgIERSSVZFUl9OQU1FLCBw cml2KTsKIAlpZiAocmV0KQotCQlyZXR1cm4gZGV2X2Vycl9wcm9iZSgmYWRldi0+ZGV2LCByZXQs Ci0JCQkJICAgICAiY2Fubm90IGNsYWltIHRoZSBpcnEgJWRcbiIsIGRldi0+aXJxKTsKKwkJcmV0 dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByZXQsCisJCQkJICAgICAiY2Fubm90IGNsYWltIHRoZSBp cnEgJWRcbiIsIHByaXYtPmlycSk7CiAKLQlkZXYtPmNsayA9IGRldm1fY2xrX2dldF9lbmFibGVk KCZhZGV2LT5kZXYsIE5VTEwpOwotCWlmIChJU19FUlIoZGV2LT5jbGspKQotCQlyZXR1cm4gZGV2 X2Vycl9wcm9iZSgmYWRldi0+ZGV2LCBQVFJfRVJSKGRldi0+Y2xrKSwKKwlwcml2LT5jbGsgPSBk ZXZtX2Nsa19nZXRfZW5hYmxlZChkZXYsIE5VTEwpOworCWlmIChJU19FUlIocHJpdi0+Y2xrKSkK KwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKHByaXYtPmNsayksCiAJCQkJICAg ICAiY291bGQgZW5hYmxlIGkyYyBjbG9ja1xuIik7CiAKLQlpbml0X2h3KGRldik7CisJaW5pdF9o dyhwcml2KTsKIAotCWFkYXAgPSAmZGV2LT5hZGFwOworCWFkYXAgPSAmcHJpdi0+YWRhcDsKIAlh ZGFwLT5kZXYub2Zfbm9kZSA9IG5wOwotCWFkYXAtPmRldi5wYXJlbnQgPSAmYWRldi0+ZGV2Owor CWFkYXAtPmRldi5wYXJlbnQgPSBkZXY7CiAJYWRhcC0+b3duZXIgPSBUSElTX01PRFVMRTsKIAlh ZGFwLT5jbGFzcyA9IEkyQ19DTEFTU19ERVBSRUNBVEVEOwogCWFkYXAtPmFsZ28gPSAmbm1rX2ky Y19hbGdvOwotCWFkYXAtPnRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzKGRldi0+dGltZW91dCk7 CisJYWRhcC0+dGltZW91dCA9IG1zZWNzX3RvX2ppZmZpZXMocHJpdi0+dGltZW91dCk7CiAJc25w cmludGYoYWRhcC0+bmFtZSwgc2l6ZW9mKGFkYXAtPm5hbWUpLAogCQkgIk5vbWFkaWsgSTJDIGF0 ICVwUiIsICZhZGV2LT5yZXMpOwogCi0JaTJjX3NldF9hZGFwZGF0YShhZGFwLCBkZXYpOworCWky Y19zZXRfYWRhcGRhdGEoYWRhcCwgcHJpdik7CiAKLQlkZXZfaW5mbygmYWRldi0+ZGV2LAorCWRl dl9pbmZvKGRldiwKIAkJICJpbml0aWFsaXplICVzIG9uIHZpcnR1YWwgYmFzZSAlcFxuIiwKLQkJ IGFkYXAtPm5hbWUsIGRldi0+dmlydGJhc2UpOworCQkgYWRhcC0+bmFtZSwgcHJpdi0+dmlydGJh c2UpOwogCiAJcmV0ID0gaTJjX2FkZF9hZGFwdGVyKGFkYXApOwogCWlmIChyZXQpCiAJCXJldHVy biByZXQ7CiAKLQlwbV9ydW50aW1lX3B1dCgmYWRldi0+ZGV2KTsKKwlwbV9ydW50aW1lX3B1dChk ZXYpOwogCiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkIG5ta19pMmNfcmVtb3ZlKHN0cnVj dCBhbWJhX2RldmljZSAqYWRldikKIHsKLQlzdHJ1Y3Qgbm1rX2kyY19kZXYgKmRldiA9IGFtYmFf Z2V0X2RydmRhdGEoYWRldik7CisJc3RydWN0IG5ta19pMmNfZGV2ICpwcml2ID0gYW1iYV9nZXRf ZHJ2ZGF0YShhZGV2KTsKIAotCWkyY19kZWxfYWRhcHRlcigmZGV2LT5hZGFwKTsKLQlmbHVzaF9p MmNfZmlmbyhkZXYpOwotCWRpc2FibGVfYWxsX2ludGVycnVwdHMoZGV2KTsKLQljbGVhcl9hbGxf aW50ZXJydXB0cyhkZXYpOworCWkyY19kZWxfYWRhcHRlcigmcHJpdi0+YWRhcCk7CisJZmx1c2hf aTJjX2ZpZm8ocHJpdik7CisJZGlzYWJsZV9hbGxfaW50ZXJydXB0cyhwcml2KTsKKwljbGVhcl9h bGxfaW50ZXJydXB0cyhwcml2KTsKIAkvKiBkaXNhYmxlIHRoZSBjb250cm9sbGVyICovCi0JaTJj X2Nscl9iaXQoZGV2LT52aXJ0YmFzZSArIEkyQ19DUiwgSTJDX0NSX1BFKTsKKwlpMmNfY2xyX2Jp dChwcml2LT52aXJ0YmFzZSArIEkyQ19DUiwgSTJDX0NSX1BFKTsKIH0KIAogc3RhdGljIHN0cnVj dCBpMmNfdmVuZG9yX2RhdGEgdmVuZG9yX3N0bjg4MTUgPSB7CgotLSAKMi40My4xCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5l bCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=