1. 08 5月, 2013 2 次提交
    • H
      parisc: implement irq stacks · 200c8804
      Helge Deller 提交于
      Default kernel stack size on parisc is 16k.  During tests we found that the
      kernel stack can easily grow beyond 13k, which leaves 3k left for irq
      processing.
      
      This patch adds the possibility to activate an additional stack of 16k per CPU
      which is being used during irq processing.  This implementation does not yet
      uses this irq stack for the irq bh handler.
      
      The assembler code for call_on_stack was heavily cleaned up by John
      David Anglin.
      
      CC: John David Anglin <dave.anglin@bell.net>
      Signed-off-by: NHelge Deller <deller@gmx.de>
      200c8804
    • H
      parisc: add kernel stack overflow check · 9372450c
      Helge Deller 提交于
      Add the CONFIG_DEBUG_STACKOVERFLOW config option to enable checks to
      detect kernel stack overflows.
      
      Stack overflows can not be detected reliable since we do not want to
      introduce too much overhead.
      
      Instead, during irq processing in do_cpu_irq_mask() we check kernel
      stack usage of the interrupted kernel process. Kernel threads can be
      easily detected by checking the value of space register 7 (sr7) which
      is zero when running inside the kernel.
      
      Since THREAD_SIZE is 16k and PAGE_SIZE is 4k, reduce the alignment of
      the init thread to the lower value (PAGE_SIZE) in the kernel
      vmlinux.ld.S linker script.
      Signed-off-by: NHelge Deller <deller@gmx.de>
      9372450c
  2. 21 2月, 2013 1 次提交
    • P
      parisc: remove IRQF_DISABLED · b54cb233
      Peter Zijlstra 提交于
      People are playing odd games with IRQF_DISABLED, remove it.
      
      Its not reliable, since shared interrupt lines could disable it for you,
      and its possible and allowed for archs to disable IRQs to limit IRQ nesting.
      
      Therefore, simply mandate that _ALL_ IRQ handlers are run with IRQs disabled.
      
      [ This _should_ not break anything, since we've mandated that IRQ handlers
        _must_ be able to deal with this for a _long_ time ]
      
      IRQ handlers should be fast, no if buts and any other exceptions. We also have
      plenty instrumentation to find any offending IRQ latency sources.
      Signed-off-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
      Acked-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NHelge Deller <deller@gmx.de>
      b54cb233
  3. 08 1月, 2013 1 次提交
  4. 29 3月, 2011 3 次提交
  5. 11 2月, 2011 1 次提交
  6. 10 2月, 2011 1 次提交
  7. 05 12月, 2010 2 次提交
  8. 14 10月, 2010 4 次提交
  9. 16 12月, 2009 1 次提交
  10. 15 12月, 2009 1 次提交
  11. 28 9月, 2009 1 次提交
  12. 03 7月, 2009 2 次提交
  13. 28 4月, 2009 1 次提交
    • Y
      irq: change ->set_affinity() to return status · d5dedd45
      Yinghai Lu 提交于
      according to Ingo, change set_affinity() in irq_chip should return int,
      because that way we can handle failure cases in a much cleaner way, in
      the genirq layer.
      
      v2: fix two typos
      
      [ Impact: extend API ]
      Signed-off-by: NYinghai Lu <yinghai@kernel.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Suresh Siddha <suresh.b.siddha@intel.com>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: linux-arch@vger.kernel.org
      LKML-Reference: <49F654E9.4070809@kernel.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      d5dedd45
  14. 16 3月, 2009 1 次提交
  15. 13 3月, 2009 3 次提交
  16. 13 1月, 2009 1 次提交
  17. 11 1月, 2009 1 次提交
    • Y
      sparseirq: use kstat_irqs_cpu instead · dee4102a
      Yinghai Lu 提交于
      Impact: build fix
      
      Ingo Molnar wrote:
      
      > tip/arch/blackfin/kernel/irqchip.c: In function 'show_interrupts':
      > tip/arch/blackfin/kernel/irqchip.c:85: error: 'struct kernel_stat' has no member named 'irqs'
      > make[2]: *** [arch/blackfin/kernel/irqchip.o] Error 1
      > make[2]: *** Waiting for unfinished jobs....
      >
      
      So could move kstat_irqs array to irq_desc struct.
      
      (s390, m68k, sparc) are not touched yet, because they don't support genirq
      Signed-off-by: NYinghai Lu <yinghai@kernel.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      dee4102a
  18. 06 1月, 2009 2 次提交
  19. 13 12月, 2008 1 次提交
  20. 07 12月, 2007 1 次提交
  21. 12 6月, 2007 1 次提交
    • G
      [PARISC] remove global_ack_eiem · 462b529f
      Grant Grundler 提交于
      Kudos to Thibaut Varene for spotting the (mis)use of appropriately named
      global_ack_eiem. This took a long time to figure out and both insight
      from myself, Kyle McMartin, and James Bottomley were required to narrow
      down which bit of code could have this race condition.
      
      The symptom was interrupts stopped getting delivered while some workload
      was generating IO interrupts on two different CPUs. One of the interrupt
      sources would get masked off and stay unmasked. Problem was global_ack_eiem
      was accessed with read/modified/write sequence and not protected by
      a spinlock.
      
      PA-RISC doesn't need a global ack flag though. External Interrupts
      are _always_ delivered to a single CPU (except for "global broadcast
      interrupt" which AFAIK currently is not used.) So we don't have to worry
      about any given IRQ vector getting delivered to more than one CPU.
      
      Tested on a500 and rp34xx boxen. rsync to/from gsyprf11 (a500)
      would lock up the box since NIC (tg3) interrupt and SCSI (sym2)
      were on "opposite" CPUs (2 CPU system). Put them on the same CPU
      or apply this patch and 10GB of data would rsync completely.
      
      Please apply the following critical patch.
      
      thanks,
      grant
      Signed-off-by: NGrant Grundler <grundler@parisc-linux.org>
      Acked-by: NThibaut VARENE <T-Bone@parisc-linux.org>
      Signed-off-by: NKyle McMartin <kyle@parisc-linux.org>
      462b529f
  22. 09 5月, 2007 1 次提交
  23. 17 2月, 2007 1 次提交
  24. 07 10月, 2006 2 次提交
  25. 04 10月, 2006 2 次提交
  26. 03 7月, 2006 1 次提交
  27. 01 7月, 2006 1 次提交