From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C6A1AC71155 for ; Thu, 3 Dec 2020 08:06:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5567B206A4 for ; Thu, 3 Dec 2020 08:06:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387609AbgLCIGs (ORCPT ); Thu, 3 Dec 2020 03:06:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36976 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387443AbgLCIGs (ORCPT ); Thu, 3 Dec 2020 03:06:48 -0500 Received: from mail-ej1-x643.google.com (mail-ej1-x643.google.com [IPv6:2a00:1450:4864:20::643]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9D962C061A53 for ; Thu, 3 Dec 2020 00:05:27 -0800 (PST) Received: by mail-ej1-x643.google.com with SMTP id jx16so2057727ejb.10 for ; Thu, 03 Dec 2020 00:05:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=FZ8VxZZvqmh6ehr3KHE/PiRk3db+weOkpDGOlsh3YO8=; b=haDseJv+D02T10aLAxQHXG0BsYACsfkijqaB+ELZmfch2JYU9g6y9ryqDyIqWShXaW yaAZ88xKKVmpIrZKV/qetu3zM2AbVORk0wYWL03XQMh8ss+hr7Dc6CnNOdvjOspJC/vQ R2df0RgSro0FHNGu8o3DpusAvPeMobIgNjOfc7hfwHJ6Nvy0U69h0GmKMctPOdP8JHuK uCRMiqbef850rMYfMmIEUS0TzdqaTlcSg4Jgua9sT1AuBgZSfdy1txMa/Fszl/iCAsRa 6RBF8zj3OIpntYgPprvZoROYfpZUKnhmmTVDrR3O2ZTkmVat83g3y0aDOoH39HHPuS4h RbOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=FZ8VxZZvqmh6ehr3KHE/PiRk3db+weOkpDGOlsh3YO8=; b=PgWXv/u/CJbsJjKiv0Fefx9BhWQtP8BEmCfS2So6UtIYmd0uGYIkUshMD7ur2eKBPJ /Rqbfd+jkXNVueMWTE+VF7zKgsXNSzzocqIdZgBfiDjQptCACe3HYFZP1lpi5u5xPadF wzO37YhnRyWvSwc7EIFidCWxW6GtiaMVfHyQO+8KLswHqEO7MTQ7bkXVlFlxnu9TI1pJ d2StHi2FY/Hc+pzphDQrMCsgi89I+42WgR3+X3zae2cJwpNrLB6OYNwHK2mxZeFZ08FL JV3a333X3XflJ0w4fiX3gOI4cOuRvhUc6t5i8IU9bnZ6hlhAgWh6BmnXW0Chq0NaBfXr Palg== X-Gm-Message-State: AOAM5303UyFrEr62vxWRpLv9vJcCTbF3O+JGnA31G3/81i3Y3JYZWgTf 92v4So2MvazA5MdAe7UAjcjcFwHzZ9VTaGLkFHut4g== X-Google-Smtp-Source: ABdhPJxP2EJznI3pbg+Rqtm4SZQefIKFXf0kkiRRTqzbUDyEG5oMEZvNtOYbyFNg3cm8vTl+G0cfLIdKavT7T0DOD1k= X-Received: by 2002:a17:906:7f01:: with SMTP id d1mr1414079ejr.429.1606982726027; Thu, 03 Dec 2020 00:05:26 -0800 (PST) MIME-Version: 1.0 References: <20201123183833.18750-1-nsaenzjulienne@suse.de> <20201123183833.18750-2-nsaenzjulienne@suse.de> In-Reply-To: <20201123183833.18750-2-nsaenzjulienne@suse.de> From: Bartosz Golaszewski Date: Thu, 3 Dec 2020 09:05:15 +0100 Message-ID: Subject: Re: [PATCH v5 01/11] firmware: raspberrypi: Keep count of all consumers To: Nicolas Saenz Julienne Cc: =?UTF-8?Q?Uwe_Kleine=2DK=C3=B6nig?= , LKML , Florian Fainelli , Ray Jui , Scott Branden , bcm-kernel-feedback-list@broadcom.com, linux-pwm@vger.kernel.org, arm-soc , linux-devicetree , wahrenst@gmx.net, Linux Input , Dmitry Torokhov , Greg KH , devel@driverdev.osuosl.org, Philipp Zabel , linux-gpio , Linus Walleij , linux-clk , Stephen Boyd , linux-rpi-kernel@lists.infradead.org, Andy Shevchenko Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org On Mon, Nov 23, 2020 at 7:38 PM Nicolas Saenz Julienne wrote: > > When unbinding the firmware device we need to make sure it has no > consumers left. Otherwise we'd leave them with a firmware handle > pointing at freed memory. > > Keep a reference count of all consumers and introduce rpi_firmware_put() > which will permit automatically decrease the reference count upon > unbinding consumer drivers. > > Suggested-by: Uwe Kleine-K=C3=B6nig > Signed-off-by: Nicolas Saenz Julienne > --- > > Changes since v3: > - Use kref instead of waiting on refcount > > drivers/firmware/raspberrypi.c | 37 +++++++++++++++++++--- > include/soc/bcm2835/raspberrypi-firmware.h | 2 ++ > 2 files changed, 35 insertions(+), 4 deletions(-) > > diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberryp= i.c > index 30259dc9b805..ed793aef7851 100644 > --- a/drivers/firmware/raspberrypi.c > +++ b/drivers/firmware/raspberrypi.c > @@ -7,6 +7,7 @@ > */ > > #include > +#include > #include > #include > #include > @@ -27,6 +28,8 @@ struct rpi_firmware { > struct mbox_chan *chan; /* The property channel. */ > struct completion c; > u32 enabled; > + > + struct kref consumers; > }; > > static DEFINE_MUTEX(transaction_lock); > @@ -225,12 +228,27 @@ static void rpi_register_clk_driver(struct device *= dev) > -1, NULL, 0); > } > > +static void rpi_firmware_delete(struct kref *kref) > +{ > + struct rpi_firmware *fw =3D container_of(kref, struct rpi_firmwar= e, > + consumers); > + > + mbox_free_channel(fw->chan); > + kfree(fw); > +} > + > +void rpi_firmware_put(struct rpi_firmware *fw) > +{ > + kref_put(&fw->consumers, rpi_firmware_delete); > +} > +EXPORT_SYMBOL_GPL(rpi_firmware_put); > + > static int rpi_firmware_probe(struct platform_device *pdev) > { > struct device *dev =3D &pdev->dev; > struct rpi_firmware *fw; > > - fw =3D devm_kzalloc(dev, sizeof(*fw), GFP_KERNEL); One nit from my side: maybe add a comment here saying that you really want to use non-managed kzalloc() because you're going to get people blindly converting it to devm_kzalloc() very soon. Bartosz > + fw =3D kzalloc(sizeof(*fw), GFP_KERNEL); > if (!fw) > return -ENOMEM; > > @@ -247,6 +265,7 @@ static int rpi_firmware_probe(struct platform_device = *pdev) > } > > init_completion(&fw->c); > + kref_init(&fw->consumers); > > platform_set_drvdata(pdev, fw); > > @@ -275,25 +294,35 @@ static int rpi_firmware_remove(struct platform_devi= ce *pdev) > rpi_hwmon =3D NULL; > platform_device_unregister(rpi_clk); > rpi_clk =3D NULL; > - mbox_free_channel(fw->chan); > + > + rpi_firmware_put(fw); > > return 0; > } > > /** > - * rpi_firmware_get - Get pointer to rpi_firmware structure. > * @firmware_node: Pointer to the firmware Device Tree node. > * > + * The reference to rpi_firmware has to be released with rpi_firmware_pu= t(). > + * > * Returns NULL is the firmware device is not ready. > */ > struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node) > { > struct platform_device *pdev =3D of_find_device_by_node(firmware_= node); > + struct rpi_firmware *fw; > > if (!pdev) > return NULL; > > - return platform_get_drvdata(pdev); > + fw =3D platform_get_drvdata(pdev); > + if (!fw) > + return NULL; > + > + if (!kref_get_unless_zero(&fw->consumers)) > + return NULL; > + > + return fw; > } > EXPORT_SYMBOL_GPL(rpi_firmware_get); > > diff --git a/include/soc/bcm2835/raspberrypi-firmware.h b/include/soc/bcm= 2835/raspberrypi-firmware.h > index cc9cdbc66403..fdfef7fe40df 100644 > --- a/include/soc/bcm2835/raspberrypi-firmware.h > +++ b/include/soc/bcm2835/raspberrypi-firmware.h > @@ -140,6 +140,7 @@ int rpi_firmware_property(struct rpi_firmware *fw, > u32 tag, void *data, size_t len); > int rpi_firmware_property_list(struct rpi_firmware *fw, > void *data, size_t tag_size); > +void rpi_firmware_put(struct rpi_firmware *fw); > struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node)= ; > #else > static inline int rpi_firmware_property(struct rpi_firmware *fw, u32 tag= , > @@ -154,6 +155,7 @@ static inline int rpi_firmware_property_list(struct r= pi_firmware *fw, > return -ENOSYS; > } > > +static inline void rpi_firmware_put(struct rpi_firmware *fw) { } > static inline struct rpi_firmware *rpi_firmware_get(struct device_node *= firmware_node) > { > return NULL; > -- > 2.29.2 > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 648E0C63777 for ; Thu, 3 Dec 2020 08:05:35 +0000 (UTC) Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8312520BED for ; Thu, 3 Dec 2020 08:05:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8312520BED Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=driverdev-devel-bounces@linuxdriverproject.org Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 6C8A287746; Thu, 3 Dec 2020 08:05:33 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id rZUGB4k7EmWA; Thu, 3 Dec 2020 08:05:30 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by hemlock.osuosl.org (Postfix) with ESMTP id D7C2B8771C; Thu, 3 Dec 2020 08:05:30 +0000 (UTC) Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by ash.osuosl.org (Postfix) with ESMTP id C768A1BF86D for ; Thu, 3 Dec 2020 08:05:29 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id C2DEC8771C for ; Thu, 3 Dec 2020 08:05:29 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ftcHIN9Esoqh for ; Thu, 3 Dec 2020 08:05:28 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-ej1-f68.google.com (mail-ej1-f68.google.com [209.85.218.68]) by hemlock.osuosl.org (Postfix) with ESMTPS id D7D9187705 for ; Thu, 3 Dec 2020 08:05:27 +0000 (UTC) Received: by mail-ej1-f68.google.com with SMTP id x16so2080745ejj.7 for ; Thu, 03 Dec 2020 00:05:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=FZ8VxZZvqmh6ehr3KHE/PiRk3db+weOkpDGOlsh3YO8=; b=haDseJv+D02T10aLAxQHXG0BsYACsfkijqaB+ELZmfch2JYU9g6y9ryqDyIqWShXaW yaAZ88xKKVmpIrZKV/qetu3zM2AbVORk0wYWL03XQMh8ss+hr7Dc6CnNOdvjOspJC/vQ R2df0RgSro0FHNGu8o3DpusAvPeMobIgNjOfc7hfwHJ6Nvy0U69h0GmKMctPOdP8JHuK uCRMiqbef850rMYfMmIEUS0TzdqaTlcSg4Jgua9sT1AuBgZSfdy1txMa/Fszl/iCAsRa 6RBF8zj3OIpntYgPprvZoROYfpZUKnhmmTVDrR3O2ZTkmVat83g3y0aDOoH39HHPuS4h RbOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=FZ8VxZZvqmh6ehr3KHE/PiRk3db+weOkpDGOlsh3YO8=; b=myvtPBAFgASUMZJMhi/Oa+S1cElvMuepnMgeH2OpC/wNljMLCZMOK2LIT+wOwxtsqM wPof4GIzyrzG/ayDYhqOYVxUmUDv/RveyJ/PsktZQR3hT7Dk72oNLvbmVfbn4dm64/UP g2/IcD0R61mI8R26jVftmVhijZke6UHVca+VAl1i7hEwAE7qFwnDyn1+Klwx0EOn0Fx5 yuRtWgyLCxShvFh9NcGyKfTwn062f5OzaJh4uDa2MCoQY+o40L+mY6u7nucVp/UPXZrK 2YfmAjpR8QQhNiurprv1N6Qt4NB1QM8toYMx7IySfQlUSojX7H4HLfWCI85JBeur6d7Z ZE8g== X-Gm-Message-State: AOAM531MWuGQK4dbdWIz5XEo9TeF0jd0PKn3U0GwmOEBnjYk4I09YLXl vKwsYhHffL0RldxcteVz6MGB6rgxwSTQ6z+RydicnQ== X-Google-Smtp-Source: ABdhPJxP2EJznI3pbg+Rqtm4SZQefIKFXf0kkiRRTqzbUDyEG5oMEZvNtOYbyFNg3cm8vTl+G0cfLIdKavT7T0DOD1k= X-Received: by 2002:a17:906:7f01:: with SMTP id d1mr1414079ejr.429.1606982726027; Thu, 03 Dec 2020 00:05:26 -0800 (PST) MIME-Version: 1.0 References: <20201123183833.18750-1-nsaenzjulienne@suse.de> <20201123183833.18750-2-nsaenzjulienne@suse.de> In-Reply-To: <20201123183833.18750-2-nsaenzjulienne@suse.de> From: Bartosz Golaszewski Date: Thu, 3 Dec 2020 09:05:15 +0100 Message-ID: Subject: Re: [PATCH v5 01/11] firmware: raspberrypi: Keep count of all consumers To: Nicolas Saenz Julienne X-BeenThere: driverdev-devel@linuxdriverproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Driver Project Developer List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devel@driverdev.osuosl.org, linux-pwm@vger.kernel.org, Andy Shevchenko , Florian Fainelli , Scott Branden , linux-devicetree , Stephen Boyd , Ray Jui , Linus Walleij , Linux Input , LKML , linux-gpio , Greg KH , bcm-kernel-feedback-list@broadcom.com, wahrenst@gmx.net, Philipp Zabel , =?UTF-8?Q?Uwe_Kleine=2DK=C3=B6nig?= , Dmitry Torokhov , linux-clk , arm-soc , linux-rpi-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" T24gTW9uLCBOb3YgMjMsIDIwMjAgYXQgNzozOCBQTSBOaWNvbGFzIFNhZW56IEp1bGllbm5lCjxu c2FlbnpqdWxpZW5uZUBzdXNlLmRlPiB3cm90ZToKPgo+IFdoZW4gdW5iaW5kaW5nIHRoZSBmaXJt d2FyZSBkZXZpY2Ugd2UgbmVlZCB0byBtYWtlIHN1cmUgaXQgaGFzIG5vCj4gY29uc3VtZXJzIGxl ZnQuIE90aGVyd2lzZSB3ZSdkIGxlYXZlIHRoZW0gd2l0aCBhIGZpcm13YXJlIGhhbmRsZQo+IHBv aW50aW5nIGF0IGZyZWVkIG1lbW9yeS4KPgo+IEtlZXAgYSByZWZlcmVuY2UgY291bnQgb2YgYWxs IGNvbnN1bWVycyBhbmQgaW50cm9kdWNlIHJwaV9maXJtd2FyZV9wdXQoKQo+IHdoaWNoIHdpbGwg cGVybWl0IGF1dG9tYXRpY2FsbHkgZGVjcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudCB1cG9uCj4g dW5iaW5kaW5nIGNvbnN1bWVyIGRyaXZlcnMuCj4KPiBTdWdnZXN0ZWQtYnk6IFV3ZSBLbGVpbmUt S8O2bmlnIDx1LmtsZWluZS1rb2VuaWdAcGVuZ3V0cm9uaXguZGU+Cj4gU2lnbmVkLW9mZi1ieTog Tmljb2xhcyBTYWVueiBKdWxpZW5uZSA8bnNhZW56anVsaWVubmVAc3VzZS5kZT4KPiAtLS0KPgo+ IENoYW5nZXMgc2luY2UgdjM6Cj4gLSBVc2Uga3JlZiBpbnN0ZWFkIG9mIHdhaXRpbmcgb24gcmVm Y291bnQKPgo+ICBkcml2ZXJzL2Zpcm13YXJlL3Jhc3BiZXJyeXBpLmMgICAgICAgICAgICAgfCAz NyArKysrKysrKysrKysrKysrKysrLS0tCj4gIGluY2x1ZGUvc29jL2JjbTI4MzUvcmFzcGJlcnJ5 cGktZmlybXdhcmUuaCB8ICAyICsrCj4gIDIgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygr KSwgNCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Zpcm13YXJlL3Jhc3Bi ZXJyeXBpLmMgYi9kcml2ZXJzL2Zpcm13YXJlL3Jhc3BiZXJyeXBpLmMKPiBpbmRleCAzMDI1OWRj OWI4MDUuLmVkNzkzYWVmNzg1MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2Zpcm13YXJlL3Jhc3Bi ZXJyeXBpLmMKPiArKysgYi9kcml2ZXJzL2Zpcm13YXJlL3Jhc3BiZXJyeXBpLmMKPiBAQCAtNyw2 ICs3LDcgQEAKPiAgICovCj4KPiAgI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9rcmVmLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9tYWlsYm94X2NsaWVudC5o Pgo+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9vZl9wbGF0 Zm9ybS5oPgo+IEBAIC0yNyw2ICsyOCw4IEBAIHN0cnVjdCBycGlfZmlybXdhcmUgewo+ICAgICAg ICAgc3RydWN0IG1ib3hfY2hhbiAqY2hhbjsgLyogVGhlIHByb3BlcnR5IGNoYW5uZWwuICovCj4g ICAgICAgICBzdHJ1Y3QgY29tcGxldGlvbiBjOwo+ICAgICAgICAgdTMyIGVuYWJsZWQ7Cj4gKwo+ ICsgICAgICAgc3RydWN0IGtyZWYgY29uc3VtZXJzOwo+ICB9Owo+Cj4gIHN0YXRpYyBERUZJTkVf TVVURVgodHJhbnNhY3Rpb25fbG9jayk7Cj4gQEAgLTIyNSwxMiArMjI4LDI3IEBAIHN0YXRpYyB2 b2lkIHJwaV9yZWdpc3Rlcl9jbGtfZHJpdmVyKHN0cnVjdCBkZXZpY2UgKmRldikKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgTlVMTCwgMCk7Cj4g IH0KPgo+ICtzdGF0aWMgdm9pZCBycGlfZmlybXdhcmVfZGVsZXRlKHN0cnVjdCBrcmVmICprcmVm KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgcnBpX2Zpcm13YXJlICpmdyA9IGNvbnRhaW5lcl9vZihr cmVmLCBzdHJ1Y3QgcnBpX2Zpcm13YXJlLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3VtZXJzKTsKPiArCj4gKyAgICAgICBtYm94X2ZyZWVfY2hh bm5lbChmdy0+Y2hhbik7Cj4gKyAgICAgICBrZnJlZShmdyk7Cj4gK30KPiArCj4gK3ZvaWQgcnBp X2Zpcm13YXJlX3B1dChzdHJ1Y3QgcnBpX2Zpcm13YXJlICpmdykKPiArewo+ICsgICAgICAga3Jl Zl9wdXQoJmZ3LT5jb25zdW1lcnMsIHJwaV9maXJtd2FyZV9kZWxldGUpOwo+ICt9Cj4gK0VYUE9S VF9TWU1CT0xfR1BMKHJwaV9maXJtd2FyZV9wdXQpOwo+ICsKPiAgc3RhdGljIGludCBycGlfZmly bXdhcmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgewo+ICAgICAgICAg c3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPiAgICAgICAgIHN0cnVjdCBycGlfZmly bXdhcmUgKmZ3Owo+Cj4gLSAgICAgICBmdyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqZncp LCBHRlBfS0VSTkVMKTsKCk9uZSBuaXQgZnJvbSBteSBzaWRlOiBtYXliZSBhZGQgYSBjb21tZW50 IGhlcmUgc2F5aW5nIHRoYXQgeW91IHJlYWxseQp3YW50IHRvIHVzZSBub24tbWFuYWdlZCBremFs bG9jKCkgYmVjYXVzZSB5b3UncmUgZ29pbmcgdG8gZ2V0IHBlb3BsZQpibGluZGx5IGNvbnZlcnRp bmcgaXQgdG8gZGV2bV9remFsbG9jKCkgdmVyeSBzb29uLgoKQmFydG9zegoKPiArICAgICAgIGZ3 ID0ga3phbGxvYyhzaXplb2YoKmZ3KSwgR0ZQX0tFUk5FTCk7Cj4gICAgICAgICBpZiAoIWZ3KQo+ ICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPgo+IEBAIC0yNDcsNiArMjY1LDcgQEAg c3RhdGljIGludCBycGlfZmlybXdhcmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikKPiAgICAgICAgIH0KPgo+ICAgICAgICAgaW5pdF9jb21wbGV0aW9uKCZmdy0+Yyk7Cj4gKyAg ICAgICBrcmVmX2luaXQoJmZ3LT5jb25zdW1lcnMpOwo+Cj4gICAgICAgICBwbGF0Zm9ybV9zZXRf ZHJ2ZGF0YShwZGV2LCBmdyk7Cj4KPiBAQCAtMjc1LDI1ICsyOTQsMzUgQEAgc3RhdGljIGludCBy cGlfZmlybXdhcmVfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gICAgICAg ICBycGlfaHdtb24gPSBOVUxMOwo+ICAgICAgICAgcGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIo cnBpX2Nsayk7Cj4gICAgICAgICBycGlfY2xrID0gTlVMTDsKPiAtICAgICAgIG1ib3hfZnJlZV9j aGFubmVsKGZ3LT5jaGFuKTsKPiArCj4gKyAgICAgICBycGlfZmlybXdhcmVfcHV0KGZ3KTsKPgo+ ICAgICAgICAgcmV0dXJuIDA7Cj4gIH0KPgo+ICAvKioKPiAtICogcnBpX2Zpcm13YXJlX2dldCAt IEdldCBwb2ludGVyIHRvIHJwaV9maXJtd2FyZSBzdHJ1Y3R1cmUuCj4gICAqIEBmaXJtd2FyZV9u b2RlOiAgICBQb2ludGVyIHRvIHRoZSBmaXJtd2FyZSBEZXZpY2UgVHJlZSBub2RlLgo+ICAgKgo+ ICsgKiBUaGUgcmVmZXJlbmNlIHRvIHJwaV9maXJtd2FyZSBoYXMgdG8gYmUgcmVsZWFzZWQgd2l0 aCBycGlfZmlybXdhcmVfcHV0KCkuCj4gKyAqCj4gICAqIFJldHVybnMgTlVMTCBpcyB0aGUgZmly bXdhcmUgZGV2aWNlIGlzIG5vdCByZWFkeS4KPiAgICovCj4gIHN0cnVjdCBycGlfZmlybXdhcmUg KnJwaV9maXJtd2FyZV9nZXQoc3RydWN0IGRldmljZV9ub2RlICpmaXJtd2FyZV9ub2RlKQo+ICB7 Cj4gICAgICAgICBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gb2ZfZmluZF9kZXZpY2Vf Ynlfbm9kZShmaXJtd2FyZV9ub2RlKTsKPiArICAgICAgIHN0cnVjdCBycGlfZmlybXdhcmUgKmZ3 Owo+Cj4gICAgICAgICBpZiAoIXBkZXYpCj4gICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ Cj4gLSAgICAgICByZXR1cm4gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4gKyAgICAgICBm dyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwo+ICsgICAgICAgaWYgKCFmdykKPiArICAg ICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gKwo+ICsgICAgICAgaWYgKCFrcmVmX2dldF91bmxl c3NfemVybygmZnctPmNvbnN1bWVycykpCj4gKyAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ ICsKPiArICAgICAgIHJldHVybiBmdzsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MX0dQTChycGlfZmly bXdhcmVfZ2V0KTsKPgo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3NvYy9iY20yODM1L3Jhc3BiZXJy eXBpLWZpcm13YXJlLmggYi9pbmNsdWRlL3NvYy9iY20yODM1L3Jhc3BiZXJyeXBpLWZpcm13YXJl LmgKPiBpbmRleCBjYzljZGJjNjY0MDMuLmZkZmVmN2ZlNDBkZiAxMDA2NDQKPiAtLS0gYS9pbmNs dWRlL3NvYy9iY20yODM1L3Jhc3BiZXJyeXBpLWZpcm13YXJlLmgKPiArKysgYi9pbmNsdWRlL3Nv Yy9iY20yODM1L3Jhc3BiZXJyeXBpLWZpcm13YXJlLmgKPiBAQCAtMTQwLDYgKzE0MCw3IEBAIGlu dCBycGlfZmlybXdhcmVfcHJvcGVydHkoc3RydWN0IHJwaV9maXJtd2FyZSAqZncsCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICB1MzIgdGFnLCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsKPiAg aW50IHJwaV9maXJtd2FyZV9wcm9wZXJ0eV9saXN0KHN0cnVjdCBycGlfZmlybXdhcmUgKmZ3LAo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLCBzaXplX3QgdGFnX3Np emUpOwo+ICt2b2lkIHJwaV9maXJtd2FyZV9wdXQoc3RydWN0IHJwaV9maXJtd2FyZSAqZncpOwo+ ICBzdHJ1Y3QgcnBpX2Zpcm13YXJlICpycGlfZmlybXdhcmVfZ2V0KHN0cnVjdCBkZXZpY2Vfbm9k ZSAqZmlybXdhcmVfbm9kZSk7Cj4gICNlbHNlCj4gIHN0YXRpYyBpbmxpbmUgaW50IHJwaV9maXJt d2FyZV9wcm9wZXJ0eShzdHJ1Y3QgcnBpX2Zpcm13YXJlICpmdywgdTMyIHRhZywKPiBAQCAtMTU0 LDYgKzE1NSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJwaV9maXJtd2FyZV9wcm9wZXJ0eV9saXN0 KHN0cnVjdCBycGlfZmlybXdhcmUgKmZ3LAo+ICAgICAgICAgcmV0dXJuIC1FTk9TWVM7Cj4gIH0K Pgo+ICtzdGF0aWMgaW5saW5lIHZvaWQgcnBpX2Zpcm13YXJlX3B1dChzdHJ1Y3QgcnBpX2Zpcm13 YXJlICpmdykgeyB9Cj4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IHJwaV9maXJtd2FyZSAqcnBpX2Zp cm13YXJlX2dldChzdHJ1Y3QgZGV2aWNlX25vZGUgKmZpcm13YXJlX25vZGUpCj4gIHsKPiAgICAg ICAgIHJldHVybiBOVUxMOwo+IC0tCj4gMi4yOS4yCj4KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZGV2ZWwgbWFpbGluZyBsaXN0CmRldmVsQGxpbnV4ZHJp dmVycHJvamVjdC5vcmcKaHR0cDovL2RyaXZlcmRldi5saW51eGRyaXZlcnByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpdmVyZGV2LWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 54686C63777 for ; Thu, 3 Dec 2020 08:07:06 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D590C2063A for ; Thu, 3 Dec 2020 08:07:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D590C2063A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=78eyiliPyFcSVDHWaGQlBhBkSoNSIC+SrlekD+zDP3E=; b=rR576xYnTboWqh5jMVTnVn2nM VFdAbwrtTCoLj7Y5mxeYfGuEhGYQ9rcYqSBaUve/N3ULFlRX1OX6oWzJdUxKKyx6JRMLgv6Q7FJAq FCxJ9/fXMBQUVgSCqfCNJDfzeoYMsZVEnyyRSpAlI5ry0sHEwHoE8sNOkUvlhfj2sFAi+xheBeRpk Ka7f/M6Kd+1IrJqumlmkM8jgn0LDuY/WN73wHE9BQKmnjevZDNjFGbrQdOYHrbVczrTMcn0PaN8AZ lv0dgGPfHquJi2Bn8LSatwzcohdSXTrVvipwlKpo+FMt6hL5EMTVJkFxoc0fxHWQG+XCZcZg2G9Xf CoBJxQnwA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kkjcL-0001T9-KV; Thu, 03 Dec 2020 08:05:33 +0000 Received: from mail-ej1-x642.google.com ([2a00:1450:4864:20::642]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kkjcI-0001S9-0l for linux-arm-kernel@lists.infradead.org; Thu, 03 Dec 2020 08:05:31 +0000 Received: by mail-ej1-x642.google.com with SMTP id jx16so2057725ejb.10 for ; Thu, 03 Dec 2020 00:05:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=FZ8VxZZvqmh6ehr3KHE/PiRk3db+weOkpDGOlsh3YO8=; b=haDseJv+D02T10aLAxQHXG0BsYACsfkijqaB+ELZmfch2JYU9g6y9ryqDyIqWShXaW yaAZ88xKKVmpIrZKV/qetu3zM2AbVORk0wYWL03XQMh8ss+hr7Dc6CnNOdvjOspJC/vQ R2df0RgSro0FHNGu8o3DpusAvPeMobIgNjOfc7hfwHJ6Nvy0U69h0GmKMctPOdP8JHuK uCRMiqbef850rMYfMmIEUS0TzdqaTlcSg4Jgua9sT1AuBgZSfdy1txMa/Fszl/iCAsRa 6RBF8zj3OIpntYgPprvZoROYfpZUKnhmmTVDrR3O2ZTkmVat83g3y0aDOoH39HHPuS4h RbOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=FZ8VxZZvqmh6ehr3KHE/PiRk3db+weOkpDGOlsh3YO8=; b=q+CiXbFl9AYGHddLHTLYNO1WqRvfnRk9v8YtGIqyIbo+ge7H5aqftFRGjNLdVLDtrO /wTFQEeuYxB7h3YrLdvaD7ZsJodYGvyVzUqUFkCDbUDfPAfDeW1hOqEQnDg5f47qY+y+ CY5k2sJV0ZvbnPFuGQc4rVksco6qw7PIRVWsVNOWGmET2R3FHAAKG+D8dbQggCKz4ox3 b7iQOPG+NVLivgmIuB2dk2vsGHfsJiNv5jjkiOeOJXoPAkZtu3XJwNwXuL+ZsFDEphAI mPJZDpyg0YQY8huR6xdQMY2YKNcEjHaik4qHL4m5oLgp6aNeSRfTWmmajTLhpZYtA7ZW x/sg== X-Gm-Message-State: AOAM531+qJrUUbrsd/IjOe7sY0VDHUgx6rtotKR0rQ9WU1P0nFtxWKXq T7Iptmpkq0K89ZAhohruiTXYgicxhDvM/4qYV1CFJQ== X-Google-Smtp-Source: ABdhPJxP2EJznI3pbg+Rqtm4SZQefIKFXf0kkiRRTqzbUDyEG5oMEZvNtOYbyFNg3cm8vTl+G0cfLIdKavT7T0DOD1k= X-Received: by 2002:a17:906:7f01:: with SMTP id d1mr1414079ejr.429.1606982726027; Thu, 03 Dec 2020 00:05:26 -0800 (PST) MIME-Version: 1.0 References: <20201123183833.18750-1-nsaenzjulienne@suse.de> <20201123183833.18750-2-nsaenzjulienne@suse.de> In-Reply-To: <20201123183833.18750-2-nsaenzjulienne@suse.de> From: Bartosz Golaszewski Date: Thu, 3 Dec 2020 09:05:15 +0100 Message-ID: Subject: Re: [PATCH v5 01/11] firmware: raspberrypi: Keep count of all consumers To: Nicolas Saenz Julienne X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201203_030530_182532_59D909F0 X-CRM114-Status: GOOD ( 27.05 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devel@driverdev.osuosl.org, linux-pwm@vger.kernel.org, Andy Shevchenko , Florian Fainelli , Scott Branden , linux-devicetree , Stephen Boyd , Ray Jui , Linus Walleij , Linux Input , LKML , linux-gpio , Greg KH , bcm-kernel-feedback-list@broadcom.com, wahrenst@gmx.net, Philipp Zabel , =?UTF-8?Q?Uwe_Kleine=2DK=C3=B6nig?= , Dmitry Torokhov , linux-clk , arm-soc , linux-rpi-kernel@lists.infradead.org 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 T24gTW9uLCBOb3YgMjMsIDIwMjAgYXQgNzozOCBQTSBOaWNvbGFzIFNhZW56IEp1bGllbm5lCjxu c2FlbnpqdWxpZW5uZUBzdXNlLmRlPiB3cm90ZToKPgo+IFdoZW4gdW5iaW5kaW5nIHRoZSBmaXJt d2FyZSBkZXZpY2Ugd2UgbmVlZCB0byBtYWtlIHN1cmUgaXQgaGFzIG5vCj4gY29uc3VtZXJzIGxl ZnQuIE90aGVyd2lzZSB3ZSdkIGxlYXZlIHRoZW0gd2l0aCBhIGZpcm13YXJlIGhhbmRsZQo+IHBv aW50aW5nIGF0IGZyZWVkIG1lbW9yeS4KPgo+IEtlZXAgYSByZWZlcmVuY2UgY291bnQgb2YgYWxs IGNvbnN1bWVycyBhbmQgaW50cm9kdWNlIHJwaV9maXJtd2FyZV9wdXQoKQo+IHdoaWNoIHdpbGwg cGVybWl0IGF1dG9tYXRpY2FsbHkgZGVjcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudCB1cG9uCj4g dW5iaW5kaW5nIGNvbnN1bWVyIGRyaXZlcnMuCj4KPiBTdWdnZXN0ZWQtYnk6IFV3ZSBLbGVpbmUt S8O2bmlnIDx1LmtsZWluZS1rb2VuaWdAcGVuZ3V0cm9uaXguZGU+Cj4gU2lnbmVkLW9mZi1ieTog Tmljb2xhcyBTYWVueiBKdWxpZW5uZSA8bnNhZW56anVsaWVubmVAc3VzZS5kZT4KPiAtLS0KPgo+ IENoYW5nZXMgc2luY2UgdjM6Cj4gLSBVc2Uga3JlZiBpbnN0ZWFkIG9mIHdhaXRpbmcgb24gcmVm Y291bnQKPgo+ICBkcml2ZXJzL2Zpcm13YXJlL3Jhc3BiZXJyeXBpLmMgICAgICAgICAgICAgfCAz NyArKysrKysrKysrKysrKysrKysrLS0tCj4gIGluY2x1ZGUvc29jL2JjbTI4MzUvcmFzcGJlcnJ5 cGktZmlybXdhcmUuaCB8ICAyICsrCj4gIDIgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygr KSwgNCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Zpcm13YXJlL3Jhc3Bi ZXJyeXBpLmMgYi9kcml2ZXJzL2Zpcm13YXJlL3Jhc3BiZXJyeXBpLmMKPiBpbmRleCAzMDI1OWRj OWI4MDUuLmVkNzkzYWVmNzg1MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2Zpcm13YXJlL3Jhc3Bi ZXJyeXBpLmMKPiArKysgYi9kcml2ZXJzL2Zpcm13YXJlL3Jhc3BiZXJyeXBpLmMKPiBAQCAtNyw2 ICs3LDcgQEAKPiAgICovCj4KPiAgI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5nLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9rcmVmLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9tYWlsYm94X2NsaWVudC5o Pgo+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9vZl9wbGF0 Zm9ybS5oPgo+IEBAIC0yNyw2ICsyOCw4IEBAIHN0cnVjdCBycGlfZmlybXdhcmUgewo+ICAgICAg ICAgc3RydWN0IG1ib3hfY2hhbiAqY2hhbjsgLyogVGhlIHByb3BlcnR5IGNoYW5uZWwuICovCj4g ICAgICAgICBzdHJ1Y3QgY29tcGxldGlvbiBjOwo+ICAgICAgICAgdTMyIGVuYWJsZWQ7Cj4gKwo+ ICsgICAgICAgc3RydWN0IGtyZWYgY29uc3VtZXJzOwo+ICB9Owo+Cj4gIHN0YXRpYyBERUZJTkVf TVVURVgodHJhbnNhY3Rpb25fbG9jayk7Cj4gQEAgLTIyNSwxMiArMjI4LDI3IEBAIHN0YXRpYyB2 b2lkIHJwaV9yZWdpc3Rlcl9jbGtfZHJpdmVyKHN0cnVjdCBkZXZpY2UgKmRldikKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgTlVMTCwgMCk7Cj4g IH0KPgo+ICtzdGF0aWMgdm9pZCBycGlfZmlybXdhcmVfZGVsZXRlKHN0cnVjdCBrcmVmICprcmVm KQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgcnBpX2Zpcm13YXJlICpmdyA9IGNvbnRhaW5lcl9vZihr cmVmLCBzdHJ1Y3QgcnBpX2Zpcm13YXJlLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3VtZXJzKTsKPiArCj4gKyAgICAgICBtYm94X2ZyZWVfY2hh bm5lbChmdy0+Y2hhbik7Cj4gKyAgICAgICBrZnJlZShmdyk7Cj4gK30KPiArCj4gK3ZvaWQgcnBp X2Zpcm13YXJlX3B1dChzdHJ1Y3QgcnBpX2Zpcm13YXJlICpmdykKPiArewo+ICsgICAgICAga3Jl Zl9wdXQoJmZ3LT5jb25zdW1lcnMsIHJwaV9maXJtd2FyZV9kZWxldGUpOwo+ICt9Cj4gK0VYUE9S VF9TWU1CT0xfR1BMKHJwaV9maXJtd2FyZV9wdXQpOwo+ICsKPiAgc3RhdGljIGludCBycGlfZmly bXdhcmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPiAgewo+ICAgICAgICAg c3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPiAgICAgICAgIHN0cnVjdCBycGlfZmly bXdhcmUgKmZ3Owo+Cj4gLSAgICAgICBmdyA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqZncp LCBHRlBfS0VSTkVMKTsKCk9uZSBuaXQgZnJvbSBteSBzaWRlOiBtYXliZSBhZGQgYSBjb21tZW50 IGhlcmUgc2F5aW5nIHRoYXQgeW91IHJlYWxseQp3YW50IHRvIHVzZSBub24tbWFuYWdlZCBremFs bG9jKCkgYmVjYXVzZSB5b3UncmUgZ29pbmcgdG8gZ2V0IHBlb3BsZQpibGluZGx5IGNvbnZlcnRp bmcgaXQgdG8gZGV2bV9remFsbG9jKCkgdmVyeSBzb29uLgoKQmFydG9zegoKPiArICAgICAgIGZ3 ID0ga3phbGxvYyhzaXplb2YoKmZ3KSwgR0ZQX0tFUk5FTCk7Cj4gICAgICAgICBpZiAoIWZ3KQo+ ICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPgo+IEBAIC0yNDcsNiArMjY1LDcgQEAg c3RhdGljIGludCBycGlfZmlybXdhcmVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRl dikKPiAgICAgICAgIH0KPgo+ICAgICAgICAgaW5pdF9jb21wbGV0aW9uKCZmdy0+Yyk7Cj4gKyAg ICAgICBrcmVmX2luaXQoJmZ3LT5jb25zdW1lcnMpOwo+Cj4gICAgICAgICBwbGF0Zm9ybV9zZXRf ZHJ2ZGF0YShwZGV2LCBmdyk7Cj4KPiBAQCAtMjc1LDI1ICsyOTQsMzUgQEAgc3RhdGljIGludCBy cGlfZmlybXdhcmVfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gICAgICAg ICBycGlfaHdtb24gPSBOVUxMOwo+ICAgICAgICAgcGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIo cnBpX2Nsayk7Cj4gICAgICAgICBycGlfY2xrID0gTlVMTDsKPiAtICAgICAgIG1ib3hfZnJlZV9j aGFubmVsKGZ3LT5jaGFuKTsKPiArCj4gKyAgICAgICBycGlfZmlybXdhcmVfcHV0KGZ3KTsKPgo+ ICAgICAgICAgcmV0dXJuIDA7Cj4gIH0KPgo+ICAvKioKPiAtICogcnBpX2Zpcm13YXJlX2dldCAt IEdldCBwb2ludGVyIHRvIHJwaV9maXJtd2FyZSBzdHJ1Y3R1cmUuCj4gICAqIEBmaXJtd2FyZV9u b2RlOiAgICBQb2ludGVyIHRvIHRoZSBmaXJtd2FyZSBEZXZpY2UgVHJlZSBub2RlLgo+ICAgKgo+ ICsgKiBUaGUgcmVmZXJlbmNlIHRvIHJwaV9maXJtd2FyZSBoYXMgdG8gYmUgcmVsZWFzZWQgd2l0 aCBycGlfZmlybXdhcmVfcHV0KCkuCj4gKyAqCj4gICAqIFJldHVybnMgTlVMTCBpcyB0aGUgZmly bXdhcmUgZGV2aWNlIGlzIG5vdCByZWFkeS4KPiAgICovCj4gIHN0cnVjdCBycGlfZmlybXdhcmUg KnJwaV9maXJtd2FyZV9nZXQoc3RydWN0IGRldmljZV9ub2RlICpmaXJtd2FyZV9ub2RlKQo+ICB7 Cj4gICAgICAgICBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gb2ZfZmluZF9kZXZpY2Vf Ynlfbm9kZShmaXJtd2FyZV9ub2RlKTsKPiArICAgICAgIHN0cnVjdCBycGlfZmlybXdhcmUgKmZ3 Owo+Cj4gICAgICAgICBpZiAoIXBkZXYpCj4gICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ Cj4gLSAgICAgICByZXR1cm4gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4gKyAgICAgICBm dyA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwo+ICsgICAgICAgaWYgKCFmdykKPiArICAg ICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gKwo+ICsgICAgICAgaWYgKCFrcmVmX2dldF91bmxl c3NfemVybygmZnctPmNvbnN1bWVycykpCj4gKyAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwo+ ICsKPiArICAgICAgIHJldHVybiBmdzsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MX0dQTChycGlfZmly bXdhcmVfZ2V0KTsKPgo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3NvYy9iY20yODM1L3Jhc3BiZXJy eXBpLWZpcm13YXJlLmggYi9pbmNsdWRlL3NvYy9iY20yODM1L3Jhc3BiZXJyeXBpLWZpcm13YXJl LmgKPiBpbmRleCBjYzljZGJjNjY0MDMuLmZkZmVmN2ZlNDBkZiAxMDA2NDQKPiAtLS0gYS9pbmNs dWRlL3NvYy9iY20yODM1L3Jhc3BiZXJyeXBpLWZpcm13YXJlLmgKPiArKysgYi9pbmNsdWRlL3Nv Yy9iY20yODM1L3Jhc3BiZXJyeXBpLWZpcm13YXJlLmgKPiBAQCAtMTQwLDYgKzE0MCw3IEBAIGlu dCBycGlfZmlybXdhcmVfcHJvcGVydHkoc3RydWN0IHJwaV9maXJtd2FyZSAqZncsCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICB1MzIgdGFnLCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsKPiAg aW50IHJwaV9maXJtd2FyZV9wcm9wZXJ0eV9saXN0KHN0cnVjdCBycGlfZmlybXdhcmUgKmZ3LAo+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLCBzaXplX3QgdGFnX3Np emUpOwo+ICt2b2lkIHJwaV9maXJtd2FyZV9wdXQoc3RydWN0IHJwaV9maXJtd2FyZSAqZncpOwo+ ICBzdHJ1Y3QgcnBpX2Zpcm13YXJlICpycGlfZmlybXdhcmVfZ2V0KHN0cnVjdCBkZXZpY2Vfbm9k ZSAqZmlybXdhcmVfbm9kZSk7Cj4gICNlbHNlCj4gIHN0YXRpYyBpbmxpbmUgaW50IHJwaV9maXJt d2FyZV9wcm9wZXJ0eShzdHJ1Y3QgcnBpX2Zpcm13YXJlICpmdywgdTMyIHRhZywKPiBAQCAtMTU0 LDYgKzE1NSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJwaV9maXJtd2FyZV9wcm9wZXJ0eV9saXN0 KHN0cnVjdCBycGlfZmlybXdhcmUgKmZ3LAo+ICAgICAgICAgcmV0dXJuIC1FTk9TWVM7Cj4gIH0K Pgo+ICtzdGF0aWMgaW5saW5lIHZvaWQgcnBpX2Zpcm13YXJlX3B1dChzdHJ1Y3QgcnBpX2Zpcm13 YXJlICpmdykgeyB9Cj4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IHJwaV9maXJtd2FyZSAqcnBpX2Zp cm13YXJlX2dldChzdHJ1Y3QgZGV2aWNlX25vZGUgKmZpcm13YXJlX25vZGUpCj4gIHsKPiAgICAg ICAgIHJldHVybiBOVUxMOwo+IC0tCj4gMi4yOS4yCj4KCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0Cmxp bnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFk Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK