1. 19 12月, 2008 1 次提交
    • I
      x86: fix warning in arch/x86/kernel/io_apic.c · a7883dec
      Ingo Molnar 提交于
      this warning:
      
        arch/x86/kernel/io_apic.c: In function ‘ir_set_msi_irq_affinity’:
        arch/x86/kernel/io_apic.c:3373: warning: ‘cfg’ may be used uninitialized in this function
      
      triggers because the variable was truly uninitialized. We'd crash on
      entering this code.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      a7883dec
  2. 17 12月, 2008 5 次提交
    • I
      x86: update io_apic.c to the new cpumask code · d733e00d
      Ingo Molnar 提交于
      Impact: build fix
      
      The sparseirq tree crossed with the cpumask changes, fix the fallout.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      d733e00d
    • M
      x86: Update io_apic.c to use new cpumask API · 22f65d31
      Mike Travis 提交于
      Impact: cleanup, consolidate patches, use new API
      
      Consolidate the following into a single patch to adapt to new
      sparseirq code in arch/x86/kernel/io_apic.c, add allocation of
      cpumask_var_t's in domain and old_domain, and reduce further
      merge conflicts.  Only one file (arch/x86/kernel/io_apic.c) is
      changed in all of these patches.
      
      	0006-x86-io_apic-change-irq_cfg-domain-old_domain-to.patch
      	0007-x86-io_apic-set_desc_affinity.patch
      	0008-x86-io_apic-send_cleanup_vector.patch
      	0009-x86-io_apic-eliminate-remaining-cpumask_ts-from-st.patch
      	0021-x86-final-cleanups-in-io_apic-to-use-new-cpumask-AP.patch
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: NMike Travis <travis@sgi.com>
      22f65d31
    • M
      x86 smp: modify send_IPI_mask interface to accept cpumask_t pointers · e7986739
      Mike Travis 提交于
      Impact: cleanup, change parameter passing
      
        * Change genapic interfaces to accept cpumask_t pointers where possible.
      
        * Modify external callers to use cpumask_t pointers in function calls.
      
        * Create new send_IPI_mask_allbutself which is the same as the
          send_IPI_mask functions but removes smp_processor_id() from list.
          This removes another common need for a temporary cpumask_t variable.
      
        * Functions that used a temp cpumask_t variable for:
      
      	cpumask_t allbutme = cpu_online_map;
      
      	cpu_clear(smp_processor_id(), allbutme);
      	if (!cpus_empty(allbutme))
      		...
      
          become:
      
      	if (!cpus_equal(cpu_online_map, cpumask_of_cpu(cpu)))
      		...
      
        * Other minor code optimizations (like using cpus_clear instead of
          CPU_MASK_NONE, etc.)
      
      Applies to linux-2.6.tip/master.
      Signed-off-by: NMike Travis <travis@sgi.com>
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      Acked-by: NIngo Molnar <mingo@elte.hu>
      e7986739
    • Y
      x86, sparseirq: move irq_desc according to smp_affinity, v7 · 48a1b10a
      Yinghai Lu 提交于
      Impact: improve NUMA handling by migrating irq_desc on smp_affinity changes
      
      if CONFIG_NUMA_MIGRATE_IRQ_DESC is set:
      
      -  make irq_desc to go with affinity aka irq_desc moving etc
      -  call move_irq_desc in irq_complete_move()
      -  legacy irq_desc is not moved, because they are allocated via static array
      
      for logical apic mode, need to add move_desc_in_progress_in_same_domain,
      otherwise it will not be moved ==> also could need two phases to get
      irq_desc moved.
      Signed-off-by: NYinghai Lu <yinghai@kernel.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      48a1b10a
    • M
      x86: fix build error with post-merge of tip/cpus4096 and rr-for-ingo/master. · c8cae544
      Mike Travis 提交于
      Ingo Molnar wrote:
      
      > allyes64 build failure:
      >
      > arch/x86/kernel/io_apic.c: In function ‘set_ir_ioapic_affinity_irq_desc’:
      > arch/x86/kernel/io_apic.c:2295: error: incompatible type for argument 2 of
      > ‘migrate_ioapic_irq_desc’
      > arch/x86/kernel/io_apic.c: In function ‘ir_set_msi_irq_affinity’:
      > arch/x86/kernel/io_apic.c:3205: error: incompatible type for argument 2 of
      > ‘set_extra_move_desc’
      > make[1]: *** wait: No child processes.  Stop.
      
      Here's a small patch to correct the build error with the post-merge tree.
      Built and boot-tested.  I'll will reset the follow on patches in my brand
      new git tree to accommodate this change.
      
      Fix two references in io_apic.c that were incorrect.
      Signed-off-by: NMike Travis <travis@sgi.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      c8cae544
  3. 13 12月, 2008 1 次提交
  4. 08 12月, 2008 4 次提交
  5. 23 11月, 2008 1 次提交
  6. 21 11月, 2008 1 次提交
    • M
      x86: Fix interrupt leak due to migration · 0ca4b6b0
      Matthew Wilcox 提交于
      When we migrate an interrupt from one CPU to another, we set the
      move_in_progress flag and clean up the vectors later once they're not
      being used.  If you're unlucky and call destroy_irq() before the vectors
      become un-used, the move_in_progress flag is never cleared, which causes
      the interrupt to become unusable.
      
      This was discovered by Jesse Brandeburg for whom it manifested as an
      MSI-X device refusing to use MSI-X mode when the driver was unloaded
      and reloaded repeatedly.
      Signed-off-by: NMatthew Wilcox <willy@linux.intel.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      0ca4b6b0
  7. 10 11月, 2008 1 次提交
  8. 06 11月, 2008 1 次提交
    • B
      x86: don't allow nr_irqs > NR_IRQS · c78d0cf2
      Ben Hutchings 提交于
      Impact: fix boot hang on 32-bit systems with more than 224 IO-APIC pins
      
      On some 32-bit systems with a lot of IO-APICs probe_nr_irqs() can
      return a value larger than NR_IRQS. This will lead to probe_irq_on()
      overrunning the irq_desc array.
      
      I hit this when running net-next-2.6 (close to 2.6.28-rc3) on a
      Supermicro dual Xeon system.  NR_IRQS is 224 but probe_nr_irqs() detects
      5 IOAPICs and returns 240.  Here are the log messages:
      
      Tue Nov  4 16:53:47 2008 ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0])
      Tue Nov  4 16:53:47 2008 IOAPIC[0]: apic_id 1, version 32, address 0xfec00000, GSI 0-23
      Tue Nov  4 16:53:47 2008 ACPI: IOAPIC (id[0x02] address[0xfec81000] gsi_base[24])
      Tue Nov  4 16:53:47 2008 IOAPIC[1]: apic_id 2, version 32, address 0xfec81000, GSI 24-47
      Tue Nov  4 16:53:47 2008 ACPI: IOAPIC (id[0x03] address[0xfec81400] gsi_base[48])
      Tue Nov  4 16:53:47 2008 IOAPIC[2]: apic_id 3, version 32, address 0xfec81400, GSI 48-71
      Tue Nov  4 16:53:47 2008 ACPI: IOAPIC (id[0x04] address[0xfec82000] gsi_base[72])
      Tue Nov  4 16:53:47 2008 IOAPIC[3]: apic_id 4, version 32, address 0xfec82000, GSI 72-95
      Tue Nov  4 16:53:47 2008 ACPI: IOAPIC (id[0x05] address[0xfec82400] gsi_base[96])
      Tue Nov  4 16:53:47 2008 IOAPIC[4]: apic_id 5, version 32, address 0xfec82400, GSI 96-119
      Tue Nov  4 16:53:47 2008 ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 high edge)
      Tue Nov  4 16:53:47 2008 ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
      Tue Nov  4 16:53:47 2008 Enabling APIC mode:  Flat.  Using 5 I/O APICs
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      Acked-by: NYinghai Lu <yhlu.kernel@gmail.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      c78d0cf2
  9. 16 10月, 2008 25 次提交