]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 31 Mar 2009 01:00:26 +0000 (18:00 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 31 Mar 2009 01:00:26 +0000 (18:00 -0700)
* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask:
  oprofile: Thou shalt not call __exit functions from __init functions
  cpumask: remove the now-obsoleted pcibus_to_cpumask(): generic
  cpumask: remove cpumask_t from core
  cpumask: convert rcutorture.c
  cpumask: use new cpumask_ functions in core code.
  cpumask: remove references to struct irqaction's mask field.
  cpumask: use mm_cpumask() wrapper: kernel/fork.c
  cpumask: use set_cpu_active in init/main.c
  cpumask: remove node_to_first_cpu
  cpumask: fix seq_bitmap_*() functions.
  cpumask: remove dangerous CPU_MASK_ALL_PTR, &CPU_MASK_ALL

1  2 
arch/mips/emma/markeins/irq.c
arch/mips/sgi-ip27/ip27-nmi.c
arch/mips/sgi-ip32/ip32-irq.c
arch/mips/sni/rm200.c
arch/powerpc/platforms/85xx/mpc85xx_cds.c
arch/x86/kernel/irqinit_32.c
arch/x86/kernel/irqinit_64.c
arch/x86/kernel/setup.c

index 2bbc41a1623cae2a3972084af3ce8118b85adc93,ff4e529fa698d5a39b59f7c8bf33db501a0e056c..43828ae796ec9d0d3276b50ffe5b8f0c29ea1b2f
@@@ -80,9 -80,9 +80,9 @@@ void emma2rh_irq_init(void
        u32 i;
  
        for (i = 0; i < NUM_EMMA2RH_IRQ; i++)
 -              set_irq_chip_and_handler(EMMA2RH_IRQ_BASE + i,
 -                                       &emma2rh_irq_controller,
 -                                       handle_level_irq);
 +              set_irq_chip_and_handler_name(EMMA2RH_IRQ_BASE + i,
 +                                            &emma2rh_irq_controller,
 +                                            handle_level_irq, "level");
  }
  
  static void emma2rh_sw_irq_enable(unsigned int irq)
@@@ -120,9 -120,9 +120,9 @@@ void emma2rh_sw_irq_init(void
        u32 i;
  
        for (i = 0; i < NUM_EMMA2RH_IRQ_SW; i++)
 -              set_irq_chip_and_handler(EMMA2RH_SW_IRQ_BASE + i,
 -                                       &emma2rh_sw_irq_controller,
 -                                       handle_level_irq);
 +              set_irq_chip_and_handler_name(EMMA2RH_SW_IRQ_BASE + i,
 +                                            &emma2rh_sw_irq_controller,
 +                                            handle_level_irq, "level");
  }
  
  static void emma2rh_gpio_irq_enable(unsigned int irq)
@@@ -149,28 -149,37 +149,28 @@@ static void emma2rh_gpio_irq_disable(un
  
  static void emma2rh_gpio_irq_ack(unsigned int irq)
  {
 -      u32 reg;
 -
        irq -= EMMA2RH_GPIO_IRQ_BASE;
        emma2rh_out32(EMMA2RH_GPIO_INT_ST, ~(1 << irq));
 -
 -      reg = emma2rh_in32(EMMA2RH_GPIO_INT_MASK);
 -      reg &= ~(1 << irq);
 -      emma2rh_out32(EMMA2RH_GPIO_INT_MASK, reg);
  }
  
 -static void emma2rh_gpio_irq_end(unsigned int irq)
 +static void emma2rh_gpio_irq_mask_ack(unsigned int irq)
  {
        u32 reg;
  
 -      if (!(irq_desc[irq].status & (IRQ_DISABLED | IRQ_INPROGRESS))) {
 -
 -              irq -= EMMA2RH_GPIO_IRQ_BASE;
 +      irq -= EMMA2RH_GPIO_IRQ_BASE;
 +      emma2rh_out32(EMMA2RH_GPIO_INT_ST, ~(1 << irq));
  
 -              reg = emma2rh_in32(EMMA2RH_GPIO_INT_MASK);
 -              reg |= 1 << irq;
 -              emma2rh_out32(EMMA2RH_GPIO_INT_MASK, reg);
 -      }
 +      reg = emma2rh_in32(EMMA2RH_GPIO_INT_MASK);
 +      reg &= ~(1 << irq);
 +      emma2rh_out32(EMMA2RH_GPIO_INT_MASK, reg);
  }
  
  struct irq_chip emma2rh_gpio_irq_controller = {
        .name = "emma2rh_gpio_irq",
        .ack = emma2rh_gpio_irq_ack,
        .mask = emma2rh_gpio_irq_disable,
 -      .mask_ack = emma2rh_gpio_irq_ack,
 +      .mask_ack = emma2rh_gpio_irq_mask_ack,
        .unmask = emma2rh_gpio_irq_enable,
 -      .end = emma2rh_gpio_irq_end,
  };
  
  void emma2rh_gpio_irq_init(void)
        u32 i;
  
        for (i = 0; i < NUM_EMMA2RH_IRQ_GPIO; i++)
 -              set_irq_chip(EMMA2RH_GPIO_IRQ_BASE + i,
 -                           &emma2rh_gpio_irq_controller);
 +              set_irq_chip_and_handler_name(EMMA2RH_GPIO_IRQ_BASE + i,
 +                                            &emma2rh_gpio_irq_controller,
 +                                            handle_edge_irq, "edge");
  }
  
  static struct irqaction irq_cascade = {
           .handler = no_action,
           .flags = 0,
-          .mask = CPU_MASK_NONE,
           .name = "cascade",
           .dev_id = NULL,
           .next = NULL,
@@@ -205,7 -212,8 +204,7 @@@ void emma2rh_irq_dispatch(void
                    emma2rh_in32(EMMA2RH_BHIF_INT_EN_0);
  
  #ifdef EMMA2RH_SW_CASCADE
 -      if (intStatus &
 -          (1 << ((EMMA2RH_SW_CASCADE - EMMA2RH_IRQ_INT0) & (32 - 1)))) {
 +      if (intStatus & (1UL << EMMA2RH_SW_CASCADE)) {
                u32 swIntStatus;
                swIntStatus = emma2rh_in32(EMMA2RH_BHIF_SW_INT)
                    & emma2rh_in32(EMMA2RH_BHIF_SW_INT_EN);
                        }
                }
        }
 +      /* Skip S/W interrupt */
 +      intStatus &= ~(1UL << EMMA2RH_SW_CASCADE);
  #endif
  
        for (i = 0, bitmask = 1; i < 32; i++, bitmask <<= 1) {
                    emma2rh_in32(EMMA2RH_BHIF_INT_EN_1);
  
  #ifdef EMMA2RH_GPIO_CASCADE
 -      if (intStatus &
 -          (1 << ((EMMA2RH_GPIO_CASCADE - EMMA2RH_IRQ_INT0) & (32 - 1)))) {
 +      if (intStatus & (1UL << (EMMA2RH_GPIO_CASCADE % 32))) {
                u32 gpioIntStatus;
                gpioIntStatus = emma2rh_in32(EMMA2RH_GPIO_INT_ST)
                    & emma2rh_in32(EMMA2RH_GPIO_INT_MASK);
                        }
                }
        }
 +      /* Skip GPIO interrupt */
 +      intStatus &= ~(1UL << (EMMA2RH_GPIO_CASCADE % 32));
  #endif
  
        for (i = 32, bitmask = 1; i < 64; i++, bitmask <<= 1) {
index a1f21d9421e86e7002f99946864118de9d5000dc,b174a51a16210369ca553a3ab563fca4690233f6..6c5a630566f93d77997839577fbc5386c5830c97
@@@ -143,8 -143,8 +143,8 @@@ void nmi_dump_hub_irq(nasid_t nasid, in
        pend0 = REMOTE_HUB_L(nasid, PI_INT_PEND0);
        pend1 = REMOTE_HUB_L(nasid, PI_INT_PEND1);
  
 -      printk("PI_INT_MASK0: %16lx PI_INT_MASK1: %16lx\n", mask0, mask1);
 -      printk("PI_INT_PEND0: %16lx PI_INT_PEND1: %16lx\n", pend0, pend1);
 +      printk("PI_INT_MASK0: %16Lx PI_INT_MASK1: %16Lx\n", mask0, mask1);
 +      printk("PI_INT_PEND0: %16Lx PI_INT_PEND1: %16Lx\n", pend0, pend1);
        printk("\n\n");
  }
  
@@@ -219,7 -219,7 +219,7 @@@ cont_nmi_dump(void
                if (i == 1000) {
                        for_each_online_node(node)
                                if (NODEPDA(node)->dump_count == 0) {
-                                       cpu = node_to_first_cpu(node);
+                                       cpu = cpumask_first(cpumask_of_node(node));
                                        for (n=0; n < CNODE_NUM_CPUS(node); cpu++, n++) {
                                                CPUMASK_SETB(nmied_cpus, cpu);
                                                /*
index 0aefc5319a036c938d2db3cff9989ac72b12fa3e,9cb28cd20ad821f3d69b4be2d8a60c0e94e8d469..83a0b3c359daecee88c87223beef876d9b35aab9
@@@ -115,14 -115,12 +115,12 @@@ extern irqreturn_t crime_cpuerr_intr(in
  struct irqaction memerr_irq = {
        .handler = crime_memerr_intr,
        .flags = IRQF_DISABLED,
-       .mask = CPU_MASK_NONE,
        .name = "CRIME memory error",
  };
  
  struct irqaction cpuerr_irq = {
        .handler = crime_cpuerr_intr,
        .flags = IRQF_DISABLED,
-       .mask = CPU_MASK_NONE,
        .name = "CRIME CPU error",
  };
  
@@@ -325,11 -323,16 +323,11 @@@ static void mask_and_ack_maceisa_irq(un
  {
        unsigned long mace_int;
  
 -      switch (irq) {
 -      case MACEISA_PARALLEL_IRQ:
 -      case MACEISA_SERIAL1_TDMAPR_IRQ:
 -      case MACEISA_SERIAL2_TDMAPR_IRQ:
 -              /* edge triggered */
 -              mace_int = mace->perif.ctrl.istat;
 -              mace_int &= ~(1 << (irq - MACEISA_AUDIO_SW_IRQ));
 -              mace->perif.ctrl.istat = mace_int;
 -              break;
 -      }
 +      /* edge triggered */
 +      mace_int = mace->perif.ctrl.istat;
 +      mace_int &= ~(1 << (irq - MACEISA_AUDIO_SW_IRQ));
 +      mace->perif.ctrl.istat = mace_int;
 +
        disable_maceisa_irq(irq);
  }
  
@@@ -339,16 -342,7 +337,16 @@@ static void end_maceisa_irq(unsigned ir
                enable_maceisa_irq(irq);
  }
  
 -static struct irq_chip ip32_maceisa_interrupt = {
 +static struct irq_chip ip32_maceisa_level_interrupt = {
 +      .name           = "IP32 MACE ISA",
 +      .ack            = disable_maceisa_irq,
 +      .mask           = disable_maceisa_irq,
 +      .mask_ack       = disable_maceisa_irq,
 +      .unmask         = enable_maceisa_irq,
 +      .end            = end_maceisa_irq,
 +};
 +
 +static struct irq_chip ip32_maceisa_edge_interrupt = {
        .name           = "IP32 MACE ISA",
        .ack            = mask_and_ack_maceisa_irq,
        .mask           = disable_maceisa_irq,
@@@ -504,50 -498,27 +502,50 @@@ void __init arch_init_irq(void
        for (irq = CRIME_IRQ_BASE; irq <= IP32_IRQ_MAX; irq++) {
                switch (irq) {
                case MACE_VID_IN1_IRQ ... MACE_PCI_BRIDGE_IRQ:
 -                      set_irq_chip(irq, &ip32_mace_interrupt);
 +                      set_irq_chip_and_handler_name(irq,&ip32_mace_interrupt,
 +                              handle_level_irq, "level");
                        break;
 +
                case MACEPCI_SCSI0_IRQ ...  MACEPCI_SHARED2_IRQ:
 -                      set_irq_chip(irq, &ip32_macepci_interrupt);
 +                      set_irq_chip_and_handler_name(irq,
 +                              &ip32_macepci_interrupt, handle_level_irq,
 +                              "level");
                        break;
 +
                case CRIME_GBE0_IRQ ... CRIME_GBE3_IRQ:
 -                      set_irq_chip(irq, &crime_edge_interrupt);
 +                      set_irq_chip_and_handler_name(irq,
 +                              &crime_edge_interrupt, handle_edge_irq, "edge");
                        break;
                case CRIME_CPUERR_IRQ:
                case CRIME_MEMERR_IRQ:
 -                      set_irq_chip(irq, &crime_level_interrupt);
 +                      set_irq_chip_and_handler_name(irq,
 +                              &crime_level_interrupt, handle_level_irq,
 +                              "level");
                        break;
 +
                case CRIME_RE_EMPTY_E_IRQ ... CRIME_RE_IDLE_E_IRQ:
                case CRIME_SOFT0_IRQ ... CRIME_SOFT2_IRQ:
 -                      set_irq_chip(irq, &crime_edge_interrupt);
 +                      set_irq_chip_and_handler_name(irq,
 +                              &crime_edge_interrupt, handle_edge_irq, "edge");
                        break;
 +
                case CRIME_VICE_IRQ:
 -                      set_irq_chip(irq, &crime_edge_interrupt);
 +                      set_irq_chip_and_handler_name(irq,
 +                              &crime_edge_interrupt, handle_edge_irq, "edge");
 +                      break;
 +
 +              case MACEISA_PARALLEL_IRQ:
 +              case MACEISA_SERIAL1_TDMAPR_IRQ:
 +              case MACEISA_SERIAL2_TDMAPR_IRQ:
 +                      set_irq_chip_and_handler_name(irq,
 +                              &ip32_maceisa_edge_interrupt, handle_edge_irq,
 +                              "edge");
                        break;
 +
                default:
 -                      set_irq_chip(irq, &ip32_maceisa_interrupt);
 +                      set_irq_chip_and_handler_name(irq,
 +                              &ip32_maceisa_level_interrupt, handle_level_irq,
 +                              "level");
                        break;
                }
        }
diff --combined arch/mips/sni/rm200.c
index b4352a0c815178f09a90e7561b5fc966fd64eba4,a695a08c93f6820966eb7fc4f25eb15bcb4d7724..5e687819cbc2aec4aec85dbada30184a345a6551
@@@ -359,7 -359,8 +359,8 @@@ void sni_rm200_init_8259A(void
   * IRQ2 is cascade interrupt to second interrupt controller
   */
  static struct irqaction sni_rm200_irq2 = {
-       no_action, 0, CPU_MASK_NONE, "cascade", NULL, NULL
+       .handler = no_action,
+       .name = "cascade",
  };
  
  static struct resource sni_rm200_pic1_resource = {
@@@ -487,7 -488,7 +488,7 @@@ void __init sni_rm200_irq_init(void
        mips_cpu_irq_init();
        /* Actually we've got more interrupts to handle ...  */
        for (i = SNI_RM200_INT_START; i <= SNI_RM200_INT_END; i++)
 -              set_irq_chip(i, &rm200_irq_type);
 +              set_irq_chip_and_handler(i, &rm200_irq_type, handle_level_irq);
        sni_hwint = sni_rm200_hwint;
        change_c0_status(ST0_IM, IE_IRQ0);
        setup_irq(SNI_RM200_INT_START + 0, &sni_rm200_i8259A_irq);
index 0a9e49104bdc42ccd506946e607dfa3361608768,02fe215122f68ad0b7d4d1c831648d0b97e6a621..458d91fba91d5f80ba7296c55752b0960eaca11d
@@@ -179,7 -179,6 +179,6 @@@ static irqreturn_t mpc85xx_8259_cascade
  static struct irqaction mpc85xxcds_8259_irqaction = {
        .handler = mpc85xx_8259_cascade_action,
        .flags = IRQF_SHARED,
-       .mask = CPU_MASK_NONE,
        .name = "8259 cascade",
  };
  #endif /* PPC_I8259 */
@@@ -336,7 -335,6 +335,7 @@@ static struct of_device_id __initdata o
        { .type = "soc", },
        { .compatible = "soc", },
        { .compatible = "simple-bus", },
 +      { .compatible = "gianfar", },
        {},
  };
  
index bc132610544829de0f38a12dd8461d73104b39a2,458c554c542229ad0af4183768bce98104854f19..368b0a8836f902be69531754a72fb75e7b9a4e24
@@@ -50,7 -50,6 +50,6 @@@ static irqreturn_t math_error_irq(int c
   */
  static struct irqaction fpu_irq = {
        .handler = math_error_irq,
-       .mask = CPU_MASK_NONE,
        .name = "fpu",
  };
  
@@@ -83,7 -82,6 +82,6 @@@ void __init init_ISA_irqs(void
   */
  static struct irqaction irq2 = {
        .handler = no_action,
-       .mask = CPU_MASK_NONE,
        .name = "cascade",
  };
  
@@@ -175,9 -173,6 +173,9 @@@ void __init native_init_IRQ(void
        /* self generated IPI for local APIC timer */
        alloc_intr_gate(LOCAL_TIMER_VECTOR, apic_timer_interrupt);
  
 +      /* generic IPI for platform specific use */
 +      alloc_intr_gate(GENERIC_INTERRUPT_VECTOR, generic_interrupt);
 +
        /* IPI vectors for APIC spurious and error interrupts */
        alloc_intr_gate(SPURIOUS_APIC_VECTOR, spurious_interrupt);
        alloc_intr_gate(ERROR_APIC_VECTOR, error_interrupt);
index c7a49e0ffbfbc0b4b2b0cd12b01d5294ca73745c,76abe43aa73f1f6dd518f50c6255afad17e1ef90..8cd10537fd46f7480b6db9807db276ada5b390af
@@@ -45,7 -45,6 +45,6 @@@
  
  static struct irqaction irq2 = {
        .handler = no_action,
-       .mask = CPU_MASK_NONE,
        .name = "cascade",
  };
  DEFINE_PER_CPU(vector_irq_t, vector_irq) = {
@@@ -147,9 -146,6 +146,9 @@@ static void __init apic_intr_init(void
        /* self generated IPI for local APIC timer */
        alloc_intr_gate(LOCAL_TIMER_VECTOR, apic_timer_interrupt);
  
 +      /* generic IPI for platform specific use */
 +      alloc_intr_gate(GENERIC_INTERRUPT_VECTOR, generic_interrupt);
 +
        /* IPI vectors for APIC spurious and error interrupts */
        alloc_intr_gate(SPURIOUS_APIC_VECTOR, spurious_interrupt);
        alloc_intr_gate(ERROR_APIC_VECTOR, error_interrupt);
diff --combined arch/x86/kernel/setup.c
index a0d26237d7cf141462a2d20941f8bd99d4195e57,900dad7fe38d71bbf20f97cb4091b016415e38bc..b4158439bf634d254852cceab2c30d26f943f7ea
  #define ARCH_SETUP
  #endif
  
 +RESERVE_BRK(dmi_alloc, 65536);
 +
  unsigned int boot_cpu_id __read_mostly;
  
 +static __initdata unsigned long _brk_start = (unsigned long)__brk_base;
 +unsigned long _brk_end = (unsigned long)__brk_base;
 +
  #ifdef CONFIG_X86_64
  int default_cpu_present_to_apicid(int mps_cpu)
  {
@@@ -163,6 -158,12 +163,6 @@@ static struct resource bss_resource = 
  
  
  #ifdef CONFIG_X86_32
 -/* This value is set up by the early boot code to point to the value
 -   immediately after the boot time page tables.  It contains a *physical*
 -   address, and must not be in the .bss segment! */
 -unsigned long init_pg_tables_start __initdata = ~0UL;
 -unsigned long init_pg_tables_end __initdata = ~0UL;
 -
  static struct resource video_ram_resource = {
        .name   = "Video RAM area",
        .start  = 0xa0000,
@@@ -201,9 -202,7 +201,9 @@@ struct ist_info ist_info
  #endif
  
  #else
 -struct cpuinfo_x86 boot_cpu_data __read_mostly;
 +struct cpuinfo_x86 boot_cpu_data __read_mostly = {
 +      .x86_phys_bits = MAX_PHYSMEM_BITS,
 +};
  EXPORT_SYMBOL(boot_cpu_data);
  #endif
  
@@@ -217,6 -216,12 +217,6 @@@ unsigned long mmu_cr4_features = X86_CR
  /* Boot loader ID as an integer, for the benefit of proc_dointvec */
  int bootloader_type;
  
 -/*
 - * Early DMI memory
 - */
 -int dmi_alloc_index;
 -char dmi_alloc_data[DMI_MAX_DATA];
 -
  /*
   * Setup options
   */
@@@ -262,35 -267,6 +262,35 @@@ static inline void copy_edd(void
  }
  #endif
  
 +void * __init extend_brk(size_t size, size_t align)
 +{
 +      size_t mask = align - 1;
 +      void *ret;
 +
 +      BUG_ON(_brk_start == 0);
 +      BUG_ON(align & mask);
 +
 +      _brk_end = (_brk_end + mask) & ~mask;
 +      BUG_ON((char *)(_brk_end + size) > __brk_limit);
 +
 +      ret = (void *)_brk_end;
 +      _brk_end += size;
 +
 +      memset(ret, 0, size);
 +
 +      return ret;
 +}
 +
 +static void __init reserve_brk(void)
 +{
 +      if (_brk_end > _brk_start)
 +              reserve_early(__pa(_brk_start), __pa(_brk_end), "BRK");
 +
 +      /* Mark brk area as locked down and no longer taking any
 +         new allocations */
 +      _brk_start = 0;
 +}
 +
  #ifdef CONFIG_BLK_DEV_INITRD
  
  #ifdef CONFIG_X86_32
@@@ -739,7 -715,11 +739,7 @@@ void __init setup_arch(char **cmdline_p
        init_mm.start_code = (unsigned long) _text;
        init_mm.end_code = (unsigned long) _etext;
        init_mm.end_data = (unsigned long) _edata;
 -#ifdef CONFIG_X86_32
 -      init_mm.brk = init_pg_tables_end + PAGE_OFFSET;
 -#else
 -      init_mm.brk = (unsigned long) &_end;
 -#endif
 +      init_mm.brk = _brk_end;
  
        code_resource.start = virt_to_phys(_text);
        code_resource.end = virt_to_phys(_etext)-1;
        setup_bios_corruption_check();
  #endif
  
 +      reserve_brk();
 +
        /* max_pfn_mapped is updated here */
        max_low_pfn_mapped = init_memory_mapping(0, max_low_pfn<<PAGE_SHIFT);
        max_pfn_mapped = max_low_pfn_mapped;
@@@ -1049,7 -1027,6 +1049,6 @@@ void __init x86_quirk_trap_init(void
  static struct irqaction irq0  = {
        .handler = timer_interrupt,
        .flags = IRQF_DISABLED | IRQF_NOBALANCING | IRQF_IRQPOLL | IRQF_TIMER,
-       .mask = CPU_MASK_NONE,
        .name = "timer"
  };