From: David Daney Date: Wed, 15 Jul 2015 16:54:42 +0000 (-0700) Subject: gic-its: Allow pci_requester_id to be overridden. X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=a7bdda1db26370d019ce85c7f605dbe0c9a3f61c;p=people%2Fjulieng%2Flinux-arm.git gic-its: Allow pci_requester_id to be overridden. Signed-off-by: David Daney Signed-off-by: Vadim Lomovtsev --- diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c index 6f80ec4f0a87..1c02dbf9b974 100644 --- a/drivers/irqchip/irq-gic-v3-its.c +++ b/drivers/irqchip/irq-gic-v3-its.c @@ -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); diff --git a/include/linux/irqchip/arm-gic-v3.h b/include/linux/irqchip/arm-gic-v3.h index f28da189c4aa..3f8354021e01 100644 --- a/include/linux/irqchip/arm-gic-v3.h +++ b/include/linux/irqchip/arm-gic-v3.h @@ -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