projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[powerpc.git]
/
arch
/
ia64
/
kernel
/
msi_ia64.c
diff --git
a/arch/ia64/kernel/msi_ia64.c
b/arch/ia64/kernel/msi_ia64.c
index
822e59a
..
c81080d
100644
(file)
--- a/
arch/ia64/kernel/msi_ia64.c
+++ b/
arch/ia64/kernel/msi_ia64.c
@@
-60,18
+60,23
@@
static void ia64_set_msi_irq_affinity(unsigned int irq, cpumask_t cpu_mask)
msg.address_lo = addr;
write_msi_msg(irq, &msg);
msg.address_lo = addr;
write_msi_msg(irq, &msg);
-
set_native_irq_info(irq, cpu_mask)
;
+
irq_desc[irq].affinity = cpu_mask
;
}
#endif /* CONFIG_SMP */
}
#endif /* CONFIG_SMP */
-int ia64_setup_msi_irq(
unsigned int irq, struct pci_dev *pdev
)
+int ia64_setup_msi_irq(
struct pci_dev *pdev, struct msi_desc *desc
)
{
struct msi_msg msg;
unsigned long dest_phys_id;
{
struct msi_msg msg;
unsigned long dest_phys_id;
-
unsigned int
vector;
+
int irq,
vector;
+ irq = create_irq();
+ if (irq < 0)
+ return irq;
+
+ set_irq_msi(irq, desc);
dest_phys_id = cpu_physical_id(first_cpu(cpu_online_map));
dest_phys_id = cpu_physical_id(first_cpu(cpu_online_map));
- vector = irq;
+ vector = irq
_to_vector(irq)
;
msg.address_hi = 0;
msg.address_lo =
msg.address_hi = 0;
msg.address_lo =
@@
-89,12
+94,12
@@
int ia64_setup_msi_irq(unsigned int irq, struct pci_dev *pdev)
write_msi_msg(irq, &msg);
set_irq_chip_and_handler(irq, &ia64_msi_chip, handle_edge_irq);
write_msi_msg(irq, &msg);
set_irq_chip_and_handler(irq, &ia64_msi_chip, handle_edge_irq);
- return
0
;
+ return
irq
;
}
void ia64_teardown_msi_irq(unsigned int irq)
{
}
void ia64_teardown_msi_irq(unsigned int irq)
{
- return; /* no-op */
+ destroy_irq(irq);
}
static void ia64_ack_msi_irq(unsigned int irq)
}
static void ia64_ack_msi_irq(unsigned int irq)
@@
-105,7
+110,7
@@
static void ia64_ack_msi_irq(unsigned int irq)
static int ia64_msi_retrigger_irq(unsigned int irq)
{
static int ia64_msi_retrigger_irq(unsigned int irq)
{
- unsigned int vector = irq;
+ unsigned int vector = irq
_to_vector(irq)
;
ia64_resend_irq(vector);
return 1;
ia64_resend_irq(vector);
return 1;
@@
-126,12
+131,12
@@
static struct irq_chip ia64_msi_chip = {
};
};
-int arch_setup_msi_irq(
unsigned int irq, struct pci_dev *pdev
)
+int arch_setup_msi_irq(
struct pci_dev *pdev, struct msi_desc *desc
)
{
if (platform_setup_msi_irq)
{
if (platform_setup_msi_irq)
- return platform_setup_msi_irq(
irq, pdev
);
+ return platform_setup_msi_irq(
pdev, desc
);
- return ia64_setup_msi_irq(
irq, pdev
);
+ return ia64_setup_msi_irq(
pdev, desc
);
}
void arch_teardown_msi_irq(unsigned int irq)
}
void arch_teardown_msi_irq(unsigned int irq)