Received: by 10.223.176.46 with SMTP id f43csp1188498wra; Fri, 26 Jan 2018 13:28:25 -0800 (PST) X-Google-Smtp-Source: AH8x2243nzoNiY0e15/o7jq5ABfazJOwsmzK7RAJGISDDrSHxunq6R5Xmlw+ggU+Vfjq9INYFCcS X-Received: by 10.98.48.68 with SMTP id w65mr19749423pfw.21.1517002105717; Fri, 26 Jan 2018 13:28:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517002105; cv=none; d=google.com; s=arc-20160816; b=RA/QqB/nP/GoRPp4TJ49QTFdufV20cR/21MuvqptYMm/RzaIgk+Gw6N0HVoPOmsirR naxNe2iALDr6AYt+RCAFv9ehpkkK8y55oR/BTYcPu/2kKG7DdNvJ49qJph+SlH9dD6ZW RSVdVMPwTSYEKAAu1KI7MHGKgJ0TYHWs2H3b+m/yiJ9l9PIm1Th0Eapwsz2APZrS6qWR c4PGjLHJ18miiNWbeG3DcIw3VWEnxFPGVimPy5pPdWQDaS4n5zCrlQ4ejjDYHZ69b62G W2noSqrf0C5vVd0ueMh2hVh7syVUJ+JRIyK/jESB4EKSLBp91GF1Pf9iMQOfABMTshH8 BB7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature :arc-authentication-results; bh=cp7oRoD+A0lH+6DDwFIbdf3pVsUNmaS+Z30NWER1ptY=; b=DHnCl/LmF+EVxJDK8Xs0BsI2mCreN+hw5bC6AQBskjyQ2H3BrjGMz37lTtcuYXTAZq 4NTZ2S8dWsZ6znqFek6M9n1krNVoSlZVUxvBDc4Jd5nigFLQ/Wq/gJmgXf+FOPCtWjJX ELjcgbmhfSuP9WNECTyk4HotT/wX5v0oTJiceb+9ggxfMGqKU7nS4qy2J/SA+c2H1OMy yVl5KGFUT0YUhHf40Rb28WywHq5bWX69Fs+4m8Iie2ku2ifPwdso+Ve/94C/jKnz0Ic8 80jje9XXvssQJg6KHd/IRE65Yl4YM3FUnR4S5ah9h/X9IWoN5olm2SkbuDm5HJn7xhi+ cPrg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Zg9L7KCo; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j6si3466807pgn.350.2018.01.26.13.28.00; Fri, 26 Jan 2018 13:28:25 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Zg9L7KCo; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751863AbeAZV1F (ORCPT + 99 others); Fri, 26 Jan 2018 16:27:05 -0500 Received: from mail-pg0-f68.google.com ([74.125.83.68]:45343 "EHLO mail-pg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751297AbeAZV1D (ORCPT ); Fri, 26 Jan 2018 16:27:03 -0500 Received: by mail-pg0-f68.google.com with SMTP id m136so1025463pga.12; Fri, 26 Jan 2018 13:27:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=cp7oRoD+A0lH+6DDwFIbdf3pVsUNmaS+Z30NWER1ptY=; b=Zg9L7KCopenhG6OWc3y9Ivcd45+rd2j/0P5un4bfrIwBLgVKpNWSIdlofRaS26yi7/ QcA/WQrXcjQ5cQ/zKkJ4kvwx137iIRUpFvvN6CWRxIVBDuF7DHLbJDBeMY7vucvqk6wN b0WHQPE1wul9RP/tW2k9cSXlxZgrn7qjLz28mAa7Ah3R1NqpDnX4azet3tSx0aaMs7ws DP4y0y8Wt95mHeQ4OUiXEdhAcKNtpOA+/K9hd+qE8PK5XYSM7lx4AAG0wU6WUi+QBcRR DnTo7G94TESrGkNi076cu9T7zIeOB7AOOSo4CxM4T8RG5YfyYsP2BW/CzxKJvo0TEJB4 pRUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=cp7oRoD+A0lH+6DDwFIbdf3pVsUNmaS+Z30NWER1ptY=; b=BWFxnDk5TywMBAAX+BMaNXWEFcmdLJLwq0PmUkF4VY7T8HjsOzFXt9lLyapqlhhNXS gv96juEWiWFQyVw/OcPvpX0qYB+4/BogMbb5K7HA9zRinXCZt6Fn2XWFp5TQKcWnxYkO Z6fBXYuHsEAk54oqoNNmYduUGrRg3e1Xvk0LIwmtObJ1ciElDEwzSnML7+lKiDYjtvcB BcaBrghsHqJWydHdd0v91N0cU8aemkV65mQmcwnqF4YeLasJdRoAe8VH+bbIKJfr9Gsm qWeUfO4yTaV0qtoECxH5TKXcRn3ldvO3Dvtaf8B13hQlnVFl5Yy06Ls9WSO5T9b4kTW/ 4QFw== X-Gm-Message-State: AKwxytci1b8Ex34TyXyd7zAVRmiUhTO6OHZK9jPu/ThgW86SrK58v/iK Xgljxv3M9iwufcbJW/Cl2/o= X-Received: by 10.101.80.6 with SMTP id f6mr7476590pgo.272.1517002022994; Fri, 26 Jan 2018 13:27:02 -0800 (PST) Received: from [192.168.1.70] (c-73-93-215-6.hsd1.ca.comcast.net. [73.93.215.6]) by smtp.gmail.com with ESMTPSA id b66sm20110940pfd.182.2018.01.26.13.27.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 26 Jan 2018 13:27:02 -0800 (PST) Subject: Re: [PATCH] of: use hash based search in of_find_node_by_phandle To: Chintan Pandya , robh+dt@kernel.org, devicetree@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org References: <1516875247-19599-1-git-send-email-cpandya@codeaurora.org> <5a7793df-725e-608d-778b-cb81fde0cc64@gmail.com> <13846fcb-3aa2-a4fb-1bd8-e624855f105d@codeaurora.org> From: Frank Rowand Message-ID: <2ac0d70d-074d-5eff-77e9-29d1a246a3ef@gmail.com> Date: Fri, 26 Jan 2018 13:27:00 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: <13846fcb-3aa2-a4fb-1bd8-e624855f105d@codeaurora.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 01/26/18 00:22, Chintan Pandya wrote: > > > On 1/26/2018 1:24 AM, Frank Rowand wrote: >> On 01/25/18 02:14, Chintan Pandya wrote: >>> of_find_node_by_phandle() takes a lot of time finding >>> right node when your intended device is too right-side >>> in the fdt. Reason is, we search each device serially >>> from the fdt, starting from left-most to right-most. >> Please give me a pointer to the code that is doing >> this search. >> >> -Frank > You can refer include/linux/of.h > > #define for_each_of_allnodes_from(from, dn) \ >         for (dn = __of_find_all_nodes(from); dn; dn = __of_find_all_nodes(dn)) > #define for_each_of_allnodes(dn) for_each_of_allnodes_from(NULL, dn) > > where __of_find_all_nodes() does > > struct device_node *__of_find_all_nodes(struct device_node *prev) > { >         struct device_node *np; >         if (!prev) { >                 np = of_root; >         } else if (prev->child) { >                 np = prev->child; >         } else { >                 /* Walk back up looking for a sibling, or the end of the structure */ >                 np = prev; >                 while (np->parent && !np->sibling) >                         np = np->parent; >                 np = np->sibling; /* Might be null at the end of the tree */ >         } >         return np; > } > Let me restate my question. Can you point me to the driver code that is invoking the search? -Frank