An error occurred fetching the project authors.
  1. 17 Mar, 2009 2 commits
    • Suresh Siddha's avatar
      x86, x2apic: enable fault handling for intr-remapping · 9d783ba0
      Suresh Siddha authored
      Impact: interface augmentation (not yet used)
      
      Enable fault handling flow for intr-remapping aswell. Fault handling
      code now shared by both dma-remapping and intr-remapping.
      Signed-off-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
      Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
      9d783ba0
    • Suresh Siddha's avatar
      x86, x2apic: fix lock ordering during IRQ migration · 4c5502b1
      Suresh Siddha authored
      Impact: fix potential deadlock on x2apic
      
      fix "hard-safe -> hard-unsafe lock order detected" with irq_2_ir_lock
      
      On x2apic enabled system:
         [ INFO: hard-safe -> hard-unsafe lock order detected ]
         2.6.27-03151-g4480f15b #1
         ------------------------------------------------------
         swapper/1 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
          (irq_2_ir_lock){--..}, at: [<ffffffff8038ebc0>] get_irte+0x2f/0x95
      
         and this task is already holding:
          (&irq_desc_lock_class){+...}, at: [<ffffffff802649ed>] setup_irq+0x67/0x281
         which would create a new lock dependency:
          (&irq_desc_lock_class){+...} -> (irq_2_ir_lock){--..}
      
         but this new dependency connects a hard-irq-safe lock:
          (&irq_desc_lock_class){+...}
         ... which became hard-irq-safe at:
           [<ffffffffffffffff>] 0xffffffffffffffff
      
         to a hard-irq-unsafe lock:
          (irq_2_ir_lock){--..}
         ... which became hard-irq-unsafe at:
         ...  [<ffffffff802547b5>] __lock_acquire+0x571/0x706
           [<ffffffff8025499f>] lock_acquire+0x55/0x71
           [<ffffffff8062f2c4>] _spin_lock+0x2c/0x38
           [<ffffffff8038ee50>] alloc_irte+0x8a/0x14b
           [<ffffffff8021f733>] setup_IO_APIC_irq+0x119/0x30e
           [<ffffffff8090860e>] setup_IO_APIC+0x146/0x6e5
           [<ffffffff809058fc>] native_smp_prepare_cpus+0x24e/0x2e9
           [<ffffffff808f982c>] kernel_init+0x5a/0x176
           [<ffffffff8020c289>] child_rip+0xa/0x11
           [<ffffffffffffffff>] 0xffffffffffffffff
      
      Fix this theoretical lock order issue by using spin_lock_irqsave() instead of
      spin_lock()
      Signed-off-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
      Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
      4c5502b1
  2. 09 Feb, 2009 1 commit
  3. 07 Jan, 2009 1 commit
  4. 16 Dec, 2008 1 commit
  5. 08 Dec, 2008 1 commit
    • Yinghai Lu's avatar
      sparse irq_desc[] array: core kernel and x86 changes · 0b8f1efa
      Yinghai Lu authored
      Impact: new feature
      
      Problem on distro kernels: irq_desc[NR_IRQS] takes megabytes of RAM with
      NR_CPUS set to large values. The goal is to be able to scale up to much
      larger NR_IRQS value without impacting the (important) common case.
      
      To solve this, we generalize irq_desc[NR_IRQS] to an (optional) array of
      irq_desc pointers.
      
      When CONFIG_SPARSE_IRQ=y is used, we use kzalloc_node to get irq_desc,
      this also makes the IRQ descriptors NUMA-local (to the site that calls
      request_irq()).
      
      This gets rid of the irq_cfg[] static array on x86 as well: irq_cfg now
      uses desc->chip_data for x86 to store irq_cfg.
      Signed-off-by: default avatarYinghai Lu <yinghai@kernel.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      0b8f1efa
  6. 16 Oct, 2008 7 commits
  7. 15 Oct, 2008 1 commit
  8. 12 Jul, 2008 5 commits
    • Suresh Siddha's avatar
      x64, x2apic/intr-remap: MSI and MSI-X support for interrupt remapping infrastructure · 75c46fa6
      Suresh Siddha authored
      MSI and MSI-X support for interrupt remapping infrastructure.
      
      MSI address register will be programmed with interrupt-remapping table
      entry(IRTE) index and the IRTE will contain information about the vector,
      cpu destination, etc.
      
      For MSI-X, all the IRTE's will be consecutively allocated in the table,
      and the address registers will contain the starting index to the block
      and the data register will contain the subindex with in that block.
      
      This also introduces a new irq_chip for cleaner irq migration (in the process
      context as opposed to the current irq migration in the context of an interrupt.
      interrupt-remapping infrastructure will help us achieve this).
      
      As MSI is edge triggered, irq migration is a simple atomic update(of vector
      and cpu destination) of IRTE and flushing the hardware cache.
      Signed-off-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
      Cc: akpm@linux-foundation.org
      Cc: arjan@linux.intel.com
      Cc: andi@firstfloor.org
      Cc: ebiederm@xmission.com
      Cc: jbarnes@virtuousgeek.org
      Cc: steiner@sgi.com
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      75c46fa6
    • Suresh Siddha's avatar
      x64, x2apic/intr-remap: IO-APIC support for interrupt-remapping · 89027d35
      Suresh Siddha authored
      IO-APIC support in the presence of interrupt-remapping infrastructure.
      
      IO-APIC RTE will be programmed with interrupt-remapping table entry(IRTE)
      index and the IRTE will contain information about the vector, cpu destination,
      trigger mode etc, which traditionally was present in the IO-APIC RTE.
      
      Introduce a new irq_chip for cleaner irq migration (in the process
      context as opposed to the current irq migration in the context of an interrupt.
      interrupt-remapping infrastructure will help us achieve this cleanly).
      
      For edge triggered, irq migration is a simple atomic update(of vector
      and cpu destination) of IRTE and flush the hardware cache.
      
      For level triggered, we need to modify the io-apic RTE aswell with the update
      vector information, along with modifying IRTE with vector and cpu destination.
      So irq migration for level triggered is little  bit more complex compared to
      edge triggered migration. But the good news is, we use the same algorithm
      for level triggered migration as we have today, only difference being,
      we now initiate the irq migration from process context instead of the
      interrupt context.
      
      In future, when we do a directed EOI (combined with cpu EOI broadcast
      suppression) to the IO-APIC, level triggered irq migration will also be
      as simple as edge triggered migration and we can do the irq migration
      with a simple atomic update to IO-APIC RTE.
      
      TBD: some tests/changes needed in the presence of fixup_irqs() for
      level triggered irq migration.
      Signed-off-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
      Cc: akpm@linux-foundation.org
      Cc: arjan@linux.intel.com
      Cc: andi@firstfloor.org
      Cc: ebiederm@xmission.com
      Cc: jbarnes@virtuousgeek.org
      Cc: steiner@sgi.com
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      89027d35
    • Suresh Siddha's avatar
      x64, x2apic/intr-remap: routines managing Interrupt remapping table entries. · b6fcb33a
      Suresh Siddha authored
      Routines handling the management of interrupt remapping table entries.
      Signed-off-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
      Cc: akpm@linux-foundation.org
      Cc: arjan@linux.intel.com
      Cc: andi@firstfloor.org
      Cc: ebiederm@xmission.com
      Cc: jbarnes@virtuousgeek.org
      Cc: steiner@sgi.com
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      b6fcb33a
    • Suresh Siddha's avatar
      x64, x2apic/intr-remap: Interrupt remapping infrastructure · 2ae21010
      Suresh Siddha authored
      Interrupt remapping (part of Intel Virtualization Tech for directed I/O)
      infrastructure.
      Signed-off-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
      Cc: akpm@linux-foundation.org
      Cc: arjan@linux.intel.com
      Cc: andi@firstfloor.org
      Cc: ebiederm@xmission.com
      Cc: jbarnes@virtuousgeek.org
      Cc: steiner@sgi.com
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      2ae21010
    • Suresh Siddha's avatar
      x64, x2apic/intr-remap: parse ioapic scope under vt-d structures · ad3ad3f6
      Suresh Siddha authored
      Parse the vt-d device scope structures to find the mapping between IO-APICs
      and the interrupt remapping hardware units.
      
      This will be used later for enabling Interrupt-remapping for IOAPIC devices.
      Signed-off-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
      Cc: akpm@linux-foundation.org
      Cc: arjan@linux.intel.com
      Cc: andi@firstfloor.org
      Cc: ebiederm@xmission.com
      Cc: jbarnes@virtuousgeek.org
      Cc: steiner@sgi.com
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      ad3ad3f6