From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A6D5667C52 for ; Sun, 3 Mar 2024 15:52:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709481160; cv=none; b=EFkmDohjkSaUpeB9aaXECT5uEbTSuNXV2zTYEegXrbqJCtsbkvqUYIXaQFYhRYa6iIEq4yEj4H121H69TTehO4MkV50Gu9Gat3uvodEzsTOqGJGbSSHbqxm1GUsuAmCbUo1xOAXOKZ25mKa8Htcw71uRvBWj9SEtXXVXDYLdt/0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709481160; c=relaxed/simple; bh=heBYFeJDqEutK0Jap5MQNGri5HlpLGdN4xYRo+19dGA=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=k9BSCO2mk6x7TVRdu7EU8HXXs9jVZFiS25Q3JF1LFFH6j1Okq+CusT8ZMPe4VnQ4ggx55umz14O1K9rFzjQUa9b4dAzer9gCGdBmBWiG5giljMFDK08uBJjqqBnsLMtaM+VALC5puDLlwN1HHfMVXeHHxS59S5BWA+lD2Uj+jDo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=diqYF8Ik; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="diqYF8Ik" Received: from pendragon.ideasonboard.com (89-27-53-110.bb.dnainternet.fi [89.27.53.110]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id A4ADC9D5; Sun, 3 Mar 2024 16:52:14 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1709481134; bh=heBYFeJDqEutK0Jap5MQNGri5HlpLGdN4xYRo+19dGA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=diqYF8IklThnS+NJvqfc17HqckXUJapqtKc2Si4LHvdeUcHCn1TG5ZWn2NTdLVR+A f8il9+HnVnlEg06BYQfaqAdaT6Z6esk0/yCkjJ/7qrC+vnFJOr07TGYwE+e2s908RL T6bmBRvlj/BsKECTNHkI5J/YN6kcGyYbGBL7g9D8= Date: Sun, 3 Mar 2024 17:52:31 +0200 From: Laurent Pinchart To: Adam Ford Cc: dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, aford@beaconembedded.com, Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Andrzej Hajda , Neil Armstrong , Robert Foss , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , devicetree@vger.kernel.org, imx@lists.linux.dev, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/2] drm/bridge: adv7511: Allow IRQ to share GPIO pins Message-ID: <20240303155231.GC11285@pendragon.ideasonboard.com> References: <20240228113737.43434-1-aford173@gmail.com> <20240228163153.GH9863@pendragon.ideasonboard.com> Precedence: bulk X-Mailing-List: imx@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Sun, Mar 03, 2024 at 09:44:03AM -0600, Adam Ford wrote: > On Wed, Feb 28, 2024 at 10:31 AM Laurent Pinchart wrote: > > On Wed, Feb 28, 2024 at 05:37:35AM -0600, Adam Ford wrote: > > > The IRQ registration currently assumes that the GPIO is > > > dedicated to it, but that may not necessarily be the case. > > > If the board has another device sharing the IRQ, it won't be > > > registered and the hot-plug detect fails. This is easily > > > fixed by add the IRQF_SHARED flag. > > > > > > Signed-off-by: Adam Ford > > > > > > diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > > > index b5518ff97165..21f08b2ae265 100644 > > > --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > > > +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > > > @@ -1318,7 +1318,8 @@ static int adv7511_probe(struct i2c_client *i2c) > > > > > > ret = devm_request_threaded_irq(dev, i2c->irq, NULL, > > > adv7511_irq_handler, > > > - IRQF_ONESHOT, dev_name(dev), > > > + IRQF_ONESHOT | IRQF_SHARED, > > > + dev_name(dev), > > > > This looks fine, but the IRQ handler doesn't. > > Thanks for the review. > > > static int adv7511_irq_process(struct adv7511 *adv7511, bool process_hpd) > > { > > unsigned int irq0, irq1; > > int ret; > > > > ret = regmap_read(adv7511->regmap, ADV7511_REG_INT(0), &irq0); > > if (ret < 0) > > return ret; > > > > ret = regmap_read(adv7511->regmap, ADV7511_REG_INT(1), &irq1); > > if (ret < 0) > > return ret; > > If I did a check here and returned if there was no IRQ to handle, > would that be sufficient? > > --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > @@ -477,6 +477,11 @@ static int adv7511_irq_process(struct adv7511 > *adv7511, bool process_hpd) > if (ret < 0) > return ret; > > + /* If there is no IRQ to handle, exit indicating no IRQ handled */ > + if (!(irq0 & (ADV7511_INT0_HPD | ADV7511_INT0_EDID_READY)) && > + !(irq1 & ADV7511_INT1_DDC_ERROR)) If these are the only interrupt sources that the driver enables, this is fine. > + return -1; Maybe a defined error code instead ? > + > regmap_write(adv7511->regmap, ADV7511_REG_INT(0), irq0); > regmap_write(adv7511->regmap, ADV7511_REG_INT(1), irq1); > > With this, I would expect adv7511_irq_handler to return IRQ_NONE. If > you're OK with that approach, I can do that. If you want me to merge > adv7511_irq_handler, and adv7511_irq_process, I can do that too to > make the return codes a little more intuitive. > > > > > regmap_write(adv7511->regmap, ADV7511_REG_INT(0), irq0); > > regmap_write(adv7511->regmap, ADV7511_REG_INT(1), irq1); > > > > if (process_hpd && irq0 & ADV7511_INT0_HPD && adv7511->bridge.encoder) > > schedule_work(&adv7511->hpd_work); > > > > if (irq0 & ADV7511_INT0_EDID_READY || irq1 & ADV7511_INT1_DDC_ERROR) { > > adv7511->edid_read = true; > > > > if (adv7511->i2c_main->irq) > > wake_up_all(&adv7511->wq); > > } > > > > #ifdef CONFIG_DRM_I2C_ADV7511_CEC > > adv7511_cec_irq_process(adv7511, irq1); > > #endif > > > > return 0; > > } > > > > static irqreturn_t adv7511_irq_handler(int irq, void *devid) > > { > > struct adv7511 *adv7511 = devid; > > int ret; > > > > ret = adv7511_irq_process(adv7511, true); > > return ret < 0 ? IRQ_NONE : IRQ_HANDLED; > > } > > > > The function will return IRQ_HANDLED as long as the registers can be > > read, even if they don't report any interrupt. > > > > > adv7511); > > > if (ret) > > > goto err_unregister_audio; -- Regards, Laurent Pinchart 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 73627C5475B for ; Sun, 3 Mar 2024 15:52:50 +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:In-Reply-To:MIME-Version:References: 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=LBNx8xpQM14+h7rgIED5Dwqq0Cip43Mws5K67KNuTRw=; b=A8kiExNzM2J8Jg n9R4p3lmTGCqGuZ+bMqTZ1EAzssv19FGRRKhj8jDKODNxVxgm+e48RX7e8AQ72GH9jF06nYOs+4xq nXmu8UNiJsNMt4N048QiAMSFKgTIyo0Q5sVdo3djRpp63MlE3nwDyJ7yxY7MxwHmQzWGHsqi9jjNX 4Vy42AkRt4NSCYay8000Rw3ea7AUFiis3KpC/frkcOptTc3rBGC0gEZmpmg9hjH1Oy4qj2dwJVmwB 22UCSqplKO0MMGWdfXuD4Orysoij21uLrTCHV5V007YfEvB94ASbG/Dr+5dknZGb2vGlslACP/WG2 Pxsrdn8J0UD0bgqPc2RA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rgo8l-00000006EG4-49NM; Sun, 03 Mar 2024 15:52:39 +0000 Received: from perceval.ideasonboard.com ([213.167.242.64]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rgo8i-00000006EEx-3jxE for linux-arm-kernel@lists.infradead.org; Sun, 03 Mar 2024 15:52:38 +0000 Received: from pendragon.ideasonboard.com (89-27-53-110.bb.dnainternet.fi [89.27.53.110]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id A4ADC9D5; Sun, 3 Mar 2024 16:52:14 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1709481134; bh=heBYFeJDqEutK0Jap5MQNGri5HlpLGdN4xYRo+19dGA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=diqYF8IklThnS+NJvqfc17HqckXUJapqtKc2Si4LHvdeUcHCn1TG5ZWn2NTdLVR+A f8il9+HnVnlEg06BYQfaqAdaT6Z6esk0/yCkjJ/7qrC+vnFJOr07TGYwE+e2s908RL T6bmBRvlj/BsKECTNHkI5J/YN6kcGyYbGBL7g9D8= Date: Sun, 3 Mar 2024 17:52:31 +0200 From: Laurent Pinchart To: Adam Ford Cc: dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, aford@beaconembedded.com, Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Andrzej Hajda , Neil Armstrong , Robert Foss , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Daniel Vetter , devicetree@vger.kernel.org, imx@lists.linux.dev, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/2] drm/bridge: adv7511: Allow IRQ to share GPIO pins Message-ID: <20240303155231.GC11285@pendragon.ideasonboard.com> References: <20240228113737.43434-1-aford173@gmail.com> <20240228163153.GH9863@pendragon.ideasonboard.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240303_075237_126735_0CA7720C X-CRM114-Status: GOOD ( 30.56 ) 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 T24gU3VuLCBNYXIgMDMsIDIwMjQgYXQgMDk6NDQ6MDNBTSAtMDYwMCwgQWRhbSBGb3JkIHdyb3Rl Ogo+IE9uIFdlZCwgRmViIDI4LCAyMDI0IGF0IDEwOjMx4oCvQU0gTGF1cmVudCBQaW5jaGFydCB3 cm90ZToKPiA+IE9uIFdlZCwgRmViIDI4LCAyMDI0IGF0IDA1OjM3OjM1QU0gLTA2MDAsIEFkYW0g Rm9yZCB3cm90ZToKPiA+ID4gVGhlIElSUSByZWdpc3RyYXRpb24gY3VycmVudGx5IGFzc3VtZXMg dGhhdCB0aGUgR1BJTyBpcwo+ID4gPiBkZWRpY2F0ZWQgdG8gaXQsIGJ1dCB0aGF0IG1heSBub3Qg bmVjZXNzYXJpbHkgYmUgdGhlIGNhc2UuCj4gPiA+IElmIHRoZSBib2FyZCBoYXMgYW5vdGhlciBk ZXZpY2Ugc2hhcmluZyB0aGUgSVJRLCBpdCB3b24ndCBiZQo+ID4gPiByZWdpc3RlcmVkIGFuZCB0 aGUgaG90LXBsdWcgZGV0ZWN0IGZhaWxzLiAgVGhpcyBpcyBlYXNpbHkKPiA+ID4gZml4ZWQgYnkg YWRkIHRoZSBJUlFGX1NIQVJFRCBmbGFnLgo+ID4gPgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBBZGFt IEZvcmQgPGFmb3JkMTczQGdtYWlsLmNvbT4KPiA+ID4KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9hZHY3NTExX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJt L2JyaWRnZS9hZHY3NTExL2Fkdjc1MTFfZHJ2LmMKPiA+ID4gaW5kZXggYjU1MThmZjk3MTY1Li4y MWYwOGIyYWUyNjUgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2 NzUxMS9hZHY3NTExX2Rydi5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2 NzUxMS9hZHY3NTExX2Rydi5jCj4gPiA+IEBAIC0xMzE4LDcgKzEzMTgsOCBAQCBzdGF0aWMgaW50 IGFkdjc1MTFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYykKPiA+ID4KPiA+ID4gICAgICAg ICAgICAgICByZXQgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKGRldiwgaTJjLT5pcnEsIE5V TEwsCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh ZHY3NTExX2lycV9oYW5kbGVyLAo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSVJRRl9PTkVTSE9ULCBkZXZfbmFtZShkZXYpLAo+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVJRRl9PTkVTSE9UIHwgSVJR Rl9TSEFSRUQsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkZXZfbmFtZShkZXYpLAo+ID4KPiA+IFRoaXMgbG9va3MgZmluZSwgYnV0IHRoZSBJUlEg aGFuZGxlciBkb2Vzbid0Lgo+IAo+IFRoYW5rcyBmb3IgdGhlIHJldmlldy4KPiAKPiA+IHN0YXRp YyBpbnQgYWR2NzUxMV9pcnFfcHJvY2VzcyhzdHJ1Y3QgYWR2NzUxMSAqYWR2NzUxMSwgYm9vbCBw cm9jZXNzX2hwZCkKPiA+IHsKPiA+ICAgICAgICAgdW5zaWduZWQgaW50IGlycTAsIGlycTE7Cj4g PiAgICAgICAgIGludCByZXQ7Cj4gPgo+ID4gICAgICAgICByZXQgPSByZWdtYXBfcmVhZChhZHY3 NTExLT5yZWdtYXAsIEFEVjc1MTFfUkVHX0lOVCgwKSwgJmlycTApOwo+ID4gICAgICAgICBpZiAo cmV0IDwgMCkKPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4KPiA+ICAgICAgICAg cmV0ID0gcmVnbWFwX3JlYWQoYWR2NzUxMS0+cmVnbWFwLCBBRFY3NTExX1JFR19JTlQoMSksICZp cnExKTsKPiA+ICAgICAgICAgaWYgKHJldCA8IDApCj4gPiAgICAgICAgICAgICAgICAgcmV0dXJu IHJldDsKPiAKPiBJZiBJIGRpZCBhIGNoZWNrIGhlcmUgYW5kIHJldHVybmVkIGlmIHRoZXJlIHdh cyBubyBJUlEgdG8gaGFuZGxlLAo+IHdvdWxkIHRoYXQgYmUgc3VmZmljaWVudD8KPiAKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fkdjc1MTEvYWR2NzUxMV9kcnYuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9hZHY3NTExX2Rydi5jCj4gQEAgLTQ3Nyw2ICs0 NzcsMTEgQEAgc3RhdGljIGludCBhZHY3NTExX2lycV9wcm9jZXNzKHN0cnVjdCBhZHY3NTExCj4g KmFkdjc1MTEsIGJvb2wgcHJvY2Vzc19ocGQpCj4gICAgICAgICBpZiAocmV0IDwgMCkKPiAgICAg ICAgICAgICAgICAgcmV0dXJuIHJldDsKPiAKPiArICAgICAgIC8qIElmIHRoZXJlIGlzIG5vIElS USB0byBoYW5kbGUsIGV4aXQgaW5kaWNhdGluZyBubyBJUlEgaGFuZGxlZCAqLwo+ICsgICAgICAg aWYgKCEoaXJxMCAmIChBRFY3NTExX0lOVDBfSFBEIHwgQURWNzUxMV9JTlQwX0VESURfUkVBRFkp KSAmJgo+ICsgICAgICAgICAgIShpcnExICYgQURWNzUxMV9JTlQxX0REQ19FUlJPUikpCgpJZiB0 aGVzZSBhcmUgdGhlIG9ubHkgaW50ZXJydXB0IHNvdXJjZXMgdGhhdCB0aGUgZHJpdmVyIGVuYWJs ZXMsIHRoaXMgaXMKZmluZS4KCj4gKyAgICAgICAgICAgICAgIHJldHVybiAtMTsKCk1heWJlIGEg ZGVmaW5lZCBlcnJvciBjb2RlIGluc3RlYWQgPwoKPiArCj4gICAgICAgICByZWdtYXBfd3JpdGUo YWR2NzUxMS0+cmVnbWFwLCBBRFY3NTExX1JFR19JTlQoMCksIGlycTApOwo+ICAgICAgICAgcmVn bWFwX3dyaXRlKGFkdjc1MTEtPnJlZ21hcCwgQURWNzUxMV9SRUdfSU5UKDEpLCBpcnExKTsKPiAK PiBXaXRoIHRoaXMsIEkgd291bGQgZXhwZWN0IGFkdjc1MTFfaXJxX2hhbmRsZXIgdG8gcmV0dXJu IElSUV9OT05FLiAgSWYKPiB5b3UncmUgT0sgd2l0aCB0aGF0IGFwcHJvYWNoLCBJIGNhbiBkbyB0 aGF0LiAgSWYgeW91IHdhbnQgbWUgdG8gbWVyZ2UKPiBhZHY3NTExX2lycV9oYW5kbGVyLCBhbmQg YWR2NzUxMV9pcnFfcHJvY2VzcywgSSBjYW4gZG8gdGhhdCB0b28gdG8KPiBtYWtlIHRoZSByZXR1 cm4gY29kZXMgYSBsaXR0bGUgbW9yZSBpbnR1aXRpdmUuCj4gCj4gPgo+ID4gICAgICAgICByZWdt YXBfd3JpdGUoYWR2NzUxMS0+cmVnbWFwLCBBRFY3NTExX1JFR19JTlQoMCksIGlycTApOwo+ID4g ICAgICAgICByZWdtYXBfd3JpdGUoYWR2NzUxMS0+cmVnbWFwLCBBRFY3NTExX1JFR19JTlQoMSks IGlycTEpOwo+ID4KPiA+ICAgICAgICAgaWYgKHByb2Nlc3NfaHBkICYmIGlycTAgJiBBRFY3NTEx X0lOVDBfSFBEICYmIGFkdjc1MTEtPmJyaWRnZS5lbmNvZGVyKQo+ID4gICAgICAgICAgICAgICAg IHNjaGVkdWxlX3dvcmsoJmFkdjc1MTEtPmhwZF93b3JrKTsKPiA+Cj4gPiAgICAgICAgIGlmIChp cnEwICYgQURWNzUxMV9JTlQwX0VESURfUkVBRFkgfHwgaXJxMSAmIEFEVjc1MTFfSU5UMV9ERENf RVJST1IpIHsKPiA+ICAgICAgICAgICAgICAgICBhZHY3NTExLT5lZGlkX3JlYWQgPSB0cnVlOwo+ ID4KPiA+ICAgICAgICAgICAgICAgICBpZiAoYWR2NzUxMS0+aTJjX21haW4tPmlycSkKPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgIHdha2VfdXBfYWxsKCZhZHY3NTExLT53cSk7Cj4gPiAgICAg ICAgIH0KPiA+Cj4gPiAjaWZkZWYgQ09ORklHX0RSTV9JMkNfQURWNzUxMV9DRUMKPiA+ICAgICAg ICAgYWR2NzUxMV9jZWNfaXJxX3Byb2Nlc3MoYWR2NzUxMSwgaXJxMSk7Cj4gPiAjZW5kaWYKPiA+ Cj4gPiAgICAgICAgIHJldHVybiAwOwo+ID4gfQo+ID4KPiA+IHN0YXRpYyBpcnFyZXR1cm5fdCBh ZHY3NTExX2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldmlkKQo+ID4gewo+ID4gICAgICAg ICBzdHJ1Y3QgYWR2NzUxMSAqYWR2NzUxMSA9IGRldmlkOwo+ID4gICAgICAgICBpbnQgcmV0Owo+ ID4KPiA+ICAgICAgICAgcmV0ID0gYWR2NzUxMV9pcnFfcHJvY2VzcyhhZHY3NTExLCB0cnVlKTsK PiA+ICAgICAgICAgcmV0dXJuIHJldCA8IDAgPyBJUlFfTk9ORSA6IElSUV9IQU5ETEVEOwo+ID4g fQo+ID4KPiA+IFRoZSBmdW5jdGlvbiB3aWxsIHJldHVybiBJUlFfSEFORExFRCBhcyBsb25nIGFz IHRoZSByZWdpc3RlcnMgY2FuIGJlCj4gPiByZWFkLCBldmVuIGlmIHRoZXkgZG9uJ3QgcmVwb3J0 IGFueSBpbnRlcnJ1cHQuCj4gPgo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYWR2NzUxMSk7Cj4gPiA+ICAgICAgICAgICAgICAgaWYgKHJldCkKPiA+ ID4gICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyX3VucmVnaXN0ZXJfYXVkaW87CgotLSAK UmVnYXJkcywKCkxhdXJlbnQgUGluY2hhcnQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFy bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK