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 6ED98C001E0 for ; Thu, 6 Jul 2023 15:38:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233798AbjGFPiv (ORCPT ); Thu, 6 Jul 2023 11:38:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41592 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233539AbjGFPip (ORCPT ); Thu, 6 Jul 2023 11:38:45 -0400 Received: from madras.collabora.co.uk (madras.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e5ab]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7C1A01BEA; Thu, 6 Jul 2023 08:38:43 -0700 (PDT) Received: from notapiano.myfiosgateway.com (zone.collabora.co.uk [167.235.23.81]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: nfraprado) by madras.collabora.co.uk (Postfix) with ESMTPSA id D68256606FDB; Thu, 6 Jul 2023 16:38:38 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1688657922; bh=Meb9/4Kmg9q/ka2O8MPM7s6SQhpMPo7uYZzBWndz+9A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KXyfqnA1mYaglla6wEzizqUkepj7HJlGs1V8RL8tY7mnOs6jmNOkOXzfMs5bR7FmG bzwy3lFJ1AyC6XqO45SNHVCisYuN6HDUFn/tfePvxIDm+HPl8UOBsV1RtYvXnEtxWj Meb7Rs25YZoQszTCiNBB1h/mS0GnLgZ6Q93PZiyJOO4aMaepHTP8RcjiOC1LKXYMSc rM2GLEACx/UzcYQS1bD7QM+jFJYA/m6D0MNwUpgQ3L8H5QrtZ4POU+zXEaOydzn6Ki JHTmkekXr/z5tAxdObqpoE9bgkoZWYwyFYqf3Mt0eUEaNkOp0FlezJcihen2dS3RcR VdHi6dpOLSFhg== From: =?UTF-8?q?N=C3=ADcolas=20F=2E=20R=2E=20A=2E=20Prado?= To: Daniel Lezcano Cc: Alexandre Bailon , Balsam CHIHI , AngeloGioacchino Del Regno , Chen-Yu Tsai , Alexandre Mergnat , kernel@collabora.com, =?UTF-8?q?N=C3=ADcolas=20F=2E=20R=2E=20A=2E=20Prado?= , Amit Kucheria , Matthias Brugger , "Rafael J. Wysocki" , Zhang Rui , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-pm@vger.kernel.org Subject: [PATCH v3 2/6] thermal/drivers/mediatek/lvts_thermal: Honor sensors in immediate mode Date: Thu, 6 Jul 2023 11:37:33 -0400 Message-ID: <20230706153823.201943-3-nfraprado@collabora.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230706153823.201943-1-nfraprado@collabora.com> References: <20230706153823.201943-1-nfraprado@collabora.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Each controller can be configured to operate on immediate or filtered mode. On filtered mode, the sensors are enabled by setting the corresponding bits in MONCTL0, while on immediate mode, by setting MSRCTL1. Previously, the code would set MSRCTL1 for all four sensors when configured to immediate mode, but given that the controller might not have all four sensors connected, this would cause interrupts to trigger for non-existent sensors. Fix this by handling the MSRCTL1 register analogously to the MONCTL0: only enable the sensors that were declared. Fixes: f5f633b18234 ("thermal/drivers/mediatek: Add the Low Voltage Thermal Sensor driver") Reviewed-by: AngeloGioacchino Del Regno Tested-by: Chen-Yu Tsai Signed-off-by: NĂ­colas F. R. A. Prado --- Changes in v3: - Split bitmaps for immediate and filtered modes into separate arrays drivers/thermal/mediatek/lvts_thermal.c | 57 ++++++++++++++----------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/drivers/thermal/mediatek/lvts_thermal.c b/drivers/thermal/mediatek/lvts_thermal.c index ba8f86ee12b6..8082195f53ae 100644 --- a/drivers/thermal/mediatek/lvts_thermal.c +++ b/drivers/thermal/mediatek/lvts_thermal.c @@ -896,24 +896,6 @@ static int lvts_ctrl_configure(struct device *dev, struct lvts_ctrl *lvts_ctrl) LVTS_HW_FILTER << 3 | LVTS_HW_FILTER; writel(value, LVTS_MSRCTL0(lvts_ctrl->base)); - /* - * LVTS_MSRCTL1 : Measurement control - * - * Bits: - * - * 9: Ignore MSRCTL0 config and do immediate measurement on sensor3 - * 6: Ignore MSRCTL0 config and do immediate measurement on sensor2 - * 5: Ignore MSRCTL0 config and do immediate measurement on sensor1 - * 4: Ignore MSRCTL0 config and do immediate measurement on sensor0 - * - * That configuration will ignore the filtering and the delays - * introduced below in MONCTL1 and MONCTL2 - */ - if (lvts_ctrl->mode == LVTS_MSR_IMMEDIATE_MODE) { - value = BIT(9) | BIT(6) | BIT(5) | BIT(4); - writel(value, LVTS_MSRCTL1(lvts_ctrl->base)); - } - /* * LVTS_MONCTL1 : Period unit and group interval configuration * @@ -979,6 +961,15 @@ static int lvts_ctrl_start(struct device *dev, struct lvts_ctrl *lvts_ctrl) struct thermal_zone_device *tz; u32 sensor_map = 0; int i; + /* + * Bitmaps to enable each sensor on immediate and filtered modes, as + * described in MSRCTL1 and MONCTL0 registers below, respectively. + */ + u32 sensor_imm_bitmap[] = { BIT(4), BIT(5), BIT(6), BIT(9) }; + u32 sensor_filt_bitmap[] = { BIT(0), BIT(1), BIT(2), BIT(3) }; + + u32 *sensor_bitmap = lvts_ctrl->mode == LVTS_MSR_IMMEDIATE_MODE ? + sensor_imm_bitmap : sensor_filt_bitmap; for (i = 0; i < lvts_ctrl->num_lvts_sensor; i++) { @@ -1017,20 +1008,38 @@ static int lvts_ctrl_start(struct device *dev, struct lvts_ctrl *lvts_ctrl) * map, so we can enable the temperature monitoring in * the hardware thermal controller. */ - sensor_map |= BIT(i); + sensor_map |= sensor_bitmap[i]; } /* - * Bits: - * 9: Single point access flow - * 0-3: Enable sensing point 0-3 - * * The initialization of the thermal zones give us * which sensor point to enable. If any thermal zone * was not described in the device tree, it won't be * enabled here in the sensor map. */ - writel(sensor_map | BIT(9), LVTS_MONCTL0(lvts_ctrl->base)); + if (lvts_ctrl->mode == LVTS_MSR_IMMEDIATE_MODE) { + /* + * LVTS_MSRCTL1 : Measurement control + * + * Bits: + * + * 9: Ignore MSRCTL0 config and do immediate measurement on sensor3 + * 6: Ignore MSRCTL0 config and do immediate measurement on sensor2 + * 5: Ignore MSRCTL0 config and do immediate measurement on sensor1 + * 4: Ignore MSRCTL0 config and do immediate measurement on sensor0 + * + * That configuration will ignore the filtering and the delays + * introduced in MONCTL1 and MONCTL2 + */ + writel(sensor_map, LVTS_MSRCTL1(lvts_ctrl->base)); + } else { + /* + * Bits: + * 9: Single point access flow + * 0-3: Enable sensing point 0-3 + */ + writel(sensor_map | BIT(9), LVTS_MONCTL0(lvts_ctrl->base)); + } return 0; } -- 2.41.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 0C3E2EB64DC for ; Thu, 6 Jul 2023 15:39:18 +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=2e4cAWP0CdF2ePc2lMfmQlfeHlFycQnqfT15pwpzBY4=; b=QzBr8N92E2vfcE ocuAw8r++CRB6Nrth97Z8qjc1C2KEQfzjwQsbU03aF968bGb2BwHWd7mAOafLQJESGkV2A2nnILLf RmFu4lYMiQkt0rSOkyzjRz2EpJJASVyfcNseONM0g+6Y8/sM9ECjsor4TWMBnZuyjNfysuvdJW4Dq ZehKWLEHtyxZl2MuwDiHlqh84U9BdVweWi+XsOL+nZkuP7WzBKE8FvgFyeu7ZKjJt2OrnToh3CgLb Syy1J5jOt7ywMwcFgjNQf6I+mSirb1V4qLhoNwL8Xr24aUN54V/7UO0AuDN7IfR5c7rp4i28IEkvn QEOak3s0rdtCCSMeYU6g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qHR4B-002200-2m; Thu, 06 Jul 2023 15:38:47 +0000 Received: from madras.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e5ab]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qHR47-0021xA-1R; Thu, 06 Jul 2023 15:38:45 +0000 Received: from notapiano.myfiosgateway.com (zone.collabora.co.uk [167.235.23.81]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: nfraprado) by madras.collabora.co.uk (Postfix) with ESMTPSA id D68256606FDB; Thu, 6 Jul 2023 16:38:38 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1688657922; bh=Meb9/4Kmg9q/ka2O8MPM7s6SQhpMPo7uYZzBWndz+9A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KXyfqnA1mYaglla6wEzizqUkepj7HJlGs1V8RL8tY7mnOs6jmNOkOXzfMs5bR7FmG bzwy3lFJ1AyC6XqO45SNHVCisYuN6HDUFn/tfePvxIDm+HPl8UOBsV1RtYvXnEtxWj Meb7Rs25YZoQszTCiNBB1h/mS0GnLgZ6Q93PZiyJOO4aMaepHTP8RcjiOC1LKXYMSc rM2GLEACx/UzcYQS1bD7QM+jFJYA/m6D0MNwUpgQ3L8H5QrtZ4POU+zXEaOydzn6Ki JHTmkekXr/z5tAxdObqpoE9bgkoZWYwyFYqf3Mt0eUEaNkOp0FlezJcihen2dS3RcR VdHi6dpOLSFhg== From: =?UTF-8?q?N=C3=ADcolas=20F=2E=20R=2E=20A=2E=20Prado?= To: Daniel Lezcano Cc: Alexandre Bailon , Balsam CHIHI , AngeloGioacchino Del Regno , Chen-Yu Tsai , Alexandre Mergnat , kernel@collabora.com, =?UTF-8?q?N=C3=ADcolas=20F=2E=20R=2E=20A=2E=20Prado?= , Amit Kucheria , Matthias Brugger , "Rafael J. Wysocki" , Zhang Rui , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-pm@vger.kernel.org Subject: [PATCH v3 2/6] thermal/drivers/mediatek/lvts_thermal: Honor sensors in immediate mode Date: Thu, 6 Jul 2023 11:37:33 -0400 Message-ID: <20230706153823.201943-3-nfraprado@collabora.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230706153823.201943-1-nfraprado@collabora.com> References: <20230706153823.201943-1-nfraprado@collabora.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230706_083843_748231_02AF0D8D X-CRM114-Status: GOOD ( 16.57 ) 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 RWFjaCBjb250cm9sbGVyIGNhbiBiZSBjb25maWd1cmVkIHRvIG9wZXJhdGUgb24gaW1tZWRpYXRl IG9yIGZpbHRlcmVkCm1vZGUuIE9uIGZpbHRlcmVkIG1vZGUsIHRoZSBzZW5zb3JzIGFyZSBlbmFi bGVkIGJ5IHNldHRpbmcgdGhlCmNvcnJlc3BvbmRpbmcgYml0cyBpbiBNT05DVEwwLCB3aGlsZSBv biBpbW1lZGlhdGUgbW9kZSwgYnkgc2V0dGluZwpNU1JDVEwxLgoKUHJldmlvdXNseSwgdGhlIGNv ZGUgd291bGQgc2V0IE1TUkNUTDEgZm9yIGFsbCBmb3VyIHNlbnNvcnMgd2hlbgpjb25maWd1cmVk IHRvIGltbWVkaWF0ZSBtb2RlLCBidXQgZ2l2ZW4gdGhhdCB0aGUgY29udHJvbGxlciBtaWdodCBu b3QKaGF2ZSBhbGwgZm91ciBzZW5zb3JzIGNvbm5lY3RlZCwgdGhpcyB3b3VsZCBjYXVzZSBpbnRl cnJ1cHRzIHRvIHRyaWdnZXIKZm9yIG5vbi1leGlzdGVudCBzZW5zb3JzLiBGaXggdGhpcyBieSBo YW5kbGluZyB0aGUgTVNSQ1RMMSByZWdpc3RlcgphbmFsb2dvdXNseSB0byB0aGUgTU9OQ1RMMDog b25seSBlbmFibGUgdGhlIHNlbnNvcnMgdGhhdCB3ZXJlIGRlY2xhcmVkLgoKRml4ZXM6IGY1ZjYz M2IxODIzNCAoInRoZXJtYWwvZHJpdmVycy9tZWRpYXRlazogQWRkIHRoZSBMb3cgVm9sdGFnZSBU aGVybWFsIFNlbnNvciBkcml2ZXIiKQpSZXZpZXdlZC1ieTogQW5nZWxvR2lvYWNjaGlubyBEZWwg UmVnbm8gPGFuZ2Vsb2dpb2FjY2hpbm8uZGVscmVnbm9AY29sbGFib3JhLmNvbT4KVGVzdGVkLWJ5 OiBDaGVuLVl1IFRzYWkgPHdlbnN0QGNocm9taXVtLm9yZz4KU2lnbmVkLW9mZi1ieTogTsOtY29s YXMgRi4gUi4gQS4gUHJhZG8gPG5mcmFwcmFkb0Bjb2xsYWJvcmEuY29tPgoKLS0tCgpDaGFuZ2Vz IGluIHYzOgotIFNwbGl0IGJpdG1hcHMgZm9yIGltbWVkaWF0ZSBhbmQgZmlsdGVyZWQgbW9kZXMg aW50byBzZXBhcmF0ZSBhcnJheXMKCiBkcml2ZXJzL3RoZXJtYWwvbWVkaWF0ZWsvbHZ0c190aGVy bWFsLmMgfCA1NyArKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzMg aW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy90aGVy bWFsL21lZGlhdGVrL2x2dHNfdGhlcm1hbC5jIGIvZHJpdmVycy90aGVybWFsL21lZGlhdGVrL2x2 dHNfdGhlcm1hbC5jCmluZGV4IGJhOGY4NmVlMTJiNi4uODA4MjE5NWY1M2FlIDEwMDY0NAotLS0g YS9kcml2ZXJzL3RoZXJtYWwvbWVkaWF0ZWsvbHZ0c190aGVybWFsLmMKKysrIGIvZHJpdmVycy90 aGVybWFsL21lZGlhdGVrL2x2dHNfdGhlcm1hbC5jCkBAIC04OTYsMjQgKzg5Niw2IEBAIHN0YXRp YyBpbnQgbHZ0c19jdHJsX2NvbmZpZ3VyZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBsdnRz X2N0cmwgKmx2dHNfY3RybCkKIAkJCUxWVFNfSFdfRklMVEVSIDw8IDMgfCBMVlRTX0hXX0ZJTFRF UjsKIAl3cml0ZWwodmFsdWUsIExWVFNfTVNSQ1RMMChsdnRzX2N0cmwtPmJhc2UpKTsKIAotCS8q Ci0JICogTFZUU19NU1JDVEwxIDogTWVhc3VyZW1lbnQgY29udHJvbAotCSAqCi0JICogQml0czoK LQkgKgotCSAqIDk6IElnbm9yZSBNU1JDVEwwIGNvbmZpZyBhbmQgZG8gaW1tZWRpYXRlIG1lYXN1 cmVtZW50IG9uIHNlbnNvcjMKLQkgKiA2OiBJZ25vcmUgTVNSQ1RMMCBjb25maWcgYW5kIGRvIGlt bWVkaWF0ZSBtZWFzdXJlbWVudCBvbiBzZW5zb3IyCi0JICogNTogSWdub3JlIE1TUkNUTDAgY29u ZmlnIGFuZCBkbyBpbW1lZGlhdGUgbWVhc3VyZW1lbnQgb24gc2Vuc29yMQotCSAqIDQ6IElnbm9y ZSBNU1JDVEwwIGNvbmZpZyBhbmQgZG8gaW1tZWRpYXRlIG1lYXN1cmVtZW50IG9uIHNlbnNvcjAK LQkgKgotCSAqIFRoYXQgY29uZmlndXJhdGlvbiB3aWxsIGlnbm9yZSB0aGUgZmlsdGVyaW5nIGFu ZCB0aGUgZGVsYXlzCi0JICogaW50cm9kdWNlZCBiZWxvdyBpbiBNT05DVEwxIGFuZCBNT05DVEwy Ci0JICovCi0JaWYgKGx2dHNfY3RybC0+bW9kZSA9PSBMVlRTX01TUl9JTU1FRElBVEVfTU9ERSkg ewotCQl2YWx1ZSA9IEJJVCg5KSB8IEJJVCg2KSB8IEJJVCg1KSB8IEJJVCg0KTsKLQkJd3JpdGVs KHZhbHVlLCBMVlRTX01TUkNUTDEobHZ0c19jdHJsLT5iYXNlKSk7Ci0JfQotCiAJLyoKIAkgKiBM VlRTX01PTkNUTDEgOiBQZXJpb2QgdW5pdCBhbmQgZ3JvdXAgaW50ZXJ2YWwgY29uZmlndXJhdGlv bgogCSAqCkBAIC05NzksNiArOTYxLDE1IEBAIHN0YXRpYyBpbnQgbHZ0c19jdHJsX3N0YXJ0KHN0 cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGx2dHNfY3RybCAqbHZ0c19jdHJsKQogCXN0cnVjdCB0 aGVybWFsX3pvbmVfZGV2aWNlICp0ejsKIAl1MzIgc2Vuc29yX21hcCA9IDA7CiAJaW50IGk7CisJ LyoKKwkgKiBCaXRtYXBzIHRvIGVuYWJsZSBlYWNoIHNlbnNvciBvbiBpbW1lZGlhdGUgYW5kIGZp bHRlcmVkIG1vZGVzLCBhcworCSAqIGRlc2NyaWJlZCBpbiBNU1JDVEwxIGFuZCBNT05DVEwwIHJl Z2lzdGVycyBiZWxvdywgcmVzcGVjdGl2ZWx5LgorCSAqLworCXUzMiBzZW5zb3JfaW1tX2JpdG1h cFtdID0geyBCSVQoNCksIEJJVCg1KSwgQklUKDYpLCBCSVQoOSkgfTsKKwl1MzIgc2Vuc29yX2Zp bHRfYml0bWFwW10gPSB7IEJJVCgwKSwgQklUKDEpLCBCSVQoMiksIEJJVCgzKSB9OworCisJdTMy ICpzZW5zb3JfYml0bWFwID0gbHZ0c19jdHJsLT5tb2RlID09IExWVFNfTVNSX0lNTUVESUFURV9N T0RFID8KKwkJCSAgICAgc2Vuc29yX2ltbV9iaXRtYXAgOiBzZW5zb3JfZmlsdF9iaXRtYXA7CiAK IAlmb3IgKGkgPSAwOyBpIDwgbHZ0c19jdHJsLT5udW1fbHZ0c19zZW5zb3I7IGkrKykgewogCkBA IC0xMDE3LDIwICsxMDA4LDM4IEBAIHN0YXRpYyBpbnQgbHZ0c19jdHJsX3N0YXJ0KHN0cnVjdCBk ZXZpY2UgKmRldiwgc3RydWN0IGx2dHNfY3RybCAqbHZ0c19jdHJsKQogCQkgKiBtYXAsIHNvIHdl IGNhbiBlbmFibGUgdGhlIHRlbXBlcmF0dXJlIG1vbml0b3JpbmcgaW4KIAkJICogdGhlIGhhcmR3 YXJlIHRoZXJtYWwgY29udHJvbGxlci4KIAkJICovCi0JCXNlbnNvcl9tYXAgfD0gQklUKGkpOwor CQlzZW5zb3JfbWFwIHw9IHNlbnNvcl9iaXRtYXBbaV07CiAJfQogCiAJLyoKLQkgKiBCaXRzOgot CSAqICAgICAgOTogU2luZ2xlIHBvaW50IGFjY2VzcyBmbG93Ci0JICogICAgMC0zOiBFbmFibGUg c2Vuc2luZyBwb2ludCAwLTMKLQkgKgogCSAqIFRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgdGhl cm1hbCB6b25lcyBnaXZlIHVzCiAJICogd2hpY2ggc2Vuc29yIHBvaW50IHRvIGVuYWJsZS4gSWYg YW55IHRoZXJtYWwgem9uZQogCSAqIHdhcyBub3QgZGVzY3JpYmVkIGluIHRoZSBkZXZpY2UgdHJl ZSwgaXQgd29uJ3QgYmUKIAkgKiBlbmFibGVkIGhlcmUgaW4gdGhlIHNlbnNvciBtYXAuCiAJICov Ci0Jd3JpdGVsKHNlbnNvcl9tYXAgfCBCSVQoOSksIExWVFNfTU9OQ1RMMChsdnRzX2N0cmwtPmJh c2UpKTsKKwlpZiAobHZ0c19jdHJsLT5tb2RlID09IExWVFNfTVNSX0lNTUVESUFURV9NT0RFKSB7 CisJCS8qCisJCSAqIExWVFNfTVNSQ1RMMSA6IE1lYXN1cmVtZW50IGNvbnRyb2wKKwkJICoKKwkJ ICogQml0czoKKwkJICoKKwkJICogOTogSWdub3JlIE1TUkNUTDAgY29uZmlnIGFuZCBkbyBpbW1l ZGlhdGUgbWVhc3VyZW1lbnQgb24gc2Vuc29yMworCQkgKiA2OiBJZ25vcmUgTVNSQ1RMMCBjb25m aWcgYW5kIGRvIGltbWVkaWF0ZSBtZWFzdXJlbWVudCBvbiBzZW5zb3IyCisJCSAqIDU6IElnbm9y ZSBNU1JDVEwwIGNvbmZpZyBhbmQgZG8gaW1tZWRpYXRlIG1lYXN1cmVtZW50IG9uIHNlbnNvcjEK KwkJICogNDogSWdub3JlIE1TUkNUTDAgY29uZmlnIGFuZCBkbyBpbW1lZGlhdGUgbWVhc3VyZW1l bnQgb24gc2Vuc29yMAorCQkgKgorCQkgKiBUaGF0IGNvbmZpZ3VyYXRpb24gd2lsbCBpZ25vcmUg dGhlIGZpbHRlcmluZyBhbmQgdGhlIGRlbGF5cworCQkgKiBpbnRyb2R1Y2VkIGluIE1PTkNUTDEg YW5kIE1PTkNUTDIKKwkJICovCisJCXdyaXRlbChzZW5zb3JfbWFwLCBMVlRTX01TUkNUTDEobHZ0 c19jdHJsLT5iYXNlKSk7CisJfSBlbHNlIHsKKwkJLyoKKwkJICogQml0czoKKwkJICogICAgICA5 OiBTaW5nbGUgcG9pbnQgYWNjZXNzIGZsb3cKKwkJICogICAgMC0zOiBFbmFibGUgc2Vuc2luZyBw b2ludCAwLTMKKwkJICovCisJCXdyaXRlbChzZW5zb3JfbWFwIHwgQklUKDkpLCBMVlRTX01PTkNU TDAobHZ0c19jdHJsLT5iYXNlKSk7CisJfQogCiAJcmV0dXJuIDA7CiB9Ci0tIAoyLjQxLjAKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg==