Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1286972

[PATCH v5 1/5] acpi: pci: Setup MSI domain for ACPI based pci devices

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


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