diff options
author | Jan Beulich <jbeulich@suse.com> | 2011-09-18 00:26:52 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2011-09-18 00:26:52 +0100 |
commit | 1b0061ac2b57297e7d7211ce6f4e1b197b8e0ec2 (patch) | |
tree | 4bb3b14eb7af3223ce36a09fbf9de90776aa3919 /xen/arch/x86/io_apic.c | |
parent | ac4afd4aaac5f8e6e706f97bbfb0bd925577ed15 (diff) | |
download | xen-1b0061ac2b57297e7d7211ce6f4e1b197b8e0ec2.tar.gz xen-1b0061ac2b57297e7d7211ce6f4e1b197b8e0ec2.tar.bz2 xen-1b0061ac2b57297e7d7211ce6f4e1b197b8e0ec2.zip |
x86: split MSI IRQ chip
With the .end() accessor having become optional and noting that
several of the accessors' behavior really depends on the result of
msi_maskable_irq(), the splits the MSI IRQ chip type into two - one
for the maskable ones, and the other for the (MSI only) non-maskable
ones.
At once the implementation of those methods gets moved from io_apic.c
to msi.c.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Diffstat (limited to 'xen/arch/x86/io_apic.c')
-rw-r--r-- | xen/arch/x86/io_apic.c | 38 |
1 files changed, 0 insertions, 38 deletions
diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c index b337024653..a7081570ca 100644 --- a/xen/arch/x86/io_apic.c +++ b/xen/arch/x86/io_apic.c @@ -1882,44 +1882,6 @@ static hw_irq_controller ioapic_level_type = { .set_affinity = set_ioapic_affinity_irq, }; -static unsigned int startup_msi_irq(struct irq_desc *desc) -{ - unmask_msi_irq(desc); - return 0; -} - -static void ack_msi_irq(struct irq_desc *desc) -{ - irq_complete_move(desc); - move_native_irq(desc); - - if ( msi_maskable_irq(desc->msi_desc) ) - ack_APIC_irq(); /* ACKTYPE_NONE */ -} - -static void end_msi_irq(struct irq_desc *desc, u8 vector) -{ - if ( !msi_maskable_irq(desc->msi_desc) ) - ack_APIC_irq(); /* ACKTYPE_EOI */ -} - -#define shutdown_msi_irq mask_msi_irq - -/* - * IRQ Chip for MSI PCI/PCI-X/PCI-Express Devices, - * which implement the MSI or MSI-X Capability Structure. - */ -hw_irq_controller pci_msi_type = { - .typename = "PCI-MSI", - .startup = startup_msi_irq, - .shutdown = shutdown_msi_irq, - .enable = unmask_msi_irq, - .disable = mask_msi_irq, - .ack = ack_msi_irq, - .end = end_msi_irq, - .set_affinity = set_msi_affinity, -}; - static inline void init_IO_APIC_traps(void) { int irq; |