Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1286972
| Path | csiph.com!news.mixmin.net!eternal-september.org!feeder.eternal-september.org!aioe.org!bofh.it!news.nic.it!robomod |
|---|---|
| From | Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com> |
| Newsgroups | linux.kernel |
| Subject | [PATCH v5 1/5] acpi: pci: Setup MSI domain for ACPI based pci devices |
| Date | Wed, 09 Dec 2015 02:50:01 +0100 |
| Message-ID | <qDC3f-1Gd-9@gated-at.bofh.it> (permalink) |
| References | <qDC3f-1Gd-3@gated-at.bofh.it> |
| X-Original-To | <marc.zyngier@arm.com>, <tglx@linutronix.de>, <jason@lakedaemon.net>, <rjw@rjwysocki.net> |
| Authentication-Results | spf=none (sender IP is ) smtp.mailfrom=Suravee.Suthikulpanit@amd.com; |
| X-Mailer | git-send-email 2.1.0 |
| MIME-Version | 1.0 |
| Content-Type | text/plain |
| X-Originating-IP | [165.204.77.1] |
| X-Clientproxiedby | BLUPR05CA0068.namprd05.prod.outlook.com (10.141.20.38) To BY1PR12MB0437.namprd12.prod.outlook.com (25.162.147.139) |
| X-Microsoft-Exchange-Diagnostics | 1;BY1PR12MB0437;2:wViXxO04p+GQLS/1cFZ+de+rhyb+ao/GgvQ33PYvTsreBF1ZHlnf9ngu0x4jEyLlYdSWZNqi8MVpDcrp4wh/hn7pn8NBgpVnQuUwI9nqRzUQwAVNQW6gxZpLuRe0vNkGAkUsZbDXxvl+CRWY0/sD7g==;3:EMievusRgMqSabFR0UH/4tEYa4zIUCxRBQYbQyfpIpu5Yg5Vb3vCjzXXJYNsezg4UIL3yR6uGMZGxiQ51rxxqbrXNskfK8jJRJM27EJqTHGJe4OyextIAV9JHyyXzHMr;25:Gf7HAm+q+t60PBufZeKnehAn3lylFSyZGdaNGAkrFJ9afLYsDJDeKZnrNWMXVwtmr4wzSvTh/PImP5pjl1sQaTA/AR64zMEdgKsbaK/+zByb43+y99CJQlxnNZebYB+JI4bKVhlLdm4OzuQVh8F/U/v1MLNpTPSSMDC7kr2YD3qPA4Yz9axR5pXabsOfpunBddJ+M4y5jb4FezjCSAOLD34NmYtOTAoH1OJUakJyc7eIo76ySI+0veeesBuecK++lmI0vF2Cs450EQ3YhxHhfQ== |
| X-Microsoft-Antispam | UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY1PR12MB0437; |
| X-Microsoft-Exchange-Diagnostics | 1;BY1PR12MB0437;20:0/D+5pt2OJoBfjsAJgJ7MgNYeky2JzKeiF/ID4qMcngDSEVP2erchn5E2Rb8RndKie+NIS4gHT3k8ZhC+EyQC0hu8pBOjO6K3Vp8VgzZykCuQVzNdCuBXGSaQ+oixlt0aJGUn0bET+w6etxAXG/3kXaJEure4V3sXTMS2GXD/vYw0ca+g68PtIBTVxnR+cohzpHqQGyEtWViS71g6W0UpV40mrqIpmD8piXHtReiFzgCWpB/oOdfWnq/w99PTSLtVZn/viD8a/od3hcGa38tsMW0gAxZBrJgycvPGd4M/C+tQUF6f4pVMM6KxmnJDK/K+PzUhR0FILR/n697VgOZojOrF5vvdiYwOt5UwSJcNuYxWB+uKh8+OQYqsxdGswyf/LDorhTgvTm5qyrF5JkLyu/bK4wFoOez7PrT2kUSTK+sGlSkrAo+wk0NmPWawt7OALITTohoS5I2l51JspTyVjRVp6u8TpGiujfmWQrSnubiVjBQFTp5sAoh4LjqBHCR;4:5yVrd0Y7g4ifvpuPflYsUc490MzDQPM8RIX/lpNR88A389h17R69mj5sRROVaEflRcvTxaGtMNpNDUqoxOstKTkKRMln6G03n1xKV9KWk1AVRgvMAoMX1gEaYev0ETsovj+ckC+ExHENawh1NbyV3fv87XNOJhyJ16bN47l47Su0p6hLi7LI/88rdNFZF85IDOR06OIkhrbIz2jPeSOCUDTXwevJcN5KgVjbFsH2xR5v6wbbOgai8EnCFq6C4tnH/OaEL6Cwa/xs07QaW9LHsX2763pOzr0tt+WxorAwtXJ5UNuKIc7paLxk5VplE4bMKSINls5vnN5Y0kDgddwVG5gMT6XndJDxAgKwKzBD3N7xmQrKwwpQ5lqonBYrbj2k0uHAj+EZv5FspnzsQraQsJHTCkZRaguI/TZAzGhD/qQ= |
| X-Microsoft-Antispam-Prvs | <BY1PR12MB04373D2E9CB4430137440884F3E80@BY1PR12MB0437.namprd12.prod.outlook.com> |
| X-Exchange-Antispam-Report-Test | UriScan:(767451399110); |
| X-Exchange-Antispam-Report-Cfa-Test | BCL:0;PCL:0;RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(3002001)(10201501046);SRVR:BY1PR12MB0437;BCL:0;PCL:0;RULEID:;SRVR:BY1PR12MB0437; |
| X-Forefront-Prvs | 0785459C39 |
| X-Forefront-Antispam-Report | SFV:NSPM;SFS:(10009020)(6009001)(189002)(199003)(36756003)(77096005)(2950100001)(86362001)(229853001)(92566002)(101416001)(53416004)(122386002)(97736004)(2201001)(42186005)(87976001)(5001770100001)(19580405001)(5004730100002)(50226001)(48376002)(19580395003)(1096002)(47776003)(189998001)(50986999)(66066001)(5003940100001)(106356001)(5008740100001)(6116002)(50466002)(3846002)(586003)(76176999)(105586002)(40100003);DIR:OUT;SFP:1101;SCL:1;SRVR:BY1PR12MB0437;H:ssuthiku-fedora-lt.amd.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; |
| Received-Spf | None (protection.outlook.com: amd.com does not designate permitted sender hosts) |
| X-Microsoft-Exchange-Diagnostics | 1;BY1PR12MB0437;23:o+Dmn2R+edmCxtVfA26e6q2U7b2o3e428S289WUmuU6vDXuusp7GSEHbk/7pTKsrPrQWFy6ykqE0yjbpkyysUVMEoQbYdKDvO0fBrXpB4VQBnlbywsal27QKyjhSHH8tIQNvvOvonyrHtkq/zyFlLTrkGwobKsty+0Cs9xyMzv6XxxI3vWU6X6GgeL8+knwczKg5o4L+2q2trWD9hGW6VWdEX/FLojzCoEPhuifg9K4svGBzGvEGwe9sWI650uSABqNp0JlhxqsoafIsiX3SDmaQtYsO3RypcVnsCMoSO4hnZFd0hStsG3YUR2PCUQdYOe/Pt9IlU6c5aL/CyB85KOZn2mGW6NHc7tz4GQbiTIt0XWq+4zIpuzrBe0cmNGL2baRiKlBU8xi24LT1IZldqyI4gFNVS+5l51GBgBVN+hR4rMl8fQIW3NCxVLas9dLd0B0fIBZb8H6JmhYyQufM/cr4ZKPFK32ae1A2V6MRi8PPr7cCKD4cV5mi8Oz0JWgQCgWbsrorfNpNwh80ddqK7sLMOlk2iOUpfMnnJjecw8CyJm0KoIgSUtpHO8x1HExx93YzFNCFZluunwdyOdygLYkxRQDqRTrx3Eqzat1CoiRariPIi25B1i9XacfdIuRO+BrGC30a5WObPDZE4ybt71+TjbhyTFSz7VfK93ADF7evQXZCTVqT8GAy68FkhvcXDYBCp+ML6jtH2R5VMkfmlreYd72IGQ0WJjJL6hYvpZrt7KfXSADW2EYQJafKYQrd6PJNr/oNneqaMfWMAwbjRrmI7X4LiUgjF/1MtCOqjsVJsikiGOIF9avcM3maE7Gcs3w3ptoFYfP/up5LsU4v+FAz9L1PqiN2BuKhdWHkFvczcOaVKsySDiasCmMFCD3g08/EQsove5rhrkxfk5FZZEBNHOAMPgSMbhENAclaVPpWe11JT4pFnPVzdSF4jfXUycfjXQB8XV+6o8TAiAT8RHvQ1x7qZfEipuPMPyHA9zk= |
| X-Microsoft-Exchange-Diagnostics | 1;BY1PR12MB0437;5:e8Iw/jDNpcrBT6PhpOqhKwIOgMycOouBzu68FDX4vvF9WRgcEptPFOq6qDq1RTDMNDhhPabQ0IBFJI4S9SrnLq7kdI7ROMTp0gl9ChLLRfLAMHFqqpKfcEM5iZ4C+5wsWpd+YMzDnkwsw6oJBY9lVA==;24:DDF+6akN120jD3iViZeLzzqzqWGRAIhQOcsxysQp7Jb5WeN8hOlpyUS6CPeSRexf/CaVjWD5t0eyZ9quP5cri+em0hU+yG/kn+GHgVZ2Vfs=;20:yn4n2IWA2voYEXyqRsdV8uVl0QcnQD8oqK08UR+N35iixJXvnoB7/DaLCeK/iAnBmecrB4bYht5LTKpaXVkxMHgsGqlpCWdQijOhrQu9kXwDmuqIw+jZQXI3Ktovh8kXzSiZW6MeSIEZ+qoVzXZ9sBUWIDfLcrPhtgknx4yu6rUjtun0k+G9bALtc5/Vmg8IGX7obUQVwDKbqBtQ+GoUGv3v3aoQ5QBSYDajkbZwcU+p+Vm5akG19pnhq9M4pn+4 |
| X-Originatororg | amd.com |
| X-Ms-Exchange-Crosstenant-Originalarrivaltime | 09 Dec 2015 01:48:21.1159 (UTC) |
| X-Ms-Exchange-Crosstenant-Fromentityheader | Hosted |
| X-Ms-Exchange-Transport-Crosstenantheadersstamped | BY1PR12MB0437 |
| Sender | robomod@news.nic.it |
| List-ID | <linux-kernel.vger.kernel.org> |
| X-Mailing-List | linux-kernel@vger.kernel.org |
| Approved | robomod@news.nic.it |
| Lines | 125 |
| Organization | linux.* mail to news gateway |
| X-Original-Cc | Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>, Will Deacon <will.deacon@arm.com>, Catalin Marinas <Catalin.Marinas@arm.com>, <hanjun.guo@linaro.org>, <tomasz.nowicki@linaro.org>, <graeme.gregory@linaro.org>, <dhdang@apm.com>, <linux-arm-kernel@lists.infradead.org>, <linux-kernel@vger.kernel.org>, <linux-acpi@vger.kernel.org>, Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com> |
| X-Original-Date | Tue, 8 Dec 2015 17:48:02 -0800 |
| X-Original-Message-ID | <1449625686-5594-2-git-send-email-Suravee.Suthikulpanit@amd.com> |
| X-Original-References | <1449625686-5594-1-git-send-email-Suravee.Suthikulpanit@amd.com> |
| X-Original-Sender | linux-kernel-owner@vger.kernel.org |
| Xref | csiph.com linux.kernel:1286972 |
Show key headers only | View raw
This patch introduces pci_msi_register_fwnode_provider() for irqchip
to register a callback, to provide a way to determine appropriate MSI
domain for a pci device.
It also introduces pci_host_bridge_acpi_msi_domain(), which returns
the MSI domain of the specified PCI host bridge with DOMAIN_BUS_PCI_MSI
bus token. Then, it is assigned to pci device.
Signed-off-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
---
drivers/pci/pci-acpi.c | 32 ++++++++++++++++++++++++++++++++
drivers/pci/probe.c | 2 ++
include/linux/irqdomain.h | 5 +++++
include/linux/pci.h | 10 ++++++++++
4 files changed, 49 insertions(+)
diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
index a32ba75..a555d7e 100644
--- a/drivers/pci/pci-acpi.c
+++ b/drivers/pci/pci-acpi.c
@@ -9,7 +9,9 @@
#include <linux/delay.h>
#include <linux/init.h>
+#include <linux/irqdomain.h>
#include <linux/pci.h>
+#include <linux/msi.h>
#include <linux/pci_hotplug.h>
#include <linux/module.h>
#include <linux/pci-aspm.h>
@@ -689,6 +691,36 @@ static struct acpi_bus_type acpi_pci_bus = {
.cleanup = pci_acpi_cleanup,
};
+
+static struct fwnode_handle *(*pci_msi_get_fwnode_cb)(struct device *dev);
+
+/**
+ * pci_msi_register_fwnode_provider - Register callback to retrieve fwnode
+ * @fn: The interrupt domain to retrieve
+ *
+ * This should be called by irqchip driver, which is the parent of
+ * the MSI domain to provide callback interface to query fwnode.
+ */
+void
+pci_msi_register_fwnode_provider(struct fwnode_handle *(*fn)(struct device *))
+{
+ pci_msi_get_fwnode_cb = fn;
+}
+
+struct irq_domain *pci_host_bridge_acpi_msi_domain(struct pci_bus *bus)
+{
+ struct irq_domain *dom = NULL;
+ struct fwnode_handle *fwnode = NULL;
+
+ if (pci_msi_get_fwnode_cb)
+ fwnode = pci_msi_get_fwnode_cb(&bus->dev);
+
+ if (fwnode)
+ dom = irq_find_matching_fwnode(fwnode,
+ DOMAIN_BUS_PCI_MSI);
+ return dom;
+}
+
static int __init acpi_pci_init(void)
{
int ret;
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index edb1984..553a029 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -672,6 +672,8 @@ static struct irq_domain *pci_host_bridge_msi_domain(struct pci_bus *bus)
* should be called from here.
*/
d = pci_host_bridge_of_msi_domain(bus);
+ if (!d)
+ d = pci_host_bridge_acpi_msi_domain(bus);
return d;
}
diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
index d5e5c5b..a06feda 100644
--- a/include/linux/irqdomain.h
+++ b/include/linux/irqdomain.h
@@ -410,6 +410,11 @@ static inline bool irq_domain_is_hierarchy(struct irq_domain *domain)
static inline void irq_dispose_mapping(unsigned int virq) { }
static inline void irq_domain_activate_irq(struct irq_data *data) { }
static inline void irq_domain_deactivate_irq(struct irq_data *data) { }
+static inline struct irq_domain *irq_find_matching_fwnode(
+ struct fwnode_handle *fwnode, enum irq_domain_bus_token bus_token)
+{
+ return NULL;
+}
#endif /* !CONFIG_IRQ_DOMAIN */
#endif /* _LINUX_IRQDOMAIN_H */
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 6ae25aa..d86378c 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1946,6 +1946,16 @@ static inline struct irq_domain *
pci_host_bridge_of_msi_domain(struct pci_bus *bus) { return NULL; }
#endif /* CONFIG_OF */
+#ifdef CONFIG_ACPI
+struct irq_domain *pci_host_bridge_acpi_msi_domain(struct pci_bus *bus);
+
+void
+pci_msi_register_fwnode_provider(struct fwnode_handle *(*fn)(struct device *));
+#else
+static inline struct irq_domain *
+pci_host_bridge_acpi_msi_domain(struct pci_bus *bus) { return NULL; }
+#endif
+
#ifdef CONFIG_EEH
static inline struct eeh_dev *pci_dev_to_eeh_dev(struct pci_dev *pdev)
{
--
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/
Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread
[PATCH v5 1/5] acpi: pci: Setup MSI domain for ACPI based pci devices Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com> - 2015-12-09 02:50 +0100 Re: [PATCH v5 1/5] acpi: pci: Setup MSI domain for ACPI based pci devices Marc Zyngier <marc.zyngier@arm.com> - 2015-12-09 11:10 +0100
csiph-web