Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932930AbbHIIC6 (ORCPT ); Sun, 9 Aug 2015 04:02:58 -0400 Received: from mail-bl2on0146.outbound.protection.outlook.com ([65.55.169.146]:21312 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932865AbbHIICs (ORCPT ); Sun, 9 Aug 2015 04:02:48 -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: 0NST2CF-08-TWD-02 X-M-MSG: Subject: Re: [PATCH v4 08/10] ACPI: GIC: Add ACPI helper functions to query irq-domain tokens for for GIC MSI and ITS To: Marc Zyngier , Hanjun Guo , Jason Cooper , Will Deacon , Catalin Marinas , "Rafael J. Wysocki" References: <1438164539-29256-1-git-send-email-hanjun.guo@linaro.org> <1438164539-29256-9-git-send-email-hanjun.guo@linaro.org> <55C0C5DD.6090607@arm.com> CC: Thomas Gleixner , Jiang Liu , Bjorn Helgaas , "Lorenzo Pieralisi" , Timur Tabi , Tomasz Nowicki , "grant.likely@linaro.org" , Mark Brown , Wei Huang , "linux-arm-kernel@lists.infradead.org" , "linux-acpi@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linaro-acpi@lists.linaro.org" From: Suravee Suthikulpanit Message-ID: <55C70919.2050805@amd.com> Date: Sun, 9 Aug 2015 15:02:33 +0700 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 In-Reply-To: <55C0C5DD.6090607@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-Microsoft-Exchange-Diagnostics: 1;BL2FFO11FD018;1:ELt86jNY+8/TtYOmxy3o0z9dK7wm5VUP9PDdfTXoVkzWSGsTf2tw5LfNlRzNTn13qNHwOaHvDpnH5daVxIy8htwEkRbb/q3cP0tHzXie6VAPDX71YhECF2+wG/oCwjHxkGqCvmX8tZUFR7HQDpFBLorrdzPfZEqmFyq2/GofGYD557+wWFUZldRzplsO/DxhSxCvX6ezGFVM7aecH2UDGQ+knjvcp3wBXGByb9QU7zBoVeeO3lngDC2IN3pNdA7M5M37ZJV89yHdrXXaUPpHs04z3sb4C7NKCT9uMlSj5mU= X-Forefront-Antispam-Report: CIP:165.204.84.222;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(6009001)(2980300002)(428002)(189002)(24454002)(164054003)(199003)(479174004)(5001770100001)(97736004)(77156002)(83506001)(76176999)(106466001)(105586002)(46102003)(19580405001)(62966003)(5001830100001)(19580395003)(23746002)(575784001)(65956001)(64706001)(47776003)(64126003)(33656002)(80316001)(36756003)(189998001)(101416001)(50466002)(87266999)(59896002)(77096005)(2950100001)(5001920100001)(4001540100001)(54356999)(50986999)(87936001)(4001350100001)(86362001)(92566002)(68736005)(65816999)(5001860100001)(65806001)(217873001);DIR:OUT;SFP:1102;SCL:1;SRVR:BLUPR02MB1137;H:atltwp02.amd.com;FPR:;SPF:None;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BLUPR02MB1137;2:BPesWAeyF/WwUUypG1hzAdlhNBsIut84t2+pW5oGzDy6H7uYRx8nhy+AoMcDYsdcZaSTv8XnhDoG/hXy5HnLFLBVWU58Iw77aEdo4+hIxzUSthscjgJU2pPpzulzOCrENj46ubsla/WSnRN+ULtUxNgLN+HcF4fmJq4GeR5bnR8=;3:LmqhFnwewkXqfOHvjU1kDcviFmvS1q2g/b3KJv1AZpIo595gTuCiX4GiE4C+VERuClWHdfvmjTxgbJwnm9C8P8ktVsJOmuWnV8UABGDxkkG2kdTzXBntE8Nj9hQt+hlRAdzfRo8/T0s6vYnEhDLIJ+regR2AK9jNSEYy8hV7gPkaUviUCjU+J+fY62QYIqR9lqXgREQvq1LB0s2AYh7wVs4M51jcGNIBf9QY6454fPVkvFVn9zELhHkdSqgU51bC;25:BPNpc/g7Z7YRhCdEtFOWJ68ap41NZC2AlLWHn3icrNcSaTMgFYxapAfHGGn0REJ0AaEY4nNQ82jY/fP6A7ZFKZ5oC3UN3CiZzHbYoei+w2C6zmQcc9jYHYQ2T4dvpyW1Inf/jtr3H4woHOZmHLO0uJk2fjtQT7OGSSkYkFBHN+qzvCrDmWUr3aXOwpjZtS6PV0BDPC9QUwRF+I4bL0UM539NWphGek4PY4kowjp4MCzazs/Fs8jmpDg6C1KCOkVX36dDiW5pF5/6qnIVV1C9Yw== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR02MB1137; X-Microsoft-Exchange-Diagnostics: 1;BLUPR02MB1137;20:65lrSZ6t5JGMGYafUc7MQQw7TeOsUPdsj7QkbgQMheBzdvHPZQJfDpQK/ThDm2kpbcxquTF/CPQD6fhTihhjmUyM+Lq2ZHKSMdS73tjCnlXrXuya2FEfWyFfaWszJBG7q+WTQLCaWMK/ZMw8XZl9rmBytatjEd3J6foYiLg8r1GyeP5HchZOVZWN+DSR2EypU5X2OzZOP2O4vZYhe8GfkC5cKp/JamqrEUfRryzK2Cx6RrGIzZpg6FTqnM4BhIhhAJRG8qH91UEemQy2V9nzM4ycs9P7oM75OTwEsNrIO3ethUjJaTKy73xckWxYoV7Kfh86eiMZ2GRY5ZI6pXxEei/i6PTaisY9sPYc29uwFC8gnzPeF633QUhe6L+4DXiD3E9a39Om5YqKQvApjpaqFe2gS1xWmLF1mhQ7Cy5uScCfOUgO04/k+PUpBfeFCgtkShXO/am4CJ1zGRWT/RT6Gws4jXbaQqVrGw8RmVlWSPdC49QEfXchXhbWyBi4Yp/Y;4:0/hqbZgKAQmPtr0Mk2hcM8oeg7C0e31ebvbWEphWRKFVOqEICl2zrF4bkKUwuvUdTGpReN8P92h8+Zh4m/cN06aGP8toUJXRy4LGslret1weuI2LYGCZK1Cc+6REHWB1vRbAvNrGAeDWe4XpeFAxYjY/T6N3dC3zsvnX3ySNL9Ii/OpQ0+NFwNRM7CB18OBMrtBtQay3vqOEsCC0mQHx7ruk3WFLBJei10Te/VztalQ24bxlkkRfFv68XBzQjUpwa9lnJALJGFYp8dcRdaW1rVz33x8HSjRzryVlQPhwf20= 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:BLUPR02MB1137;BCL:0;PCL:0;RULEID:;SRVR:BLUPR02MB1137; X-Forefront-PRVS: 0663390E1B X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;BLUPR02MB1137;23:W3VvFddnMPhzemLhh8UXkeB24etpBM5JyGQmR?= =?Windows-1252?Q?mds5spZXZq8dllMWk4/nmK+XLdkrsEe1hC3LVhE4p88gMbeZVyaEltPR?= =?Windows-1252?Q?bu1k1iPWcCHICI7JQbUqyvmrpCRSAiL7e2ed6yhTpPHcvs/Mj+Q9eM8h?= =?Windows-1252?Q?mJR4yO8vsP/f8pL+tEewb5gk8M5KN5VkVeuc541w0V8XekCiWEA57EBX?= =?Windows-1252?Q?vqFyhanyqcfjPd2ct3tKn3YiMfu61xQQDifE6sjOyeL4PaHbk0Rz0dWs?= =?Windows-1252?Q?ETm9FkV9AUlP5aIBR4irf/lUr4eepWrwUP4xrVWXC3JH33zDScXA7PF7?= =?Windows-1252?Q?ms/lkfnQON9gdYl+36Bik+oHm0Cb7v375so7/PJ7KuN3pCzY+I8JYA1s?= =?Windows-1252?Q?ItFIIAJ7oxbg8omB8bCcsPqJWwM9/iszhdrQScntIHhbnHRgUpIaRygo?= =?Windows-1252?Q?2n7tdnIkF3ZNzaSyhudawyWd9hBpoADlteOr+rxIxTqaYL3OnKFVFxfN?= =?Windows-1252?Q?tikvozrBzQSD7dGH+AVKPZgdmA2w3T9RxSnEheFltVLpgiVGLiKv2YuC?= =?Windows-1252?Q?91PlkSP6eF3iBYZcloZw+YzBcsk5YpZQbRDrLmPB0bxug8FaMJF/wT6Z?= =?Windows-1252?Q?+lSgBfNyHcPLLLqNlRTH1SK1SZnq6mw4FOtb8fc052FThYm07hzQYcwM?= =?Windows-1252?Q?tPlVhjPV+c3WLG8teSWv2tClNnFTa43A1Cm+IjNNhwfuZDBxR+ai5ggH?= =?Windows-1252?Q?5y6KDyWbCkDYFWdEAxxES9Vvag0mURR9tbHoqvSzS6nSeiSnzzNd/YX0?= =?Windows-1252?Q?LgP3XYMX7EiMkx73UTjKBEdcRiKG0GGQKFTuKOW55J1G5UueIw/v+XQ3?= =?Windows-1252?Q?pmG1Vda8W9fMqBOc45RBSbgeBP02CEX3R2mQL7cXcJStsJvrW1vRhFM9?= =?Windows-1252?Q?B3sz3OWV+p5sOtKj9jc3mcS/vEeiV9Iazi+as1s3NEpEZg2dUitvBsgJ?= =?Windows-1252?Q?l/FOlZgFClz0RKDpitfztD+igWVjt6wntbZrRvDiDHfCgWajomCROOSn?= =?Windows-1252?Q?IVms7YNlDWNuZtGaYjOefWk89LxSW2q8rCQgZlnCFufG+TbGmM4ERaF8?= =?Windows-1252?Q?A+RUX4Xg6sJi010P4dP9SJhDBMtpzHmNb0wD4+v9Zxo0jSg8iSDaoert?= =?Windows-1252?Q?0TntaD/2ti02QE+WHsjkB5GvST2gEpQwv6pPdslfFuJIYVMBWNsjTvJe?= =?Windows-1252?Q?rGdRR2YH2sHLYx8BUKTm4yAJyQ0T40Yh+mdfdMaGjtbOPrC7c1xmfWRq?= =?Windows-1252?Q?256aYG5cpQmfSZXcOILBJwXWPwaT5OE9EJRI9Q+a/Emh8EUHOh8qgDIZ?= =?Windows-1252?Q?EdwhfgLQZdQKJTXUzBfA4HAVWSS6V919Q=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR02MB1137;5:bjRQfmudO5H7+N8NGCAGbZXnWj4dcT2/Zm/gYVxyfiHDA5jNxyRzt8UQM9JTyuSvXGUB0E79gTy9dvXLrF2cObXZ8iUEMaWKN2rP8PVRtR9NzahG6NseBB/YF6xuCVIEvf57TxeSJxfJ4ecuGMXxSA==;24:+ks1wYpj2aR8v5jML3aZoopuKYq7GC0bi3npiB19QCjMBzxTyurPydTbJd9GUHruw7vY+9ltR1ftXWHujTMNasM0lv/3F8vikEb0Qe3Emfs=;20:Yyxp9mE9lb2zK5RUAnJm5zpETLPislLWTEVMtc+lppU4xIATCK14D7L88HsTtWMm6LaN89a+dSB0RO7ctWD7WA== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2015 08:02:43.8920 (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: BLUPR02MB1137 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3966 Lines: 103 Hi Marc, Sorry for late reply. Please see my comments below. On 8/4/15 21:02, Marc Zyngier wrote: > On 29/07/15 11:08, Hanjun Guo wrote: >> From: Suravee Suthikulpanit >> >> This patch introduces acpi_gic_get_msi_token(), which returns irq-domain >> token that can be used to look up MSI doamin of a device. >> In both GIC MSI and ITS cases, the base_address specified in the GIC MSI >> or GIC ITS structure is used as a token for MSI domain. >> >> In addition, this patch also provides low-level helper functions to parse >> and query GIC MSI structure and GIC ITS from MADT. Once parsed, it keeps >> a copy of the structure for use in subsequent queries to avoid having >> to map and parse MADT multiple times. >> >> Signed-off-by: Suravee Suthikulpanit >> Signed-off-by: Hanjun Guo >> --- >> drivers/acpi/Makefile | 1 + >> drivers/acpi/acpi_gic.c | 234 ++++++++++++++++++++++++++++++++++++++++++++++++ >> include/acpi/acpi_gic.h | 23 +++++ >> include/linux/acpi.h | 1 + >> 4 files changed, 259 insertions(+) >> create mode 100644 drivers/acpi/acpi_gic.c >> create mode 100644 include/acpi/acpi_gic.h >> >> diff --git a/drivers/acpi/Makefile b/drivers/acpi/Makefile >> index 8321430..def54b9 100644 >> --- a/drivers/acpi/Makefile >> +++ b/drivers/acpi/Makefile >> @@ -54,6 +54,7 @@ acpi-$(CONFIG_ACPI_NUMA) += numa.o >> acpi-$(CONFIG_ACPI_PROCFS_POWER) += cm_sbs.o >> acpi-y += acpi_lpat.o >> acpi-$(CONFIG_ACPI_GENERIC_GSI) += gsi.o >> +acpi-$(CONFIG_ARM_GIC_ACPI) += acpi_gic.o >> >> # These are (potentially) separate modules >> >> diff --git a/drivers/acpi/acpi_gic.c b/drivers/acpi/acpi_gic.c >> new file mode 100644 >> index 0000000..11ee4eb >> --- /dev/null >> +++ b/drivers/acpi/acpi_gic.c > > I think this is starting badly. If this is GIC specific, it lives in > drivers/irqchip. Nothing in drivers/acpi should be interrupt-controller > specific at all. If there are things you need to expose through the ACPI > layer, add some indirections. OK, originally, I intended for this to be an intermediate layer b/w ACPI and irqchip, but I guess that's still not what you are looking for. I'll rework this again. [....] >> + >> +#endif /*__ACPI_GIC_H__*/ >> diff --git a/include/linux/acpi.h b/include/linux/acpi.h >> index 04dd0bb..5d58b61 100644 >> --- a/include/linux/acpi.h >> +++ b/include/linux/acpi.h >> @@ -44,6 +44,7 @@ >> >> #include >> #include >> +#include > > Ah! No. > >> #include >> #include >> #include >> > > Right. Very little of what is above belongs to the ACPI layer. What > would belong here is a generic acpi_get_msi_domain_token(dev) that would > call into a controller-specific function to parse the various tables and > find out which GICv2m frame (or which ITS) is serving the given device. > This would include parsing of the IORT structures if they are available. The problem here is we would need to figure out the hook into *a controller-specific function* from a generic layer (ACPI in this case). > For GICv2m, it should be simplistic: just return the domain_token of the > v2m widget. For the ITS, it is slightly more complex, and there should > be some specific backend for that. There is no ACPI support for the ITS > yet, so that shouldn't be your concern at this point in time. > > Overall, drivers/acpi should be hardware agnostic (or at least aim for > it), just like drivers/of is. I think I understand how you don't like the current approach. Lemme try a different approach and send out another revision. Thanks, Suravee -- 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/