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 X-Spam-Level: X-Spam-Status: No, score=-13.0 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, UNWANTED_LANGUAGE_BODY autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 631A7C4338F for ; Sun, 25 Jul 2021 04:25:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 465F460F37 for ; Sun, 25 Jul 2021 04:25:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230318AbhGYDpN (ORCPT ); Sat, 24 Jul 2021 23:45:13 -0400 Received: from rere.qmqm.pl ([91.227.64.183]:11953 "EHLO rere.qmqm.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229853AbhGYDos (ORCPT ); Sat, 24 Jul 2021 23:44:48 -0400 Received: from remote.user (localhost [127.0.0.1]) by rere.qmqm.pl (Postfix) with ESMTPSA id 4GXVMy0Y69zht; Sun, 25 Jul 2021 06:25:18 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=rere.qmqm.pl; s=1; t=1627187118; bh=JnzVxee475iBfiNH+BjjYvpu8JabHTVnK4JSdiy7rOQ=; h=Date:In-Reply-To:References:From:Subject:To:Cc:From; b=rxz6wYb4WRweGi8n2z7mteZ+sk6ZvxhBTnsecurPUOGrxAcb8GQqn2ftNMDUXaYqk fcOUb82fqcaS08c1Wn8RzGIj4AprqWahdu4lxOPav04pkdE/oGMGGktVy93LmutLw2 Ymd5GCHWXDXJFlklha6aRZBC3U0/6tOsIF/L+WO3wjYUaaTNnFSKArBT270VmyOE4x jvxVxfk2lJKCIB3id8TlMkfmAN2pTQRTKLHIxObRSev3IiTDORniCB9wutEPz8AP4H En1MTJPnt/Y0Yuolycs6yC43ofz9J42v/b1e9oi5ZWz/iJrD6wGsGtsYj3vO5h1Ss9 HoNsitbusJDWQ== X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.2 at mail Date: Sun, 25 Jul 2021 06:25:17 +0200 Message-Id: <0b1e358630223252dffa02f2dd50470e44e294ba.1627186831.git.mirq-linux@rere.qmqm.pl> In-Reply-To: References: From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= Subject: [PATCH v3 4/5] mmc: sdhci: move SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN frequency limit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To: Kevin Liu , Suneel Garapati , Ulf Hansson Cc: Michal Simek , linux-arm-kernel@lists.infradead.org, Adrian Hunter , Chris Ball , linux-kernel@vger.kernel.org, linux-mmc@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Push handling of clock frequency dependence for SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN quirk to the drivers that use it. Signed-off-by: Michał Mirosław --- v3: rebased on v5.14-rc2 and reworded commitmsg v2: reworded commitmsg --- drivers/mmc/host/sdhci-of-arasan.c | 11 ++++------- drivers/mmc/host/sdhci-of-dwcmshc.c | 9 ++++++--- drivers/mmc/host/sdhci.c | 3 +-- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/drivers/mmc/host/sdhci-of-arasan.c b/drivers/mmc/host/sdhci-of-arasan.c index 737e2bfdedc2..f2a6441ab540 100644 --- a/drivers/mmc/host/sdhci-of-arasan.c +++ b/drivers/mmc/host/sdhci-of-arasan.c @@ -452,8 +452,7 @@ static const struct sdhci_ops sdhci_arasan_cqe_ops = { static const struct sdhci_pltfm_data sdhci_arasan_cqe_pdata = { .ops = &sdhci_arasan_cqe_ops, .quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN, - .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN | - SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN, + .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN, }; #ifdef CONFIG_PM_SLEEP @@ -1118,7 +1117,6 @@ static const struct sdhci_pltfm_data sdhci_arasan_pdata = { .ops = &sdhci_arasan_ops, .quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN, .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN | - SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN | SDHCI_QUIRK2_STOP_WITH_TC, }; @@ -1141,7 +1139,6 @@ static const struct sdhci_pltfm_data sdhci_keembay_emmc_pdata = { SDHCI_QUIRK_32BIT_DMA_SIZE | SDHCI_QUIRK_32BIT_ADMA_SIZE, .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN | - SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN | SDHCI_QUIRK2_CAPS_BIT63_FOR_HS400 | SDHCI_QUIRK2_STOP_WITH_TC | SDHCI_QUIRK2_BROKEN_64_BIT_DMA, @@ -1156,7 +1153,6 @@ static const struct sdhci_pltfm_data sdhci_keembay_sd_pdata = { SDHCI_QUIRK_32BIT_DMA_SIZE | SDHCI_QUIRK_32BIT_ADMA_SIZE, .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN | - SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN | SDHCI_QUIRK2_CARD_ON_NEEDS_BUS_ON | SDHCI_QUIRK2_STOP_WITH_TC | SDHCI_QUIRK2_BROKEN_64_BIT_DMA, @@ -1171,7 +1167,6 @@ static const struct sdhci_pltfm_data sdhci_keembay_sdio_pdata = { SDHCI_QUIRK_32BIT_DMA_SIZE | SDHCI_QUIRK_32BIT_ADMA_SIZE, .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN | - SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN | SDHCI_QUIRK2_HOST_OFF_CARD_ON | SDHCI_QUIRK2_BROKEN_64_BIT_DMA, }; @@ -1197,7 +1192,6 @@ static struct sdhci_arasan_of_data intel_lgm_sdxc_data = { static const struct sdhci_pltfm_data sdhci_arasan_zynqmp_pdata = { .ops = &sdhci_arasan_ops, .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN | - SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN | SDHCI_QUIRK2_STOP_WITH_TC, }; @@ -1502,6 +1496,9 @@ static int sdhci_arasan_add_host(struct sdhci_arasan_data *sdhci_arasan) bool dma64; int ret; + if (sdhci_pltfm_clk_get_max_clock(host) <= 25000000) + host->quirks2 |= SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN; + if (!sdhci_arasan->has_cqe) return sdhci_add_host(host); diff --git a/drivers/mmc/host/sdhci-of-dwcmshc.c b/drivers/mmc/host/sdhci-of-dwcmshc.c index bac874ab0b33..9bca7cf1d1da 100644 --- a/drivers/mmc/host/sdhci-of-dwcmshc.c +++ b/drivers/mmc/host/sdhci-of-dwcmshc.c @@ -283,14 +283,14 @@ static const struct sdhci_pltfm_data sdhci_dwcmshc_rk3568_pdata = { .ops = &sdhci_dwcmshc_rk3568_ops, .quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN | SDHCI_QUIRK_BROKEN_TIMEOUT_VAL, - .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN | - SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN, + .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN; }; static int dwcmshc_rk3568_init(struct sdhci_host *host, struct dwcmshc_priv *dwc_priv) { - int err; + struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); struct rk3568_priv *priv = dwc_priv->priv; + int err; priv->rockchip_clks[0].id = "axi"; priv->rockchip_clks[1].id = "block"; @@ -318,6 +318,9 @@ static int dwcmshc_rk3568_init(struct sdhci_host *host, struct dwcmshc_priv *dwc sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_TXCLK); sdhci_writel(host, 0, DWCMSHC_EMMC_DLL_STRBIN); + if (sdhci_pltfm_clk_get_max_clock(pltfm_host) <= 25000000) + host->quirks2 |= SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN; + return 0; } diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 0993f7d0ce8e..cfa314e659bc 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -1905,8 +1905,7 @@ u16 sdhci_calc_clk(struct sdhci_host *host, unsigned int clock, /* Version 3.00 divisors must be a multiple of 2. */ if (host->max_clk <= clock) { div = 1; - if ((host->quirks2 & SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN) - && host->max_clk <= 25000000) + if (host->quirks2 & SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN) div = 2; } else { for (div = 2; div < SDHCI_MAX_DIV_SPEC_300; -- 2.30.2 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 X-Spam-Level: X-Spam-Status: No, score=-11.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_ADSP_ALL,DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, UNWANTED_LANGUAGE_BODY autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A68BDC4338F for ; Sun, 25 Jul 2021 04:28:06 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 77B5960BD3 for ; Sun, 25 Jul 2021 04:28:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 77B5960BD3 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=rere.qmqm.pl Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.infradead.org 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:MIME-Version:Subject:From: References:In-Reply-To:Message-Id:Date:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=3k0nErt/QRpL4VSEjKDaKdxe/qcPPWliaddzlQ42NTY=; b=oVQ/7sCtShdAuhrqLmX2R8iItG RM734MvRgsIChGkxdCCFZWIIDK0ESzhP7unyP8DmbdlWhF2lmUfjZGpNT0Vfze/yjKa+T+S3Tgew0 bKZXZNVp2jXjI8ydv8gdYGxSLz2VIuZR37hVyDM9UkpvtT2vmllhXZe/N5ESclrHUYTBGmWzqWrR/ ckZjEa4KBqRRN8npHbQulWzO5S2liBzbmkbZJcZnvcTgXbXdr5/CuDu3XbXixH2QI/HdCpFN12FNk /CuQy/0W8ylSeV1487qzE6wjkMGLg6R6sDeRcBBV1v2TBpUOgNauDwEs2kNR4vp65eq9xNVmmPnMZ nExTm2Fw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1m7ViG-00890W-Gx; Sun, 25 Jul 2021 04:26:04 +0000 Received: from rere.qmqm.pl ([91.227.64.183]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1m7VhX-0088ve-J4 for linux-arm-kernel@lists.infradead.org; Sun, 25 Jul 2021 04:25:22 +0000 Received: from remote.user (localhost [127.0.0.1]) by rere.qmqm.pl (Postfix) with ESMTPSA id 4GXVMy0Y69zht; Sun, 25 Jul 2021 06:25:18 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=rere.qmqm.pl; s=1; t=1627187118; bh=JnzVxee475iBfiNH+BjjYvpu8JabHTVnK4JSdiy7rOQ=; h=Date:In-Reply-To:References:From:Subject:To:Cc:From; b=rxz6wYb4WRweGi8n2z7mteZ+sk6ZvxhBTnsecurPUOGrxAcb8GQqn2ftNMDUXaYqk fcOUb82fqcaS08c1Wn8RzGIj4AprqWahdu4lxOPav04pkdE/oGMGGktVy93LmutLw2 Ymd5GCHWXDXJFlklha6aRZBC3U0/6tOsIF/L+WO3wjYUaaTNnFSKArBT270VmyOE4x jvxVxfk2lJKCIB3id8TlMkfmAN2pTQRTKLHIxObRSev3IiTDORniCB9wutEPz8AP4H En1MTJPnt/Y0Yuolycs6yC43ofz9J42v/b1e9oi5ZWz/iJrD6wGsGtsYj3vO5h1Ss9 HoNsitbusJDWQ== X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.2 at mail Date: Sun, 25 Jul 2021 06:25:17 +0200 Message-Id: <0b1e358630223252dffa02f2dd50470e44e294ba.1627186831.git.mirq-linux@rere.qmqm.pl> In-Reply-To: References: From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= Subject: [PATCH v3 4/5] mmc: sdhci: move SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN frequency limit MIME-Version: 1.0 To: Kevin Liu , Suneel Garapati , Ulf Hansson Cc: Michal Simek , linux-arm-kernel@lists.infradead.org, Adrian Hunter , Chris Ball , linux-kernel@vger.kernel.org, linux-mmc@vger.kernel.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210724_212520_015246_F073F841 X-CRM114-Status: GOOD ( 13.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 UHVzaCBoYW5kbGluZyBvZiBjbG9jayBmcmVxdWVuY3kgZGVwZW5kZW5jZSBmb3IKU0RIQ0lfUVVJ UksyX0NMT0NLX0RJVl9aRVJPX0JST0tFTiBxdWlyayB0byB0aGUgZHJpdmVycyB0aGF0IHVzZSBp dC4KClNpZ25lZC1vZmYtYnk6IE1pY2hhxYIgTWlyb3PFgmF3IDxtaXJxLWxpbnV4QHJlcmUucW1x bS5wbD4KLS0tCnYzOiByZWJhc2VkIG9uIHY1LjE0LXJjMiBhbmQgcmV3b3JkZWQgY29tbWl0bXNn CnYyOiByZXdvcmRlZCBjb21taXRtc2cKLS0tCiBkcml2ZXJzL21tYy9ob3N0L3NkaGNpLW9mLWFy YXNhbi5jICB8IDExICsrKystLS0tLS0tCiBkcml2ZXJzL21tYy9ob3N0L3NkaGNpLW9mLWR3Y21z aGMuYyB8ICA5ICsrKysrKy0tLQogZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5jICAgICAgICAgICAg fCAgMyArLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1vZi1hcmFzYW4uYyBiL2Ry aXZlcnMvbW1jL2hvc3Qvc2RoY2ktb2YtYXJhc2FuLmMKaW5kZXggNzM3ZTJiZmRlZGMyLi5mMmE2 NDQxYWI1NDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktb2YtYXJhc2FuLmMK KysrIGIvZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1vZi1hcmFzYW4uYwpAQCAtNDUyLDggKzQ1Miw3 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2RoY2lfb3BzIHNkaGNpX2FyYXNhbl9jcWVfb3BzID0g ewogc3RhdGljIGNvbnN0IHN0cnVjdCBzZGhjaV9wbHRmbV9kYXRhIHNkaGNpX2FyYXNhbl9jcWVf cGRhdGEgPSB7CiAJLm9wcyA9ICZzZGhjaV9hcmFzYW5fY3FlX29wcywKIAkucXVpcmtzID0gU0RI Q0lfUVVJUktfQ0FQX0NMT0NLX0JBU0VfQlJPS0VOLAotCS5xdWlya3MyID0gU0RIQ0lfUVVJUksy X1BSRVNFVF9WQUxVRV9CUk9LRU4gfAotCQkJU0RIQ0lfUVVJUksyX0NMT0NLX0RJVl9aRVJPX0JS T0tFTiwKKwkucXVpcmtzMiA9IFNESENJX1FVSVJLMl9QUkVTRVRfVkFMVUVfQlJPS0VOLAogfTsK IAogI2lmZGVmIENPTkZJR19QTV9TTEVFUApAQCAtMTExOCw3ICsxMTE3LDYgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBzZGhjaV9wbHRmbV9kYXRhIHNkaGNpX2FyYXNhbl9wZGF0YSA9IHsKIAkub3Bz ID0gJnNkaGNpX2FyYXNhbl9vcHMsCiAJLnF1aXJrcyA9IFNESENJX1FVSVJLX0NBUF9DTE9DS19C QVNFX0JST0tFTiwKIAkucXVpcmtzMiA9IFNESENJX1FVSVJLMl9QUkVTRVRfVkFMVUVfQlJPS0VO IHwKLQkJCVNESENJX1FVSVJLMl9DTE9DS19ESVZfWkVST19CUk9LRU4gfAogCQkJU0RIQ0lfUVVJ UksyX1NUT1BfV0lUSF9UQywKIH07CiAKQEAgLTExNDEsNyArMTEzOSw2IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3Qgc2RoY2lfcGx0Zm1fZGF0YSBzZGhjaV9rZWVtYmF5X2VtbWNfcGRhdGEgPSB7CiAJ CVNESENJX1FVSVJLXzMyQklUX0RNQV9TSVpFIHwKIAkJU0RIQ0lfUVVJUktfMzJCSVRfQURNQV9T SVpFLAogCS5xdWlya3MyID0gU0RIQ0lfUVVJUksyX1BSRVNFVF9WQUxVRV9CUk9LRU4gfAotCQlT REhDSV9RVUlSSzJfQ0xPQ0tfRElWX1pFUk9fQlJPS0VOIHwKIAkJU0RIQ0lfUVVJUksyX0NBUFNf QklUNjNfRk9SX0hTNDAwIHwKIAkJU0RIQ0lfUVVJUksyX1NUT1BfV0lUSF9UQyB8CiAJCVNESENJ X1FVSVJLMl9CUk9LRU5fNjRfQklUX0RNQSwKQEAgLTExNTYsNyArMTE1Myw2IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3Qgc2RoY2lfcGx0Zm1fZGF0YSBzZGhjaV9rZWVtYmF5X3NkX3BkYXRhID0gewog CQlTREhDSV9RVUlSS18zMkJJVF9ETUFfU0laRSB8CiAJCVNESENJX1FVSVJLXzMyQklUX0FETUFf U0laRSwKIAkucXVpcmtzMiA9IFNESENJX1FVSVJLMl9QUkVTRVRfVkFMVUVfQlJPS0VOIHwKLQkJ U0RIQ0lfUVVJUksyX0NMT0NLX0RJVl9aRVJPX0JST0tFTiB8CiAJCVNESENJX1FVSVJLMl9DQVJE X09OX05FRURTX0JVU19PTiB8CiAJCVNESENJX1FVSVJLMl9TVE9QX1dJVEhfVEMgfAogCQlTREhD SV9RVUlSSzJfQlJPS0VOXzY0X0JJVF9ETUEsCkBAIC0xMTcxLDcgKzExNjcsNiBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IHNkaGNpX3BsdGZtX2RhdGEgc2RoY2lfa2VlbWJheV9zZGlvX3BkYXRhID0g ewogCQlTREhDSV9RVUlSS18zMkJJVF9ETUFfU0laRSB8CiAJCVNESENJX1FVSVJLXzMyQklUX0FE TUFfU0laRSwKIAkucXVpcmtzMiA9IFNESENJX1FVSVJLMl9QUkVTRVRfVkFMVUVfQlJPS0VOIHwK LQkJU0RIQ0lfUVVJUksyX0NMT0NLX0RJVl9aRVJPX0JST0tFTiB8CiAJCVNESENJX1FVSVJLMl9I T1NUX09GRl9DQVJEX09OIHwKIAkJU0RIQ0lfUVVJUksyX0JST0tFTl82NF9CSVRfRE1BLAogfTsK QEAgLTExOTcsNyArMTE5Miw2IEBAIHN0YXRpYyBzdHJ1Y3Qgc2RoY2lfYXJhc2FuX29mX2RhdGEg aW50ZWxfbGdtX3NkeGNfZGF0YSA9IHsKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2RoY2lfcGx0Zm1f ZGF0YSBzZGhjaV9hcmFzYW5fenlucW1wX3BkYXRhID0gewogCS5vcHMgPSAmc2RoY2lfYXJhc2Fu X29wcywKIAkucXVpcmtzMiA9IFNESENJX1FVSVJLMl9QUkVTRVRfVkFMVUVfQlJPS0VOIHwKLQkJ CVNESENJX1FVSVJLMl9DTE9DS19ESVZfWkVST19CUk9LRU4gfAogCQkJU0RIQ0lfUVVJUksyX1NU T1BfV0lUSF9UQywKIH07CiAKQEAgLTE1MDIsNiArMTQ5Niw5IEBAIHN0YXRpYyBpbnQgc2RoY2lf YXJhc2FuX2FkZF9ob3N0KHN0cnVjdCBzZGhjaV9hcmFzYW5fZGF0YSAqc2RoY2lfYXJhc2FuKQog CWJvb2wgZG1hNjQ7CiAJaW50IHJldDsKIAorCWlmIChzZGhjaV9wbHRmbV9jbGtfZ2V0X21heF9j bG9jayhob3N0KSA8PSAyNTAwMDAwMCkKKwkJaG9zdC0+cXVpcmtzMiB8PSBTREhDSV9RVUlSSzJf Q0xPQ0tfRElWX1pFUk9fQlJPS0VOOworCiAJaWYgKCFzZGhjaV9hcmFzYW4tPmhhc19jcWUpCiAJ CXJldHVybiBzZGhjaV9hZGRfaG9zdChob3N0KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMv aG9zdC9zZGhjaS1vZi1kd2Ntc2hjLmMgYi9kcml2ZXJzL21tYy9ob3N0L3NkaGNpLW9mLWR3Y21z aGMuYwppbmRleCBiYWM4NzRhYjBiMzMuLjliY2E3Y2YxZDFkYSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9tbWMvaG9zdC9zZGhjaS1vZi1kd2Ntc2hjLmMKKysrIGIvZHJpdmVycy9tbWMvaG9zdC9zZGhj aS1vZi1kd2Ntc2hjLmMKQEAgLTI4MywxNCArMjgzLDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg c2RoY2lfcGx0Zm1fZGF0YSBzZGhjaV9kd2Ntc2hjX3JrMzU2OF9wZGF0YSA9IHsKIAkub3BzID0g JnNkaGNpX2R3Y21zaGNfcmszNTY4X29wcywKIAkucXVpcmtzID0gU0RIQ0lfUVVJUktfQ0FQX0NM T0NLX0JBU0VfQlJPS0VOIHwKIAkJICBTREhDSV9RVUlSS19CUk9LRU5fVElNRU9VVF9WQUwsCi0J LnF1aXJrczIgPSBTREhDSV9RVUlSSzJfUFJFU0VUX1ZBTFVFX0JST0tFTiB8Ci0JCSAgIFNESENJ X1FVSVJLMl9DTE9DS19ESVZfWkVST19CUk9LRU4sCisJLnF1aXJrczIgPSBTREhDSV9RVUlSSzJf UFJFU0VUX1ZBTFVFX0JST0tFTjsKIH07CiAKIHN0YXRpYyBpbnQgZHdjbXNoY19yazM1NjhfaW5p dChzdHJ1Y3Qgc2RoY2lfaG9zdCAqaG9zdCwgc3RydWN0IGR3Y21zaGNfcHJpdiAqZHdjX3ByaXYp CiB7Ci0JaW50IGVycjsKKwlzdHJ1Y3Qgc2RoY2lfcGx0Zm1faG9zdCAqcGx0Zm1faG9zdCA9IHNk aGNpX3ByaXYoaG9zdCk7CiAJc3RydWN0IHJrMzU2OF9wcml2ICpwcml2ID0gZHdjX3ByaXYtPnBy aXY7CisJaW50IGVycjsKIAogCXByaXYtPnJvY2tjaGlwX2Nsa3NbMF0uaWQgPSAiYXhpIjsKIAlw cml2LT5yb2NrY2hpcF9jbGtzWzFdLmlkID0gImJsb2NrIjsKQEAgLTMxOCw2ICszMTgsOSBAQCBz dGF0aWMgaW50IGR3Y21zaGNfcmszNTY4X2luaXQoc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QsIHN0 cnVjdCBkd2Ntc2hjX3ByaXYgKmR3YwogCXNkaGNpX3dyaXRlbChob3N0LCAwLCBEV0NNU0hDX0VN TUNfRExMX1RYQ0xLKTsKIAlzZGhjaV93cml0ZWwoaG9zdCwgMCwgRFdDTVNIQ19FTU1DX0RMTF9T VFJCSU4pOwogCisJaWYgKHNkaGNpX3BsdGZtX2Nsa19nZXRfbWF4X2Nsb2NrKHBsdGZtX2hvc3Qp IDw9IDI1MDAwMDAwKQorCQlob3N0LT5xdWlya3MyIHw9IFNESENJX1FVSVJLMl9DTE9DS19ESVZf WkVST19CUk9LRU47CisKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMv aG9zdC9zZGhjaS5jIGIvZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5jCmluZGV4IDA5OTNmN2QwY2U4 ZS4uY2ZhMzE0ZTY1OWJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9ob3N0L3NkaGNpLmMKKysr IGIvZHJpdmVycy9tbWMvaG9zdC9zZGhjaS5jCkBAIC0xOTA1LDggKzE5MDUsNyBAQCB1MTYgc2Ro Y2lfY2FsY19jbGsoc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QsIHVuc2lnbmVkIGludCBjbG9jaywK IAkJCS8qIFZlcnNpb24gMy4wMCBkaXZpc29ycyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMi4gKi8K IAkJCWlmIChob3N0LT5tYXhfY2xrIDw9IGNsb2NrKSB7CiAJCQkJZGl2ID0gMTsKLQkJCQlpZiAo KGhvc3QtPnF1aXJrczIgJiBTREhDSV9RVUlSSzJfQ0xPQ0tfRElWX1pFUk9fQlJPS0VOKQotCQkJ CQkmJiBob3N0LT5tYXhfY2xrIDw9IDI1MDAwMDAwKQorCQkJCWlmIChob3N0LT5xdWlya3MyICYg U0RIQ0lfUVVJUksyX0NMT0NLX0RJVl9aRVJPX0JST0tFTikKIAkJCQkJZGl2ID0gMjsKIAkJCX0g ZWxzZSB7CiAJCQkJZm9yIChkaXYgPSAyOyBkaXYgPCBTREhDSV9NQVhfRElWX1NQRUNfMzAwOwot LSAKMi4zMC4yCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5p bmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8v bGludXgtYXJtLWtlcm5lbAo=