1. 02 2月, 2012 1 次提交
  2. 30 12月, 2011 1 次提交
    • S
      sparc32: enable different preemptions models · b2a1fa30
      Sam Ravnborg 提交于
      While chasing following warning from kconfig I noticed that the
      kconfig preemption model symbols were all dependent on sparc64.
      
      warning: (PREEMPT && DEBUG_ATOMIC_SLEEP) selects PREEMPT_COUNT which has unmet direct dependencies (SPARC64)
      
      >From arch/sparc/Kconfig:
      
              if SPARC64
              source "kernel/Kconfig.preempt"
              endif
      
      But looking a bit closer I see nothing obvious why
      sparc32 should not support the various preemption models.
      Drop the "if SPARC64" conditional to enable selection of
      preemption model on sparc32 too.
      
      Build-tested - but not run-time tested all three models.
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b2a1fa30
  3. 28 12月, 2011 1 次提交
    • S
      sparc32: support atomic64_t · aea1181b
      Sam Ravnborg 提交于
      There is no-one that really require atomic64_t support on sparc32.
      But several drivers fails to build without proper atomic64 support.
      And for an allyesconfig build for sparc32 this is annoying.
      
      Include the generic atomic64_t support for sparc32.
      This has a text footprint cost:
      
      $size vmlinux (before atomic64_t support)
         text    data     bss     dec     hex filename
      3578860  134260  108781 3821901  3a514d vmlinux
      
      $size vmlinux (after atomic64_t support)
         text    data     bss     dec     hex filename
      3579892  130684  108781 3819357  3a475d vmlinux
      
      text increase (3579892 - 3578860) = 1032 bytes
      
      data decreases - but I fail to explain why!
      I have rebuild twice to check my numbers.
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      aea1181b
  4. 09 12月, 2011 2 次提交
    • T
      memblock: Kill early_node_map[] · 0ee332c1
      Tejun Heo 提交于
      Now all ARCH_POPULATES_NODE_MAP archs select HAVE_MEBLOCK_NODE_MAP -
      there's no user of early_node_map[] left.  Kill early_node_map[] and
      replace ARCH_POPULATES_NODE_MAP with HAVE_MEMBLOCK_NODE_MAP.  Also,
      relocate for_each_mem_pfn_range() and helper from mm.h to memblock.h
      as page_alloc.c would no longer host an alternative implementation.
      
      This change is ultimately one to one mapping and shouldn't cause any
      observable difference; however, after the recent changes, there are
      some functions which now would fit memblock.c better than page_alloc.c
      and dependency on HAVE_MEMBLOCK_NODE_MAP instead of HAVE_MEMBLOCK
      doesn't make much sense on some of them.  Further cleanups for
      functions inside HAVE_MEMBLOCK_NODE_MAP in mm.h would be nice.
      
      -v2: Fix compile bug introduced by mis-spelling
       CONFIG_HAVE_MEMBLOCK_NODE_MAP to CONFIG_MEMBLOCK_HAVE_NODE_MAP in
       mmzone.h.  Reported by Stephen Rothwell.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: Stephen Rothwell <sfr@canb.auug.org.au>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Tony Luck <tony.luck@intel.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Chen Liqin <liqin.chen@sunplusct.com>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      0ee332c1
    • T
      sparc: Use HAVE_MEMBLOCK_NODE_MAP · 2a4814df
      Tejun Heo 提交于
      sparc doesn't access early_node_map[] directly and enabling
      HAVE_MEMBLOCK_NODE_MAP is trivial - replacing add_active_range() calls
      with memblock_set_node() and selecting HAVE_MEMBLOCK_NODE_MAP is
      enough.
      
      -v2: Use select in Kconfig instead as suggested by Sam Ravnborg.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Acked-by: N"David S. Miller" <davem@davemloft.net>
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Cc: sparclinux@vger.kernel.org
      2a4814df
  5. 04 12月, 2011 1 次提交
  6. 01 11月, 2011 1 次提交
  7. 16 8月, 2011 1 次提交
  8. 03 8月, 2011 1 次提交
  9. 26 7月, 2011 2 次提交
  10. 03 6月, 2011 5 次提交
  11. 27 5月, 2011 1 次提交
  12. 17 5月, 2011 1 次提交
    • D
      sparc32: implement SMP IPIs using the generic functions · d6d04819
      Daniel Hellstrom 提交于
      The current sparc32 SMP IPI generation is implemented the
      cross call function. The cross call function uses IRQ15 the
      NMI, this is has the effect that IPIs will interrupt IRQ
      critical areas and hang the system. Typically on/after
      spin_lock_irqsave calls can be aborted.
      
      The cross call functionality must still exist to flush
      cache/TLBS.
      
      This patch provides CPU models a custom way to implement
      generation of IPIs on the generic code's request. The
      typical approach is to generate an IRQ for each IPI case.
      
      After this patch each sparc32 SMP CPU model needs to
      implement IPIs in order to function properly.
      Signed-off-by: NDaniel Hellstrom <daniel@gaisler.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d6d04819
  13. 20 4月, 2011 1 次提交
    • S
      sparc32: genirq support · 6baa9b20
      Sam Ravnborg 提交于
      The conversion of sparc32 to genirq is based on original work done
      by David S. Miller.
      Daniel Hellstrom has helped in the conversion and implemented
      the shutdowm functionality.
      Marcel van Nies <morcles@gmail.com> has tested this on Sparc Station 20
      
      Test status:
      sun4c      - not tested
      sun4m,pci  - not tested
      sun4m,sbus - tested (Sparc Classic, Sparc Station 5, Sparc Station 20)
      sun4d      - not tested
      leon       - tested on various combinations of leon boards,
                   including SMP variants
      
      generic
         Introduce use of GENERIC_HARDIRQS and GENERIC_IRQ_SHOW
         Allocate 64 IRQs - which is enough even for SS2000
         Use a table of irq_bucket to maintain uses IRQs
            irq_bucket is also used to chain several irq's that
            must be called when the same intrrupt is asserted
         Use irq_link to link a interrupt source to the irq
         All plafforms must now supply their own build_device_irq method
         handler_irq rewriten to use generic irq support
      
      floppy
         Read FLOPPY_IRQ from platform device
         Use generic request_irq to register the floppy interrupt
         Rewrote sparc_floppy_irq to use the generic irq support
      
      pcic:
         Introduce irq_chip
         Store mask in chip_data for use in mask/unmask functions
         Add build_device_irq for pcic
         Use pcic_build_device_irq in pci_time_init
         allocate virtual irqs in pcic_fill_irq
      
      sun4c:
         Introduce irq_chip
         Store mask in chip_data for use in mask/unmask functions
         Add build_device_irq for sun4c
         Use sun4c_build_device_irq in sun4c_init_timers
      
      sun4m:
         Introduce irq_chip
         Introduce dedicated mask/unmask methods
         Introduce sun4m_handler_data that allow easy access to necessary
           data in the mask/unmask functions
         Add a helper method to enable profile_timer (used from smp)
         Added sun4m_build_device_irq
         Use sun4m_build_device_irq in sun4m_init_timers
      
         TODO:
            There is no replacement for smp_rotate that always scheduled
            next CPU as interrupt target upon an interrupt
      
      sun4d:
         Introduce irq_chip
         Introduce dedicated mask/unmask methods
         Introduce sun4d_handler_data that allow easy access to
         necessary data in mask/unmask fuctions
         Rewrote sun4d_handler_irq to use generic irq support
      
         TODO:
            The original implmentation of enable/disable had:
      
                if (irq < NR_IRQS)
                     return;
      
            The new implmentation does not distingush between SBUS and cpu
            interrupts.
            I am no sure what is right here. I assume we need to do
            something for the cpu interrupts.
      
            I have not succeeded booting my sun4d box (with or without this patch)
            and my understanding of this platfrom is limited.
            So I would be a bit suprised if this works.
      
      leon:
         Introduce irq_chip
         Store mask in chip_data for use in mask/unmask functions
         Add build_device_irq for leon
         Use leon_build_device_irq in leon_init_timers
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Acked-by: NDaniel Hellstrom <daniel@gaisler.com>
      Tested-by: NDaniel Hellstrom <daniel@gaisler.com>
      Tested-by: NMarcel van Nies <morcles@gmail.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6baa9b20
  14. 30 3月, 2011 1 次提交
  15. 29 3月, 2011 2 次提交
  16. 24 3月, 2011 1 次提交
  17. 17 3月, 2011 2 次提交
  18. 21 1月, 2011 2 次提交
  19. 27 10月, 2010 1 次提交
  20. 19 10月, 2010 1 次提交
    • P
      irq_work: Add generic hardirq context callbacks · e360adbe
      Peter Zijlstra 提交于
      Provide a mechanism that allows running code in IRQ context. It is
      most useful for NMI code that needs to interact with the rest of the
      system -- like wakeup a task to drain buffers.
      
      Perf currently has such a mechanism, so extract that and provide it as
      a generic feature, independent of perf so that others may also
      benefit.
      
      The IRQ context callback is generated through self-IPIs where
      possible, or on architectures like powerpc the decrementer (the
      built-in timer facility) is set to generate an interrupt immediately.
      
      Architectures that don't have anything like this get to do with a
      callback from the timer tick. These architectures can call
      irq_work_run() at the tail of any IRQ handlers that might enqueue such
      work (like the perf IRQ handler) to avoid undue latencies in
      processing the work.
      Signed-off-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
      Acked-by: NKyle McMartin <kyle@mcmartin.ca>
      Acked-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      [ various fixes ]
      Signed-off-by: NHuang Ying <ying.huang@intel.com>
      LKML-Reference: <1287036094.7768.291.camel@yhuang-dev>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e360adbe
  21. 11 10月, 2010 1 次提交
  22. 23 9月, 2010 2 次提交
  23. 20 9月, 2010 1 次提交
  24. 27 7月, 2010 1 次提交
  25. 14 7月, 2010 1 次提交
  26. 06 7月, 2010 2 次提交
  27. 28 5月, 2010 1 次提交
  28. 13 4月, 2010 2 次提交