Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751555AbbGMJPA (ORCPT ); Mon, 13 Jul 2015 05:15:00 -0400 Received: from mail-bl2on0138.outbound.protection.outlook.com ([65.55.169.138]:14641 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751302AbbGMJO4 (ORCPT ); Mon, 13 Jul 2015 05:14:56 -0400 Authentication-Results: spf=none (sender IP is 165.204.84.222) smtp.mailfrom=amd.com; arm.com; dkim=none (message not signed) header.d=none; X-WSS-ID: 0NRF5OI-08-RTZ-02 X-M-MSG: From: Suravee Suthikulpanit To: , , , , CC: , , , , , , , , , , , Suravee Suthikulpanit Subject: [RFCv2 PATCH 1/8] irqdomain: Introduce irq_domain_ops.init_alloc_info Date: Mon, 13 Jul 2015 16:14:17 +0700 Message-ID: <1436778864-17645-2-git-send-email-Suravee.Suthikulpanit@amd.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1436778864-17645-1-git-send-email-Suravee.Suthikulpanit@amd.com> References: <1436778864-17645-1-git-send-email-Suravee.Suthikulpanit@amd.com> MIME-Version: 1.0 Content-Type: text/plain X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BY2FFO11FD037;1:MPnb8TOShlnIHlUn1LUfnfqOQs9BcLSe6fIAe8Ed9rMdCR0n5qr5O0Oadnb0SXTWl0RL/JTtdaW6VtLhuznfeG2agnLjAWWaobJuJyLaGeu8anvNPaQIQVINGWtQcr1R7r3jSNZ7G16yuk2IR4rhGWRfT8JzHcW+7RdZJgOUElqozvtgoxJLHY5tCXZ78vTMe7yTRNgXv2PhCCwE1ie90+QlqWMivlO0SlqFCZsRFLEpfcE6XbyuY1PJtC1pu5wrh1EXtNDNgLtQQbAbabxWFxTiP1tdvt650JMxoLC1NF9vuFG6pAcfZN47yJShHYgPhhPvuUM0UfvAwL9kzlXOTeG5XZwodtfIW6w3d0n08zMVJ7EWrT5c8P5v08cH3WqPXAzzonUiKvMNjLauEv11Hc1YKyobC2Ecz9ccR3Nyymc= X-Forefront-Antispam-Report: CIP:165.204.84.222;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(428002)(164054003)(189002)(199003)(92566002)(19580405001)(19580395003)(77156002)(2201001)(87936001)(53416004)(229853001)(50226001)(76176999)(105586002)(86362001)(50986999)(48376002)(50466002)(5001770100001)(5001920100001)(47776003)(101416001)(62966003)(5003940100001)(189998001)(2950100001)(36756003)(77096005)(46102003)(5003600100002);DIR:OUT;SFP:1102;SCL:1;SRVR:BN3PR02MB1141;H:atltwp02.amd.com;FPR:;SPF:None;MLV:sfv;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN3PR02MB1141;2:D5EAYDkE6HrCZk3s1ylcsMNvwHwxW620g7VOhlSsNt2jDNOGBchz4UxcCWvLdf/Q;3:T6Leg6DA1L0jWRMY+vv93R3ZZBN+OjCmM6Vx8ITHR4rlOYVNfqH5J1TZ6bRembeTKUi1qXaPf1+IHK8hwhRBDi/3WRdP9EDxMKQwNFmXGgACOfDiyt0v5ZUcNFSbprEa/RFf3ogNNj8j2v+HS5GnVnNjxBoPEgtLTMrxVZahToTBrZWaX1/t4ZD/N9fJmxd5WLuV3gVw6E148Ull+VyuvQQHr+IFUnbUOjj9sXh0SNM4tENhUsu3VL3SednA8WaX;25:fxpBz0snmect2bcJPJucXyHhTfnkoinlGC6xVlr0GQInxrObTxmgCw2eDQMwYzhoFrQYR51/SCBeiI+mReeEv+9EK1mHT7N2v8DE4biZQ1TM+qZ1TzqFn27voQx/KUv8YRpcvU7MDdDNYTp9iF1nIL21xQjA9CfF5duLSdyUdEk5EyWgHQpStmWjVCVyRdqN7DUPv5o8ZRacdBk+RwG2mTS8U2lTOoqtjcGin3FVWW8SdbTRiO5W73UQvPOpCNfCVrMBWeUqP3uPdM6dSpWjCg== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN3PR02MB1141; X-Microsoft-Exchange-Diagnostics: 1;BN3PR02MB1141;20:zW7943ECPstUCZkzPLi/KA+muTSlkqBbWnHaDikq0hjB5U5DUcCZd9SQHcU+h7ja+QxUpMYdHW0e2TJhVSwP+eu0T35Clsxbf3adghjwwB5IiD56MBGdTCvuuvBrCZq4HQiAhjAaIfNGBJvcMU9R8WSiNbhnsI4wUAgopQBAeXjK8JJRCVE3VKJQ2Z40ZS4by5f/t4d/YAVzzHqC4sUisqfZBwhqIAeukVAbz/Lf9cVZU1BnXYYmPgtD+UrinmeAHfFXZRb+i/EWF38ojmjsC/H+34Vm/vdwN39z5WWD2AuPnnIg9E0yVFRerLhlpcpCEoAWzZsqYWME9yi+2N6GUx+yhC+UazI7g6gEXu02YUtHP4UtvHm8XZU8MZsqzaZbi5tqTOjPndAEdSJpmHyG8weOhtjeuJdgNDCzU3mXP5Z8P+jG10kdVpNPCqqNHagYpTIIH2CCq6q8uiVKc5HLex8f9bofxq9BfkguL31kV6hZj0P9hWN5pAl2lSRQbYyh;4:8enTxM4S4AvNdwtXFEhPYHnY1mbA7UVGKJTXkE/lP2iuvxyGKnDJGmZyjjNnVJWoWcqbjinYLSAfq3Lgfu++UQS8KSptAaCbd82es7SWqQBPkdaUlOAnDx9/D07OdVnXann5wYy4+k6XTairiqbhGsR/o5SeqNLWDhUS7Gi4eO1OvrF5JAeDbmGnS+/EzGLo99FGMjyda1e6Duyet+DvyrGX4WNyNh5AhGddD3UPvs919p2xfr0QwVJNAb8nxtZGlFdIOUegsGKH2Lr2YKQjf8igxJWhL4Wm+q6KgX4Xk58= BN3PR02MB1141: X-MS-Exchange-Organization-RulesExecuted X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(3002001);SRVR:BN3PR02MB1141;BCL:0;PCL:0;RULEID:;SRVR:BN3PR02MB1141; X-Forefront-PRVS: 0636271852 X-Microsoft-Exchange-Diagnostics: 1;BN3PR02MB1141;23:HguLG82c8W+80CrOYQ3ckZETEcvvHtU7PhL91Z44F9XwvJSDE6BjWY9zmQvyRL53EUesXlJ0e8aDriGyEFXxRo/7/DzARiSUIhONWZpbn0qMbGGC9ahsbADzNFeUgcAZ3FNgD/G81NLeBO6Fph7O1gXkWs8eGODHodsEXC9qwXNOrbWvMSbYtym8rCUWFsLpzHz0eEYNKwcBKNe9cIY0b40bnIasAGi2x03pKNXZqkceMuZQXuyHfp6W//a9Ah6WCs9JtDg6RUCAzH7cKDJZetTcwlCKOoFzDurcxfVcAUTlobuYXFOBDkNvmWYugpcHmsuA+h5fBH0ry9PmVBN8gK3yYkiesg/PSENR9iJQpsAwSrfVZtsIJpxgtjgGOfsCcPylH65qm1TuGjX0FVI35cWfsrDMOpdcpBpsmW++YtcoAyfxAtAnX3waNmzuqb0gU/jNxstcJtk1kXZUC0XL9ougWrv1rqS+T+v17blbFZbleCxY2WglUVIPpMsW/sPYjEnmYM/BME4w+3r6U6NW6ZnloiCsbfSNxRK5i8XSB9kZ6Sbyjh/z5IHWk5Nns1K1cixR6Npug7JE/thZHicC1qA4woBSjvXlOd+QJVdH3RRAjqvkMOkE2BBR0yd8A4vmn+uf5aZFPxEtWTZNg7831IG1Se4El9xmqJtp/rHONSHy23BxBpm3SyCkBad9PAPAsy+Q983QQhrmlnGwBI9zxrfLKpRaOiG4uu3/JrClwTve3PNa1WjY7WN+UPfdUOzeBTxo5Hk7YgVxnFYb64ghR6Va0CcLAkhBny4eHLAD84f+VsO46ZCz/0RgZe7fUY5lH+PaZI9QVLxtuji5BPWoAj8T7fsyz5jZemwOx+H4YgoX3LGScSw2Q0oShSUSaVuSr+ZFE4IpWdVUNXO7Bb9UDw== X-Microsoft-Exchange-Diagnostics: 1;BN3PR02MB1141;5:7rkxEaF/BT431CoQHEfqNuW/mQEHPhoFm3gv7Bp9z3l5LpTcBqKlymPWLOTKIAU4ZdOn5VGmxNTxBKTV36cWRFvJxGwvExOF7QQyp9+7AbQ+cCMLeWyIPLgBi7vAN0FRLo/taOUXVy33lBf1yGx+4g==;24:b4JJBkpanrA0wgTvpkT0+JBps0oReaCuQiHXcJGxIBXGxSBg7pLe6ZL/MhlSMe2qybPR2YxDubgQ4tmdh/TTqAKSzz6QXxW7qm10Bt2dlwA=;20:qwQvl2tuTJQ21czG719vIfLDSYOdz0ACe+XGsk0RL1bBornwOJvDooArQ/XivvjEhjZmSj7NJpsAV+Rq2qy3Nw== X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jul 2015 09:14:46.4120 (UTC) X-MS-Exchange-CrossTenant-Id: fde4dada-be84-483f-92cc-e026cbee8e96 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=fde4dada-be84-483f-92cc-e026cbee8e96;Ip=[165.204.84.222];Helo=[atltwp02.amd.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR02MB1141 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2751 Lines: 77 Currently, when calling irq_domain_alloc_irqs() on ARM64, it uses struct of_phandle_args to pass irq information. However, this is not appropriate for ACPI since of_phandle_args is specific to DT. Therefore, this patch introduces a new function pointer, irq_domain_ops.init_alloc_info, which can be used by irqchips to provide a way to initialize irqchip-specific data-structure for allocating IRQ. Signed-off-by: Suravee Suthikulpanit --- NOTE: Similarly, x86 is currently using struct irq_alloc_info (see arch/x86/include/asm/hw_irq.h) and each irq_domain has different way of initializing this structure. Patch 2 also has an example of how I am planning to use this new op. Alternative would be to keep re-using of_phandle_args for ACPI as done currently. Any suggestions / feedbacks here are appreciated. Thanks, Suravee include/linux/irqdomain.h | 2 ++ kernel/irq/irqdomain.c | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h index b4a74f7..1e51369 100644 --- a/include/linux/irqdomain.h +++ b/include/linux/irqdomain.h @@ -86,6 +86,8 @@ struct irq_domain_ops { /* extended V2 interfaces to support hierarchy irq_domains */ int (*alloc)(struct irq_domain *d, unsigned int virq, unsigned int nr_irqs, void *arg); + int (*init_alloc_info)(uint32_t *data, int nr, void *ref, + void **info); void (*free)(struct irq_domain *d, unsigned int virq, unsigned int nr_irqs); void (*activate)(struct irq_domain *d, struct irq_data *irq_data); diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c index 995d217..54434d2 100644 --- a/kernel/irq/irqdomain.c +++ b/kernel/irq/irqdomain.c @@ -478,6 +478,7 @@ unsigned int irq_create_of_mapping(struct of_phandle_args *irq_data) irq_hw_number_t hwirq; unsigned int type = IRQ_TYPE_NONE; int virq; + void *info; domain = irq_data->np ? irq_find_host(irq_data->np) : irq_default_domain; if (!domain) { @@ -504,7 +505,14 @@ unsigned int irq_create_of_mapping(struct of_phandle_args *irq_data) if (virq) return virq; - virq = irq_domain_alloc_irqs(domain, 1, NUMA_NO_NODE, irq_data); + if (domain->ops->init_alloc_info) + if (domain->ops->init_alloc_info(irq_data->args, + irq_data->args_count, + irq_data->np, + &info)) + return 0; + + virq = irq_domain_alloc_irqs(domain, 1, NUMA_NO_NODE, info); if (virq <= 0) return 0; } else { -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/