diff options
author | Ian Campbell <Ian.Campbell@citrix.com> | 2011-02-18 12:06:55 -0500 |
---|---|---|
committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2011-03-10 14:44:45 -0500 |
commit | 71eef7d1e3d9df760897fdd2cad6949a8bcf1620 (patch) | |
tree | b9c2a91248e58618eada7e120023fb641dcb719b /drivers/xen | |
parent | ca1d8fe9521fb67c95cfa736c08f4bbbc282b5bd (diff) |
xen: events: remove dom0 specific xen_create_msi_irq
The function name does not distinguish it from xen_allocate_pirq_msi
(which operates on domU and pvhvm domains rather than dom0).
Hoist domain 0 specific functionality up into the only caller leaving
functionality common to all guest types in xen_bind_pirq_msi_to_irq.
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Diffstat (limited to 'drivers/xen')
-rw-r--r-- | drivers/xen/events.c | 41 |
1 files changed, 0 insertions, 41 deletions
diff --git a/drivers/xen/events.c b/drivers/xen/events.c index 34469489087b..6befe6227159 100644 --- a/drivers/xen/events.c +++ b/drivers/xen/events.c | |||
@@ -644,9 +644,6 @@ out: | |||
644 | } | 644 | } |
645 | 645 | ||
646 | #ifdef CONFIG_PCI_MSI | 646 | #ifdef CONFIG_PCI_MSI |
647 | #include <linux/msi.h> | ||
648 | #include "../pci/msi.h" | ||
649 | |||
650 | int xen_allocate_pirq_msi(struct pci_dev *dev, struct msi_desc *msidesc) | 647 | int xen_allocate_pirq_msi(struct pci_dev *dev, struct msi_desc *msidesc) |
651 | { | 648 | { |
652 | int rc; | 649 | int rc; |
@@ -688,44 +685,6 @@ error_irq: | |||
688 | xen_free_irq(irq); | 685 | xen_free_irq(irq); |
689 | return -1; | 686 | return -1; |
690 | } | 687 | } |
691 | |||
692 | int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type) | ||
693 | { | ||
694 | struct physdev_map_pirq map_irq; | ||
695 | int rc; | ||
696 | int pos; | ||
697 | u32 table_offset, bir; | ||
698 | |||
699 | memset(&map_irq, 0, sizeof(map_irq)); | ||
700 | map_irq.domid = DOMID_SELF; | ||
701 | map_irq.type = MAP_PIRQ_TYPE_MSI; | ||
702 | map_irq.index = -1; | ||
703 | map_irq.pirq = -1; | ||
704 | map_irq.bus = dev->bus->number; | ||
705 | map_irq.devfn = dev->devfn; | ||
706 | |||
707 | if (type == PCI_CAP_ID_MSIX) { | ||
708 | pos = pci_find_capability(dev, PCI_CAP_ID_MSIX); | ||
709 | |||
710 | pci_read_config_dword(dev, msix_table_offset_reg(pos), | ||
711 | &table_offset); | ||
712 | bir = (u8)(table_offset & PCI_MSIX_FLAGS_BIRMASK); | ||
713 | |||
714 | map_irq.table_base = pci_resource_start(dev, bir); | ||
715 | map_irq.entry_nr = msidesc->msi_attrib.entry_nr; | ||
716 | } | ||
717 | |||
718 | rc = HYPERVISOR_physdev_op(PHYSDEVOP_map_pirq, &map_irq); | ||
719 | if (rc) { | ||
720 | dev_warn(&dev->dev, "xen map irq failed %d\n", rc); | ||
721 | return -1; | ||
722 | } | ||
723 | |||
724 | return xen_bind_pirq_msi_to_irq(dev, msidesc, | ||
725 | map_irq.pirq, map_irq.index, | ||
726 | (type == PCI_CAP_ID_MSIX) ? | ||
727 | "msi-x" : "msi"); | ||
728 | } | ||
729 | #endif | 688 | #endif |
730 | 689 | ||
731 | int xen_destroy_irq(int irq) | 690 | int xen_destroy_irq(int irq) |