1. 27 2月, 2010 23 次提交
  2. 03 2月, 2010 1 次提交
  3. 02 2月, 2010 1 次提交
    • M
      MIPS: Alchemy: Fix dbdma ring destruction memory debugcheck. · 22f4bb68
      Manuel Lauss 提交于
      DBDMA descriptors need to be located at 32-byte aligned addresses;
      however kmalloc in conjunction with the SLAB allocator and
      CONFIG_DEBUG_SLUB enabled doesn't deliver any.  The dbdma code works
      around that by allocating a larger area and realigning the start
      address within it.
      
      When freeing a channel however this adjustment is not taken into
      account which results in an oops:
      
      Kernel bug detected[#1]:
      [...]
      Call Trace:
      [<80186010>] cache_free_debugcheck+0x284/0x318
      [<801869d8>] kfree+0xe8/0x2a0
      [<8010b31c>] au1xxx_dbdma_chan_free+0x2c/0x7c
      [<80388dc8>] au1x_pcm_dbdma_free+0x34/0x4c
      [<80388fa8>] au1xpsc_pcm_close+0x28/0x38
      [<80383cb8>] soc_codec_close+0x14c/0x1cc
      [<8036dbb4>] snd_pcm_release_substream+0x60/0xac
      [<8036dc40>] snd_pcm_release+0x40/0xa0
      [<8018c7a8>] __fput+0x11c/0x228
      [<80188f60>] filp_close+0x7c/0x98
      [<80189018>] sys_close+0x9c/0xe4
      [<801022a0>] stack_done+0x20/0x3c
      
      Fix this by recording the address delivered by kmalloc() and using
      it as parameter to kfree().
      
      This fix is only necessary with the SLAB allocator and CONFIG_DEBUG_SLAB
      enabled;  non-debug SLAB, SLUB do return nicely aligned addresses,
      debug-enabled SLUB currently panics early in the boot process.
      Signed-off-by: NManuel Lauss <manuel.lauss@gmail.com>
      To: Linux-MIPS <linux-mips@linux-mips.org>
      Cc: Manuel Lauss <manuel.lauss@gmail.com>
      Patchwork: http://patchwork.linux-mips.org/patch/878/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      22f4bb68
  4. 28 1月, 2010 2 次提交
  5. 13 1月, 2010 1 次提交
    • A
      MIPS: cpumask_of_node() should handle -1 as a node · d797396f
      Anton Blanchard 提交于
      pcibus_to_node can return -1 if we cannot determine which node a pci bus
      is on. If passed -1, cpumask_of_node will negatively index the lookup array
      and pull in random data:
      
      # cat /sys/devices/pci0000:00/0000:00:01.0/local_cpus
      00000000,00000003,00000000,00000000
      # cat /sys/devices/pci0000:00/0000:00:01.0/local_cpulist
      64-65
      
      Change cpumask_of_node to check for -1 and return cpu_all_mask in this
      case:
      
      # cat /sys/devices/pci0000:00/0000:00:01.0/local_cpus
      ffffffff,ffffffff,ffffffff,ffffffff
      # cat /sys/devices/pci0000:00/0000:00:01.0/local_cpulist
      0-127
      Signed-off-by: NAnton Blanchard <anton@samba.org>
      Cc: linux-mips@linux-mips.org
      Cc: linux-kernel@vger.kernel.org
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Patchwork: http://patchwork.linux-mips.org/patch/831/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      d797396f
  6. 18 12月, 2009 1 次提交
  7. 17 12月, 2009 11 次提交
    • R
      MIPS: eXcite: Remove platform. · de4148f3
      Ralf Baechle 提交于
      The platform has never been fully merged 
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      Cc: Thomas Koeller <thomas.koeller@baslerweb.com>
      Cc: David Woodhouse <dwmw2@infradead.org>
      Cc: Wim Van Sebroeck <wim@iguana.be>
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-mtd@lists.infradead.org
      Acked-by: NDavid Woodhouse <David.Woodhouse@intel.com>
      Acked-by: NWim Van Sebroeck <wim@iguana.be>
      de4148f3
    • W
      MIPS: Loongson: Cleanups of serial port support · c3d8d850
      Wu Zhangjin 提交于
      This patchs uses a loongson_uart_base variable instead of the
      uart_base[] array and adds a new kernel option to avoid to compile
      uart_base.c all the time, which will save a little bit of memory for us.
      Signed-off-by: NWu Zhangjin <wuzhangjin@gmail.com>
      Cc: linux-mips@linux-mips.org
      http://patchwork.linux-mips.org/patch/727/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      c3d8d850
    • R
      MIPS: Cleanup signal code initialization · 137f6f3e
      Ralf Baechle 提交于
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      Cc: linux-mips@linux-mips.org
      Patchwork: http://patchwork.linux-mips.org/patch/709/
      137f6f3e
    • R
      MIPS: Modularize COP2 handling · 69f3a7de
      Ralf Baechle 提交于
      Away with the daemons of ifdef; get ready for future COP2 users.
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      Patchwork: http://patchwork.linux-mips.org/patch/708/
      69f3a7de
    • W
      MIPS: Yeeloong 2F: Add LID open event as the wakeup event · cb1ed9e1
      Wu Zhangjin 提交于
      Yeeloong 2F netbook has an KB3310B embedded controller to manage the LID
      action.  When the LID is closed or opened a SCI interrupt is sent out and
      the corresponding event is saved to an EC register for later query.
      
      Allow the LID open interrupt to wake the processor from wait mode if it is
      in the suspend mode.
      Signed-off-by: NWu Zhangjin <wuzhangjin@gmail.com>
      Cc: linux-mips@linux-mips.org
      Patchwork: http://patchwork.linux-mips.org/patch/685/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      cb1ed9e1
    • W
      MIPS: Tracing: Make ftrace for MIPS work without -fno-omit-frame-pointer · 046199ca
      Wu Zhangjin 提交于
      When remove the -fno-omit-frame-pointer, gcc will not save the frame
      pointer for us, we need to save one ourselves.
      Signed-off-by: NWu Zhangjin <wuzhangjin@gmail.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Nicholas Mc Guire <der.herr@hofr.at>
      Cc: zhangfx@lemote.com
      Cc: Wu Zhangjin <wuzhangjin@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-mips@linux-mips.org
      Patchwork: http://patchwork.linux-mips.org/patch/679/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      046199ca
    • W
      MIPS: Tracing: Add IRQENTRY_EXIT section for MIPS · 8f99a162
      Wu Zhangjin 提交于
      This patch add a new section for MIPS to record the block of the hardirq
      handling for function graph tracer(print_graph_irq) via adding the
      __irq_entry annotation to the the entrypoints of the hardirqs(the block
      with irq_enter()...irq_exit()).
      
      Thanks goes to Steven & Frederic Weisbecker for their feedbacks.
      Signed-off-by: NWu Zhangjin <wuzhangjin@gmail.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Nicholas Mc Guire <der.herr@hofr.at>
      Cc: zhangfx@lemote.com
      Cc: Wu Zhangjin <wuzhangjin@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-mips@linux-mips.org
      Reviewed-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Patchwork: http://patchwork.linux-mips.org/patch/676/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      8f99a162
    • W
      MIPS: Tracing: Add dynamic function tracer support · 538f1952
      Wu Zhangjin 提交于
      With dynamic function tracer, by default, _mcount is defined as an
      "empty" function, it returns directly without any more action . When
      enabling it in user-space, it will jump to a real tracing
      function(ftrace_caller), and do the real job for us.
      
      Differ from the static function tracer, dynamic function tracer provides
      two functions ftrace_make_call()/ftrace_make_nop() to enable/disable the
      tracing of some indicated kernel functions(set_ftrace_filter).
      
      In the -v4 version, the implementation of this support is basically the same as
      X86 version does: _mcount is implemented as an empty function and ftrace_caller
      is implemented as a real tracing function respectively.
      
      But in this version, to support module tracing with the help of
      -mlong-calls in arch/mips/Makefile:
      
      MODFLAGS += -mlong-calls.
      
      The stuff becomes a little more complex. We need to cope with two
      different type of calling to _mcount.
      
      For the kernel part, the calling to _mcount(result of "objdump -hdr
      vmlinux"). is like this:
      
      	108:   03e0082d        move    at,ra
      	10c:   0c000000        jal     0 <fpcsr_pending>
                              10c: R_MIPS_26  _mcount
                              10c: R_MIPS_NONE        *ABS*
                              10c: R_MIPS_NONE        *ABS*
      	110:   00020021        nop
      
      For the module with -mlong-calls, it looks like this:
      
      	c:	3c030000 	lui	v1,0x0
      			c: R_MIPS_HI16	_mcount
      			c: R_MIPS_NONE	*ABS*
      			c: R_MIPS_NONE	*ABS*
      	10:	64630000 	daddiu	v1,v1,0
      			10: R_MIPS_LO16	_mcount
      			10: R_MIPS_NONE	*ABS*
      			10: R_MIPS_NONE	*ABS*
      	14:	03e0082d 	move	at,ra
      	18:	0060f809 	jalr	v1
      
      In the kernel version, there is only one "_mcount" string for every
      kernel function, so, we just need to match this one in mcount_regex of
      scripts/recordmcount.pl, but in the module version, we need to choose
      one of the two to match. Herein, I choose the first one with
      "R_MIPS_HI16 _mcount".
      
      and In the kernel verion, without module tracing support, we just need
      to replace "jal _mcount" by "jal ftrace_caller" to do real tracing, and
      filter the tracing of some kernel functions via replacing it by a nop
      instruction.
      
      but as we have described before, the instruction "jal ftrace_caller" only left
      32bit length for the address of ftrace_caller, it will fail when calling from
      the module space. so, herein, we must replace something else.
      
      the basic idea is loading the address of ftrace_caller to v1 via changing these
      two instructions:
      
      	lui	v1,0x0
      	addiu	v1,v1,0
      
      If we want to enable the tracing, we need to replace the above instructions to:
      
      	lui	v1, HI_16BIT_ftrace_caller
      	addiu	v1, v1, LOW_16BIT_ftrace_caller
      
      If we want to stop the tracing of the indicated kernel functions, we
      just need to replace the "jalr v1" to a nop instruction. but we need to
      replace two instructions and encode the above two instructions
      oursevles.
      
      Is there a simpler solution? Yes! Here it is, in this version, we put _mcount
      and ftrace_caller together, which means the address of _mcount and
      ftrace_caller is the same:
      
      _mcount:
      ftrace_caller:
      	j	ftrace_stub
      	 nop
      
      	...(do real tracing here)...
      
      ftrace_stub:
      	jr	ra
      	 move	ra, at
      
      By default, the kernel functions call _mcount, and then jump to ftrace_stub and
      return. and when we want to do real tracing, we just need to remove that "j
      ftrace_stub", and it will run through the two "nop" instructions and then do
      the real tracing job.
      
      what about filtering job? we just need to do this:
      
      	 lui v1, hi_16bit_of_mcount        <--> b 1f (0x10000004)
      	 addiu v1, v1, low_16bit_of_mcount
      	 move at, ra
      	 jalr v1
      	 nop
      	 				     1f: (rec->ip + 12)
      
      In linux-mips64, there will be some local symbols, whose name are
      prefixed by $L, which need to be filtered. thanks goes to Steven for
      writing the mips64-specific function_regex.
      
      In a conclusion, with RISC, things becomes easier with such a "stupid"
      trick, RISC is something like K.I.S.S, and also, there are lots of
      "simple" tricks in the whole ftrace support, thanks goes to Steven and
      the other folks for providing such a wonderful tracing framework!
      Signed-off-by: NWu Zhangjin <wuzhangjin@gmail.com>
      Cc: Nicholas Mc Guire <der.herr@hofr.at>
      Cc: zhangfx@lemote.com
      Cc: Wu Zhangjin <wuzhangjin@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-mips@linux-mips.org
      Patchwork: http://patchwork.linux-mips.org/patch/675/Acked-by: NSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      538f1952
    • W
      MIPS: Tracing: Add static function tracer support for MIPS · d2bb0762
      Wu Zhangjin 提交于
      If -pg of gcc is enabled with CONFIG_FUNCTION_TRACER=y. a calling to
      _mcount will be inserted into each kernel function. so, there is a
      possibility to trace the kernel functions in _mcount.
      
      This patch add the MIPS specific _mcount support for static function
      tracing. by default, ftrace_trace_function is initialized as
      ftrace_stub(an empty function), so, the default _mcount will introduce
      very little overhead. after enabling ftrace in user-space, it will jump
      to a real tracing function and do static function tracing for us.
      
      and -ffunction-sections is incompatible with -pg, so, disable it when
      ftracer is enabled.
      Signed-off-by: NWu Zhangjin <wuzhangjin@gmail.com>
      Reviewed-by: NSteven Rostedt <rostedt@goodmis.org>
      Cc: Nicholas Mc Guire <der.herr@hofr.at>
      Cc: zhangfx@lemote.com
      Cc: Wu Zhangjin <wuzhangjin@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-mips@linux-mips.org
      Patchwork: http://patchwork.linux-mips.org/patch/672/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      d2bb0762
    • W
      MIPS: Loongson 2F: Add CPU frequency scaling support · f8ede0f7
      Wu Zhangjin 提交于
      Loongson 2F supports CPU clock scaling. When put it into wait mode by
      setting the frequency as ZERO it will stay in this mode until an external
      interrupt wakes the CPU again.
      
      To enable clock scaling support, an external timer of a known stable rate
      is required.
      Signed-off-by: NWu Zhangjin <wuzhangjin@gmail.com>
      Cc: linux-mips@linux-mips.org
      Cc: cpufreq@vger.kernel.org,
      Cc: Dave Jones <davej@redhat.com>,
      Cc: Dominik Brodowski <linux@dominikbrodowski.net>,
      Cc: yanh@lemote.com
      Cc: huhb@lemote.com,
      Patchwork: http://patchwork.linux-mips.org/patch/660/
      Patchwork: http://patchwork.linux-mips.org/patch/751/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      f8ede0f7
    • W
      MIPS: Lemote 2F: Add cs5536 MFGPT timer support · 916daba8
      Wu Zhangjin 提交于
      CPUFreq support for Loongson 2F requires an external timer.
      
      Because the frequency of the MIPS Timer is related to the CPU frequency
      which itself is variable another timer of constant frequency is required.
      
      Export the mfgpt0 counter disable / enable operations for the coming
      suspend support to suspend / resume the timer.
      Signed-off-by: NWu Zhangjin <wuzhangjin@gmail.com>
      Cc: linux-mips@linux-mips.org
      Cc: cpufreq@vger.kernel.org,
      Cc: Dave Jones <davej@redhat.com>,
      Cc: Dominik Brodowski <linux@dominikbrodowski.net>,
      Cc: yanh@lemote.com
      Cc: huhb@lemote.com,
      Patchwork: http://patchwork.linux-mips.org/patch/658/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      916daba8