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 AA8AFECAAD8 for ; Tue, 20 Sep 2022 15:11:02 +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:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=WMZEZMezIHYG7Qip/Z0brtV9TnDz3mZlQVYy6nE6oFc=; b=w+ZB2gLF4d4s7V qi8BhAwUMyITRHuIw9+HwKxcHw4uBBTZA2mdB2BGnNKpVE6ofyFtA6dfXQJKNUp4Xfu6e9ydimvfP Sh2+NcrP8EvpvVlF1mfM3vtBLZqe42Lu7XiPzQa6JWIZrhRQK6UQuIcS+VQzKekTa/abY29y6wv7A JGu3SFswoZ00wc39NVWfV1tb52emvX9nUGL6X7/fxLH3xo776kusLOniGi8xebkfZjOv8v1rkk/jJ dHYoezu1DSg68GFW5Nw2t/hESTzwAGokH8pHxX+hWqBfpqS3YVfdgUwZpVNpvfPhfAZWkCUh6dEw3 UAFgkb9S4ENUjmq6asJw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oaetf-004jyO-FY; Tue, 20 Sep 2022 15:10:51 +0000 Received: from relay5-d.mail.gandi.net ([217.70.183.197]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oaeta-004juL-CU; Tue, 20 Sep 2022 15:10:49 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id 4C0F81C0004; Tue, 20 Sep 2022 15:10:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1663686638; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tOqBykGBFYJIHHvRgkqTuLiQ4sD7WwoKzWHdaAuZ1+M=; b=E++/PDCfyDGUowiCBh7o4nnrWVpcvc/jJgWymxvJL16Py24h5R9hdfksJnYwH0kE8whIaN 9rXHPtJmOiRpG9pq8vsPz1JV6C72bNqos2nx63tKxozHkqtvPSuEHlFRsv2qgUf+9fQrEH wpP93lQPAlQpeygNV6ZlNW3dvro9qHZFQS5j/MFjHoBr9N+EKtgWAYOOje0V0/sA5ECTeY RAU249VGB4jtqpUxGG/7RV1yhT2RONEP86Nsbjx7uJMgzuqGDnzRGJML1wdn7NW77q5cta xMULWJgSarLnL6NhY03Zkz9boie/Of00eiTMa6/kI86r9DrcAyK2/iAUN6ubgg== Date: Tue, 20 Sep 2022 17:10:33 +0200 From: Miquel Raynal To: Nuno =?UTF-8?B?U8Oh?= Cc: "Sa, Nuno" , "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 Message-ID: <20220920171033.2f9d6d1f@xps-13> In-Reply-To: <1684ca38960d035a0fedd077ed149f524c58f7ff.camel@gmail.com> 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> <1684ca38960d035a0fedd077ed149f524c58f7ff.camel@gmail.com> Organization: Bootlin X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220920_081046_794637_0A7A24AE X-CRM114-Status: GOOD ( 65.50 ) 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 SGkgTnVubywKCm5vbmFtZS5udW5vQGdtYWlsLmNvbSB3cm90ZSBvbiBUdWUsIDIwIFNlcCAyMDIy IDE2OjU2OjAxICswMjAwOgoKPiBPbiBUdWUsIDIwMjItMDktMjAgYXQgMTU6NTMgKzAyMDAsIE1p cXVlbCBSYXluYWwgd3JvdGU6Cj4gPiBIaSBOdW5vLAo+ID4gCj4gPiBOdW5vLlNhQGFuYWxvZy5j b23CoHdyb3RlIG9uIFR1ZSwgMjAgU2VwIDIwMjIgMTM6MTU6MzIgKzAwMDA6Cj4gPiAgIAo+ID4g PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiA+ID4gRnJvbTogTWlxdWVsIFJheW5h bCA8bWlxdWVsLnJheW5hbEBib290bGluLmNvbT4KPiA+ID4gPiBTZW50OiBUdWVzZGF5LCBTZXB0 ZW1iZXIgMjAsIDIwMjIgMjo1NiBQTQo+ID4gPiA+IFRvOiBTYSwgTnVubyA8TnVuby5TYUBhbmFs b2cuY29tPgo+ID4gPiA+IENjOiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7 Cj4gPiA+ID4gbGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZzsKPiA+ID4gPiBsaW51 eC1hbWxvZ2ljQGxpc3RzLmluZnJhZGVhZC5vcmc7IGxpbnV4LWlteEBueHAuY29tOyBsaW51eC0K PiA+ID4gPiBpaW9Admdlci5rZXJuZWwub3JnOyBDaHVueWFuIFpoYW5nIDx6aGFuZy5seXJhQGdt YWlsLmNvbT47Cj4gPiA+ID4gSGVubmVyaWNoLAo+ID4gPiA+IE1pY2hhZWwgPE1pY2hhZWwuSGVu bmVyaWNoQGFuYWxvZy5jb20+OyBNYXJ0aW4gQmx1bWVuc3RpbmdsCj4gPiA+ID4gPG1hcnRpbi5i bHVtZW5zdGluZ2xAZ29vZ2xlbWFpbC5jb20+OyBTYXNjaGEgSGF1ZXIKPiA+ID4gPiA8cy5oYXVl ckBwZW5ndXRyb25peC5kZT47IENpeGkgR2VuZyA8Y2l4aS5nZW5nMUB1bmlzb2MuY29tPjsKPiA+ ID4gPiBLZXZpbgo+ID4gPiA+IEhpbG1hbiA8a2hpbG1hbkBiYXlsaWJyZS5jb20+OyBWbGFkaW1p ciBaYXBvbHNraXkgPHZ6QG1sZWlhLmNvbT47Cj4gPiA+ID4gUGVuZ3V0cm9uaXggS2VybmVsIFRl YW0gPGtlcm5lbEBwZW5ndXRyb25peC5kZT47IEFsZXhhbmRydQo+ID4gPiA+IEFyZGVsZWFuCj4g PiA+ID4gPGFhcmRlbGVhbkBkZXZpcW9uLmNvbT47IEZhYmlvIEVzdGV2YW0gPGZlc3RldmFtQGdt YWlsLmNvbT47Cj4gPiA+ID4gQW5kcml5Cj4gPiA+ID4gVHJ5c2huaXZza3l5IDxhbmRyaXkudHJ5 c2huaXZza3l5QG9wZW5zeW5lcmd5LmNvbT47IEhhaWJvIENoZW4KPiA+ID4gPiA8aGFpYm8uY2hl bkBueHAuY29tPjsgU2hhd24gR3VvIDxzaGF3bmd1b0BrZXJuZWwub3JnPjsgSGFucyBkZQo+ID4g PiA+IEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPjsgSmVyb21lIEJydW5ldAo+ID4gPiA+IDxq YnJ1bmV0QGJheWxpYnJlLmNvbT47Cj4gPiA+ID4gSGVpa28gU3R1ZWJuZXIgPGhlaWtvQHNudGVj aC5kZT47IEZsb3JpYW4gQm9vcgo+ID4gPiA+IDxmbG9yaWFuLmJvb3JAa2VybmVsY29uY2VwdHMu ZGU+OyBSZWd1cywgQ2lwcmlhbgo+ID4gPiA+IDxDaXByaWFuLlJlZ3VzQGFuYWxvZy5jb20+OyBM YXJzLVBldGVyIENsYXVzZW4gPGxhcnNAbWV0YWZvby5kZT47Cj4gPiA+ID4gQW5keQo+ID4gPiA+ IFNoZXZjaGVua28gPGFuZHkuc2hldmNoZW5rb0BnbWFpbC5jb20+OyBKb25hdGhhbiBDYW1lcm9u Cj4gPiA+ID4gPGppYzIzQGtlcm5lbC5vcmc+OyBOZWlsIEFybXN0cm9uZyA8bmFybXN0cm9uZ0Bi YXlsaWJyZS5jb20+Owo+ID4gPiA+IEJhb2xpbgo+ID4gPiA+IFdhbmcgPGJhb2xpbi53YW5nQGxp bnV4LmFsaWJhYmEuY29tPjsgSnlvdGkgQmhheWFuYQo+ID4gPiA+IDxqYmhheWFuYUBnb29nbGUu Y29tPjsgQ2hlbi1ZdSBUc2FpIDx3ZW5zQGNzaWUub3JnPjsgT3Jzb24gWmhhaQo+ID4gPiA+IDxv cnNvbnpoYWlAZ21haWwuY29tPgo+ID4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMTMvMTVdIGlp bzogaGVhbHRoOiBtYXgzMDEwMDogZG8gbm90IHVzZQo+ID4gPiA+IGludGVybmFsIGlpb19kZXYK PiA+ID4gPiBsb2NrCj4gPiA+ID4gCj4gPiA+ID4gW0V4dGVybmFsXQo+ID4gPiA+IAo+ID4gPiA+ IEhpIE51bm8sCj4gPiA+ID4gCj4gPiA+ID4gTnVuby5TYUBhbmFsb2cuY29twqB3cm90ZSBvbiBU dWUsIDIwIFNlcCAyMDIyIDEyOjQ0OjA4ICswMDAwOgo+ID4gPiA+IMKgICAgCj4gPiA+ID4gPiA+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiA+ID4gPiA+IEZyb206IE1pcXVlbCBSYXlu YWwgPG1pcXVlbC5yYXluYWxAYm9vdGxpbi5jb20+Cj4gPiA+ID4gPiA+IFNlbnQ6IFR1ZXNkYXks IFNlcHRlbWJlciAyMCwgMjAyMiAyOjIzIFBNCj4gPiA+ID4gPiA+IFRvOiBTYSwgTnVubyA8TnVu by5TYUBhbmFsb2cuY29tPgo+ID4gPiA+ID4gPiBDYzogbGludXgtYXJtLWtlcm5lbEBsaXN0cy5p bmZyYWRlYWQub3JnOyBsaW51eC3CoCAgIAo+ID4gPiA+IHJvY2tjaGlwQGxpc3RzLmluZnJhZGVh ZC5vcmc7wqAgICAKPiA+ID4gPiA+ID4gbGludXgtYW1sb2dpY0BsaXN0cy5pbmZyYWRlYWQub3Jn OyBsaW51eC1pbXhAbnhwLmNvbTsgbGludXgtCj4gPiA+ID4gPiA+IGlpb0B2Z2VyLmtlcm5lbC5v cmc7IENodW55YW4gWmhhbmcgPHpoYW5nLmx5cmFAZ21haWwuY29tPjvCoCAgIAo+ID4gPiA+IEhl bm5lcmljaCzCoCAgIAo+ID4gPiA+ID4gPiBNaWNoYWVsIDxNaWNoYWVsLkhlbm5lcmljaEBhbmFs b2cuY29tPjsgTWFydGluIEJsdW1lbnN0aW5nbAo+ID4gPiA+ID4gPiA8bWFydGluLmJsdW1lbnN0 aW5nbEBnb29nbGVtYWlsLmNvbT47IFNhc2NoYSBIYXVlcgo+ID4gPiA+ID4gPiA8cy5oYXVlckBw ZW5ndXRyb25peC5kZT47IENpeGkgR2VuZyA8Y2l4aS5nZW5nMUB1bmlzb2MuY29tPjsKPiA+ID4g PiA+ID4gS2V2aW4KPiA+ID4gPiA+ID4gSGlsbWFuIDxraGlsbWFuQGJheWxpYnJlLmNvbT47IFZs YWRpbWlyIFphcG9sc2tpeQo+ID4gPiA+ID4gPiA8dnpAbWxlaWEuY29tPjsKPiA+ID4gPiA+ID4g UGVuZ3V0cm9uaXggS2VybmVsIFRlYW0gPGtlcm5lbEBwZW5ndXRyb25peC5kZT47IEFsZXhhbmRy dcKgICAgCj4gPiA+ID4gQXJkZWxlYW7CoCAgIAo+ID4gPiA+ID4gPiA8YWFyZGVsZWFuQGRldmlx b24uY29tPjsgRmFiaW8gRXN0ZXZhbSA8ZmVzdGV2YW1AZ21haWwuY29tPjvCoCAgCj4gPiA+ID4g QW5kcml5wqAgICAKPiA+ID4gPiA+ID4gVHJ5c2huaXZza3l5IDxhbmRyaXkudHJ5c2huaXZza3l5 QG9wZW5zeW5lcmd5LmNvbT47IEhhaWJvCj4gPiA+ID4gPiA+IENoZW4KPiA+ID4gPiA+ID4gPGhh aWJvLmNoZW5AbnhwLmNvbT47IFNoYXduIEd1byA8c2hhd25ndW9Aa2VybmVsLm9yZz47IEhhbnMK PiA+ID4gPiA+ID4gZGUKPiA+ID4gPiA+ID4gR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+OyBK ZXJvbWUgQnJ1bmV0wqAgICAKPiA+ID4gPiA8amJydW5ldEBiYXlsaWJyZS5jb20+O8KgICAgCj4g PiA+ID4gPiA+IEhlaWtvIFN0dWVibmVyIDxoZWlrb0BzbnRlY2guZGU+OyBGbG9yaWFuIEJvb3IK PiA+ID4gPiA+ID4gPGZsb3JpYW4uYm9vckBrZXJuZWxjb25jZXB0cy5kZT47IFJlZ3VzLCBDaXBy aWFuCj4gPiA+ID4gPiA+IDxDaXByaWFuLlJlZ3VzQGFuYWxvZy5jb20+OyBMYXJzLVBldGVyIENs YXVzZW4KPiA+ID4gPiA+ID4gPGxhcnNAbWV0YWZvby5kZT47wqAgICAKPiA+ID4gPiBBbmR5wqAg ICAKPiA+ID4gPiA+ID4gU2hldmNoZW5rbyA8YW5keS5zaGV2Y2hlbmtvQGdtYWlsLmNvbT47IEpv bmF0aGFuIENhbWVyb24KPiA+ID4gPiA+ID4gPGppYzIzQGtlcm5lbC5vcmc+OyBOZWlsIEFybXN0 cm9uZyA8bmFybXN0cm9uZ0BiYXlsaWJyZS5jb20+Owo+ID4gPiA+ID4gPiBCYW9saW4KPiA+ID4g PiA+ID4gV2FuZyA8YmFvbGluLndhbmdAbGludXguYWxpYmFiYS5jb20+OyBKeW90aSBCaGF5YW5h Cj4gPiA+ID4gPiA+IDxqYmhheWFuYUBnb29nbGUuY29tPjsgQ2hlbi1ZdSBUc2FpIDx3ZW5zQGNz aWUub3JnPjsgT3Jzb24KPiA+ID4gPiA+ID4gWmhhaQo+ID4gPiA+ID4gPiA8b3Jzb256aGFpQGdt YWlsLmNvbT4KPiA+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCAxMy8xNV0gaWlvOiBoZWFs dGg6IG1heDMwMTAwOiBkbyBub3QgdXNlCj4gPiA+ID4gPiA+IGludGVybmFswqAgICAKPiA+ID4g PiBpaW9fZGV2wqAgICAKPiA+ID4gPiA+ID4gbG9jawo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4g W0V4dGVybmFsXQo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gSGkgTnVubywKPiA+ID4gPiA+ID4g wqAgIAo+ID4gPiA+ID4gCj4gPiA+ID4gPiBIaSBNaXF1ZWwsCj4gPiA+ID4gPiAKPiA+ID4gPiA+ IFRoYW5rcyBmb3IgcmV2aWV3aW5nLi4uCj4gPiA+ID4gPiDCoCAgCj4gPiA+ID4gPiA+IG51bm8u c2FAYW5hbG9nLmNvbcKgd3JvdGUgb24gVHVlLCAyMCBTZXAgMjAyMiAxMzoyODoxOSArMDIwMDoK PiA+ID4gPiA+ID4gwqAgIAo+ID4gPiA+ID4gPiA+IFRoZSBwYXR0ZXJuIHVzZWQgaW4gdGhpcyBk ZXZpY2UgZG9lcyBub3QgcXVpdGUgZml0IGluIHRoZQo+ID4gPiA+ID4gPiA+IGlpb19kZXZpY2Vf Y2xhaW1fZGlyZWN0X21vZGUoKSB0eXBpY2FsIHVzYWdlLiBJbiB0aGlzIGNhc2UsCj4gPiA+ID4g PiA+ID4gaWlvX2J1ZmZlcl9lbmFibGVkKCkgd2FzIGJlaW5nIHVzZWQgbm90IHRvIHByZXZlbnQg dGhlIHJhdwo+ID4gPiA+ID4gPiA+IGFjY2VzcyBidXTCoCAgIAo+ID4gPiA+IHRvwqAgICAKPiA+ ID4gPiA+ID4gPiBhbGxvdyBpdC4gSGVuY2UgdG8gZ2V0IHJpZCBvZiB0aGUgJ21sb2NrJyB3ZSBu ZWVkIHRvOgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IDEuIFVzZSBpaW9fZGV2aWNlX2Ns YWltX2RpcmVjdF9tb2RlKCkgdG8gY2hlY2sgaWYgZGlyZWN0Cj4gPiA+ID4gPiA+ID4gbW9kZSBj YW4gYmUKPiA+ID4gPiA+ID4gPiBjbGFpbWVkIGFuZCBpZiB3ZSBjYW4gcmV0dXJuIC1FSU5WQUwg KGFzIHRoZSBvcmlnaW5hbAo+ID4gPiA+ID4gPiA+IGNvZGUpOwo+ID4gPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiA+IDIuIE1ha2Ugc3VyZSB0aGF0IGJ1ZmZlcmluZyBpcyBub3QgZGlzYWJsZWQgd2hp bGUgZG9pbmcgYQo+ID4gPiA+ID4gPiA+IHJhdyByZWFkLiBGb3IKPiA+ID4gPiA+ID4gPiB0aGF0 LCB3ZSBjYW4gbWFrZSB1c2Ugb2YgdGhlIGxvY2FsIGxvY2sgdGhhdCBhbHJlYWR5Cj4gPiA+ID4g PiA+ID4gZXhpc3RzLgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IFdoaWxlIGF0IGl0LCBm aXhlZCBhIG1pbm9yIGNvZGluZyBzdHlsZSBjb21wbGFpbi4uLgo+ID4gPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IE51bm8gU8OhIDxudW5vLnNhQGFuYWxvZy5jb20+Cj4g PiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ID4gwqBkcml2ZXJzL2lpby9oZWFsdGgvbWF4MzAx MDAuYyB8IDI0ICsrKysrKysrKysrKysrKysrLS0tLS0tCj4gPiA+ID4gPiA+ID4gLQo+ID4gPiA+ ID4gPiA+IMKgMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0p Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2hl YWx0aC9tYXgzMDEwMC5jwqAgICAKPiA+ID4gPiBiL2RyaXZlcnMvaWlvL2hlYWx0aC9tYXgzMDEw MC5jwqAgICAKPiA+ID4gPiA+ID4gPiBpbmRleCBhZDU3MTc5NjUyMjMuLmFhNDk0Y2FkNWRmMCAx MDA2NDQKPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2lpby9oZWFsdGgvbWF4MzAxMDAuYwo+ ID4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvaWlvL2hlYWx0aC9tYXgzMDEwMC5jCj4gPiA+ID4g PiA+ID4gQEAgLTE4NSw4ICsxODUsMTkgQEAgc3RhdGljIGludAo+ID4gPiA+ID4gPiA+IG1heDMw MTAwX2J1ZmZlcl9wb3N0ZW5hYmxlKHN0cnVjdMKgICAgCj4gPiA+ID4gPiA+IGlpb19kZXYgKmlu ZGlvX2RldinCoCAgIAo+ID4gPiA+ID4gPiA+IMKgc3RhdGljIGludCBtYXgzMDEwMF9idWZmZXJf cHJlZGlzYWJsZShzdHJ1Y3QgaWlvX2Rldgo+ID4gPiA+ID4gPiA+ICppbmRpb19kZXYpCj4gPiA+ ID4gPiA+ID4gwqB7Cj4gPiA+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBtYXgzMDEw MF9kYXRhICpkYXRhID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKPiA+ID4gPiA+ID4gPiArwqDCoMKg wqDCoMKgwqBpbnQgcmV0Owo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDC oMKgwqAvKgo+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCAqIEFzIHN0YXRlZCBpbiB0aGUg Y29tbWVudCBpbiB0aGUgcmVhZF9yYXcoKQo+ID4gPiA+ID4gPiA+IGZ1bmN0aW9uLCB0ZW1wZXJh dHVyZQo+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCAqIGNhbiBvbmx5IGJlIGFjcXVpcmVk IGlmIHRoZSBlbmdpbmUgaXMgcnVubmluZy4KPiA+ID4gPiA+ID4gPiBBcyBzdWNoIHRoZSBtdXRl eAo+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCAqIGlzIHVzZWQgdG8gbWFrZSBzdXJlIHdl IGRvIG5vdCBwb3dlciBkb3duIHdoaWxlCj4gPiA+ID4gPiA+ID4gZG9pbmcgYcKgICAgCj4gPiA+ ID4gPiA+IHRlbXBlcmF0dXJlwqAgICAKPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgKiBy ZWFkaW5nLgo+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCAqLwo+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoG11dGV4X2xvY2soJmRhdGEtPmxvY2spOwo+ID4gPiA+ID4gPiA+ICvCoMKg wqDCoMKgwqDCoHJldCA9IG1heDMwMTAwX3NldF9wb3dlcm1vZGUoZGF0YSwgZmFsc2UpOwo+ID4g PiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoG11dGV4X3VubG9jaygmZGF0YS0+bG9jayk7Cj4gPiA+ ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIG1heDMwMTAwX3Nl dF9wb3dlcm1vZGUoZGF0YSwgZmFsc2UpOwo+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHJl dHVybiByZXQ7Cj4gPiA+ID4gPiA+ID4gwqB9Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4g wqBzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19idWZmZXJfc2V0dXBfb3BzCj4gPiA+ID4gPiA+ID4g bWF4MzAxMDBfYnVmZmVyX3NldHVwX29wc8KgICAgCj4gPiA+ID4gPSB7wqAgICAKPiA+ID4gPiA+ ID4gPiBAQCAtMzg3LDE4ICszOTgsMTcgQEAgc3RhdGljIGludCBtYXgzMDEwMF9yZWFkX3Jhdyhz dHJ1Y3QKPiA+ID4gPiA+ID4gPiBpaW9fZGV2wqAgICAKPiA+ID4gPiA+ID4gKmluZGlvX2RldizC oCAgIAo+ID4gPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogVGVt cGVyYXR1cmUgcmVhZGluZyBjYW4gb25seSBiZSBhY3F1aXJlZAo+ID4gPiA+ID4gPiA+IHdoaWxl IGVuZ2luZQo+ID4gPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICog aXMgcnVubmluZwo+ID4gPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICovCj4gPiA+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG11dGV4X2xv Y2soJmluZGlvX2Rldi0+bWxvY2spOwo+ID4gPiA+ID4gPiA+IC0KPiA+ID4gPiA+ID4gPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFpaW9fYnVmZmVyX2VuYWJsZWQoaW5kaW9f ZGV2KSkKPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYKPiA+ ID4gPiA+ID4gPiAoIWlpb19kZXZpY2VfY2xhaW1fZGlyZWN0X21vZGUoaW5kaW9fZGV2KSkge8Kg ICAgCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBJIHdvbmRlciBpZiB0aGlzIGxpbmUgY2hhbmdl IGhlcmUgaXMgcmVhbGx5IG5lZWRlZC4gSSBhZ3JlZQo+ID4gPiA+ID4gPiB0aGUgd2hvbGUKPiA+ ID4gPiA+ID4gY29uc3RydWN0aW9uIGxvb2tzIGxpa2Ugd2hhdCBpaW9fZGV2aWNlX2NsYWltX2Rp cmVjdF9tb2RlKCkKPiA+ID4gPiA+ID4gZG9lcyBidXQgaW4KPiA+ID4gPiA+ID4gcHJhY3RpY2Ug SSBkb24ndCBzZWUgdGhlIHBvaW50IG9mIGFjcXVpcmluZyBhbnkgbG9jayBoZXJlIGlmCj4gPiA+ ID4gPiA+IHdlIGp1c3QKPiA+ID4gPiA+ID4gcmVsZWFzZSBpdCBubyBtYXR0ZXIgd2hhdCBoYXBw ZW5zIHJpZ2h0IGFmdGVyLgo+ID4gPiA+ID4gPiDCoCAgCj4gPiA+ID4gPiAKPiA+ID4gPiA+IEkg Y2FuIHNlZSB0aGF0IHRoaXMgaXMgb2RkIChhdCB0aGUgdmVyeSBsZWFzdCkgYnV0IEFGQUlLLCB0 aGlzCj4gPiA+ID4gPiBpcyB0aGUgb25seSB3YXkKPiA+ID4gPiA+IHRvIHNhZmVseSBpbmZlciBp ZiBidWZmZXJpbmcgaXMgZW5hYmxlZCBvciBub3QuCj4gPiA+ID4gPiBpaW9fYnVmZmVyX2VuYWJs ZWQoKSBoYXMgbm8KPiA+ID4gPiA+IHByb3RlY3Rpb24gYWdhaW5zdCBzb21lb25lIGNvbmN1cnJl bnRseSBlbmFibGluZy9kaXNhYmxpbmcgdGhlCj4gPiA+ID4gPiBidWZmZXIuwqAgICAKPiA+ID4g PiAKPiA+ID4gPiBZZXMsIGJ1dCB0aGlzIGlzIG9ubHkgcmVsZXZhbnQgaWYgeW91IHdhbnQgdG8g aW5mZXIgdGhhdCB0aGUKPiA+ID4gPiAiYnVmZmVycwo+ID4gPiA+IGFyZSBlbmFibGVkIiBhbmQg YmUgc3VyZSB0aGF0IGl0IGNhbm5vdCBiZSBvdGhlcndpc2UgZHVyaW5nIHRoZQo+ID4gPiA+IG5l eHQKPiA+ID4gPiBsaW5lcyB1bnRpbCB5b3UgcmVsZWFzZSB0aGUgbG9jay4gQWNxdWlyaW5nIGEg bG9jaywgZG9pbmcgdGhlIGlmCj4gPiA+ID4gYW5kCj4gPiA+ID4gdGhlbiB1bmNvbmRpdGlvbmFs bHkgcmVsZWFzaW5nIHRoZSBsb2NrLCBJTUhPLCBkb2VzIG5vdCBtYWtlIGFueQo+ID4gPiA+IHNl bnNlCj4gPiA+ID4gKGJ1dCBJJ20gbm90IGEgbG9ja2luZyBndXJ1KSBiZWNhdXNlIHdoZW4geW91 IGVudGVyIHRoZSBlbHNlCj4gPiA+ID4gY2xhdXNlLAo+ID4gPiA+IHlvdSBhcmUgbm90IHByb3Rl Y3RlZCBhbnl3YXksIHNvIGluIGJvdGggY2FzZXMgYWxsIHRoaXMgaXMKPiA+ID4gPiBjb21wbGV0 ZWx5Cj4gPiA+ID4gcmFjeS4KPiA+ID4gPiDCoCAgIAo+ID4gPiAKPiA+ID4gQWhoIGNyYXAsIHll cyB5b3UgYXJlIHJpZ2h0Li4uIEl0IGlzIHN0aWxsIHJhY3kgc2luY2Ugd2UgY2FuIHN0aWxsCj4g PiA+IHRyeSB0byByZWFkCj4gPiA+IHRoZSB0ZW1wZXJhdHVyZSB3aXRoIHRoZSBkZXZpY2UgcG93 ZXJlZCBvZmYuIEknbSBub3QgcmVhbGx5IHN1cmUKPiA+ID4gaG93IHRvCj4gPiA+IGFkZHJlc3Mg dGhpcy4gT25lIHdheSBjb3VsZCBiZSB0byBqdXN0IHVzZSBhbiBpbnRlcm5hbCBjb250cm9sCj4g PiA+IHZhcmlhYmxlCj4gPiA+IHRvIHJlZmxlY3QgdGhlIGRldmljZSBwb3dlciBzdGF0ZSAoc2V0 L2NsZWFyIG9uIHRoZSBidWZmZXIKPiA+ID4gY2FsbGJhY2tzKSBhbmQKPiA+ID4gb25seSB1c2Ug dGhlIGxvY2FsIGxvY2sgKGNvbXBsZXRlbHkgZGl0Y2hpbmcgdGhlIGNhbGwgdG8KPiA+ID4gaWlv X2RldmljZV9jbGFpbV9kaXJlY3RfbW9kZSgpKS4uLiAgCj4gPiAKPiA+IEkgdGVuZCB0byBwcmVm ZXIgdGhpcyBvcHRpb24gdGhhbiB0aGUgb25lIGJlbG93Lgo+ID4gCj4gPiBJIGd1ZXNzIHlvdXIg aW1wbGVtZW50YXRpb24gYWxyZWFkeSBwcmV2ZW50cyBidWZmZXJfcHJlZGlzYWJsZSgpIHRvCj4g PiBydW4KPiA+IHRoYW5rcyB0byB0aGUgbG9jYWwgbG9jayBiZWluZyBoZWxkIGR1cmluZyB0aGUg b3BlcmF0aW9uLiBNYXliZSB3ZQo+ID4gc2hvdWxkIGp1c3QgdmVyaWZ5IHRoYXQgYnVmZmVycyBh cmUgZW5hYmxlZCBmcm9tIHdpdGhpbiB0aGUgbG9jYWwKPiA+IGxvY2sKPiA+IGJlaW5nIGhlbGQg aW5zdGVhZCBvZiBqdXN0IGFjcXVpcmluZyBpdCBmb3IgdGhlIGdldF90ZW1wKCkgbWVhc3VyZS4K PiA+IEl0Cj4gPiB3b3VsZCBwcm9iYWJseSBzb2x2ZSB0aGUgc2l0dWF0aW9uIGhlcmUuICAKPiA+ ID4gICAKPiBOb3Qgc3VyZSBpZiBJIHVuZGVyc3Rvb2QuLi4gWW91IG1lYW4gc29tZXRoaW5nIGxp a2U6Cj4gCj4gbXV0ZXhfbG9jaygmZGF0YS0+bG9jayk7Cj4gaWYgKCFpaW9fYnVmZmVyX2VuYWJs ZWQoaW5kaW9fZGV2KSkgewo+IAlyZXQgPSAtRUlOVkFMOwo+IH0gZWxzZSB7Cj4gIAlyZXQgPSBt YXgzMDEwMF9nZXRfdGVtcChkYXRhLCB2YWwpOwo+ICAJaWYgKCFyZXQpCj4gIAkJcmV0ID0gSUlP X1ZBTF9JTlQ7Cj4gCj4gfQo+IG11dGV4X3VubG9jaygmZGF0YS0+bG9jayk7Cj4gCj4gSWYgc28s IEkgdGhpbmsgdGhpcyBpcyBzdGlsbCByYWN5IHNpbmNlIHdlIHJlbGVhc2UgdGhlIGxvY2sgYWZ0 ZXIgdGhlCj4gcHJlZGlzYWJsZSB3aGljaCBtZWFucyB3ZSBjb3VsZCBzdGlsbCBkZXRlY3QgdGhl IGJ1ZmZlcnMgYXMgZW5hYmxlZCAoaW4KPiB0aGUgYWJvdmUgYmxvY2spIGFuZCB0cnkgdG8gZ2V0 X3RlbXAgb24gYSBwb3dlcmVkIGRvd24gZGV2aWNlLgoKVHJ1ZS4KCj4gCj4gU2luY2Ugd2UgcHJl dHR5IG11Y2ggb25seSBjYXJlIGFib3V0IHRoZSBwb3dlciBzdGF0ZSBvZiB0aGUgZGV2aWNlIChh bmQKPiB3ZSBhcmUgdXNpbmcgdGhlIGJ1ZmZlcmluZyBzdGF0ZSB0byBpbmZlciB0aGF0IEFGQUlV KSwgSSB3YXMgdGhpbmtpbmcKPiBpbiBzb21ldGhpbmcgbGlrZToKPiAKPiAKPiBtdXRleF9sb2Nr KCZkYXRhLT5sb2NrKTsKPiBpZiAoIWRhdGEtPnBvd2VyZWQpIHsKPiAJcmV0ID0gLUVJTlZBTDsK PiB9IGVsc2Ugewo+ICAJcmV0ID0gbWF4MzAxMDBfZ2V0X3RlbXAoZGF0YSwgdmFsKTsKPiAgCWlm ICghcmV0KQo+ICAJCXJldCA9IElJT19WQUxfSU5UOwo+IAo+IH0KPiBtdXRleF91bmxvY2soJmRh dGEtPmxvY2spOwoKTEdUTS4KCj4gCj4gVGhlbiwgaW4gdGhlIHByZWRpc2FibGUsIHNvbWV0aGlu ZyBsaWtlIEkgaGF2ZSBidXQgc2V0dGluZyB0aGUgZmxhZyB0bwo+IGZhbHNlIGFuZCB0aGUgb3Bw b3NpdGUgb24gdGhlIHBvc3RlbmFibGUuLi4gTmF0dXJhbGx5IHdlIGNvdWxkIGFsc28KPiBqdXN0 IHJlYWQgdGhlIHJlZ2lzdGVycyAoYW5kIEkgYWN0dWFsbHkgdGVuZCB0byBwcmVmZXIgaXQpIGlu c3RlYWQgb2YgYQo+IG5ldyBmbGFnIGJ1dCBJIGd1ZXNzIHRoZSBmbGFnIGlzIGVub3VnaCBpbiB0 aGlzIGNhc2UuCj4gCj4gLSBOdW5vIFPDoQo+ID4gICAKCgpUaGFua3MsCk1pcXXDqGwKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFtbG9naWMg bWFpbGluZyBsaXN0CmxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFtbG9naWMK 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 DBAEBECAAD8 for ; Tue, 20 Sep 2022 15:10:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231210AbiITPKw (ORCPT ); Tue, 20 Sep 2022 11:10:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51534 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230311AbiITPKp (ORCPT ); Tue, 20 Sep 2022 11:10:45 -0400 Received: from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net [217.70.183.197]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D0A19186D4 for ; Tue, 20 Sep 2022 08:10:41 -0700 (PDT) Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id 4C0F81C0004; Tue, 20 Sep 2022 15:10:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1663686638; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tOqBykGBFYJIHHvRgkqTuLiQ4sD7WwoKzWHdaAuZ1+M=; b=E++/PDCfyDGUowiCBh7o4nnrWVpcvc/jJgWymxvJL16Py24h5R9hdfksJnYwH0kE8whIaN 9rXHPtJmOiRpG9pq8vsPz1JV6C72bNqos2nx63tKxozHkqtvPSuEHlFRsv2qgUf+9fQrEH wpP93lQPAlQpeygNV6ZlNW3dvro9qHZFQS5j/MFjHoBr9N+EKtgWAYOOje0V0/sA5ECTeY RAU249VGB4jtqpUxGG/7RV1yhT2RONEP86Nsbjx7uJMgzuqGDnzRGJML1wdn7NW77q5cta xMULWJgSarLnL6NhY03Zkz9boie/Of00eiTMa6/kI86r9DrcAyK2/iAUN6ubgg== Date: Tue, 20 Sep 2022 17:10:33 +0200 From: Miquel Raynal To: Nuno =?UTF-8?B?U8Oh?= Cc: "Sa, Nuno" , "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 Message-ID: <20220920171033.2f9d6d1f@xps-13> In-Reply-To: <1684ca38960d035a0fedd077ed149f524c58f7ff.camel@gmail.com> 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> <1684ca38960d035a0fedd077ed149f524c58f7ff.camel@gmail.com> Organization: Bootlin X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org Hi Nuno, noname.nuno@gmail.com wrote on Tue, 20 Sep 2022 16:56:01 +0200: > 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 =20 > > > > 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 > > > > >=20 > > > > > Hi Miquel, > > > > >=20 > > > > > Thanks for reviewing... > > > > > =C2=A0 =20 > > > > > > nuno.sa@analog.com=C2=A0wrote on Tue, 20 Sep 2022 13:28:19 +020= 0: > > > > > > =C2=A0 =20 > > > > > > > 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 max301= 00_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 th= e comment in the read_raw() > > > > > > > function, temperature > > > > > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * can only be acq= uired 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= sure 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->= lock); > > > > > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0ret =3D max30100_s= et_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_se= t_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 acqu= ired > > > > > > > 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 > > > > >=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 > >=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 > > > =20 > Not sure if I understood... You mean something like: >=20 > 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; >=20 > } > mutex_unlock(&data->lock); >=20 > 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. True. >=20 > 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: >=20 >=20 > 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; >=20 > } > mutex_unlock(&data->lock); LGTM. >=20 > 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. >=20 > - Nuno S=C3=A1 > > =20 Thanks, Miqu=C3=A8l 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 6E225C54EE9 for ; Tue, 20 Sep 2022 15:11:22 +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:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=+MAJXApZ076o7jwcP/iBuiUsNYmDbM/ZNPqDGuRnRvY=; b=3bx5eSJrpeb+zx oYiXsYWx4d5xtouXHbh6GncVBaHoBaG+6N6v+JmdhxSTYKJqdZxROuFfOCnouCkodO2qgPEXRQ1L8 L0Gtkxh2ia6StaJ1oS45CzSKSZ4BsaYkEk/XDQas0Pny4cHiNK7O1QRVp8eHmka8d9itRsBHd/dGa YCfFsI2rgpFl3BWUPf2e6UjTeRL/YZRv6s3hdUvQLG0xGRDRkKCC/+8KyhS5sXankjFEsqyR+phQg MYeWb4jC6A/0O2E64KLVvh4qaGscSaLEVxfBL0zOTS0CnyvIy7ATqiQg45DOWDmsznUdgqnHs91dm qDwXv2F4111PcatGSP3w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oaetw-004k75-3e; Tue, 20 Sep 2022 15:11:08 +0000 Received: from relay5-d.mail.gandi.net ([217.70.183.197]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oaeta-004juL-CU; Tue, 20 Sep 2022 15:10:49 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id 4C0F81C0004; Tue, 20 Sep 2022 15:10:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1663686638; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tOqBykGBFYJIHHvRgkqTuLiQ4sD7WwoKzWHdaAuZ1+M=; b=E++/PDCfyDGUowiCBh7o4nnrWVpcvc/jJgWymxvJL16Py24h5R9hdfksJnYwH0kE8whIaN 9rXHPtJmOiRpG9pq8vsPz1JV6C72bNqos2nx63tKxozHkqtvPSuEHlFRsv2qgUf+9fQrEH wpP93lQPAlQpeygNV6ZlNW3dvro9qHZFQS5j/MFjHoBr9N+EKtgWAYOOje0V0/sA5ECTeY RAU249VGB4jtqpUxGG/7RV1yhT2RONEP86Nsbjx7uJMgzuqGDnzRGJML1wdn7NW77q5cta xMULWJgSarLnL6NhY03Zkz9boie/Of00eiTMa6/kI86r9DrcAyK2/iAUN6ubgg== Date: Tue, 20 Sep 2022 17:10:33 +0200 From: Miquel Raynal To: Nuno =?UTF-8?B?U8Oh?= Cc: "Sa, Nuno" , "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 Message-ID: <20220920171033.2f9d6d1f@xps-13> In-Reply-To: <1684ca38960d035a0fedd077ed149f524c58f7ff.camel@gmail.com> 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> <1684ca38960d035a0fedd077ed149f524c58f7ff.camel@gmail.com> Organization: Bootlin X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220920_081046_794637_0A7A24AE X-CRM114-Status: GOOD ( 65.50 ) 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 SGkgTnVubywKCm5vbmFtZS5udW5vQGdtYWlsLmNvbSB3cm90ZSBvbiBUdWUsIDIwIFNlcCAyMDIy IDE2OjU2OjAxICswMjAwOgoKPiBPbiBUdWUsIDIwMjItMDktMjAgYXQgMTU6NTMgKzAyMDAsIE1p cXVlbCBSYXluYWwgd3JvdGU6Cj4gPiBIaSBOdW5vLAo+ID4gCj4gPiBOdW5vLlNhQGFuYWxvZy5j b23CoHdyb3RlIG9uIFR1ZSwgMjAgU2VwIDIwMjIgMTM6MTU6MzIgKzAwMDA6Cj4gPiAgIAo+ID4g PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiA+ID4gRnJvbTogTWlxdWVsIFJheW5h bCA8bWlxdWVsLnJheW5hbEBib290bGluLmNvbT4KPiA+ID4gPiBTZW50OiBUdWVzZGF5LCBTZXB0 ZW1iZXIgMjAsIDIwMjIgMjo1NiBQTQo+ID4gPiA+IFRvOiBTYSwgTnVubyA8TnVuby5TYUBhbmFs b2cuY29tPgo+ID4gPiA+IENjOiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7 Cj4gPiA+ID4gbGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZzsKPiA+ID4gPiBsaW51 eC1hbWxvZ2ljQGxpc3RzLmluZnJhZGVhZC5vcmc7IGxpbnV4LWlteEBueHAuY29tOyBsaW51eC0K PiA+ID4gPiBpaW9Admdlci5rZXJuZWwub3JnOyBDaHVueWFuIFpoYW5nIDx6aGFuZy5seXJhQGdt YWlsLmNvbT47Cj4gPiA+ID4gSGVubmVyaWNoLAo+ID4gPiA+IE1pY2hhZWwgPE1pY2hhZWwuSGVu bmVyaWNoQGFuYWxvZy5jb20+OyBNYXJ0aW4gQmx1bWVuc3RpbmdsCj4gPiA+ID4gPG1hcnRpbi5i bHVtZW5zdGluZ2xAZ29vZ2xlbWFpbC5jb20+OyBTYXNjaGEgSGF1ZXIKPiA+ID4gPiA8cy5oYXVl ckBwZW5ndXRyb25peC5kZT47IENpeGkgR2VuZyA8Y2l4aS5nZW5nMUB1bmlzb2MuY29tPjsKPiA+ ID4gPiBLZXZpbgo+ID4gPiA+IEhpbG1hbiA8a2hpbG1hbkBiYXlsaWJyZS5jb20+OyBWbGFkaW1p ciBaYXBvbHNraXkgPHZ6QG1sZWlhLmNvbT47Cj4gPiA+ID4gUGVuZ3V0cm9uaXggS2VybmVsIFRl YW0gPGtlcm5lbEBwZW5ndXRyb25peC5kZT47IEFsZXhhbmRydQo+ID4gPiA+IEFyZGVsZWFuCj4g PiA+ID4gPGFhcmRlbGVhbkBkZXZpcW9uLmNvbT47IEZhYmlvIEVzdGV2YW0gPGZlc3RldmFtQGdt YWlsLmNvbT47Cj4gPiA+ID4gQW5kcml5Cj4gPiA+ID4gVHJ5c2huaXZza3l5IDxhbmRyaXkudHJ5 c2huaXZza3l5QG9wZW5zeW5lcmd5LmNvbT47IEhhaWJvIENoZW4KPiA+ID4gPiA8aGFpYm8uY2hl bkBueHAuY29tPjsgU2hhd24gR3VvIDxzaGF3bmd1b0BrZXJuZWwub3JnPjsgSGFucyBkZQo+ID4g PiA+IEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPjsgSmVyb21lIEJydW5ldAo+ID4gPiA+IDxq YnJ1bmV0QGJheWxpYnJlLmNvbT47Cj4gPiA+ID4gSGVpa28gU3R1ZWJuZXIgPGhlaWtvQHNudGVj aC5kZT47IEZsb3JpYW4gQm9vcgo+ID4gPiA+IDxmbG9yaWFuLmJvb3JAa2VybmVsY29uY2VwdHMu ZGU+OyBSZWd1cywgQ2lwcmlhbgo+ID4gPiA+IDxDaXByaWFuLlJlZ3VzQGFuYWxvZy5jb20+OyBM YXJzLVBldGVyIENsYXVzZW4gPGxhcnNAbWV0YWZvby5kZT47Cj4gPiA+ID4gQW5keQo+ID4gPiA+ IFNoZXZjaGVua28gPGFuZHkuc2hldmNoZW5rb0BnbWFpbC5jb20+OyBKb25hdGhhbiBDYW1lcm9u Cj4gPiA+ID4gPGppYzIzQGtlcm5lbC5vcmc+OyBOZWlsIEFybXN0cm9uZyA8bmFybXN0cm9uZ0Bi YXlsaWJyZS5jb20+Owo+ID4gPiA+IEJhb2xpbgo+ID4gPiA+IFdhbmcgPGJhb2xpbi53YW5nQGxp bnV4LmFsaWJhYmEuY29tPjsgSnlvdGkgQmhheWFuYQo+ID4gPiA+IDxqYmhheWFuYUBnb29nbGUu Y29tPjsgQ2hlbi1ZdSBUc2FpIDx3ZW5zQGNzaWUub3JnPjsgT3Jzb24gWmhhaQo+ID4gPiA+IDxv cnNvbnpoYWlAZ21haWwuY29tPgo+ID4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMTMvMTVdIGlp bzogaGVhbHRoOiBtYXgzMDEwMDogZG8gbm90IHVzZQo+ID4gPiA+IGludGVybmFsIGlpb19kZXYK PiA+ID4gPiBsb2NrCj4gPiA+ID4gCj4gPiA+ID4gW0V4dGVybmFsXQo+ID4gPiA+IAo+ID4gPiA+ IEhpIE51bm8sCj4gPiA+ID4gCj4gPiA+ID4gTnVuby5TYUBhbmFsb2cuY29twqB3cm90ZSBvbiBU dWUsIDIwIFNlcCAyMDIyIDEyOjQ0OjA4ICswMDAwOgo+ID4gPiA+IMKgICAgCj4gPiA+ID4gPiA+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiA+ID4gPiA+IEZyb206IE1pcXVlbCBSYXlu YWwgPG1pcXVlbC5yYXluYWxAYm9vdGxpbi5jb20+Cj4gPiA+ID4gPiA+IFNlbnQ6IFR1ZXNkYXks IFNlcHRlbWJlciAyMCwgMjAyMiAyOjIzIFBNCj4gPiA+ID4gPiA+IFRvOiBTYSwgTnVubyA8TnVu by5TYUBhbmFsb2cuY29tPgo+ID4gPiA+ID4gPiBDYzogbGludXgtYXJtLWtlcm5lbEBsaXN0cy5p bmZyYWRlYWQub3JnOyBsaW51eC3CoCAgIAo+ID4gPiA+IHJvY2tjaGlwQGxpc3RzLmluZnJhZGVh ZC5vcmc7wqAgICAKPiA+ID4gPiA+ID4gbGludXgtYW1sb2dpY0BsaXN0cy5pbmZyYWRlYWQub3Jn OyBsaW51eC1pbXhAbnhwLmNvbTsgbGludXgtCj4gPiA+ID4gPiA+IGlpb0B2Z2VyLmtlcm5lbC5v cmc7IENodW55YW4gWmhhbmcgPHpoYW5nLmx5cmFAZ21haWwuY29tPjvCoCAgIAo+ID4gPiA+IEhl bm5lcmljaCzCoCAgIAo+ID4gPiA+ID4gPiBNaWNoYWVsIDxNaWNoYWVsLkhlbm5lcmljaEBhbmFs b2cuY29tPjsgTWFydGluIEJsdW1lbnN0aW5nbAo+ID4gPiA+ID4gPiA8bWFydGluLmJsdW1lbnN0 aW5nbEBnb29nbGVtYWlsLmNvbT47IFNhc2NoYSBIYXVlcgo+ID4gPiA+ID4gPiA8cy5oYXVlckBw ZW5ndXRyb25peC5kZT47IENpeGkgR2VuZyA8Y2l4aS5nZW5nMUB1bmlzb2MuY29tPjsKPiA+ID4g PiA+ID4gS2V2aW4KPiA+ID4gPiA+ID4gSGlsbWFuIDxraGlsbWFuQGJheWxpYnJlLmNvbT47IFZs YWRpbWlyIFphcG9sc2tpeQo+ID4gPiA+ID4gPiA8dnpAbWxlaWEuY29tPjsKPiA+ID4gPiA+ID4g UGVuZ3V0cm9uaXggS2VybmVsIFRlYW0gPGtlcm5lbEBwZW5ndXRyb25peC5kZT47IEFsZXhhbmRy dcKgICAgCj4gPiA+ID4gQXJkZWxlYW7CoCAgIAo+ID4gPiA+ID4gPiA8YWFyZGVsZWFuQGRldmlx b24uY29tPjsgRmFiaW8gRXN0ZXZhbSA8ZmVzdGV2YW1AZ21haWwuY29tPjvCoCAgCj4gPiA+ID4g QW5kcml5wqAgICAKPiA+ID4gPiA+ID4gVHJ5c2huaXZza3l5IDxhbmRyaXkudHJ5c2huaXZza3l5 QG9wZW5zeW5lcmd5LmNvbT47IEhhaWJvCj4gPiA+ID4gPiA+IENoZW4KPiA+ID4gPiA+ID4gPGhh aWJvLmNoZW5AbnhwLmNvbT47IFNoYXduIEd1byA8c2hhd25ndW9Aa2VybmVsLm9yZz47IEhhbnMK PiA+ID4gPiA+ID4gZGUKPiA+ID4gPiA+ID4gR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+OyBK ZXJvbWUgQnJ1bmV0wqAgICAKPiA+ID4gPiA8amJydW5ldEBiYXlsaWJyZS5jb20+O8KgICAgCj4g PiA+ID4gPiA+IEhlaWtvIFN0dWVibmVyIDxoZWlrb0BzbnRlY2guZGU+OyBGbG9yaWFuIEJvb3IK PiA+ID4gPiA+ID4gPGZsb3JpYW4uYm9vckBrZXJuZWxjb25jZXB0cy5kZT47IFJlZ3VzLCBDaXBy aWFuCj4gPiA+ID4gPiA+IDxDaXByaWFuLlJlZ3VzQGFuYWxvZy5jb20+OyBMYXJzLVBldGVyIENs YXVzZW4KPiA+ID4gPiA+ID4gPGxhcnNAbWV0YWZvby5kZT47wqAgICAKPiA+ID4gPiBBbmR5wqAg ICAKPiA+ID4gPiA+ID4gU2hldmNoZW5rbyA8YW5keS5zaGV2Y2hlbmtvQGdtYWlsLmNvbT47IEpv bmF0aGFuIENhbWVyb24KPiA+ID4gPiA+ID4gPGppYzIzQGtlcm5lbC5vcmc+OyBOZWlsIEFybXN0 cm9uZyA8bmFybXN0cm9uZ0BiYXlsaWJyZS5jb20+Owo+ID4gPiA+ID4gPiBCYW9saW4KPiA+ID4g PiA+ID4gV2FuZyA8YmFvbGluLndhbmdAbGludXguYWxpYmFiYS5jb20+OyBKeW90aSBCaGF5YW5h Cj4gPiA+ID4gPiA+IDxqYmhheWFuYUBnb29nbGUuY29tPjsgQ2hlbi1ZdSBUc2FpIDx3ZW5zQGNz aWUub3JnPjsgT3Jzb24KPiA+ID4gPiA+ID4gWmhhaQo+ID4gPiA+ID4gPiA8b3Jzb256aGFpQGdt YWlsLmNvbT4KPiA+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCAxMy8xNV0gaWlvOiBoZWFs dGg6IG1heDMwMTAwOiBkbyBub3QgdXNlCj4gPiA+ID4gPiA+IGludGVybmFswqAgICAKPiA+ID4g PiBpaW9fZGV2wqAgICAKPiA+ID4gPiA+ID4gbG9jawo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4g W0V4dGVybmFsXQo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gSGkgTnVubywKPiA+ID4gPiA+ID4g wqAgIAo+ID4gPiA+ID4gCj4gPiA+ID4gPiBIaSBNaXF1ZWwsCj4gPiA+ID4gPiAKPiA+ID4gPiA+ IFRoYW5rcyBmb3IgcmV2aWV3aW5nLi4uCj4gPiA+ID4gPiDCoCAgCj4gPiA+ID4gPiA+IG51bm8u c2FAYW5hbG9nLmNvbcKgd3JvdGUgb24gVHVlLCAyMCBTZXAgMjAyMiAxMzoyODoxOSArMDIwMDoK PiA+ID4gPiA+ID4gwqAgIAo+ID4gPiA+ID4gPiA+IFRoZSBwYXR0ZXJuIHVzZWQgaW4gdGhpcyBk ZXZpY2UgZG9lcyBub3QgcXVpdGUgZml0IGluIHRoZQo+ID4gPiA+ID4gPiA+IGlpb19kZXZpY2Vf Y2xhaW1fZGlyZWN0X21vZGUoKSB0eXBpY2FsIHVzYWdlLiBJbiB0aGlzIGNhc2UsCj4gPiA+ID4g PiA+ID4gaWlvX2J1ZmZlcl9lbmFibGVkKCkgd2FzIGJlaW5nIHVzZWQgbm90IHRvIHByZXZlbnQg dGhlIHJhdwo+ID4gPiA+ID4gPiA+IGFjY2VzcyBidXTCoCAgIAo+ID4gPiA+IHRvwqAgICAKPiA+ ID4gPiA+ID4gPiBhbGxvdyBpdC4gSGVuY2UgdG8gZ2V0IHJpZCBvZiB0aGUgJ21sb2NrJyB3ZSBu ZWVkIHRvOgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IDEuIFVzZSBpaW9fZGV2aWNlX2Ns YWltX2RpcmVjdF9tb2RlKCkgdG8gY2hlY2sgaWYgZGlyZWN0Cj4gPiA+ID4gPiA+ID4gbW9kZSBj YW4gYmUKPiA+ID4gPiA+ID4gPiBjbGFpbWVkIGFuZCBpZiB3ZSBjYW4gcmV0dXJuIC1FSU5WQUwg KGFzIHRoZSBvcmlnaW5hbAo+ID4gPiA+ID4gPiA+IGNvZGUpOwo+ID4gPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiA+IDIuIE1ha2Ugc3VyZSB0aGF0IGJ1ZmZlcmluZyBpcyBub3QgZGlzYWJsZWQgd2hp bGUgZG9pbmcgYQo+ID4gPiA+ID4gPiA+IHJhdyByZWFkLiBGb3IKPiA+ID4gPiA+ID4gPiB0aGF0 LCB3ZSBjYW4gbWFrZSB1c2Ugb2YgdGhlIGxvY2FsIGxvY2sgdGhhdCBhbHJlYWR5Cj4gPiA+ID4g PiA+ID4gZXhpc3RzLgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IFdoaWxlIGF0IGl0LCBm aXhlZCBhIG1pbm9yIGNvZGluZyBzdHlsZSBjb21wbGFpbi4uLgo+ID4gPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IE51bm8gU8OhIDxudW5vLnNhQGFuYWxvZy5jb20+Cj4g PiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ID4gwqBkcml2ZXJzL2lpby9oZWFsdGgvbWF4MzAx MDAuYyB8IDI0ICsrKysrKysrKysrKysrKysrLS0tLS0tCj4gPiA+ID4gPiA+ID4gLQo+ID4gPiA+ ID4gPiA+IMKgMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0p Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2hl YWx0aC9tYXgzMDEwMC5jwqAgICAKPiA+ID4gPiBiL2RyaXZlcnMvaWlvL2hlYWx0aC9tYXgzMDEw MC5jwqAgICAKPiA+ID4gPiA+ID4gPiBpbmRleCBhZDU3MTc5NjUyMjMuLmFhNDk0Y2FkNWRmMCAx MDA2NDQKPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2lpby9oZWFsdGgvbWF4MzAxMDAuYwo+ ID4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvaWlvL2hlYWx0aC9tYXgzMDEwMC5jCj4gPiA+ID4g PiA+ID4gQEAgLTE4NSw4ICsxODUsMTkgQEAgc3RhdGljIGludAo+ID4gPiA+ID4gPiA+IG1heDMw MTAwX2J1ZmZlcl9wb3N0ZW5hYmxlKHN0cnVjdMKgICAgCj4gPiA+ID4gPiA+IGlpb19kZXYgKmlu ZGlvX2RldinCoCAgIAo+ID4gPiA+ID4gPiA+IMKgc3RhdGljIGludCBtYXgzMDEwMF9idWZmZXJf cHJlZGlzYWJsZShzdHJ1Y3QgaWlvX2Rldgo+ID4gPiA+ID4gPiA+ICppbmRpb19kZXYpCj4gPiA+ ID4gPiA+ID4gwqB7Cj4gPiA+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBtYXgzMDEw MF9kYXRhICpkYXRhID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKPiA+ID4gPiA+ID4gPiArwqDCoMKg wqDCoMKgwqBpbnQgcmV0Owo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDC oMKgwqAvKgo+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCAqIEFzIHN0YXRlZCBpbiB0aGUg Y29tbWVudCBpbiB0aGUgcmVhZF9yYXcoKQo+ID4gPiA+ID4gPiA+IGZ1bmN0aW9uLCB0ZW1wZXJh dHVyZQo+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCAqIGNhbiBvbmx5IGJlIGFjcXVpcmVk IGlmIHRoZSBlbmdpbmUgaXMgcnVubmluZy4KPiA+ID4gPiA+ID4gPiBBcyBzdWNoIHRoZSBtdXRl eAo+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCAqIGlzIHVzZWQgdG8gbWFrZSBzdXJlIHdl IGRvIG5vdCBwb3dlciBkb3duIHdoaWxlCj4gPiA+ID4gPiA+ID4gZG9pbmcgYcKgICAgCj4gPiA+ ID4gPiA+IHRlbXBlcmF0dXJlwqAgICAKPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgKiBy ZWFkaW5nLgo+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCAqLwo+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoG11dGV4X2xvY2soJmRhdGEtPmxvY2spOwo+ID4gPiA+ID4gPiA+ICvCoMKg wqDCoMKgwqDCoHJldCA9IG1heDMwMTAwX3NldF9wb3dlcm1vZGUoZGF0YSwgZmFsc2UpOwo+ID4g PiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoG11dGV4X3VubG9jaygmZGF0YS0+bG9jayk7Cj4gPiA+ ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIG1heDMwMTAwX3Nl dF9wb3dlcm1vZGUoZGF0YSwgZmFsc2UpOwo+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHJl dHVybiByZXQ7Cj4gPiA+ID4gPiA+ID4gwqB9Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4g wqBzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19idWZmZXJfc2V0dXBfb3BzCj4gPiA+ID4gPiA+ID4g bWF4MzAxMDBfYnVmZmVyX3NldHVwX29wc8KgICAgCj4gPiA+ID4gPSB7wqAgICAKPiA+ID4gPiA+ ID4gPiBAQCAtMzg3LDE4ICszOTgsMTcgQEAgc3RhdGljIGludCBtYXgzMDEwMF9yZWFkX3Jhdyhz dHJ1Y3QKPiA+ID4gPiA+ID4gPiBpaW9fZGV2wqAgICAKPiA+ID4gPiA+ID4gKmluZGlvX2RldizC oCAgIAo+ID4gPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogVGVt cGVyYXR1cmUgcmVhZGluZyBjYW4gb25seSBiZSBhY3F1aXJlZAo+ID4gPiA+ID4gPiA+IHdoaWxl IGVuZ2luZQo+ID4gPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICog aXMgcnVubmluZwo+ID4gPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICovCj4gPiA+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG11dGV4X2xv Y2soJmluZGlvX2Rldi0+bWxvY2spOwo+ID4gPiA+ID4gPiA+IC0KPiA+ID4gPiA+ID4gPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFpaW9fYnVmZmVyX2VuYWJsZWQoaW5kaW9f ZGV2KSkKPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYKPiA+ ID4gPiA+ID4gPiAoIWlpb19kZXZpY2VfY2xhaW1fZGlyZWN0X21vZGUoaW5kaW9fZGV2KSkge8Kg ICAgCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBJIHdvbmRlciBpZiB0aGlzIGxpbmUgY2hhbmdl IGhlcmUgaXMgcmVhbGx5IG5lZWRlZC4gSSBhZ3JlZQo+ID4gPiA+ID4gPiB0aGUgd2hvbGUKPiA+ ID4gPiA+ID4gY29uc3RydWN0aW9uIGxvb2tzIGxpa2Ugd2hhdCBpaW9fZGV2aWNlX2NsYWltX2Rp cmVjdF9tb2RlKCkKPiA+ID4gPiA+ID4gZG9lcyBidXQgaW4KPiA+ID4gPiA+ID4gcHJhY3RpY2Ug SSBkb24ndCBzZWUgdGhlIHBvaW50IG9mIGFjcXVpcmluZyBhbnkgbG9jayBoZXJlIGlmCj4gPiA+ ID4gPiA+IHdlIGp1c3QKPiA+ID4gPiA+ID4gcmVsZWFzZSBpdCBubyBtYXR0ZXIgd2hhdCBoYXBw ZW5zIHJpZ2h0IGFmdGVyLgo+ID4gPiA+ID4gPiDCoCAgCj4gPiA+ID4gPiAKPiA+ID4gPiA+IEkg Y2FuIHNlZSB0aGF0IHRoaXMgaXMgb2RkIChhdCB0aGUgdmVyeSBsZWFzdCkgYnV0IEFGQUlLLCB0 aGlzCj4gPiA+ID4gPiBpcyB0aGUgb25seSB3YXkKPiA+ID4gPiA+IHRvIHNhZmVseSBpbmZlciBp ZiBidWZmZXJpbmcgaXMgZW5hYmxlZCBvciBub3QuCj4gPiA+ID4gPiBpaW9fYnVmZmVyX2VuYWJs ZWQoKSBoYXMgbm8KPiA+ID4gPiA+IHByb3RlY3Rpb24gYWdhaW5zdCBzb21lb25lIGNvbmN1cnJl bnRseSBlbmFibGluZy9kaXNhYmxpbmcgdGhlCj4gPiA+ID4gPiBidWZmZXIuwqAgICAKPiA+ID4g PiAKPiA+ID4gPiBZZXMsIGJ1dCB0aGlzIGlzIG9ubHkgcmVsZXZhbnQgaWYgeW91IHdhbnQgdG8g aW5mZXIgdGhhdCB0aGUKPiA+ID4gPiAiYnVmZmVycwo+ID4gPiA+IGFyZSBlbmFibGVkIiBhbmQg YmUgc3VyZSB0aGF0IGl0IGNhbm5vdCBiZSBvdGhlcndpc2UgZHVyaW5nIHRoZQo+ID4gPiA+IG5l eHQKPiA+ID4gPiBsaW5lcyB1bnRpbCB5b3UgcmVsZWFzZSB0aGUgbG9jay4gQWNxdWlyaW5nIGEg bG9jaywgZG9pbmcgdGhlIGlmCj4gPiA+ID4gYW5kCj4gPiA+ID4gdGhlbiB1bmNvbmRpdGlvbmFs bHkgcmVsZWFzaW5nIHRoZSBsb2NrLCBJTUhPLCBkb2VzIG5vdCBtYWtlIGFueQo+ID4gPiA+IHNl bnNlCj4gPiA+ID4gKGJ1dCBJJ20gbm90IGEgbG9ja2luZyBndXJ1KSBiZWNhdXNlIHdoZW4geW91 IGVudGVyIHRoZSBlbHNlCj4gPiA+ID4gY2xhdXNlLAo+ID4gPiA+IHlvdSBhcmUgbm90IHByb3Rl Y3RlZCBhbnl3YXksIHNvIGluIGJvdGggY2FzZXMgYWxsIHRoaXMgaXMKPiA+ID4gPiBjb21wbGV0 ZWx5Cj4gPiA+ID4gcmFjeS4KPiA+ID4gPiDCoCAgIAo+ID4gPiAKPiA+ID4gQWhoIGNyYXAsIHll cyB5b3UgYXJlIHJpZ2h0Li4uIEl0IGlzIHN0aWxsIHJhY3kgc2luY2Ugd2UgY2FuIHN0aWxsCj4g PiA+IHRyeSB0byByZWFkCj4gPiA+IHRoZSB0ZW1wZXJhdHVyZSB3aXRoIHRoZSBkZXZpY2UgcG93 ZXJlZCBvZmYuIEknbSBub3QgcmVhbGx5IHN1cmUKPiA+ID4gaG93IHRvCj4gPiA+IGFkZHJlc3Mg dGhpcy4gT25lIHdheSBjb3VsZCBiZSB0byBqdXN0IHVzZSBhbiBpbnRlcm5hbCBjb250cm9sCj4g PiA+IHZhcmlhYmxlCj4gPiA+IHRvIHJlZmxlY3QgdGhlIGRldmljZSBwb3dlciBzdGF0ZSAoc2V0 L2NsZWFyIG9uIHRoZSBidWZmZXIKPiA+ID4gY2FsbGJhY2tzKSBhbmQKPiA+ID4gb25seSB1c2Ug dGhlIGxvY2FsIGxvY2sgKGNvbXBsZXRlbHkgZGl0Y2hpbmcgdGhlIGNhbGwgdG8KPiA+ID4gaWlv X2RldmljZV9jbGFpbV9kaXJlY3RfbW9kZSgpKS4uLiAgCj4gPiAKPiA+IEkgdGVuZCB0byBwcmVm ZXIgdGhpcyBvcHRpb24gdGhhbiB0aGUgb25lIGJlbG93Lgo+ID4gCj4gPiBJIGd1ZXNzIHlvdXIg aW1wbGVtZW50YXRpb24gYWxyZWFkeSBwcmV2ZW50cyBidWZmZXJfcHJlZGlzYWJsZSgpIHRvCj4g PiBydW4KPiA+IHRoYW5rcyB0byB0aGUgbG9jYWwgbG9jayBiZWluZyBoZWxkIGR1cmluZyB0aGUg b3BlcmF0aW9uLiBNYXliZSB3ZQo+ID4gc2hvdWxkIGp1c3QgdmVyaWZ5IHRoYXQgYnVmZmVycyBh cmUgZW5hYmxlZCBmcm9tIHdpdGhpbiB0aGUgbG9jYWwKPiA+IGxvY2sKPiA+IGJlaW5nIGhlbGQg aW5zdGVhZCBvZiBqdXN0IGFjcXVpcmluZyBpdCBmb3IgdGhlIGdldF90ZW1wKCkgbWVhc3VyZS4K PiA+IEl0Cj4gPiB3b3VsZCBwcm9iYWJseSBzb2x2ZSB0aGUgc2l0dWF0aW9uIGhlcmUuICAKPiA+ ID4gICAKPiBOb3Qgc3VyZSBpZiBJIHVuZGVyc3Rvb2QuLi4gWW91IG1lYW4gc29tZXRoaW5nIGxp a2U6Cj4gCj4gbXV0ZXhfbG9jaygmZGF0YS0+bG9jayk7Cj4gaWYgKCFpaW9fYnVmZmVyX2VuYWJs ZWQoaW5kaW9fZGV2KSkgewo+IAlyZXQgPSAtRUlOVkFMOwo+IH0gZWxzZSB7Cj4gIAlyZXQgPSBt YXgzMDEwMF9nZXRfdGVtcChkYXRhLCB2YWwpOwo+ICAJaWYgKCFyZXQpCj4gIAkJcmV0ID0gSUlP X1ZBTF9JTlQ7Cj4gCj4gfQo+IG11dGV4X3VubG9jaygmZGF0YS0+bG9jayk7Cj4gCj4gSWYgc28s IEkgdGhpbmsgdGhpcyBpcyBzdGlsbCByYWN5IHNpbmNlIHdlIHJlbGVhc2UgdGhlIGxvY2sgYWZ0 ZXIgdGhlCj4gcHJlZGlzYWJsZSB3aGljaCBtZWFucyB3ZSBjb3VsZCBzdGlsbCBkZXRlY3QgdGhl IGJ1ZmZlcnMgYXMgZW5hYmxlZCAoaW4KPiB0aGUgYWJvdmUgYmxvY2spIGFuZCB0cnkgdG8gZ2V0 X3RlbXAgb24gYSBwb3dlcmVkIGRvd24gZGV2aWNlLgoKVHJ1ZS4KCj4gCj4gU2luY2Ugd2UgcHJl dHR5IG11Y2ggb25seSBjYXJlIGFib3V0IHRoZSBwb3dlciBzdGF0ZSBvZiB0aGUgZGV2aWNlIChh bmQKPiB3ZSBhcmUgdXNpbmcgdGhlIGJ1ZmZlcmluZyBzdGF0ZSB0byBpbmZlciB0aGF0IEFGQUlV KSwgSSB3YXMgdGhpbmtpbmcKPiBpbiBzb21ldGhpbmcgbGlrZToKPiAKPiAKPiBtdXRleF9sb2Nr KCZkYXRhLT5sb2NrKTsKPiBpZiAoIWRhdGEtPnBvd2VyZWQpIHsKPiAJcmV0ID0gLUVJTlZBTDsK PiB9IGVsc2Ugewo+ICAJcmV0ID0gbWF4MzAxMDBfZ2V0X3RlbXAoZGF0YSwgdmFsKTsKPiAgCWlm ICghcmV0KQo+ICAJCXJldCA9IElJT19WQUxfSU5UOwo+IAo+IH0KPiBtdXRleF91bmxvY2soJmRh dGEtPmxvY2spOwoKTEdUTS4KCj4gCj4gVGhlbiwgaW4gdGhlIHByZWRpc2FibGUsIHNvbWV0aGlu ZyBsaWtlIEkgaGF2ZSBidXQgc2V0dGluZyB0aGUgZmxhZyB0bwo+IGZhbHNlIGFuZCB0aGUgb3Bw b3NpdGUgb24gdGhlIHBvc3RlbmFibGUuLi4gTmF0dXJhbGx5IHdlIGNvdWxkIGFsc28KPiBqdXN0 IHJlYWQgdGhlIHJlZ2lzdGVycyAoYW5kIEkgYWN0dWFsbHkgdGVuZCB0byBwcmVmZXIgaXQpIGlu c3RlYWQgb2YgYQo+IG5ldyBmbGFnIGJ1dCBJIGd1ZXNzIHRoZSBmbGFnIGlzIGVub3VnaCBpbiB0 aGlzIGNhc2UuCj4gCj4gLSBOdW5vIFPDoQo+ID4gICAKCgpUaGFua3MsCk1pcXXDqGwKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LXJvY2tjaGlw IG1haWxpbmcgbGlzdApMaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcm9ja2NoaXAK 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 24377ECAAD8 for ; Tue, 20 Sep 2022 15:12:06 +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:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=WySbCqHK9FQbzdkFm3qUII9Nl7DFBEZKLHhjlscXmJg=; b=N5qMvoGnjer/dx t+KYv1IPxR+85TrWH5l93kShzSDNt7e1XxPVv1oaIMGmWDjP39KfM8/FqdHOJSj7gvlypN80GyVQA SgKEcxhjb3j2Qzq61MuaWzRkqSUgbVZB4c+CncJRmFtDJqVqjP3HcI/Ct833f4HERgohpm3p0qgrl JHMJhMLm3u0XlSdP2qsPxZV23SDmpISro0iSRJ1AHjOw2BlO6HFa4cuXRDphFsCl7K1FA5OuS/oLg gskGuk02omB+oU5xclc3OQx4uvJXed+s186D0/08z/fH/1lep1+NFJSzXjSjFydtit/e2BOhy2scm hHyMYaf9B4A+u6QErQJQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oaeth-004jyn-Ds; Tue, 20 Sep 2022 15:10:54 +0000 Received: from relay5-d.mail.gandi.net ([217.70.183.197]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oaeta-004juL-CU; Tue, 20 Sep 2022 15:10:49 +0000 Received: (Authenticated sender: miquel.raynal@bootlin.com) by mail.gandi.net (Postfix) with ESMTPSA id 4C0F81C0004; Tue, 20 Sep 2022 15:10:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1663686638; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=tOqBykGBFYJIHHvRgkqTuLiQ4sD7WwoKzWHdaAuZ1+M=; b=E++/PDCfyDGUowiCBh7o4nnrWVpcvc/jJgWymxvJL16Py24h5R9hdfksJnYwH0kE8whIaN 9rXHPtJmOiRpG9pq8vsPz1JV6C72bNqos2nx63tKxozHkqtvPSuEHlFRsv2qgUf+9fQrEH wpP93lQPAlQpeygNV6ZlNW3dvro9qHZFQS5j/MFjHoBr9N+EKtgWAYOOje0V0/sA5ECTeY RAU249VGB4jtqpUxGG/7RV1yhT2RONEP86Nsbjx7uJMgzuqGDnzRGJML1wdn7NW77q5cta xMULWJgSarLnL6NhY03Zkz9boie/Of00eiTMa6/kI86r9DrcAyK2/iAUN6ubgg== Date: Tue, 20 Sep 2022 17:10:33 +0200 From: Miquel Raynal To: Nuno =?UTF-8?B?U8Oh?= Cc: "Sa, Nuno" , "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 Message-ID: <20220920171033.2f9d6d1f@xps-13> In-Reply-To: <1684ca38960d035a0fedd077ed149f524c58f7ff.camel@gmail.com> 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> <1684ca38960d035a0fedd077ed149f524c58f7ff.camel@gmail.com> Organization: Bootlin X-Mailer: Claws Mail 4.0.0 (GTK+ 3.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220920_081046_794637_0A7A24AE X-CRM114-Status: GOOD ( 65.50 ) 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 SGkgTnVubywKCm5vbmFtZS5udW5vQGdtYWlsLmNvbSB3cm90ZSBvbiBUdWUsIDIwIFNlcCAyMDIy IDE2OjU2OjAxICswMjAwOgoKPiBPbiBUdWUsIDIwMjItMDktMjAgYXQgMTU6NTMgKzAyMDAsIE1p cXVlbCBSYXluYWwgd3JvdGU6Cj4gPiBIaSBOdW5vLAo+ID4gCj4gPiBOdW5vLlNhQGFuYWxvZy5j b23CoHdyb3RlIG9uIFR1ZSwgMjAgU2VwIDIwMjIgMTM6MTU6MzIgKzAwMDA6Cj4gPiAgIAo+ID4g PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiA+ID4gRnJvbTogTWlxdWVsIFJheW5h bCA8bWlxdWVsLnJheW5hbEBib290bGluLmNvbT4KPiA+ID4gPiBTZW50OiBUdWVzZGF5LCBTZXB0 ZW1iZXIgMjAsIDIwMjIgMjo1NiBQTQo+ID4gPiA+IFRvOiBTYSwgTnVubyA8TnVuby5TYUBhbmFs b2cuY29tPgo+ID4gPiA+IENjOiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7 Cj4gPiA+ID4gbGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZzsKPiA+ID4gPiBsaW51 eC1hbWxvZ2ljQGxpc3RzLmluZnJhZGVhZC5vcmc7IGxpbnV4LWlteEBueHAuY29tOyBsaW51eC0K PiA+ID4gPiBpaW9Admdlci5rZXJuZWwub3JnOyBDaHVueWFuIFpoYW5nIDx6aGFuZy5seXJhQGdt YWlsLmNvbT47Cj4gPiA+ID4gSGVubmVyaWNoLAo+ID4gPiA+IE1pY2hhZWwgPE1pY2hhZWwuSGVu bmVyaWNoQGFuYWxvZy5jb20+OyBNYXJ0aW4gQmx1bWVuc3RpbmdsCj4gPiA+ID4gPG1hcnRpbi5i bHVtZW5zdGluZ2xAZ29vZ2xlbWFpbC5jb20+OyBTYXNjaGEgSGF1ZXIKPiA+ID4gPiA8cy5oYXVl ckBwZW5ndXRyb25peC5kZT47IENpeGkgR2VuZyA8Y2l4aS5nZW5nMUB1bmlzb2MuY29tPjsKPiA+ ID4gPiBLZXZpbgo+ID4gPiA+IEhpbG1hbiA8a2hpbG1hbkBiYXlsaWJyZS5jb20+OyBWbGFkaW1p ciBaYXBvbHNraXkgPHZ6QG1sZWlhLmNvbT47Cj4gPiA+ID4gUGVuZ3V0cm9uaXggS2VybmVsIFRl YW0gPGtlcm5lbEBwZW5ndXRyb25peC5kZT47IEFsZXhhbmRydQo+ID4gPiA+IEFyZGVsZWFuCj4g PiA+ID4gPGFhcmRlbGVhbkBkZXZpcW9uLmNvbT47IEZhYmlvIEVzdGV2YW0gPGZlc3RldmFtQGdt YWlsLmNvbT47Cj4gPiA+ID4gQW5kcml5Cj4gPiA+ID4gVHJ5c2huaXZza3l5IDxhbmRyaXkudHJ5 c2huaXZza3l5QG9wZW5zeW5lcmd5LmNvbT47IEhhaWJvIENoZW4KPiA+ID4gPiA8aGFpYm8uY2hl bkBueHAuY29tPjsgU2hhd24gR3VvIDxzaGF3bmd1b0BrZXJuZWwub3JnPjsgSGFucyBkZQo+ID4g PiA+IEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPjsgSmVyb21lIEJydW5ldAo+ID4gPiA+IDxq YnJ1bmV0QGJheWxpYnJlLmNvbT47Cj4gPiA+ID4gSGVpa28gU3R1ZWJuZXIgPGhlaWtvQHNudGVj aC5kZT47IEZsb3JpYW4gQm9vcgo+ID4gPiA+IDxmbG9yaWFuLmJvb3JAa2VybmVsY29uY2VwdHMu ZGU+OyBSZWd1cywgQ2lwcmlhbgo+ID4gPiA+IDxDaXByaWFuLlJlZ3VzQGFuYWxvZy5jb20+OyBM YXJzLVBldGVyIENsYXVzZW4gPGxhcnNAbWV0YWZvby5kZT47Cj4gPiA+ID4gQW5keQo+ID4gPiA+ IFNoZXZjaGVua28gPGFuZHkuc2hldmNoZW5rb0BnbWFpbC5jb20+OyBKb25hdGhhbiBDYW1lcm9u Cj4gPiA+ID4gPGppYzIzQGtlcm5lbC5vcmc+OyBOZWlsIEFybXN0cm9uZyA8bmFybXN0cm9uZ0Bi YXlsaWJyZS5jb20+Owo+ID4gPiA+IEJhb2xpbgo+ID4gPiA+IFdhbmcgPGJhb2xpbi53YW5nQGxp bnV4LmFsaWJhYmEuY29tPjsgSnlvdGkgQmhheWFuYQo+ID4gPiA+IDxqYmhheWFuYUBnb29nbGUu Y29tPjsgQ2hlbi1ZdSBUc2FpIDx3ZW5zQGNzaWUub3JnPjsgT3Jzb24gWmhhaQo+ID4gPiA+IDxv cnNvbnpoYWlAZ21haWwuY29tPgo+ID4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMTMvMTVdIGlp bzogaGVhbHRoOiBtYXgzMDEwMDogZG8gbm90IHVzZQo+ID4gPiA+IGludGVybmFsIGlpb19kZXYK PiA+ID4gPiBsb2NrCj4gPiA+ID4gCj4gPiA+ID4gW0V4dGVybmFsXQo+ID4gPiA+IAo+ID4gPiA+ IEhpIE51bm8sCj4gPiA+ID4gCj4gPiA+ID4gTnVuby5TYUBhbmFsb2cuY29twqB3cm90ZSBvbiBU dWUsIDIwIFNlcCAyMDIyIDEyOjQ0OjA4ICswMDAwOgo+ID4gPiA+IMKgICAgCj4gPiA+ID4gPiA+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiA+ID4gPiA+IEZyb206IE1pcXVlbCBSYXlu YWwgPG1pcXVlbC5yYXluYWxAYm9vdGxpbi5jb20+Cj4gPiA+ID4gPiA+IFNlbnQ6IFR1ZXNkYXks IFNlcHRlbWJlciAyMCwgMjAyMiAyOjIzIFBNCj4gPiA+ID4gPiA+IFRvOiBTYSwgTnVubyA8TnVu by5TYUBhbmFsb2cuY29tPgo+ID4gPiA+ID4gPiBDYzogbGludXgtYXJtLWtlcm5lbEBsaXN0cy5p bmZyYWRlYWQub3JnOyBsaW51eC3CoCAgIAo+ID4gPiA+IHJvY2tjaGlwQGxpc3RzLmluZnJhZGVh ZC5vcmc7wqAgICAKPiA+ID4gPiA+ID4gbGludXgtYW1sb2dpY0BsaXN0cy5pbmZyYWRlYWQub3Jn OyBsaW51eC1pbXhAbnhwLmNvbTsgbGludXgtCj4gPiA+ID4gPiA+IGlpb0B2Z2VyLmtlcm5lbC5v cmc7IENodW55YW4gWmhhbmcgPHpoYW5nLmx5cmFAZ21haWwuY29tPjvCoCAgIAo+ID4gPiA+IEhl bm5lcmljaCzCoCAgIAo+ID4gPiA+ID4gPiBNaWNoYWVsIDxNaWNoYWVsLkhlbm5lcmljaEBhbmFs b2cuY29tPjsgTWFydGluIEJsdW1lbnN0aW5nbAo+ID4gPiA+ID4gPiA8bWFydGluLmJsdW1lbnN0 aW5nbEBnb29nbGVtYWlsLmNvbT47IFNhc2NoYSBIYXVlcgo+ID4gPiA+ID4gPiA8cy5oYXVlckBw ZW5ndXRyb25peC5kZT47IENpeGkgR2VuZyA8Y2l4aS5nZW5nMUB1bmlzb2MuY29tPjsKPiA+ID4g PiA+ID4gS2V2aW4KPiA+ID4gPiA+ID4gSGlsbWFuIDxraGlsbWFuQGJheWxpYnJlLmNvbT47IFZs YWRpbWlyIFphcG9sc2tpeQo+ID4gPiA+ID4gPiA8dnpAbWxlaWEuY29tPjsKPiA+ID4gPiA+ID4g UGVuZ3V0cm9uaXggS2VybmVsIFRlYW0gPGtlcm5lbEBwZW5ndXRyb25peC5kZT47IEFsZXhhbmRy dcKgICAgCj4gPiA+ID4gQXJkZWxlYW7CoCAgIAo+ID4gPiA+ID4gPiA8YWFyZGVsZWFuQGRldmlx b24uY29tPjsgRmFiaW8gRXN0ZXZhbSA8ZmVzdGV2YW1AZ21haWwuY29tPjvCoCAgCj4gPiA+ID4g QW5kcml5wqAgICAKPiA+ID4gPiA+ID4gVHJ5c2huaXZza3l5IDxhbmRyaXkudHJ5c2huaXZza3l5 QG9wZW5zeW5lcmd5LmNvbT47IEhhaWJvCj4gPiA+ID4gPiA+IENoZW4KPiA+ID4gPiA+ID4gPGhh aWJvLmNoZW5AbnhwLmNvbT47IFNoYXduIEd1byA8c2hhd25ndW9Aa2VybmVsLm9yZz47IEhhbnMK PiA+ID4gPiA+ID4gZGUKPiA+ID4gPiA+ID4gR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+OyBK ZXJvbWUgQnJ1bmV0wqAgICAKPiA+ID4gPiA8amJydW5ldEBiYXlsaWJyZS5jb20+O8KgICAgCj4g PiA+ID4gPiA+IEhlaWtvIFN0dWVibmVyIDxoZWlrb0BzbnRlY2guZGU+OyBGbG9yaWFuIEJvb3IK PiA+ID4gPiA+ID4gPGZsb3JpYW4uYm9vckBrZXJuZWxjb25jZXB0cy5kZT47IFJlZ3VzLCBDaXBy aWFuCj4gPiA+ID4gPiA+IDxDaXByaWFuLlJlZ3VzQGFuYWxvZy5jb20+OyBMYXJzLVBldGVyIENs YXVzZW4KPiA+ID4gPiA+ID4gPGxhcnNAbWV0YWZvby5kZT47wqAgICAKPiA+ID4gPiBBbmR5wqAg ICAKPiA+ID4gPiA+ID4gU2hldmNoZW5rbyA8YW5keS5zaGV2Y2hlbmtvQGdtYWlsLmNvbT47IEpv bmF0aGFuIENhbWVyb24KPiA+ID4gPiA+ID4gPGppYzIzQGtlcm5lbC5vcmc+OyBOZWlsIEFybXN0 cm9uZyA8bmFybXN0cm9uZ0BiYXlsaWJyZS5jb20+Owo+ID4gPiA+ID4gPiBCYW9saW4KPiA+ID4g PiA+ID4gV2FuZyA8YmFvbGluLndhbmdAbGludXguYWxpYmFiYS5jb20+OyBKeW90aSBCaGF5YW5h Cj4gPiA+ID4gPiA+IDxqYmhheWFuYUBnb29nbGUuY29tPjsgQ2hlbi1ZdSBUc2FpIDx3ZW5zQGNz aWUub3JnPjsgT3Jzb24KPiA+ID4gPiA+ID4gWmhhaQo+ID4gPiA+ID4gPiA8b3Jzb256aGFpQGdt YWlsLmNvbT4KPiA+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCAxMy8xNV0gaWlvOiBoZWFs dGg6IG1heDMwMTAwOiBkbyBub3QgdXNlCj4gPiA+ID4gPiA+IGludGVybmFswqAgICAKPiA+ID4g PiBpaW9fZGV2wqAgICAKPiA+ID4gPiA+ID4gbG9jawo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4g W0V4dGVybmFsXQo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gSGkgTnVubywKPiA+ID4gPiA+ID4g wqAgIAo+ID4gPiA+ID4gCj4gPiA+ID4gPiBIaSBNaXF1ZWwsCj4gPiA+ID4gPiAKPiA+ID4gPiA+ IFRoYW5rcyBmb3IgcmV2aWV3aW5nLi4uCj4gPiA+ID4gPiDCoCAgCj4gPiA+ID4gPiA+IG51bm8u c2FAYW5hbG9nLmNvbcKgd3JvdGUgb24gVHVlLCAyMCBTZXAgMjAyMiAxMzoyODoxOSArMDIwMDoK PiA+ID4gPiA+ID4gwqAgIAo+ID4gPiA+ID4gPiA+IFRoZSBwYXR0ZXJuIHVzZWQgaW4gdGhpcyBk ZXZpY2UgZG9lcyBub3QgcXVpdGUgZml0IGluIHRoZQo+ID4gPiA+ID4gPiA+IGlpb19kZXZpY2Vf Y2xhaW1fZGlyZWN0X21vZGUoKSB0eXBpY2FsIHVzYWdlLiBJbiB0aGlzIGNhc2UsCj4gPiA+ID4g PiA+ID4gaWlvX2J1ZmZlcl9lbmFibGVkKCkgd2FzIGJlaW5nIHVzZWQgbm90IHRvIHByZXZlbnQg dGhlIHJhdwo+ID4gPiA+ID4gPiA+IGFjY2VzcyBidXTCoCAgIAo+ID4gPiA+IHRvwqAgICAKPiA+ ID4gPiA+ID4gPiBhbGxvdyBpdC4gSGVuY2UgdG8gZ2V0IHJpZCBvZiB0aGUgJ21sb2NrJyB3ZSBu ZWVkIHRvOgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IDEuIFVzZSBpaW9fZGV2aWNlX2Ns YWltX2RpcmVjdF9tb2RlKCkgdG8gY2hlY2sgaWYgZGlyZWN0Cj4gPiA+ID4gPiA+ID4gbW9kZSBj YW4gYmUKPiA+ID4gPiA+ID4gPiBjbGFpbWVkIGFuZCBpZiB3ZSBjYW4gcmV0dXJuIC1FSU5WQUwg KGFzIHRoZSBvcmlnaW5hbAo+ID4gPiA+ID4gPiA+IGNvZGUpOwo+ID4gPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiA+IDIuIE1ha2Ugc3VyZSB0aGF0IGJ1ZmZlcmluZyBpcyBub3QgZGlzYWJsZWQgd2hp bGUgZG9pbmcgYQo+ID4gPiA+ID4gPiA+IHJhdyByZWFkLiBGb3IKPiA+ID4gPiA+ID4gPiB0aGF0 LCB3ZSBjYW4gbWFrZSB1c2Ugb2YgdGhlIGxvY2FsIGxvY2sgdGhhdCBhbHJlYWR5Cj4gPiA+ID4g PiA+ID4gZXhpc3RzLgo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IFdoaWxlIGF0IGl0LCBm aXhlZCBhIG1pbm9yIGNvZGluZyBzdHlsZSBjb21wbGFpbi4uLgo+ID4gPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IE51bm8gU8OhIDxudW5vLnNhQGFuYWxvZy5jb20+Cj4g PiA+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiA+ID4gwqBkcml2ZXJzL2lpby9oZWFsdGgvbWF4MzAx MDAuYyB8IDI0ICsrKysrKysrKysrKysrKysrLS0tLS0tCj4gPiA+ID4gPiA+ID4gLQo+ID4gPiA+ ID4gPiA+IMKgMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0p Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWlvL2hl YWx0aC9tYXgzMDEwMC5jwqAgICAKPiA+ID4gPiBiL2RyaXZlcnMvaWlvL2hlYWx0aC9tYXgzMDEw MC5jwqAgICAKPiA+ID4gPiA+ID4gPiBpbmRleCBhZDU3MTc5NjUyMjMuLmFhNDk0Y2FkNWRmMCAx MDA2NDQKPiA+ID4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2lpby9oZWFsdGgvbWF4MzAxMDAuYwo+ ID4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvaWlvL2hlYWx0aC9tYXgzMDEwMC5jCj4gPiA+ID4g PiA+ID4gQEAgLTE4NSw4ICsxODUsMTkgQEAgc3RhdGljIGludAo+ID4gPiA+ID4gPiA+IG1heDMw MTAwX2J1ZmZlcl9wb3N0ZW5hYmxlKHN0cnVjdMKgICAgCj4gPiA+ID4gPiA+IGlpb19kZXYgKmlu ZGlvX2RldinCoCAgIAo+ID4gPiA+ID4gPiA+IMKgc3RhdGljIGludCBtYXgzMDEwMF9idWZmZXJf cHJlZGlzYWJsZShzdHJ1Y3QgaWlvX2Rldgo+ID4gPiA+ID4gPiA+ICppbmRpb19kZXYpCj4gPiA+ ID4gPiA+ID4gwqB7Cj4gPiA+ID4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBtYXgzMDEw MF9kYXRhICpkYXRhID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsKPiA+ID4gPiA+ID4gPiArwqDCoMKg wqDCoMKgwqBpbnQgcmV0Owo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDC oMKgwqAvKgo+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCAqIEFzIHN0YXRlZCBpbiB0aGUg Y29tbWVudCBpbiB0aGUgcmVhZF9yYXcoKQo+ID4gPiA+ID4gPiA+IGZ1bmN0aW9uLCB0ZW1wZXJh dHVyZQo+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCAqIGNhbiBvbmx5IGJlIGFjcXVpcmVk IGlmIHRoZSBlbmdpbmUgaXMgcnVubmluZy4KPiA+ID4gPiA+ID4gPiBBcyBzdWNoIHRoZSBtdXRl eAo+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCAqIGlzIHVzZWQgdG8gbWFrZSBzdXJlIHdl IGRvIG5vdCBwb3dlciBkb3duIHdoaWxlCj4gPiA+ID4gPiA+ID4gZG9pbmcgYcKgICAgCj4gPiA+ ID4gPiA+IHRlbXBlcmF0dXJlwqAgICAKPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgKiBy ZWFkaW5nLgo+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCAqLwo+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoMKgwqDCoG11dGV4X2xvY2soJmRhdGEtPmxvY2spOwo+ID4gPiA+ID4gPiA+ICvCoMKg wqDCoMKgwqDCoHJldCA9IG1heDMwMTAwX3NldF9wb3dlcm1vZGUoZGF0YSwgZmFsc2UpOwo+ID4g PiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoG11dGV4X3VubG9jaygmZGF0YS0+bG9jayk7Cj4gPiA+ ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIG1heDMwMTAwX3Nl dF9wb3dlcm1vZGUoZGF0YSwgZmFsc2UpOwo+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoHJl dHVybiByZXQ7Cj4gPiA+ID4gPiA+ID4gwqB9Cj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4g wqBzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19idWZmZXJfc2V0dXBfb3BzCj4gPiA+ID4gPiA+ID4g bWF4MzAxMDBfYnVmZmVyX3NldHVwX29wc8KgICAgCj4gPiA+ID4gPSB7wqAgICAKPiA+ID4gPiA+ ID4gPiBAQCAtMzg3LDE4ICszOTgsMTcgQEAgc3RhdGljIGludCBtYXgzMDEwMF9yZWFkX3Jhdyhz dHJ1Y3QKPiA+ID4gPiA+ID4gPiBpaW9fZGV2wqAgICAKPiA+ID4gPiA+ID4gKmluZGlvX2RldizC oCAgIAo+ID4gPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogVGVt cGVyYXR1cmUgcmVhZGluZyBjYW4gb25seSBiZSBhY3F1aXJlZAo+ID4gPiA+ID4gPiA+IHdoaWxl IGVuZ2luZQo+ID4gPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICog aXMgcnVubmluZwo+ID4gPiA+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICovCj4gPiA+ID4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG11dGV4X2xv Y2soJmluZGlvX2Rldi0+bWxvY2spOwo+ID4gPiA+ID4gPiA+IC0KPiA+ID4gPiA+ID4gPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFpaW9fYnVmZmVyX2VuYWJsZWQoaW5kaW9f ZGV2KSkKPiA+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYKPiA+ ID4gPiA+ID4gPiAoIWlpb19kZXZpY2VfY2xhaW1fZGlyZWN0X21vZGUoaW5kaW9fZGV2KSkge8Kg ICAgCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBJIHdvbmRlciBpZiB0aGlzIGxpbmUgY2hhbmdl IGhlcmUgaXMgcmVhbGx5IG5lZWRlZC4gSSBhZ3JlZQo+ID4gPiA+ID4gPiB0aGUgd2hvbGUKPiA+ ID4gPiA+ID4gY29uc3RydWN0aW9uIGxvb2tzIGxpa2Ugd2hhdCBpaW9fZGV2aWNlX2NsYWltX2Rp cmVjdF9tb2RlKCkKPiA+ID4gPiA+ID4gZG9lcyBidXQgaW4KPiA+ID4gPiA+ID4gcHJhY3RpY2Ug SSBkb24ndCBzZWUgdGhlIHBvaW50IG9mIGFjcXVpcmluZyBhbnkgbG9jayBoZXJlIGlmCj4gPiA+ ID4gPiA+IHdlIGp1c3QKPiA+ID4gPiA+ID4gcmVsZWFzZSBpdCBubyBtYXR0ZXIgd2hhdCBoYXBw ZW5zIHJpZ2h0IGFmdGVyLgo+ID4gPiA+ID4gPiDCoCAgCj4gPiA+ID4gPiAKPiA+ID4gPiA+IEkg Y2FuIHNlZSB0aGF0IHRoaXMgaXMgb2RkIChhdCB0aGUgdmVyeSBsZWFzdCkgYnV0IEFGQUlLLCB0 aGlzCj4gPiA+ID4gPiBpcyB0aGUgb25seSB3YXkKPiA+ID4gPiA+IHRvIHNhZmVseSBpbmZlciBp ZiBidWZmZXJpbmcgaXMgZW5hYmxlZCBvciBub3QuCj4gPiA+ID4gPiBpaW9fYnVmZmVyX2VuYWJs ZWQoKSBoYXMgbm8KPiA+ID4gPiA+IHByb3RlY3Rpb24gYWdhaW5zdCBzb21lb25lIGNvbmN1cnJl bnRseSBlbmFibGluZy9kaXNhYmxpbmcgdGhlCj4gPiA+ID4gPiBidWZmZXIuwqAgICAKPiA+ID4g PiAKPiA+ID4gPiBZZXMsIGJ1dCB0aGlzIGlzIG9ubHkgcmVsZXZhbnQgaWYgeW91IHdhbnQgdG8g aW5mZXIgdGhhdCB0aGUKPiA+ID4gPiAiYnVmZmVycwo+ID4gPiA+IGFyZSBlbmFibGVkIiBhbmQg YmUgc3VyZSB0aGF0IGl0IGNhbm5vdCBiZSBvdGhlcndpc2UgZHVyaW5nIHRoZQo+ID4gPiA+IG5l eHQKPiA+ID4gPiBsaW5lcyB1bnRpbCB5b3UgcmVsZWFzZSB0aGUgbG9jay4gQWNxdWlyaW5nIGEg bG9jaywgZG9pbmcgdGhlIGlmCj4gPiA+ID4gYW5kCj4gPiA+ID4gdGhlbiB1bmNvbmRpdGlvbmFs bHkgcmVsZWFzaW5nIHRoZSBsb2NrLCBJTUhPLCBkb2VzIG5vdCBtYWtlIGFueQo+ID4gPiA+IHNl bnNlCj4gPiA+ID4gKGJ1dCBJJ20gbm90IGEgbG9ja2luZyBndXJ1KSBiZWNhdXNlIHdoZW4geW91 IGVudGVyIHRoZSBlbHNlCj4gPiA+ID4gY2xhdXNlLAo+ID4gPiA+IHlvdSBhcmUgbm90IHByb3Rl Y3RlZCBhbnl3YXksIHNvIGluIGJvdGggY2FzZXMgYWxsIHRoaXMgaXMKPiA+ID4gPiBjb21wbGV0 ZWx5Cj4gPiA+ID4gcmFjeS4KPiA+ID4gPiDCoCAgIAo+ID4gPiAKPiA+ID4gQWhoIGNyYXAsIHll cyB5b3UgYXJlIHJpZ2h0Li4uIEl0IGlzIHN0aWxsIHJhY3kgc2luY2Ugd2UgY2FuIHN0aWxsCj4g PiA+IHRyeSB0byByZWFkCj4gPiA+IHRoZSB0ZW1wZXJhdHVyZSB3aXRoIHRoZSBkZXZpY2UgcG93 ZXJlZCBvZmYuIEknbSBub3QgcmVhbGx5IHN1cmUKPiA+ID4gaG93IHRvCj4gPiA+IGFkZHJlc3Mg dGhpcy4gT25lIHdheSBjb3VsZCBiZSB0byBqdXN0IHVzZSBhbiBpbnRlcm5hbCBjb250cm9sCj4g PiA+IHZhcmlhYmxlCj4gPiA+IHRvIHJlZmxlY3QgdGhlIGRldmljZSBwb3dlciBzdGF0ZSAoc2V0 L2NsZWFyIG9uIHRoZSBidWZmZXIKPiA+ID4gY2FsbGJhY2tzKSBhbmQKPiA+ID4gb25seSB1c2Ug dGhlIGxvY2FsIGxvY2sgKGNvbXBsZXRlbHkgZGl0Y2hpbmcgdGhlIGNhbGwgdG8KPiA+ID4gaWlv X2RldmljZV9jbGFpbV9kaXJlY3RfbW9kZSgpKS4uLiAgCj4gPiAKPiA+IEkgdGVuZCB0byBwcmVm ZXIgdGhpcyBvcHRpb24gdGhhbiB0aGUgb25lIGJlbG93Lgo+ID4gCj4gPiBJIGd1ZXNzIHlvdXIg aW1wbGVtZW50YXRpb24gYWxyZWFkeSBwcmV2ZW50cyBidWZmZXJfcHJlZGlzYWJsZSgpIHRvCj4g PiBydW4KPiA+IHRoYW5rcyB0byB0aGUgbG9jYWwgbG9jayBiZWluZyBoZWxkIGR1cmluZyB0aGUg b3BlcmF0aW9uLiBNYXliZSB3ZQo+ID4gc2hvdWxkIGp1c3QgdmVyaWZ5IHRoYXQgYnVmZmVycyBh cmUgZW5hYmxlZCBmcm9tIHdpdGhpbiB0aGUgbG9jYWwKPiA+IGxvY2sKPiA+IGJlaW5nIGhlbGQg aW5zdGVhZCBvZiBqdXN0IGFjcXVpcmluZyBpdCBmb3IgdGhlIGdldF90ZW1wKCkgbWVhc3VyZS4K PiA+IEl0Cj4gPiB3b3VsZCBwcm9iYWJseSBzb2x2ZSB0aGUgc2l0dWF0aW9uIGhlcmUuICAKPiA+ ID4gICAKPiBOb3Qgc3VyZSBpZiBJIHVuZGVyc3Rvb2QuLi4gWW91IG1lYW4gc29tZXRoaW5nIGxp a2U6Cj4gCj4gbXV0ZXhfbG9jaygmZGF0YS0+bG9jayk7Cj4gaWYgKCFpaW9fYnVmZmVyX2VuYWJs ZWQoaW5kaW9fZGV2KSkgewo+IAlyZXQgPSAtRUlOVkFMOwo+IH0gZWxzZSB7Cj4gIAlyZXQgPSBt YXgzMDEwMF9nZXRfdGVtcChkYXRhLCB2YWwpOwo+ICAJaWYgKCFyZXQpCj4gIAkJcmV0ID0gSUlP X1ZBTF9JTlQ7Cj4gCj4gfQo+IG11dGV4X3VubG9jaygmZGF0YS0+bG9jayk7Cj4gCj4gSWYgc28s IEkgdGhpbmsgdGhpcyBpcyBzdGlsbCByYWN5IHNpbmNlIHdlIHJlbGVhc2UgdGhlIGxvY2sgYWZ0 ZXIgdGhlCj4gcHJlZGlzYWJsZSB3aGljaCBtZWFucyB3ZSBjb3VsZCBzdGlsbCBkZXRlY3QgdGhl IGJ1ZmZlcnMgYXMgZW5hYmxlZCAoaW4KPiB0aGUgYWJvdmUgYmxvY2spIGFuZCB0cnkgdG8gZ2V0 X3RlbXAgb24gYSBwb3dlcmVkIGRvd24gZGV2aWNlLgoKVHJ1ZS4KCj4gCj4gU2luY2Ugd2UgcHJl dHR5IG11Y2ggb25seSBjYXJlIGFib3V0IHRoZSBwb3dlciBzdGF0ZSBvZiB0aGUgZGV2aWNlIChh bmQKPiB3ZSBhcmUgdXNpbmcgdGhlIGJ1ZmZlcmluZyBzdGF0ZSB0byBpbmZlciB0aGF0IEFGQUlV KSwgSSB3YXMgdGhpbmtpbmcKPiBpbiBzb21ldGhpbmcgbGlrZToKPiAKPiAKPiBtdXRleF9sb2Nr KCZkYXRhLT5sb2NrKTsKPiBpZiAoIWRhdGEtPnBvd2VyZWQpIHsKPiAJcmV0ID0gLUVJTlZBTDsK PiB9IGVsc2Ugewo+ICAJcmV0ID0gbWF4MzAxMDBfZ2V0X3RlbXAoZGF0YSwgdmFsKTsKPiAgCWlm ICghcmV0KQo+ICAJCXJldCA9IElJT19WQUxfSU5UOwo+IAo+IH0KPiBtdXRleF91bmxvY2soJmRh dGEtPmxvY2spOwoKTEdUTS4KCj4gCj4gVGhlbiwgaW4gdGhlIHByZWRpc2FibGUsIHNvbWV0aGlu ZyBsaWtlIEkgaGF2ZSBidXQgc2V0dGluZyB0aGUgZmxhZyB0bwo+IGZhbHNlIGFuZCB0aGUgb3Bw b3NpdGUgb24gdGhlIHBvc3RlbmFibGUuLi4gTmF0dXJhbGx5IHdlIGNvdWxkIGFsc28KPiBqdXN0 IHJlYWQgdGhlIHJlZ2lzdGVycyAoYW5kIEkgYWN0dWFsbHkgdGVuZCB0byBwcmVmZXIgaXQpIGlu c3RlYWQgb2YgYQo+IG5ldyBmbGFnIGJ1dCBJIGd1ZXNzIHRoZSBmbGFnIGlzIGVub3VnaCBpbiB0 aGlzIGNhc2UuCj4gCj4gLSBOdW5vIFPDoQo+ID4gICAKCgpUaGFua3MsCk1pcXXDqGwKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJu ZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRw Oi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK