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=-24.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT 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 A216CC433E9 for ; Thu, 14 Jan 2021 12:41:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7DB3423A53 for ; Thu, 14 Jan 2021 12:41:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728681AbhANMlh (ORCPT ); Thu, 14 Jan 2021 07:41:37 -0500 Received: from mail.kernel.org ([198.145.29.99]:59146 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728252AbhANMlh (ORCPT ); Thu, 14 Jan 2021 07:41:37 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id C688A23A60; Thu, 14 Jan 2021 12:40:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1610628055; bh=4gebIy8dtRAvDVN1y60MtYCqDlAywN6+YARHQq1N+70=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=askES8EyD7ymOVr7SLqvxmQSDQgEc3KliAYdbtSZg7WJP9FN3L5AtU4GEMcTHBtgO EwXKvcVxH4Y2AAuSHdMMHEoOnM4lRHWeQKAJOUv3hsAR/8ZfjRtwjBc/hPOuEuRQcF 08ykBNznSjfr79iKUp34Ur3gGdoYvJFgAG+m+KI+/1yQkHisVuoRL6oZuHj2TMV18F j2AaM/2S/D5y2jmZf7/BHasGg6WdxevqY9hXrDGhuM9CCRgt/E4+XCeaBP1ba4p4oq hWjqdbwHUWaV+FTIauGKsYMsqPIgmxAH/BMkUqdWhIQ8efmbclnDOOn9KCeEmBLfLI 9+slAZ/T/xQ4w== Received: by pali.im (Postfix) id D47DA821; Thu, 14 Jan 2021 13:40:53 +0100 (CET) From: =?UTF-8?q?Pali=20Roh=C3=A1r?= To: Gregory Clement , Andrew Lunn , Michael Turquette , Stephen Boyd , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org Cc: =?UTF-8?q?Marek=20Beh=C3=BAn?= , "Miquel Raynal" , "Tomasz Maciej Nowak" , "Luka Perkov" , "Andre Heider" , "Vladimir Vid" , "Russell King" , =?UTF-8?q?G=C3=A9rald=20Kerma?= , "Konstantin Porotchkin" Subject: [PATCH mvebu v2 04/10] cpufreq: armada-37xx: Fix the AVS value for loads L0 and L1 Date: Thu, 14 Jan 2021 13:40:26 +0100 Message-Id: <20210114124032.12765-5-pali@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210114124032.12765-1-pali@kernel.org> References: <20210114124032.12765-1-pali@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-clk@vger.kernel.org The original CPU voltage value for load L1 is too low for Armada-37xx SoC when base CPU frequency is 1000 or 1200 MHz. It leads to instabilities where CPU gets stuck soon after dynamic voltage scaling from load L1 to L0. Update the CPU voltage value for loads L0 and L1 accordingly when base frequency is 1000 or 1200 MHz. The minimal value is updated from the original 1.05V to 1.108V. This change fixes instability issues on 1 GHz variant of Espressobin and Turris MOX. It is based on previous work from Victor Gu for Espressobin kernel 4.4 [1]. Discussion about this issue is also at armbian forum [2]. [1] - https://github.com/MarvellEmbeddedProcessors/linux-marvell/commit/dc33b62c90696afb6adc7dbcc4ebbd48bedec269 [2] - https://forum.armbian.com/topic/10429-how-to-make-espressobin-v7-stable/ Signed-off-by: Pali Rohár Fixes: 1c3528232f4b ("cpufreq: armada-37xx: Add AVS support") Cc: stable@vger.kernel.org --- drivers/cpufreq/armada-37xx-cpufreq.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/drivers/cpufreq/armada-37xx-cpufreq.c b/drivers/cpufreq/armada-37xx-cpufreq.c index b8dc6c849579..92e531f700f4 100644 --- a/drivers/cpufreq/armada-37xx-cpufreq.c +++ b/drivers/cpufreq/armada-37xx-cpufreq.c @@ -73,6 +73,7 @@ #define LOAD_LEVEL_NR 4 #define MIN_VOLT_MV 1000 +#define MIN_VOLT_MV_FOR_L0_L1_1GHZ 1108 /* AVS value for the corresponding voltage (in mV) */ static int avs_map[] = { @@ -208,6 +209,8 @@ static u32 armada_37xx_avs_val_match(int target_vm) * - L2 & L3 voltage should be about 150mv smaller than L0 voltage. * This function calculates L1 & L2 & L3 AVS values dynamically based * on L0 voltage and fill all AVS values to the AVS value table. + * When base CPU frequency is 1000 or 1200 MHz then there is additional + * minimal avs value for load L0 and L1. */ static void __init armada37xx_cpufreq_avs_configure(struct regmap *base, struct armada_37xx_dvfs *dvfs) @@ -239,6 +242,15 @@ static void __init armada37xx_cpufreq_avs_configure(struct regmap *base, for (load_level = 1; load_level < LOAD_LEVEL_NR; load_level++) dvfs->avs[load_level] = avs_min; + /* + * Set the avs value for load L0 and L1 when base CPU frequency is 1000/1200 MHz, + * otherwise the CPU gets stuck when switching from load L1 to load L0 + */ + if (dvfs->cpu_freq_max >= 1000*1000*1000) { + avs_min = armada_37xx_avs_val_match(MIN_VOLT_MV_FOR_L0_L1_1GHZ); + dvfs->avs[0] = dvfs->avs[1] = avs_min; + } + return; } @@ -258,6 +270,20 @@ static void __init armada37xx_cpufreq_avs_configure(struct regmap *base, target_vm = avs_map[l0_vdd_min] - 150; target_vm = target_vm > MIN_VOLT_MV ? target_vm : MIN_VOLT_MV; dvfs->avs[2] = dvfs->avs[3] = armada_37xx_avs_val_match(target_vm); + + /* + * Fix the avs value for load L0 and L1 when base CPU frequency is 1000/1200 MHz, + * otherwise the CPU gets stuck when switching from load L1 to load L0 + */ + if (dvfs->cpu_freq_max >= 1000*1000*1000) { + u32 avs_min = armada_37xx_avs_val_match(MIN_VOLT_MV_FOR_L0_L1_1GHZ); + + if (dvfs->avs[0] < avs_min) + dvfs->avs[0] = avs_min; + + if (dvfs->avs[1] < avs_min) + dvfs->avs[1] = avs_min; + } } static void __init armada37xx_cpufreq_avs_setup(struct regmap *base, -- 2.20.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 X-Spam-Level: X-Spam-Status: No, score=-22.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 6B92EC4332D for ; Thu, 14 Jan 2021 12:42:58 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 34581239FD for ; Thu, 14 Jan 2021 12:42:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 34581239FD Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=N6IoEH8aB9z3ifEMajeh5e2ArfN4AymWGcrytPzZoSM=; b=d85V0dFRmEswTk0DVD0bHdGhk AnqijXXtz8xfEoM0lQfCLysbnA9WFwxU94lQfxfP0Cu1n/jRFO4i7NczUKF0ecJDbtNdUNS93W10H rAyfli6tFuomgIzXSb415pqZwpwtAuGC7cvZsoQeuXlWK7QbEWf++BwN44GOqsRqqA9oOCkYdNt7A 3oqEiXB+Ve1rZGn3ufKY0EvT3CrHHfz5wWgGjVe7tfH1foEyDnm1y8do3WJ6NPfKJLe3GAf/8xfMp fGMKYdPF6PA2VJG/JREHE4C9q6ujOHiHtuKlAij4fpdLpBh/8Wj+Cdb2coVpyYYMxkwnqNuArMFoC AewRmrjZg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1l01wA-0001jh-QB; Thu, 14 Jan 2021 12:41:14 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1l01vs-0001fJ-Lu for linux-arm-kernel@lists.infradead.org; Thu, 14 Jan 2021 12:41:01 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id C688A23A60; Thu, 14 Jan 2021 12:40:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1610628055; bh=4gebIy8dtRAvDVN1y60MtYCqDlAywN6+YARHQq1N+70=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=askES8EyD7ymOVr7SLqvxmQSDQgEc3KliAYdbtSZg7WJP9FN3L5AtU4GEMcTHBtgO EwXKvcVxH4Y2AAuSHdMMHEoOnM4lRHWeQKAJOUv3hsAR/8ZfjRtwjBc/hPOuEuRQcF 08ykBNznSjfr79iKUp34Ur3gGdoYvJFgAG+m+KI+/1yQkHisVuoRL6oZuHj2TMV18F j2AaM/2S/D5y2jmZf7/BHasGg6WdxevqY9hXrDGhuM9CCRgt/E4+XCeaBP1ba4p4oq hWjqdbwHUWaV+FTIauGKsYMsqPIgmxAH/BMkUqdWhIQ8efmbclnDOOn9KCeEmBLfLI 9+slAZ/T/xQ4w== Received: by pali.im (Postfix) id D47DA821; Thu, 14 Jan 2021 13:40:53 +0100 (CET) From: =?UTF-8?q?Pali=20Roh=C3=A1r?= To: Gregory Clement , Andrew Lunn , Michael Turquette , Stephen Boyd , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org Subject: [PATCH mvebu v2 04/10] cpufreq: armada-37xx: Fix the AVS value for loads L0 and L1 Date: Thu, 14 Jan 2021 13:40:26 +0100 Message-Id: <20210114124032.12765-5-pali@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210114124032.12765-1-pali@kernel.org> References: <20210114124032.12765-1-pali@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210114_074056_922993_618DE5CF X-CRM114-Status: GOOD ( 14.72 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Marek=20Beh=C3=BAn?= , Tomasz Maciej Nowak , Luka Perkov , Andre Heider , Vladimir Vid , Russell King , =?UTF-8?q?G=C3=A9rald=20Kerma?= , Miquel Raynal , Konstantin Porotchkin 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 VGhlIG9yaWdpbmFsIENQVSB2b2x0YWdlIHZhbHVlIGZvciBsb2FkIEwxIGlzIHRvbyBsb3cgZm9y IEFybWFkYS0zN3h4IFNvQwp3aGVuIGJhc2UgQ1BVIGZyZXF1ZW5jeSBpcyAxMDAwIG9yIDEyMDAg TUh6LiBJdCBsZWFkcyB0byBpbnN0YWJpbGl0aWVzCndoZXJlIENQVSBnZXRzIHN0dWNrIHNvb24g YWZ0ZXIgZHluYW1pYyB2b2x0YWdlIHNjYWxpbmcgZnJvbSBsb2FkIEwxIHRvIEwwLgoKVXBkYXRl IHRoZSBDUFUgdm9sdGFnZSB2YWx1ZSBmb3IgbG9hZHMgTDAgYW5kIEwxIGFjY29yZGluZ2x5IHdo ZW4gYmFzZQpmcmVxdWVuY3kgaXMgMTAwMCBvciAxMjAwIE1Iei4gVGhlIG1pbmltYWwgdmFsdWUg aXMgdXBkYXRlZCBmcm9tIHRoZQpvcmlnaW5hbCAxLjA1ViB0byAxLjEwOFYuCgpUaGlzIGNoYW5n ZSBmaXhlcyBpbnN0YWJpbGl0eSBpc3N1ZXMgb24gMSBHSHogdmFyaWFudCBvZiBFc3ByZXNzb2Jp biBhbmQKVHVycmlzIE1PWC4gSXQgaXMgYmFzZWQgb24gcHJldmlvdXMgd29yayBmcm9tIFZpY3Rv ciBHdSA8eGlndUBtYXJ2ZWxsLmNvbT4KZm9yIEVzcHJlc3NvYmluIGtlcm5lbCA0LjQgWzFdLiBE aXNjdXNzaW9uIGFib3V0IHRoaXMgaXNzdWUgaXMgYWxzbyBhdAphcm1iaWFuIGZvcnVtIFsyXS4K ClsxXSAtIGh0dHBzOi8vZ2l0aHViLmNvbS9NYXJ2ZWxsRW1iZWRkZWRQcm9jZXNzb3JzL2xpbnV4 LW1hcnZlbGwvY29tbWl0L2RjMzNiNjJjOTA2OTZhZmI2YWRjN2RiY2M0ZWJiZDQ4YmVkZWMyNjkK WzJdIC0gaHR0cHM6Ly9mb3J1bS5hcm1iaWFuLmNvbS90b3BpYy8xMDQyOS1ob3ctdG8tbWFrZS1l c3ByZXNzb2Jpbi12Ny1zdGFibGUvCgpTaWduZWQtb2ZmLWJ5OiBQYWxpIFJvaMOhciA8cGFsaUBr ZXJuZWwub3JnPgpGaXhlczogMWMzNTI4MjMyZjRiICgiY3B1ZnJlcTogYXJtYWRhLTM3eHg6IEFk ZCBBVlMgc3VwcG9ydCIpCkNjOiBzdGFibGVAdmdlci5rZXJuZWwub3JnCi0tLQogZHJpdmVycy9j cHVmcmVxL2FybWFkYS0zN3h4LWNwdWZyZXEuYyB8IDI2ICsrKysrKysrKysrKysrKysrKysrKysr KysrCiAxIGZpbGUgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvY3B1ZnJlcS9hcm1hZGEtMzd4eC1jcHVmcmVxLmMgYi9kcml2ZXJzL2NwdWZyZXEvYXJtYWRh LTM3eHgtY3B1ZnJlcS5jCmluZGV4IGI4ZGM2Yzg0OTU3OS4uOTJlNTMxZjcwMGY0IDEwMDY0NAot LS0gYS9kcml2ZXJzL2NwdWZyZXEvYXJtYWRhLTM3eHgtY3B1ZnJlcS5jCisrKyBiL2RyaXZlcnMv Y3B1ZnJlcS9hcm1hZGEtMzd4eC1jcHVmcmVxLmMKQEAgLTczLDYgKzczLDcgQEAKICNkZWZpbmUg TE9BRF9MRVZFTF9OUgk0CiAKICNkZWZpbmUgTUlOX1ZPTFRfTVYgMTAwMAorI2RlZmluZSBNSU5f Vk9MVF9NVl9GT1JfTDBfTDFfMUdIWiAxMTA4CiAKIC8qICBBVlMgdmFsdWUgZm9yIHRoZSBjb3Jy ZXNwb25kaW5nIHZvbHRhZ2UgKGluIG1WKSAqLwogc3RhdGljIGludCBhdnNfbWFwW10gPSB7CkBA IC0yMDgsNiArMjA5LDggQEAgc3RhdGljIHUzMiBhcm1hZGFfMzd4eF9hdnNfdmFsX21hdGNoKGlu dCB0YXJnZXRfdm0pCiAgKiAtIEwyICYgTDMgdm9sdGFnZSBzaG91bGQgYmUgYWJvdXQgMTUwbXYg c21hbGxlciB0aGFuIEwwIHZvbHRhZ2UuCiAgKiBUaGlzIGZ1bmN0aW9uIGNhbGN1bGF0ZXMgTDEg JiBMMiAmIEwzIEFWUyB2YWx1ZXMgZHluYW1pY2FsbHkgYmFzZWQKICAqIG9uIEwwIHZvbHRhZ2Ug YW5kIGZpbGwgYWxsIEFWUyB2YWx1ZXMgdG8gdGhlIEFWUyB2YWx1ZSB0YWJsZS4KKyAqIFdoZW4g YmFzZSBDUFUgZnJlcXVlbmN5IGlzIDEwMDAgb3IgMTIwMCBNSHogdGhlbiB0aGVyZSBpcyBhZGRp dGlvbmFsCisgKiBtaW5pbWFsIGF2cyB2YWx1ZSBmb3IgbG9hZCBMMCBhbmQgTDEuCiAgKi8KIHN0 YXRpYyB2b2lkIF9faW5pdCBhcm1hZGEzN3h4X2NwdWZyZXFfYXZzX2NvbmZpZ3VyZShzdHJ1Y3Qg cmVnbWFwICpiYXNlLAogCQkJCQkJc3RydWN0IGFybWFkYV8zN3h4X2R2ZnMgKmR2ZnMpCkBAIC0y MzksNiArMjQyLDE1IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBhcm1hZGEzN3h4X2NwdWZyZXFfYXZz X2NvbmZpZ3VyZShzdHJ1Y3QgcmVnbWFwICpiYXNlLAogCQlmb3IgKGxvYWRfbGV2ZWwgPSAxOyBs b2FkX2xldmVsIDwgTE9BRF9MRVZFTF9OUjsgbG9hZF9sZXZlbCsrKQogCQkJZHZmcy0+YXZzW2xv YWRfbGV2ZWxdID0gYXZzX21pbjsKIAorCQkvKgorCQkgKiBTZXQgdGhlIGF2cyB2YWx1ZSBmb3Ig bG9hZCBMMCBhbmQgTDEgd2hlbiBiYXNlIENQVSBmcmVxdWVuY3kgaXMgMTAwMC8xMjAwIE1IeiwK KwkJICogb3RoZXJ3aXNlIHRoZSBDUFUgZ2V0cyBzdHVjayB3aGVuIHN3aXRjaGluZyBmcm9tIGxv YWQgTDEgdG8gbG9hZCBMMAorCQkgKi8KKwkJaWYgKGR2ZnMtPmNwdV9mcmVxX21heCA+PSAxMDAw KjEwMDAqMTAwMCkgeworCQkJYXZzX21pbiA9IGFybWFkYV8zN3h4X2F2c192YWxfbWF0Y2goTUlO X1ZPTFRfTVZfRk9SX0wwX0wxXzFHSFopOworCQkJZHZmcy0+YXZzWzBdID0gZHZmcy0+YXZzWzFd ID0gYXZzX21pbjsKKwkJfQorCiAJCXJldHVybjsKIAl9CiAKQEAgLTI1OCw2ICsyNzAsMjAgQEAg c3RhdGljIHZvaWQgX19pbml0IGFybWFkYTM3eHhfY3B1ZnJlcV9hdnNfY29uZmlndXJlKHN0cnVj dCByZWdtYXAgKmJhc2UsCiAJdGFyZ2V0X3ZtID0gYXZzX21hcFtsMF92ZGRfbWluXSAtIDE1MDsK IAl0YXJnZXRfdm0gPSB0YXJnZXRfdm0gPiBNSU5fVk9MVF9NViA/IHRhcmdldF92bSA6IE1JTl9W T0xUX01WOwogCWR2ZnMtPmF2c1syXSA9IGR2ZnMtPmF2c1szXSA9IGFybWFkYV8zN3h4X2F2c192 YWxfbWF0Y2godGFyZ2V0X3ZtKTsKKworCS8qCisJICogRml4IHRoZSBhdnMgdmFsdWUgZm9yIGxv YWQgTDAgYW5kIEwxIHdoZW4gYmFzZSBDUFUgZnJlcXVlbmN5IGlzIDEwMDAvMTIwMCBNSHosCisJ ICogb3RoZXJ3aXNlIHRoZSBDUFUgZ2V0cyBzdHVjayB3aGVuIHN3aXRjaGluZyBmcm9tIGxvYWQg TDEgdG8gbG9hZCBMMAorCSAqLworCWlmIChkdmZzLT5jcHVfZnJlcV9tYXggPj0gMTAwMCoxMDAw KjEwMDApIHsKKwkJdTMyIGF2c19taW4gPSBhcm1hZGFfMzd4eF9hdnNfdmFsX21hdGNoKE1JTl9W T0xUX01WX0ZPUl9MMF9MMV8xR0haKTsKKworCQlpZiAoZHZmcy0+YXZzWzBdIDwgYXZzX21pbikK KwkJCWR2ZnMtPmF2c1swXSA9IGF2c19taW47CisKKwkJaWYgKGR2ZnMtPmF2c1sxXSA8IGF2c19t aW4pCisJCQlkdmZzLT5hdnNbMV0gPSBhdnNfbWluOworCX0KIH0KIAogc3RhdGljIHZvaWQgX19p bml0IGFybWFkYTM3eHhfY3B1ZnJlcV9hdnNfc2V0dXAoc3RydWN0IHJlZ21hcCAqYmFzZSwKLS0g CjIuMjAuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LWFybS1rZXJuZWwK