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 CB31BC636CD for ; Wed, 1 Feb 2023 14:16:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232282AbjBAOQ3 (ORCPT ); Wed, 1 Feb 2023 09:16:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35694 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232280AbjBAOQ2 (ORCPT ); Wed, 1 Feb 2023 09:16:28 -0500 Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com [IPv6:2a00:1450:4864:20::632]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4C48131E24 for ; Wed, 1 Feb 2023 06:16:27 -0800 (PST) Received: by mail-ej1-x632.google.com with SMTP id lu11so14505646ejb.3 for ; Wed, 01 Feb 2023 06:16:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2+QI71SDLqYU1/ObAyQOpTSEtqikOAQsZZOXnStGri4=; b=pLD9W7EMIeyzAhYJ8VCIA4ag3xYM+szsQxVHyecdUbvei93o2CZAlIWCUrrJ1CFJ89 4RBI7ZtQ6ygvmOTCC8s47iQgKJ8doqX7VDOMY5MSgtszWoy9/6Qjqbzs4smPvsXk7IrP cWwaGIERZJH611bcBn9C+gyBSH/27AmP2qgfe9ARQxW/OX7fq8y9d9ibzfuLCVEWS1NR sEDffUKNm2hpM2VwUVohqn8DEQdxZ9z6B5AUHWH19Uv+MSWdyBmSI3kHmOW08294qQzq uymMOGDylapJ9LZb3/ElPapW/r4oNnQnsdeig2uDTB3Q7CSygh/sbA2aNO2KfRF943/3 6dAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2+QI71SDLqYU1/ObAyQOpTSEtqikOAQsZZOXnStGri4=; b=7AqzfHwac5WcQqC58UmH/7RC7IosLJ4HE/ko02aolGdzOUUhvB8ZTSB4ps3qb6eq1r acxQYAxzKS2kP6W+NLKKwLtfsQKncnZYroWvzYzJqmeNYB00lHRjvHAMI3dCbXIeA41d gSxb4AD1IkXSQoLTMJDvvTkKXL4Ad4DlyEjVOdTi655zdKahdiLq8yPKk0Unf0PXcy64 aem3VNxoN2w/KfeQcXou32t32yVwBeD843IZ52qN6A9h/DA7HLE8UDQxMrYF8AEfx3UB Hsxd4q5Ag6dgab5xib3KdqeqrdcKP1GdzAWrxwzU54f9kHHKYg2JrQ7+nKMiiyzlpU8P Rd7w== X-Gm-Message-State: AO0yUKWnR5hRnU2WiQl7L+8cvvdfioo8K2Pe5biwkwUFyL/eS7Q0WMdU rre4sCLapl5YcJ5MCQoiectDtu1HHTw= X-Google-Smtp-Source: AK7set839G/LnYVz8SmQM0Cg+InJgI1jQOQz8bpVVNL1xT/EGxzzD/qDypvutV5D4bwyKLnZKiH4Bg== X-Received: by 2002:a17:906:b7d7:b0:88d:fe1:1aca with SMTP id fy23-20020a170906b7d700b0088d0fe11acamr2569210ejb.34.1675260985848; Wed, 01 Feb 2023 06:16:25 -0800 (PST) Received: from osv.localdomain ([89.175.180.246]) by smtp.gmail.com with ESMTPSA id p7-20020a170906b20700b0088478517830sm6500468ejz.83.2023.02.01.06.16.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Feb 2023 06:16:25 -0800 (PST) From: Sergey Organov To: Greg Kroah-Hartman Cc: linux-serial@vger.kernel.org, Fabio Estevam , Jiri Slaby , Richard Genoud , Sascha Hauer , Shawn Guo , Tim Harvey , =?UTF-8?q?Tomasz=20Mo=C5=84?= , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Johan Hovold , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Sherry Sun , Stefan Wahren , linux-arm-kernel@lists.infradead.org, NXP Linux Team , Pengutronix Kernel Team , Sergey Organov Subject: [PATCH RESEND] serial: imx: get rid of registers shadowing Date: Wed, 1 Feb 2023 17:16:03 +0300 Message-Id: <20230201141603.4205-1-sorganov@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <87bko4e65y.fsf@osv.gnss.ru> References: <87bko4e65y.fsf@osv.gnss.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-serial@vger.kernel.org Neither registers shadowing is functionally needed as all the registers are read-write, nor the shadowing makes much sense for speed-up, as most speed critical reads/writes (of data Rx/Tx registers) are not shadowed anyway. Moreover, the shadowing code is obviously pure overhead on the write path. Get rid of the shadowing code and variables due to above considerations. Signed-off-by: Sergey Organov --- NOTE: This patch is extracted from patch series "[PATCH 0/8] serial: imx: work-around for hardware RX flood, and then isr improvements" due to objection of Uwe Kleine-König . I still believe this is an improvement, so I re-submit the patch separately. drivers/tty/serial/imx.c | 65 ++-------------------------------------- 1 file changed, 3 insertions(+), 62 deletions(-) diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c index 757825edb0cd..f4e2db21d0fe 100644 --- a/drivers/tty/serial/imx.c +++ b/drivers/tty/serial/imx.c @@ -210,13 +210,6 @@ struct imx_port { struct mctrl_gpios *gpios; - /* shadow registers */ - unsigned int ucr1; - unsigned int ucr2; - unsigned int ucr3; - unsigned int ucr4; - unsigned int ufcr; - /* DMA fields */ unsigned int dma_is_enabled:1; unsigned int dma_is_rxing:1; @@ -273,59 +266,14 @@ static const struct of_device_id imx_uart_dt_ids[] = { }; MODULE_DEVICE_TABLE(of, imx_uart_dt_ids); -static void imx_uart_writel(struct imx_port *sport, u32 val, u32 offset) +static inline void imx_uart_writel(struct imx_port *sport, u32 val, u32 offset) { - switch (offset) { - case UCR1: - sport->ucr1 = val; - break; - case UCR2: - sport->ucr2 = val; - break; - case UCR3: - sport->ucr3 = val; - break; - case UCR4: - sport->ucr4 = val; - break; - case UFCR: - sport->ufcr = val; - break; - default: - break; - } writel(val, sport->port.membase + offset); } -static u32 imx_uart_readl(struct imx_port *sport, u32 offset) +static inline u32 imx_uart_readl(struct imx_port *sport, u32 offset) { - switch (offset) { - case UCR1: - return sport->ucr1; - break; - case UCR2: - /* - * UCR2_SRST is the only bit in the cached registers that might - * differ from the value that was last written. As it only - * automatically becomes one after being cleared, reread - * conditionally. - */ - if (!(sport->ucr2 & UCR2_SRST)) - sport->ucr2 = readl(sport->port.membase + offset); - return sport->ucr2; - break; - case UCR3: - return sport->ucr3; - break; - case UCR4: - return sport->ucr4; - break; - case UFCR: - return sport->ufcr; - break; - default: - return readl(sport->port.membase + offset); - } + return readl(sport->port.membase + offset); } static inline unsigned imx_uart_uts_reg(struct imx_port *sport) @@ -2340,13 +2288,6 @@ static int imx_uart_probe(struct platform_device *pdev) return ret; } - /* initialize shadow register values */ - sport->ucr1 = readl(sport->port.membase + UCR1); - sport->ucr2 = readl(sport->port.membase + UCR2); - sport->ucr3 = readl(sport->port.membase + UCR3); - sport->ucr4 = readl(sport->port.membase + UCR4); - sport->ufcr = readl(sport->port.membase + UFCR); - ret = uart_get_rs485_mode(&sport->port); if (ret) { clk_disable_unprepare(sport->clk_ipg); base-commit: 40c18f363a0806d4f566e8a9a9bd2d7766a72cf5 -- 2.30.1 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 94D79C636CD for ; Wed, 1 Feb 2023 14:34: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=5c3A1gDtCJVAbMPF2rDGHsxyUZOwhmQdcHCvXEWvWAQ=; b=bPQMlEXjSmxYHW pPeEBTzAi6uqM9c2sZUvMlusXWa2qPVopzh9p0r9I0xJGOD4ooemlpPilxDjcWj9ceiQKKJaDxoOo 5gYcEB64I3v39aWs0B5qRwbeqmnlyefup6JZHS4oGYp+rpOjxyArZcBaV1fCzCcfYDjFSb77kEVep fY7ubsxT5uKl4qLB/VY6r+ye/IQpOiqJyt7G+8i1W2FP5j5dEQgETKCW7OnoapKyRO+C7ybT6eZ+h CwshF1ElOZSgn2L9m+z3y76fqMuos0hCN4Lyc1SFfLwZBq3Zo13mcqJzr2Vr3VMnhTEAvZjMTwpan yagCpvENfpPN/7RsxKOg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pNEAx-00CO7x-7H; Wed, 01 Feb 2023 14:33:27 +0000 Received: from mail-ej1-x632.google.com ([2a00:1450:4864:20::632]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pNDuW-00CHFa-Cn for linux-arm-kernel@lists.infradead.org; Wed, 01 Feb 2023 14:16:29 +0000 Received: by mail-ej1-x632.google.com with SMTP id me3so51835148ejb.7 for ; Wed, 01 Feb 2023 06:16:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2+QI71SDLqYU1/ObAyQOpTSEtqikOAQsZZOXnStGri4=; b=pLD9W7EMIeyzAhYJ8VCIA4ag3xYM+szsQxVHyecdUbvei93o2CZAlIWCUrrJ1CFJ89 4RBI7ZtQ6ygvmOTCC8s47iQgKJ8doqX7VDOMY5MSgtszWoy9/6Qjqbzs4smPvsXk7IrP cWwaGIERZJH611bcBn9C+gyBSH/27AmP2qgfe9ARQxW/OX7fq8y9d9ibzfuLCVEWS1NR sEDffUKNm2hpM2VwUVohqn8DEQdxZ9z6B5AUHWH19Uv+MSWdyBmSI3kHmOW08294qQzq uymMOGDylapJ9LZb3/ElPapW/r4oNnQnsdeig2uDTB3Q7CSygh/sbA2aNO2KfRF943/3 6dAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2+QI71SDLqYU1/ObAyQOpTSEtqikOAQsZZOXnStGri4=; b=nzRirzGwpN/1t/Kv7Apc71YTMaCuiEZtlnB5CjmgfSoQQE3HpSZznIbwBPO7U2CC5U zewTKSLhrM+OqHgAwyUZry1CgFXhTB+U2i3T7D00dJfTsP44/rFZ/cIC1vh5Tx/8eQMj QNFRdagHmGH7IwEss5DmddezA17Z/3PTtAzNeL/Kb+/ZDtM+LRJkpx56/cHrSn7GoAb1 Q5zx6j6550II1DzXytxquyfqa+OKCQKYRzucZjDibgr9APAYDOghINE1dOpwXgqFBDkd TnHhG7edV9yQJSlulIvmsoMtuLgL940NZcPmnGQYztp/a1Nt688F+0DdhNSnHQq7l+hd XzHg== X-Gm-Message-State: AO0yUKWoXMqZD1sf1PcUo6WlQLPA5fWpXKZfJemQjplnVldAkP5LmxPN PiVxZXJeqF3H3k3Ff4KmNMs= X-Google-Smtp-Source: AK7set839G/LnYVz8SmQM0Cg+InJgI1jQOQz8bpVVNL1xT/EGxzzD/qDypvutV5D4bwyKLnZKiH4Bg== X-Received: by 2002:a17:906:b7d7:b0:88d:fe1:1aca with SMTP id fy23-20020a170906b7d700b0088d0fe11acamr2569210ejb.34.1675260985848; Wed, 01 Feb 2023 06:16:25 -0800 (PST) Received: from osv.localdomain ([89.175.180.246]) by smtp.gmail.com with ESMTPSA id p7-20020a170906b20700b0088478517830sm6500468ejz.83.2023.02.01.06.16.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Feb 2023 06:16:25 -0800 (PST) From: Sergey Organov To: Greg Kroah-Hartman Cc: linux-serial@vger.kernel.org, Fabio Estevam , Jiri Slaby , Richard Genoud , Sascha Hauer , Shawn Guo , Tim Harvey , =?UTF-8?q?Tomasz=20Mo=C5=84?= , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= , Johan Hovold , =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= , Sherry Sun , Stefan Wahren , linux-arm-kernel@lists.infradead.org, NXP Linux Team , Pengutronix Kernel Team , Sergey Organov Subject: [PATCH RESEND] serial: imx: get rid of registers shadowing Date: Wed, 1 Feb 2023 17:16:03 +0300 Message-Id: <20230201141603.4205-1-sorganov@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <87bko4e65y.fsf@osv.gnss.ru> References: <87bko4e65y.fsf@osv.gnss.ru> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230201_061628_474099_444AC0D6 X-CRM114-Status: GOOD ( 20.63 ) 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 TmVpdGhlciByZWdpc3RlcnMgc2hhZG93aW5nIGlzIGZ1bmN0aW9uYWxseSBuZWVkZWQgYXMgYWxs IHRoZSByZWdpc3RlcnMgYXJlCnJlYWQtd3JpdGUsIG5vciB0aGUgc2hhZG93aW5nIG1ha2VzIG11 Y2ggc2Vuc2UgZm9yIHNwZWVkLXVwLCBhcyBtb3N0IHNwZWVkCmNyaXRpY2FsIHJlYWRzL3dyaXRl cyAob2YgZGF0YSBSeC9UeCByZWdpc3RlcnMpIGFyZSBub3Qgc2hhZG93ZWQgYW55d2F5LgpNb3Jl b3ZlciwgdGhlIHNoYWRvd2luZyBjb2RlIGlzIG9idmlvdXNseSBwdXJlIG92ZXJoZWFkIG9uIHRo ZSB3cml0ZSBwYXRoLgoKR2V0IHJpZCBvZiB0aGUgc2hhZG93aW5nIGNvZGUgYW5kIHZhcmlhYmxl cyBkdWUgdG8gYWJvdmUgY29uc2lkZXJhdGlvbnMuCgpTaWduZWQtb2ZmLWJ5OiBTZXJnZXkgT3Jn YW5vdiA8c29yZ2Fub3ZAZ21haWwuY29tPgotLS0KCk5PVEU6IFRoaXMgcGF0Y2ggaXMgZXh0cmFj dGVkIGZyb20gcGF0Y2ggc2VyaWVzICJbUEFUQ0ggMC84XSBzZXJpYWw6IGlteDoKd29yay1hcm91 bmQgZm9yIGhhcmR3YXJlIFJYIGZsb29kLCBhbmQgdGhlbiBpc3IgaW1wcm92ZW1lbnRzIiBkdWUg dG8Kb2JqZWN0aW9uIG9mIFV3ZSBLbGVpbmUtS8O2bmlnIDx1LmtsZWluZS1rb2VuaWdAcGVuZ3V0 cm9uaXguZGU+LiBJIHN0aWxsCmJlbGlldmUgdGhpcyBpcyBhbiBpbXByb3ZlbWVudCwgc28gSSBy ZS1zdWJtaXQgdGhlIHBhdGNoIHNlcGFyYXRlbHkuCgogZHJpdmVycy90dHkvc2VyaWFsL2lteC5j IHwgNjUgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNo YW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy90dHkvc2VyaWFsL2lteC5jIGIvZHJpdmVycy90dHkvc2VyaWFsL2lteC5jCmluZGV4IDc1 NzgyNWVkYjBjZC4uZjRlMmRiMjFkMGZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwv aW14LmMKKysrIGIvZHJpdmVycy90dHkvc2VyaWFsL2lteC5jCkBAIC0yMTAsMTMgKzIxMCw2IEBA IHN0cnVjdCBpbXhfcG9ydCB7CiAKIAlzdHJ1Y3QgbWN0cmxfZ3Bpb3MgKmdwaW9zOwogCi0JLyog c2hhZG93IHJlZ2lzdGVycyAqLwotCXVuc2lnbmVkIGludCB1Y3IxOwotCXVuc2lnbmVkIGludCB1 Y3IyOwotCXVuc2lnbmVkIGludCB1Y3IzOwotCXVuc2lnbmVkIGludCB1Y3I0OwotCXVuc2lnbmVk IGludCB1ZmNyOwotCiAJLyogRE1BIGZpZWxkcyAqLwogCXVuc2lnbmVkIGludAkJZG1hX2lzX2Vu YWJsZWQ6MTsKIAl1bnNpZ25lZCBpbnQJCWRtYV9pc19yeGluZzoxOwpAQCAtMjczLDU5ICsyNjYs MTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgaW14X3VhcnRfZHRfaWRzW10g PSB7CiB9OwogTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaW14X3VhcnRfZHRfaWRzKTsKIAotc3Rh dGljIHZvaWQgaW14X3VhcnRfd3JpdGVsKHN0cnVjdCBpbXhfcG9ydCAqc3BvcnQsIHUzMiB2YWws IHUzMiBvZmZzZXQpCitzdGF0aWMgaW5saW5lIHZvaWQgaW14X3VhcnRfd3JpdGVsKHN0cnVjdCBp bXhfcG9ydCAqc3BvcnQsIHUzMiB2YWwsIHUzMiBvZmZzZXQpCiB7Ci0Jc3dpdGNoIChvZmZzZXQp IHsKLQljYXNlIFVDUjE6Ci0JCXNwb3J0LT51Y3IxID0gdmFsOwotCQlicmVhazsKLQljYXNlIFVD UjI6Ci0JCXNwb3J0LT51Y3IyID0gdmFsOwotCQlicmVhazsKLQljYXNlIFVDUjM6Ci0JCXNwb3J0 LT51Y3IzID0gdmFsOwotCQlicmVhazsKLQljYXNlIFVDUjQ6Ci0JCXNwb3J0LT51Y3I0ID0gdmFs OwotCQlicmVhazsKLQljYXNlIFVGQ1I6Ci0JCXNwb3J0LT51ZmNyID0gdmFsOwotCQlicmVhazsK LQlkZWZhdWx0OgotCQlicmVhazsKLQl9CiAJd3JpdGVsKHZhbCwgc3BvcnQtPnBvcnQubWVtYmFz ZSArIG9mZnNldCk7CiB9CiAKLXN0YXRpYyB1MzIgaW14X3VhcnRfcmVhZGwoc3RydWN0IGlteF9w b3J0ICpzcG9ydCwgdTMyIG9mZnNldCkKK3N0YXRpYyBpbmxpbmUgdTMyIGlteF91YXJ0X3JlYWRs KHN0cnVjdCBpbXhfcG9ydCAqc3BvcnQsIHUzMiBvZmZzZXQpCiB7Ci0Jc3dpdGNoIChvZmZzZXQp IHsKLQljYXNlIFVDUjE6Ci0JCXJldHVybiBzcG9ydC0+dWNyMTsKLQkJYnJlYWs7Ci0JY2FzZSBV Q1IyOgotCQkvKgotCQkgKiBVQ1IyX1NSU1QgaXMgdGhlIG9ubHkgYml0IGluIHRoZSBjYWNoZWQg cmVnaXN0ZXJzIHRoYXQgbWlnaHQKLQkJICogZGlmZmVyIGZyb20gdGhlIHZhbHVlIHRoYXQgd2Fz IGxhc3Qgd3JpdHRlbi4gQXMgaXQgb25seQotCQkgKiBhdXRvbWF0aWNhbGx5IGJlY29tZXMgb25l IGFmdGVyIGJlaW5nIGNsZWFyZWQsIHJlcmVhZAotCQkgKiBjb25kaXRpb25hbGx5LgotCQkgKi8K LQkJaWYgKCEoc3BvcnQtPnVjcjIgJiBVQ1IyX1NSU1QpKQotCQkJc3BvcnQtPnVjcjIgPSByZWFk bChzcG9ydC0+cG9ydC5tZW1iYXNlICsgb2Zmc2V0KTsKLQkJcmV0dXJuIHNwb3J0LT51Y3IyOwot CQlicmVhazsKLQljYXNlIFVDUjM6Ci0JCXJldHVybiBzcG9ydC0+dWNyMzsKLQkJYnJlYWs7Ci0J Y2FzZSBVQ1I0OgotCQlyZXR1cm4gc3BvcnQtPnVjcjQ7Ci0JCWJyZWFrOwotCWNhc2UgVUZDUjoK LQkJcmV0dXJuIHNwb3J0LT51ZmNyOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlyZXR1cm4gcmVh ZGwoc3BvcnQtPnBvcnQubWVtYmFzZSArIG9mZnNldCk7Ci0JfQorCXJldHVybiByZWFkbChzcG9y dC0+cG9ydC5tZW1iYXNlICsgb2Zmc2V0KTsKIH0KIAogc3RhdGljIGlubGluZSB1bnNpZ25lZCBp bXhfdWFydF91dHNfcmVnKHN0cnVjdCBpbXhfcG9ydCAqc3BvcnQpCkBAIC0yMzQwLDEzICsyMjg4 LDYgQEAgc3RhdGljIGludCBpbXhfdWFydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpw ZGV2KQogCQlyZXR1cm4gcmV0OwogCX0KIAotCS8qIGluaXRpYWxpemUgc2hhZG93IHJlZ2lzdGVy IHZhbHVlcyAqLwotCXNwb3J0LT51Y3IxID0gcmVhZGwoc3BvcnQtPnBvcnQubWVtYmFzZSArIFVD UjEpOwotCXNwb3J0LT51Y3IyID0gcmVhZGwoc3BvcnQtPnBvcnQubWVtYmFzZSArIFVDUjIpOwot CXNwb3J0LT51Y3IzID0gcmVhZGwoc3BvcnQtPnBvcnQubWVtYmFzZSArIFVDUjMpOwotCXNwb3J0 LT51Y3I0ID0gcmVhZGwoc3BvcnQtPnBvcnQubWVtYmFzZSArIFVDUjQpOwotCXNwb3J0LT51ZmNy ID0gcmVhZGwoc3BvcnQtPnBvcnQubWVtYmFzZSArIFVGQ1IpOwotCiAJcmV0ID0gdWFydF9nZXRf cnM0ODVfbW9kZSgmc3BvcnQtPnBvcnQpOwogCWlmIChyZXQpIHsKIAkJY2xrX2Rpc2FibGVfdW5w cmVwYXJlKHNwb3J0LT5jbGtfaXBnKTsKCmJhc2UtY29tbWl0OiA0MGMxOGYzNjNhMDgwNmQ0ZjU2 NmU4YTlhOWJkMmQ3NzY2YTcyY2Y1Ci0tIAoyLjMwLjEKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdAps aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVh ZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==