Merge branch 'x86/urgent' of into irq/sparseirq
authorThomas Gleixner <tglx@linutronix.de>
Tue, 12 Oct 2010 14:41:22 +0000 (16:41 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 12 Oct 2010 14:41:26 +0000 (16:41 +0200)
Reason: Pull in the latest io_apic bugfixes

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
1  2 
MAINTAINERS
arch/x86/kernel/apic/io_apic.c
arch/x86/kernel/cpu/common.c
arch/x86/kernel/cpu/intel.c

diff --combined MAINTAINERS
@@@ -1220,7 -1220,7 +1220,7 @@@ F:      drivers/auxdisplay
  F:    include/linux/cfag12864b.h
  
  AVR32 ARCHITECTURE
- M:    Haavard Skinnemoen <hskinnemoen@atmel.com>
+ M:    Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
  W:    http://www.atmel.com/products/AVR32/
  W:    http://avr32linux.org/
  W:    http://avrfreaks.net/
@@@ -1228,7 -1228,7 +1228,7 @@@ S:      Supporte
  F:    arch/avr32/
  
  AVR32/AT32AP MACHINE SUPPORT
- M:    Haavard Skinnemoen <hskinnemoen@atmel.com>
+ M:    Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
  S:    Supported
  F:    arch/avr32/mach-at32ap/
  
@@@ -2199,6 -2199,12 +2199,12 @@@ W:    http://acpi4asus.sf.ne
  S:    Maintained
  F:    drivers/platform/x86/eeepc-laptop.c
  
+ EFIFB FRAMEBUFFER DRIVER
+ L:    linux-fbdev@vger.kernel.org
+ M:    Peter Jones <pjones@redhat.com>
+ S:    Maintained
+ F:    drivers/video/efifb.c
  EFS FILESYSTEM
  W:    http://aeschi.ch.eu.org/efs/
  S:    Orphan
@@@ -2662,6 -2668,8 +2668,8 @@@ M:      Guenter Roeck <guenter.roeck@ericsso
  L:    lm-sensors@lm-sensors.org
  W:    http://www.lm-sensors.org/
  T:    quilt kernel.org/pub/linux/kernel/people/jdelvare/linux-2.6/jdelvare-hwmon/
+ T:    quilt kernel.org/pub/linux/kernel/people/groeck/linux-staging/
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging.git
  S:    Maintained
  F:    Documentation/hwmon/
  F:    drivers/hwmon/
@@@ -3202,12 -3210,6 +3210,12 @@@ F:    drivers/net/irda
  F:    include/net/irda/
  F:    net/irda/
  
 +IRQ SUBSYSTEM
 +M:    Thomas Gleixner <tglx@linutronix.de>
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git irq/core
 +F:    kernel/irq/
 +
  ISAPNP
  M:    Jaroslav Kysela <perex@perex.cz>
  S:    Maintained
@@@ -3905,10 -3907,8 +3913,8 @@@ F:     Documentation/serial/moxa-smarti
  F:    drivers/char/mxser.*
  
  MSI LAPTOP SUPPORT
- M:    Lennart Poettering <mzxreary@0pointer.de>
+ M:    Lee, Chun-Yi <jlee@novell.com>
  L:    platform-driver-x86@vger.kernel.org
- W:    https://tango.0pointer.de/mailman/listinfo/s270-linux
- W:    http://0pointer.de/lennart/tchibo.html
  S:    Maintained
  F:    drivers/platform/x86/msi-laptop.c
  
@@@ -3925,8 -3925,10 +3931,10 @@@ S:    Supporte
  F:    drivers/mfd/
  
  MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM
- S:    Orphan
+ M:    Chris Ball <cjb@laptop.org>
  L:    linux-mmc@vger.kernel.org
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc.git
+ S:    Maintained
  F:    drivers/mmc/
  F:    include/linux/mmc/
  
@@@ -5097,8 -5099,10 +5105,10 @@@ S:    Maintaine
  F:    drivers/mmc/host/sdricoh_cs.c
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER
- S:    Orphan
+ M:    Chris Ball <cjb@laptop.org>
  L:    linux-mmc@vger.kernel.org
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc.git
+ S:    Maintained
  F:    drivers/mmc/host/sdhci.*
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE, OPEN FIRMWARE BINDINGS (SDHCI-OF)
@@@ -162,7 -162,7 +162,7 @@@ int __init arch_early_irq_init(void
  
        cfg = irq_cfgx;
        count = ARRAY_SIZE(irq_cfgx);
 -      node= cpu_to_node(boot_cpu_id);
 +      node = cpu_to_node(0);
  
        for (i = 0; i < count; i++) {
                desc = irq_to_desc(i);
@@@ -306,14 -306,19 +306,19 @@@ void arch_init_copy_chip_data(struct ir
  
        old_cfg = old_desc->chip_data;
  
-       memcpy(cfg, old_cfg, sizeof(struct irq_cfg));
+       cfg->vector = old_cfg->vector;
+       cfg->move_in_progress = old_cfg->move_in_progress;
+       cpumask_copy(cfg->domain, old_cfg->domain);
+       cpumask_copy(cfg->old_domain, old_cfg->old_domain);
  
        init_copy_irq_2_pin(old_cfg, cfg, node);
  }
  
- static void free_irq_cfg(struct irq_cfg *old_cfg)
+ static void free_irq_cfg(struct irq_cfg *cfg)
  {
-       kfree(old_cfg);
+       free_cpumask_var(cfg->domain);
+       free_cpumask_var(cfg->old_domain);
+       kfree(cfg);
  }
  
  void arch_free_chip_data(struct irq_desc *old_desc, struct irq_desc *desc)
@@@ -1377,7 -1382,21 +1382,7 @@@ int setup_ioapic_entry(int apic_id, in
                if (index < 0)
                        panic("Failed to allocate IRTE for ioapic %d\n", apic_id);
  
 -              memset(&irte, 0, sizeof(irte));
 -
 -              irte.present = 1;
 -              irte.dst_mode = apic->irq_dest_mode;
 -              /*
 -               * Trigger mode in the IRTE will always be edge, and the
 -               * actual level or edge trigger will be setup in the IO-APIC
 -               * RTE. This will help simplify level triggered irq migration.
 -               * For more details, see the comments above explainig IO-APIC
 -               * irq migration in the presence of interrupt-remapping.
 -               */
 -              irte.trigger_mode = 0;
 -              irte.dlvry_mode = apic->irq_delivery_mode;
 -              irte.vector = vector;
 -              irte.dest_id = IRTE_DEST(destination);
 +              prepare_irte(&irte, vector, destination);
  
                /* Set source-id of interrupt request */
                set_ioapic_sid(&irte, apic_id);
@@@ -1469,7 -1488,7 +1474,7 @@@ static void __init setup_IO_APIC_irqs(v
        int notcon = 0;
        struct irq_desc *desc;
        struct irq_cfg *cfg;
 -      int node = cpu_to_node(boot_cpu_id);
 +      int node = cpu_to_node(0);
  
        apic_printk(APIC_VERBOSE, KERN_DEBUG "init IO_APIC IRQs\n");
  
  void setup_IO_APIC_irq_extra(u32 gsi)
  {
        int apic_id = 0, pin, idx, irq;
 -      int node = cpu_to_node(boot_cpu_id);
 +      int node = cpu_to_node(0);
        struct irq_desc *desc;
        struct irq_cfg *cfg;
  
@@@ -2913,7 -2932,7 +2918,7 @@@ static inline void __init check_timer(v
  {
        struct irq_desc *desc = irq_to_desc(0);
        struct irq_cfg *cfg = desc->chip_data;
 -      int node = cpu_to_node(boot_cpu_id);
 +      int node = cpu_to_node(0);
        int apic1, pin1, apic2, pin2;
        unsigned long flags;
        int no_pin1 = 0;
@@@ -3267,7 -3286,7 +3272,7 @@@ unsigned int create_irq_nr(unsigned in
  
  int create_irq(void)
  {
 -      int node = cpu_to_node(boot_cpu_id);
 +      int node = cpu_to_node(0);
        unsigned int irq_want;
        int irq;
  
@@@ -3321,7 -3340,14 +3326,7 @@@ static int msi_compose_msg(struct pci_d
                ir_index = map_irq_to_irte_handle(irq, &sub_handle);
                BUG_ON(ir_index == -1);
  
 -              memset (&irte, 0, sizeof(irte));
 -
 -              irte.present = 1;
 -              irte.dst_mode = apic->irq_dest_mode;
 -              irte.trigger_mode = 0; /* edge */
 -              irte.dlvry_mode = apic->irq_delivery_mode;
 -              irte.vector = cfg->vector;
 -              irte.dest_id = IRTE_DEST(dest);
 +              prepare_irte(&irte, cfg->vector, dest);
  
                /* Set source-id of interrupt request */
                if (pdev)
@@@ -3859,7 -3885,7 +3864,7 @@@ int __init arch_probe_nr_irqs(void
        if (nr < nr_irqs)
                nr_irqs = nr;
  
 -      return 0;
 +      return NR_IRQS_LEGACY;
  }
  #endif
  
@@@ -3882,7 -3908,7 +3887,7 @@@ static int __io_apic_set_pci_routing(st
        if (dev)
                node = dev_to_node(dev);
        else
 -              node = cpu_to_node(boot_cpu_id);
 +              node = cpu_to_node(0);
  
        desc = irq_to_desc_alloc_node(irq, node);
        if (!desc) {
@@@ -545,7 -545,7 +545,7 @@@ void __cpuinit cpu_detect(struct cpuinf
        }
  }
  
static void __cpuinit get_cpu_cap(struct cpuinfo_x86 *c)
+ void __cpuinit get_cpu_cap(struct cpuinfo_x86 *c)
  {
        u32 tfms, xlvl;
        u32 ebx;
@@@ -665,7 -665,7 +665,7 @@@ static void __init early_identify_cpu(s
                this_cpu->c_early_init(c);
  
  #ifdef CONFIG_SMP
 -      c->cpu_index = boot_cpu_id;
 +      c->cpu_index = 0;
  #endif
        filter_cpuid_features(c, false);
  }
@@@ -39,6 -39,7 +39,7 @@@ static void __cpuinit early_init_intel(
                        misc_enable &= ~MSR_IA32_MISC_ENABLE_LIMIT_CPUID;
                        wrmsrl(MSR_IA32_MISC_ENABLE, misc_enable);
                        c->cpuid_level = cpuid_eax(0);
+                       get_cpu_cap(c);
                }
        }
  
@@@ -169,7 -170,7 +170,7 @@@ static void __cpuinit intel_smp_check(s
  {
  #ifdef CONFIG_SMP
        /* calling is from identify_secondary_cpu() ? */
 -      if (c->cpu_index == boot_cpu_id)
 +      if (!c->cpu_index)
                return;
  
        /*