From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932198AbbJLSq7 (ORCPT ); Mon, 12 Oct 2015 14:46:59 -0400 Received: from mail-bl2on0065.outbound.protection.outlook.com ([65.55.169.65]:53009 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751601AbbJLSqx (ORCPT ); Mon, 12 Oct 2015 14:46:53 -0400 Authentication-Results: spf=none (sender IP is 165.204.84.221) smtp.mailfrom=amd.com; arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=permerror action=none header.from=amd.com; X-WSS-ID: 0NW4E3Y-07-1R6-02 X-M-MSG: From: Suravee Suthikulpanit Subject: Re: [PATCH 03/16] irqdomain: Allow irq domain lookup by fwnode To: Marc Zyngier , Thomas Gleixner , Jiang Liu , Jason Cooper , "Rafael J. Wysocki" References: <1444152989-31726-1-git-send-email-marc.zyngier@arm.com> <1444152989-31726-4-git-send-email-marc.zyngier@arm.com> CC: , , , Lorenzo Pieralisi , Tomasz Nowicki , Hanjun Guo , Graeme Gregory , "Jake Oshins" Message-ID: <561BFC6D.6020500@amd.com> Date: Mon, 12 Oct 2015 13:31:09 -0500 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <1444152989-31726-4-git-send-email-marc.zyngier@arm.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.180.168.240] X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:165.204.84.221;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(428002)(24454002)(199003)(479174004)(164054003)(189002)(47776003)(189998001)(86362001)(64126003)(77096005)(64706001)(65956001)(50466002)(36756003)(65806001)(5003600100002)(97736004)(4001350100001)(92566002)(87936001)(11100500001)(33656002)(46102003)(5008740100001)(65816999)(2950100001)(76176999)(23746002)(59896002)(5004730100002)(83506001)(50986999)(54356999)(105586002)(80316001)(87266999)(19580405001)(101416001)(53416004)(19580395003)(5007970100001)(5001770100001)(106466001);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0720;H:atltwp01.amd.com;FPR:;SPF:None;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0720;2:FwZdryE+y6tk31lUBEHE38DFH3lcQDq3stdo1uIQQLzzxFe9naQ7OhVb2NGUqvPrCFdMdDvnvBmqfG8InqC4Gcs/k5cLPtktFqa9jbmAGBT7DhVQtioI8angl3dZyPhpqhgiPjwfNx420w546xmxAlVuBD1P+3+e6pLzFLvNT0E=;3:7WdhqiiIXyVc1JOfIltBK/o7L9m+7YRUby7RMOKxWroUccEm684i0F/UL3s7ir4IK7XuWxlV9db6HKGw0ig6Z8N0H0OiwnznyyFCuzYq04kILesTu5W0QQRK2TRZJMZHSmxrKNVJ0Q5FnkNcLbzhw/PokCmYQBcYtu1wnhNy8OeTIfxa5iA5kBNHNiXr4FBxculJyG7QPP2e31TcWYBasLNhebg+xX/6qAKzSDjxy8zQslhKwelPmsek/K6I3XdV;25:ASTo3e7GX5FzstcOHsbvNv+LpMrOO3lWuwxX9yaMfsBtdEz/tpgsNzf0sntjK0TqjilJc7/EadWOL3CrOaphTBsZ3vPJImfGhVKBwT9QckxKqybDFaQU85YBnwdqCRKzbUrjO5rU3qEdagDNTMKdLnoQ+dejFefpIbVbxOWd5GoKsOubrZYqWhgJx6D1L7BpHBuAudWvQV8pN2d+pQyluYGY2SELOTW0BfEYbICzEzEVP/AyxITVKImARqGEShnFM25PH2BJEiA8Qn7DiJCL2Q== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR12MB0720; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0720;20:1bLFj3X47gL2uJ97ICJ67oymOvSYKprYY03zJC2PBb7JdACu3Hze/3xJNRIlSh6i8vSoFSMqBtwY8MJBDscBia1tdtoOOaJie5YuFBHMyQlxJFG3N8e4whUcCwJCF+dIVhu9MwD8V4dDS2Q2XeCXpa2FunfZ2kYLYVXZTdpFe9fNq+NN210a0CM458h5LkTQWcSpZMBDTn4RWc1HD8lzQPFCtMEmRel/6KNsDmd7Z/kltKvpQWG7Ye1WtpUVOnleKrg/amtVf6JCV+herliTAVM6IYtVjkoHR+zFBXhmd90YOAK2IM487TiosEcdkD1OYx14LCNHbpxtMdBDzvSmPP0pBvP0217cDUAZUoXYjaaHEKhS4Yn0ZXnRu7SWbGxr4RxjhcaebGNyZQmDFgC99p42rlTZnhtjGkgv9SRUpyETKafTYf4VZB+fxAZwI2QNw9JpQm9nQezkpWxZrPde6u2vE9M1318rPMBmYWEwzjj0IGWMXd4Uje2J6XDg1IKZ;4:p0DvPto2wwM2m9HryO1KhI4EwW+gvbZzrBxE3a4JCOxhr9rieU+y8veu7+a/cp3ZLjWYeryakB3XLNcUC4fWLJ2Px4HSpn0PZSd/vhjlR6jplnfp0x8ugjuxSejHg2No4BRjb4/rf24RXFoa9s1jXxhALGxjXO1qEGUn+PNDqdypCNi/8rZhRTRy74G9/OkU1CNmtfa3wiIi9zSVvATBmEITcqf//V+iAM+4NC0CYbgK1nPDhCxrFst/vhcTe95uusRxxs7qXzOGL4SyIQOATHKeTxEwPKl/MBgcv4GTsoRhM3DUuk9IWdQpkeEQEkasLuImuZ6akyAyAbFoHS3I0OHdHR4FU4mHVmqvc2+9Bp0= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(3002001);SRVR:SN1PR12MB0720;BCL:0;PCL:0;RULEID:;SRVR:SN1PR12MB0720; X-Forefront-PRVS: 0727122FC6 X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;SN1PR12MB0720;23:6lYavCe1LtYZveLUoljNspfsRudLS0+gfv5No?= =?Windows-1252?Q?GKZ04BbHTJ3LSLMXCuu3fZlNZTSmSOe6+K20rV7K3GtMxrn6hxU9ge8g?= =?Windows-1252?Q?z64QbWjDIkCDtZIkvpJjr3+aWvKF8DMza9uLq6Cc0RLNaVBw1IHpseph?= =?Windows-1252?Q?MZI5eXblbwqRW3CDBfrK45z9ISj0h3d73t9B792zsA0BL7/FDUNUcQZh?= =?Windows-1252?Q?408HZNOhEUrB9gdAlZ6vCi7Yd/9eNtf46HbgQlzfHq+m16dwzZBvHQjI?= =?Windows-1252?Q?eVZkwL1Z1in6HHpc2wHFapUsP3A+e0zM1A8A/QBRmY2/5hBAbQDt95Rj?= =?Windows-1252?Q?nd+tFbhXe2KWsxSkii0dXdJkEg9fAsVp0yxamsEBn5fOzGV7kC7+pWfu?= =?Windows-1252?Q?6G4o94cSoIjbjEDkyYvjmhqrvEG53ZKwuCZfV34WnfwGFJyqKB04pnDS?= =?Windows-1252?Q?SYPiArn2D6MMnGbWXkEVruyZQzMw3yRGsLQ8ufN2+KjVEDFrZI6dm4Cq?= =?Windows-1252?Q?KbBtzlM6t6D/vzLmZW17cNOH1Ug++ObeQttN6ikm5mmgswpR7xuL20J8?= =?Windows-1252?Q?UvZXjESEUpQaw0JGc3nSVtWKm0gqTm86zeqkAkQDEV4PRLkcTnb2cocv?= =?Windows-1252?Q?+csAheXAlKNJE6aOVp6LbfD5n/GN8bA2WT3FPHk/g3EFubY2qCnYvwLi?= =?Windows-1252?Q?WptYDUdM3WfFj5fTW1d3N/tgU58+h/Ae4lXIJX8vitCdhjMybNgRZcyZ?= =?Windows-1252?Q?qP7U1e6EuMAV7ea2p8uUFGdQN3wqCXY027m/FaMTDlUHovNZRfmx5YBC?= =?Windows-1252?Q?34d3udGxr5qyDRW8HP9O6Sva4k6JbGr1mUCynJvCTYgIgOzTpRBklFsy?= =?Windows-1252?Q?c7c3bcWWbziJhEnSUwxIAd5myilpUaEiRSja4P05f1xoDDij2jkuUWGD?= =?Windows-1252?Q?FG38ZRohyBzKYP5JE5D3WElrSubCssXppz18Hok5IXEP6Vk5OFT0KJBY?= =?Windows-1252?Q?ZtRkLEZnQqMcSZn5LyRvT7+XzpnBjdNBXTesNF1JOyuXs0xidB8DN4Nl?= =?Windows-1252?Q?kzVQCafgxlC2Kn3Q7llI8Hf6GGWfEZXMfwodwU1hwuZKnaJ3oYdDnK57?= =?Windows-1252?Q?sjWqHBEOlmYgJidBz2g3l5jd4dtcfCGHVDwjcvVTO1x/0AnxgF1KuvMi?= =?Windows-1252?Q?YsgM48o8AWW0eHTN2z7Qk7S14FtyfWye37KhPLpY3HV97MbX5KTWv3X3?= =?Windows-1252?Q?yzHxQeM+CvgflTeOB2D1R0Vb7D13h3fxbRrmWIDrhxYTEiK0d6NfqbEU?= =?Windows-1252?Q?lS21SNDrjPaYbWzeUKi/DcbJA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0720;5:LPlkmqPie3UnRoN6EhQb8OlPpFYVbioBoHqAgva5OSeFwiPw/GVHoF05jkR9d0E+aU+JlmrZZdB4VJ1u+6zwITB1Z1SftmAT9zpSPeO2RvbA02wJ28XTHk8AgHYclL0WcfH5TeXKhztF9nPxs6L1xw==;24:Ac+ZpMDuL8ckuxAHPS+BmK7tx7m0NXXOfkbH6UsVgvIix4ocxnR3ab1eB9bFayZCuy/Oeasv5TXXES7ZIW6M8YDrX/DWeDpWijvq311Esng=;20:Uc0wzjoUTJS5Y//PBR4HTQH7kswgE3La/YNZTMIr0LIVdfeJbC8XCw9hvR5eQqyQU4b3hQ+52PDNuupLdenxR34fmysam94QEy0kVUUiSOX2GkWP5C0U+cwIs9/cq5m4Idfho5yBl3YYFth90nsbzupyGmsaauKf39WcuJ6Ehxc6tERUdemT2QOnbeF7GW3hCmINH+TAGjAKuG92TtlLxBEdaIkfxbqSWG/+7mmsrt68hTXBhnh3SV9URoQ9BbEK SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2015 18:31:11.1367 (UTC) X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.221];Helo=[atltwp01.amd.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0720 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org [RESEND] Not sure if the email went out the first time. Hi Marc, On 10/6/15 12:36, Marc Zyngier wrote: > So far, our irq domains are still looked up by device node. > Let's change this and allow a domain to be looked up using > a fwnode_handle pointer. > > The existing interfaces are preserved with a couple of helpers. > > Signed-off-by: Marc Zyngier > --- > include/linux/irqdomain.h | 11 +++++++++-- > kernel/irq/irqdomain.c | 14 ++++++-------- > 2 files changed, 15 insertions(+), 10 deletions(-) > > diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h > index 2f508f4..607c185 100644 > --- a/include/linux/irqdomain.h > +++ b/include/linux/irqdomain.h > @@ -183,10 +183,17 @@ struct irq_domain *irq_domain_add_legacy(struct device_node *of_node, > irq_hw_number_t first_hwirq, > const struct irq_domain_ops *ops, > void *host_data); > -extern struct irq_domain *irq_find_matching_host(struct device_node *node, > - enum irq_domain_bus_token bus_token); > +extern struct irq_domain *irq_find_matching_fwnode(struct fwnode_handle *fwnode, > + enum irq_domain_bus_token bus_token); > extern void irq_set_default_host(struct irq_domain *host); > > +static inline struct irq_domain *irq_find_matching_host(struct device_node *node, > + enum irq_domain_bus_token bus_token) > +{ > + return irq_find_matching_fwnode(node ? &node->fwnode : NULL, > + bus_token); > +} > + > static inline struct irq_domain *irq_find_host(struct device_node *node) > { > return irq_find_matching_host(node, DOMAIN_BUS_ANY); > diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c > index 1aee5c1..10b6105 100644 > --- a/kernel/irq/irqdomain.c > +++ b/kernel/irq/irqdomain.c > @@ -191,12 +191,12 @@ struct irq_domain *irq_domain_add_legacy(struct device_node *of_node, > EXPORT_SYMBOL_GPL(irq_domain_add_legacy); > > /** > - * irq_find_matching_host() - Locates a domain for a given device node > - * @node: device-tree node of the interrupt controller > + * irq_find_matching_fwnode() - Locates a domain for a given fwnode > + * @fwnode: FW descriptor of the interrupt controller > * @bus_token: domain-specific data > */ > -struct irq_domain *irq_find_matching_host(struct device_node *node, > - enum irq_domain_bus_token bus_token) > +struct irq_domain *irq_find_matching_fwnode(struct fwnode_handle *fwnode, > + enum irq_domain_bus_token bus_token) > { > struct irq_domain *h, *found = NULL; > int rc; > @@ -212,12 +212,10 @@ struct irq_domain *irq_find_matching_host(struct device_node *node, > */ > mutex_lock(&irq_domain_mutex); > list_for_each_entry(h, &irq_domain_list, link) { > - struct device_node *of_node; > - of_node = irq_domain_get_of_node(h); > if (h->ops->match) > - rc = h->ops->match(h, node, bus_token); > + rc = h->ops->match(h, to_of_node(fwnode), bus_token); > else > - rc = ((of_node != NULL) && (of_node == node) && > + rc = ((fwnode != NULL) && (h->fwnode == fwnode) && > ((bus_token == DOMAIN_BUS_ANY) || > (h->bus_token == bus_token))); > > In the kernel/irq/irq_domain.c, shouldn't you also change the export symbol from: EXPORT_SYMBOL_GPL(irq_find_matching_host); to: EXPORT_SYMBOL_GPL(irq_find_matching_fwnode); at the end of this function as well? Thanks, Suravee