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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E0C4CC433FE for ; Tue, 21 Dec 2021 10:46:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236758AbhLUKqS (ORCPT ); Tue, 21 Dec 2021 05:46:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50784 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234841AbhLUKqO (ORCPT ); Tue, 21 Dec 2021 05:46:14 -0500 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C5512C06173F for ; Tue, 21 Dec 2021 02:46:13 -0800 (PST) Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mzcel-0005BN-V1; Tue, 21 Dec 2021 11:46:08 +0100 Received: from [2a0a:edc0:0:900:1d::77] (helo=ptz.office.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1mzcei-005ng5-TZ; Tue, 21 Dec 2021 11:46:04 +0100 Received: from ukl by ptz.office.stw.pengutronix.de with local (Exim 4.92) (envelope-from ) id 1mzceh-0004CE-JM; Tue, 21 Dec 2021 11:46:03 +0100 From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= To: Fabrice Gasnier , William Breathitt Gray , Maxime Coquelin , Alexandre Torgue Cc: linux-iio@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 6/8] counter: stm32-lptimer-cnt: Use container_of instead of struct counter_device::priv Date: Tue, 21 Dec 2021 11:45:44 +0100 Message-Id: <20211221104546.214066-7-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211221104546.214066-1-u.kleine-koenig@pengutronix.de> References: <20211221104546.214066-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Patch-Hashes: v=1; h=sha256; i=1HOXp2/duyo6n/2D4QQ5RE3nJbn3xI4q4e0n+QcZL4o=; m=kIc7VsSS0WRvJXcgL7haggwSGZnZfnb/5UpfyeNoh+I=; p=bQvWuGWMnZ1NXlmcBpZTTro6PdXlihtuS79lnHsi8WA=; g=b00ec8495b7403537c3bc26005bb71ad27f8b411 X-Patch-Sig: m=pgp; i=u.kleine-koenig@pengutronix.de; s=0x0D2511F322BFAB1C1580266BE2DCDD9132669BD6; b=iQEzBAABCgAdFiEEfnIqFpAYrP8+dKQLwfwUeK3K7AkFAmHBsEYACgkQwfwUeK3K7AkBRgf+I3T 09U/qrDBmUGLwlot6PnfpTnrDpXaZeHRO29u5clIrtVMauKmCzqEWxoIBCHse9BiJU9MZcnBNS5Qk sDFXPjn8IrKwIoTloWjEIzyzIF6x4MjX6n6w+NbeC2apl2vMKiYmOMJLF08vO9yfReXQVcnY9quhy HMDCm+xeFAt6h2axCGg7Og4arWLAXJrsdooewiS4ZdK1wHkWt6x9+rdO6x9sKhCndefH2vq/QEi5h CLrlHoTzc/mkUoC28ifXGCRyRIKUIOlLdwvKwmpKd3X3SFsUR8kNM+IXVa1chI9N+skNPsoezw0xJ XGp7KYwWM0A0EuB3rXXnHYQaeaJKeew== Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Using counter->priv is a memory read and so more expensive than container_of which is only an addition. (In this case even a noop because the offset is 0.) So container_of is expected to be a tad faster, it's type-safe, and produces smaller code (ARCH=arm allmodconfig): add/remove: 0/0 grow/shrink: 0/10 up/down: 0/-140 (-140) Function old new delta stm32_lptim_cnt_read 272 260 -12 stm32_lptim_cnt_probe 528 516 -12 stm32_lptim_cnt_function_write 420 408 -12 stm32_lptim_cnt_function_read 184 172 -12 stm32_lptim_cnt_enable_write 436 424 -12 stm32_lptim_cnt_enable_read 312 300 -12 stm32_lptim_cnt_ceiling_write 368 356 -12 stm32_lptim_cnt_ceiling_read 84 72 -12 stm32_lptim_cnt_action_read 388 376 -12 stm32_lptim_cnt_action_write 576 544 -32 Total: Before=6458, After=6318, chg -2.17% Signed-off-by: Uwe Kleine-König --- drivers/counter/stm32-lptimer-cnt.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/drivers/counter/stm32-lptimer-cnt.c b/drivers/counter/stm32-lptimer-cnt.c index 5168833b1fdf..c6eb3071571f 100644 --- a/drivers/counter/stm32-lptimer-cnt.c +++ b/drivers/counter/stm32-lptimer-cnt.c @@ -30,6 +30,11 @@ struct stm32_lptim_cnt { bool enabled; }; +static inline struct stm32_lptim_cnt *stm32_lptim_from_counter(struct counter_device *counter) +{ + return container_of(counter, struct stm32_lptim_cnt, counter); +} + static int stm32_lptim_is_enabled(struct stm32_lptim_cnt *priv) { u32 val; @@ -141,7 +146,7 @@ static const enum counter_synapse_action stm32_lptim_cnt_synapse_actions[] = { static int stm32_lptim_cnt_read(struct counter_device *counter, struct counter_count *count, u64 *val) { - struct stm32_lptim_cnt *const priv = counter->priv; + struct stm32_lptim_cnt *const priv = stm32_lptim_from_counter(counter); u32 cnt; int ret; @@ -158,7 +163,7 @@ static int stm32_lptim_cnt_function_read(struct counter_device *counter, struct counter_count *count, enum counter_function *function) { - struct stm32_lptim_cnt *const priv = counter->priv; + struct stm32_lptim_cnt *const priv = stm32_lptim_from_counter(counter); if (!priv->quadrature_mode) { *function = COUNTER_FUNCTION_INCREASE; @@ -177,7 +182,7 @@ static int stm32_lptim_cnt_function_write(struct counter_device *counter, struct counter_count *count, enum counter_function function) { - struct stm32_lptim_cnt *const priv = counter->priv; + struct stm32_lptim_cnt *const priv = stm32_lptim_from_counter(counter); if (stm32_lptim_is_enabled(priv)) return -EBUSY; @@ -200,7 +205,7 @@ static int stm32_lptim_cnt_enable_read(struct counter_device *counter, struct counter_count *count, u8 *enable) { - struct stm32_lptim_cnt *const priv = counter->priv; + struct stm32_lptim_cnt *const priv = stm32_lptim_from_counter(counter); int ret; ret = stm32_lptim_is_enabled(priv); @@ -216,7 +221,7 @@ static int stm32_lptim_cnt_enable_write(struct counter_device *counter, struct counter_count *count, u8 enable) { - struct stm32_lptim_cnt *const priv = counter->priv; + struct stm32_lptim_cnt *const priv = stm32_lptim_from_counter(counter); int ret; /* Check nobody uses the timer, or already disabled/enabled */ @@ -241,7 +246,7 @@ static int stm32_lptim_cnt_ceiling_read(struct counter_device *counter, struct counter_count *count, u64 *ceiling) { - struct stm32_lptim_cnt *const priv = counter->priv; + struct stm32_lptim_cnt *const priv = stm32_lptim_from_counter(counter); *ceiling = priv->ceiling; @@ -252,7 +257,7 @@ static int stm32_lptim_cnt_ceiling_write(struct counter_device *counter, struct counter_count *count, u64 ceiling) { - struct stm32_lptim_cnt *const priv = counter->priv; + struct stm32_lptim_cnt *const priv = stm32_lptim_from_counter(counter); if (stm32_lptim_is_enabled(priv)) return -EBUSY; @@ -277,7 +282,7 @@ static int stm32_lptim_cnt_action_read(struct counter_device *counter, struct counter_synapse *synapse, enum counter_synapse_action *action) { - struct stm32_lptim_cnt *const priv = counter->priv; + struct stm32_lptim_cnt *const priv = stm32_lptim_from_counter(counter); enum counter_function function; int err; @@ -321,7 +326,7 @@ static int stm32_lptim_cnt_action_write(struct counter_device *counter, struct counter_synapse *synapse, enum counter_synapse_action action) { - struct stm32_lptim_cnt *const priv = counter->priv; + struct stm32_lptim_cnt *const priv = stm32_lptim_from_counter(counter); enum counter_function function; int err; @@ -438,7 +443,6 @@ static int stm32_lptim_cnt_probe(struct platform_device *pdev) } priv->counter.num_counts = 1; priv->counter.signals = stm32_lptim_cnt_signals; - priv->counter.priv = priv; platform_set_drvdata(pdev, priv); -- 2.33.0 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 18A7FC433F5 for ; Tue, 21 Dec 2021 10:47:44 +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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Yq4dZt4eVm1kwDzrenWVzEtTLzxDjc/bPRm6QU2ixEE=; b=fAP9qaZwq7GE+K 9wXzLKasZyMJ3G5ol2IPKgkyu9G/EeEJRlp+hP3gqDleeQPXJwa5yaVZv0LIgjpLJqi4XmNtbDXDm UjZeLhCPVFXa3zg5JdPo50adG3HiiRhMo+PtifkDGhg6K2XUlTQEf+491mLTVT9nQI+MePuRmKAXB 4GLsLQRyTNZAiOF9888c4T49Fv263yPegfFXqp5qSQuU1SIATDb3ZF6EG27Wi2iVZRGVfwRYb2+ih fkKZf7Q+f+tWsbYzDn1OWdbeTS0hdrW97iXcd/e6wFdAZgcorvHtyhI54xuIP8ShYXycd+CsHHIf6 24Id+xoQa2PxGZ+AW7ZA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1mzcf4-006SjD-3X; Tue, 21 Dec 2021 10:46:26 +0000 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1mzcep-006Sd0-AA for linux-arm-kernel@lists.infradead.org; Tue, 21 Dec 2021 10:46:13 +0000 Received: from drehscheibe.grey.stw.pengutronix.de ([2a0a:edc0:0:c01:1d::a2]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mzcel-0005BN-V1; Tue, 21 Dec 2021 11:46:08 +0100 Received: from [2a0a:edc0:0:900:1d::77] (helo=ptz.office.stw.pengutronix.de) by drehscheibe.grey.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1mzcei-005ng5-TZ; Tue, 21 Dec 2021 11:46:04 +0100 Received: from ukl by ptz.office.stw.pengutronix.de with local (Exim 4.92) (envelope-from ) id 1mzceh-0004CE-JM; Tue, 21 Dec 2021 11:46:03 +0100 From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= To: Fabrice Gasnier , William Breathitt Gray , Maxime Coquelin , Alexandre Torgue Cc: linux-iio@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 6/8] counter: stm32-lptimer-cnt: Use container_of instead of struct counter_device::priv Date: Tue, 21 Dec 2021 11:45:44 +0100 Message-Id: <20211221104546.214066-7-u.kleine-koenig@pengutronix.de> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20211221104546.214066-1-u.kleine-koenig@pengutronix.de> References: <20211221104546.214066-1-u.kleine-koenig@pengutronix.de> MIME-Version: 1.0 X-Patch-Hashes: v=1; h=sha256; i=1HOXp2/duyo6n/2D4QQ5RE3nJbn3xI4q4e0n+QcZL4o=; m=kIc7VsSS0WRvJXcgL7haggwSGZnZfnb/5UpfyeNoh+I=; p=bQvWuGWMnZ1NXlmcBpZTTro6PdXlihtuS79lnHsi8WA=; g=b00ec8495b7403537c3bc26005bb71ad27f8b411 X-Patch-Sig: m=pgp; i=u.kleine-koenig@pengutronix.de; s=0x0D2511F322BFAB1C1580266BE2DCDD9132669BD6; b=iQEzBAABCgAdFiEEfnIqFpAYrP8+dKQLwfwUeK3K7AkFAmHBsEYACgkQwfwUeK3K7AkBRgf+I3T 09U/qrDBmUGLwlot6PnfpTnrDpXaZeHRO29u5clIrtVMauKmCzqEWxoIBCHse9BiJU9MZcnBNS5Qk sDFXPjn8IrKwIoTloWjEIzyzIF6x4MjX6n6w+NbeC2apl2vMKiYmOMJLF08vO9yfReXQVcnY9quhy HMDCm+xeFAt6h2axCGg7Og4arWLAXJrsdooewiS4ZdK1wHkWt6x9+rdO6x9sKhCndefH2vq/QEi5h CLrlHoTzc/mkUoC28ifXGCRyRIKUIOlLdwvKwmpKd3X3SFsUR8kNM+IXVa1chI9N+skNPsoezw0xJ XGp7KYwWM0A0EuB3rXXnHYQaeaJKeew== X-SA-Exim-Connect-IP: 2a0a:edc0:0:c01:1d::a2 X-SA-Exim-Mail-From: ukl@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-arm-kernel@lists.infradead.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20211221_024611_431902_B1EEDB0B X-CRM114-Status: GOOD ( 14.19 ) 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 VXNpbmcgY291bnRlci0+cHJpdiBpcyBhIG1lbW9yeSByZWFkIGFuZCBzbyBtb3JlIGV4cGVuc2l2 ZSB0aGFuCmNvbnRhaW5lcl9vZiB3aGljaCBpcyBvbmx5IGFuIGFkZGl0aW9uLiAoSW4gdGhpcyBj YXNlIGV2ZW4gYSBub29wCmJlY2F1c2UgdGhlIG9mZnNldCBpcyAwLikKClNvIGNvbnRhaW5lcl9v ZiBpcyBleHBlY3RlZCB0byBiZSBhIHRhZCBmYXN0ZXIsIGl0J3MgdHlwZS1zYWZlLCBhbmQKcHJv ZHVjZXMgc21hbGxlciBjb2RlIChBUkNIPWFybSBhbGxtb2Rjb25maWcpOgoKCWFkZC9yZW1vdmU6 IDAvMCBncm93L3NocmluazogMC8xMCB1cC9kb3duOiAwLy0xNDAgKC0xNDApCglGdW5jdGlvbiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQgICAgIG5ldyAgIGRlbHRhCglz dG0zMl9scHRpbV9jbnRfcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAyNzIgICAgIDI2MCAg ICAgLTEyCglzdG0zMl9scHRpbV9jbnRfcHJvYmUgICAgICAgICAgICAgICAgICAgICAgICA1Mjgg ICAgIDUxNiAgICAgLTEyCglzdG0zMl9scHRpbV9jbnRfZnVuY3Rpb25fd3JpdGUgICAgICAgICAg ICAgICA0MjAgICAgIDQwOCAgICAgLTEyCglzdG0zMl9scHRpbV9jbnRfZnVuY3Rpb25fcmVhZCAg ICAgICAgICAgICAgICAxODQgICAgIDE3MiAgICAgLTEyCglzdG0zMl9scHRpbV9jbnRfZW5hYmxl X3dyaXRlICAgICAgICAgICAgICAgICA0MzYgICAgIDQyNCAgICAgLTEyCglzdG0zMl9scHRpbV9j bnRfZW5hYmxlX3JlYWQgICAgICAgICAgICAgICAgICAzMTIgICAgIDMwMCAgICAgLTEyCglzdG0z Ml9scHRpbV9jbnRfY2VpbGluZ193cml0ZSAgICAgICAgICAgICAgICAzNjggICAgIDM1NiAgICAg LTEyCglzdG0zMl9scHRpbV9jbnRfY2VpbGluZ19yZWFkICAgICAgICAgICAgICAgICAgODQgICAg ICA3MiAgICAgLTEyCglzdG0zMl9scHRpbV9jbnRfYWN0aW9uX3JlYWQgICAgICAgICAgICAgICAg ICAzODggICAgIDM3NiAgICAgLTEyCglzdG0zMl9scHRpbV9jbnRfYWN0aW9uX3dyaXRlICAgICAg ICAgICAgICAgICA1NzYgICAgIDU0NCAgICAgLTMyCglUb3RhbDogQmVmb3JlPTY0NTgsIEFmdGVy PTYzMTgsIGNoZyAtMi4xNyUKClNpZ25lZC1vZmYtYnk6IFV3ZSBLbGVpbmUtS8O2bmlnIDx1Lmts ZWluZS1rb2VuaWdAcGVuZ3V0cm9uaXguZGU+Ci0tLQogZHJpdmVycy9jb3VudGVyL3N0bTMyLWxw dGltZXItY250LmMgfCAyNCArKysrKysrKysrKysrKy0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCAxNCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2NvdW50ZXIvc3RtMzItbHB0aW1lci1jbnQuYyBiL2RyaXZlcnMvY291bnRlci9zdG0zMi1scHRp bWVyLWNudC5jCmluZGV4IDUxNjg4MzNiMWZkZi4uYzZlYjMwNzE1NzFmIDEwMDY0NAotLS0gYS9k cml2ZXJzL2NvdW50ZXIvc3RtMzItbHB0aW1lci1jbnQuYworKysgYi9kcml2ZXJzL2NvdW50ZXIv c3RtMzItbHB0aW1lci1jbnQuYwpAQCAtMzAsNiArMzAsMTEgQEAgc3RydWN0IHN0bTMyX2xwdGlt X2NudCB7CiAJYm9vbCBlbmFibGVkOwogfTsKIAorc3RhdGljIGlubGluZSBzdHJ1Y3Qgc3RtMzJf bHB0aW1fY250ICpzdG0zMl9scHRpbV9mcm9tX2NvdW50ZXIoc3RydWN0IGNvdW50ZXJfZGV2aWNl ICpjb3VudGVyKQoreworCXJldHVybiBjb250YWluZXJfb2YoY291bnRlciwgc3RydWN0IHN0bTMy X2xwdGltX2NudCwgY291bnRlcik7Cit9CisKIHN0YXRpYyBpbnQgc3RtMzJfbHB0aW1faXNfZW5h YmxlZChzdHJ1Y3Qgc3RtMzJfbHB0aW1fY250ICpwcml2KQogewogCXUzMiB2YWw7CkBAIC0xNDEs NyArMTQ2LDcgQEAgc3RhdGljIGNvbnN0IGVudW0gY291bnRlcl9zeW5hcHNlX2FjdGlvbiBzdG0z Ml9scHRpbV9jbnRfc3luYXBzZV9hY3Rpb25zW10gPSB7CiBzdGF0aWMgaW50IHN0bTMyX2xwdGlt X2NudF9yZWFkKHN0cnVjdCBjb3VudGVyX2RldmljZSAqY291bnRlciwKIAkJCQlzdHJ1Y3QgY291 bnRlcl9jb3VudCAqY291bnQsIHU2NCAqdmFsKQogewotCXN0cnVjdCBzdG0zMl9scHRpbV9jbnQg KmNvbnN0IHByaXYgPSBjb3VudGVyLT5wcml2OworCXN0cnVjdCBzdG0zMl9scHRpbV9jbnQgKmNv bnN0IHByaXYgPSBzdG0zMl9scHRpbV9mcm9tX2NvdW50ZXIoY291bnRlcik7CiAJdTMyIGNudDsK IAlpbnQgcmV0OwogCkBAIC0xNTgsNyArMTYzLDcgQEAgc3RhdGljIGludCBzdG0zMl9scHRpbV9j bnRfZnVuY3Rpb25fcmVhZChzdHJ1Y3QgY291bnRlcl9kZXZpY2UgKmNvdW50ZXIsCiAJCQkJCSBz dHJ1Y3QgY291bnRlcl9jb3VudCAqY291bnQsCiAJCQkJCSBlbnVtIGNvdW50ZXJfZnVuY3Rpb24g KmZ1bmN0aW9uKQogewotCXN0cnVjdCBzdG0zMl9scHRpbV9jbnQgKmNvbnN0IHByaXYgPSBjb3Vu dGVyLT5wcml2OworCXN0cnVjdCBzdG0zMl9scHRpbV9jbnQgKmNvbnN0IHByaXYgPSBzdG0zMl9s cHRpbV9mcm9tX2NvdW50ZXIoY291bnRlcik7CiAKIAlpZiAoIXByaXYtPnF1YWRyYXR1cmVfbW9k ZSkgewogCQkqZnVuY3Rpb24gPSBDT1VOVEVSX0ZVTkNUSU9OX0lOQ1JFQVNFOwpAQCAtMTc3LDcg KzE4Miw3IEBAIHN0YXRpYyBpbnQgc3RtMzJfbHB0aW1fY250X2Z1bmN0aW9uX3dyaXRlKHN0cnVj dCBjb3VudGVyX2RldmljZSAqY291bnRlciwKIAkJCQkJICBzdHJ1Y3QgY291bnRlcl9jb3VudCAq Y291bnQsCiAJCQkJCSAgZW51bSBjb3VudGVyX2Z1bmN0aW9uIGZ1bmN0aW9uKQogewotCXN0cnVj dCBzdG0zMl9scHRpbV9jbnQgKmNvbnN0IHByaXYgPSBjb3VudGVyLT5wcml2OworCXN0cnVjdCBz dG0zMl9scHRpbV9jbnQgKmNvbnN0IHByaXYgPSBzdG0zMl9scHRpbV9mcm9tX2NvdW50ZXIoY291 bnRlcik7CiAKIAlpZiAoc3RtMzJfbHB0aW1faXNfZW5hYmxlZChwcml2KSkKIAkJcmV0dXJuIC1F QlVTWTsKQEAgLTIwMCw3ICsyMDUsNyBAQCBzdGF0aWMgaW50IHN0bTMyX2xwdGltX2NudF9lbmFi bGVfcmVhZChzdHJ1Y3QgY291bnRlcl9kZXZpY2UgKmNvdW50ZXIsCiAJCQkJICAgICAgIHN0cnVj dCBjb3VudGVyX2NvdW50ICpjb3VudCwKIAkJCQkgICAgICAgdTggKmVuYWJsZSkKIHsKLQlzdHJ1 Y3Qgc3RtMzJfbHB0aW1fY250ICpjb25zdCBwcml2ID0gY291bnRlci0+cHJpdjsKKwlzdHJ1Y3Qg c3RtMzJfbHB0aW1fY250ICpjb25zdCBwcml2ID0gc3RtMzJfbHB0aW1fZnJvbV9jb3VudGVyKGNv dW50ZXIpOwogCWludCByZXQ7CiAKIAlyZXQgPSBzdG0zMl9scHRpbV9pc19lbmFibGVkKHByaXYp OwpAQCAtMjE2LDcgKzIyMSw3IEBAIHN0YXRpYyBpbnQgc3RtMzJfbHB0aW1fY250X2VuYWJsZV93 cml0ZShzdHJ1Y3QgY291bnRlcl9kZXZpY2UgKmNvdW50ZXIsCiAJCQkJCXN0cnVjdCBjb3VudGVy X2NvdW50ICpjb3VudCwKIAkJCQkJdTggZW5hYmxlKQogewotCXN0cnVjdCBzdG0zMl9scHRpbV9j bnQgKmNvbnN0IHByaXYgPSBjb3VudGVyLT5wcml2OworCXN0cnVjdCBzdG0zMl9scHRpbV9jbnQg KmNvbnN0IHByaXYgPSBzdG0zMl9scHRpbV9mcm9tX2NvdW50ZXIoY291bnRlcik7CiAJaW50IHJl dDsKIAogCS8qIENoZWNrIG5vYm9keSB1c2VzIHRoZSB0aW1lciwgb3IgYWxyZWFkeSBkaXNhYmxl ZC9lbmFibGVkICovCkBAIC0yNDEsNyArMjQ2LDcgQEAgc3RhdGljIGludCBzdG0zMl9scHRpbV9j bnRfY2VpbGluZ19yZWFkKHN0cnVjdCBjb3VudGVyX2RldmljZSAqY291bnRlciwKIAkJCQkJc3Ry dWN0IGNvdW50ZXJfY291bnQgKmNvdW50LAogCQkJCQl1NjQgKmNlaWxpbmcpCiB7Ci0Jc3RydWN0 IHN0bTMyX2xwdGltX2NudCAqY29uc3QgcHJpdiA9IGNvdW50ZXItPnByaXY7CisJc3RydWN0IHN0 bTMyX2xwdGltX2NudCAqY29uc3QgcHJpdiA9IHN0bTMyX2xwdGltX2Zyb21fY291bnRlcihjb3Vu dGVyKTsKIAogCSpjZWlsaW5nID0gcHJpdi0+Y2VpbGluZzsKIApAQCAtMjUyLDcgKzI1Nyw3IEBA IHN0YXRpYyBpbnQgc3RtMzJfbHB0aW1fY250X2NlaWxpbmdfd3JpdGUoc3RydWN0IGNvdW50ZXJf ZGV2aWNlICpjb3VudGVyLAogCQkJCQkgc3RydWN0IGNvdW50ZXJfY291bnQgKmNvdW50LAogCQkJ CQkgdTY0IGNlaWxpbmcpCiB7Ci0Jc3RydWN0IHN0bTMyX2xwdGltX2NudCAqY29uc3QgcHJpdiA9 IGNvdW50ZXItPnByaXY7CisJc3RydWN0IHN0bTMyX2xwdGltX2NudCAqY29uc3QgcHJpdiA9IHN0 bTMyX2xwdGltX2Zyb21fY291bnRlcihjb3VudGVyKTsKIAogCWlmIChzdG0zMl9scHRpbV9pc19l bmFibGVkKHByaXYpKQogCQlyZXR1cm4gLUVCVVNZOwpAQCAtMjc3LDcgKzI4Miw3IEBAIHN0YXRp YyBpbnQgc3RtMzJfbHB0aW1fY250X2FjdGlvbl9yZWFkKHN0cnVjdCBjb3VudGVyX2RldmljZSAq Y291bnRlciwKIAkJCQkgICAgICAgc3RydWN0IGNvdW50ZXJfc3luYXBzZSAqc3luYXBzZSwKIAkJ CQkgICAgICAgZW51bSBjb3VudGVyX3N5bmFwc2VfYWN0aW9uICphY3Rpb24pCiB7Ci0Jc3RydWN0 IHN0bTMyX2xwdGltX2NudCAqY29uc3QgcHJpdiA9IGNvdW50ZXItPnByaXY7CisJc3RydWN0IHN0 bTMyX2xwdGltX2NudCAqY29uc3QgcHJpdiA9IHN0bTMyX2xwdGltX2Zyb21fY291bnRlcihjb3Vu dGVyKTsKIAllbnVtIGNvdW50ZXJfZnVuY3Rpb24gZnVuY3Rpb247CiAJaW50IGVycjsKIApAQCAt MzIxLDcgKzMyNiw3IEBAIHN0YXRpYyBpbnQgc3RtMzJfbHB0aW1fY250X2FjdGlvbl93cml0ZShz dHJ1Y3QgY291bnRlcl9kZXZpY2UgKmNvdW50ZXIsCiAJCQkJCXN0cnVjdCBjb3VudGVyX3N5bmFw c2UgKnN5bmFwc2UsCiAJCQkJCWVudW0gY291bnRlcl9zeW5hcHNlX2FjdGlvbiBhY3Rpb24pCiB7 Ci0Jc3RydWN0IHN0bTMyX2xwdGltX2NudCAqY29uc3QgcHJpdiA9IGNvdW50ZXItPnByaXY7CisJ c3RydWN0IHN0bTMyX2xwdGltX2NudCAqY29uc3QgcHJpdiA9IHN0bTMyX2xwdGltX2Zyb21fY291 bnRlcihjb3VudGVyKTsKIAllbnVtIGNvdW50ZXJfZnVuY3Rpb24gZnVuY3Rpb247CiAJaW50IGVy cjsKIApAQCAtNDM4LDcgKzQ0Myw2IEBAIHN0YXRpYyBpbnQgc3RtMzJfbHB0aW1fY250X3Byb2Jl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJfQogCXByaXYtPmNvdW50ZXIubnVtX2Nv dW50cyA9IDE7CiAJcHJpdi0+Y291bnRlci5zaWduYWxzID0gc3RtMzJfbHB0aW1fY250X3NpZ25h bHM7Ci0JcHJpdi0+Y291bnRlci5wcml2ID0gcHJpdjsKIAogCXBsYXRmb3JtX3NldF9kcnZkYXRh KHBkZXYsIHByaXYpOwogCi0tIAoyLjMzLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==