1. 15 5月, 2012 3 次提交
  2. 14 5月, 2012 1 次提交
    • D
      sparc32: Move cache and TLB flushes over to method ops. · 5d83d666
      David S. Miller 提交于
      This eliminated most of the remaining users of btfixup.
      
      There are some complications because of the special cases we
      have for sun4d, leon, and some flavors of viking.
      
      It was found that there are no cases where a flush_page_for_dma
      method was not hooked up to something, so the "noflush" iommu
      methods were removed.
      
      Add some documentation to the viking_sun4d_smp_ops to describe exactly
      the hardware bug which causes us to need special TLB flushing on
      sun4d.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5d83d666
  3. 16 4月, 2012 1 次提交
    • T
      sparc32: generic clockevent support · 62f08283
      Tkhai Kirill 提交于
      The kernel uses l14 timers as clockevents. l10 timer is used
      as clocksource if platform master_l10_counter isn't constantly
      zero. The clocksource is continuous, so it's possible to use
      high resolution timers. l10 timer is also used as clockevent
      on UP configurations.
      
      This realization is for sun4m, sun4d, sun4c, microsparc-IIep
      and LEON platforms. The appropriate LEON changes was made by
      Konrad Eisele.
      
      In case of sun4m's oneshot mode, profile irq is zeroed in
      smp4m_percpu_timer_interrupt(). It is maybe
      needless (double, triple etc overflow does nothing).
      
      sun4d is able to have oneshot mode too, but I haven't
      any way to test it. So code of its percpu timer handler
      is made as much equal to the current code as possible.
      
      The patch is tested on sun4m box in SMP mode by me,
      and tested by Konrad on leon in up mode (leon smp
      is broken atm - due to other reasons).
      Signed-off-by: NTkhai Kirill <tkhai@yandex.ru>
      Tested-by: Konrad Eisele <konrad@gaisler.com> [leon up]
      [sam: revised patch to provide generic support for leon]
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      62f08283
  4. 31 3月, 2012 1 次提交
  5. 17 5月, 2011 2 次提交
    • K
      sparc: convert old cpumask API into new one · fb1fece5
      KOSAKI Motohiro 提交于
      Adapt new API. Almost change is trivial, most important change are to
      remove following like =operator.
      
       cpumask_t cpu_mask = *mm_cpumask(mm);
       cpus_allowed = current->cpus_allowed;
      
      Because cpumask_var_t is =operator unsafe. These usage might prevent
      kernel core improvement.
      
      No functional change.
      Signed-off-by: NKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      fb1fece5
    • D
      sparc32, sun4m: Implemented SMP IPIs support for SUN4M machines · ecbc42b7
      Daniel Hellstrom 提交于
      Implement the three IPIs (resched, single and cpu-mask) generation
      and interrupt handler catch. The sun4m has 15 soft-IRQs and three
      of them is used with this patch, the three IPIs was previously
      implemented with the cross-call IRQ15 which does not work with
      locking routines such as spinlocks because IRQ15 is NMI, it may
      cause deadlock.
      
      The IRQ trap handler code assumes (in the same spritit as the old
      it seems) that hard interrupts will be generated until handled
      (level), when a IRQ happens the IRQ pending register is checked
      for pending soft-IRQs. When both hard and soft IRQ happens at the
      same time only soft-IRQs are handled.
      
      The old code implemented a soft-IRQ traphandler at IRQ14 which
      called smp_reschedule_irq which in turn called set_need_resched.
      It seems to be an old relic and is replaced with the interrupt
      traphander exit code RESTORE_ALL, it calls schedule() when
      appropriate.
      Signed-off-by: NDaniel Hellstrom <daniel@gaisler.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ecbc42b7
  6. 22 4月, 2011 1 次提交
    • S
      sparc32: probe for cpu info only during startup · 9c2853af
      Sam Ravnborg 提交于
      We did a cpu_probe() call each time a CPU got online - which
      only effect was to save latest CPU/FPU info for use by show_cpuinfo().
      Use same setup as for sparc64 where we probe for this info during startup,
      and only once.
      
      This allowed us to annotate a few functions __init which again
      fixed the following section mismatch warnings:
      
      WARNING: vmlinux.o(.text+0x65f0): Section mismatch in reference from the function set_cpu_and_fpu() to the (unknown reference) .init.rodata:(unknown)
      WARNING: vmlinux.o(.text+0x65f8): Section mismatch in reference from the function set_cpu_and_fpu() to the (unknown reference) .init.rodata:(unknown)
      WARNING: vmlinux.o(.text+0x664c): Section mismatch in reference from the function set_cpu_and_fpu() to the variable .init.rodata:manufacturer_info
      WARNING: vmlinux.o(.text+0x6650): Section mismatch in reference from the function set_cpu_and_fpu() to the variable .init.rodata:manufacturer_info
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9c2853af
  7. 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
  8. 17 3月, 2011 1 次提交
  9. 19 8月, 2009 1 次提交
    • D
      sparc32: Kill trap table freeing code. · a9919646
      David S. Miller 提交于
      Normally, srmmu uses different trap table register values to allow
      determination of the cpu we're on.  All of the trap tables have
      identical content, they just sit at different offsets from the first
      trap table, and the offset shifted down and masked out determines
      the cpu we are on.
      
      The code tries to free them up when they aren't actually used
      (don't have all 4 cpus, we're on sun4d, etc.) but that causes
      problems.
      
      For one thing it triggers false positives in the DMA debugging
      code.  And fixing that up while preserving this relative offset
      thing isn't trivial.
      
      So just kill the freeing code, it costs us at most 3 pages, big
      deal...
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a9919646
  10. 16 3月, 2009 2 次提交
  11. 09 1月, 2009 1 次提交
  12. 01 12月, 2008 1 次提交
  13. 13 10月, 2008 1 次提交
    • R
      sparc32: fix build errors · 4245e59d
      Robert Reif 提交于
      arch/sparc/kernel/sun4d_smp.c: In function ‘smp4d_callin’:
      arch/sparc/kernel/sun4d_smp.c:101: error: implicit declaration of function ‘notify_cpu_starting’
      arch/sparc/kernel/sun4m_smp.c: In function ‘smp4m_callin’:
      arch/sparc/kernel/sun4m_smp.c:74: error: implicit declaration of function ‘notify_cpu_starting’
      Signed-off-by: NRobert Reif <reif@earthlink.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4245e59d
  14. 20 9月, 2008 1 次提交
  15. 09 9月, 2008 1 次提交
    • M
      kernel/cpu.c: create a CPU_STARTING cpu_chain notifier · e545a614
      Manfred Spraul 提交于
      Right now, there is no notifier that is called on a new cpu, before the new
      cpu begins processing interrupts/softirqs.
      Various kernel function would need that notification, e.g. kvm works around
      by calling smp_call_function_single(), rcu polls cpu_online_map.
      
      The patch adds a CPU_STARTING notification. It also adds a helper function
      that sends the message to all cpu_chain handlers.
      
      Tested on x86-64.
      All other archs are untested. Especially on sparc, I'm not sure if I got
      it right.
      Signed-off-by: NManfred Spraul <manfred@colorfullife.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e545a614
  16. 28 8月, 2008 1 次提交
  17. 18 7月, 2008 1 次提交
    • A
      sparc/kernel/: possible cleanups · c61c65cd
      Adrian Bunk 提交于
      This patch contains the following possible cleanups:
      - make the following needlessly global code static:
        - apc.c: apc_swift_idle()
        - ebus.c: ebus_blacklist_irq()
        - ebus.c: fill_ebus_child()
        - ebus.c: fill_ebus_device()
        - entry.S: syscall_is_too_hard
        - etra: tsetup_sun4c_stackchk
        - head.S: cputyp
        - head.S: prom_vector_p
        - idprom.c: Sun_Machines[]
        - ioport.c: _sparc_find_resource()
        - ioport.c: create_proc_read_entry()
        - irq.c: struct sparc_irq[]
        - rtrap.S: sun4c_rett_stackchk
        - setup.c: prom_sync_me()
        - setup.c: boot_flags
        - sun4c_irq.c: sun4c_sbint_to_irq()
        - sun4d_irq.c: sbus_tid[]
        - sun4d_irq.c: struct sbus_actions
        - sun4d_irq.c: sun4d_sbint_to_irq()
        - sun4m_irq.c: sun4m_sbint_to_irq()
        - sun4m_irq.c: sun4m_get_irqmask()
        - sun4m_irq.c: sun4m_timers
        - sun4m_smp.c: smp4m_cross_call()
        - sun4m_smp.c: smp4m_blackbox_id()
        - sun4m_smp.c: smp4m_blackbox_current()
        - time.c: sp_clock_typ
        - time.c: sbus_time_init()
        - traps.c: instruction_dump()
        - wof.S: spwin_sun4c_stackchk
        - wuf.S: sun4c_fwin_stackchk
      - #if 0 the following unused code:
        - process.c: sparc_backtrace_lock
        - process.c: __show_backtrace()
        - process.c: show_backtrace()
        - process.c: smp_show_backtrace_all_cpus()
      - remove the following unused code:
        - entry.S: __handle_exception
        - smp.c: smp_num_cpus
        - smp.c: smp_activated
        - smp.c: __cpu_number_map[]
        - smp.c: __cpu_logical_map[]
        - smp.c: bitops_spinlock
        - traps.c: trap_curbuf
        - traps.c: trapbuf[]
        - traps.c: linux_smp_still_initting
        - traps.c: thiscpus_tbr
        - traps.c: thiscpus_mid
      Signed-off-by: NAdrian Bunk <bunk@kernel.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c61c65cd
  18. 29 4月, 2008 1 次提交
  19. 07 2月, 2008 1 次提交
    • A
      calibrate_delay() must be __cpuinit · 6c81c32f
      Adrian Bunk 提交于
      calibrate_delay() must be __cpuinit, not __{dev,}init.
      
      I've verified that this is correct for all users.
      
      While doing the latter, I also did the following cleanups:
      - remove pointless additional prototypes in C files
      - ensure all users #include <linux/delay.h>
      
      This fixes the following section mismatches with CONFIG_HOTPLUG=n,
      CONFIG_HOTPLUG_CPU=y:
      
      WARNING: vmlinux.o(.text+0x1128d): Section mismatch: reference to .init.text.1:calibrate_delay (between 'check_cx686_slop' and 'set_cx86_reorder')
      WARNING: vmlinux.o(.text+0x25102): Section mismatch: reference to .init.text.1:calibrate_delay (between 'smp_callin' and 'cpu_coregroup_map')
      Signed-off-by: NAdrian Bunk <bunk@kernel.org>
      Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
      Cc: Richard Henderson <rth@twiddle.net>
      Cc: "Luck, Tony" <tony.luck@intel.com>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Christian Zankel <chris@zankel.net>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      6c81c32f
  20. 22 7月, 2007 1 次提交
  21. 09 5月, 2007 1 次提交
  22. 07 5月, 2007 1 次提交
  23. 09 10月, 2006 1 次提交
  24. 27 8月, 2006 1 次提交
  25. 20 6月, 2006 1 次提交
  26. 24 3月, 2006 1 次提交
    • B
      [SPARC]: Try to start getting SMP back into shape. · a54123e2
      Bob Breuer 提交于
      Todo items:
       - IRQ_INPROGRESS flag - use sparc64 irq buckets, or generic irq_desc?
       - sun4d
       - re-indent large chunks of sun4m_smp.c
       - some places assume sequential cpu numbering (i.e. 0,1 instead of 0,2)
      
      Last I checked (with 2.6.14), random programs segfault with dual
      HyperSPARC.  And with SuperSPARC II's, it seems stable but will
      eventually die from a write lock error (wrong lock owner or something).
      
      I haven't tried the HyperSPARC + highmem combination recently, so that
      may still be a problem.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a54123e2
  27. 23 3月, 2006 1 次提交
    • A
      [PATCH] more for_each_cpu() conversions · 394e3902
      Andrew Morton 提交于
      When we stop allocating percpu memory for not-possible CPUs we must not touch
      the percpu data for not-possible CPUs at all.  The correct way of doing this
      is to test cpu_possible() or to use for_each_cpu().
      
      This patch is a kernel-wide sweep of all instances of NR_CPUS.  I found very
      few instances of this bug, if any.  But the patch converts lots of open-coded
      test to use the preferred helper macros.
      
      Cc: Mikael Starvik <starvik@axis.com>
      Cc: David Howells <dhowells@redhat.com>
      Acked-by: NKyle McMartin <kyle@parisc-linux.org>
      Cc: Anton Blanchard <anton@samba.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: William Lee Irwin III <wli@holomorphy.com>
      Cc: Andi Kleen <ak@muc.de>
      Cc: Christian Zankel <chris@zankel.net>
      Cc: Philippe Elie <phil.el@wanadoo.fr>
      Cc: Nathan Scott <nathans@sgi.com>
      Cc: Jens Axboe <axboe@suse.de>
      Cc: Eric Dumazet <dada1@cosmosbay.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      394e3902
  28. 22 3月, 2006 1 次提交
  29. 13 1月, 2006 1 次提交
  30. 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