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 E5D18C6FA8E for ; Tue, 20 Sep 2022 14:55:21 +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: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=fPYIXBrGqDJVkLFnuIax2ZlfMOy+oHwT3nDvjClZkX8=; b=lpGGZvdUkwDDsV B2Tg7Ra1UACSvi5mqpZPUfNezlEF+w6QSrBvbUx5CHtahIqrSgjCD4u+yyVCbVlhl0tkwSFeZs9VH UsLjr1WiNL6UVi7k5TtlfTsvJqrs5gbtKAVgfA5y+PCl1PRTgxASA7CxoQLPe+IMy7zIBi+x3g3CJ 8A0XJV3JXAxYB9SBJhyeqR+y9+XYlV/ps14H3pGnK3VlTdA29eosFcuvIKewOiQ317aS5umc0mKq0 sahP3/TZ4jS0Vb6O1sHqp9v8njKGMtNB6meQFeyvcoL8ov4guxckh2MYmEdBedNIIkOQ5NufN+5+7 wXpjLFsvXDE0CE717HYQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oaeeR-004d0z-JM; Tue, 20 Sep 2022 14:55:07 +0000 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oaeeE-004cqc-30; Tue, 20 Sep 2022 14:54:56 +0000 Received: by mail-wr1-x42b.google.com with SMTP id z6so4774770wrq.1; Tue, 20 Sep 2022 07:54:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date; bh=pCURNhn6Rw9wz2vUv7eatknMQWidr34V6aQvNqhRxV8=; b=X0w85ytfANl8OXlNlGCm9gxzf2v5fXXTK6SHSbEOD779B6NhJ5wTp7BZCETWw7cTgn eqOt23P2SFHuHHkpY/bpLgr60W83uElzAvlSw1+0M12qcCAcm34lYujgGfGGxuI5ch9H Io1eAD07554hfq1bqFjRWOQyETpRCm8wvNo1rfghk46Hq8iOBMcoVycjcrUJw+Hq+XU6 nsgPGVEpsZm1u+TqxFK3pZ3Wz6n1kykTt8Ldd8pOQOmJoOJl2eq6Xd7q0dGUC99o4oU4 WLrkytDJuinhysEzU3Mt/2BcYn4mth+q+A4nGQsjweDDpIaOiG/lv0FAcuO5JUW2BDeb WJOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state :from:to:cc:subject:date; bh=pCURNhn6Rw9wz2vUv7eatknMQWidr34V6aQvNqhRxV8=; b=TElz4TjzlgKXS/7fprTEhRuWyVONSlVCeu2DM53cjZRC36OBPAMtHgmfrESt03eadu e1bkQnD91+ghzzE+d+LFipQcOF4tgtum1/yORfjaBnc8Is1g+fcI9Zz7L5VuIITq9yGw lD5yGfDX3W+d7SDmPCRCqU4Amuq4QUrgzF2lpmc3BljytxA4PM8RFnsxKsjXxWc3ADQX WZfqBQraBJvjP1qXPm98XkkGXk8UaadHez0TNiTC8HIVP8oJeyJ6lBIWp4BNL1CNIj9h Uy7l5gjG2rmUPbXhjx4Ad6arT+jkiX1VU9N53Fr9nrAWsFX/y4wdCB4TKohzrYTFVpJ+ Hk6g== X-Gm-Message-State: ACrzQf1Lpw8HS+vsnOP6T7b0SAVgWV45fDOZiNammMozbeGIqOhq3eGM x199E6shVVh+TMzjeiLkM2w= X-Google-Smtp-Source: AMsMyM6onJ62JMeiYj7H0jjeK6iNqm3Vk7acM/iwPJAbMVfAXaGDcla++1gSoFLtovhuXwNrbz/AmA== X-Received: by 2002:a5d:6483:0:b0:226:db59:2f94 with SMTP id o3-20020a5d6483000000b00226db592f94mr14329436wri.200.1663685685594; Tue, 20 Sep 2022 07:54:45 -0700 (PDT) Received: from p200300f6ef036f005de6a4d0d791ed01.dip0.t-ipconnect.de (p200300f6ef036f005de6a4d0d791ed01.dip0.t-ipconnect.de. [2003:f6:ef03:6f00:5de6:a4d0:d791:ed01]) by smtp.gmail.com with ESMTPSA id b10-20020adfe64a000000b00228cbac7a25sm245931wrn.64.2022.09.20.07.54.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Sep 2022 07:54:45 -0700 (PDT) Message-ID: <1684ca38960d035a0fedd077ed149f524c58f7ff.camel@gmail.com> Subject: Re: [PATCH 13/15] iio: health: max30100: do not use internal iio_dev lock From: Nuno =?ISO-8859-1?Q?S=E1?= To: Miquel Raynal , "Sa, Nuno" Cc: "linux-arm-kernel@lists.infradead.org" , "linux-rockchip@lists.infradead.org" , "linux-amlogic@lists.infradead.org" , "linux-imx@nxp.com" , "linux-iio@vger.kernel.org" , Chunyan Zhang , "Hennerich, Michael" , Martin Blumenstingl , Sascha Hauer , Cixi Geng , Kevin Hilman , Vladimir Zapolskiy , Pengutronix Kernel Team , Alexandru Ardelean , Fabio Estevam , Andriy Tryshnivskyy , Haibo Chen , Shawn Guo , Hans de Goede , Jerome Brunet , Heiko Stuebner , Florian Boor , "Regus, Ciprian" , Lars-Peter Clausen , Andy Shevchenko , Jonathan Cameron , Neil Armstrong , Baolin Wang , Jyoti Bhayana , Chen-Yu Tsai , Orson Zhai Date: Tue, 20 Sep 2022 16:56:01 +0200 In-Reply-To: <20220920155305.395dad08@xps-13> References: <20220920112821.975359-1-nuno.sa@analog.com> <20220920112821.975359-14-nuno.sa@analog.com> <20220920142319.61557023@xps-13> <20220920145534.0bdd4e69@xps-13> <20220920155305.395dad08@xps-13> User-Agent: Evolution 3.44.4 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220920_075454_207653_E45D3414 X-CRM114-Status: GOOD ( 59.36 ) X-BeenThere: linux-amlogic@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-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org T24gVHVlLCAyMDIyLTA5LTIwIGF0IDE1OjUzICswMjAwLCBNaXF1ZWwgUmF5bmFsIHdyb3RlOgo+ IEhpIE51bm8sCj4gCj4gTnVuby5TYUBhbmFsb2cuY29twqB3cm90ZSBvbiBUdWUsIDIwIFNlcCAy MDIyIDEzOjE1OjMyICswMDAwOgo+IAo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ ID4gPiBGcm9tOiBNaXF1ZWwgUmF5bmFsIDxtaXF1ZWwucmF5bmFsQGJvb3RsaW4uY29tPgo+ID4g PiBTZW50OiBUdWVzZGF5LCBTZXB0ZW1iZXIgMjAsIDIwMjIgMjo1NiBQTQo+ID4gPiBUbzogU2Es IE51bm8gPE51bm8uU2FAYW5hbG9nLmNvbT4KPiA+ID4gQ2M6IGxpbnV4LWFybS1rZXJuZWxAbGlz dHMuaW5mcmFkZWFkLm9yZzsKPiA+ID4gbGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9y ZzsKPiA+ID4gbGludXgtYW1sb2dpY0BsaXN0cy5pbmZyYWRlYWQub3JnOyBsaW51eC1pbXhAbnhw LmNvbTsgbGludXgtCj4gPiA+IGlpb0B2Z2VyLmtlcm5lbC5vcmc7IENodW55YW4gWmhhbmcgPHpo YW5nLmx5cmFAZ21haWwuY29tPjsKPiA+ID4gSGVubmVyaWNoLAo+ID4gPiBNaWNoYWVsIDxNaWNo YWVsLkhlbm5lcmljaEBhbmFsb2cuY29tPjsgTWFydGluIEJsdW1lbnN0aW5nbAo+ID4gPiA8bWFy dGluLmJsdW1lbnN0aW5nbEBnb29nbGVtYWlsLmNvbT47IFNhc2NoYSBIYXVlcgo+ID4gPiA8cy5o YXVlckBwZW5ndXRyb25peC5kZT47IENpeGkgR2VuZyA8Y2l4aS5nZW5nMUB1bmlzb2MuY29tPjsK PiA+ID4gS2V2aW4KPiA+ID4gSGlsbWFuIDxraGlsbWFuQGJheWxpYnJlLmNvbT47IFZsYWRpbWly IFphcG9sc2tpeSA8dnpAbWxlaWEuY29tPjsKPiA+ID4gUGVuZ3V0cm9uaXggS2VybmVsIFRlYW0g PGtlcm5lbEBwZW5ndXRyb25peC5kZT47IEFsZXhhbmRydQo+ID4gPiBBcmRlbGVhbgo+ID4gPiA8 YWFyZGVsZWFuQGRldmlxb24uY29tPjsgRmFiaW8gRXN0ZXZhbSA8ZmVzdGV2YW1AZ21haWwuY29t PjsKPiA+ID4gQW5kcml5Cj4gPiA+IFRyeXNobml2c2t5eSA8YW5kcml5LnRyeXNobml2c2t5eUBv cGVuc3luZXJneS5jb20+OyBIYWlibyBDaGVuCj4gPiA+IDxoYWliby5jaGVuQG54cC5jb20+OyBT aGF3biBHdW8gPHNoYXduZ3VvQGtlcm5lbC5vcmc+OyBIYW5zIGRlCj4gPiA+IEdvZWRlIDxoZGVn b2VkZUByZWRoYXQuY29tPjsgSmVyb21lIEJydW5ldAo+ID4gPiA8amJydW5ldEBiYXlsaWJyZS5j b20+Owo+ID4gPiBIZWlrbyBTdHVlYm5lciA8aGVpa29Ac250ZWNoLmRlPjsgRmxvcmlhbiBCb29y Cj4gPiA+IDxmbG9yaWFuLmJvb3JAa2VybmVsY29uY2VwdHMuZGU+OyBSZWd1cywgQ2lwcmlhbgo+ ID4gPiA8Q2lwcmlhbi5SZWd1c0BhbmFsb2cuY29tPjsgTGFycy1QZXRlciBDbGF1c2VuIDxsYXJz QG1ldGFmb28uZGU+Owo+ID4gPiBBbmR5Cj4gPiA+IFNoZXZjaGVua28gPGFuZHkuc2hldmNoZW5r b0BnbWFpbC5jb20+OyBKb25hdGhhbiBDYW1lcm9uCj4gPiA+IDxqaWMyM0BrZXJuZWwub3JnPjsg TmVpbCBBcm1zdHJvbmcgPG5hcm1zdHJvbmdAYmF5bGlicmUuY29tPjsKPiA+ID4gQmFvbGluCj4g PiA+IFdhbmcgPGJhb2xpbi53YW5nQGxpbnV4LmFsaWJhYmEuY29tPjsgSnlvdGkgQmhheWFuYQo+ ID4gPiA8amJoYXlhbmFAZ29vZ2xlLmNvbT47IENoZW4tWXUgVHNhaSA8d2Vuc0Bjc2llLm9yZz47 IE9yc29uIFpoYWkKPiA+ID4gPG9yc29uemhhaUBnbWFpbC5jb20+Cj4gPiA+IFN1YmplY3Q6IFJl OiBbUEFUQ0ggMTMvMTVdIGlpbzogaGVhbHRoOiBtYXgzMDEwMDogZG8gbm90IHVzZQo+ID4gPiBp bnRlcm5hbCBpaW9fZGV2Cj4gPiA+IGxvY2sKPiA+ID4gCj4gPiA+IFtFeHRlcm5hbF0KPiA+ID4g Cj4gPiA+IEhpIE51bm8sCj4gPiA+IAo+ID4gPiBOdW5vLlNhQGFuYWxvZy5jb23CoHdyb3RlIG9u IFR1ZSwgMjAgU2VwIDIwMjIgMTI6NDQ6MDggKzAwMDA6Cj4gPiA+IMKgIAo+ID4gPiA+ID4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+ID4gPiA+IEZyb206IE1pcXVlbCBSYXluYWwgPG1p cXVlbC5yYXluYWxAYm9vdGxpbi5jb20+Cj4gPiA+ID4gPiBTZW50OiBUdWVzZGF5LCBTZXB0ZW1i ZXIgMjAsIDIwMjIgMjoyMyBQTQo+ID4gPiA+ID4gVG86IFNhLCBOdW5vIDxOdW5vLlNhQGFuYWxv Zy5jb20+Cj4gPiA+ID4gPiBDYzogbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn OyBsaW51eC3CoCAKPiA+ID4gcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZzvCoCAKPiA+ID4g PiA+IGxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZzsgbGludXgtaW14QG54cC5jb207 IGxpbnV4LQo+ID4gPiA+ID4gaWlvQHZnZXIua2VybmVsLm9yZzsgQ2h1bnlhbiBaaGFuZyA8emhh bmcubHlyYUBnbWFpbC5jb20+O8KgIAo+ID4gPiBIZW5uZXJpY2gswqAgCj4gPiA+ID4gPiBNaWNo YWVsIDxNaWNoYWVsLkhlbm5lcmljaEBhbmFsb2cuY29tPjsgTWFydGluIEJsdW1lbnN0aW5nbAo+ ID4gPiA+ID4gPG1hcnRpbi5ibHVtZW5zdGluZ2xAZ29vZ2xlbWFpbC5jb20+OyBTYXNjaGEgSGF1 ZXIKPiA+ID4gPiA+IDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPjsgQ2l4aSBHZW5nIDxjaXhpLmdl bmcxQHVuaXNvYy5jb20+Owo+ID4gPiA+ID4gS2V2aW4KPiA+ID4gPiA+IEhpbG1hbiA8a2hpbG1h bkBiYXlsaWJyZS5jb20+OyBWbGFkaW1pciBaYXBvbHNraXkKPiA+ID4gPiA+IDx2ekBtbGVpYS5j b20+Owo+ID4gPiA+ID4gUGVuZ3V0cm9uaXggS2VybmVsIFRlYW0gPGtlcm5lbEBwZW5ndXRyb25p eC5kZT47IEFsZXhhbmRydcKgIAo+ID4gPiBBcmRlbGVhbsKgIAo+ID4gPiA+ID4gPGFhcmRlbGVh bkBkZXZpcW9uLmNvbT47IEZhYmlvIEVzdGV2YW0gPGZlc3RldmFtQGdtYWlsLmNvbT47wqAKPiA+ ID4gQW5kcml5wqAgCj4gPiA+ID4gPiBUcnlzaG5pdnNreXkgPGFuZHJpeS50cnlzaG5pdnNreXlA b3BlbnN5bmVyZ3kuY29tPjsgSGFpYm8KPiA+ID4gPiA+IENoZW4KPiA+ID4gPiA+IDxoYWliby5j aGVuQG54cC5jb20+OyBTaGF3biBHdW8gPHNoYXduZ3VvQGtlcm5lbC5vcmc+OyBIYW5zCj4gPiA+ ID4gPiBkZQo+ID4gPiA+ID4gR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+OyBKZXJvbWUgQnJ1 bmV0wqAgCj4gPiA+IDxqYnJ1bmV0QGJheWxpYnJlLmNvbT47wqAgCj4gPiA+ID4gPiBIZWlrbyBT dHVlYm5lciA8aGVpa29Ac250ZWNoLmRlPjsgRmxvcmlhbiBCb29yCj4gPiA+ID4gPiA8Zmxvcmlh bi5ib29yQGtlcm5lbGNvbmNlcHRzLmRlPjsgUmVndXMsIENpcHJpYW4KPiA+ID4gPiA+IDxDaXBy aWFuLlJlZ3VzQGFuYWxvZy5jb20+OyBMYXJzLVBldGVyIENsYXVzZW4KPiA+ID4gPiA+IDxsYXJz QG1ldGFmb28uZGU+O8KgIAo+ID4gPiBBbmR5wqAgCj4gPiA+ID4gPiBTaGV2Y2hlbmtvIDxhbmR5 LnNoZXZjaGVua29AZ21haWwuY29tPjsgSm9uYXRoYW4gQ2FtZXJvbgo+ID4gPiA+ID4gPGppYzIz QGtlcm5lbC5vcmc+OyBOZWlsIEFybXN0cm9uZyA8bmFybXN0cm9uZ0BiYXlsaWJyZS5jb20+Owo+ ID4gPiA+ID4gQmFvbGluCj4gPiA+ID4gPiBXYW5nIDxiYW9saW4ud2FuZ0BsaW51eC5hbGliYWJh LmNvbT47IEp5b3RpIEJoYXlhbmEKPiA+ID4gPiA+IDxqYmhheWFuYUBnb29nbGUuY29tPjsgQ2hl bi1ZdSBUc2FpIDx3ZW5zQGNzaWUub3JnPjsgT3Jzb24KPiA+ID4gPiA+IFpoYWkKPiA+ID4gPiA+ IDxvcnNvbnpoYWlAZ21haWwuY29tPgo+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCAxMy8x NV0gaWlvOiBoZWFsdGg6IG1heDMwMTAwOiBkbyBub3QgdXNlCj4gPiA+ID4gPiBpbnRlcm5hbMKg IAo+ID4gPiBpaW9fZGV2wqAgCj4gPiA+ID4gPiBsb2NrCj4gPiA+ID4gPiAKPiA+ID4gPiA+IFtF eHRlcm5hbF0KPiA+ID4gPiA+IAo+ID4gPiA+ID4gSGkgTnVubywKPiA+ID4gPiA+IMKgCj4gPiA+ ID4gCj4gPiA+ID4gSGkgTWlxdWVsLAo+ID4gPiA+IAo+ID4gPiA+IFRoYW5rcyBmb3IgcmV2aWV3 aW5nLi4uCj4gPiA+ID4gwqAKPiA+ID4gPiA+IG51bm8uc2FAYW5hbG9nLmNvbcKgd3JvdGUgb24g VHVlLCAyMCBTZXAgMjAyMiAxMzoyODoxOSArMDIwMDoKPiA+ID4gPiA+IMKgCj4gPiA+ID4gPiA+ IFRoZSBwYXR0ZXJuIHVzZWQgaW4gdGhpcyBkZXZpY2UgZG9lcyBub3QgcXVpdGUgZml0IGluIHRo ZQo+ID4gPiA+ID4gPiBpaW9fZGV2aWNlX2NsYWltX2RpcmVjdF9tb2RlKCkgdHlwaWNhbCB1c2Fn ZS4gSW4gdGhpcyBjYXNlLAo+ID4gPiA+ID4gPiBpaW9fYnVmZmVyX2VuYWJsZWQoKSB3YXMgYmVp bmcgdXNlZCBub3QgdG8gcHJldmVudCB0aGUgcmF3Cj4gPiA+ID4gPiA+IGFjY2VzcyBidXTCoCAK PiA+ID4gdG/CoCAKPiA+ID4gPiA+ID4gYWxsb3cgaXQuIEhlbmNlIHRvIGdldCByaWQgb2YgdGhl ICdtbG9jaycgd2UgbmVlZCB0bzoKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IDEuIFVzZSBpaW9f ZGV2aWNlX2NsYWltX2RpcmVjdF9tb2RlKCkgdG8gY2hlY2sgaWYgZGlyZWN0Cj4gPiA+ID4gPiA+ IG1vZGUgY2FuIGJlCj4gPiA+ID4gPiA+IGNsYWltZWQgYW5kIGlmIHdlIGNhbiByZXR1cm4gLUVJ TlZBTCAoYXMgdGhlIG9yaWdpbmFsCj4gPiA+ID4gPiA+IGNvZGUpOwo+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gMi4gTWFrZSBzdXJlIHRoYXQgYnVmZmVyaW5nIGlzIG5vdCBkaXNhYmxlZCB3aGls ZSBkb2luZyBhCj4gPiA+ID4gPiA+IHJhdyByZWFkLiBGb3IKPiA+ID4gPiA+ID4gdGhhdCwgd2Ug Y2FuIG1ha2UgdXNlIG9mIHRoZSBsb2NhbCBsb2NrIHRoYXQgYWxyZWFkeQo+ID4gPiA+ID4gPiBl eGlzdHMuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBXaGlsZSBhdCBpdCwgZml4ZWQgYSBtaW5v ciBjb2Rpbmcgc3R5bGUgY29tcGxhaW4uLi4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IFNpZ25l ZC1vZmYtYnk6IE51bm8gU8OhIDxudW5vLnNhQGFuYWxvZy5jb20+Cj4gPiA+ID4gPiA+IC0tLQo+ ID4gPiA+ID4gPiDCoGRyaXZlcnMvaWlvL2hlYWx0aC9tYXgzMDEwMC5jIHwgMjQgKysrKysrKysr KysrKysrKystLS0tLS0KPiA+ID4gPiA+ID4gLQo+ID4gPiA+ID4gPiDCoDEgZmlsZSBjaGFuZ2Vk LCAxNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2hlYWx0aC9tYXgzMDEwMC5jwqAgCj4gPiA+IGIv ZHJpdmVycy9paW8vaGVhbHRoL21heDMwMTAwLmPCoCAKPiA+ID4gPiA+ID4gaW5kZXggYWQ1NzE3 OTY1MjIzLi5hYTQ5NGNhZDVkZjAgMTAwNjQ0Cj4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvaWlv L2hlYWx0aC9tYXgzMDEwMC5jCj4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvaWlvL2hlYWx0aC9t YXgzMDEwMC5jCj4gPiA+ID4gPiA+IEBAIC0xODUsOCArMTg1LDE5IEBAIHN0YXRpYyBpbnQKPiA+ ID4gPiA+ID4gbWF4MzAxMDBfYnVmZmVyX3Bvc3RlbmFibGUoc3RydWN0wqAgCj4gPiA+ID4gPiBp aW9fZGV2ICppbmRpb19kZXYpwqAgCj4gPiA+ID4gPiA+IMKgc3RhdGljIGludCBtYXgzMDEwMF9i dWZmZXJfcHJlZGlzYWJsZShzdHJ1Y3QgaWlvX2Rldgo+ID4gPiA+ID4gPiAqaW5kaW9fZGV2KQo+ ID4gPiA+ID4gPiDCoHsKPiA+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBtYXgzMDEw MF9kYXRhICpkYXRhID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKPiA+ID4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgaW50IHJldDsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAv Kgo+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgKiBBcyBzdGF0ZWQgaW4gdGhlIGNvbW1lbnQg aW4gdGhlIHJlYWRfcmF3KCkKPiA+ID4gPiA+ID4gZnVuY3Rpb24sIHRlbXBlcmF0dXJlCj4gPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCAqIGNhbiBvbmx5IGJlIGFjcXVpcmVkIGlmIHRoZSBlbmdp bmUgaXMgcnVubmluZy4KPiA+ID4gPiA+ID4gQXMgc3VjaCB0aGUgbXV0ZXgKPiA+ID4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgICogaXMgdXNlZCB0byBtYWtlIHN1cmUgd2UgZG8gbm90IHBvd2VyIGRv d24gd2hpbGUKPiA+ID4gPiA+ID4gZG9pbmcgYcKgIAo+ID4gPiA+ID4gdGVtcGVyYXR1cmXCoCAK PiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgICogcmVhZGluZy4KPiA+ID4gPiA+ID4gK8KgwqDC oMKgwqDCoMKgICovCj4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoG11dGV4X2xvY2soJmRhdGEt PmxvY2spOwo+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqByZXQgPSBtYXgzMDEwMF9zZXRfcG93 ZXJtb2RlKGRhdGEsIGZhbHNlKTsKPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgbXV0ZXhfdW5s b2NrKCZkYXRhLT5sb2NrKTsKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDC oHJldHVybiBtYXgzMDEwMF9zZXRfcG93ZXJtb2RlKGRhdGEsIGZhbHNlKTsKPiA+ID4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiA+ID4gPiA+ID4gwqB9Cj4gPiA+ID4gPiA+IAo+ ID4gPiA+ID4gPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX2J1ZmZlcl9zZXR1cF9vcHMKPiA+ ID4gPiA+ID4gbWF4MzAxMDBfYnVmZmVyX3NldHVwX29wc8KgIAo+ID4gPiA9IHvCoCAKPiA+ID4g PiA+ID4gQEAgLTM4NywxOCArMzk4LDE3IEBAIHN0YXRpYyBpbnQgbWF4MzAxMDBfcmVhZF9yYXco c3RydWN0Cj4gPiA+ID4gPiA+IGlpb19kZXbCoCAKPiA+ID4gPiA+ICppbmRpb19kZXYswqAgCj4g PiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogVGVtcGVyYXR1cmUg cmVhZGluZyBjYW4gb25seSBiZSBhY3F1aXJlZAo+ID4gPiA+ID4gPiB3aGlsZSBlbmdpbmUKPiA+ ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBpcyBydW5uaW5nCj4g PiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gPiA+ID4gPiA+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtdXRleF9sb2NrKCZpbmRpb19kZXYtPm1s b2NrKTsKPiA+ID4gPiA+ID4gLQo+ID4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKCFpaW9fYnVmZmVyX2VuYWJsZWQoaW5kaW9fZGV2KSkKPiA+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmCj4gPiA+ID4gPiA+ICghaWlvX2RldmljZV9j bGFpbV9kaXJlY3RfbW9kZShpbmRpb19kZXYpKSB7wqAgCj4gPiA+ID4gPiAKPiA+ID4gPiA+IEkg d29uZGVyIGlmIHRoaXMgbGluZSBjaGFuZ2UgaGVyZSBpcyByZWFsbHkgbmVlZGVkLiBJIGFncmVl Cj4gPiA+ID4gPiB0aGUgd2hvbGUKPiA+ID4gPiA+IGNvbnN0cnVjdGlvbiBsb29rcyBsaWtlIHdo YXQgaWlvX2RldmljZV9jbGFpbV9kaXJlY3RfbW9kZSgpCj4gPiA+ID4gPiBkb2VzIGJ1dCBpbgo+ ID4gPiA+ID4gcHJhY3RpY2UgSSBkb24ndCBzZWUgdGhlIHBvaW50IG9mIGFjcXVpcmluZyBhbnkg bG9jayBoZXJlIGlmCj4gPiA+ID4gPiB3ZSBqdXN0Cj4gPiA+ID4gPiByZWxlYXNlIGl0IG5vIG1h dHRlciB3aGF0IGhhcHBlbnMgcmlnaHQgYWZ0ZXIuCj4gPiA+ID4gPiDCoAo+ID4gPiA+IAo+ID4g PiA+IEkgY2FuIHNlZSB0aGF0IHRoaXMgaXMgb2RkIChhdCB0aGUgdmVyeSBsZWFzdCkgYnV0IEFG QUlLLCB0aGlzCj4gPiA+ID4gaXMgdGhlIG9ubHkgd2F5Cj4gPiA+ID4gdG8gc2FmZWx5IGluZmVy IGlmIGJ1ZmZlcmluZyBpcyBlbmFibGVkIG9yIG5vdC4KPiA+ID4gPiBpaW9fYnVmZmVyX2VuYWJs ZWQoKSBoYXMgbm8KPiA+ID4gPiBwcm90ZWN0aW9uIGFnYWluc3Qgc29tZW9uZSBjb25jdXJyZW50 bHkgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZQo+ID4gPiA+IGJ1ZmZlci7CoCAKPiA+ID4gCj4gPiA+ IFllcywgYnV0IHRoaXMgaXMgb25seSByZWxldmFudCBpZiB5b3Ugd2FudCB0byBpbmZlciB0aGF0 IHRoZQo+ID4gPiAiYnVmZmVycwo+ID4gPiBhcmUgZW5hYmxlZCIgYW5kIGJlIHN1cmUgdGhhdCBp dCBjYW5ub3QgYmUgb3RoZXJ3aXNlIGR1cmluZyB0aGUKPiA+ID4gbmV4dAo+ID4gPiBsaW5lcyB1 bnRpbCB5b3UgcmVsZWFzZSB0aGUgbG9jay4gQWNxdWlyaW5nIGEgbG9jaywgZG9pbmcgdGhlIGlm Cj4gPiA+IGFuZAo+ID4gPiB0aGVuIHVuY29uZGl0aW9uYWxseSByZWxlYXNpbmcgdGhlIGxvY2ss IElNSE8sIGRvZXMgbm90IG1ha2UgYW55Cj4gPiA+IHNlbnNlCj4gPiA+IChidXQgSSdtIG5vdCBh IGxvY2tpbmcgZ3VydSkgYmVjYXVzZSB3aGVuIHlvdSBlbnRlciB0aGUgZWxzZQo+ID4gPiBjbGF1 c2UsCj4gPiA+IHlvdSBhcmUgbm90IHByb3RlY3RlZCBhbnl3YXksIHNvIGluIGJvdGggY2FzZXMg YWxsIHRoaXMgaXMKPiA+ID4gY29tcGxldGVseQo+ID4gPiByYWN5Lgo+ID4gPiDCoCAKPiA+IAo+ ID4gQWhoIGNyYXAsIHllcyB5b3UgYXJlIHJpZ2h0Li4uIEl0IGlzIHN0aWxsIHJhY3kgc2luY2Ug d2UgY2FuIHN0aWxsCj4gPiB0cnkgdG8gcmVhZAo+ID4gdGhlIHRlbXBlcmF0dXJlIHdpdGggdGhl IGRldmljZSBwb3dlcmVkIG9mZi4gSSdtIG5vdCByZWFsbHkgc3VyZQo+ID4gaG93IHRvCj4gPiBh ZGRyZXNzIHRoaXMuIE9uZSB3YXkgY291bGQgYmUgdG8ganVzdCB1c2UgYW4gaW50ZXJuYWwgY29u dHJvbAo+ID4gdmFyaWFibGUKPiA+IHRvIHJlZmxlY3QgdGhlIGRldmljZSBwb3dlciBzdGF0ZSAo c2V0L2NsZWFyIG9uIHRoZSBidWZmZXIKPiA+IGNhbGxiYWNrcykgYW5kCj4gPiBvbmx5IHVzZSB0 aGUgbG9jYWwgbG9jayAoY29tcGxldGVseSBkaXRjaGluZyB0aGUgY2FsbCB0bwo+ID4gaWlvX2Rl dmljZV9jbGFpbV9kaXJlY3RfbW9kZSgpKS4uLgo+IAo+IEkgdGVuZCB0byBwcmVmZXIgdGhpcyBv cHRpb24gdGhhbiB0aGUgb25lIGJlbG93Lgo+IAo+IEkgZ3Vlc3MgeW91ciBpbXBsZW1lbnRhdGlv biBhbHJlYWR5IHByZXZlbnRzIGJ1ZmZlcl9wcmVkaXNhYmxlKCkgdG8KPiBydW4KPiB0aGFua3Mg dG8gdGhlIGxvY2FsIGxvY2sgYmVpbmcgaGVsZCBkdXJpbmcgdGhlIG9wZXJhdGlvbi4gTWF5YmUg d2UKPiBzaG91bGQganVzdCB2ZXJpZnkgdGhhdCBidWZmZXJzIGFyZSBlbmFibGVkIGZyb20gd2l0 aGluIHRoZSBsb2NhbAo+IGxvY2sKPiBiZWluZyBoZWxkIGluc3RlYWQgb2YganVzdCBhY3F1aXJp bmcgaXQgZm9yIHRoZSBnZXRfdGVtcCgpIG1lYXN1cmUuCj4gSXQKPiB3b3VsZCBwcm9iYWJseSBz b2x2ZSB0aGUgc2l0dWF0aW9uIGhlcmUuCj4gPiAKTm90IHN1cmUgaWYgSSB1bmRlcnN0b29kLi4u IFlvdSBtZWFuIHNvbWV0aGluZyBsaWtlOgoKbXV0ZXhfbG9jaygmZGF0YS0+bG9jayk7CmlmICgh aWlvX2J1ZmZlcl9lbmFibGVkKGluZGlvX2RldikpIHsKCXJldCA9IC1FSU5WQUw7Cn0gZWxzZSB7 CiAJcmV0ID0gbWF4MzAxMDBfZ2V0X3RlbXAoZGF0YSwgdmFsKTsKIAlpZiAoIXJldCkKIAkJcmV0 ID0gSUlPX1ZBTF9JTlQ7Cgp9Cm11dGV4X3VubG9jaygmZGF0YS0+bG9jayk7CgpJZiBzbywgSSB0 aGluayB0aGlzIGlzIHN0aWxsIHJhY3kgc2luY2Ugd2UgcmVsZWFzZSB0aGUgbG9jayBhZnRlciB0 aGUKcHJlZGlzYWJsZSB3aGljaCBtZWFucyB3ZSBjb3VsZCBzdGlsbCBkZXRlY3QgdGhlIGJ1ZmZl cnMgYXMgZW5hYmxlZCAoaW4KdGhlIGFib3ZlIGJsb2NrKSBhbmQgdHJ5IHRvIGdldF90ZW1wIG9u IGEgcG93ZXJlZCBkb3duIGRldmljZS4KClNpbmNlIHdlIHByZXR0eSBtdWNoIG9ubHkgY2FyZSBh Ym91dCB0aGUgcG93ZXIgc3RhdGUgb2YgdGhlIGRldmljZSAoYW5kCndlIGFyZSB1c2luZyB0aGUg YnVmZmVyaW5nIHN0YXRlIHRvIGluZmVyIHRoYXQgQUZBSVUpLCBJIHdhcyB0aGlua2luZwppbiBz b21ldGhpbmcgbGlrZToKCgptdXRleF9sb2NrKCZkYXRhLT5sb2NrKTsKaWYgKCFkYXRhLT5wb3dl cmVkKSB7CglyZXQgPSAtRUlOVkFMOwp9IGVsc2UgewogCXJldCA9IG1heDMwMTAwX2dldF90ZW1w KGRhdGEsIHZhbCk7CiAJaWYgKCFyZXQpCiAJCXJldCA9IElJT19WQUxfSU5UOwoKfQptdXRleF91 bmxvY2soJmRhdGEtPmxvY2spOwoKVGhlbiwgaW4gdGhlIHByZWRpc2FibGUsIHNvbWV0aGluZyBs aWtlIEkgaGF2ZSBidXQgc2V0dGluZyB0aGUgZmxhZyB0bwpmYWxzZSBhbmQgdGhlIG9wcG9zaXRl IG9uIHRoZSBwb3N0ZW5hYmxlLi4uIE5hdHVyYWxseSB3ZSBjb3VsZCBhbHNvCmp1c3QgcmVhZCB0 aGUgcmVnaXN0ZXJzIChhbmQgSSBhY3R1YWxseSB0ZW5kIHRvIHByZWZlciBpdCkgaW5zdGVhZCBv ZiBhCm5ldyBmbGFnIGJ1dCBJIGd1ZXNzIHRoZSBmbGFnIGlzIGVub3VnaCBpbiB0aGlzIGNhc2Uu CgotIE51bm8gU8OhCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hbWxvZ2ljIG1haWxpbmcgbGlzdApsaW51eC1hbWxvZ2ljQGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1hbWxvZ2ljCg== 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 20B60C54EE9 for ; Tue, 20 Sep 2022 14:54:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230511AbiITOyw (ORCPT ); Tue, 20 Sep 2022 10:54:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58774 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229575AbiITOyt (ORCPT ); Tue, 20 Sep 2022 10:54:49 -0400 Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com [IPv6:2a00:1450:4864:20::42f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 492AF13CD5 for ; Tue, 20 Sep 2022 07:54:47 -0700 (PDT) Received: by mail-wr1-x42f.google.com with SMTP id cc5so4724988wrb.6 for ; Tue, 20 Sep 2022 07:54:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date; bh=pCURNhn6Rw9wz2vUv7eatknMQWidr34V6aQvNqhRxV8=; b=X0w85ytfANl8OXlNlGCm9gxzf2v5fXXTK6SHSbEOD779B6NhJ5wTp7BZCETWw7cTgn eqOt23P2SFHuHHkpY/bpLgr60W83uElzAvlSw1+0M12qcCAcm34lYujgGfGGxuI5ch9H Io1eAD07554hfq1bqFjRWOQyETpRCm8wvNo1rfghk46Hq8iOBMcoVycjcrUJw+Hq+XU6 nsgPGVEpsZm1u+TqxFK3pZ3Wz6n1kykTt8Ldd8pOQOmJoOJl2eq6Xd7q0dGUC99o4oU4 WLrkytDJuinhysEzU3Mt/2BcYn4mth+q+A4nGQsjweDDpIaOiG/lv0FAcuO5JUW2BDeb WJOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state :from:to:cc:subject:date; bh=pCURNhn6Rw9wz2vUv7eatknMQWidr34V6aQvNqhRxV8=; b=nyk/L4iPlgFqOavh0VaevYfPeqmzSprWvtEAx978G+NxZfRUbzeJx0hC8zq1xIfDwo Dum8xXczIWvIcWi4eJ7nXhsmFH4xj8o+LdMnxg0lLmFZ20dN7pUs9ACEx6r3/QQal6bN tU2DGKhkd7EASj4OIB+PmSx8B5FxhbUS3UisZOgrPngYz8Odj/7O0GeB0SOYCPSYT1Tx bpFp/4zrq2CSkwtL+2eGdVxabbO+Y0Ee3huhNTRKybgkVvcXmqLLA5n/3i+SaSnLDopZ 2nSUSgU+b5QniKZp2HQ62n6RSff+cMNU+wNGBD3tqKZ3D88njhQtLlxMSqGcT2kQFvmn 7GuQ== X-Gm-Message-State: ACrzQf1RlIcS6B5VybCQ7DP8r1hrKD1BodLYb+vRirZVQSyv3leykQNQ k3M2L1jplKiovMizPpE1G/o= X-Google-Smtp-Source: AMsMyM6onJ62JMeiYj7H0jjeK6iNqm3Vk7acM/iwPJAbMVfAXaGDcla++1gSoFLtovhuXwNrbz/AmA== X-Received: by 2002:a5d:6483:0:b0:226:db59:2f94 with SMTP id o3-20020a5d6483000000b00226db592f94mr14329436wri.200.1663685685594; Tue, 20 Sep 2022 07:54:45 -0700 (PDT) Received: from p200300f6ef036f005de6a4d0d791ed01.dip0.t-ipconnect.de (p200300f6ef036f005de6a4d0d791ed01.dip0.t-ipconnect.de. [2003:f6:ef03:6f00:5de6:a4d0:d791:ed01]) by smtp.gmail.com with ESMTPSA id b10-20020adfe64a000000b00228cbac7a25sm245931wrn.64.2022.09.20.07.54.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Sep 2022 07:54:45 -0700 (PDT) Message-ID: <1684ca38960d035a0fedd077ed149f524c58f7ff.camel@gmail.com> Subject: Re: [PATCH 13/15] iio: health: max30100: do not use internal iio_dev lock From: Nuno =?ISO-8859-1?Q?S=E1?= To: Miquel Raynal , "Sa, Nuno" Cc: "linux-arm-kernel@lists.infradead.org" , "linux-rockchip@lists.infradead.org" , "linux-amlogic@lists.infradead.org" , "linux-imx@nxp.com" , "linux-iio@vger.kernel.org" , Chunyan Zhang , "Hennerich, Michael" , Martin Blumenstingl , Sascha Hauer , Cixi Geng , Kevin Hilman , Vladimir Zapolskiy , Pengutronix Kernel Team , Alexandru Ardelean , Fabio Estevam , Andriy Tryshnivskyy , Haibo Chen , Shawn Guo , Hans de Goede , Jerome Brunet , Heiko Stuebner , Florian Boor , "Regus, Ciprian" , Lars-Peter Clausen , Andy Shevchenko , Jonathan Cameron , Neil Armstrong , Baolin Wang , Jyoti Bhayana , Chen-Yu Tsai , Orson Zhai Date: Tue, 20 Sep 2022 16:56:01 +0200 In-Reply-To: <20220920155305.395dad08@xps-13> References: <20220920112821.975359-1-nuno.sa@analog.com> <20220920112821.975359-14-nuno.sa@analog.com> <20220920142319.61557023@xps-13> <20220920145534.0bdd4e69@xps-13> <20220920155305.395dad08@xps-13> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.44.4 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org On Tue, 2022-09-20 at 15:53 +0200, Miquel Raynal wrote: > Hi Nuno, >=20 > Nuno.Sa@analog.com=C2=A0wrote on Tue, 20 Sep 2022 13:15:32 +0000: >=20 > > > -----Original Message----- > > > From: Miquel Raynal > > > Sent: Tuesday, September 20, 2022 2:56 PM > > > To: Sa, Nuno > > > Cc: linux-arm-kernel@lists.infradead.org; > > > linux-rockchip@lists.infradead.org; > > > linux-amlogic@lists.infradead.org; linux-imx@nxp.com; linux- > > > iio@vger.kernel.org; Chunyan Zhang ; > > > Hennerich, > > > Michael ; Martin Blumenstingl > > > ; Sascha Hauer > > > ; Cixi Geng ; > > > Kevin > > > Hilman ; Vladimir Zapolskiy ; > > > Pengutronix Kernel Team ; Alexandru > > > Ardelean > > > ; Fabio Estevam ; > > > Andriy > > > Tryshnivskyy ; Haibo Chen > > > ; Shawn Guo ; Hans de > > > Goede ; Jerome Brunet > > > ; > > > Heiko Stuebner ; Florian Boor > > > ; Regus, Ciprian > > > ; Lars-Peter Clausen ; > > > Andy > > > Shevchenko ; Jonathan Cameron > > > ; Neil Armstrong ; > > > Baolin > > > Wang ; Jyoti Bhayana > > > ; Chen-Yu Tsai ; Orson Zhai > > > > > > Subject: Re: [PATCH 13/15] iio: health: max30100: do not use > > > internal iio_dev > > > lock > > >=20 > > > [External] > > >=20 > > > Hi Nuno, > > >=20 > > > Nuno.Sa@analog.com=C2=A0wrote on Tue, 20 Sep 2022 12:44:08 +0000: > > > =C2=A0=20 > > > > > -----Original Message----- > > > > > From: Miquel Raynal > > > > > Sent: Tuesday, September 20, 2022 2:23 PM > > > > > To: Sa, Nuno > > > > > Cc: linux-arm-kernel@lists.infradead.org; linux-=C2=A0=20 > > > rockchip@lists.infradead.org;=C2=A0=20 > > > > > linux-amlogic@lists.infradead.org; linux-imx@nxp.com; linux- > > > > > iio@vger.kernel.org; Chunyan Zhang ;=C2=A0= =20 > > > Hennerich,=C2=A0=20 > > > > > Michael ; Martin Blumenstingl > > > > > ; Sascha Hauer > > > > > ; Cixi Geng ; > > > > > Kevin > > > > > Hilman ; Vladimir Zapolskiy > > > > > ; > > > > > Pengutronix Kernel Team ; Alexandru=C2=A0= =20 > > > Ardelean=C2=A0=20 > > > > > ; Fabio Estevam ;=C2= =A0 > > > Andriy=C2=A0=20 > > > > > Tryshnivskyy ; Haibo > > > > > Chen > > > > > ; Shawn Guo ; Hans > > > > > de > > > > > Goede ; Jerome Brunet=C2=A0=20 > > > ;=C2=A0=20 > > > > > Heiko Stuebner ; Florian Boor > > > > > ; Regus, Ciprian > > > > > ; Lars-Peter Clausen > > > > > ;=C2=A0=20 > > > Andy=C2=A0=20 > > > > > Shevchenko ; Jonathan Cameron > > > > > ; Neil Armstrong ; > > > > > Baolin > > > > > Wang ; Jyoti Bhayana > > > > > ; Chen-Yu Tsai ; Orson > > > > > Zhai > > > > > > > > > > Subject: Re: [PATCH 13/15] iio: health: max30100: do not use > > > > > internal=C2=A0=20 > > > iio_dev=C2=A0=20 > > > > > lock > > > > >=20 > > > > > [External] > > > > >=20 > > > > > Hi Nuno, > > > > > =C2=A0 > > > >=20 > > > > Hi Miquel, > > > >=20 > > > > Thanks for reviewing... > > > > =C2=A0 > > > > > nuno.sa@analog.com=C2=A0wrote on Tue, 20 Sep 2022 13:28:19 +0200: > > > > > =C2=A0 > > > > > > The pattern used in this device does not quite fit in the > > > > > > iio_device_claim_direct_mode() typical usage. In this case, > > > > > > iio_buffer_enabled() was being used not to prevent the raw > > > > > > access but=C2=A0=20 > > > to=C2=A0=20 > > > > > > allow it. Hence to get rid of the 'mlock' we need to: > > > > > >=20 > > > > > > 1. Use iio_device_claim_direct_mode() to check if direct > > > > > > mode can be > > > > > > claimed and if we can return -EINVAL (as the original > > > > > > code); > > > > > >=20 > > > > > > 2. Make sure that buffering is not disabled while doing a > > > > > > raw read. For > > > > > > that, we can make use of the local lock that already > > > > > > exists. > > > > > >=20 > > > > > > While at it, fixed a minor coding style complain... > > > > > >=20 > > > > > > Signed-off-by: Nuno S=C3=A1 > > > > > > --- > > > > > > =C2=A0drivers/iio/health/max30100.c | 24 +++++++++++++++++-----= - > > > > > > - > > > > > > =C2=A01 file changed, 17 insertions(+), 7 deletions(-) > > > > > >=20 > > > > > > diff --git a/drivers/iio/health/max30100.c=C2=A0=20 > > > b/drivers/iio/health/max30100.c=C2=A0=20 > > > > > > index ad5717965223..aa494cad5df0 100644 > > > > > > --- a/drivers/iio/health/max30100.c > > > > > > +++ b/drivers/iio/health/max30100.c > > > > > > @@ -185,8 +185,19 @@ static int > > > > > > max30100_buffer_postenable(struct=C2=A0=20 > > > > > iio_dev *indio_dev)=C2=A0=20 > > > > > > =C2=A0static int max30100_buffer_predisable(struct iio_dev > > > > > > *indio_dev) > > > > > > =C2=A0{ > > > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0struct max30100= _data *data =3D iio_priv(indio_dev); > > > > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0int ret; > > > > > > + > > > > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0/* > > > > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * As stated in the = comment in the read_raw() > > > > > > function, temperature > > > > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * can only be acqui= red if the engine is running. > > > > > > As such the mutex > > > > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * is used to make s= ure we do not power down while > > > > > > doing a=C2=A0=20 > > > > > temperature=C2=A0=20 > > > > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * reading. > > > > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 */ > > > > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0mutex_lock(&data->lo= ck); > > > > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0ret =3D max30100_set= _powermode(data, false); > > > > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0mutex_unlock(&data->= lock); > > > > > >=20 > > > > > > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0return max30100_set_= powermode(data, false); > > > > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0return ret; > > > > > > =C2=A0} > > > > > >=20 > > > > > > =C2=A0static const struct iio_buffer_setup_ops > > > > > > max30100_buffer_setup_ops=C2=A0=20 > > > =3D {=C2=A0=20 > > > > > > @@ -387,18 +398,17 @@ static int max30100_read_raw(struct > > > > > > iio_dev=C2=A0=20 > > > > > *indio_dev,=C2=A0=20 > > > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * Temperature reading can only be acquire= d > > > > > > while engine > > > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * is running > > > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 */ > > > > > > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0mutex_lock(&indio_dev->mlock); > > > > > > - > > > > > > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0if (!iio_buffer_enabled(indio_dev)) > > > > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0if > > > > > > (!iio_device_claim_direct_mode(indio_dev)) {=C2=A0=20 > > > > >=20 > > > > > I wonder if this line change here is really needed. I agree > > > > > the whole > > > > > construction looks like what iio_device_claim_direct_mode() > > > > > does but in > > > > > practice I don't see the point of acquiring any lock here if > > > > > we just > > > > > release it no matter what happens right after. > > > > > =C2=A0 > > > >=20 > > > > I can see that this is odd (at the very least) but AFAIK, this > > > > is the only way > > > > to safely infer if buffering is enabled or not. > > > > iio_buffer_enabled() has no > > > > protection against someone concurrently enabling/disabling the > > > > buffer.=C2=A0=20 > > >=20 > > > Yes, but this is only relevant if you want to infer that the > > > "buffers > > > are enabled" and be sure that it cannot be otherwise during the > > > next > > > lines until you release the lock. Acquiring a lock, doing the if > > > and > > > then unconditionally releasing the lock, IMHO, does not make any > > > sense > > > (but I'm not a locking guru) because when you enter the else > > > clause, > > > you are not protected anyway, so in both cases all this is > > > completely > > > racy. > > > =C2=A0=20 > >=20 > > Ahh crap, yes you are right... It is still racy since we can still > > try to read > > the temperature with the device powered off. I'm not really sure > > how to > > address this. One way could be to just use an internal control > > variable > > to reflect the device power state (set/clear on the buffer > > callbacks) and > > only use the local lock (completely ditching the call to > > iio_device_claim_direct_mode())... >=20 > I tend to prefer this option than the one below. >=20 > I guess your implementation already prevents buffer_predisable() to > run > thanks to the local lock being held during the operation. Maybe we > should just verify that buffers are enabled from within the local > lock > being held instead of just acquiring it for the get_temp() measure. > It > would probably solve the situation here. > >=20 Not sure if I understood... You mean something like: mutex_lock(&data->lock); if (!iio_buffer_enabled(indio_dev)) { ret =3D -EINVAL; } else { ret =3D max30100_get_temp(data, val); if (!ret) ret =3D IIO_VAL_INT; } mutex_unlock(&data->lock); If so, I think this is still racy since we release the lock after the predisable which means we could still detect the buffers as enabled (in the above block) and try to get_temp on a powered down device. Since we pretty much only care about the power state of the device (and we are using the buffering state to infer that AFAIU), I was thinking in something like: mutex_lock(&data->lock); if (!data->powered) { ret =3D -EINVAL; } else { ret =3D max30100_get_temp(data, val); if (!ret) ret =3D IIO_VAL_INT; } mutex_unlock(&data->lock); Then, in the predisable, something like I have but setting the flag to false and the opposite on the postenable... Naturally we could also just read the registers (and I actually tend to prefer it) instead of a new flag but I guess the flag is enough in this case. - Nuno S=C3=A1 >=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 93C27ECAAD8 for ; Tue, 20 Sep 2022 14:55:21 +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: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=N83uuzqQv07TQZDv6EoEH5K0WH/XrHv7ea39YhzVZoc=; b=mwERjMlZE9MuyJ VLWOaStwGmaMViYpBSYUB7D1ayDKXzXc6ljszIL5/r5zVW13BYNQgyoYeiVMVKp+H+73dpOsxy+t+ 1V2eNnP1vS8F/qE57uKhyIR0ZyvplxhBoP13wyRK4bZvtvxwrIbCfC6JCPnIdgYkGk3ztVDS4NqQl +Q8zp+gT8GVSEFRsf6lH0E055vvW5NKyObTTKXjTCTvI4oN4N7TedR8XQIFvjczyrwMczBfV6BaNL aHn7h/5O5MdDBVGXKj8nVzcO8N9/Ofv1O54buDJ0PVCHKFQJbH5NLH44VAdB7PChJBeWso5s1KE2b C353j/iubmJFwG/ygaGQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oaeeR-004czk-3d; Tue, 20 Sep 2022 14:55:07 +0000 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oaeeE-004cqc-30; Tue, 20 Sep 2022 14:54:56 +0000 Received: by mail-wr1-x42b.google.com with SMTP id z6so4774770wrq.1; Tue, 20 Sep 2022 07:54:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date; bh=pCURNhn6Rw9wz2vUv7eatknMQWidr34V6aQvNqhRxV8=; b=X0w85ytfANl8OXlNlGCm9gxzf2v5fXXTK6SHSbEOD779B6NhJ5wTp7BZCETWw7cTgn eqOt23P2SFHuHHkpY/bpLgr60W83uElzAvlSw1+0M12qcCAcm34lYujgGfGGxuI5ch9H Io1eAD07554hfq1bqFjRWOQyETpRCm8wvNo1rfghk46Hq8iOBMcoVycjcrUJw+Hq+XU6 nsgPGVEpsZm1u+TqxFK3pZ3Wz6n1kykTt8Ldd8pOQOmJoOJl2eq6Xd7q0dGUC99o4oU4 WLrkytDJuinhysEzU3Mt/2BcYn4mth+q+A4nGQsjweDDpIaOiG/lv0FAcuO5JUW2BDeb WJOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state :from:to:cc:subject:date; bh=pCURNhn6Rw9wz2vUv7eatknMQWidr34V6aQvNqhRxV8=; b=TElz4TjzlgKXS/7fprTEhRuWyVONSlVCeu2DM53cjZRC36OBPAMtHgmfrESt03eadu e1bkQnD91+ghzzE+d+LFipQcOF4tgtum1/yORfjaBnc8Is1g+fcI9Zz7L5VuIITq9yGw lD5yGfDX3W+d7SDmPCRCqU4Amuq4QUrgzF2lpmc3BljytxA4PM8RFnsxKsjXxWc3ADQX WZfqBQraBJvjP1qXPm98XkkGXk8UaadHez0TNiTC8HIVP8oJeyJ6lBIWp4BNL1CNIj9h Uy7l5gjG2rmUPbXhjx4Ad6arT+jkiX1VU9N53Fr9nrAWsFX/y4wdCB4TKohzrYTFVpJ+ Hk6g== X-Gm-Message-State: ACrzQf1Lpw8HS+vsnOP6T7b0SAVgWV45fDOZiNammMozbeGIqOhq3eGM x199E6shVVh+TMzjeiLkM2w= X-Google-Smtp-Source: AMsMyM6onJ62JMeiYj7H0jjeK6iNqm3Vk7acM/iwPJAbMVfAXaGDcla++1gSoFLtovhuXwNrbz/AmA== X-Received: by 2002:a5d:6483:0:b0:226:db59:2f94 with SMTP id o3-20020a5d6483000000b00226db592f94mr14329436wri.200.1663685685594; Tue, 20 Sep 2022 07:54:45 -0700 (PDT) Received: from p200300f6ef036f005de6a4d0d791ed01.dip0.t-ipconnect.de (p200300f6ef036f005de6a4d0d791ed01.dip0.t-ipconnect.de. [2003:f6:ef03:6f00:5de6:a4d0:d791:ed01]) by smtp.gmail.com with ESMTPSA id b10-20020adfe64a000000b00228cbac7a25sm245931wrn.64.2022.09.20.07.54.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Sep 2022 07:54:45 -0700 (PDT) Message-ID: <1684ca38960d035a0fedd077ed149f524c58f7ff.camel@gmail.com> Subject: Re: [PATCH 13/15] iio: health: max30100: do not use internal iio_dev lock From: Nuno =?ISO-8859-1?Q?S=E1?= To: Miquel Raynal , "Sa, Nuno" Cc: "linux-arm-kernel@lists.infradead.org" , "linux-rockchip@lists.infradead.org" , "linux-amlogic@lists.infradead.org" , "linux-imx@nxp.com" , "linux-iio@vger.kernel.org" , Chunyan Zhang , "Hennerich, Michael" , Martin Blumenstingl , Sascha Hauer , Cixi Geng , Kevin Hilman , Vladimir Zapolskiy , Pengutronix Kernel Team , Alexandru Ardelean , Fabio Estevam , Andriy Tryshnivskyy , Haibo Chen , Shawn Guo , Hans de Goede , Jerome Brunet , Heiko Stuebner , Florian Boor , "Regus, Ciprian" , Lars-Peter Clausen , Andy Shevchenko , Jonathan Cameron , Neil Armstrong , Baolin Wang , Jyoti Bhayana , Chen-Yu Tsai , Orson Zhai Date: Tue, 20 Sep 2022 16:56:01 +0200 In-Reply-To: <20220920155305.395dad08@xps-13> References: <20220920112821.975359-1-nuno.sa@analog.com> <20220920112821.975359-14-nuno.sa@analog.com> <20220920142319.61557023@xps-13> <20220920145534.0bdd4e69@xps-13> <20220920155305.395dad08@xps-13> User-Agent: Evolution 3.44.4 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220920_075454_207653_E45D3414 X-CRM114-Status: GOOD ( 59.36 ) 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 T24gVHVlLCAyMDIyLTA5LTIwIGF0IDE1OjUzICswMjAwLCBNaXF1ZWwgUmF5bmFsIHdyb3RlOgo+ IEhpIE51bm8sCj4gCj4gTnVuby5TYUBhbmFsb2cuY29twqB3cm90ZSBvbiBUdWUsIDIwIFNlcCAy MDIyIDEzOjE1OjMyICswMDAwOgo+IAo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ ID4gPiBGcm9tOiBNaXF1ZWwgUmF5bmFsIDxtaXF1ZWwucmF5bmFsQGJvb3RsaW4uY29tPgo+ID4g PiBTZW50OiBUdWVzZGF5LCBTZXB0ZW1iZXIgMjAsIDIwMjIgMjo1NiBQTQo+ID4gPiBUbzogU2Es IE51bm8gPE51bm8uU2FAYW5hbG9nLmNvbT4KPiA+ID4gQ2M6IGxpbnV4LWFybS1rZXJuZWxAbGlz dHMuaW5mcmFkZWFkLm9yZzsKPiA+ID4gbGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9y ZzsKPiA+ID4gbGludXgtYW1sb2dpY0BsaXN0cy5pbmZyYWRlYWQub3JnOyBsaW51eC1pbXhAbnhw LmNvbTsgbGludXgtCj4gPiA+IGlpb0B2Z2VyLmtlcm5lbC5vcmc7IENodW55YW4gWmhhbmcgPHpo YW5nLmx5cmFAZ21haWwuY29tPjsKPiA+ID4gSGVubmVyaWNoLAo+ID4gPiBNaWNoYWVsIDxNaWNo YWVsLkhlbm5lcmljaEBhbmFsb2cuY29tPjsgTWFydGluIEJsdW1lbnN0aW5nbAo+ID4gPiA8bWFy dGluLmJsdW1lbnN0aW5nbEBnb29nbGVtYWlsLmNvbT47IFNhc2NoYSBIYXVlcgo+ID4gPiA8cy5o YXVlckBwZW5ndXRyb25peC5kZT47IENpeGkgR2VuZyA8Y2l4aS5nZW5nMUB1bmlzb2MuY29tPjsK PiA+ID4gS2V2aW4KPiA+ID4gSGlsbWFuIDxraGlsbWFuQGJheWxpYnJlLmNvbT47IFZsYWRpbWly IFphcG9sc2tpeSA8dnpAbWxlaWEuY29tPjsKPiA+ID4gUGVuZ3V0cm9uaXggS2VybmVsIFRlYW0g PGtlcm5lbEBwZW5ndXRyb25peC5kZT47IEFsZXhhbmRydQo+ID4gPiBBcmRlbGVhbgo+ID4gPiA8 YWFyZGVsZWFuQGRldmlxb24uY29tPjsgRmFiaW8gRXN0ZXZhbSA8ZmVzdGV2YW1AZ21haWwuY29t PjsKPiA+ID4gQW5kcml5Cj4gPiA+IFRyeXNobml2c2t5eSA8YW5kcml5LnRyeXNobml2c2t5eUBv cGVuc3luZXJneS5jb20+OyBIYWlibyBDaGVuCj4gPiA+IDxoYWliby5jaGVuQG54cC5jb20+OyBT aGF3biBHdW8gPHNoYXduZ3VvQGtlcm5lbC5vcmc+OyBIYW5zIGRlCj4gPiA+IEdvZWRlIDxoZGVn b2VkZUByZWRoYXQuY29tPjsgSmVyb21lIEJydW5ldAo+ID4gPiA8amJydW5ldEBiYXlsaWJyZS5j b20+Owo+ID4gPiBIZWlrbyBTdHVlYm5lciA8aGVpa29Ac250ZWNoLmRlPjsgRmxvcmlhbiBCb29y Cj4gPiA+IDxmbG9yaWFuLmJvb3JAa2VybmVsY29uY2VwdHMuZGU+OyBSZWd1cywgQ2lwcmlhbgo+ ID4gPiA8Q2lwcmlhbi5SZWd1c0BhbmFsb2cuY29tPjsgTGFycy1QZXRlciBDbGF1c2VuIDxsYXJz QG1ldGFmb28uZGU+Owo+ID4gPiBBbmR5Cj4gPiA+IFNoZXZjaGVua28gPGFuZHkuc2hldmNoZW5r b0BnbWFpbC5jb20+OyBKb25hdGhhbiBDYW1lcm9uCj4gPiA+IDxqaWMyM0BrZXJuZWwub3JnPjsg TmVpbCBBcm1zdHJvbmcgPG5hcm1zdHJvbmdAYmF5bGlicmUuY29tPjsKPiA+ID4gQmFvbGluCj4g PiA+IFdhbmcgPGJhb2xpbi53YW5nQGxpbnV4LmFsaWJhYmEuY29tPjsgSnlvdGkgQmhheWFuYQo+ ID4gPiA8amJoYXlhbmFAZ29vZ2xlLmNvbT47IENoZW4tWXUgVHNhaSA8d2Vuc0Bjc2llLm9yZz47 IE9yc29uIFpoYWkKPiA+ID4gPG9yc29uemhhaUBnbWFpbC5jb20+Cj4gPiA+IFN1YmplY3Q6IFJl OiBbUEFUQ0ggMTMvMTVdIGlpbzogaGVhbHRoOiBtYXgzMDEwMDogZG8gbm90IHVzZQo+ID4gPiBp bnRlcm5hbCBpaW9fZGV2Cj4gPiA+IGxvY2sKPiA+ID4gCj4gPiA+IFtFeHRlcm5hbF0KPiA+ID4g Cj4gPiA+IEhpIE51bm8sCj4gPiA+IAo+ID4gPiBOdW5vLlNhQGFuYWxvZy5jb23CoHdyb3RlIG9u IFR1ZSwgMjAgU2VwIDIwMjIgMTI6NDQ6MDggKzAwMDA6Cj4gPiA+IMKgIAo+ID4gPiA+ID4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+ID4gPiA+IEZyb206IE1pcXVlbCBSYXluYWwgPG1p cXVlbC5yYXluYWxAYm9vdGxpbi5jb20+Cj4gPiA+ID4gPiBTZW50OiBUdWVzZGF5LCBTZXB0ZW1i ZXIgMjAsIDIwMjIgMjoyMyBQTQo+ID4gPiA+ID4gVG86IFNhLCBOdW5vIDxOdW5vLlNhQGFuYWxv Zy5jb20+Cj4gPiA+ID4gPiBDYzogbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn OyBsaW51eC3CoCAKPiA+ID4gcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZzvCoCAKPiA+ID4g PiA+IGxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZzsgbGludXgtaW14QG54cC5jb207 IGxpbnV4LQo+ID4gPiA+ID4gaWlvQHZnZXIua2VybmVsLm9yZzsgQ2h1bnlhbiBaaGFuZyA8emhh bmcubHlyYUBnbWFpbC5jb20+O8KgIAo+ID4gPiBIZW5uZXJpY2gswqAgCj4gPiA+ID4gPiBNaWNo YWVsIDxNaWNoYWVsLkhlbm5lcmljaEBhbmFsb2cuY29tPjsgTWFydGluIEJsdW1lbnN0aW5nbAo+ ID4gPiA+ID4gPG1hcnRpbi5ibHVtZW5zdGluZ2xAZ29vZ2xlbWFpbC5jb20+OyBTYXNjaGEgSGF1 ZXIKPiA+ID4gPiA+IDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPjsgQ2l4aSBHZW5nIDxjaXhpLmdl bmcxQHVuaXNvYy5jb20+Owo+ID4gPiA+ID4gS2V2aW4KPiA+ID4gPiA+IEhpbG1hbiA8a2hpbG1h bkBiYXlsaWJyZS5jb20+OyBWbGFkaW1pciBaYXBvbHNraXkKPiA+ID4gPiA+IDx2ekBtbGVpYS5j b20+Owo+ID4gPiA+ID4gUGVuZ3V0cm9uaXggS2VybmVsIFRlYW0gPGtlcm5lbEBwZW5ndXRyb25p eC5kZT47IEFsZXhhbmRydcKgIAo+ID4gPiBBcmRlbGVhbsKgIAo+ID4gPiA+ID4gPGFhcmRlbGVh bkBkZXZpcW9uLmNvbT47IEZhYmlvIEVzdGV2YW0gPGZlc3RldmFtQGdtYWlsLmNvbT47wqAKPiA+ ID4gQW5kcml5wqAgCj4gPiA+ID4gPiBUcnlzaG5pdnNreXkgPGFuZHJpeS50cnlzaG5pdnNreXlA b3BlbnN5bmVyZ3kuY29tPjsgSGFpYm8KPiA+ID4gPiA+IENoZW4KPiA+ID4gPiA+IDxoYWliby5j aGVuQG54cC5jb20+OyBTaGF3biBHdW8gPHNoYXduZ3VvQGtlcm5lbC5vcmc+OyBIYW5zCj4gPiA+ ID4gPiBkZQo+ID4gPiA+ID4gR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+OyBKZXJvbWUgQnJ1 bmV0wqAgCj4gPiA+IDxqYnJ1bmV0QGJheWxpYnJlLmNvbT47wqAgCj4gPiA+ID4gPiBIZWlrbyBT dHVlYm5lciA8aGVpa29Ac250ZWNoLmRlPjsgRmxvcmlhbiBCb29yCj4gPiA+ID4gPiA8Zmxvcmlh bi5ib29yQGtlcm5lbGNvbmNlcHRzLmRlPjsgUmVndXMsIENpcHJpYW4KPiA+ID4gPiA+IDxDaXBy aWFuLlJlZ3VzQGFuYWxvZy5jb20+OyBMYXJzLVBldGVyIENsYXVzZW4KPiA+ID4gPiA+IDxsYXJz QG1ldGFmb28uZGU+O8KgIAo+ID4gPiBBbmR5wqAgCj4gPiA+ID4gPiBTaGV2Y2hlbmtvIDxhbmR5 LnNoZXZjaGVua29AZ21haWwuY29tPjsgSm9uYXRoYW4gQ2FtZXJvbgo+ID4gPiA+ID4gPGppYzIz QGtlcm5lbC5vcmc+OyBOZWlsIEFybXN0cm9uZyA8bmFybXN0cm9uZ0BiYXlsaWJyZS5jb20+Owo+ ID4gPiA+ID4gQmFvbGluCj4gPiA+ID4gPiBXYW5nIDxiYW9saW4ud2FuZ0BsaW51eC5hbGliYWJh LmNvbT47IEp5b3RpIEJoYXlhbmEKPiA+ID4gPiA+IDxqYmhheWFuYUBnb29nbGUuY29tPjsgQ2hl bi1ZdSBUc2FpIDx3ZW5zQGNzaWUub3JnPjsgT3Jzb24KPiA+ID4gPiA+IFpoYWkKPiA+ID4gPiA+ IDxvcnNvbnpoYWlAZ21haWwuY29tPgo+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCAxMy8x NV0gaWlvOiBoZWFsdGg6IG1heDMwMTAwOiBkbyBub3QgdXNlCj4gPiA+ID4gPiBpbnRlcm5hbMKg IAo+ID4gPiBpaW9fZGV2wqAgCj4gPiA+ID4gPiBsb2NrCj4gPiA+ID4gPiAKPiA+ID4gPiA+IFtF eHRlcm5hbF0KPiA+ID4gPiA+IAo+ID4gPiA+ID4gSGkgTnVubywKPiA+ID4gPiA+IMKgCj4gPiA+ ID4gCj4gPiA+ID4gSGkgTWlxdWVsLAo+ID4gPiA+IAo+ID4gPiA+IFRoYW5rcyBmb3IgcmV2aWV3 aW5nLi4uCj4gPiA+ID4gwqAKPiA+ID4gPiA+IG51bm8uc2FAYW5hbG9nLmNvbcKgd3JvdGUgb24g VHVlLCAyMCBTZXAgMjAyMiAxMzoyODoxOSArMDIwMDoKPiA+ID4gPiA+IMKgCj4gPiA+ID4gPiA+ IFRoZSBwYXR0ZXJuIHVzZWQgaW4gdGhpcyBkZXZpY2UgZG9lcyBub3QgcXVpdGUgZml0IGluIHRo ZQo+ID4gPiA+ID4gPiBpaW9fZGV2aWNlX2NsYWltX2RpcmVjdF9tb2RlKCkgdHlwaWNhbCB1c2Fn ZS4gSW4gdGhpcyBjYXNlLAo+ID4gPiA+ID4gPiBpaW9fYnVmZmVyX2VuYWJsZWQoKSB3YXMgYmVp bmcgdXNlZCBub3QgdG8gcHJldmVudCB0aGUgcmF3Cj4gPiA+ID4gPiA+IGFjY2VzcyBidXTCoCAK PiA+ID4gdG/CoCAKPiA+ID4gPiA+ID4gYWxsb3cgaXQuIEhlbmNlIHRvIGdldCByaWQgb2YgdGhl ICdtbG9jaycgd2UgbmVlZCB0bzoKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IDEuIFVzZSBpaW9f ZGV2aWNlX2NsYWltX2RpcmVjdF9tb2RlKCkgdG8gY2hlY2sgaWYgZGlyZWN0Cj4gPiA+ID4gPiA+ IG1vZGUgY2FuIGJlCj4gPiA+ID4gPiA+IGNsYWltZWQgYW5kIGlmIHdlIGNhbiByZXR1cm4gLUVJ TlZBTCAoYXMgdGhlIG9yaWdpbmFsCj4gPiA+ID4gPiA+IGNvZGUpOwo+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gMi4gTWFrZSBzdXJlIHRoYXQgYnVmZmVyaW5nIGlzIG5vdCBkaXNhYmxlZCB3aGls ZSBkb2luZyBhCj4gPiA+ID4gPiA+IHJhdyByZWFkLiBGb3IKPiA+ID4gPiA+ID4gdGhhdCwgd2Ug Y2FuIG1ha2UgdXNlIG9mIHRoZSBsb2NhbCBsb2NrIHRoYXQgYWxyZWFkeQo+ID4gPiA+ID4gPiBl eGlzdHMuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBXaGlsZSBhdCBpdCwgZml4ZWQgYSBtaW5v ciBjb2Rpbmcgc3R5bGUgY29tcGxhaW4uLi4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IFNpZ25l ZC1vZmYtYnk6IE51bm8gU8OhIDxudW5vLnNhQGFuYWxvZy5jb20+Cj4gPiA+ID4gPiA+IC0tLQo+ ID4gPiA+ID4gPiDCoGRyaXZlcnMvaWlvL2hlYWx0aC9tYXgzMDEwMC5jIHwgMjQgKysrKysrKysr KysrKysrKystLS0tLS0KPiA+ID4gPiA+ID4gLQo+ID4gPiA+ID4gPiDCoDEgZmlsZSBjaGFuZ2Vk LCAxNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2hlYWx0aC9tYXgzMDEwMC5jwqAgCj4gPiA+IGIv ZHJpdmVycy9paW8vaGVhbHRoL21heDMwMTAwLmPCoCAKPiA+ID4gPiA+ID4gaW5kZXggYWQ1NzE3 OTY1MjIzLi5hYTQ5NGNhZDVkZjAgMTAwNjQ0Cj4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvaWlv L2hlYWx0aC9tYXgzMDEwMC5jCj4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvaWlvL2hlYWx0aC9t YXgzMDEwMC5jCj4gPiA+ID4gPiA+IEBAIC0xODUsOCArMTg1LDE5IEBAIHN0YXRpYyBpbnQKPiA+ ID4gPiA+ID4gbWF4MzAxMDBfYnVmZmVyX3Bvc3RlbmFibGUoc3RydWN0wqAgCj4gPiA+ID4gPiBp aW9fZGV2ICppbmRpb19kZXYpwqAgCj4gPiA+ID4gPiA+IMKgc3RhdGljIGludCBtYXgzMDEwMF9i dWZmZXJfcHJlZGlzYWJsZShzdHJ1Y3QgaWlvX2Rldgo+ID4gPiA+ID4gPiAqaW5kaW9fZGV2KQo+ ID4gPiA+ID4gPiDCoHsKPiA+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBtYXgzMDEw MF9kYXRhICpkYXRhID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKPiA+ID4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgaW50IHJldDsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAv Kgo+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgKiBBcyBzdGF0ZWQgaW4gdGhlIGNvbW1lbnQg aW4gdGhlIHJlYWRfcmF3KCkKPiA+ID4gPiA+ID4gZnVuY3Rpb24sIHRlbXBlcmF0dXJlCj4gPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCAqIGNhbiBvbmx5IGJlIGFjcXVpcmVkIGlmIHRoZSBlbmdp bmUgaXMgcnVubmluZy4KPiA+ID4gPiA+ID4gQXMgc3VjaCB0aGUgbXV0ZXgKPiA+ID4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgICogaXMgdXNlZCB0byBtYWtlIHN1cmUgd2UgZG8gbm90IHBvd2VyIGRv d24gd2hpbGUKPiA+ID4gPiA+ID4gZG9pbmcgYcKgIAo+ID4gPiA+ID4gdGVtcGVyYXR1cmXCoCAK PiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgICogcmVhZGluZy4KPiA+ID4gPiA+ID4gK8KgwqDC oMKgwqDCoMKgICovCj4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoG11dGV4X2xvY2soJmRhdGEt PmxvY2spOwo+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqByZXQgPSBtYXgzMDEwMF9zZXRfcG93 ZXJtb2RlKGRhdGEsIGZhbHNlKTsKPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgbXV0ZXhfdW5s b2NrKCZkYXRhLT5sb2NrKTsKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDC oHJldHVybiBtYXgzMDEwMF9zZXRfcG93ZXJtb2RlKGRhdGEsIGZhbHNlKTsKPiA+ID4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiA+ID4gPiA+ID4gwqB9Cj4gPiA+ID4gPiA+IAo+ ID4gPiA+ID4gPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX2J1ZmZlcl9zZXR1cF9vcHMKPiA+ ID4gPiA+ID4gbWF4MzAxMDBfYnVmZmVyX3NldHVwX29wc8KgIAo+ID4gPiA9IHvCoCAKPiA+ID4g PiA+ID4gQEAgLTM4NywxOCArMzk4LDE3IEBAIHN0YXRpYyBpbnQgbWF4MzAxMDBfcmVhZF9yYXco c3RydWN0Cj4gPiA+ID4gPiA+IGlpb19kZXbCoCAKPiA+ID4gPiA+ICppbmRpb19kZXYswqAgCj4g PiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogVGVtcGVyYXR1cmUg cmVhZGluZyBjYW4gb25seSBiZSBhY3F1aXJlZAo+ID4gPiA+ID4gPiB3aGlsZSBlbmdpbmUKPiA+ ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBpcyBydW5uaW5nCj4g PiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gPiA+ID4gPiA+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtdXRleF9sb2NrKCZpbmRpb19kZXYtPm1s b2NrKTsKPiA+ID4gPiA+ID4gLQo+ID4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKCFpaW9fYnVmZmVyX2VuYWJsZWQoaW5kaW9fZGV2KSkKPiA+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmCj4gPiA+ID4gPiA+ICghaWlvX2RldmljZV9j bGFpbV9kaXJlY3RfbW9kZShpbmRpb19kZXYpKSB7wqAgCj4gPiA+ID4gPiAKPiA+ID4gPiA+IEkg d29uZGVyIGlmIHRoaXMgbGluZSBjaGFuZ2UgaGVyZSBpcyByZWFsbHkgbmVlZGVkLiBJIGFncmVl Cj4gPiA+ID4gPiB0aGUgd2hvbGUKPiA+ID4gPiA+IGNvbnN0cnVjdGlvbiBsb29rcyBsaWtlIHdo YXQgaWlvX2RldmljZV9jbGFpbV9kaXJlY3RfbW9kZSgpCj4gPiA+ID4gPiBkb2VzIGJ1dCBpbgo+ ID4gPiA+ID4gcHJhY3RpY2UgSSBkb24ndCBzZWUgdGhlIHBvaW50IG9mIGFjcXVpcmluZyBhbnkg bG9jayBoZXJlIGlmCj4gPiA+ID4gPiB3ZSBqdXN0Cj4gPiA+ID4gPiByZWxlYXNlIGl0IG5vIG1h dHRlciB3aGF0IGhhcHBlbnMgcmlnaHQgYWZ0ZXIuCj4gPiA+ID4gPiDCoAo+ID4gPiA+IAo+ID4g PiA+IEkgY2FuIHNlZSB0aGF0IHRoaXMgaXMgb2RkIChhdCB0aGUgdmVyeSBsZWFzdCkgYnV0IEFG QUlLLCB0aGlzCj4gPiA+ID4gaXMgdGhlIG9ubHkgd2F5Cj4gPiA+ID4gdG8gc2FmZWx5IGluZmVy IGlmIGJ1ZmZlcmluZyBpcyBlbmFibGVkIG9yIG5vdC4KPiA+ID4gPiBpaW9fYnVmZmVyX2VuYWJs ZWQoKSBoYXMgbm8KPiA+ID4gPiBwcm90ZWN0aW9uIGFnYWluc3Qgc29tZW9uZSBjb25jdXJyZW50 bHkgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZQo+ID4gPiA+IGJ1ZmZlci7CoCAKPiA+ID4gCj4gPiA+ IFllcywgYnV0IHRoaXMgaXMgb25seSByZWxldmFudCBpZiB5b3Ugd2FudCB0byBpbmZlciB0aGF0 IHRoZQo+ID4gPiAiYnVmZmVycwo+ID4gPiBhcmUgZW5hYmxlZCIgYW5kIGJlIHN1cmUgdGhhdCBp dCBjYW5ub3QgYmUgb3RoZXJ3aXNlIGR1cmluZyB0aGUKPiA+ID4gbmV4dAo+ID4gPiBsaW5lcyB1 bnRpbCB5b3UgcmVsZWFzZSB0aGUgbG9jay4gQWNxdWlyaW5nIGEgbG9jaywgZG9pbmcgdGhlIGlm Cj4gPiA+IGFuZAo+ID4gPiB0aGVuIHVuY29uZGl0aW9uYWxseSByZWxlYXNpbmcgdGhlIGxvY2ss IElNSE8sIGRvZXMgbm90IG1ha2UgYW55Cj4gPiA+IHNlbnNlCj4gPiA+IChidXQgSSdtIG5vdCBh IGxvY2tpbmcgZ3VydSkgYmVjYXVzZSB3aGVuIHlvdSBlbnRlciB0aGUgZWxzZQo+ID4gPiBjbGF1 c2UsCj4gPiA+IHlvdSBhcmUgbm90IHByb3RlY3RlZCBhbnl3YXksIHNvIGluIGJvdGggY2FzZXMg YWxsIHRoaXMgaXMKPiA+ID4gY29tcGxldGVseQo+ID4gPiByYWN5Lgo+ID4gPiDCoCAKPiA+IAo+ ID4gQWhoIGNyYXAsIHllcyB5b3UgYXJlIHJpZ2h0Li4uIEl0IGlzIHN0aWxsIHJhY3kgc2luY2Ug d2UgY2FuIHN0aWxsCj4gPiB0cnkgdG8gcmVhZAo+ID4gdGhlIHRlbXBlcmF0dXJlIHdpdGggdGhl IGRldmljZSBwb3dlcmVkIG9mZi4gSSdtIG5vdCByZWFsbHkgc3VyZQo+ID4gaG93IHRvCj4gPiBh ZGRyZXNzIHRoaXMuIE9uZSB3YXkgY291bGQgYmUgdG8ganVzdCB1c2UgYW4gaW50ZXJuYWwgY29u dHJvbAo+ID4gdmFyaWFibGUKPiA+IHRvIHJlZmxlY3QgdGhlIGRldmljZSBwb3dlciBzdGF0ZSAo c2V0L2NsZWFyIG9uIHRoZSBidWZmZXIKPiA+IGNhbGxiYWNrcykgYW5kCj4gPiBvbmx5IHVzZSB0 aGUgbG9jYWwgbG9jayAoY29tcGxldGVseSBkaXRjaGluZyB0aGUgY2FsbCB0bwo+ID4gaWlvX2Rl dmljZV9jbGFpbV9kaXJlY3RfbW9kZSgpKS4uLgo+IAo+IEkgdGVuZCB0byBwcmVmZXIgdGhpcyBv cHRpb24gdGhhbiB0aGUgb25lIGJlbG93Lgo+IAo+IEkgZ3Vlc3MgeW91ciBpbXBsZW1lbnRhdGlv biBhbHJlYWR5IHByZXZlbnRzIGJ1ZmZlcl9wcmVkaXNhYmxlKCkgdG8KPiBydW4KPiB0aGFua3Mg dG8gdGhlIGxvY2FsIGxvY2sgYmVpbmcgaGVsZCBkdXJpbmcgdGhlIG9wZXJhdGlvbi4gTWF5YmUg d2UKPiBzaG91bGQganVzdCB2ZXJpZnkgdGhhdCBidWZmZXJzIGFyZSBlbmFibGVkIGZyb20gd2l0 aGluIHRoZSBsb2NhbAo+IGxvY2sKPiBiZWluZyBoZWxkIGluc3RlYWQgb2YganVzdCBhY3F1aXJp bmcgaXQgZm9yIHRoZSBnZXRfdGVtcCgpIG1lYXN1cmUuCj4gSXQKPiB3b3VsZCBwcm9iYWJseSBz b2x2ZSB0aGUgc2l0dWF0aW9uIGhlcmUuCj4gPiAKTm90IHN1cmUgaWYgSSB1bmRlcnN0b29kLi4u IFlvdSBtZWFuIHNvbWV0aGluZyBsaWtlOgoKbXV0ZXhfbG9jaygmZGF0YS0+bG9jayk7CmlmICgh aWlvX2J1ZmZlcl9lbmFibGVkKGluZGlvX2RldikpIHsKCXJldCA9IC1FSU5WQUw7Cn0gZWxzZSB7 CiAJcmV0ID0gbWF4MzAxMDBfZ2V0X3RlbXAoZGF0YSwgdmFsKTsKIAlpZiAoIXJldCkKIAkJcmV0 ID0gSUlPX1ZBTF9JTlQ7Cgp9Cm11dGV4X3VubG9jaygmZGF0YS0+bG9jayk7CgpJZiBzbywgSSB0 aGluayB0aGlzIGlzIHN0aWxsIHJhY3kgc2luY2Ugd2UgcmVsZWFzZSB0aGUgbG9jayBhZnRlciB0 aGUKcHJlZGlzYWJsZSB3aGljaCBtZWFucyB3ZSBjb3VsZCBzdGlsbCBkZXRlY3QgdGhlIGJ1ZmZl cnMgYXMgZW5hYmxlZCAoaW4KdGhlIGFib3ZlIGJsb2NrKSBhbmQgdHJ5IHRvIGdldF90ZW1wIG9u IGEgcG93ZXJlZCBkb3duIGRldmljZS4KClNpbmNlIHdlIHByZXR0eSBtdWNoIG9ubHkgY2FyZSBh Ym91dCB0aGUgcG93ZXIgc3RhdGUgb2YgdGhlIGRldmljZSAoYW5kCndlIGFyZSB1c2luZyB0aGUg YnVmZmVyaW5nIHN0YXRlIHRvIGluZmVyIHRoYXQgQUZBSVUpLCBJIHdhcyB0aGlua2luZwppbiBz b21ldGhpbmcgbGlrZToKCgptdXRleF9sb2NrKCZkYXRhLT5sb2NrKTsKaWYgKCFkYXRhLT5wb3dl cmVkKSB7CglyZXQgPSAtRUlOVkFMOwp9IGVsc2UgewogCXJldCA9IG1heDMwMTAwX2dldF90ZW1w KGRhdGEsIHZhbCk7CiAJaWYgKCFyZXQpCiAJCXJldCA9IElJT19WQUxfSU5UOwoKfQptdXRleF91 bmxvY2soJmRhdGEtPmxvY2spOwoKVGhlbiwgaW4gdGhlIHByZWRpc2FibGUsIHNvbWV0aGluZyBs aWtlIEkgaGF2ZSBidXQgc2V0dGluZyB0aGUgZmxhZyB0bwpmYWxzZSBhbmQgdGhlIG9wcG9zaXRl IG9uIHRoZSBwb3N0ZW5hYmxlLi4uIE5hdHVyYWxseSB3ZSBjb3VsZCBhbHNvCmp1c3QgcmVhZCB0 aGUgcmVnaXN0ZXJzIChhbmQgSSBhY3R1YWxseSB0ZW5kIHRvIHByZWZlciBpdCkgaW5zdGVhZCBv ZiBhCm5ldyBmbGFnIGJ1dCBJIGd1ZXNzIHRoZSBmbGFnIGlzIGVub3VnaCBpbiB0aGlzIGNhc2Uu CgotIE51bm8gU8OhCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKTGludXgtcm9ja2NoaXBAbGlzdHMu aW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2xpbnV4LXJvY2tjaGlwCg== 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 33544C54EE9 for ; Tue, 20 Sep 2022 14:56:11 +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: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=sl64ieDORUIDLuChp5xIrn4OvKv4RLNmS9inMQlKCuk=; b=ZFBy56vYioAaP2 Yqtt21737pyxLLKJIrSysFiuGJV4pfxToC9TcN8CUUjmoLILTxVg1bRtV0N03ci0N52K9VQhGNf4v axqNHYRi+X6wbtCVCyL3azFCDDN/Xkd0ZC0G5mp92Rw3C6i9b1OYddEUaGAwvzJCQZOU7dcuqvr/Y nLB+XwSeu1dwY7upCwdlY1ZOY0tUyQVI+4Mwd6tg5rzoexMYrfBL8ufxXBdx7ws2yCqPmorHc/JOp xywdJVXyrL7OZj97aKlZUm4JmgWg0n8T6v0laugbBvWeosXxLNsP1ucjwHOm9UYC502zLZHzHqx92 vqfCmxFwxE1gavQaC8Wg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oaeeH-004cuR-KC; Tue, 20 Sep 2022 14:54:57 +0000 Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oaeeE-004cqc-30; Tue, 20 Sep 2022 14:54:56 +0000 Received: by mail-wr1-x42b.google.com with SMTP id z6so4774770wrq.1; Tue, 20 Sep 2022 07:54:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date; bh=pCURNhn6Rw9wz2vUv7eatknMQWidr34V6aQvNqhRxV8=; b=X0w85ytfANl8OXlNlGCm9gxzf2v5fXXTK6SHSbEOD779B6NhJ5wTp7BZCETWw7cTgn eqOt23P2SFHuHHkpY/bpLgr60W83uElzAvlSw1+0M12qcCAcm34lYujgGfGGxuI5ch9H Io1eAD07554hfq1bqFjRWOQyETpRCm8wvNo1rfghk46Hq8iOBMcoVycjcrUJw+Hq+XU6 nsgPGVEpsZm1u+TqxFK3pZ3Wz6n1kykTt8Ldd8pOQOmJoOJl2eq6Xd7q0dGUC99o4oU4 WLrkytDJuinhysEzU3Mt/2BcYn4mth+q+A4nGQsjweDDpIaOiG/lv0FAcuO5JUW2BDeb WJOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state :from:to:cc:subject:date; bh=pCURNhn6Rw9wz2vUv7eatknMQWidr34V6aQvNqhRxV8=; b=TElz4TjzlgKXS/7fprTEhRuWyVONSlVCeu2DM53cjZRC36OBPAMtHgmfrESt03eadu e1bkQnD91+ghzzE+d+LFipQcOF4tgtum1/yORfjaBnc8Is1g+fcI9Zz7L5VuIITq9yGw lD5yGfDX3W+d7SDmPCRCqU4Amuq4QUrgzF2lpmc3BljytxA4PM8RFnsxKsjXxWc3ADQX WZfqBQraBJvjP1qXPm98XkkGXk8UaadHez0TNiTC8HIVP8oJeyJ6lBIWp4BNL1CNIj9h Uy7l5gjG2rmUPbXhjx4Ad6arT+jkiX1VU9N53Fr9nrAWsFX/y4wdCB4TKohzrYTFVpJ+ Hk6g== X-Gm-Message-State: ACrzQf1Lpw8HS+vsnOP6T7b0SAVgWV45fDOZiNammMozbeGIqOhq3eGM x199E6shVVh+TMzjeiLkM2w= X-Google-Smtp-Source: AMsMyM6onJ62JMeiYj7H0jjeK6iNqm3Vk7acM/iwPJAbMVfAXaGDcla++1gSoFLtovhuXwNrbz/AmA== X-Received: by 2002:a5d:6483:0:b0:226:db59:2f94 with SMTP id o3-20020a5d6483000000b00226db592f94mr14329436wri.200.1663685685594; Tue, 20 Sep 2022 07:54:45 -0700 (PDT) Received: from p200300f6ef036f005de6a4d0d791ed01.dip0.t-ipconnect.de (p200300f6ef036f005de6a4d0d791ed01.dip0.t-ipconnect.de. [2003:f6:ef03:6f00:5de6:a4d0:d791:ed01]) by smtp.gmail.com with ESMTPSA id b10-20020adfe64a000000b00228cbac7a25sm245931wrn.64.2022.09.20.07.54.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Sep 2022 07:54:45 -0700 (PDT) Message-ID: <1684ca38960d035a0fedd077ed149f524c58f7ff.camel@gmail.com> Subject: Re: [PATCH 13/15] iio: health: max30100: do not use internal iio_dev lock From: Nuno =?ISO-8859-1?Q?S=E1?= To: Miquel Raynal , "Sa, Nuno" Cc: "linux-arm-kernel@lists.infradead.org" , "linux-rockchip@lists.infradead.org" , "linux-amlogic@lists.infradead.org" , "linux-imx@nxp.com" , "linux-iio@vger.kernel.org" , Chunyan Zhang , "Hennerich, Michael" , Martin Blumenstingl , Sascha Hauer , Cixi Geng , Kevin Hilman , Vladimir Zapolskiy , Pengutronix Kernel Team , Alexandru Ardelean , Fabio Estevam , Andriy Tryshnivskyy , Haibo Chen , Shawn Guo , Hans de Goede , Jerome Brunet , Heiko Stuebner , Florian Boor , "Regus, Ciprian" , Lars-Peter Clausen , Andy Shevchenko , Jonathan Cameron , Neil Armstrong , Baolin Wang , Jyoti Bhayana , Chen-Yu Tsai , Orson Zhai Date: Tue, 20 Sep 2022 16:56:01 +0200 In-Reply-To: <20220920155305.395dad08@xps-13> References: <20220920112821.975359-1-nuno.sa@analog.com> <20220920112821.975359-14-nuno.sa@analog.com> <20220920142319.61557023@xps-13> <20220920145534.0bdd4e69@xps-13> <20220920155305.395dad08@xps-13> User-Agent: Evolution 3.44.4 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220920_075454_207653_E45D3414 X-CRM114-Status: GOOD ( 59.36 ) 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 T24gVHVlLCAyMDIyLTA5LTIwIGF0IDE1OjUzICswMjAwLCBNaXF1ZWwgUmF5bmFsIHdyb3RlOgo+ IEhpIE51bm8sCj4gCj4gTnVuby5TYUBhbmFsb2cuY29twqB3cm90ZSBvbiBUdWUsIDIwIFNlcCAy MDIyIDEzOjE1OjMyICswMDAwOgo+IAo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ ID4gPiBGcm9tOiBNaXF1ZWwgUmF5bmFsIDxtaXF1ZWwucmF5bmFsQGJvb3RsaW4uY29tPgo+ID4g PiBTZW50OiBUdWVzZGF5LCBTZXB0ZW1iZXIgMjAsIDIwMjIgMjo1NiBQTQo+ID4gPiBUbzogU2Es IE51bm8gPE51bm8uU2FAYW5hbG9nLmNvbT4KPiA+ID4gQ2M6IGxpbnV4LWFybS1rZXJuZWxAbGlz dHMuaW5mcmFkZWFkLm9yZzsKPiA+ID4gbGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9y ZzsKPiA+ID4gbGludXgtYW1sb2dpY0BsaXN0cy5pbmZyYWRlYWQub3JnOyBsaW51eC1pbXhAbnhw LmNvbTsgbGludXgtCj4gPiA+IGlpb0B2Z2VyLmtlcm5lbC5vcmc7IENodW55YW4gWmhhbmcgPHpo YW5nLmx5cmFAZ21haWwuY29tPjsKPiA+ID4gSGVubmVyaWNoLAo+ID4gPiBNaWNoYWVsIDxNaWNo YWVsLkhlbm5lcmljaEBhbmFsb2cuY29tPjsgTWFydGluIEJsdW1lbnN0aW5nbAo+ID4gPiA8bWFy dGluLmJsdW1lbnN0aW5nbEBnb29nbGVtYWlsLmNvbT47IFNhc2NoYSBIYXVlcgo+ID4gPiA8cy5o YXVlckBwZW5ndXRyb25peC5kZT47IENpeGkgR2VuZyA8Y2l4aS5nZW5nMUB1bmlzb2MuY29tPjsK PiA+ID4gS2V2aW4KPiA+ID4gSGlsbWFuIDxraGlsbWFuQGJheWxpYnJlLmNvbT47IFZsYWRpbWly IFphcG9sc2tpeSA8dnpAbWxlaWEuY29tPjsKPiA+ID4gUGVuZ3V0cm9uaXggS2VybmVsIFRlYW0g PGtlcm5lbEBwZW5ndXRyb25peC5kZT47IEFsZXhhbmRydQo+ID4gPiBBcmRlbGVhbgo+ID4gPiA8 YWFyZGVsZWFuQGRldmlxb24uY29tPjsgRmFiaW8gRXN0ZXZhbSA8ZmVzdGV2YW1AZ21haWwuY29t PjsKPiA+ID4gQW5kcml5Cj4gPiA+IFRyeXNobml2c2t5eSA8YW5kcml5LnRyeXNobml2c2t5eUBv cGVuc3luZXJneS5jb20+OyBIYWlibyBDaGVuCj4gPiA+IDxoYWliby5jaGVuQG54cC5jb20+OyBT aGF3biBHdW8gPHNoYXduZ3VvQGtlcm5lbC5vcmc+OyBIYW5zIGRlCj4gPiA+IEdvZWRlIDxoZGVn b2VkZUByZWRoYXQuY29tPjsgSmVyb21lIEJydW5ldAo+ID4gPiA8amJydW5ldEBiYXlsaWJyZS5j b20+Owo+ID4gPiBIZWlrbyBTdHVlYm5lciA8aGVpa29Ac250ZWNoLmRlPjsgRmxvcmlhbiBCb29y Cj4gPiA+IDxmbG9yaWFuLmJvb3JAa2VybmVsY29uY2VwdHMuZGU+OyBSZWd1cywgQ2lwcmlhbgo+ ID4gPiA8Q2lwcmlhbi5SZWd1c0BhbmFsb2cuY29tPjsgTGFycy1QZXRlciBDbGF1c2VuIDxsYXJz QG1ldGFmb28uZGU+Owo+ID4gPiBBbmR5Cj4gPiA+IFNoZXZjaGVua28gPGFuZHkuc2hldmNoZW5r b0BnbWFpbC5jb20+OyBKb25hdGhhbiBDYW1lcm9uCj4gPiA+IDxqaWMyM0BrZXJuZWwub3JnPjsg TmVpbCBBcm1zdHJvbmcgPG5hcm1zdHJvbmdAYmF5bGlicmUuY29tPjsKPiA+ID4gQmFvbGluCj4g PiA+IFdhbmcgPGJhb2xpbi53YW5nQGxpbnV4LmFsaWJhYmEuY29tPjsgSnlvdGkgQmhheWFuYQo+ ID4gPiA8amJoYXlhbmFAZ29vZ2xlLmNvbT47IENoZW4tWXUgVHNhaSA8d2Vuc0Bjc2llLm9yZz47 IE9yc29uIFpoYWkKPiA+ID4gPG9yc29uemhhaUBnbWFpbC5jb20+Cj4gPiA+IFN1YmplY3Q6IFJl OiBbUEFUQ0ggMTMvMTVdIGlpbzogaGVhbHRoOiBtYXgzMDEwMDogZG8gbm90IHVzZQo+ID4gPiBp bnRlcm5hbCBpaW9fZGV2Cj4gPiA+IGxvY2sKPiA+ID4gCj4gPiA+IFtFeHRlcm5hbF0KPiA+ID4g Cj4gPiA+IEhpIE51bm8sCj4gPiA+IAo+ID4gPiBOdW5vLlNhQGFuYWxvZy5jb23CoHdyb3RlIG9u IFR1ZSwgMjAgU2VwIDIwMjIgMTI6NDQ6MDggKzAwMDA6Cj4gPiA+IMKgIAo+ID4gPiA+ID4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+ID4gPiA+IEZyb206IE1pcXVlbCBSYXluYWwgPG1p cXVlbC5yYXluYWxAYm9vdGxpbi5jb20+Cj4gPiA+ID4gPiBTZW50OiBUdWVzZGF5LCBTZXB0ZW1i ZXIgMjAsIDIwMjIgMjoyMyBQTQo+ID4gPiA+ID4gVG86IFNhLCBOdW5vIDxOdW5vLlNhQGFuYWxv Zy5jb20+Cj4gPiA+ID4gPiBDYzogbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn OyBsaW51eC3CoCAKPiA+ID4gcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZzvCoCAKPiA+ID4g PiA+IGxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZzsgbGludXgtaW14QG54cC5jb207 IGxpbnV4LQo+ID4gPiA+ID4gaWlvQHZnZXIua2VybmVsLm9yZzsgQ2h1bnlhbiBaaGFuZyA8emhh bmcubHlyYUBnbWFpbC5jb20+O8KgIAo+ID4gPiBIZW5uZXJpY2gswqAgCj4gPiA+ID4gPiBNaWNo YWVsIDxNaWNoYWVsLkhlbm5lcmljaEBhbmFsb2cuY29tPjsgTWFydGluIEJsdW1lbnN0aW5nbAo+ ID4gPiA+ID4gPG1hcnRpbi5ibHVtZW5zdGluZ2xAZ29vZ2xlbWFpbC5jb20+OyBTYXNjaGEgSGF1 ZXIKPiA+ID4gPiA+IDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPjsgQ2l4aSBHZW5nIDxjaXhpLmdl bmcxQHVuaXNvYy5jb20+Owo+ID4gPiA+ID4gS2V2aW4KPiA+ID4gPiA+IEhpbG1hbiA8a2hpbG1h bkBiYXlsaWJyZS5jb20+OyBWbGFkaW1pciBaYXBvbHNraXkKPiA+ID4gPiA+IDx2ekBtbGVpYS5j b20+Owo+ID4gPiA+ID4gUGVuZ3V0cm9uaXggS2VybmVsIFRlYW0gPGtlcm5lbEBwZW5ndXRyb25p eC5kZT47IEFsZXhhbmRydcKgIAo+ID4gPiBBcmRlbGVhbsKgIAo+ID4gPiA+ID4gPGFhcmRlbGVh bkBkZXZpcW9uLmNvbT47IEZhYmlvIEVzdGV2YW0gPGZlc3RldmFtQGdtYWlsLmNvbT47wqAKPiA+ ID4gQW5kcml5wqAgCj4gPiA+ID4gPiBUcnlzaG5pdnNreXkgPGFuZHJpeS50cnlzaG5pdnNreXlA b3BlbnN5bmVyZ3kuY29tPjsgSGFpYm8KPiA+ID4gPiA+IENoZW4KPiA+ID4gPiA+IDxoYWliby5j aGVuQG54cC5jb20+OyBTaGF3biBHdW8gPHNoYXduZ3VvQGtlcm5lbC5vcmc+OyBIYW5zCj4gPiA+ ID4gPiBkZQo+ID4gPiA+ID4gR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+OyBKZXJvbWUgQnJ1 bmV0wqAgCj4gPiA+IDxqYnJ1bmV0QGJheWxpYnJlLmNvbT47wqAgCj4gPiA+ID4gPiBIZWlrbyBT dHVlYm5lciA8aGVpa29Ac250ZWNoLmRlPjsgRmxvcmlhbiBCb29yCj4gPiA+ID4gPiA8Zmxvcmlh bi5ib29yQGtlcm5lbGNvbmNlcHRzLmRlPjsgUmVndXMsIENpcHJpYW4KPiA+ID4gPiA+IDxDaXBy aWFuLlJlZ3VzQGFuYWxvZy5jb20+OyBMYXJzLVBldGVyIENsYXVzZW4KPiA+ID4gPiA+IDxsYXJz QG1ldGFmb28uZGU+O8KgIAo+ID4gPiBBbmR5wqAgCj4gPiA+ID4gPiBTaGV2Y2hlbmtvIDxhbmR5 LnNoZXZjaGVua29AZ21haWwuY29tPjsgSm9uYXRoYW4gQ2FtZXJvbgo+ID4gPiA+ID4gPGppYzIz QGtlcm5lbC5vcmc+OyBOZWlsIEFybXN0cm9uZyA8bmFybXN0cm9uZ0BiYXlsaWJyZS5jb20+Owo+ ID4gPiA+ID4gQmFvbGluCj4gPiA+ID4gPiBXYW5nIDxiYW9saW4ud2FuZ0BsaW51eC5hbGliYWJh LmNvbT47IEp5b3RpIEJoYXlhbmEKPiA+ID4gPiA+IDxqYmhheWFuYUBnb29nbGUuY29tPjsgQ2hl bi1ZdSBUc2FpIDx3ZW5zQGNzaWUub3JnPjsgT3Jzb24KPiA+ID4gPiA+IFpoYWkKPiA+ID4gPiA+ IDxvcnNvbnpoYWlAZ21haWwuY29tPgo+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCAxMy8x NV0gaWlvOiBoZWFsdGg6IG1heDMwMTAwOiBkbyBub3QgdXNlCj4gPiA+ID4gPiBpbnRlcm5hbMKg IAo+ID4gPiBpaW9fZGV2wqAgCj4gPiA+ID4gPiBsb2NrCj4gPiA+ID4gPiAKPiA+ID4gPiA+IFtF eHRlcm5hbF0KPiA+ID4gPiA+IAo+ID4gPiA+ID4gSGkgTnVubywKPiA+ID4gPiA+IMKgCj4gPiA+ ID4gCj4gPiA+ID4gSGkgTWlxdWVsLAo+ID4gPiA+IAo+ID4gPiA+IFRoYW5rcyBmb3IgcmV2aWV3 aW5nLi4uCj4gPiA+ID4gwqAKPiA+ID4gPiA+IG51bm8uc2FAYW5hbG9nLmNvbcKgd3JvdGUgb24g VHVlLCAyMCBTZXAgMjAyMiAxMzoyODoxOSArMDIwMDoKPiA+ID4gPiA+IMKgCj4gPiA+ID4gPiA+ IFRoZSBwYXR0ZXJuIHVzZWQgaW4gdGhpcyBkZXZpY2UgZG9lcyBub3QgcXVpdGUgZml0IGluIHRo ZQo+ID4gPiA+ID4gPiBpaW9fZGV2aWNlX2NsYWltX2RpcmVjdF9tb2RlKCkgdHlwaWNhbCB1c2Fn ZS4gSW4gdGhpcyBjYXNlLAo+ID4gPiA+ID4gPiBpaW9fYnVmZmVyX2VuYWJsZWQoKSB3YXMgYmVp bmcgdXNlZCBub3QgdG8gcHJldmVudCB0aGUgcmF3Cj4gPiA+ID4gPiA+IGFjY2VzcyBidXTCoCAK PiA+ID4gdG/CoCAKPiA+ID4gPiA+ID4gYWxsb3cgaXQuIEhlbmNlIHRvIGdldCByaWQgb2YgdGhl ICdtbG9jaycgd2UgbmVlZCB0bzoKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IDEuIFVzZSBpaW9f ZGV2aWNlX2NsYWltX2RpcmVjdF9tb2RlKCkgdG8gY2hlY2sgaWYgZGlyZWN0Cj4gPiA+ID4gPiA+ IG1vZGUgY2FuIGJlCj4gPiA+ID4gPiA+IGNsYWltZWQgYW5kIGlmIHdlIGNhbiByZXR1cm4gLUVJ TlZBTCAoYXMgdGhlIG9yaWdpbmFsCj4gPiA+ID4gPiA+IGNvZGUpOwo+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gMi4gTWFrZSBzdXJlIHRoYXQgYnVmZmVyaW5nIGlzIG5vdCBkaXNhYmxlZCB3aGls ZSBkb2luZyBhCj4gPiA+ID4gPiA+IHJhdyByZWFkLiBGb3IKPiA+ID4gPiA+ID4gdGhhdCwgd2Ug Y2FuIG1ha2UgdXNlIG9mIHRoZSBsb2NhbCBsb2NrIHRoYXQgYWxyZWFkeQo+ID4gPiA+ID4gPiBl eGlzdHMuCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBXaGlsZSBhdCBpdCwgZml4ZWQgYSBtaW5v ciBjb2Rpbmcgc3R5bGUgY29tcGxhaW4uLi4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IFNpZ25l ZC1vZmYtYnk6IE51bm8gU8OhIDxudW5vLnNhQGFuYWxvZy5jb20+Cj4gPiA+ID4gPiA+IC0tLQo+ ID4gPiA+ID4gPiDCoGRyaXZlcnMvaWlvL2hlYWx0aC9tYXgzMDEwMC5jIHwgMjQgKysrKysrKysr KysrKysrKystLS0tLS0KPiA+ID4gPiA+ID4gLQo+ID4gPiA+ID4gPiDCoDEgZmlsZSBjaGFuZ2Vk LCAxNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2hlYWx0aC9tYXgzMDEwMC5jwqAgCj4gPiA+IGIv ZHJpdmVycy9paW8vaGVhbHRoL21heDMwMTAwLmPCoCAKPiA+ID4gPiA+ID4gaW5kZXggYWQ1NzE3 OTY1MjIzLi5hYTQ5NGNhZDVkZjAgMTAwNjQ0Cj4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvaWlv L2hlYWx0aC9tYXgzMDEwMC5jCj4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvaWlvL2hlYWx0aC9t YXgzMDEwMC5jCj4gPiA+ID4gPiA+IEBAIC0xODUsOCArMTg1LDE5IEBAIHN0YXRpYyBpbnQKPiA+ ID4gPiA+ID4gbWF4MzAxMDBfYnVmZmVyX3Bvc3RlbmFibGUoc3RydWN0wqAgCj4gPiA+ID4gPiBp aW9fZGV2ICppbmRpb19kZXYpwqAgCj4gPiA+ID4gPiA+IMKgc3RhdGljIGludCBtYXgzMDEwMF9i dWZmZXJfcHJlZGlzYWJsZShzdHJ1Y3QgaWlvX2Rldgo+ID4gPiA+ID4gPiAqaW5kaW9fZGV2KQo+ ID4gPiA+ID4gPiDCoHsKPiA+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBtYXgzMDEw MF9kYXRhICpkYXRhID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKPiA+ID4gPiA+ID4gK8KgwqDCoMKg wqDCoMKgaW50IHJldDsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAv Kgo+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgKiBBcyBzdGF0ZWQgaW4gdGhlIGNvbW1lbnQg aW4gdGhlIHJlYWRfcmF3KCkKPiA+ID4gPiA+ID4gZnVuY3Rpb24sIHRlbXBlcmF0dXJlCj4gPiA+ ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCAqIGNhbiBvbmx5IGJlIGFjcXVpcmVkIGlmIHRoZSBlbmdp bmUgaXMgcnVubmluZy4KPiA+ID4gPiA+ID4gQXMgc3VjaCB0aGUgbXV0ZXgKPiA+ID4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgICogaXMgdXNlZCB0byBtYWtlIHN1cmUgd2UgZG8gbm90IHBvd2VyIGRv d24gd2hpbGUKPiA+ID4gPiA+ID4gZG9pbmcgYcKgIAo+ID4gPiA+ID4gdGVtcGVyYXR1cmXCoCAK PiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgICogcmVhZGluZy4KPiA+ID4gPiA+ID4gK8KgwqDC oMKgwqDCoMKgICovCj4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoG11dGV4X2xvY2soJmRhdGEt PmxvY2spOwo+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqByZXQgPSBtYXgzMDEwMF9zZXRfcG93 ZXJtb2RlKGRhdGEsIGZhbHNlKTsKPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgbXV0ZXhfdW5s b2NrKCZkYXRhLT5sb2NrKTsKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IC3CoMKgwqDCoMKgwqDC oHJldHVybiBtYXgzMDEwMF9zZXRfcG93ZXJtb2RlKGRhdGEsIGZhbHNlKTsKPiA+ID4gPiA+ID4g K8KgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiA+ID4gPiA+ID4gwqB9Cj4gPiA+ID4gPiA+IAo+ ID4gPiA+ID4gPiDCoHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX2J1ZmZlcl9zZXR1cF9vcHMKPiA+ ID4gPiA+ID4gbWF4MzAxMDBfYnVmZmVyX3NldHVwX29wc8KgIAo+ID4gPiA9IHvCoCAKPiA+ID4g PiA+ID4gQEAgLTM4NywxOCArMzk4LDE3IEBAIHN0YXRpYyBpbnQgbWF4MzAxMDBfcmVhZF9yYXco c3RydWN0Cj4gPiA+ID4gPiA+IGlpb19kZXbCoCAKPiA+ID4gPiA+ICppbmRpb19kZXYswqAgCj4g PiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogVGVtcGVyYXR1cmUg cmVhZGluZyBjYW4gb25seSBiZSBhY3F1aXJlZAo+ID4gPiA+ID4gPiB3aGlsZSBlbmdpbmUKPiA+ ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBpcyBydW5uaW5nCj4g PiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gPiA+ID4gPiA+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtdXRleF9sb2NrKCZpbmRpb19kZXYtPm1s b2NrKTsKPiA+ID4gPiA+ID4gLQo+ID4gPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKCFpaW9fYnVmZmVyX2VuYWJsZWQoaW5kaW9fZGV2KSkKPiA+ID4gPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmCj4gPiA+ID4gPiA+ICghaWlvX2RldmljZV9j bGFpbV9kaXJlY3RfbW9kZShpbmRpb19kZXYpKSB7wqAgCj4gPiA+ID4gPiAKPiA+ID4gPiA+IEkg d29uZGVyIGlmIHRoaXMgbGluZSBjaGFuZ2UgaGVyZSBpcyByZWFsbHkgbmVlZGVkLiBJIGFncmVl Cj4gPiA+ID4gPiB0aGUgd2hvbGUKPiA+ID4gPiA+IGNvbnN0cnVjdGlvbiBsb29rcyBsaWtlIHdo YXQgaWlvX2RldmljZV9jbGFpbV9kaXJlY3RfbW9kZSgpCj4gPiA+ID4gPiBkb2VzIGJ1dCBpbgo+ ID4gPiA+ID4gcHJhY3RpY2UgSSBkb24ndCBzZWUgdGhlIHBvaW50IG9mIGFjcXVpcmluZyBhbnkg bG9jayBoZXJlIGlmCj4gPiA+ID4gPiB3ZSBqdXN0Cj4gPiA+ID4gPiByZWxlYXNlIGl0IG5vIG1h dHRlciB3aGF0IGhhcHBlbnMgcmlnaHQgYWZ0ZXIuCj4gPiA+ID4gPiDCoAo+ID4gPiA+IAo+ID4g PiA+IEkgY2FuIHNlZSB0aGF0IHRoaXMgaXMgb2RkIChhdCB0aGUgdmVyeSBsZWFzdCkgYnV0IEFG QUlLLCB0aGlzCj4gPiA+ID4gaXMgdGhlIG9ubHkgd2F5Cj4gPiA+ID4gdG8gc2FmZWx5IGluZmVy IGlmIGJ1ZmZlcmluZyBpcyBlbmFibGVkIG9yIG5vdC4KPiA+ID4gPiBpaW9fYnVmZmVyX2VuYWJs ZWQoKSBoYXMgbm8KPiA+ID4gPiBwcm90ZWN0aW9uIGFnYWluc3Qgc29tZW9uZSBjb25jdXJyZW50 bHkgZW5hYmxpbmcvZGlzYWJsaW5nIHRoZQo+ID4gPiA+IGJ1ZmZlci7CoCAKPiA+ID4gCj4gPiA+ IFllcywgYnV0IHRoaXMgaXMgb25seSByZWxldmFudCBpZiB5b3Ugd2FudCB0byBpbmZlciB0aGF0 IHRoZQo+ID4gPiAiYnVmZmVycwo+ID4gPiBhcmUgZW5hYmxlZCIgYW5kIGJlIHN1cmUgdGhhdCBp dCBjYW5ub3QgYmUgb3RoZXJ3aXNlIGR1cmluZyB0aGUKPiA+ID4gbmV4dAo+ID4gPiBsaW5lcyB1 bnRpbCB5b3UgcmVsZWFzZSB0aGUgbG9jay4gQWNxdWlyaW5nIGEgbG9jaywgZG9pbmcgdGhlIGlm Cj4gPiA+IGFuZAo+ID4gPiB0aGVuIHVuY29uZGl0aW9uYWxseSByZWxlYXNpbmcgdGhlIGxvY2ss IElNSE8sIGRvZXMgbm90IG1ha2UgYW55Cj4gPiA+IHNlbnNlCj4gPiA+IChidXQgSSdtIG5vdCBh IGxvY2tpbmcgZ3VydSkgYmVjYXVzZSB3aGVuIHlvdSBlbnRlciB0aGUgZWxzZQo+ID4gPiBjbGF1 c2UsCj4gPiA+IHlvdSBhcmUgbm90IHByb3RlY3RlZCBhbnl3YXksIHNvIGluIGJvdGggY2FzZXMg YWxsIHRoaXMgaXMKPiA+ID4gY29tcGxldGVseQo+ID4gPiByYWN5Lgo+ID4gPiDCoCAKPiA+IAo+ ID4gQWhoIGNyYXAsIHllcyB5b3UgYXJlIHJpZ2h0Li4uIEl0IGlzIHN0aWxsIHJhY3kgc2luY2Ug d2UgY2FuIHN0aWxsCj4gPiB0cnkgdG8gcmVhZAo+ID4gdGhlIHRlbXBlcmF0dXJlIHdpdGggdGhl IGRldmljZSBwb3dlcmVkIG9mZi4gSSdtIG5vdCByZWFsbHkgc3VyZQo+ID4gaG93IHRvCj4gPiBh ZGRyZXNzIHRoaXMuIE9uZSB3YXkgY291bGQgYmUgdG8ganVzdCB1c2UgYW4gaW50ZXJuYWwgY29u dHJvbAo+ID4gdmFyaWFibGUKPiA+IHRvIHJlZmxlY3QgdGhlIGRldmljZSBwb3dlciBzdGF0ZSAo c2V0L2NsZWFyIG9uIHRoZSBidWZmZXIKPiA+IGNhbGxiYWNrcykgYW5kCj4gPiBvbmx5IHVzZSB0 aGUgbG9jYWwgbG9jayAoY29tcGxldGVseSBkaXRjaGluZyB0aGUgY2FsbCB0bwo+ID4gaWlvX2Rl dmljZV9jbGFpbV9kaXJlY3RfbW9kZSgpKS4uLgo+IAo+IEkgdGVuZCB0byBwcmVmZXIgdGhpcyBv cHRpb24gdGhhbiB0aGUgb25lIGJlbG93Lgo+IAo+IEkgZ3Vlc3MgeW91ciBpbXBsZW1lbnRhdGlv biBhbHJlYWR5IHByZXZlbnRzIGJ1ZmZlcl9wcmVkaXNhYmxlKCkgdG8KPiBydW4KPiB0aGFua3Mg dG8gdGhlIGxvY2FsIGxvY2sgYmVpbmcgaGVsZCBkdXJpbmcgdGhlIG9wZXJhdGlvbi4gTWF5YmUg d2UKPiBzaG91bGQganVzdCB2ZXJpZnkgdGhhdCBidWZmZXJzIGFyZSBlbmFibGVkIGZyb20gd2l0 aGluIHRoZSBsb2NhbAo+IGxvY2sKPiBiZWluZyBoZWxkIGluc3RlYWQgb2YganVzdCBhY3F1aXJp bmcgaXQgZm9yIHRoZSBnZXRfdGVtcCgpIG1lYXN1cmUuCj4gSXQKPiB3b3VsZCBwcm9iYWJseSBz b2x2ZSB0aGUgc2l0dWF0aW9uIGhlcmUuCj4gPiAKTm90IHN1cmUgaWYgSSB1bmRlcnN0b29kLi4u IFlvdSBtZWFuIHNvbWV0aGluZyBsaWtlOgoKbXV0ZXhfbG9jaygmZGF0YS0+bG9jayk7CmlmICgh aWlvX2J1ZmZlcl9lbmFibGVkKGluZGlvX2RldikpIHsKCXJldCA9IC1FSU5WQUw7Cn0gZWxzZSB7 CiAJcmV0ID0gbWF4MzAxMDBfZ2V0X3RlbXAoZGF0YSwgdmFsKTsKIAlpZiAoIXJldCkKIAkJcmV0 ID0gSUlPX1ZBTF9JTlQ7Cgp9Cm11dGV4X3VubG9jaygmZGF0YS0+bG9jayk7CgpJZiBzbywgSSB0 aGluayB0aGlzIGlzIHN0aWxsIHJhY3kgc2luY2Ugd2UgcmVsZWFzZSB0aGUgbG9jayBhZnRlciB0 aGUKcHJlZGlzYWJsZSB3aGljaCBtZWFucyB3ZSBjb3VsZCBzdGlsbCBkZXRlY3QgdGhlIGJ1ZmZl cnMgYXMgZW5hYmxlZCAoaW4KdGhlIGFib3ZlIGJsb2NrKSBhbmQgdHJ5IHRvIGdldF90ZW1wIG9u IGEgcG93ZXJlZCBkb3duIGRldmljZS4KClNpbmNlIHdlIHByZXR0eSBtdWNoIG9ubHkgY2FyZSBh Ym91dCB0aGUgcG93ZXIgc3RhdGUgb2YgdGhlIGRldmljZSAoYW5kCndlIGFyZSB1c2luZyB0aGUg YnVmZmVyaW5nIHN0YXRlIHRvIGluZmVyIHRoYXQgQUZBSVUpLCBJIHdhcyB0aGlua2luZwppbiBz b21ldGhpbmcgbGlrZToKCgptdXRleF9sb2NrKCZkYXRhLT5sb2NrKTsKaWYgKCFkYXRhLT5wb3dl cmVkKSB7CglyZXQgPSAtRUlOVkFMOwp9IGVsc2UgewogCXJldCA9IG1heDMwMTAwX2dldF90ZW1w KGRhdGEsIHZhbCk7CiAJaWYgKCFyZXQpCiAJCXJldCA9IElJT19WQUxfSU5UOwoKfQptdXRleF91 bmxvY2soJmRhdGEtPmxvY2spOwoKVGhlbiwgaW4gdGhlIHByZWRpc2FibGUsIHNvbWV0aGluZyBs aWtlIEkgaGF2ZSBidXQgc2V0dGluZyB0aGUgZmxhZyB0bwpmYWxzZSBhbmQgdGhlIG9wcG9zaXRl IG9uIHRoZSBwb3N0ZW5hYmxlLi4uIE5hdHVyYWxseSB3ZSBjb3VsZCBhbHNvCmp1c3QgcmVhZCB0 aGUgcmVnaXN0ZXJzIChhbmQgSSBhY3R1YWxseSB0ZW5kIHRvIHByZWZlciBpdCkgaW5zdGVhZCBv ZiBhCm5ldyBmbGFnIGJ1dCBJIGd1ZXNzIHRoZSBmbGFnIGlzIGVub3VnaCBpbiB0aGlzIGNhc2Uu CgotIE51bm8gU8OhCj4gCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxp c3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1hcm0ta2VybmVsCg==