[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] irq cleanup



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1256727260 0
# Node ID 514510e6c7cbd20cc6a099c0dc1d3da8c9c926b5
# Parent  c4958b2edaa5f113da8e1dc4c7dac751bf43a7ac
irq cleanup

Make IRQ related data const or __read_mostly where possible/reasonable,
use platform_legacy_irq() where feasible, and remove the now unused
definition of vector_to_irq().

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
---
 xen/arch/ia64/linux-xen/iosapic.c           |    6 ++---
 xen/arch/ia64/linux-xen/irq_ia64.c          |    2 -
 xen/arch/ia64/linux-xen/mca.c               |   12 +++++------
 xen/arch/ia64/linux-xen/perfmon.c           |    2 -
 xen/arch/ia64/linux-xen/sn/kernel/irq.c     |    2 -
 xen/arch/ia64/linux/irq_lsapic.c            |    2 -
 xen/arch/ia64/xen/irq.c                     |    2 -
 xen/arch/ia64/xen/xentime.c                 |    2 -
 xen/arch/x86/hpet.c                         |    2 -
 xen/arch/x86/hvm/irq.c                      |    2 -
 xen/arch/x86/i8259.c                        |    6 ++---
 xen/arch/x86/io_apic.c                      |   29 ++++++++++++++--------------
 xen/arch/x86/irq.c                          |    8 +++----
 xen/arch/x86/mpparse.c                      |    6 +----
 xen/arch/x86/time.c                         |    2 -
 xen/common/domain.c                         |    3 +-
 xen/drivers/passthrough/amd/iommu_init.c    |    2 -
 xen/drivers/passthrough/vtd/iommu.c         |    2 -
 xen/include/asm-ia64/linux-xen/asm/hw_irq.h |    4 +--
 xen/include/asm-x86/irq.h                   |   11 ++++------
 xen/include/asm-x86/msi.h                   |    2 -
 xen/include/xen/irq.h                       |    2 -
 22 files changed, 55 insertions(+), 56 deletions(-)

diff -r c4958b2edaa5 -r 514510e6c7cb xen/arch/ia64/linux-xen/iosapic.c
--- a/xen/arch/ia64/linux-xen/iosapic.c Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/arch/ia64/linux-xen/iosapic.c Wed Oct 28 10:54:20 2009 +0000
@@ -430,7 +430,7 @@ iosapic_end_level_irq (unsigned int irq)
 #define iosapic_disable_level_irq      mask_irq
 #define iosapic_ack_level_irq          nop
 
-struct hw_interrupt_type irq_type_iosapic_level = {
+static hw_irq_controller irq_type_iosapic_level = {
        .typename =     "IO-SAPIC-level",
        .startup =      iosapic_startup_level_irq,
        .shutdown =     iosapic_shutdown_level_irq,
@@ -476,7 +476,7 @@ iosapic_ack_edge_irq (unsigned int irq)
 #define iosapic_disable_edge_irq       nop
 #define iosapic_end_edge_irq           nop
 
-struct hw_interrupt_type irq_type_iosapic_edge = {
+static hw_irq_controller irq_type_iosapic_edge = {
        .typename =     "IO-SAPIC-edge",
        .startup =      iosapic_startup_edge_irq,
        .shutdown =     iosapic_disable_edge_irq,
@@ -605,7 +605,7 @@ register_intr (unsigned int gsi, int vec
               unsigned long polarity, unsigned long trigger)
 {
        irq_desc_t *idesc;
-       struct hw_interrupt_type *irq_type;
+       hw_irq_controller *irq_type;
        int rte_index;
        int index;
        unsigned long gsi_base;
diff -r c4958b2edaa5 -r 514510e6c7cb xen/arch/ia64/linux-xen/irq_ia64.c
--- a/xen/arch/ia64/linux-xen/irq_ia64.c        Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/arch/ia64/linux-xen/irq_ia64.c        Wed Oct 28 10:54:20 2009 +0000
@@ -233,7 +233,7 @@ void ia64_process_pending_intr(void)
 #ifdef CONFIG_SMP
 extern irqreturn_t handle_IPI (int irq, void *dev_id, struct pt_regs *regs);
 
-static struct irqaction ipi_irqaction = {
+static struct irqaction __read_mostly ipi_irqaction = {
        .handler =      handle_IPI,
 #ifndef XEN
        .flags =        SA_INTERRUPT,
diff -r c4958b2edaa5 -r 514510e6c7cb xen/arch/ia64/linux-xen/mca.c
--- a/xen/arch/ia64/linux-xen/mca.c     Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/arch/ia64/linux-xen/mca.c     Wed Oct 28 10:54:20 2009 +0000
@@ -1563,7 +1563,7 @@ ia64_mca_disable_cpe_polling(char *str)
 
 __setup("disable_cpe_poll", ia64_mca_disable_cpe_polling);
 
-static struct irqaction cmci_irqaction = {
+static struct irqaction __read_mostly cmci_irqaction = {
        .handler =      ia64_mca_cmc_int_handler,
 #ifndef XEN
        .flags =        SA_INTERRUPT,
@@ -1571,7 +1571,7 @@ static struct irqaction cmci_irqaction =
        .name =         "cmc_hndlr"
 };
 
-static struct irqaction cmcp_irqaction = {
+static struct irqaction __read_mostly cmcp_irqaction = {
        .handler =      ia64_mca_cmc_int_caller,
 #ifndef XEN
        .flags =        SA_INTERRUPT,
@@ -1579,7 +1579,7 @@ static struct irqaction cmcp_irqaction =
        .name =         "cmc_poll"
 };
 
-static struct irqaction mca_rdzv_irqaction = {
+static struct irqaction __read_mostly mca_rdzv_irqaction = {
        .handler =      ia64_mca_rendez_int_handler,
 #ifndef XEN
        .flags =        SA_INTERRUPT,
@@ -1587,7 +1587,7 @@ static struct irqaction mca_rdzv_irqacti
        .name =         "mca_rdzv"
 };
 
-static struct irqaction mca_wkup_irqaction = {
+static struct irqaction __read_mostly mca_wkup_irqaction = {
        .handler =      ia64_mca_wakeup_int_handler,
 #ifndef XEN
        .flags =        SA_INTERRUPT,
@@ -1596,7 +1596,7 @@ static struct irqaction mca_wkup_irqacti
 };
 
 #ifdef CONFIG_ACPI
-static struct irqaction mca_cpe_irqaction = {
+static struct irqaction __read_mostly mca_cpe_irqaction = {
        .handler =      ia64_mca_cpe_int_handler,
 #ifndef XEN
        .flags =        SA_INTERRUPT,
@@ -1604,7 +1604,7 @@ static struct irqaction mca_cpe_irqactio
        .name =         "cpe_hndlr"
 };
 
-static struct irqaction mca_cpep_irqaction = {
+static struct irqaction __read_mostly mca_cpep_irqaction = {
        .handler =      ia64_mca_cpe_int_caller,
 #ifndef XEN
        .flags =        SA_INTERRUPT,
diff -r c4958b2edaa5 -r 514510e6c7cb xen/arch/ia64/linux-xen/perfmon.c
--- a/xen/arch/ia64/linux-xen/perfmon.c Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/arch/ia64/linux-xen/perfmon.c Wed Oct 28 10:54:20 2009 +0000
@@ -6811,7 +6811,7 @@ pfm_flush_pmds(struct task_struct *task,
 #endif
 }
 
-static struct irqaction perfmon_irqaction = {
+static struct irqaction __read_mostly perfmon_irqaction = {
        .handler = pfm_interrupt_handler,
 #ifndef XEN
        .flags   = SA_INTERRUPT,
diff -r c4958b2edaa5 -r 514510e6c7cb xen/arch/ia64/linux-xen/sn/kernel/irq.c
--- a/xen/arch/ia64/linux-xen/sn/kernel/irq.c   Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/arch/ia64/linux-xen/sn/kernel/irq.c   Wed Oct 28 10:54:20 2009 +0000
@@ -221,7 +221,7 @@ static void sn_set_affinity_irq(unsigned
 }
 #endif
 
-struct hw_interrupt_type irq_type_sn = {
+static hw_irq_controller irq_type_sn = {
 #ifndef XEN
        .name           = "SN hub",
 #else
diff -r c4958b2edaa5 -r 514510e6c7cb xen/arch/ia64/linux/irq_lsapic.c
--- a/xen/arch/ia64/linux/irq_lsapic.c  Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/arch/ia64/linux/irq_lsapic.c  Wed Oct 28 10:54:20 2009 +0000
@@ -26,7 +26,7 @@ lsapic_noop (unsigned int irq)
        /* nuthing to do... */
 }
 
-struct hw_interrupt_type irq_type_ia64_lsapic = {
+hw_irq_controller irq_type_ia64_lsapic = {
        .typename =     "LSAPIC",
        .startup =      lsapic_noop_startup,
        .shutdown =     lsapic_noop,
diff -r c4958b2edaa5 -r 514510e6c7cb xen/arch/ia64/xen/irq.c
--- a/xen/arch/ia64/xen/irq.c   Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/arch/ia64/xen/irq.c   Wed Oct 28 10:54:20 2009 +0000
@@ -118,7 +118,7 @@ static void ack_none(unsigned int irq)
 #define shutdown_none  disable_none
 #define end_none       enable_none
 
-struct hw_interrupt_type no_irq_type = {
+hw_irq_controller no_irq_type = {
        "none",
        startup_none,
        shutdown_none,
diff -r c4958b2edaa5 -r 514510e6c7cb xen/arch/ia64/xen/xentime.c
--- a/xen/arch/ia64/xen/xentime.c       Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/arch/ia64/xen/xentime.c       Wed Oct 28 10:54:20 2009 +0000
@@ -154,7 +154,7 @@ xen_timer_interrupt (int irq, void *dev_
        raise_softirq(TIMER_SOFTIRQ);
 }
 
-static struct irqaction xen_timer_irqaction = {
+static struct irqaction __read_mostly xen_timer_irqaction = {
        .handler =      (void *) xen_timer_interrupt,
        .name =         "timer"
 };
diff -r c4958b2edaa5 -r 514510e6c7cb xen/arch/x86/hpet.c
--- a/xen/arch/x86/hpet.c       Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/arch/x86/hpet.c       Wed Oct 28 10:54:20 2009 +0000
@@ -319,7 +319,7 @@ static void hpet_msi_set_affinity(unsign
 /*
  * IRQ Chip for MSI HPET Devices,
  */
-static struct hw_interrupt_type hpet_msi_type = {
+static hw_irq_controller hpet_msi_type = {
     .typename   = "HPET-MSI",
     .startup    = hpet_msi_startup,
     .shutdown   = hpet_msi_shutdown,
diff -r c4958b2edaa5 -r 514510e6c7cb xen/arch/x86/hvm/irq.c
--- a/xen/arch/x86/hvm/irq.c    Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/arch/x86/hvm/irq.c    Wed Oct 28 10:54:20 2009 +0000
@@ -507,7 +507,7 @@ static int irq_load_isa(struct domain *d
 
     /* Adjust the GSI assert counts for the ISA IRQ line state.
      * This relies on the PCI IRQ state being loaded first. */
-    for ( irq = 0; irq < 16; irq++ )
+    for ( irq = 0; platform_legacy_irq(irq); irq++ )
         if ( test_bit(irq, &hvm_irq->isa_irq.i) )
             hvm_irq->gsi_assert_count[hvm_isa_irq_to_gsi(irq)]++;
 
diff -r c4958b2edaa5 -r 514510e6c7cb xen/arch/x86/i8259.c
--- a/xen/arch/x86/i8259.c      Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/arch/x86/i8259.c      Wed Oct 28 10:54:20 2009 +0000
@@ -97,7 +97,7 @@ static void end_8259A_irq(unsigned int i
         enable_8259A_irq(irq);
 }
 
-static struct hw_interrupt_type i8259A_irq_type = {
+static struct hw_interrupt_type __read_mostly i8259A_irq_type = {
     .typename = "XT-PIC",
     .startup  = startup_8259A_irq,
     .shutdown = disable_8259A_irq,
@@ -347,7 +347,7 @@ void __devinit init_8259A(int auto_eoi)
     spin_unlock_irqrestore(&i8259A_lock, flags);
 }
 
-static struct irqaction cascade = { no_action, "cascade", NULL};
+static struct irqaction __read_mostly cascade = { no_action, "cascade", NULL};
 
 void __init init_IRQ(void)
 {
@@ -366,7 +366,7 @@ void __init init_IRQ(void)
         set_intr_gate(vector, interrupt[vector]);
     }
 
-    for (irq = 0; irq < 16; irq++) {
+    for (irq = 0; platform_legacy_irq(irq); irq++) {
         struct irq_desc *desc = irq_to_desc(irq);
         struct irq_cfg *cfg = desc->chip_data;
         
diff -r c4958b2edaa5 -r 514510e6c7cb xen/arch/x86/io_apic.c
--- a/xen/arch/x86/io_apic.c    Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/arch/x86/io_apic.c    Wed Oct 28 10:54:20 2009 +0000
@@ -62,7 +62,8 @@ int sis_apic_bug = -1;
 /*
  * # of IRQ routing registers
  */
-int nr_ioapic_registers[MAX_IO_APICS];
+int __read_mostly nr_ioapic_registers[MAX_IO_APICS];
+int __read_mostly nr_ioapics;
 
 int disable_timer_pin_1 __initdata;
 
@@ -497,7 +498,7 @@ void /*__init*/ setup_ioapic_dest(void)
  */
 static int EISA_ELCR(unsigned int irq)
 {
-    if (irq < 16) {
+    if (platform_legacy_irq(irq)) {
         unsigned int port = 0x4d0 + (irq >> 3);
         return (inb(port) >> (irq & 7)) & 1;
     }
@@ -763,8 +764,8 @@ static inline int IO_APIC_irq_trigger(in
     return 0;
 }
 
-static struct hw_interrupt_type ioapic_level_type;
-static struct hw_interrupt_type ioapic_edge_type;
+static hw_irq_controller ioapic_level_type;
+static hw_irq_controller ioapic_edge_type;
 
 #define IOAPIC_AUTO    -1
 #define IOAPIC_EDGE    0
@@ -844,7 +845,7 @@ static void __init setup_IO_APIC_irqs(vo
                 entry.vector = vector;
                 ioapic_register_intr(irq, IOAPIC_AUTO);
 
-                if (!apic && (irq < 16))
+                if (!apic && platform_legacy_irq(irq))
                     disable_8259A_irq(irq);
             }
             cfg = irq_cfg(irq);
@@ -1358,7 +1359,7 @@ static unsigned int startup_edge_ioapic_
     unsigned long flags;
 
     spin_lock_irqsave(&ioapic_lock, flags);
-    if (irq < 16) {
+    if (platform_legacy_irq(irq)) {
         disable_8259A_irq(irq);
         if (i8259A_irq_pending(irq))
             was_pending = 1;
@@ -1408,7 +1409,7 @@ static unsigned int startup_level_ioapic
     return 0; /* don't check for pending */
 }
 
-int ioapic_ack_new = 1;
+int __read_mostly ioapic_ack_new = 1;
 static void setup_ioapic_ack(char *s)
 {
     if ( !strcmp(s, "old") )
@@ -1572,7 +1573,7 @@ static void end_edge_ioapic_irq(unsigned
  * edge-triggered handler, without risking IRQ storms and other ugly
  * races.
  */
-static struct hw_interrupt_type ioapic_edge_type = {
+static hw_irq_controller ioapic_edge_type = {
     .typename  = "IO-APIC-edge",
     .startup   = startup_edge_ioapic_irq,
     .shutdown  = disable_edge_ioapic_irq,
@@ -1583,7 +1584,7 @@ static struct hw_interrupt_type ioapic_e
     .set_affinity      = set_ioapic_affinity_irq,
 };
 
-static struct hw_interrupt_type ioapic_level_type = {
+static hw_irq_controller ioapic_level_type = {
     .typename  = "IO-APIC-level",
     .startup   = startup_level_ioapic_irq,
     .shutdown  = mask_IO_APIC_irq,
@@ -1631,7 +1632,7 @@ static void set_msi_affinity_irq(unsigne
  * IRQ Chip for MSI PCI/PCI-X/PCI-Express Devices,
  * which implement the MSI or MSI-X Capability Structure.
  */
-struct hw_interrupt_type pci_msi_type = {
+hw_irq_controller pci_msi_type = {
     .typename   = "PCI-MSI",
     .startup    = startup_msi_irq,
     .shutdown   = shutdown_msi_irq,
@@ -1646,7 +1647,7 @@ static inline void init_IO_APIC_traps(vo
 {
     int irq;
     /* Xen: This is way simpler than the Linux implementation. */
-    for (irq = 0; irq < 16 ; irq++)
+    for (irq = 0; platform_legacy_irq(irq); irq++)
         if (IO_APIC_IRQ(irq) && !IO_APIC_VECTOR(irq))
             make_8259A_irq(irq);
 }
@@ -1674,7 +1675,7 @@ static void ack_lapic_irq(unsigned int i
 
 static void end_lapic_irq(unsigned int irq) { /* nothing */ }
 
-static struct hw_interrupt_type lapic_irq_type = {
+static hw_irq_controller lapic_irq_type = {
     .typename  = "local-APIC-edge",
     .startup   = NULL, /* startup_irq() not used for IRQ0 */
     .shutdown  = NULL, /* shutdown_irq() not used for IRQ0 */
@@ -2107,7 +2108,7 @@ int io_apic_set_pci_routing (int ioapic,
     /*
      * IRQs < 16 are already in the irq_2_pin[] map
      */
-    if (irq >= 16)
+    if (!platform_legacy_irq(irq))
         add_pin_to_irq(irq, ioapic, pin);
 
     vector = assign_irq_vector(irq);
@@ -2122,7 +2123,7 @@ int io_apic_set_pci_routing (int ioapic,
 
     ioapic_register_intr(irq, edge_level);
 
-    if (!ioapic && (irq < 16))
+    if (!ioapic && platform_legacy_irq(irq))
         disable_8259A_irq(irq);
 
     spin_lock_irqsave(&ioapic_lock, flags);
diff -r c4958b2edaa5 -r 514510e6c7cb xen/arch/x86/irq.c
--- a/xen/arch/x86/irq.c        Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/arch/x86/irq.c        Wed Oct 28 10:54:20 2009 +0000
@@ -24,7 +24,7 @@
 #include <public/physdev.h>
 
 /* opt_noirqbalance: If true, software IRQ balancing/affinity is disabled. */
-int opt_noirqbalance = 0;
+int __read_mostly opt_noirqbalance = 0;
 boolean_param("noirqbalance", opt_noirqbalance);
 
 unsigned int __read_mostly nr_irqs_gsi = 16;
@@ -45,7 +45,7 @@ DECLARE_BITMAP(used_vectors, NR_VECTORS)
 
 struct irq_cfg __read_mostly *irq_cfg = NULL;
 
-static struct timer *irq_guest_eoi_timer;
+static struct timer *__read_mostly irq_guest_eoi_timer;
 
 static DEFINE_SPINLOCK(vector_lock);
 
@@ -60,7 +60,7 @@ static struct timer irq_ratelimit_timer;
 static struct timer irq_ratelimit_timer;
 
 /* irq_ratelimit: the max irq rate allowed in every 10ms, set 0 to disable */
-unsigned int __read_mostly irq_ratelimit_threshold = 10000;
+static unsigned int __read_mostly irq_ratelimit_threshold = 10000;
 integer_param("irq_ratelimit", irq_ratelimit_threshold);
 
 /* Must be called when irq disabled */
@@ -321,7 +321,7 @@ static void ack_none(unsigned int irq)
 #define shutdown_none   disable_none
 #define end_none        enable_none
 
-struct hw_interrupt_type no_irq_type = {
+hw_irq_controller no_irq_type = {
     "none",
     startup_none,
     shutdown_none,
diff -r c4958b2edaa5 -r 514510e6c7cb xen/arch/x86/mpparse.c
--- a/xen/arch/x86/mpparse.c    Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/arch/x86/mpparse.c    Wed Oct 28 10:54:20 2009 +0000
@@ -57,8 +57,6 @@ struct mpc_config_intsrc mp_irqs[MAX_IRQ
 
 /* MP IRQ source entries */
 int mp_irq_entries;
-
-int nr_ioapics;
 
 int pic_mode;
 unsigned long mp_lapic_addr;
@@ -525,7 +523,7 @@ static void __init construct_default_ioi
                }
        }
 
-       for (i = 0; i < 16; i++) {
+       for (i = 0; platform_legacy_irq(i); i++) {
                switch (mpc_default_type) {
                case 2:
                        if (i == 0 || i == 13)
@@ -1037,7 +1035,7 @@ void __init mp_config_acpi_legacy_irqs (
         * Use the default configuration for the IRQs 0-15.  Unless
         * overriden by (MADT) interrupt source override entries.
         */
-       for (i = 0; i < 16; i++) {
+       for (i = 0; platform_legacy_irq(i); i++) {
                int idx;
 
                for (idx = 0; idx < mp_irq_entries; idx++) {
diff -r c4958b2edaa5 -r 514510e6c7cb xen/arch/x86/time.c
--- a/xen/arch/x86/time.c       Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/arch/x86/time.c       Wed Oct 28 10:54:20 2009 +0000
@@ -232,7 +232,7 @@ static void timer_interrupt(int irq, voi
     }
 }
 
-static struct irqaction irq0 = { timer_interrupt, "timer", NULL };
+static struct irqaction __read_mostly irq0 = { timer_interrupt, "timer", NULL 
};
 
 /* ------ Calibrate the TSC ------- 
  * Return processor ticks per second / CALIBRATE_FRAC.
diff -r c4958b2edaa5 -r 514510e6c7cb xen/common/domain.c
--- a/xen/common/domain.c       Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/common/domain.c       Wed Oct 28 10:54:20 2009 +0000
@@ -198,7 +198,8 @@ struct vcpu *alloc_idle_vcpu(unsigned in
     return alloc_vcpu(d, vcpu_id, cpu_id);
 }
 
-static unsigned int extra_dom0_irqs = 256, extra_domU_irqs = 32;
+static unsigned int __read_mostly extra_dom0_irqs = 256;
+static unsigned int __read_mostly extra_domU_irqs = 32;
 static void __init parse_extra_guest_irqs(const char *s)
 {
     if ( isdigit(*s) )
diff -r c4958b2edaa5 -r 514510e6c7cb xen/drivers/passthrough/amd/iommu_init.c
--- a/xen/drivers/passthrough/amd/iommu_init.c  Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/drivers/passthrough/amd/iommu_init.c  Wed Oct 28 10:54:20 2009 +0000
@@ -406,7 +406,7 @@ static void iommu_msi_end(unsigned int i
 }
 
 
-static struct hw_interrupt_type iommu_msi_type = {
+static hw_irq_controller iommu_msi_type = {
     .typename = "AMD_IOV_MSI",
     .startup = iommu_msi_startup,
     .shutdown = iommu_msi_mask,
diff -r c4958b2edaa5 -r 514510e6c7cb xen/drivers/passthrough/vtd/iommu.c
--- a/xen/drivers/passthrough/vtd/iommu.c       Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/drivers/passthrough/vtd/iommu.c       Wed Oct 28 10:54:20 2009 +0000
@@ -871,7 +871,7 @@ static void dma_msi_set_affinity(unsigne
     spin_unlock_irqrestore(&iommu->register_lock, flags);
 }
 
-static struct hw_interrupt_type dma_msi_type = {
+static hw_irq_controller dma_msi_type = {
     .typename = "DMA_MSI",
     .startup = dma_msi_startup,
     .shutdown = dma_msi_mask,
diff -r c4958b2edaa5 -r 514510e6c7cb xen/include/asm-ia64/linux-xen/asm/hw_irq.h
--- a/xen/include/asm-ia64/linux-xen/asm/hw_irq.h       Tue Oct 27 12:52:57 
2009 +0000
+++ b/xen/include/asm-ia64/linux-xen/asm/hw_irq.h       Wed Oct 28 10:54:20 
2009 +0000
@@ -79,7 +79,7 @@ extern __u8 isa_irq_to_vector_map[16];
 extern __u8 isa_irq_to_vector_map[16];
 #define isa_irq_to_vector(x)   isa_irq_to_vector_map[(x)]
 
-extern struct hw_interrupt_type irq_type_ia64_lsapic;  /* CPU-internal 
interrupt controller */
+extern hw_irq_controller irq_type_ia64_lsapic; /* CPU-internal interrupt 
controller */
 
 extern int assign_irq_vector (int irq);        /* allocate a free vector */
 extern void free_irq_vector (int vector);
@@ -91,7 +91,7 @@ extern int setup_vector(unsigned int vec
 #endif
 
 static inline void
-hw_resend_irq (struct hw_interrupt_type *h, unsigned int vector)
+hw_resend_irq (hw_irq_controller *h, unsigned int vector)
 {
        platform_send_ipi(smp_processor_id(), vector, IA64_IPI_DM_INT, 0);
 }
diff -r c4958b2edaa5 -r 514510e6c7cb xen/include/asm-x86/irq.h
--- a/xen/include/asm-x86/irq.h Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/include/asm-x86/irq.h Wed Oct 28 10:54:20 2009 +0000
@@ -10,8 +10,9 @@
 #include <irq_vectors.h>
 #include <asm/percpu.h>
 
-#define IO_APIC_IRQ(irq)    (((irq) >= 16 && (irq) < nr_irqs_gsi) \
-        || (((irq) < 16) && (1<<(irq)) & io_apic_irqs))
+#define IO_APIC_IRQ(irq)    (platform_legacy_irq(irq) ?    \
+                            (1 << (irq)) & io_apic_irqs : \
+                            (irq) < nr_irqs_gsi)
 #define IO_APIC_VECTOR(irq) (irq_vector[irq])
 
 #define MSI_IRQ(irq)       ((irq) >= nr_irqs_gsi && (irq) < nr_irqs)
@@ -19,13 +20,11 @@
 #define LEGACY_VECTOR(irq)          ((irq) + FIRST_LEGACY_VECTOR)
 #define LEGACY_IRQ_FROM_VECTOR(vec) ((vec) - FIRST_LEGACY_VECTOR)
 
-#define vector_to_irq(vec)  (vector_irq[vec])
-#define irq_to_desc(irq)    &irq_desc[(irq)]
+#define irq_to_desc(irq)    (&irq_desc[irq])
+#define irq_cfg(irq)        (&irq_cfg[irq])
 
 #define MAX_GSI_IRQS PAGE_SIZE * 8
 #define MAX_NR_IRQS (2 * MAX_GSI_IRQS)
-
-#define irq_cfg(irq)        &irq_cfg[(irq)]
 
 struct irq_cfg {
         int  vector;
diff -r c4958b2edaa5 -r 514510e6c7cb xen/include/asm-x86/msi.h
--- a/xen/include/asm-x86/msi.h Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/include/asm-x86/msi.h Wed Oct 28 10:54:20 2009 +0000
@@ -117,7 +117,7 @@ int msi_free_irq(struct msi_desc *entry)
  */
 #define NR_HP_RESERVED_VECTORS         20
 
-extern struct hw_interrupt_type pci_msi_type;
+extern const struct hw_interrupt_type pci_msi_type;
 
 /*
  * MSI-X Address Register
diff -r c4958b2edaa5 -r 514510e6c7cb xen/include/xen/irq.h
--- a/xen/include/xen/irq.h     Tue Oct 27 12:52:57 2009 +0000
+++ b/xen/include/xen/irq.h     Wed Oct 28 10:54:20 2009 +0000
@@ -47,7 +47,7 @@ struct hw_interrupt_type {
     void (*set_affinity)(unsigned int irq, cpumask_t mask);
 };
 
-typedef struct hw_interrupt_type hw_irq_controller;
+typedef const struct hw_interrupt_type hw_irq_controller;
 
 #include <asm/irq.h>
 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.