1. 05 3月, 2014 1 次提交
    • T
      m68k: Do not rely on magic indirect includes · abcfc543
      Thomas Gleixner 提交于
      commit: 8f945a33 (genirq: Move kstat_incr_irqs_this_cpu() to core)
      unearthed the following:
      
      arch/m68k/kernel/ints.c:34:15: error: variable 'auto_irq_chip' has initializer but incomplete type
      arch/m68k/kernel/ints.c:35:2: error: unknown field 'name' specified in initializer
      arch/m68k/kernel/ints.c:35:2: warning: excess elements in struct initializer [enabled by default]
      
      The reason is that this file requires linux/irq.h and magically
      pulled that in via linux/kernel_stat.h
      
      The commit above got rid of the pointless include of linux/irq.h in
      linux/kernel_stat.h and therefor broke the build.
      
      Include linux/irq.h
      
      Reported-by: fengguang.wu@intel.com
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      abcfc543
  2. 14 11月, 2013 1 次提交
    • T
      m68k: Simplify low level interrupt handling code · 09f90f66
      Thomas Gleixner 提交于
      The low level interrupt entry code of m68k contains the following:
      
          add_preempt_count(HARDIRQ_OFFSET);
      
          do_IRQ();
      	irq_enter();
      	    add_preempt_count(HARDIRQ_OFFSET);
      	handle_interrupt();    
      	irq_exit();    
      	    sub_preempt_count(HARDIRQ_OFFSET);
      	    if (in_interrupt())
             	       return; <---- On m68k always taken!
      	    if (local_softirq_pending())
             	       do_softirq();
      
          sub_preempt_count(HARDIRQ_OFFSET);
          if (in_hardirq())
             return;
          if (status_on_stack_has_interrupt_priority_mask > 0)
             return;
          if (local_softirq_pending())
             do_softirq();
      
          ret_from_exception:
      	if (interrupted_context_is_kernel)
      	   return:
      	....
      
      I tried to find a proper explanation for this, but the changelog is
      sparse and there are no mails explaining it further. But obviously
      this relates to the interrupt priority levels of the m68k and tries to
      be extra clever with nested interrupts. Though this cleverness just
      adds code bloat to the interrupt hotpath.
      
      For the common case of non nested interrupts the code runs through two
      extra conditionals to the only important one, which checks whether the
      return is to kernel or user space.
      
      For the nested case the checks for in_hardirq() and the priority mask
      value on stack catch only the case where the nested interrupt happens
      inside the hard irq context of the first interrupt. If the nested
      interrupt happens while the first interrupt handles soft interrupts,
      then these extra checks buy nothing. The nested interrupt will fall
      through to the final kernel/user space return check at
      ret_from_exception.
      
      Changing the code flow in the following way:
      
          do_IRQ();
      	irq_enter();
      	    add_preempt_count(HARDIRQ_OFFSET);
      	handle_interrupt();    
      	irq_exit();    
      	    sub_preempt_count(HARDIRQ_OFFSET);
      	    if (in_interrupt())
             	       return;
      	    if (local_softirq_pending())
             	       do_softirq();
      
          ret_from_exception:
      	if (interrupted_context_is_kernel)
      	   return:
      
      makes the region protected by the hardirq count slightly smaller and
      the softirq handling is invoked with a minimal deeper stack. But
      otherwise it's completely functional equivalent and saves 104 bytes of
      text in arch/m68k/kernel/entry.o.
      
      This modification allows us further to get rid of the limitations
      which m68k puts on the preempt_count layout, so we can make the
      preempt count bits completely generic.
      Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
      Tested-by: NMichael Schmitz <schmitz@biophys.uni-duesseldorf.de>
      Acked-by: NGeert Uytterhoeven <geert@linux-m68k.org>
      Cc: Linux/m68k <linux-m68k@vger.kernel.org>
      Cc: Andreas Schwab <schwab@linux-m68k.org>
      Link: http://lkml.kernel.org/r/alpine.DEB.2.02.1311112052360.30673@ionos.tec.linutronix.de
      09f90f66
  3. 25 6月, 2013 1 次提交
  4. 29 3月, 2012 1 次提交
  5. 09 11月, 2011 11 次提交
  6. 16 11月, 2008 1 次提交
  7. 16 10月, 2008 3 次提交
  8. 15 10月, 2008 1 次提交
  9. 28 4月, 2008 1 次提交
  10. 23 7月, 2007 1 次提交
  11. 08 5月, 2007 1 次提交
  12. 20 2月, 2007 1 次提交
    • A
      [PATCH] Declare init_irq_proc before we use it. · 6168a702
      Andrew Morton 提交于
      powerpc gets:
      
      init/main.c: In function `do_basic_setup':
      init/main.c:714: warning: implicit declaration of function `init_irq_proc'
      
      but we cannot include linux/irq.h in generic code.
      
      Fix it by moving the declaration into linux/interrupt.h instead.
      
      And make sure all code that defines init_irq_proc() is including
      linux/interrupt.h.
      
      And nuke an ifdef-in-C
      
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      6168a702
  13. 10 10月, 2006 1 次提交
  14. 09 10月, 2006 1 次提交
    • D
      IRQ: Use the new typedef for interrupt handler function pointers · 40220c1a
      David Howells 提交于
      Use the new typedef for interrupt handler function pointers rather than
      actually spelling out the full thing each time.  This was scripted with the
      following small shell script:
      
      #!/bin/sh
      egrep -nHrl -e 'irqreturn_t[ 	]*[(][*]' $* |
      while read i
      do
          echo $i
          perl -pi -e 's/irqreturn_t\s*[(]\s*[*]\s*([_a-zA-Z0-9]*)\s*[)]\s*[(]\s*int\s*,\s*void\s*[*]\s*[)]/irq_handler_t \1/g' $i || exit $?
      done
      Signed-Off-By: NDavid Howells <dhowells@redhat.com>
      40220c1a
  15. 08 10月, 2006 1 次提交
    • A
      [PATCH] m68k pt_regs fixes · 2850bc27
      Al Viro 提交于
      m68k_handle_int() split in two functions: __m68k_handle_int() takes
      pt_regs * and does set_irq_regs(); m68k_handle_int() doesn't get pt_regs
      *.
      
      Places where we used to call m68k_handle_int() recursively with the same
      pt_regs have simply lost the second argument, the rest is switched to
      __m68k_handle_int().
      
      The rest of patch is just dropping pt_regs * where needed.
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      2850bc27
  16. 03 7月, 2006 1 次提交
  17. 01 7月, 2006 1 次提交
  18. 26 6月, 2006 4 次提交
  19. 23 6月, 2006 1 次提交
  20. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4