]> xenbits.xensource.com Git - people/julieng/linux-arm.git/commitdiff
gic-its: Allow pci_requester_id to be overridden.
authorDavid Daney <david.daney@cavium.com>
Wed, 15 Jul 2015 16:54:42 +0000 (09:54 -0700)
committerJulien Grall <julien.grall@citrix.com>
Mon, 28 Sep 2015 11:05:07 +0000 (12:05 +0100)
Signed-off-by: David Daney <david.daney@cavium.com>
Signed-off-by: Vadim Lomovtsev <Vadim.Lomovtsev@caviumnetworks.com>
drivers/irqchip/irq-gic-v3-its.c
include/linux/irqchip/arm-gic-v3.h

index 6f80ec4f0a87a1e8774d3d99356b84a9ee3ad21a..1c02dbf9b974887c3cf9114207199a99ff44181c 100644 (file)
@@ -1248,11 +1248,23 @@ static int its_pci_msi_vec_count(struct pci_dev *pdev)
        return max(msi, msix);
 }
 
+static u32 its_dflt_pci_requester_id(struct pci_dev *pdev, u16 alias)
+{
+       return alias;
+}
+
+static its_pci_requester_id_t its_pci_requester_id = its_dflt_pci_requester_id;
+void set_its_pci_requester_id(its_pci_requester_id_t fn)
+{
+       its_pci_requester_id = fn;
+}
+EXPORT_SYMBOL(set_its_pci_requester_id);
+
 static int its_get_pci_alias(struct pci_dev *pdev, u16 alias, void *data)
 {
        struct its_pci_alias *dev_alias = data;
 
-       dev_alias->dev_id = alias;
+       dev_alias->dev_id = its_pci_requester_id(pdev, alias);
        if (pdev != dev_alias->pdev)
                dev_alias->count += its_pci_msi_vec_count(dev_alias->pdev);
 
index f28da189c4aa0ee52a5259e23f9f75aa45cb5253..3f8354021e012759fce60d7a3099217f0a209ef4 100644 (file)
@@ -390,6 +390,8 @@ int its_cpu_init(void);
 int its_init(struct device_node *node, struct rdists *rdists,
             struct irq_domain *domain);
 
+typedef u32 (*its_pci_requester_id_t)(struct pci_dev *, u16);
+void set_its_pci_requester_id(its_pci_requester_id_t fn);
 #endif
 
 #endif