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 57DBECA0EED for ; Thu, 21 Aug 2025 01:02:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Type: Content-Transfer-Encoding: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=orUs2/nYGmuIZffKa3ygk24Xcz/f3v8T/gGJABvohnY=; b=va4tRbBqjUfoz2QlL7BF4icx1M fGC2HZlRVwx7kS7cDdVlRMK3pdt/RSxEYY2e3paQg8bVsdBmBorLbXm2KF4j9hq0TZTZK6QHxoEgd I1C63RPO4dvIK/ETzfSPnVl0zHRK7rQISqh90qAn8/tyC9HadYF42R6r8rzQn85rZABH1nNz6379W 2oljtS7XkgYBc5Lb1fQHsbKRQGol5DNtS09QA8tkGV0HnPxhwjOoGfgUFcRG3LpymqduQD+eehnSa SMDGH1MWhc30tOd28OwWPtMdScA8qZOMFGFWL9SKltpsGSwc2JW6Nnk5BR5ztHVGARDxlS24XYWFY A4Mp6c/w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uotgr-0000000FMff-1c3V; Thu, 21 Aug 2025 01:02:05 +0000 Received: from gloria.sntech.de ([185.11.138.130]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uopCl-0000000Eog0-3tzH; Wed, 20 Aug 2025 20:14:45 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sntech.de; s=gloria202408; h=Content-Type:Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Reply-To; bh=orUs2/nYGmuIZffKa3ygk24Xcz/f3v8T/gGJABvohnY=; b=uNgAee0ATx8Curr1iJ4NFAI4xP V6hJDPmKw1k5DmUmChKESsDxLzimZtB1ym8LdJnC2HEtbOBuNIoN9hbK15/hY9h14JTxLKoYyTDKT ljcWP7X9X2kvmm+gtL814jx6IyGy+Pkv/C1mRby+92thh1a4NaTDbDd4az+xVq1cCRt3kibUji2g9 PaV7NVNh7guLYUhnl8lbM8DMcq/fhymiDf1QGFADgpNZGIVGHgQFAFtKWNJMj2ZRA3ZKelN+WMXEr 2ftqAAEtddgzGkJCf1SdHp2ENYG+3IUHsGsgTdm84+nnTDUA2hM405YxEv8IU9KyqX5eDeYlFzmdR yRwnOk/w==; Received: from i53875a0d.versanet.de ([83.135.90.13] helo=diego.localnet) by gloria.sntech.de with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uopCQ-0001tM-EZ; Wed, 20 Aug 2025 22:14:22 +0200 From: Heiko =?UTF-8?B?U3TDvGJuZXI=?= To: "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Sebastian Reichel Cc: Robin Murphy , Diederik de Haas , linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, kernel@collabora.com, Sebastian Reichel Subject: Re: [PATCH v2 2/3] thermal: rockchip: shut up GRF warning Date: Wed, 20 Aug 2025 22:14:21 +0200 Message-ID: <3452417.9LS3J3VOpE@diego> In-Reply-To: <20250820-thermal-rockchip-grf-warning-v2-2-c7e2d35017b8@kernel.org> References: <20250820-thermal-rockchip-grf-warning-v2-0-c7e2d35017b8@kernel.org> <20250820-thermal-rockchip-grf-warning-v2-2-c7e2d35017b8@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250820_131444_107461_481BEA9C X-CRM114-Status: GOOD ( 21.99 ) 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: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Am Mittwoch, 20. August 2025, 19:40:48 Mitteleurop=C3=A4ische Sommerzeit sc= hrieb Sebastian Reichel: > Most of the recent Rockchip devices do not have a GRF associated > with the tsadc IP. Let's avoid printing a warning on those devices. >=20 > Signed-off-by: Sebastian Reichel As we talked about in v1, the variants now having grf_required set, had it set in their devicetree nodes all the time - the grf handle was added _with_ the tsadc node. So this does not cause any regression and just makes the warning go away for platforms that do not use any GRF registers. Reviewed-by: Heiko Stuebner > --- > drivers/thermal/rockchip_thermal.c | 23 ++++++++++++++++++----- > 1 file changed, 18 insertions(+), 5 deletions(-) >=20 > diff --git a/drivers/thermal/rockchip_thermal.c b/drivers/thermal/rockchi= p_thermal.c > index 7b18a705dfade6fa7318b28c2b57544a4446c1cc..c49ddf70f86e7beaf0190b1b3= e93f5e6b2f72b2c 100644 > --- a/drivers/thermal/rockchip_thermal.c > +++ b/drivers/thermal/rockchip_thermal.c > @@ -74,6 +74,7 @@ struct chip_tsadc_table { > * @tshut_temp: the hardware-controlled shutdown temperature value, with= no trim > * @tshut_mode: the hardware-controlled shutdown mode (0:CRU 1:GPIO) > * @tshut_polarity: the hardware-controlled active polarity (0:LOW 1:HIG= H) > + * @grf_required: true, if a GRF is required for proper functionality > * @initialize: SoC special initialize tsadc controller method > * @irq_ack: clear the interrupt > * @control: enable/disable method for the tsadc controller > @@ -97,6 +98,9 @@ struct rockchip_tsadc_chip { > enum tshut_mode tshut_mode; > enum tshut_polarity tshut_polarity; > =20 > + /* GRF availability */ > + bool grf_required; > + > /* Chip-wide methods */ > void (*initialize)(struct regmap *grf, > void __iomem *reg, enum tshut_polarity p); > @@ -1098,6 +1102,7 @@ static const struct rockchip_tsadc_chip px30_tsadc_= data =3D { > /* cpu, gpu */ > .chn_offset =3D 0, > .chn_num =3D 2, /* 2 channels for tsadc */ > + .grf_required =3D true, > .tshut_mode =3D TSHUT_MODE_CRU, /* default TSHUT via CRU */ > .tshut_temp =3D 95000, > .initialize =3D rk_tsadcv4_initialize, > @@ -1119,6 +1124,7 @@ static const struct rockchip_tsadc_chip rv1108_tsad= c_data =3D { > /* cpu */ > .chn_offset =3D 0, > .chn_num =3D 1, /* one channel for tsadc */ > + .grf_required =3D false, > .tshut_mode =3D TSHUT_MODE_GPIO, /* default TSHUT via GPIO give PMIC */ > .tshut_polarity =3D TSHUT_LOW_ACTIVE, /* default TSHUT LOW ACTIVE */ > .tshut_temp =3D 95000, > @@ -1141,6 +1147,7 @@ static const struct rockchip_tsadc_chip rk3228_tsad= c_data =3D { > /* cpu */ > .chn_offset =3D 0, > .chn_num =3D 1, /* one channel for tsadc */ > + .grf_required =3D false, > .tshut_mode =3D TSHUT_MODE_GPIO, /* default TSHUT via GPIO give PMIC */ > .tshut_polarity =3D TSHUT_LOW_ACTIVE, /* default TSHUT LOW ACTIVE */ > .tshut_temp =3D 95000, > @@ -1163,6 +1170,7 @@ static const struct rockchip_tsadc_chip rk3288_tsad= c_data =3D { > /* cpu, gpu */ > .chn_offset =3D 1, > .chn_num =3D 2, /* two channels for tsadc */ > + .grf_required =3D false, > .tshut_mode =3D TSHUT_MODE_GPIO, /* default TSHUT via GPIO give PMIC */ > .tshut_polarity =3D TSHUT_LOW_ACTIVE, /* default TSHUT LOW ACTIVE */ > .tshut_temp =3D 95000, > @@ -1185,6 +1193,7 @@ static const struct rockchip_tsadc_chip rk3328_tsad= c_data =3D { > /* cpu */ > .chn_offset =3D 0, > .chn_num =3D 1, /* one channels for tsadc */ > + .grf_required =3D false, > .tshut_mode =3D TSHUT_MODE_CRU, /* default TSHUT via CRU */ > .tshut_temp =3D 95000, > .initialize =3D rk_tsadcv2_initialize, > @@ -1206,6 +1215,7 @@ static const struct rockchip_tsadc_chip rk3366_tsad= c_data =3D { > /* cpu, gpu */ > .chn_offset =3D 0, > .chn_num =3D 2, /* two channels for tsadc */ > + .grf_required =3D true, > .tshut_mode =3D TSHUT_MODE_GPIO, /* default TSHUT via GPIO give PMIC */ > .tshut_polarity =3D TSHUT_LOW_ACTIVE, /* default TSHUT LOW ACTIVE */ > .tshut_temp =3D 95000, > @@ -1228,6 +1238,7 @@ static const struct rockchip_tsadc_chip rk3368_tsad= c_data =3D { > /* cpu, gpu */ > .chn_offset =3D 0, > .chn_num =3D 2, /* two channels for tsadc */ > + .grf_required =3D false, > .tshut_mode =3D TSHUT_MODE_GPIO, /* default TSHUT via GPIO give PMIC */ > .tshut_polarity =3D TSHUT_LOW_ACTIVE, /* default TSHUT LOW ACTIVE */ > .tshut_temp =3D 95000, > @@ -1250,6 +1261,7 @@ static const struct rockchip_tsadc_chip rk3399_tsad= c_data =3D { > /* cpu, gpu */ > .chn_offset =3D 0, > .chn_num =3D 2, /* two channels for tsadc */ > + .grf_required =3D true, > .tshut_mode =3D TSHUT_MODE_GPIO, /* default TSHUT via GPIO give PMIC */ > .tshut_polarity =3D TSHUT_LOW_ACTIVE, /* default TSHUT LOW ACTIVE */ > .tshut_temp =3D 95000, > @@ -1272,6 +1284,7 @@ static const struct rockchip_tsadc_chip rk3568_tsad= c_data =3D { > /* cpu, gpu */ > .chn_offset =3D 0, > .chn_num =3D 2, /* two channels for tsadc */ > + .grf_required =3D true, > .tshut_mode =3D TSHUT_MODE_GPIO, /* default TSHUT via GPIO give PMIC */ > .tshut_polarity =3D TSHUT_LOW_ACTIVE, /* default TSHUT LOW ACTIVE */ > .tshut_temp =3D 95000, > @@ -1294,6 +1307,7 @@ static const struct rockchip_tsadc_chip rk3576_tsad= c_data =3D { > /* top, big_core, little_core, ddr, npu, gpu */ > .chn_offset =3D 0, > .chn_num =3D 6, /* six channels for tsadc */ > + .grf_required =3D false, > .tshut_mode =3D TSHUT_MODE_GPIO, /* default TSHUT via GPIO give PMIC */ > .tshut_polarity =3D TSHUT_LOW_ACTIVE, /* default TSHUT LOW ACTIVE */ > .tshut_temp =3D 95000, > @@ -1318,6 +1332,7 @@ static const struct rockchip_tsadc_chip rk3588_tsad= c_data =3D { > /* top, big_core0, big_core1, little_core, center, gpu, npu */ > .chn_offset =3D 0, > .chn_num =3D 7, /* seven channels for tsadc */ > + .grf_required =3D false, > .tshut_mode =3D TSHUT_MODE_GPIO, /* default TSHUT via GPIO give PMIC */ > .tshut_polarity =3D TSHUT_LOW_ACTIVE, /* default TSHUT LOW ACTIVE */ > .tshut_temp =3D 95000, > @@ -1594,12 +1609,10 @@ static int rockchip_configure_from_dt(struct devi= ce *dev, > return -EINVAL; > } > =20 > - /* The tsadc wont to handle the error in here since some SoCs didn't > - * need this property. > - */ > thermal->grf =3D syscon_regmap_lookup_by_phandle(np, "rockchip,grf"); > - if (IS_ERR(thermal->grf)) > - dev_warn(dev, "Missing rockchip,grf property\n"); > + if (IS_ERR(thermal->grf) && thermal->chip->grf_required) > + return dev_err_probe(dev, PTR_ERR(thermal->grf), > + "Missing rockchip,grf property\n"); > =20 > rockchip_get_trim_configuration(dev, np, thermal); > =20 >=20 >=20 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 3E1AACA0EED for ; Wed, 20 Aug 2025 23:17: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=ddx4Yfex78Qyx6AgRiU9wMpAOYMjWCe/E2tNF+s5ogk=; b=PRyQhwoN0rw2Qt erFaYFPYYwphXxAfQDmGcQw/OnVK07CwF+Ly5r33VYnAHOwoYXFgeE69BaZhPPqyw0T52E2sVGWjn 3f++UFUOToEX46/sbqG/AGEG5JVgJ2o+3SN6mV0gunPQ1wRUgLlnROmzCtZN03McOqe9+Rkl+V40g 2L1aAuKh1uAHD4wTADMH49se/rmT4oxCrn7KyDS8iuAHRR3/4j4GZmb3qRS0cyIAiXiJ6PpxVJV0i 20///eNlZp2xtd/6GS0AcehsPMwt1OKwYom4B12ealI8W4iZU+F3o4SQ6M5oyv69hSuWKoYDRr+yO QHwaXfbUYz7VtDGHJR1g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1uos3p-0000000FBD1-0fE8; Wed, 20 Aug 2025 23:17:41 +0000 Received: from gloria.sntech.de ([185.11.138.130]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1uopCl-0000000Eog0-3tzH; Wed, 20 Aug 2025 20:14:45 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sntech.de; s=gloria202408; h=Content-Type:Content-Transfer-Encoding:MIME-Version: References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Reply-To; bh=orUs2/nYGmuIZffKa3ygk24Xcz/f3v8T/gGJABvohnY=; b=uNgAee0ATx8Curr1iJ4NFAI4xP V6hJDPmKw1k5DmUmChKESsDxLzimZtB1ym8LdJnC2HEtbOBuNIoN9hbK15/hY9h14JTxLKoYyTDKT ljcWP7X9X2kvmm+gtL814jx6IyGy+Pkv/C1mRby+92thh1a4NaTDbDd4az+xVq1cCRt3kibUji2g9 PaV7NVNh7guLYUhnl8lbM8DMcq/fhymiDf1QGFADgpNZGIVGHgQFAFtKWNJMj2ZRA3ZKelN+WMXEr 2ftqAAEtddgzGkJCf1SdHp2ENYG+3IUHsGsgTdm84+nnTDUA2hM405YxEv8IU9KyqX5eDeYlFzmdR yRwnOk/w==; Received: from i53875a0d.versanet.de ([83.135.90.13] helo=diego.localnet) by gloria.sntech.de with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uopCQ-0001tM-EZ; Wed, 20 Aug 2025 22:14:22 +0200 From: Heiko =?UTF-8?B?U3TDvGJuZXI=?= To: "Rafael J. Wysocki" , Daniel Lezcano , Zhang Rui , Lukasz Luba , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Sebastian Reichel Cc: Robin Murphy , Diederik de Haas , linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, kernel@collabora.com, Sebastian Reichel Subject: Re: [PATCH v2 2/3] thermal: rockchip: shut up GRF warning Date: Wed, 20 Aug 2025 22:14:21 +0200 Message-ID: <3452417.9LS3J3VOpE@diego> In-Reply-To: <20250820-thermal-rockchip-grf-warning-v2-2-c7e2d35017b8@kernel.org> References: <20250820-thermal-rockchip-grf-warning-v2-0-c7e2d35017b8@kernel.org> <20250820-thermal-rockchip-grf-warning-v2-2-c7e2d35017b8@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250820_131444_107461_481BEA9C X-CRM114-Status: GOOD ( 21.99 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org QW0gTWl0dHdvY2gsIDIwLiBBdWd1c3QgMjAyNSwgMTk6NDA6NDggTWl0dGVsZXVyb3DDpGlzY2hl IFNvbW1lcnplaXQgc2NocmllYiBTZWJhc3RpYW4gUmVpY2hlbDoKPiBNb3N0IG9mIHRoZSByZWNl bnQgUm9ja2NoaXAgZGV2aWNlcyBkbyBub3QgaGF2ZSBhIEdSRiBhc3NvY2lhdGVkCj4gd2l0aCB0 aGUgdHNhZGMgSVAuIExldCdzIGF2b2lkIHByaW50aW5nIGEgd2FybmluZyBvbiB0aG9zZSBkZXZp Y2VzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFNlYmFzdGlhbiBSZWljaGVsIDxzZWJhc3RpYW4ucmVp Y2hlbEBjb2xsYWJvcmEuY29tPgoKQXMgd2UgdGFsa2VkIGFib3V0IGluIHYxLCB0aGUgdmFyaWFu dHMgbm93IGhhdmluZyBncmZfcmVxdWlyZWQgc2V0LApoYWQgaXQgc2V0IGluIHRoZWlyIGRldmlj ZXRyZWUgbm9kZXMgYWxsIHRoZSB0aW1lIC0gdGhlIGdyZiBoYW5kbGUKd2FzIGFkZGVkIF93aXRo XyB0aGUgdHNhZGMgbm9kZS4KClNvIHRoaXMgZG9lcyBub3QgY2F1c2UgYW55IHJlZ3Jlc3Npb24g YW5kIGp1c3QgbWFrZXMgdGhlCndhcm5pbmcgZ28gYXdheSBmb3IgcGxhdGZvcm1zIHRoYXQgZG8g bm90IHVzZSBhbnkgR1JGIHJlZ2lzdGVycy4KCgpSZXZpZXdlZC1ieTogSGVpa28gU3R1ZWJuZXIg PGhlaWtvQHNudGVjaC5kZT4KCgo+IC0tLQo+ICBkcml2ZXJzL3RoZXJtYWwvcm9ja2NoaXBfdGhl cm1hbC5jIHwgMjMgKysrKysrKysrKysrKysrKysrLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDE4 IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv dGhlcm1hbC9yb2NrY2hpcF90aGVybWFsLmMgYi9kcml2ZXJzL3RoZXJtYWwvcm9ja2NoaXBfdGhl cm1hbC5jCj4gaW5kZXggN2IxOGE3MDVkZmFkZTZmYTczMThiMjhjMmI1NzU0NGE0NDQ2YzFjYy4u YzQ5ZGRmNzBmODZlN2JlYWYwMTkwYjFiM2U5M2Y1ZTZiMmY3MmIyYyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL3RoZXJtYWwvcm9ja2NoaXBfdGhlcm1hbC5jCj4gKysrIGIvZHJpdmVycy90aGVybWFs L3JvY2tjaGlwX3RoZXJtYWwuYwo+IEBAIC03NCw2ICs3NCw3IEBAIHN0cnVjdCBjaGlwX3RzYWRj X3RhYmxlIHsKPiAgICogQHRzaHV0X3RlbXA6IHRoZSBoYXJkd2FyZS1jb250cm9sbGVkIHNodXRk b3duIHRlbXBlcmF0dXJlIHZhbHVlLCB3aXRoIG5vIHRyaW0KPiAgICogQHRzaHV0X21vZGU6IHRo ZSBoYXJkd2FyZS1jb250cm9sbGVkIHNodXRkb3duIG1vZGUgKDA6Q1JVIDE6R1BJTykKPiAgICog QHRzaHV0X3BvbGFyaXR5OiB0aGUgaGFyZHdhcmUtY29udHJvbGxlZCBhY3RpdmUgcG9sYXJpdHkg KDA6TE9XIDE6SElHSCkKPiArICogQGdyZl9yZXF1aXJlZDogdHJ1ZSwgaWYgYSBHUkYgaXMgcmVx dWlyZWQgZm9yIHByb3BlciBmdW5jdGlvbmFsaXR5Cj4gICAqIEBpbml0aWFsaXplOiBTb0Mgc3Bl Y2lhbCBpbml0aWFsaXplIHRzYWRjIGNvbnRyb2xsZXIgbWV0aG9kCj4gICAqIEBpcnFfYWNrOiBj bGVhciB0aGUgaW50ZXJydXB0Cj4gICAqIEBjb250cm9sOiBlbmFibGUvZGlzYWJsZSBtZXRob2Qg Zm9yIHRoZSB0c2FkYyBjb250cm9sbGVyCj4gQEAgLTk3LDYgKzk4LDkgQEAgc3RydWN0IHJvY2tj aGlwX3RzYWRjX2NoaXAgewo+ICAJZW51bSB0c2h1dF9tb2RlIHRzaHV0X21vZGU7Cj4gIAllbnVt IHRzaHV0X3BvbGFyaXR5IHRzaHV0X3BvbGFyaXR5Owo+ICAKPiArCS8qIEdSRiBhdmFpbGFiaWxp dHkgKi8KPiArCWJvb2wgZ3JmX3JlcXVpcmVkOwo+ICsKPiAgCS8qIENoaXAtd2lkZSBtZXRob2Rz ICovCj4gIAl2b2lkICgqaW5pdGlhbGl6ZSkoc3RydWN0IHJlZ21hcCAqZ3JmLAo+ICAJCQkgICB2 b2lkIF9faW9tZW0gKnJlZywgZW51bSB0c2h1dF9wb2xhcml0eSBwKTsKPiBAQCAtMTA5OCw2ICsx MTAyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCByb2NrY2hpcF90c2FkY19jaGlwIHB4MzBfdHNh ZGNfZGF0YSA9IHsKPiAgCS8qIGNwdSwgZ3B1ICovCj4gIAkuY2huX29mZnNldCA9IDAsCj4gIAku Y2huX251bSA9IDIsIC8qIDIgY2hhbm5lbHMgZm9yIHRzYWRjICovCj4gKwkuZ3JmX3JlcXVpcmVk ID0gdHJ1ZSwKPiAgCS50c2h1dF9tb2RlID0gVFNIVVRfTU9ERV9DUlUsIC8qIGRlZmF1bHQgVFNI VVQgdmlhIENSVSAqLwo+ICAJLnRzaHV0X3RlbXAgPSA5NTAwMCwKPiAgCS5pbml0aWFsaXplID0g cmtfdHNhZGN2NF9pbml0aWFsaXplLAo+IEBAIC0xMTE5LDYgKzExMjQsNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IHJvY2tjaGlwX3RzYWRjX2NoaXAgcnYxMTA4X3RzYWRjX2RhdGEgPSB7Cj4gIAkv KiBjcHUgKi8KPiAgCS5jaG5fb2Zmc2V0ID0gMCwKPiAgCS5jaG5fbnVtID0gMSwgLyogb25lIGNo YW5uZWwgZm9yIHRzYWRjICovCj4gKwkuZ3JmX3JlcXVpcmVkID0gZmFsc2UsCj4gIAkudHNodXRf bW9kZSA9IFRTSFVUX01PREVfR1BJTywgLyogZGVmYXVsdCBUU0hVVCB2aWEgR1BJTyBnaXZlIFBN SUMgKi8KPiAgCS50c2h1dF9wb2xhcml0eSA9IFRTSFVUX0xPV19BQ1RJVkUsIC8qIGRlZmF1bHQg VFNIVVQgTE9XIEFDVElWRSAqLwo+ICAJLnRzaHV0X3RlbXAgPSA5NTAwMCwKPiBAQCAtMTE0MSw2 ICsxMTQ3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCByb2NrY2hpcF90c2FkY19jaGlwIHJrMzIy OF90c2FkY19kYXRhID0gewo+ICAJLyogY3B1ICovCj4gIAkuY2huX29mZnNldCA9IDAsCj4gIAku Y2huX251bSA9IDEsIC8qIG9uZSBjaGFubmVsIGZvciB0c2FkYyAqLwo+ICsJLmdyZl9yZXF1aXJl ZCA9IGZhbHNlLAo+ICAJLnRzaHV0X21vZGUgPSBUU0hVVF9NT0RFX0dQSU8sIC8qIGRlZmF1bHQg VFNIVVQgdmlhIEdQSU8gZ2l2ZSBQTUlDICovCj4gIAkudHNodXRfcG9sYXJpdHkgPSBUU0hVVF9M T1dfQUNUSVZFLCAvKiBkZWZhdWx0IFRTSFVUIExPVyBBQ1RJVkUgKi8KPiAgCS50c2h1dF90ZW1w ID0gOTUwMDAsCj4gQEAgLTExNjMsNiArMTE3MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgcm9j a2NoaXBfdHNhZGNfY2hpcCByazMyODhfdHNhZGNfZGF0YSA9IHsKPiAgCS8qIGNwdSwgZ3B1ICov Cj4gIAkuY2huX29mZnNldCA9IDEsCj4gIAkuY2huX251bSA9IDIsIC8qIHR3byBjaGFubmVscyBm b3IgdHNhZGMgKi8KPiArCS5ncmZfcmVxdWlyZWQgPSBmYWxzZSwKPiAgCS50c2h1dF9tb2RlID0g VFNIVVRfTU9ERV9HUElPLCAvKiBkZWZhdWx0IFRTSFVUIHZpYSBHUElPIGdpdmUgUE1JQyAqLwo+ ICAJLnRzaHV0X3BvbGFyaXR5ID0gVFNIVVRfTE9XX0FDVElWRSwgLyogZGVmYXVsdCBUU0hVVCBM T1cgQUNUSVZFICovCj4gIAkudHNodXRfdGVtcCA9IDk1MDAwLAo+IEBAIC0xMTg1LDYgKzExOTMs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJvY2tjaGlwX3RzYWRjX2NoaXAgcmszMzI4X3RzYWRj X2RhdGEgPSB7Cj4gIAkvKiBjcHUgKi8KPiAgCS5jaG5fb2Zmc2V0ID0gMCwKPiAgCS5jaG5fbnVt ID0gMSwgLyogb25lIGNoYW5uZWxzIGZvciB0c2FkYyAqLwo+ICsJLmdyZl9yZXF1aXJlZCA9IGZh bHNlLAo+ICAJLnRzaHV0X21vZGUgPSBUU0hVVF9NT0RFX0NSVSwgLyogZGVmYXVsdCBUU0hVVCB2 aWEgQ1JVICovCj4gIAkudHNodXRfdGVtcCA9IDk1MDAwLAo+ICAJLmluaXRpYWxpemUgPSBya190 c2FkY3YyX2luaXRpYWxpemUsCj4gQEAgLTEyMDYsNiArMTIxNSw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3Qgcm9ja2NoaXBfdHNhZGNfY2hpcCByazMzNjZfdHNhZGNfZGF0YSA9IHsKPiAgCS8qIGNw dSwgZ3B1ICovCj4gIAkuY2huX29mZnNldCA9IDAsCj4gIAkuY2huX251bSA9IDIsIC8qIHR3byBj aGFubmVscyBmb3IgdHNhZGMgKi8KPiArCS5ncmZfcmVxdWlyZWQgPSB0cnVlLAo+ICAJLnRzaHV0 X21vZGUgPSBUU0hVVF9NT0RFX0dQSU8sIC8qIGRlZmF1bHQgVFNIVVQgdmlhIEdQSU8gZ2l2ZSBQ TUlDICovCj4gIAkudHNodXRfcG9sYXJpdHkgPSBUU0hVVF9MT1dfQUNUSVZFLCAvKiBkZWZhdWx0 IFRTSFVUIExPVyBBQ1RJVkUgKi8KPiAgCS50c2h1dF90ZW1wID0gOTUwMDAsCj4gQEAgLTEyMjgs NiArMTIzOCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgcm9ja2NoaXBfdHNhZGNfY2hpcCByazMz NjhfdHNhZGNfZGF0YSA9IHsKPiAgCS8qIGNwdSwgZ3B1ICovCj4gIAkuY2huX29mZnNldCA9IDAs Cj4gIAkuY2huX251bSA9IDIsIC8qIHR3byBjaGFubmVscyBmb3IgdHNhZGMgKi8KPiArCS5ncmZf cmVxdWlyZWQgPSBmYWxzZSwKPiAgCS50c2h1dF9tb2RlID0gVFNIVVRfTU9ERV9HUElPLCAvKiBk ZWZhdWx0IFRTSFVUIHZpYSBHUElPIGdpdmUgUE1JQyAqLwo+ICAJLnRzaHV0X3BvbGFyaXR5ID0g VFNIVVRfTE9XX0FDVElWRSwgLyogZGVmYXVsdCBUU0hVVCBMT1cgQUNUSVZFICovCj4gIAkudHNo dXRfdGVtcCA9IDk1MDAwLAo+IEBAIC0xMjUwLDYgKzEyNjEsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IHJvY2tjaGlwX3RzYWRjX2NoaXAgcmszMzk5X3RzYWRjX2RhdGEgPSB7Cj4gIAkvKiBjcHUs IGdwdSAqLwo+ICAJLmNobl9vZmZzZXQgPSAwLAo+ICAJLmNobl9udW0gPSAyLCAvKiB0d28gY2hh bm5lbHMgZm9yIHRzYWRjICovCj4gKwkuZ3JmX3JlcXVpcmVkID0gdHJ1ZSwKPiAgCS50c2h1dF9t b2RlID0gVFNIVVRfTU9ERV9HUElPLCAvKiBkZWZhdWx0IFRTSFVUIHZpYSBHUElPIGdpdmUgUE1J QyAqLwo+ICAJLnRzaHV0X3BvbGFyaXR5ID0gVFNIVVRfTE9XX0FDVElWRSwgLyogZGVmYXVsdCBU U0hVVCBMT1cgQUNUSVZFICovCj4gIAkudHNodXRfdGVtcCA9IDk1MDAwLAo+IEBAIC0xMjcyLDYg KzEyODQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJvY2tjaGlwX3RzYWRjX2NoaXAgcmszNTY4 X3RzYWRjX2RhdGEgPSB7Cj4gIAkvKiBjcHUsIGdwdSAqLwo+ICAJLmNobl9vZmZzZXQgPSAwLAo+ ICAJLmNobl9udW0gPSAyLCAvKiB0d28gY2hhbm5lbHMgZm9yIHRzYWRjICovCj4gKwkuZ3JmX3Jl cXVpcmVkID0gdHJ1ZSwKPiAgCS50c2h1dF9tb2RlID0gVFNIVVRfTU9ERV9HUElPLCAvKiBkZWZh dWx0IFRTSFVUIHZpYSBHUElPIGdpdmUgUE1JQyAqLwo+ICAJLnRzaHV0X3BvbGFyaXR5ID0gVFNI VVRfTE9XX0FDVElWRSwgLyogZGVmYXVsdCBUU0hVVCBMT1cgQUNUSVZFICovCj4gIAkudHNodXRf dGVtcCA9IDk1MDAwLAo+IEBAIC0xMjk0LDYgKzEzMDcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 IHJvY2tjaGlwX3RzYWRjX2NoaXAgcmszNTc2X3RzYWRjX2RhdGEgPSB7Cj4gIAkvKiB0b3AsIGJp Z19jb3JlLCBsaXR0bGVfY29yZSwgZGRyLCBucHUsIGdwdSAqLwo+ICAJLmNobl9vZmZzZXQgPSAw LAo+ICAJLmNobl9udW0gPSA2LCAvKiBzaXggY2hhbm5lbHMgZm9yIHRzYWRjICovCj4gKwkuZ3Jm X3JlcXVpcmVkID0gZmFsc2UsCj4gIAkudHNodXRfbW9kZSA9IFRTSFVUX01PREVfR1BJTywgLyog ZGVmYXVsdCBUU0hVVCB2aWEgR1BJTyBnaXZlIFBNSUMgKi8KPiAgCS50c2h1dF9wb2xhcml0eSA9 IFRTSFVUX0xPV19BQ1RJVkUsIC8qIGRlZmF1bHQgVFNIVVQgTE9XIEFDVElWRSAqLwo+ICAJLnRz aHV0X3RlbXAgPSA5NTAwMCwKPiBAQCAtMTMxOCw2ICsxMzMyLDcgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCByb2NrY2hpcF90c2FkY19jaGlwIHJrMzU4OF90c2FkY19kYXRhID0gewo+ICAJLyogdG9w LCBiaWdfY29yZTAsIGJpZ19jb3JlMSwgbGl0dGxlX2NvcmUsIGNlbnRlciwgZ3B1LCBucHUgKi8K PiAgCS5jaG5fb2Zmc2V0ID0gMCwKPiAgCS5jaG5fbnVtID0gNywgLyogc2V2ZW4gY2hhbm5lbHMg Zm9yIHRzYWRjICovCj4gKwkuZ3JmX3JlcXVpcmVkID0gZmFsc2UsCj4gIAkudHNodXRfbW9kZSA9 IFRTSFVUX01PREVfR1BJTywgLyogZGVmYXVsdCBUU0hVVCB2aWEgR1BJTyBnaXZlIFBNSUMgKi8K PiAgCS50c2h1dF9wb2xhcml0eSA9IFRTSFVUX0xPV19BQ1RJVkUsIC8qIGRlZmF1bHQgVFNIVVQg TE9XIEFDVElWRSAqLwo+ICAJLnRzaHV0X3RlbXAgPSA5NTAwMCwKPiBAQCAtMTU5NCwxMiArMTYw OSwxMCBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX2NvbmZpZ3VyZV9mcm9tX2R0KHN0cnVjdCBkZXZp Y2UgKmRldiwKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gLQkvKiBUaGUgdHNhZGMg d29udCB0byBoYW5kbGUgdGhlIGVycm9yIGluIGhlcmUgc2luY2Ugc29tZSBTb0NzIGRpZG4ndAo+ IC0JICogbmVlZCB0aGlzIHByb3BlcnR5Lgo+IC0JICovCj4gIAl0aGVybWFsLT5ncmYgPSBzeXNj b25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlKG5wLCAicm9ja2NoaXAsZ3JmIik7Cj4gLQlpZiAo SVNfRVJSKHRoZXJtYWwtPmdyZikpCj4gLQkJZGV2X3dhcm4oZGV2LCAiTWlzc2luZyByb2NrY2hp cCxncmYgcHJvcGVydHlcbiIpOwo+ICsJaWYgKElTX0VSUih0aGVybWFsLT5ncmYpICYmIHRoZXJt YWwtPmNoaXAtPmdyZl9yZXF1aXJlZCkKPiArCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBU Ul9FUlIodGhlcm1hbC0+Z3JmKSwKPiArCQkJCSAgICAgIk1pc3Npbmcgcm9ja2NoaXAsZ3JmIHBy b3BlcnR5XG4iKTsKPiAgCj4gIAlyb2NrY2hpcF9nZXRfdHJpbV9jb25maWd1cmF0aW9uKGRldiwg bnAsIHRoZXJtYWwpOwo+ICAKPiAKPiAKCgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKTGludXgtcm9j a2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWls bWFuL2xpc3RpbmZvL2xpbnV4LXJvY2tjaGlwCg==