10 #include <asm/msidef.h>
12 static struct irq_chip ia64_msi_chip;
15 static int ia64_set_msi_irq_affinity(
struct irq_data *idata,
21 unsigned int irq = idata->
irq;
26 if (irq_prepare_move(irq, cpu))
31 addr =
msg.address_lo;
51 unsigned long dest_phys_id;
62 vector = irq_to_vector(irq);
88 static void ia64_ack_msi_irq(
struct irq_data *data)
90 irq_complete_move(data->
irq);
95 static int ia64_msi_retrigger_irq(
struct irq_data *data)
97 unsigned int vector = irq_to_vector(data->
irq);
106 static struct irq_chip ia64_msi_chip = {
110 .irq_ack = ia64_ack_msi_irq,
112 .irq_set_affinity = ia64_set_msi_irq_affinity,
114 .irq_retrigger = ia64_msi_retrigger_irq,
134 #ifdef CONFIG_INTEL_IOMMU
136 static int dmar_msi_set_affinity(
struct irq_data *data,
139 unsigned int irq = data->
irq;
142 int cpu = cpumask_first(mask);
147 if (irq_prepare_move(irq, cpu))
164 static struct irq_chip dmar_msi_type = {
168 .irq_ack = ia64_ack_msi_irq,
170 .irq_set_affinity = dmar_msi_set_affinity,
172 .irq_retrigger = ia64_msi_retrigger_irq,
205 ret = msi_compose_msg(
NULL, irq, &msg);