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=-9.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT 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 989A6C4320D for ; Tue, 24 Sep 2019 18:14:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8151021783 for ; Tue, 24 Sep 2019 18:14:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730494AbfIXSOC (ORCPT ); Tue, 24 Sep 2019 14:14:02 -0400 Received: from mx2.suse.de ([195.135.220.15]:43988 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388114AbfIXSMz (ORCPT ); Tue, 24 Sep 2019 14:12:55 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id A1202AF03; Tue, 24 Sep 2019 18:12:52 +0000 (UTC) From: Nicolas Saenz Julienne To: robh+dt@kernel.org, devicetree@vger.kernel.org, frowand.list@gmail.com, linux-arm-kernel@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, dmaengine@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, xen-devel@lists.xenproject.org, linux-tegra@vger.kernel.org, linux-media@vger.kernel.org, linux-pci@vger.kernel.org Cc: mbrugger@suse.com, robin.murphy@arm.com, f.fainelli@gmail.com, james.quinlan@broadcom.com, wahrenst@gmx.net, Nicolas Saenz Julienne Subject: [PATCH 02/11] of: base: introduce __of_n_*_cells_parent() Date: Tue, 24 Sep 2019 20:12:33 +0200 Message-Id: <20190924181244.7159-3-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190924181244.7159-1-nsaenzjulienne@suse.de> References: <20190924181244.7159-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: dmaengine-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: dmaengine@vger.kernel.org Master PCI devices might not appear in the device tree, yet they still need to get the underlying cells properties in order to calculate the bus DMA constraints. This conflicts with of_n_*_cells() as it's designed under the assumption it'll receive a device OF node. Create __of_n_*_cells_parent() in order to deal with this limitation. For now, it'll only be available privately to OF code. Signed-off-by: Nicolas Saenz Julienne --- drivers/of/base.c | 44 +++++++++++++++++++++++++++++------------ drivers/of/of_private.h | 3 +++ 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/drivers/of/base.c b/drivers/of/base.c index 1d667eb730e1..94f83051910c 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -86,34 +86,52 @@ static bool __of_node_is_type(const struct device_node *np, const char *type) return np && match && type && !strcmp(match, type); } -int of_n_addr_cells(struct device_node *np) +int __of_n_addr_cells_parent(struct device_node *parent) { u32 cells; - do { - if (np->parent) - np = np->parent; - if (!of_property_read_u32(np, "#address-cells", &cells)) + while (parent) { + if (!of_property_read_u32(parent, "#address-cells", &cells)) return cells; - } while (np->parent); + + parent = parent->parent; + } + /* No #address-cells property for the root node */ return OF_ROOT_NODE_ADDR_CELLS_DEFAULT; } + +int of_n_addr_cells(struct device_node *np) +{ + if (np->parent) + np = np->parent; + + return __of_n_addr_cells_parent(np); +} EXPORT_SYMBOL(of_n_addr_cells); -int of_n_size_cells(struct device_node *np) +int __of_n_size_cells_parent(struct device_node *parent) { u32 cells; - do { - if (np->parent) - np = np->parent; - if (!of_property_read_u32(np, "#size-cells", &cells)) + while (parent) { + if (!of_property_read_u32(parent, "#size-cells", &cells)) return cells; - } while (np->parent); - /* No #size-cells property for the root node */ + + parent = parent->parent; + } + + /* No #address-cells property for the root node */ return OF_ROOT_NODE_SIZE_CELLS_DEFAULT; } + +int of_n_size_cells(struct device_node *np) +{ + if (np->parent) + np = np->parent; + + return __of_n_size_cells_parent(np); +} EXPORT_SYMBOL(of_n_size_cells); #ifdef CONFIG_NUMA diff --git a/drivers/of/of_private.h b/drivers/of/of_private.h index 24786818e32e..b528304be244 100644 --- a/drivers/of/of_private.h +++ b/drivers/of/of_private.h @@ -39,6 +39,9 @@ extern struct mutex of_mutex; extern struct list_head aliases_lookup; extern struct kset *of_kset; +int __of_n_addr_cells_parent(struct device_node *parent); +int __of_n_size_cells_parent(struct device_node *parent); + #if defined(CONFIG_OF_DYNAMIC) extern int of_property_notify(int action, struct device_node *np, struct property *prop, struct property *old_prop); -- 2.23.0 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=-9.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 7CC22C432C1 for ; Tue, 24 Sep 2019 18:14:23 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 55288214AF for ; Tue, 24 Sep 2019 18:14:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="SRb+nOzx" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 55288214AF Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-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=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=pDk1ESu68bkwQ/YtTjC58gid+ClJu4zkuDzr0i84y/U=; b=SRb+nOzx32gDyj JjJiPh/bWLHS9+Oqsr3X/+cu+ntODz6Oeky1Sb5TFt8bnO3qZyG2KCBoyW8woo72TjEJ9l9AploDy 6sx1frgJ71HaBlX8ePDHwbrgt6bL8mPhwPHHTOhfFOD8K+ebG/a4gkXAAINUr9TvVyOpgUdqjH4Z3 n8EttkGFdiyDqFEIP9ONiVWb0QU0J0b9gyeurqIULVV1T1xjAukHH4APf7OOu8yOdSy0flJUovIVr PV1ukrOxM0FOVRIFRF5fKjKaX+Vq7RiB1EwxyZq7kEyStJHnt9rmWv4VEfT6+1VBVGHfC7jCe17xF iR0PVGXx1JPxp6utoA8A==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.2 #3 (Red Hat Linux)) id 1iCpKL-00040W-1I; Tue, 24 Sep 2019 18:14:17 +0000 Received: from mx2.suse.de ([195.135.220.15] helo=mx1.suse.de) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1iCpJ1-00034Q-N0 for linux-arm-kernel@lists.infradead.org; Tue, 24 Sep 2019 18:12:58 +0000 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id A1202AF03; Tue, 24 Sep 2019 18:12:52 +0000 (UTC) From: Nicolas Saenz Julienne To: robh+dt@kernel.org, devicetree@vger.kernel.org, frowand.list@gmail.com, linux-arm-kernel@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, dmaengine@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, xen-devel@lists.xenproject.org, linux-tegra@vger.kernel.org, linux-media@vger.kernel.org, linux-pci@vger.kernel.org Subject: [PATCH 02/11] of: base: introduce __of_n_*_cells_parent() Date: Tue, 24 Sep 2019 20:12:33 +0200 Message-Id: <20190924181244.7159-3-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190924181244.7159-1-nsaenzjulienne@suse.de> References: <20190924181244.7159-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190924_111256_128302_95D7F25C X-CRM114-Status: GOOD ( 11.32 ) 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: f.fainelli@gmail.com, mbrugger@suse.com, wahrenst@gmx.net, james.quinlan@broadcom.com, robin.murphy@arm.com, Nicolas Saenz Julienne Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org Master PCI devices might not appear in the device tree, yet they still need to get the underlying cells properties in order to calculate the bus DMA constraints. This conflicts with of_n_*_cells() as it's designed under the assumption it'll receive a device OF node. Create __of_n_*_cells_parent() in order to deal with this limitation. For now, it'll only be available privately to OF code. Signed-off-by: Nicolas Saenz Julienne --- drivers/of/base.c | 44 +++++++++++++++++++++++++++++------------ drivers/of/of_private.h | 3 +++ 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/drivers/of/base.c b/drivers/of/base.c index 1d667eb730e1..94f83051910c 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -86,34 +86,52 @@ static bool __of_node_is_type(const struct device_node *np, const char *type) return np && match && type && !strcmp(match, type); } -int of_n_addr_cells(struct device_node *np) +int __of_n_addr_cells_parent(struct device_node *parent) { u32 cells; - do { - if (np->parent) - np = np->parent; - if (!of_property_read_u32(np, "#address-cells", &cells)) + while (parent) { + if (!of_property_read_u32(parent, "#address-cells", &cells)) return cells; - } while (np->parent); + + parent = parent->parent; + } + /* No #address-cells property for the root node */ return OF_ROOT_NODE_ADDR_CELLS_DEFAULT; } + +int of_n_addr_cells(struct device_node *np) +{ + if (np->parent) + np = np->parent; + + return __of_n_addr_cells_parent(np); +} EXPORT_SYMBOL(of_n_addr_cells); -int of_n_size_cells(struct device_node *np) +int __of_n_size_cells_parent(struct device_node *parent) { u32 cells; - do { - if (np->parent) - np = np->parent; - if (!of_property_read_u32(np, "#size-cells", &cells)) + while (parent) { + if (!of_property_read_u32(parent, "#size-cells", &cells)) return cells; - } while (np->parent); - /* No #size-cells property for the root node */ + + parent = parent->parent; + } + + /* No #address-cells property for the root node */ return OF_ROOT_NODE_SIZE_CELLS_DEFAULT; } + +int of_n_size_cells(struct device_node *np) +{ + if (np->parent) + np = np->parent; + + return __of_n_size_cells_parent(np); +} EXPORT_SYMBOL(of_n_size_cells); #ifdef CONFIG_NUMA diff --git a/drivers/of/of_private.h b/drivers/of/of_private.h index 24786818e32e..b528304be244 100644 --- a/drivers/of/of_private.h +++ b/drivers/of/of_private.h @@ -39,6 +39,9 @@ extern struct mutex of_mutex; extern struct list_head aliases_lookup; extern struct kset *of_kset; +int __of_n_addr_cells_parent(struct device_node *parent); +int __of_n_size_cells_parent(struct device_node *parent); + #if defined(CONFIG_OF_DYNAMIC) extern int of_property_notify(int action, struct device_node *np, struct property *prop, struct property *old_prop); -- 2.23.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel 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=-9.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT 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 CAA82C4320D for ; Wed, 25 Sep 2019 04:16:34 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (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 A6B622075D for ; Wed, 25 Sep 2019 04:16:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A6B622075D Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iCyj2-0000RU-0X; Wed, 25 Sep 2019 04:16:24 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iCpJ9-0000FG-DE for xen-devel@lists.xenproject.org; Tue, 24 Sep 2019 18:13:03 +0000 X-Inumbo-ID: ece94744-def6-11e9-b588-bc764e2007e4 Received: from mx1.suse.de (unknown [195.135.220.15]) by localhost (Halon) with ESMTPS id ece94744-def6-11e9-b588-bc764e2007e4; Tue, 24 Sep 2019 18:12:53 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id A1202AF03; Tue, 24 Sep 2019 18:12:52 +0000 (UTC) From: Nicolas Saenz Julienne To: robh+dt@kernel.org, devicetree@vger.kernel.org, frowand.list@gmail.com, linux-arm-kernel@lists.infradead.org, linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, dmaengine@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, xen-devel@lists.xenproject.org, linux-tegra@vger.kernel.org, linux-media@vger.kernel.org, linux-pci@vger.kernel.org Date: Tue, 24 Sep 2019 20:12:33 +0200 Message-Id: <20190924181244.7159-3-nsaenzjulienne@suse.de> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190924181244.7159-1-nsaenzjulienne@suse.de> References: <20190924181244.7159-1-nsaenzjulienne@suse.de> MIME-Version: 1.0 X-Mailman-Approved-At: Wed, 25 Sep 2019 04:16:20 +0000 Subject: [Xen-devel] [PATCH 02/11] of: base: introduce __of_n_*_cells_parent() X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: f.fainelli@gmail.com, mbrugger@suse.com, wahrenst@gmx.net, james.quinlan@broadcom.com, robin.murphy@arm.com, Nicolas Saenz Julienne Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" TWFzdGVyIFBDSSBkZXZpY2VzIG1pZ2h0IG5vdCBhcHBlYXIgaW4gdGhlIGRldmljZSB0cmVlLCB5 ZXQgdGhleSBzdGlsbApuZWVkIHRvIGdldCB0aGUgdW5kZXJseWluZyBjZWxscyBwcm9wZXJ0aWVz IGluIG9yZGVyIHRvIGNhbGN1bGF0ZSB0aGUKYnVzIERNQSBjb25zdHJhaW50cy4gVGhpcyBjb25m bGljdHMgd2l0aCBvZl9uXypfY2VsbHMoKSBhcyBpdCdzIGRlc2lnbmVkCnVuZGVyIHRoZSBhc3N1 bXB0aW9uIGl0J2xsIHJlY2VpdmUgYSBkZXZpY2UgT0Ygbm9kZS4KCkNyZWF0ZSBfX29mX25fKl9j ZWxsc19wYXJlbnQoKSBpbiBvcmRlciB0byBkZWFsIHdpdGggdGhpcyBsaW1pdGF0aW9uLgpGb3Ig bm93LCBpdCdsbCBvbmx5IGJlIGF2YWlsYWJsZSBwcml2YXRlbHkgdG8gT0YgY29kZS4KClNpZ25l ZC1vZmYtYnk6IE5pY29sYXMgU2FlbnogSnVsaWVubmUgPG5zYWVuemp1bGllbm5lQHN1c2UuZGU+ Ci0tLQoKIGRyaXZlcnMvb2YvYmFzZS5jICAgICAgIHwgNDQgKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0KIGRyaXZlcnMvb2Yvb2ZfcHJpdmF0ZS5oIHwgIDMgKysrCiAy IGZpbGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvb2YvYmFzZS5jIGIvZHJpdmVycy9vZi9iYXNlLmMKaW5kZXggMWQ2Njdl YjczMGUxLi45NGY4MzA1MTkxMGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvb2YvYmFzZS5jCisrKyBi L2RyaXZlcnMvb2YvYmFzZS5jCkBAIC04NiwzNCArODYsNTIgQEAgc3RhdGljIGJvb2wgX19vZl9u b2RlX2lzX3R5cGUoY29uc3Qgc3RydWN0IGRldmljZV9ub2RlICpucCwgY29uc3QgY2hhciAqdHlw ZSkKIAlyZXR1cm4gbnAgJiYgbWF0Y2ggJiYgdHlwZSAmJiAhc3RyY21wKG1hdGNoLCB0eXBlKTsK IH0KIAotaW50IG9mX25fYWRkcl9jZWxscyhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQoraW50IF9f b2Zfbl9hZGRyX2NlbGxzX3BhcmVudChzdHJ1Y3QgZGV2aWNlX25vZGUgKnBhcmVudCkKIHsKIAl1 MzIgY2VsbHM7CiAKLQlkbyB7Ci0JCWlmIChucC0+cGFyZW50KQotCQkJbnAgPSBucC0+cGFyZW50 OwotCQlpZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAiI2FkZHJlc3MtY2VsbHMiLCAmY2Vs bHMpKQorCXdoaWxlIChwYXJlbnQpIHsKKwkJaWYgKCFvZl9wcm9wZXJ0eV9yZWFkX3UzMihwYXJl bnQsICIjYWRkcmVzcy1jZWxscyIsICZjZWxscykpCiAJCQlyZXR1cm4gY2VsbHM7Ci0JfSB3aGls ZSAobnAtPnBhcmVudCk7CisKKwkJcGFyZW50ID0gcGFyZW50LT5wYXJlbnQ7CisJfQorCiAJLyog Tm8gI2FkZHJlc3MtY2VsbHMgcHJvcGVydHkgZm9yIHRoZSByb290IG5vZGUgKi8KIAlyZXR1cm4g T0ZfUk9PVF9OT0RFX0FERFJfQ0VMTFNfREVGQVVMVDsKIH0KKworaW50IG9mX25fYWRkcl9jZWxs cyhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKQoreworCWlmIChucC0+cGFyZW50KQorCQlucCA9IG5w LT5wYXJlbnQ7CisKKwlyZXR1cm4gX19vZl9uX2FkZHJfY2VsbHNfcGFyZW50KG5wKTsKK30KIEVY UE9SVF9TWU1CT0wob2Zfbl9hZGRyX2NlbGxzKTsKIAotaW50IG9mX25fc2l6ZV9jZWxscyhzdHJ1 Y3QgZGV2aWNlX25vZGUgKm5wKQoraW50IF9fb2Zfbl9zaXplX2NlbGxzX3BhcmVudChzdHJ1Y3Qg ZGV2aWNlX25vZGUgKnBhcmVudCkKIHsKIAl1MzIgY2VsbHM7CiAKLQlkbyB7Ci0JCWlmIChucC0+ cGFyZW50KQotCQkJbnAgPSBucC0+cGFyZW50OwotCQlpZiAoIW9mX3Byb3BlcnR5X3JlYWRfdTMy KG5wLCAiI3NpemUtY2VsbHMiLCAmY2VsbHMpKQorCXdoaWxlIChwYXJlbnQpIHsKKwkJaWYgKCFv Zl9wcm9wZXJ0eV9yZWFkX3UzMihwYXJlbnQsICIjc2l6ZS1jZWxscyIsICZjZWxscykpCiAJCQly ZXR1cm4gY2VsbHM7Ci0JfSB3aGlsZSAobnAtPnBhcmVudCk7Ci0JLyogTm8gI3NpemUtY2VsbHMg cHJvcGVydHkgZm9yIHRoZSByb290IG5vZGUgKi8KKworCQlwYXJlbnQgPSBwYXJlbnQtPnBhcmVu dDsKKwl9CisKKwkvKiBObyAjYWRkcmVzcy1jZWxscyBwcm9wZXJ0eSBmb3IgdGhlIHJvb3Qgbm9k ZSAqLwogCXJldHVybiBPRl9ST09UX05PREVfU0laRV9DRUxMU19ERUZBVUxUOwogfQorCitpbnQg b2Zfbl9zaXplX2NlbGxzKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCit7CisJaWYgKG5wLT5wYXJl bnQpCisJCW5wID0gbnAtPnBhcmVudDsKKworCXJldHVybiBfX29mX25fc2l6ZV9jZWxsc19wYXJl bnQobnApOworfQogRVhQT1JUX1NZTUJPTChvZl9uX3NpemVfY2VsbHMpOwogCiAjaWZkZWYgQ09O RklHX05VTUEKZGlmZiAtLWdpdCBhL2RyaXZlcnMvb2Yvb2ZfcHJpdmF0ZS5oIGIvZHJpdmVycy9v Zi9vZl9wcml2YXRlLmgKaW5kZXggMjQ3ODY4MThlMzJlLi5iNTI4MzA0YmUyNDQgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvb2Yvb2ZfcHJpdmF0ZS5oCisrKyBiL2RyaXZlcnMvb2Yvb2ZfcHJpdmF0ZS5o CkBAIC0zOSw2ICszOSw5IEBAIGV4dGVybiBzdHJ1Y3QgbXV0ZXggb2ZfbXV0ZXg7CiBleHRlcm4g c3RydWN0IGxpc3RfaGVhZCBhbGlhc2VzX2xvb2t1cDsKIGV4dGVybiBzdHJ1Y3Qga3NldCAqb2Zf a3NldDsKIAoraW50IF9fb2Zfbl9hZGRyX2NlbGxzX3BhcmVudChzdHJ1Y3QgZGV2aWNlX25vZGUg KnBhcmVudCk7CitpbnQgX19vZl9uX3NpemVfY2VsbHNfcGFyZW50KHN0cnVjdCBkZXZpY2Vfbm9k ZSAqcGFyZW50KTsKKwogI2lmIGRlZmluZWQoQ09ORklHX09GX0RZTkFNSUMpCiBleHRlcm4gaW50 IG9mX3Byb3BlcnR5X25vdGlmeShpbnQgYWN0aW9uLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLAog CQkJICAgICAgc3RydWN0IHByb3BlcnR5ICpwcm9wLCBzdHJ1Y3QgcHJvcGVydHkgKm9sZF9wcm9w KTsKLS0gCjIuMjMuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qu b3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2 ZWw=