From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756581AbbJAQN0 (ORCPT ); Thu, 1 Oct 2015 12:13:26 -0400 Received: from mail-bn1bon0093.outbound.protection.outlook.com ([157.56.111.93]:62240 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753130AbbJAQNX (ORCPT ); Thu, 1 Oct 2015 12:13:23 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=David.Daney@caviumnetworks.com; Message-ID: <560D5B98.5050400@caviumnetworks.com> Date: Thu, 1 Oct 2015 09:13:12 -0700 From: David Daney User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7 MIME-Version: 1.0 To: Marc Zyngier CC: David Daney , , Will Deacon , Rob Herring , Pawel Moll , Mark Rutland , Ian Campbell , Kumar Gala , , , Grant Likely , Thomas Gleixner , Jason Cooper , Frank Rowand , Bjorn Helgaas , , David Daney Subject: Re: [PATCH v3 3/4] PCI/MSI: Add helper function pci_msi_domain_get_msi_rid(). References: <1443653222-24924-1-git-send-email-ddaney.cavm@gmail.com> <1443653222-24924-4-git-send-email-ddaney.cavm@gmail.com> <560CFBDC.4020901@arm.com> In-Reply-To: <560CFBDC.4020901@arm.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [64.2.3.194] X-ClientProxiedBy: BLUPR07CA0103.namprd07.prod.outlook.com (10.255.223.174) To SN1PR07MB2144.namprd07.prod.outlook.com (25.164.47.14) X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2144;2:5bwjN+jKxcVqw/WTlrD3qq4UP/EB9BN7SuqY5ChCz58JGVYNG9BSJdJNqsBlv4rEdHaUXDFQ5PE727nZCKCPPKYTYy30X2IgqgHTZCG6uePrrjIf24aWhfeVdvPUnPUhBufKL/qh3awb7VqiejZTNB5pA89xBHfHSpvt79CO8m4=;3:JsjUNEHmmMzARJyx5RkOyTXc/H1iqJjx/8s9JHq3w+6zPLWv2gEXP+HOCgEqlBdkQyZySKIUwHpFh3GxqD847m8qXnsoBl6p9P1iYcxl2Y+vS4Fy49J4H0Akxfn3m/6OHUjy4zL68kRv0DTdaHhz1w==;25:FlDihytGO/XYknDGI1aw6yGfWgBwpL3kyn2zsbCMBVPu66qh6cZ1wVG5O3TpZWqhwH6Ye/C/bnX/cYTIomo0bWFaldQ7pNHR+WPtdO8ANl8DMvm1fqblteiBl4kYAY0RqvxlgaZowLxXvfZ/A4RluCgDyfdl7pDmNVnExumMNWWE2GwpZ8j9vYWCQZBCMBUOfBAGkF712KVrokwj+Crcc09ByKrUM6SNu/U94Asyr6FGBpD3zss5MbzVo8wsAm/l6M/uiskPUqe8jseKHf8IlA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR07MB2144; X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2144;20:rvIrVi2slKTiEOlZR0x/ktPL+GMGi1cBB98cCgthXw6uFq8vo1x6A7xDC7Gkl369wRmNJ2i2QikkbDwTmTkenWtwU4POURN8ukXevNizTP4P06Ltpl3rVo9XYJesPtyYJ37q9yrlCHGI+AmshsZzTJkhxy2a6RTFz6HuYqtyKNPZKjwgkB8AoE2+12UQNtzm3ESPTM2s+StcSOQITBZ2tjPEFWbowkQ49E4MyKk4lKi1tBWBqszjZMDkcnjy751XAn6mGwNdyH40E2C1+fI8yYYQi7pRw5sLW6q5LK9oS9QPB3L41T20nLVlvZYaXwycKBer2q4/qmBmJ3a+ABo4ewVsdK5C6sEl3o16GQWkN3ASGkHgyseQhWSZVPVb1lEX0+sM4q0n+H0zX6IBsX32UAoNNnqfGzVn2zIeihR3BuFGGjCjViLp6Rlcl9wToujiy8c0XUl4CHgPR5s2+8+MCENUIzQ9fU6MInJNtayEbcc7sIEgO2Xjb4NRW8w7n1L9+k6W8kHmEQ4MxQsrKyTEtOeIoDIy2O8RY35RRiqjepc3F+UEneGwaTXkOPkubBDvSumg3VbUpGtx6KGnYuMQ31AuWZBnux7MZt6D8IEit0w= 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:SN1PR07MB2144;BCL:0;PCL:0;RULEID:;SRVR:SN1PR07MB2144; X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2144;4:rXxYgSyDOxiRyFYEBO3pMTYMT94dzvRpI6dHa0/kgLS7MBJ3hI5Y0LM1DM+Pk4goBYaI7FESCfQwV3Z0PBP9zshssgrKd1h5gGOH1PPIA4Qs79xr89i6mMNuzFIhtYGcneqxPPXGakU5zVSaCyIjLbnVbdugRjk1o5r1zueOuCLTVZAC/gugJJ6R/ivD5P4QqqqGTMXjb3JJY+M1sYp4XDLnirIUKgEU8sQIYJEvU/0CvcL4XNFK8aZHiLcL5JZlkwkkwWaIH/9HOALkAiBd5f0KpRouu/428umVY6KcDfZq1w8mD/3Hsvkh1z5uHLH7jFgynScZuKFm8aYhgaE7rpAadvP3eNbzxT8zc4NyvQc= X-Forefront-PRVS: 0716E70AB6 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(479174004)(24454002)(377454003)(199003)(189002)(65956001)(64706001)(106356001)(77156002)(54356999)(64126003)(81156007)(4001350100001)(65806001)(53416004)(50466002)(92566002)(47776003)(87266999)(5008740100001)(5001830100001)(5001860100001)(50986999)(97736004)(80316001)(5007970100001)(76176999)(69596002)(4001540100001)(19580405001)(87976001)(62966003)(46102003)(2950100001)(33656002)(19580395003)(83506001)(122386002)(105586002)(59896002)(66066001)(5004730100002)(101416001)(65816999)(40100003)(189998001)(68736005)(77096005)(42186005)(23746002)(36756003)(5001960100002)(110136002);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR07MB2144;H:dl.caveonetworks.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;SN1PR07MB2144;23:PUOHivAR7+6h7mL6HXBsC4zSm+o1pIfzqc4Hc?= =?Windows-1252?Q?HQwUVPDkbhOaBZjDRSCENT61OC9aWJc7/S+855T1JT6jE8NVmNvYFj9I?= =?Windows-1252?Q?z1eaE68NBK4vIMXJxwS1EHrFpYMC1J7YE2FOgqA5MEfQBl4Ce3EZ6V+M?= =?Windows-1252?Q?JnsR0fh6ssxl0t4EZZNhwrhusrUgXFsDgPexXyjlN/7h2tMyTjxUaZUr?= =?Windows-1252?Q?Ue4X64IwyHDblaeBEIciuoufxtW4lqq8eiXHhqo6S1yUSzcOjI1s3lYG?= =?Windows-1252?Q?7j9Acbu4U0Fa8jrL+m4QnapJ/676tKsiZano/Aqsiay/T6RAUfEWwCJw?= =?Windows-1252?Q?PXwwDEPhOjIGvVvcYYGvreX4EA8lBkx8aKg/klZMhJdZQPOoM6LOV6n9?= =?Windows-1252?Q?YUa7lgDQJHskosqhNhfSQsrjaK4OwysbgKTiA9toBzYJsl1HNPfzdH8J?= =?Windows-1252?Q?sh1DHbbjVgDVf2P1Cx+IhYce7aysMu5V5aXLTXlucBfLngPGhKG/aVdP?= =?Windows-1252?Q?YKY1j4/FxWP53v4fVGSxxVmFviRyiasptALtpKP2CUeEVqbHNk0ef87X?= =?Windows-1252?Q?mqn63JH24YpXLcdTiK8LTevNWvaFewmHxmqonYMxkdoRFceyJkTTZe+c?= =?Windows-1252?Q?8+hn50iEYyFF21e8y6XWsYLZjeQmvjYpJ8oS0Kod3RRLK4BpXoQxUu8X?= =?Windows-1252?Q?1QxDVrmHK7q1v1nQaqumlBh2CoT10P3HE+QoHbZXg7QqtAO4hKOgjpfc?= =?Windows-1252?Q?Y+MAyLlLmCXpAAw2oK72manXqJxqN7cI4IXy8VyMrlTvbODD8bvv7I2U?= =?Windows-1252?Q?7qQGew8WI35JaiH2pKdxokDf4HjOzeGejrxw56yvYxefgRLsPK254xxC?= =?Windows-1252?Q?rOMb/UzJ+uLxmqBxnwULndvVQw8LEdCWnbDTXyHfCLe5gPsvRMcE4e5P?= =?Windows-1252?Q?GFGPT44TE4ZO4hJmU1pR9bL1TFL4fU4g5T5/NbnuxjrHsFsZl3wA84oo?= =?Windows-1252?Q?tqtNtvrl15dv8QoCs1J6EjmgaEXAruSDT/3m6Zj/AsngC+VQQlf4mHmp?= =?Windows-1252?Q?dDo80DBqLXJqZShuB+mowX1kDRBjSpdbdZitQuezAXvZ2WmOemay9vXC?= =?Windows-1252?Q?tUrMmJtPXAkaqzUGBOO4bLyUzkfRG3mkjuE9ZfKNAJNaSE46ECyvbL7E?= =?Windows-1252?Q?2nWfKrX+pk8IE+doka86h69lLgKUuxRQg4B97IL4Dnf3La52vnzB1Mth?= =?Windows-1252?Q?JJ3JRYBd9e14ZBXKXsYSblrhsxmuM75hqdebKbBBVTUCOb1mwL6Nh6zv?= =?Windows-1252?Q?dvc61p1Z8G+hOaIDFJBAPDVhyzeuMCIlrdgAhJyOUehchtwy9aFv+jLv?= =?Windows-1252?Q?9XtmkBS4PimEbbxDy/E3l+ddU8j32TvWUrLzjnECntmsRN9GCQA0tKe2?= =?Windows-1252?Q?1I2qNRrutoSoPH/DBvs4UUds5nrYzfppt+vfATm4JQ0qevf9ykCm83zx?= =?Windows-1252?Q?QiElP4kzUdrJaZ8QzKn0/cIbcAqPCP/HteFXD7vu4ktMoGXvA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR07MB2144;5:VH8guwUKtZTeB9o2rJZCK3LeecW5dT5jdtdJzO90OunR9jsuTWe15hVCKbyerrg165fqdMIN/vkdQ4UIaEENiuUsQhCtj2fpIL35EmJ4TdlDRrAIBM+qvN8Cq6I7LHyEynKylqB0jIeXRgbKIrF8LQ==;24:XL46sp0zPG7E5tpPa0cGa4RlJ9sLottnr0Iuo6gD4c+1M/P3u7kHxVNFh90EFhJISdRFjY10/rysjNznVkTNgnbO0rSaddk9XJfVSoHbrsI=;20:temfsoNvyQ5K/VaJ42pfP/spgzMVpdoEtstVehLz0tZTuo1gWPMJWdFmdWO5vLS8g+0v71Bg8FW08QwVX8Xkdg== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2015 16:13:16.9183 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR07MB2144 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/01/2015 02:24 AM, Marc Zyngier wrote: > Hi David, > > On 30/09/15 23:47, David Daney wrote: >> From: David Daney >> >> Add pci_msi_domain_get_msi_rid() to return the MSI requester id (RID). >> Initially needed by gic-v3 based systems. It will be used by follow on >> patch to drivers/irqchip/irq-gic-v3-its-pci-msi.c >> >> Initially supports mapping the RID via OF device tree. In the future, >> this could be extended to use ACPI _IORT tables as well. >> >> Signed-off-by: David Daney >> --- >> drivers/pci/msi.c | 31 +++++++++++++++++++++++++++++++ >> include/linux/msi.h | 1 + >> 2 files changed, 32 insertions(+) >> >> diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c >> index d449714..92b6dc9 100644 >> --- a/drivers/pci/msi.c >> +++ b/drivers/pci/msi.c >> @@ -20,6 +20,7 @@ >> #include >> #include >> #include >> +#include >> >> #include "pci.h" >> >> @@ -1327,4 +1328,34 @@ struct irq_domain *pci_msi_create_default_irq_domain(struct device_node *node, >> >> return domain; >> } >> + >> +struct get_mis_id_data { >> + u32 alias; >> +}; >> + >> +static int get_msi_id_cb(struct pci_dev *pdev, u16 alias, void *data) >> +{ >> + struct get_mis_id_data *s = data; >> + >> + s->alias = alias; >> + return 0; >> +} > > Why not use a naked u32, since you only have a single field in this > structure? Or is it that you are anticipating other fields there? In this case, I think using a pointer to u32 is a good idea. It would simplify the source code somewhat. Although, I think the generated binary would likely be the same. I don't foresee adding things to this structure. If it becomes necessary in the future, we can just go back to using a pointer to a structure. > >> +/** >> + * pci_msi_domain_get_msi_rid - Get the MSI requester id (RID) >> + * @domain: The interrupt domain >> + * @pdev: The PCI device. >> + * >> + * The RID for a device is formed from the alias, with a firmware >> + * supplied mapping applied >> + * >> + * Returns: The RID. >> + */ >> +u32 pci_msi_domain_get_msi_rid(struct irq_domain *domain, struct pci_dev *pdev) >> +{ >> + struct get_mis_id_data d; >> + >> + d.alias = 0; >> + pci_for_each_dma_alias(pdev, get_msi_id_cb, &d); >> + return of_msi_map_rid(&pdev->dev, domain->of_node, d.alias); > > Should you check whether domain->of_node is NULL first? I don't think > of_msi_map_rid would have any problem with that, but a domain that is > not backed by an of_node makes me feel a bit uneasy and would tend to > indicate that we're not using DT. Yes, that makes sense. As you observe, I think it probably works as is, but it would be good to make it more clear. This is especially true when we add ACPI support. We will want to be clear on which of device-tree or ACPI we are using. > >> +} >> #endif /* CONFIG_PCI_MSI_IRQ_DOMAIN */ >> diff --git a/include/linux/msi.h b/include/linux/msi.h >> index ad939d0..56e3b76 100644 >> --- a/include/linux/msi.h >> +++ b/include/linux/msi.h >> @@ -293,6 +293,7 @@ irq_hw_number_t pci_msi_domain_calc_hwirq(struct pci_dev *dev, >> struct msi_desc *desc); >> int pci_msi_domain_check_cap(struct irq_domain *domain, >> struct msi_domain_info *info, struct device *dev); >> +u32 pci_msi_domain_get_msi_rid(struct irq_domain *domain, struct pci_dev *pdev); >> #endif /* CONFIG_PCI_MSI_IRQ_DOMAIN */ >> >> #endif /* LINUX_MSI_H */ >> > > Otherwise looks good to me. I will send what I hope is the final revision of the patches later today. David Daney