From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0C084217718; Wed, 26 Feb 2025 12:00:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=140.211.166.183 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740571205; cv=none; b=EvHfmikrgSXo5w8kFTNstOIR5XaCa+ngZJu/d5jkvHGOBUIlebKgfkT1Z5q9GIywdgRY9fyNDMsghxqTCDBYZMDHbanpswFgv1smYF/NCAuWYhFJhEyf6vIBKi277UXg5t9FNR2j0HZUCr9uRBmhdsbh9tAmKgQrHgu4frM5ZuI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740571205; c=relaxed/simple; bh=1rPLZ7Ny+tavg+eVzEq79uWoftJ4xcrjRHDV3jxiGGI=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=Jo+x+Bgc50sOmDftw0iUezZlUGt1C2pHJTwsypnm0shftDgrS1Hba1vAN8zwZ6tVRmiM8qpaef1FhUdA1bokzmhk41UhVbmf4DMq4zyOP6ahkDP1Q8Q0c3iU+sUBvPs3Ab0KGKRPZWK/JoVHXdBrkKMPxsN1sMq+wdIIxFGtgKE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gentoo.org; spf=pass smtp.mailfrom=gentoo.org; arc=none smtp.client-ip=140.211.166.183 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gentoo.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gentoo.org Received: from localhost (unknown [116.232.55.252]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: dlan) by smtp.gentoo.org (Postfix) with ESMTPSA id 7197134133B; Wed, 26 Feb 2025 12:00:01 +0000 (UTC) Date: Wed, 26 Feb 2025 11:59:57 +0000 From: Yixun Lan To: Linus Walleij Cc: Bartosz Golaszewski , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Conor Dooley , Paul Walmsley , Palmer Dabbelt , Alex Elder , Yangyu Chen , Jisheng Zhang , Jesse Taube , Inochi Amaoto , Icenowy Zheng , Meng Zhang , linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, spacemit@lists.linux.dev Subject: Re: [PATCH v7 0/4] riscv: spacemit: add gpio support for K1 SoC Message-ID: <20250226115957-GYA45508@gentoo> References: <20250226-03-k1-gpio-v7-0-be489c4a609b@gentoo.org> <20250226010108-GYA44567@gentoo> Precedence: bulk X-Mailing-List: linux-gpio@vger.kernel.org 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: Hi Linus Walleij: On 11:24 Wed 26 Feb , Linus Walleij wrote: > On Wed, Feb 26, 2025 at 2:01 AM Yixun Lan wrote: > > > Current this v7 version work great with request irq from gpio, like: > > pin = devm_gpiod_get_optional(dev, "myirq", GPIOD_IN); > > irq = gpiod_to_irq(pin); > > devm_request_threaded_irq(dev, irq, ..) > > > > but have problem if request irq via of_irq_get(), something like this: > > DT part > > mytst { > > .. > > interrupt-parent = <&gpio>; > > interrupts = <1 28 IRQ_TYPE_EDGE_RISING>; > > interrupt-names = "wakeup"; > > } > > > > In source code > > irq = of_irq_get_byname(dev->of_node, "wakeup"); > > > > I've made an attempt to patch gpiolib to support three cells "interrupts" > > syntax, but still fail, it always get last gpio irqchip of four, thus using > > the wrong pin (e.g: will always get 3 from gpiochips 0, 1, 2, 3) > > Right, we need a proper patch to fix this. > > Can you paste your patch so I can see if I can spot/fix > the problem? > > I think the irq cell parser needs to call out to > of_node_instance_match() - or similar - as well. do you have any suggestion where to implement this similar function? I actually miss this logic, the patch here only support parsing interrupts with 3 cells diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 679ed764cb14..9aa88c3fa485 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -1454,6 +1454,10 @@ static int gpiochip_hierarchy_irq_domain_translate(struct irq_domain *d, return irq_domain_translate_twocell(d, fwspec, hwirq, type); } + if (is_of_node(fwspec->fwnode) && fwspec->param_count == 3) { + return irq_domain_translate_threecell(d, fwspec, hwirq, type); + } + /* This is for board files and others not using DT */ if (is_fwnode_irqchip(fwspec->fwnode)) { int ret; @@ -1758,7 +1762,8 @@ static const struct irq_domain_ops gpiochip_domain_ops = { .map = gpiochip_irq_map, .unmap = gpiochip_irq_unmap, /* Virtually all GPIO irqchips are twocell:ed */ - .xlate = irq_domain_xlate_twocell, + /* FIXME: force switch to three cells */ + .xlate = irq_domain_xlate_threecell, }; static struct irq_domain *gpiochip_simple_create_domain(struct gpio_chip *gc) diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h index e432b6a12a32..69a9540ec253 100644 --- a/include/linux/irqdomain.h +++ b/include/linux/irqdomain.h @@ -568,10 +568,18 @@ int irq_domain_xlate_onecell(struct irq_domain *d, struct device_node *ctrlr, int irq_domain_xlate_twocell(struct irq_domain *d, struct device_node *ctrlr, const u32 *intspec, unsigned int intsize, irq_hw_number_t *out_hwirq, unsigned int *out_type); +int irq_domain_xlate_threecell(struct irq_domain *d, struct device_node *ctrlr, + const u32 *intspec, unsigned int intsize, + irq_hw_number_t *out_hwirq, unsigned int *out_type); int irq_domain_xlate_onetwocell(struct irq_domain *d, struct device_node *ctrlr, const u32 *intspec, unsigned int intsize, irq_hw_number_t *out_hwirq, unsigned int *out_type); +int irq_domain_translate_threecell(struct irq_domain *d, + struct irq_fwspec *fwspec, + unsigned long *out_hwirq, + unsigned int *out_type); + int irq_domain_translate_twocell(struct irq_domain *d, struct irq_fwspec *fwspec, unsigned long *out_hwirq, diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c index ec6d8e72d980..995e5e0ec2db 100644 --- a/kernel/irq/irqdomain.c +++ b/kernel/irq/irqdomain.c @@ -1132,6 +1132,17 @@ int irq_domain_xlate_twocell(struct irq_domain *d, struct device_node *ctrlr, } EXPORT_SYMBOL_GPL(irq_domain_xlate_twocell); +int irq_domain_xlate_threecell(struct irq_domain *d, struct device_node *ctrlr, + const u32 *intspec, unsigned int intsize, + irq_hw_number_t *out_hwirq, unsigned int *out_type) +{ + struct irq_fwspec fwspec; + + of_phandle_args_to_fwspec(ctrlr, intspec, intsize, &fwspec); + return irq_domain_translate_threecell(d, &fwspec, out_hwirq, out_type); +} +EXPORT_SYMBOL_GPL(irq_domain_xlate_threecell); + /** * irq_domain_xlate_onetwocell() - Generic xlate for one or two cell bindings * @d: Interrupt domain involved in the translation @@ -1216,6 +1227,19 @@ int irq_domain_translate_twocell(struct irq_domain *d, } EXPORT_SYMBOL_GPL(irq_domain_translate_twocell); +int irq_domain_translate_threecell(struct irq_domain *d, + struct irq_fwspec *fwspec, + unsigned long *out_hwirq, + unsigned int *out_type) +{ + if (WARN_ON(fwspec->param_count < 3)) + return -EINVAL; + *out_hwirq = fwspec->param[1]; + *out_type = fwspec->param[2] & IRQ_TYPE_SENSE_MASK; + return 0; +} +EXPORT_SYMBOL_GPL(irq_domain_translate_threecell); + int irq_domain_alloc_descs(int virq, unsigned int cnt, irq_hw_number_t hwirq, int node, const struct irq_affinity_desc *affinity) { -- Yixun Lan (dlan) Gentoo Linux Developer GPG Key ID AABEFD55 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 43A15C18E7C for ; Wed, 26 Feb 2025 13:26:25 +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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject: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=ANybEvZjPlMdGRBJLRrPRgiRln3WjBbx3EMfBo/BJ2s=; b=4+04/J4wsMKi+v laQt9qc8iY6E8JvMcrf+3/yGWuBe2QEl1X/GieVmfOsFmJOKOeMy6gYr3XvMDIxL3VuFpwYAR47Lr w38FvmUWTjuNd9xXrcUG1mo8TCnQBEnhGgf7vSwUsLAduXAqYxechfCl7zcShNAzxeY6ZNmWfBxvM 4whxraWcpjr/ITWO9+9M8nCUMtYve2ALVdmx9EoMcvjLqUeRkHGJZmkrnZUBWIMXN8mzusE6CV+2m e6m/ud6tHp8p4+r3zd4FHb9KNXCcBT8Z8PfISaMkREigeiNXmwNrGY/Om7bQ4iJ2wQa9ek4ojmq42 DOuthWbEUyPtoV/YbEtg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tnHQX-00000003ref-3Uhx; Wed, 26 Feb 2025 13:26:17 +0000 Received: from woodpecker.gentoo.org ([2001:470:ea4a:1:5054:ff:fec7:86e4] helo=smtp.gentoo.org) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tnG57-00000003a92-1K7s for linux-riscv@lists.infradead.org; Wed, 26 Feb 2025 12:00:06 +0000 Received: from localhost (unknown [116.232.55.252]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: dlan) by smtp.gentoo.org (Postfix) with ESMTPSA id 7197134133B; Wed, 26 Feb 2025 12:00:01 +0000 (UTC) Date: Wed, 26 Feb 2025 11:59:57 +0000 From: Yixun Lan To: Linus Walleij Subject: Re: [PATCH v7 0/4] riscv: spacemit: add gpio support for K1 SoC Message-ID: <20250226115957-GYA45508@gentoo> References: <20250226-03-k1-gpio-v7-0-be489c4a609b@gentoo.org> <20250226010108-GYA44567@gentoo> 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-20250226_040005_390853_9040A7B1 X-CRM114-Status: GOOD ( 25.68 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Rob Herring , Conor Dooley , Meng Zhang , Alex Elder , linux-gpio@vger.kernel.org, Bartosz Golaszewski , linux-kernel@vger.kernel.org, Conor Dooley , Yangyu Chen , devicetree@vger.kernel.org, Palmer Dabbelt , Jesse Taube , Jisheng Zhang , Paul Walmsley , Inochi Amaoto , Krzysztof Kozlowski , spacemit@lists.linux.dev, linux-riscv@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org SGkgTGludXMgV2FsbGVpajoKCk9uIDExOjI0IFdlZCAyNiBGZWIgICAgICwgTGludXMgV2FsbGVp aiB3cm90ZToKPiBPbiBXZWQsIEZlYiAyNiwgMjAyNSBhdCAyOjAx4oCvQU0gWWl4dW4gTGFuIDxk bGFuQGdlbnRvby5vcmc+IHdyb3RlOgo+IAo+ID4gQ3VycmVudCB0aGlzIHY3IHZlcnNpb24gd29y ayBncmVhdCB3aXRoIHJlcXVlc3QgaXJxIGZyb20gZ3BpbywgbGlrZToKPiA+ICAgICAgICAgcGlu ID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoZGV2LCAibXlpcnEiLCBHUElPRF9JTik7Cj4gPiAg ICAgICAgIGlycSA9IGdwaW9kX3RvX2lycShwaW4pOwo+ID4gICAgICAgICBkZXZtX3JlcXVlc3Rf dGhyZWFkZWRfaXJxKGRldiwgaXJxLCAuLikKPiA+Cj4gPiBidXQgaGF2ZSBwcm9ibGVtIGlmIHJl cXVlc3QgaXJxIHZpYSBvZl9pcnFfZ2V0KCksIHNvbWV0aGluZyBsaWtlIHRoaXM6Cj4gPiBEVCBw YXJ0Cj4gPiAgICAgICAgIG15dHN0IHsKPiA+ICAgICAgICAgICAgICAgICAuLgo+ID4gICAgICAg ICAgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSA8JmdwaW8+Owo+ID4gICAgICAgICAgICAgICAg IGludGVycnVwdHMgPSA8MSAyOCBJUlFfVFlQRV9FREdFX1JJU0lORz47Cj4gPiAgICAgICAgICAg ICAgICAgaW50ZXJydXB0LW5hbWVzID0gIndha2V1cCI7Cj4gPiAgICAgICAgIH0KPiA+Cj4gPiBJ biBzb3VyY2UgY29kZQo+ID4gICAgICAgICBpcnEgPSBvZl9pcnFfZ2V0X2J5bmFtZShkZXYtPm9m X25vZGUsICJ3YWtldXAiKTsKPiA+Cj4gPiBJJ3ZlIG1hZGUgYW4gYXR0ZW1wdCB0byBwYXRjaCBn cGlvbGliIHRvIHN1cHBvcnQgdGhyZWUgY2VsbHMgImludGVycnVwdHMiCj4gPiBzeW50YXgsIGJ1 dCBzdGlsbCBmYWlsLCBpdCBhbHdheXMgZ2V0IGxhc3QgZ3BpbyBpcnFjaGlwIG9mIGZvdXIsIHRo dXMgdXNpbmcKPiA+IHRoZSB3cm9uZyBwaW4gKGUuZzogd2lsbCBhbHdheXMgZ2V0IDMgZnJvbSBn cGlvY2hpcHMgMCwgMSwgMiwgMykKPiAKPiBSaWdodCwgd2UgbmVlZCBhIHByb3BlciBwYXRjaCB0 byBmaXggdGhpcy4KPiAKPiBDYW4geW91IHBhc3RlIHlvdXIgcGF0Y2ggc28gSSBjYW4gc2VlIGlm IEkgY2FuIHNwb3QvZml4Cj4gdGhlIHByb2JsZW0/Cj4gCj4gSSB0aGluayB0aGUgaXJxIGNlbGwg cGFyc2VyIG5lZWRzIHRvIGNhbGwgb3V0IHRvCj4gb2Zfbm9kZV9pbnN0YW5jZV9tYXRjaCgpIC0g b3Igc2ltaWxhciAtIGFzIHdlbGwuCmRvIHlvdSBoYXZlIGFueSBzdWdnZXN0aW9uIHdoZXJlIHRv IGltcGxlbWVudCB0aGlzIHNpbWlsYXIgZnVuY3Rpb24/CgpJIGFjdHVhbGx5IG1pc3MgdGhpcyBs b2dpYywgdGhlIHBhdGNoIGhlcmUgb25seSBzdXBwb3J0IHBhcnNpbmcKaW50ZXJydXB0cyB3aXRo IDMgY2VsbHMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwaW8vZ3Bpb2xpYi5jIGIvZHJpdmVycy9n cGlvL2dwaW9saWIuYwppbmRleCA2NzllZDc2NGNiMTQuLjlhYTg4YzNmYTQ4NSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncGlvL2dwaW9saWIuYworKysgYi9kcml2ZXJzL2dwaW8vZ3Bpb2xpYi5jCkBA IC0xNDU0LDYgKzE0NTQsMTAgQEAgc3RhdGljIGludCBncGlvY2hpcF9oaWVyYXJjaHlfaXJxX2Rv bWFpbl90cmFuc2xhdGUoc3RydWN0IGlycV9kb21haW4gKmQsCiAJCXJldHVybiBpcnFfZG9tYWlu X3RyYW5zbGF0ZV90d29jZWxsKGQsIGZ3c3BlYywgaHdpcnEsIHR5cGUpOwogCX0KIAorCWlmIChp c19vZl9ub2RlKGZ3c3BlYy0+Zndub2RlKSAmJiBmd3NwZWMtPnBhcmFtX2NvdW50ID09IDMpIHsK KwkJcmV0dXJuIGlycV9kb21haW5fdHJhbnNsYXRlX3RocmVlY2VsbChkLCBmd3NwZWMsIGh3aXJx LCB0eXBlKTsKKwl9CisKIAkvKiBUaGlzIGlzIGZvciBib2FyZCBmaWxlcyBhbmQgb3RoZXJzIG5v dCB1c2luZyBEVCAqLwogCWlmIChpc19md25vZGVfaXJxY2hpcChmd3NwZWMtPmZ3bm9kZSkpIHsK IAkJaW50IHJldDsKQEAgLTE3NTgsNyArMTc2Miw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaXJx X2RvbWFpbl9vcHMgZ3Bpb2NoaXBfZG9tYWluX29wcyA9IHsKIAkubWFwCT0gZ3Bpb2NoaXBfaXJx X21hcCwKIAkudW5tYXAJPSBncGlvY2hpcF9pcnFfdW5tYXAsCiAJLyogVmlydHVhbGx5IGFsbCBH UElPIGlycWNoaXBzIGFyZSB0d29jZWxsOmVkICovCi0JLnhsYXRlCT0gaXJxX2RvbWFpbl94bGF0 ZV90d29jZWxsLAorCS8qIEZJWE1FOiBmb3JjZSBzd2l0Y2ggdG8gdGhyZWUgY2VsbHMgKi8KKwku eGxhdGUJPSBpcnFfZG9tYWluX3hsYXRlX3RocmVlY2VsbCwKIH07CiAKIHN0YXRpYyBzdHJ1Y3Qg aXJxX2RvbWFpbiAqZ3Bpb2NoaXBfc2ltcGxlX2NyZWF0ZV9kb21haW4oc3RydWN0IGdwaW9fY2hp cCAqZ2MpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2lycWRvbWFpbi5oIGIvaW5jbHVkZS9s aW51eC9pcnFkb21haW4uaAppbmRleCBlNDMyYjZhMTJhMzIuLjY5YTk1NDBlYzI1MyAxMDA2NDQK LS0tIGEvaW5jbHVkZS9saW51eC9pcnFkb21haW4uaAorKysgYi9pbmNsdWRlL2xpbnV4L2lycWRv bWFpbi5oCkBAIC01NjgsMTAgKzU2OCwxOCBAQCBpbnQgaXJxX2RvbWFpbl94bGF0ZV9vbmVjZWxs KHN0cnVjdCBpcnFfZG9tYWluICpkLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKmN0cmxyLAogaW50IGly cV9kb21haW5feGxhdGVfdHdvY2VsbChzdHJ1Y3QgaXJxX2RvbWFpbiAqZCwgc3RydWN0IGRldmlj ZV9ub2RlICpjdHJsciwKIAkJCWNvbnN0IHUzMiAqaW50c3BlYywgdW5zaWduZWQgaW50IGludHNp emUsCiAJCQlpcnFfaHdfbnVtYmVyX3QgKm91dF9od2lycSwgdW5zaWduZWQgaW50ICpvdXRfdHlw ZSk7CitpbnQgaXJxX2RvbWFpbl94bGF0ZV90aHJlZWNlbGwoc3RydWN0IGlycV9kb21haW4gKmQs IHN0cnVjdCBkZXZpY2Vfbm9kZSAqY3RybHIsCisJCQljb25zdCB1MzIgKmludHNwZWMsIHVuc2ln bmVkIGludCBpbnRzaXplLAorCQkJaXJxX2h3X251bWJlcl90ICpvdXRfaHdpcnEsIHVuc2lnbmVk IGludCAqb3V0X3R5cGUpOwogaW50IGlycV9kb21haW5feGxhdGVfb25ldHdvY2VsbChzdHJ1Y3Qg aXJxX2RvbWFpbiAqZCwgc3RydWN0IGRldmljZV9ub2RlICpjdHJsciwKIAkJCWNvbnN0IHUzMiAq aW50c3BlYywgdW5zaWduZWQgaW50IGludHNpemUsCiAJCQlpcnFfaHdfbnVtYmVyX3QgKm91dF9o d2lycSwgdW5zaWduZWQgaW50ICpvdXRfdHlwZSk7CiAKK2ludCBpcnFfZG9tYWluX3RyYW5zbGF0 ZV90aHJlZWNlbGwoc3RydWN0IGlycV9kb21haW4gKmQsCisJCQkJIHN0cnVjdCBpcnFfZndzcGVj ICpmd3NwZWMsCisJCQkJIHVuc2lnbmVkIGxvbmcgKm91dF9od2lycSwKKwkJCQkgdW5zaWduZWQg aW50ICpvdXRfdHlwZSk7CisKIGludCBpcnFfZG9tYWluX3RyYW5zbGF0ZV90d29jZWxsKHN0cnVj dCBpcnFfZG9tYWluICpkLAogCQkJCSBzdHJ1Y3QgaXJxX2Z3c3BlYyAqZndzcGVjLAogCQkJCSB1 bnNpZ25lZCBsb25nICpvdXRfaHdpcnEsCmRpZmYgLS1naXQgYS9rZXJuZWwvaXJxL2lycWRvbWFp bi5jIGIva2VybmVsL2lycS9pcnFkb21haW4uYwppbmRleCBlYzZkOGU3MmQ5ODAuLjk5NWU1ZTBl YzJkYiAxMDA2NDQKLS0tIGEva2VybmVsL2lycS9pcnFkb21haW4uYworKysgYi9rZXJuZWwvaXJx L2lycWRvbWFpbi5jCkBAIC0xMTMyLDYgKzExMzIsMTcgQEAgaW50IGlycV9kb21haW5feGxhdGVf dHdvY2VsbChzdHJ1Y3QgaXJxX2RvbWFpbiAqZCwgc3RydWN0IGRldmljZV9ub2RlICpjdHJsciwK IH0KIEVYUE9SVF9TWU1CT0xfR1BMKGlycV9kb21haW5feGxhdGVfdHdvY2VsbCk7CiAKK2ludCBp cnFfZG9tYWluX3hsYXRlX3RocmVlY2VsbChzdHJ1Y3QgaXJxX2RvbWFpbiAqZCwgc3RydWN0IGRl dmljZV9ub2RlICpjdHJsciwKKwkJCWNvbnN0IHUzMiAqaW50c3BlYywgdW5zaWduZWQgaW50IGlu dHNpemUsCisJCQlpcnFfaHdfbnVtYmVyX3QgKm91dF9od2lycSwgdW5zaWduZWQgaW50ICpvdXRf dHlwZSkKK3sKKwlzdHJ1Y3QgaXJxX2Z3c3BlYyBmd3NwZWM7CisKKwlvZl9waGFuZGxlX2FyZ3Nf dG9fZndzcGVjKGN0cmxyLCBpbnRzcGVjLCBpbnRzaXplLCAmZndzcGVjKTsKKwlyZXR1cm4gaXJx X2RvbWFpbl90cmFuc2xhdGVfdGhyZWVjZWxsKGQsICZmd3NwZWMsIG91dF9od2lycSwgb3V0X3R5 cGUpOworfQorRVhQT1JUX1NZTUJPTF9HUEwoaXJxX2RvbWFpbl94bGF0ZV90aHJlZWNlbGwpOwor CiAvKioKICAqIGlycV9kb21haW5feGxhdGVfb25ldHdvY2VsbCgpIC0gR2VuZXJpYyB4bGF0ZSBm b3Igb25lIG9yIHR3byBjZWxsIGJpbmRpbmdzCiAgKiBAZDoJCUludGVycnVwdCBkb21haW4gaW52 b2x2ZWQgaW4gdGhlIHRyYW5zbGF0aW9uCkBAIC0xMjE2LDYgKzEyMjcsMTkgQEAgaW50IGlycV9k b21haW5fdHJhbnNsYXRlX3R3b2NlbGwoc3RydWN0IGlycV9kb21haW4gKmQsCiB9CiBFWFBPUlRf U1lNQk9MX0dQTChpcnFfZG9tYWluX3RyYW5zbGF0ZV90d29jZWxsKTsKIAoraW50IGlycV9kb21h aW5fdHJhbnNsYXRlX3RocmVlY2VsbChzdHJ1Y3QgaXJxX2RvbWFpbiAqZCwKKwkJCQkgc3RydWN0 IGlycV9md3NwZWMgKmZ3c3BlYywKKwkJCQkgdW5zaWduZWQgbG9uZyAqb3V0X2h3aXJxLAorCQkJ CSB1bnNpZ25lZCBpbnQgKm91dF90eXBlKQoreworCWlmIChXQVJOX09OKGZ3c3BlYy0+cGFyYW1f Y291bnQgPCAzKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisJKm91dF9od2lycSA9IGZ3c3BlYy0+cGFy YW1bMV07CisJKm91dF90eXBlID0gZndzcGVjLT5wYXJhbVsyXSAmIElSUV9UWVBFX1NFTlNFX01B U0s7CisJcmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChpcnFfZG9tYWluX3RyYW5zbGF0 ZV90aHJlZWNlbGwpOworCiBpbnQgaXJxX2RvbWFpbl9hbGxvY19kZXNjcyhpbnQgdmlycSwgdW5z aWduZWQgaW50IGNudCwgaXJxX2h3X251bWJlcl90IGh3aXJxLAogCQkJICAgaW50IG5vZGUsIGNv bnN0IHN0cnVjdCBpcnFfYWZmaW5pdHlfZGVzYyAqYWZmaW5pdHkpCiB7CgotLSAKWWl4dW4gTGFu IChkbGFuKQpHZW50b28gTGludXggRGV2ZWxvcGVyCkdQRyBLZXkgSUQgQUFCRUZENTUKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1h aWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5p bmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK