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 89A8FD7789B for ; Fri, 23 Jan 2026 23:45:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: Content-Type:In-Reply-To:From:References:Cc:To:Subject:MIME-Version:Date: Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ySzEIvHsY36m17Y60SQgx6T97G8qNfOq3WKRr9UwxDY=; b=NGWA7bs8Pq+jP/qG3JO7zP+zLA xA7k7ra/4JDnYoK9kxYV+bMENxIGt7LnObNYuVuDn+fOWcpcwam7hrIixh7ArmcIMlCOU9NQia+UN /XVmWYTcPCS8u94rkZU+XReMs4ugWPPi7usQYfq+P9SgNytz7SCXaDda03J5TNfdfFkdgpwqNOFC0 rxhjKYVS89IQrHsYmRDF5rb8Qketgm0gw9wjufvPxoVKlHcEbhuVrvIX0x+7+ery0IKMIoPSMdjR6 F8mceF0/KBzHJOe2GSOnXuNP6lxy5einvwqEZs1yClOh0AnE5CruEAPxwDOO56GndVVcZo2AR9eLE 9szsY+wg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vjQqM-00000009aXP-4C16; Fri, 23 Jan 2026 23:45:35 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vjQqK-00000009aX1-08eN; Fri, 23 Jan 2026 23:45:33 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id BCC431476; Fri, 23 Jan 2026 15:45:22 -0800 (PST) Received: from [10.57.51.35] (unknown [10.57.51.35]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3A8B73F632; Fri, 23 Jan 2026 15:45:27 -0800 (PST) Message-ID: Date: Fri, 23 Jan 2026 23:45:25 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] gpio: rockchip: mark the GPIO controller as sleeping To: =?UTF-8?Q?Heiko_St=C3=BCbner?= , Bartosz Golaszewski Cc: Sebastian Reichel , Bartosz Golaszewski , Linus Walleij , linux-gpio@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Marek Szyprowski References: <20260106090011.21603-1-bartosz.golaszewski@oss.qualcomm.com> <16771005.dW097sEU6C@diego> From: Robin Murphy Content-Language: en-GB In-Reply-To: <16771005.dW097sEU6C@diego> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260123_154532_203869_EB59D74A X-CRM114-Status: GOOD ( 29.62 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On 2026-01-23 9:52 pm, Heiko Stübner wrote: > Am Freitag, 23. Januar 2026, 21:57:50 Mitteleuropäische Normalzeit schrieb Robin Murphy: >> On 2026-01-23 7:27 pm, Bartosz Golaszewski wrote: >>> On Fri, Jan 23, 2026 at 2:27 PM Robin Murphy wrote: >>>> >>>>>> >>>>>> It's not a big issue for the hdmirx driver specifically, but I wonder >>>>>> how many more (less often tested) rockchip drivers use GPIOs from their >>>>>> IRQ handler. >>>> >>>> Yeah, seems this finally reached my distro kernel and now the kernel log >>>> on one of my boards is totally flooded from gpio_ir_recv_irq() >>>> (legitimately) calling gpio_get_value()... that's not really OK :/ >>>> >>> >>> This has always been a sleeping driver. The driver does not know the >>> firmware configuration it'll be passed and - as I explained above - >>> depending on the lookup flags, we may call .direction_output() and >>> descend into pinctrl which uses mutexes. Ideally, we'd make >>> GPIO-facing pinctrl operations not sleeping but this is a long-time >>> project and quite complex. Telling the GPIO core that it cannot sleep >>> is simply incorrect - even if it worked for this particular use-case - >>> and has an impact on paths we're choosing. >>> >>> Can the GPIO reading in the gpio-ir-recv driver be done from a >>> high-priority workqueue by any chance? Or can we make it a threaded >>> interrupt? >> >> rockchip_gpio_get() is essentially nothing but a readl(), please explain >> how that could sleep? Saying that countless in-tree and out-of-tree >> arbitrary GPIO consumer drivers should pointlessly refactor just to >> avoid the GPIO core spewing spurious WARN()s is not reasonable. >> >> I appreciate there are cases where the warning most definitely *is* >> relevant, which is why I picked up this discussion rather than proposing >> a revert, even though the documentation says: >> >> * @can_sleep: flag must be set iff get()/set() methods sleep, as they >> >> where since neither rockchip_gpio_get() nor rockchip_gpio_set() >> themselves sleep, apparently this flag must *not* be set. It's >> irrelevant that a higher-level gpiod_set_value() invocation might end up >> calling .set_direction before it gets as far as calling .set - that's >> not the gpio_chip's fault, and gpiolib knows exactly what it's doing. >> >> What I'm getting at is that getting, and even (directly) setting a >> GPIO's value can reasonably be expected to be more common and applicable >> in a wider range of circumstances than changing its configuration, so >> the former should not be unfairly penalised because of the latter. This >> case is clearly distinct from external GPIO expanders on buses that >> fundamentally can't guarantee fast memory-mapped access at all, so >> trying to conflate it under the same flag doesn't fit, and that needs >> fixing ASAP, before the reverts *do* start piling in. Maybe that just >> means some new dir_can_sleep or more abstract dir_needs_pinctrl flag >> might suffice, maybe it's something more involved; I don't really know, >> and I don't have the bandwidth to take this on myself. > > the sadest part here is, that the dive from gpio to pinctrl is sort of > a remant of the past. Originally it was meant to "automatically" set > the gpio pinmux, but nowadays we (at least try to) have pinctrl entries > doing that separately. > > But of course that's hard to enforce now, because we can't really know > where gpios without pinctrl might hide, and of course newer kernels > need to still run with old DTBs. > > But... > > rockchip_pmx_gpio_set_direction()'s only function is to set the GPIO > pinmux - it does not handle the actual the actual direction. > > Can't we move the pinctrl_gpio_direction_input/_output() call just over > to the request callback of the gpiochip? In fact, after an hour or so chasing through the code, is that not just pretty much this? (Not even compile tested as I'd rather go to bed now...) Cheers, Robin. ----->8----- diff --git a/drivers/gpio/gpio-rockchip.c b/drivers/gpio/gpio-rockchip.c index 47174eb3ba76..118edd57c252 100644 --- a/drivers/gpio/gpio-rockchip.c +++ b/drivers/gpio/gpio-rockchip.c @@ -164,12 +164,6 @@ static int rockchip_gpio_set_direction(struct gpio_chip *chip, unsigned long flags; u32 data = input ? 0 : 1; - - if (input) - pinctrl_gpio_direction_input(chip, offset); - else - pinctrl_gpio_direction_output(chip, offset); - raw_spin_lock_irqsave(&bank->slock, flags); rockchip_gpio_writel_bit(bank, offset, data, bank->gpio_regs->port_ddr); raw_spin_unlock_irqrestore(&bank->slock, flags); diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c index e44ef262beec..2fc67aeafdb3 100644 --- a/drivers/pinctrl/pinctrl-rockchip.c +++ b/drivers/pinctrl/pinctrl-rockchip.c @@ -3545,10 +3545,9 @@ static int rockchip_pmx_set(struct pinctrl_dev *pctldev, unsigned selector, return 0; } -static int rockchip_pmx_gpio_set_direction(struct pinctrl_dev *pctldev, - struct pinctrl_gpio_range *range, - unsigned offset, - bool input) +static int rockchip_pmx_gpio_request_enable(struct pinctrl_dev *pctldev, + struct pinctrl_gpio_range *range, + unsigned int offset) { struct rockchip_pinctrl *info = pinctrl_dev_get_drvdata(pctldev); struct rockchip_pin_bank *bank; @@ -3562,7 +3561,7 @@ static const struct pinmux_ops rockchip_pmx_ops = { .get_function_name = rockchip_pmx_get_func_name, .get_function_groups = rockchip_pmx_get_groups, .set_mux = rockchip_pmx_set, - .gpio_set_direction = rockchip_pmx_gpio_set_direction, + .gpio_request_enable = rockchip_pmx_gpio_request_enable, }; /* 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 240F6D778B1 for ; Fri, 23 Jan 2026 23:45:43 +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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=vE9iJjgtnwMIxCnTDxoIk2IuFS7Qcb3XhHlaylT+pGk=; b=b28AQo04TwwBdP vSKWZbaO5JrA+GeUVL+UHYEyp7cJVtwIw+hNG9HLNDLgNT7CMEmuR9qGbxM39YRauo0KYAQESa8QP 2a0/LrxfxFjQG9+tcbNblOU0bBS13Yelezb/o86qFldvSSrIoLoqanXMzJxnfgruV8fusyFSAZNmr cs2BM4PA1G7+CO+eHkfzPaDVFZGh/QZZ73jaEETf2ssC/yzDn0ZG03eOnUSRr9axxMXDADRIjrgIa DsOmNJaEMua5HlG19aF5/XDLH98zhnCGnHHa+q0leQ9DbZpctHZcwj67ddaX09dTTV/vjSuUIt/7a Aasd8droEcAGbuld4Vvw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vjQqN-00000009aXT-1JHl; Fri, 23 Jan 2026 23:45:35 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1vjQqK-00000009aX1-08eN; Fri, 23 Jan 2026 23:45:33 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id BCC431476; Fri, 23 Jan 2026 15:45:22 -0800 (PST) Received: from [10.57.51.35] (unknown [10.57.51.35]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3A8B73F632; Fri, 23 Jan 2026 15:45:27 -0800 (PST) Message-ID: Date: Fri, 23 Jan 2026 23:45:25 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] gpio: rockchip: mark the GPIO controller as sleeping To: =?UTF-8?Q?Heiko_St=C3=BCbner?= , Bartosz Golaszewski Cc: Sebastian Reichel , Bartosz Golaszewski , Linus Walleij , linux-gpio@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Marek Szyprowski References: <20260106090011.21603-1-bartosz.golaszewski@oss.qualcomm.com> <16771005.dW097sEU6C@diego> From: Robin Murphy Content-Language: en-GB In-Reply-To: <16771005.dW097sEU6C@diego> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260123_154532_203869_EB59D74A X-CRM114-Status: GOOD ( 29.62 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org T24gMjAyNi0wMS0yMyA5OjUyIHBtLCBIZWlrbyBTdMO8Ym5lciB3cm90ZToKPiBBbSBGcmVpdGFn LCAyMy4gSmFudWFyIDIwMjYsIDIxOjU3OjUwIE1pdHRlbGV1cm9ww6Rpc2NoZSBOb3JtYWx6ZWl0 IHNjaHJpZWIgUm9iaW4gTXVycGh5Ogo+PiBPbiAyMDI2LTAxLTIzIDc6MjcgcG0sIEJhcnRvc3og R29sYXN6ZXdza2kgd3JvdGU6Cj4+PiBPbiBGcmksIEphbiAyMywgMjAyNiBhdCAyOjI34oCvUE0g Um9iaW4gTXVycGh5IDxyb2Jpbi5tdXJwaHlAYXJtLmNvbT4gd3JvdGU6Cj4+Pj4KPj4+Pj4+Cj4+ Pj4+PiBJdCdzIG5vdCBhIGJpZyBpc3N1ZSBmb3IgdGhlIGhkbWlyeCBkcml2ZXIgc3BlY2lmaWNh bGx5LCBidXQgSSB3b25kZXIKPj4+Pj4+IGhvdyBtYW55IG1vcmUgKGxlc3Mgb2Z0ZW4gdGVzdGVk KSByb2NrY2hpcCBkcml2ZXJzIHVzZSBHUElPcyBmcm9tIHRoZWlyCj4+Pj4+PiBJUlEgaGFuZGxl ci4KPj4+Pgo+Pj4+IFllYWgsIHNlZW1zIHRoaXMgZmluYWxseSByZWFjaGVkIG15IGRpc3RybyBr ZXJuZWwgYW5kIG5vdyB0aGUga2VybmVsIGxvZwo+Pj4+IG9uIG9uZSBvZiBteSBib2FyZHMgaXMg dG90YWxseSBmbG9vZGVkIGZyb20gZ3Bpb19pcl9yZWN2X2lycSgpCj4+Pj4gKGxlZ2l0aW1hdGVs eSkgY2FsbGluZyBncGlvX2dldF92YWx1ZSgpLi4uIHRoYXQncyBub3QgcmVhbGx5IE9LIDovCj4+ Pj4KPj4+Cj4+PiBUaGlzIGhhcyBhbHdheXMgYmVlbiBhIHNsZWVwaW5nIGRyaXZlci4gVGhlIGRy aXZlciBkb2VzIG5vdCBrbm93IHRoZQo+Pj4gZmlybXdhcmUgY29uZmlndXJhdGlvbiBpdCdsbCBi ZSBwYXNzZWQgYW5kIC0gYXMgSSBleHBsYWluZWQgYWJvdmUgLQo+Pj4gZGVwZW5kaW5nIG9uIHRo ZSBsb29rdXAgZmxhZ3MsIHdlIG1heSBjYWxsIC5kaXJlY3Rpb25fb3V0cHV0KCkgYW5kCj4+PiBk ZXNjZW5kIGludG8gcGluY3RybCB3aGljaCB1c2VzIG11dGV4ZXMuIElkZWFsbHksIHdlJ2QgbWFr ZQo+Pj4gR1BJTy1mYWNpbmcgcGluY3RybCBvcGVyYXRpb25zIG5vdCBzbGVlcGluZyBidXQgdGhp cyBpcyBhIGxvbmctdGltZQo+Pj4gcHJvamVjdCBhbmQgcXVpdGUgY29tcGxleC4gVGVsbGluZyB0 aGUgR1BJTyBjb3JlIHRoYXQgaXQgY2Fubm90IHNsZWVwCj4+PiBpcyBzaW1wbHkgaW5jb3JyZWN0 IC0gZXZlbiBpZiBpdCB3b3JrZWQgZm9yIHRoaXMgcGFydGljdWxhciB1c2UtY2FzZSAtCj4+PiBh bmQgaGFzIGFuIGltcGFjdCBvbiBwYXRocyB3ZSdyZSBjaG9vc2luZy4KPj4+Cj4+PiBDYW4gdGhl IEdQSU8gcmVhZGluZyBpbiB0aGUgZ3Bpby1pci1yZWN2IGRyaXZlciBiZSBkb25lIGZyb20gYQo+ Pj4gaGlnaC1wcmlvcml0eSB3b3JrcXVldWUgYnkgYW55IGNoYW5jZT8gT3IgY2FuIHdlIG1ha2Ug aXQgYSB0aHJlYWRlZAo+Pj4gaW50ZXJydXB0Pwo+Pgo+PiByb2NrY2hpcF9ncGlvX2dldCgpIGlz IGVzc2VudGlhbGx5IG5vdGhpbmcgYnV0IGEgcmVhZGwoKSwgcGxlYXNlIGV4cGxhaW4KPj4gaG93 IHRoYXQgY291bGQgc2xlZXA/IFNheWluZyB0aGF0IGNvdW50bGVzcyBpbi10cmVlIGFuZCBvdXQt b2YtdHJlZQo+PiBhcmJpdHJhcnkgR1BJTyBjb25zdW1lciBkcml2ZXJzIHNob3VsZCBwb2ludGxl c3NseSByZWZhY3RvciBqdXN0IHRvCj4+IGF2b2lkIHRoZSBHUElPIGNvcmUgc3Bld2luZyBzcHVy aW91cyBXQVJOKClzIGlzIG5vdCByZWFzb25hYmxlLgo+Pgo+PiBJIGFwcHJlY2lhdGUgdGhlcmUg YXJlIGNhc2VzIHdoZXJlIHRoZSB3YXJuaW5nIG1vc3QgZGVmaW5pdGVseSAqaXMqCj4+IHJlbGV2 YW50LCB3aGljaCBpcyB3aHkgSSBwaWNrZWQgdXAgdGhpcyBkaXNjdXNzaW9uIHJhdGhlciB0aGFu IHByb3Bvc2luZwo+PiBhIHJldmVydCwgZXZlbiB0aG91Z2ggdGhlIGRvY3VtZW50YXRpb24gc2F5 czoKPj4KPj4gICAgKiBAY2FuX3NsZWVwOiBmbGFnIG11c3QgYmUgc2V0IGlmZiBnZXQoKS9zZXQo KSBtZXRob2RzIHNsZWVwLCBhcyB0aGV5Cj4+Cj4+IHdoZXJlIHNpbmNlIG5laXRoZXIgcm9ja2No aXBfZ3Bpb19nZXQoKSBub3Igcm9ja2NoaXBfZ3Bpb19zZXQoKQo+PiB0aGVtc2VsdmVzIHNsZWVw LCBhcHBhcmVudGx5IHRoaXMgZmxhZyBtdXN0ICpub3QqIGJlIHNldC4gSXQncwo+PiBpcnJlbGV2 YW50IHRoYXQgYSBoaWdoZXItbGV2ZWwgZ3Bpb2Rfc2V0X3ZhbHVlKCkgaW52b2NhdGlvbiBtaWdo dCBlbmQgdXAKPj4gY2FsbGluZyAuc2V0X2RpcmVjdGlvbiBiZWZvcmUgaXQgZ2V0cyBhcyBmYXIg YXMgY2FsbGluZyAuc2V0IC0gdGhhdCdzCj4+IG5vdCB0aGUgZ3Bpb19jaGlwJ3MgZmF1bHQsIGFu ZCBncGlvbGliIGtub3dzIGV4YWN0bHkgd2hhdCBpdCdzIGRvaW5nLgo+Pgo+PiBXaGF0IEknbSBn ZXR0aW5nIGF0IGlzIHRoYXQgZ2V0dGluZywgYW5kIGV2ZW4gKGRpcmVjdGx5KSBzZXR0aW5nIGEK Pj4gR1BJTydzIHZhbHVlIGNhbiByZWFzb25hYmx5IGJlIGV4cGVjdGVkIHRvIGJlIG1vcmUgY29t bW9uIGFuZCBhcHBsaWNhYmxlCj4+IGluIGEgd2lkZXIgcmFuZ2Ugb2YgY2lyY3Vtc3RhbmNlcyB0 aGFuIGNoYW5naW5nIGl0cyBjb25maWd1cmF0aW9uLCBzbwo+PiB0aGUgZm9ybWVyIHNob3VsZCBu b3QgYmUgdW5mYWlybHkgcGVuYWxpc2VkIGJlY2F1c2Ugb2YgdGhlIGxhdHRlci4gVGhpcwo+PiBj YXNlIGlzIGNsZWFybHkgZGlzdGluY3QgZnJvbSBleHRlcm5hbCBHUElPIGV4cGFuZGVycyBvbiBi dXNlcyB0aGF0Cj4+IGZ1bmRhbWVudGFsbHkgY2FuJ3QgZ3VhcmFudGVlIGZhc3QgbWVtb3J5LW1h cHBlZCBhY2Nlc3MgYXQgYWxsLCBzbwo+PiB0cnlpbmcgdG8gY29uZmxhdGUgaXQgdW5kZXIgdGhl IHNhbWUgZmxhZyBkb2Vzbid0IGZpdCwgYW5kIHRoYXQgbmVlZHMKPj4gZml4aW5nIEFTQVAsIGJl Zm9yZSB0aGUgcmV2ZXJ0cyAqZG8qIHN0YXJ0IHBpbGluZyBpbi4gTWF5YmUgdGhhdCBqdXN0Cj4+ IG1lYW5zIHNvbWUgbmV3IGRpcl9jYW5fc2xlZXAgb3IgbW9yZSBhYnN0cmFjdCBkaXJfbmVlZHNf cGluY3RybCBmbGFnCj4+IG1pZ2h0IHN1ZmZpY2UsIG1heWJlIGl0J3Mgc29tZXRoaW5nIG1vcmUg aW52b2x2ZWQ7IEkgZG9uJ3QgcmVhbGx5IGtub3csCj4+IGFuZCBJIGRvbid0IGhhdmUgdGhlIGJh bmR3aWR0aCB0byB0YWtlIHRoaXMgb24gbXlzZWxmLgo+IAo+IHRoZSBzYWRlc3QgcGFydCBoZXJl IGlzLCB0aGF0IHRoZSBkaXZlIGZyb20gZ3BpbyB0byBwaW5jdHJsIGlzIHNvcnQgb2YKPiBhIHJl bWFudCBvZiB0aGUgcGFzdC4gT3JpZ2luYWxseSBpdCB3YXMgbWVhbnQgdG8gImF1dG9tYXRpY2Fs bHkiIHNldAo+IHRoZSBncGlvIHBpbm11eCwgYnV0IG5vd2FkYXlzIHdlIChhdCBsZWFzdCB0cnkg dG8pIGhhdmUgcGluY3RybCBlbnRyaWVzCj4gZG9pbmcgdGhhdCBzZXBhcmF0ZWx5Lgo+IAo+IEJ1 dCBvZiBjb3Vyc2UgdGhhdCdzIGhhcmQgdG8gZW5mb3JjZSBub3csIGJlY2F1c2Ugd2UgY2FuJ3Qg cmVhbGx5IGtub3cKPiB3aGVyZSBncGlvcyB3aXRob3V0IHBpbmN0cmwgbWlnaHQgaGlkZSwgYW5k IG9mIGNvdXJzZSBuZXdlciBrZXJuZWxzCj4gbmVlZCB0byBzdGlsbCBydW4gd2l0aCBvbGQgRFRC cy4KPiAKPiBCdXQuLi4KPiAKPiByb2NrY2hpcF9wbXhfZ3Bpb19zZXRfZGlyZWN0aW9uKCkncyBv bmx5IGZ1bmN0aW9uIGlzIHRvIHNldCB0aGUgR1BJTwo+IHBpbm11eCAtIGl0IGRvZXMgbm90IGhh bmRsZSB0aGUgYWN0dWFsIHRoZSBhY3R1YWwgZGlyZWN0aW9uLgo+IAo+IENhbid0IHdlIG1vdmUg dGhlIHBpbmN0cmxfZ3Bpb19kaXJlY3Rpb25faW5wdXQvX291dHB1dCgpIGNhbGwganVzdCBvdmVy Cj4gdG8gdGhlIHJlcXVlc3QgY2FsbGJhY2sgb2YgdGhlIGdwaW9jaGlwPwoKSW4gZmFjdCwgYWZ0 ZXIgYW4gaG91ciBvciBzbyBjaGFzaW5nIHRocm91Z2ggdGhlIGNvZGUsIGlzIHRoYXQgbm90IGp1 c3QKcHJldHR5IG11Y2ggdGhpcz8gKE5vdCBldmVuIGNvbXBpbGUgdGVzdGVkIGFzIEknZCByYXRo ZXIgZ28gdG8gYmVkIG5vdy4uLikKCkNoZWVycywKUm9iaW4uCgotLS0tLT44LS0tLS0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3Bpby9ncGlvLXJvY2tjaGlwLmMgYi9kcml2ZXJzL2dwaW8vZ3Bpby1y b2NrY2hpcC5jCmluZGV4IDQ3MTc0ZWIzYmE3Ni4uMTE4ZWRkNTdjMjUyIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwaW8vZ3Bpby1yb2NrY2hpcC5jCisrKyBiL2RyaXZlcnMvZ3Bpby9ncGlvLXJvY2tj aGlwLmMKQEAgLTE2NCwxMiArMTY0LDYgQEAgc3RhdGljIGludCByb2NrY2hpcF9ncGlvX3NldF9k aXJlY3Rpb24oc3RydWN0IGdwaW9fY2hpcCAqY2hpcCwKICAJdW5zaWduZWQgbG9uZyBmbGFnczsK ICAJdTMyIGRhdGEgPSBpbnB1dCA/IDAgOiAxOwogIAotCi0JaWYgKGlucHV0KQotCQlwaW5jdHJs X2dwaW9fZGlyZWN0aW9uX2lucHV0KGNoaXAsIG9mZnNldCk7Ci0JZWxzZQotCQlwaW5jdHJsX2dw aW9fZGlyZWN0aW9uX291dHB1dChjaGlwLCBvZmZzZXQpOwotCiAgCXJhd19zcGluX2xvY2tfaXJx c2F2ZSgmYmFuay0+c2xvY2ssIGZsYWdzKTsKICAJcm9ja2NoaXBfZ3Bpb193cml0ZWxfYml0KGJh bmssIG9mZnNldCwgZGF0YSwgYmFuay0+Z3Bpb19yZWdzLT5wb3J0X2Rkcik7CiAgCXJhd19zcGlu X3VubG9ja19pcnFyZXN0b3JlKCZiYW5rLT5zbG9jaywgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9waW5jdHJsL3BpbmN0cmwtcm9ja2NoaXAuYyBiL2RyaXZlcnMvcGluY3RybC9waW5jdHJs LXJvY2tjaGlwLmMKaW5kZXggZTQ0ZWYyNjJiZWVjLi4yZmM2N2FlYWZkYjMgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvcGluY3RybC9waW5jdHJsLXJvY2tjaGlwLmMKKysrIGIvZHJpdmVycy9waW5jdHJs L3BpbmN0cmwtcm9ja2NoaXAuYwpAQCAtMzU0NSwxMCArMzU0NSw5IEBAIHN0YXRpYyBpbnQgcm9j a2NoaXBfcG14X3NldChzdHJ1Y3QgcGluY3RybF9kZXYgKnBjdGxkZXYsIHVuc2lnbmVkIHNlbGVj dG9yLAogIAlyZXR1cm4gMDsKICB9CiAgCi1zdGF0aWMgaW50IHJvY2tjaGlwX3BteF9ncGlvX3Nl dF9kaXJlY3Rpb24oc3RydWN0IHBpbmN0cmxfZGV2ICpwY3RsZGV2LAotCQkJCQkgICBzdHJ1Y3Qg cGluY3RybF9ncGlvX3JhbmdlICpyYW5nZSwKLQkJCQkJICAgdW5zaWduZWQgb2Zmc2V0LAotCQkJ CQkgICBib29sIGlucHV0KQorc3RhdGljIGludCByb2NrY2hpcF9wbXhfZ3Bpb19yZXF1ZXN0X2Vu YWJsZShzdHJ1Y3QgcGluY3RybF9kZXYgKnBjdGxkZXYsCisJCQkJCSAgICBzdHJ1Y3QgcGluY3Ry bF9ncGlvX3JhbmdlICpyYW5nZSwKKwkJCQkJICAgIHVuc2lnbmVkIGludCBvZmZzZXQpCiAgewog IAlzdHJ1Y3Qgcm9ja2NoaXBfcGluY3RybCAqaW5mbyA9IHBpbmN0cmxfZGV2X2dldF9kcnZkYXRh KHBjdGxkZXYpOwogIAlzdHJ1Y3Qgcm9ja2NoaXBfcGluX2JhbmsgKmJhbms7CkBAIC0zNTYyLDcg KzM1NjEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHBpbm11eF9vcHMgcm9ja2NoaXBfcG14X29w cyA9IHsKICAJLmdldF9mdW5jdGlvbl9uYW1lCT0gcm9ja2NoaXBfcG14X2dldF9mdW5jX25hbWUs CiAgCS5nZXRfZnVuY3Rpb25fZ3JvdXBzCT0gcm9ja2NoaXBfcG14X2dldF9ncm91cHMsCiAgCS5z ZXRfbXV4CQk9IHJvY2tjaGlwX3BteF9zZXQsCi0JLmdwaW9fc2V0X2RpcmVjdGlvbgk9IHJvY2tj aGlwX3BteF9ncGlvX3NldF9kaXJlY3Rpb24sCisJLmdwaW9fcmVxdWVzdF9lbmFibGUJPSByb2Nr Y2hpcF9wbXhfZ3Bpb19yZXF1ZXN0X2VuYWJsZSwKICB9OwogIAogIC8qCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtcm9ja2NoaXAgbWFpbGlu ZyBsaXN0CkxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yb2NrY2hpcAo=