#include <linux/pci.h>
#include <linux/irq.h>
#include <asm/mshyperv.h>
static int hv_map_interrupt(union hv_device_id device_id, bool level,
int cpu, int vector, struct hv_interrupt_entry *entry)
{ … }
static int hv_unmap_interrupt(u64 id, struct hv_interrupt_entry *old_entry)
{ … }
#ifdef CONFIG_PCI_MSI
struct rid_data { … };
static int get_rid_cb(struct pci_dev *pdev, u16 alias, void *data)
{ … }
static union hv_device_id hv_build_pci_dev_id(struct pci_dev *dev)
{ … }
static int hv_map_msi_interrupt(struct pci_dev *dev, int cpu, int vector,
struct hv_interrupt_entry *entry)
{ … }
static inline void entry_to_msi_msg(struct hv_interrupt_entry *entry, struct msi_msg *msg)
{ … }
static int hv_unmap_msi_interrupt(struct pci_dev *dev, struct hv_interrupt_entry *old_entry);
static void hv_irq_compose_msi_msg(struct irq_data *data, struct msi_msg *msg)
{ … }
static int hv_unmap_msi_interrupt(struct pci_dev *dev, struct hv_interrupt_entry *old_entry)
{ … }
static void hv_teardown_msi_irq(struct pci_dev *dev, struct irq_data *irqd)
{ … }
static void hv_msi_free_irq(struct irq_domain *domain,
struct msi_domain_info *info, unsigned int virq)
{ … }
static struct irq_chip hv_pci_msi_controller = …;
static struct msi_domain_ops pci_msi_domain_ops = …;
static struct msi_domain_info hv_pci_msi_domain_info = …;
struct irq_domain * __init hv_create_pci_msi_domain(void)
{ … }
#endif
int hv_unmap_ioapic_interrupt(int ioapic_id, struct hv_interrupt_entry *entry)
{ … }
EXPORT_SYMBOL_GPL(…);
int hv_map_ioapic_interrupt(int ioapic_id, bool level, int cpu, int vector,
struct hv_interrupt_entry *entry)
{ … }
EXPORT_SYMBOL_GPL(…);