1. 23 4月, 2011 2 次提交
  2. 29 3月, 2011 1 次提交
  3. 24 3月, 2011 3 次提交
  4. 11 3月, 2011 1 次提交
  5. 26 2月, 2011 1 次提交
    • T
      genirq: Prepare the handling of shared oneshot interrupts · b5faba21
      Thomas Gleixner 提交于
      For level type interrupts we need to track how many threads are on
      flight to avoid useless interrupt storms when not all thread handlers
      have finished yet. Keep track of the woken threads and only unmask
      when there are no more threads in flight.
      
      Yes, I'm lazy and using a bitfield. But not only because I'm lazy, the
      main reason is that it's way simpler than using a refcount. A refcount
      based solution would need to keep track of various things like
      crashing the irq thread, spurious interrupts coming in,
      disables/enables, free_irq() and some more. The bitfield keeps the
      tracking simple and makes things just work. It's also nicely confined
      to the thread code pathes and does not require additional checks all
      over the place.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      LKML-Reference: <20110223234956.388095876@linutronix.de>
      b5faba21
  6. 19 2月, 2011 5 次提交
    • T
      genirq: Add preflow handler support · 78129576
      Thomas Gleixner 提交于
      sparc64 needs to call a preflow handler on certain interrupts befor
      calling the action chain. Integrate it into handle_fasteoi_irq. Must
      be enabled via CONFIG_IRQ_FASTEOI_PREFLOW. No impact when disabled.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Cc: David S. Miller <davem@davemloft.net>
      78129576
    • T
      genirq: Remove desc->status when GENERIC_HARDIRQS_NO_COMPAT=y · a6967caf
      Thomas Gleixner 提交于
      If everything uses the right accessors, then enabling
      GENERIC_HARDIRQS_NO_COMPAT should just work. If not it will tell you.
      
      Don't be lazy and use the trick which I use in the core code!
      
      git grep status_use_accessors
      
      will unearth it in a split second. Offenders are tracked down and not
      slapped with stinking trouts. This time we use frozen shark for a
      better educational value.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      a6967caf
    • T
      genirq: Add state field to irq_data · 91c49917
      Thomas Gleixner 提交于
      Some chip implementations need to access certain status flags. With
      sparse irqs that requires a lookup of the irq descriptor. Add a state
      field which contains such flags.
      
      Name it in a way which will make coders happy to access it with the
      proper accessor functions. And it's easy to grep for.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      91c49917
    • T
      genirq: Add internal state field to irq_desc · dbec07ba
      Thomas Gleixner 提交于
      That field will contain internal state information which is not going
      to be exposed to anything outside the core code - except via accessor
      functions. I'm tired of everyone fiddling in irq_desc.status.
      
      core_internal_state__do_not_mess_with_it is clear enough, annoying to
      type and easy to grep for. Offenders will be tracked down and slapped
      with stinking trouts.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      dbec07ba
    • T
      genirq: Namespace cleanup · a0cd9ca2
      Thomas Gleixner 提交于
      The irq namespace has become quite convoluted. My bad.  Clean it up
      and deprecate the old functions. All new functions follow the scheme:
      
      irq number based:
          irq_set/get/xxx/_xxx(unsigned int irq, ...)
      
      irq_data based:
      	 irq_data_set/get/xxx/_xxx(struct irq_data *d, ....)
      
      irq_desc based:
      	 irq_desc_get_xxx(struct irq_desc *desc)
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      a0cd9ca2
  7. 23 1月, 2011 1 次提交
    • B
      genirq: Add IRQ affinity notifiers · cd7eab44
      Ben Hutchings 提交于
      When initiating I/O on a multiqueue and multi-IRQ device, we may want
      to select a queue for which the response will be handled on the same
      or a nearby CPU.  This requires a reverse-map of IRQ affinity.  Add a
      notification mechanism to support this.
      
      This is based closely on work by Thomas Gleixner <tglx@linutronix.de>.
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      Cc: linux-net-drivers@solarflare.com
      Cc: Tom Herbert <therbert@google.com>
      Cc: David Miller <davem@davemloft.net>
      LKML-Reference: <1295470904.11126.84.camel@bwh-desktop>
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      cd7eab44
  8. 21 1月, 2011 1 次提交
  9. 14 1月, 2011 1 次提交
    • E
      irq: use per_cpu kstat_irqs · 6c9ae009
      Eric Dumazet 提交于
      Use modern per_cpu API to increment {soft|hard}irq counters, and use
      per_cpu allocation for (struct irq_desc)->kstats_irq instead of an array.
      
      This gives better SMP/NUMA locality and saves few instructions per irq.
      
      With small nr_cpuids values (8 for example), kstats_irq was a small array
      (less than L1_CACHE_BYTES), potentially source of false sharing.
      
      In the !CONFIG_SPARSE_IRQ case, remove the huge, NUMA/cache unfriendly
      kstat_irqs_all[NR_IRQS][NR_CPUS] array.
      
      Note: we still populate kstats_irq for all possible irqs in
      early_irq_init().  We probably could use on-demand allocations.  (Code
      included in alloc_descs()).  Problem is not all IRQS are used with a prior
      alloc_descs() call.
      
      kstat_irqs_this_cpu() is not used anymore, remove it.
      Signed-off-by: NEric Dumazet <eric.dumazet@gmail.com>
      Reviewed-by: NChristoph Lameter <cl@linux.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      6c9ae009
  10. 12 10月, 2010 3 次提交