Skip to content
Snippets Groups Projects
  1. Jan 15, 2014
  2. Oct 29, 2013
  3. Oct 02, 2013
    • Yoichi Yuasa's avatar
      MIPS: Fix forgotten preempt_enable() when CPU has inclusive pcaches · 5596b0b2
      Yoichi Yuasa authored
      
      [    1.904000] BUG: scheduling while atomic: swapper/1/0x00000002
      [    1.908000] Modules linked in:
      [    1.916000] CPU: 0 PID: 1 Comm: swapper Not tainted 3.12.0-rc2-lemote-los.git-5318619-dirty #1
      [    1.920000] Stack : 0000000031aac000 ffffffff810d0000 0000000000000052 ffffffff802730a4
                0000000000000000 0000000000000001 ffffffff810cdf90 ffffffff810d0000
                ffffffff8068b968 ffffffff806f5537 ffffffff810cdf90 980000009f0782e8
                0000000000000001 ffffffff80720000 ffffffff806b0000 980000009f078000
                980000009f290000 ffffffff805f312c 980000009f05b5d8 ffffffff80233518
                980000009f05b5e8 ffffffff80274b7c 980000009f078000 ffffffff8068b968
                0000000000000000 0000000000000000 0000000000000000 0000000000000000
                0000000000000000 980000009f05b520 0000000000000000 ffffffff805f2f6c
                0000000000000000 ffffffff80700000 ffffffff80700000 ffffffff806fc758
                ffffffff80700000 ffffffff8020be98 ffffffff806fceb0 ffffffff805f2f6c
                ...
      [    2.028000] Call Trace:
      [    2.032000] [<ffffffff8020be98>] show_stack+0x80/0x98
      [    2.036000] [<ffffffff805f2f6c>] __schedule_bug+0x44/0x6c
      [    2.040000] [<ffffffff805fac58>] __schedule+0x518/0x5b0
      [    2.044000] [<ffffffff805f8a58>] schedule_timeout+0x128/0x1f0
      [    2.048000] [<ffffffff80240314>] msleep+0x3c/0x60
      [    2.052000] [<ffffffff80495400>] do_probe+0x238/0x3a8
      [    2.056000] [<ffffffff804958b0>] ide_probe_port+0x340/0x7e8
      [    2.060000] [<ffffffff80496028>] ide_host_register+0x2d0/0x7a8
      [    2.064000] [<ffffffff8049c65c>] ide_pci_init_two+0x4e4/0x790
      [    2.068000] [<ffffffff8049f9b8>] amd74xx_probe+0x148/0x2c8
      [    2.072000] [<ffffffff803f571c>] pci_device_probe+0xc4/0x130
      [    2.076000] [<ffffffff80478f60>] driver_probe_device+0x98/0x270
      [    2.080000] [<ffffffff80479298>] __driver_attach+0xe0/0xe8
      [    2.084000] [<ffffffff80476ab0>] bus_for_each_dev+0x78/0xe0
      [    2.088000] [<ffffffff80478468>] bus_add_driver+0x230/0x310
      [    2.092000] [<ffffffff80479b44>] driver_register+0x84/0x158
      [    2.096000] [<ffffffff80200504>] do_one_initcall+0x104/0x160
      
      Signed-off-by: default avatarYoichi Yuasa <yuasa@linux-mips.org>
      Reported-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
      Tested-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
      Cc: linux-mips@linux-mips.org
      Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
      Patchwork: https://patchwork.linux-mips.org/patch/5941/
      
      
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      5596b0b2
  4. Sep 18, 2013
  5. Sep 17, 2013
    • Ralf Baechle's avatar
      MIPS: Optimize current_cpu_type() for better code. · 69f24d17
      Ralf Baechle authored
      
       o Move current_cpu_type() to a separate header file
       o #ifdefing on supported CPU types lets modern GCC know that certain
         code in callers may be discarded ideally turning current_cpu_type() into
         a function returning a constant.
       o Use current_cpu_type() rather than direct access to struct cpuinfo_mips.
      
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      Cc: Steven J. Hill <Steven.Hill@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/5833/
      69f24d17
    • Ralf Baechle's avatar
      MIPS: Fix accessing to per-cpu data when flushing the cache · ff522058
      Ralf Baechle authored
      
      This fixes the following issue
      
      BUG: using smp_processor_id() in preemptible [00000000] code: kjournald/1761
      caller is blast_dcache32+0x30/0x254
      Call Trace:
      [<8047f02c>] dump_stack+0x8/0x34
      [<802e7e40>] debug_smp_processor_id+0xe0/0xf0
      [<80114d94>] blast_dcache32+0x30/0x254
      [<80118484>] r4k_dma_cache_wback_inv+0x200/0x288
      [<80110ff0>] mips_dma_map_sg+0x108/0x180
      [<80355098>] ide_dma_prepare+0xf0/0x1b8
      [<8034eaa4>] do_rw_taskfile+0x1e8/0x33c
      [<8035951c>] ide_do_rw_disk+0x298/0x3e4
      [<8034a3c4>] do_ide_request+0x2e0/0x704
      [<802bb0dc>] __blk_run_queue+0x44/0x64
      [<802be000>] queue_unplugged.isra.36+0x1c/0x54
      [<802beb94>] blk_flush_plug_list+0x18c/0x24c
      [<802bec6c>] blk_finish_plug+0x18/0x48
      [<8026554c>] journal_commit_transaction+0x3b8/0x151c
      [<80269648>] kjournald+0xec/0x238
      [<8014ac00>] kthread+0xb8/0xc0
      [<8010268c>] ret_from_kernel_thread+0x14/0x1c
      
      Caches in most systems are identical - but not always, so we can't avoid
      the use of smp_call_function() by just looking at the boot CPU's data,
      have to fiddle with preemption instead.
      
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      Cc: Markos Chandras <markos.chandras@imgtec.com>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/5835
      ff522058
  6. Jul 15, 2013
    • Paul Gortmaker's avatar
      MIPS: Delete __cpuinit/__CPUINIT usage from MIPS code · 078a55fc
      Paul Gortmaker authored
      commit 3747069b25e419f6b51395f48127e9812abc3596 upstream.
      
      The __cpuinit type of throwaway sections might have made sense
      some time ago when RAM was more constrained, but now the savings
      do not offset the cost and complications.  For example, the fix in
      commit 5e427ec2 ("x86: Fix bit corruption at CPU resume time")
      is a good example of the nasty type of bugs that can be created
      with improper use of the various __init prefixes.
      
      After a discussion on LKML[1] it was decided that cpuinit should go
      the way of devinit and be phased out.  Once all the users are gone,
      we can then finally remove the macros themselves from linux/init.h.
      
      Note that some harmless section mismatch warnings may result, since
      notify_cpu_starting() and cpu_up() are arch independent (kernel/cpu.c)
      and are flagged as __cpuinit  -- so if we remove the __cpuinit from
      the arch specific callers, we will also get section mismatch warnings.
      As an intermediate step, we intend to turn the linux/init.h cpuinit
      related content into no-ops as early as possible, since that will get
      rid of these warnings.  In any case, they are temporary and harmless.
      
      Here, we remove all the MIPS __cpuinit from C code and __CPUINIT
      from asm files.  MIPS is interesting in this respect, because there
      are also uasm users hiding behind their own renamed versions of the
      __cpuinit macros.
      
      [1] https://lkml.org/lkml/2013/5/20/589
      
      
      
      [ralf@linux-mips.org: Folded in Paul's followup fix.]
      
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Cc: linux-mips@linux-mips.org
      Patchwork: https://patchwork.linux-mips.org/patch/5494/
      Patchwork: https://patchwork.linux-mips.org/patch/5495/
      Patchwork: https://patchwork.linux-mips.org/patch/5509/
      
      
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      078a55fc
  7. May 08, 2013
  8. May 01, 2013
  9. Apr 05, 2013
  10. Feb 17, 2013
  11. Feb 01, 2013
  12. Dec 13, 2012
  13. Nov 09, 2012
  14. Sep 13, 2012
  15. Jul 19, 2012
  16. Jul 06, 2012
  17. May 16, 2012
  18. Mar 28, 2012
  19. Mar 20, 2012
  20. Dec 07, 2011
  21. Oct 20, 2011
  22. Jul 25, 2011
    • Kevin Cernekee's avatar
      MIPS: Add SYNC after cacheflush · d0023c4a
      Kevin Cernekee authored
      
      On processors with deep write buffers, it is likely that many cycles
      will pass between a CACHE instruction and the time the data actually
      gets written out to DRAM.  Add a SYNC instruction to ensure that the
      buffers get emptied before the flush functions return.
      
      Actual problem seen in the wild:
      
      1) dma_alloc_coherent() allocates cached memory
      
      2) memset() is called to clear the new pages
      
      3) dma_cache_wback_inv() is called to flush the zero data out to memory
      
      4) dma_alloc_coherent() returns an uncached (kseg1) pointer to the
      freshly allocated pages
      
      5) Caller writes data through the kseg1 pointer
      
      6) Buffered writeback data finally gets flushed out to DRAM
      
      7) Part of caller's data is inexplicably zeroed out
      
      This patch adds SYNC between steps 3 and 4, which fixed the problem.
      
      Signed-off-by: default avatarKevin Cernekee <cernekee@gmail.com>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Patchwork: 
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      d0023c4a
  23. May 19, 2011
  24. May 10, 2011
    • Ralf Baechle's avatar
      MIPS: c-r4k: Fix GCC 4.6.0 build error · 71271aab
      Ralf Baechle authored
      
        CC      arch/mips/mm/c-r4k.o
      arch/mips/mm/c-r4k.c: In function 'probe_scache':
      arch/mips/mm/c-r4k.c:1078:6: error: variable 'tmp' set but not used [-Werror=unused-but-set-variable]
      cc1: all warnings being treated as errors
      
      Older GCC versions didn't warn about the unused variable tmp because it was
      getting initialized.
      
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      71271aab
  25. Apr 06, 2011
  26. Oct 29, 2010
  27. Jun 24, 2009
  28. Jun 17, 2009
  29. May 14, 2009
  30. Mar 30, 2009
    • Manuel Lauss's avatar
      MIPS: Alchemy: unify CPU model constants. · 270717a8
      Manuel Lauss authored
      
      This patch removes the various CPU_AU1??? model constants in favor of
      a single CPU_ALCHEMY one.
      
      All currently existing Alchemy models are identical in terms of cpu
      core and cache size/organization.  The parts of the mips kernel which
      need to know the exact CPU revision extract it from the c0_prid register
      already; and finally nothing else in-tree depends on those any more.
      
      Should a new variant with slightly different "company options" and/or
      "processor revision" bits in c0_prid appear, it will be supported
      immediately (minus an exact model string in cpuinfo).
      
      Signed-off-by: default avatarManuel Lauss <mano@roarinelk.homelinux.net>
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      270717a8
  31. Mar 23, 2009
  32. Jan 30, 2009
  33. Sep 05, 2008
  34. Jun 26, 2008
  35. Jun 16, 2008
Loading