11 Jan, 2012

1 commit


08 Dec, 2011

2 commits


25 Oct, 2011

1 commit

  • The contents of arch/mips/kernel/perf_event.c and
    arch/mips/kernel/perf_event_mipsxx.c were divided in a seemingly ad
    hoc manner, with the first including the second.

    I moved all the hardware counter support code to perf_event_mipsxx.c
    and removed the gating #ifdefs to the Kconfig and Makefile.

    Now perf_event.c contains only the callchain support, everything else
    is in perf_event_mipsxx.c

    There are no code changes, only moving of functions from one file to
    the other, or removing empty unneeded functions.

    Signed-off-by: David Daney
    Cc: Peter Zijlstra
    Cc: Paul Mackerras
    Cc: Ingo Molnar
    Cc: Arnaldo Carvalho de Melo
    Cc: Dezhong Diao
    Cc: Gabor Juhos
    Cc: Deng-Cheng Zhu
    To: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/2791/
    Signed-off-by: Ralf Baechle

    David Daney
     

19 May, 2011

1 commit


19 Jan, 2011

2 commits

  • In order not to be left behind, we add jump label support for MIPS.

    Tested on 64-bit big endian (Octeon), and 32-bit little endian
    (malta/qemu).

    Signed-off-by: David Daney
    To: linux-mips@linux-mips.org
    Cc: Steven Rostedt
    Cc: Jason Baron
    Patchwork: https://patchwork.linux-mips.org/patch/1923/
    Signed-off-by: Ralf Baechle

    David Daney
     
  • This patch adds a generic solution to support multiple machines based on
    a given SoC within a single kernel image. It is implemented already for
    several other architectures but MIPS has no generic support for that yet.

    [Ralf: This competes with DT but DT is a much more complex solution and this
    code has been used by OpenWRT for a long time so for now DT is a bad reason
    to stop the merge but longer term this should be migrated to DT.]

    Signed-off-by: Gabor Juhos
    Cc: linux-mips@linux-mips.org
    Cc: kaloz@openwrt.org
    Cc: Luis R. Rodriguez
    Cc: Cliff Holden
    Patchwork: https://patchwork.linux-mips.org/patch/1814/
    Signed-off-by: Ralf Baechle

    Gabor Juhos
     

30 Oct, 2010

1 commit

  • This patch provides the skeleton of the HW perf event support. To enable
    this feature, we can not choose the SMTC kernel; Oprofile should be
    disabled; kernel performance events be selected. Then we can enable it in
    Kernel type menu.

    Oprofile for MIPS platforms initializes irq at arch init time. Currently
    we do not change this logic to allow PMU reservation.

    If a platform has EIC, we can use the irq base and perf counter irq offset
    defines for the interrupt controller in specific init_hw_perf_events().

    Based on this skeleton patch, the 3 different kinds of MIPS PMU, namely,
    mipsxx/loongson2/rm9000, can be supported by adding corresponding lower
    level C files at the bottom. The suggested names of these files are
    perf_event_mipsxx.c/perf_event_loongson2.c/perf_event_rm9000.c. So, for
    example, we can do this by adding "#include perf_event_mipsxx.c" at the
    bottom of perf_event.c.

    In addition, PMUs with 64bit counters are also considered in this patch.

    Signed-off-by: Deng-Cheng Zhu
    To: linux-mips@linux-mips.org
    Cc: a.p.zijlstra@chello.nl
    Cc: paulus@samba.org
    Cc: mingo@elte.hu
    Cc: acme@redhat.com
    Cc: jamie.iles@picochip.com
    Cc: ddaney@caviumnetworks.com
    Cc: matt@console-pimps.org
    Patchwork: https://patchwork.linux-mips.org/patch/1688/
    Signed-off-by: Ralf Baechle

    Deng-Cheng Zhu
     

22 Oct, 2010

1 commit

  • Add the ability to enable CONFIG_OF on the MIPS architecture.

    Signed-off-by: Dezhong Diao
    [grant.likely@secretlab.ca: cleared out obsolete hooks,
    removed ARCH_HAS_DEVTREE_MEM,
    remove __init tags from header file,
    removed debugfs support hunk]
    [ddaney@linux-mips.org: backed out over aggressive trimming of hooks]
    Acked-by: Ralf Baechle
    Tested-by: David Daney
    Signed-off-by: Grant Likely

    Dezhong Diao
     

05 Aug, 2010

2 commits

  • This patch is based on previous work by Sony and Himanshu Chauhan.

    I have done some cleanup and implemented JProbes and KRETPROBES. The
    KRETPROBES part is pretty much copied verbatim from powerpc. A possible
    future enhance might be to factor out the common code.

    Signed-off-by: David Daney
    Cc: Himanshu Chauhan
    To: linux-mips@linux-mips.org
    To: ananth@in.ibm.com,
    To: anil.s.keshavamurthy@intel.com
    To: davem@davemloft.net
    To: masami.hiramatsu.pt@hitachi.com
    Cc: linux-kernel@vger.kernel.org
    Patchwork: https://patchwork.linux-mips.org/patch/1525/
    Patchwork: https://patchwork.linux-mips.org/patch/1530/
    Signed-off-by: Ralf Baechle

    David Daney
     
  • Adding subdirs-ccflags-y := -Werror to arch/mips/Kbuild
    let us in one go cover all files with -Werror.

    In addition this allows us to remove the
    individual -Werror definition in various Makefile.

    Adding the definition to Kbuild as a recursive
    option help us not to forget to do so.

    With this change we now compile arch/mips/kernel/cpufreq with -Werror

    One drawback:
    When specifying a subdirectory covered by the Kbuild file like this:

    make arch/mips/kernel/

    then kbuild fails to pick up the -Werror definition.

    Signed-off-by: Sam Ravnborg
    To: linux-mips
    To: Wu Zhangjin
    Patchwork: https://patchwork.linux-mips.org/patch/1301/
    Signed-off-by: Ralf Baechle

    Sam Ravnborg
     

13 Apr, 2010

1 commit

  • This is a preliminary patch to add a vdso to all user processes. Still
    missing are ELF headers and .eh_frame information. But it is enough to
    allow us to move signal trampolines off of the stack. Note that emulation
    of branch delay slots in the FPU emulator still requires the stack.

    We allocate a single page (the vdso) and write all possible signal
    trampolines into it. The stack is moved down by one page and the vdso is
    mapped into this space.

    Signed-off-by: David Daney
    To: linux-mips@linux-mips.org
    Patchwork: http://patchwork.linux-mips.org/patch/975/
    Signed-off-by: Ralf Baechle

    David Daney
     

27 Feb, 2010

1 commit

  • This is just a test program for raw_spinlocks. The main reason I
    wrote it is to validate my spinlock changes that I sent in a previous
    patch.

    To use it enable CONFIG_DEBUG_FS and CONFIG_SPINLOCK_TEST then at run
    time do:

    # mount -t debugfs none /sys/kernel/debug/
    # cat /sys/kernel/debug/mips/spin_single
    # cat /sys/kernel/debug/mips/spin_multi

    On my 600MHz octeon cn5860 (16 CPUs) I get

    spin_single spin_multi
    base 106885 247941
    spinlock_patch 75194 219465

    This shows that for uncontended locks the spinlock patch gives 41%
    improvement and for contended locks 12% improvement (1/time).

    Signed-off-by: David Daney
    To: linux-mips@linux-mips.org
    Patchwork: http://patchwork.linux-mips.org/patch/969/
    Signed-off-by: Ralf Baechle

    David Daney
     

17 Dec, 2009

5 commits

  • Signed-off-by: Ralf Baechle

    Ralf Baechle
     
  • 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
    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: Wu Zhangjin
    Cc: Nicholas Mc Guire
    Cc: zhangfx@lemote.com
    Cc: Wu Zhangjin
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: Frederic Weisbecker
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-mips@linux-mips.org
    Patchwork: http://patchwork.linux-mips.org/patch/675/
    Acked-by: Steven Rostedt
    Signed-off-by: Ralf Baechle

    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: Wu Zhangjin
    Reviewed-by: Steven Rostedt
    Cc: Nicholas Mc Guire
    Cc: zhangfx@lemote.com
    Cc: Wu Zhangjin
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: Frederic Weisbecker
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-mips@linux-mips.org
    Patchwork: http://patchwork.linux-mips.org/patch/672/
    Signed-off-by: Ralf Baechle

    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: Wu Zhangjin
    Cc: linux-mips@linux-mips.org
    Cc: cpufreq@vger.kernel.org,
    Cc: Dave Jones ,
    Cc: Dominik Brodowski ,
    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: Ralf Baechle

    Wu Zhangjin
     
  • Add the Cisco Powertv cable settop box to the MIPS tree. This platform is
    based on a MIPS 24Kc processor with various devices integrated on the same
    ASIC. There are multiple models of this box, with differing configuration
    but the same kernel runs across the product line.

    Signed-off-by: David VomLehn
    Cc: linux-mips@linux-mips.org
    Patchwork: http://patchwork.linux-mips.org/patch/132/
    Signed-off-by: Ralf Baechle

    David VomLehn
     

26 Sep, 2009

1 commit

  • Commit 51b563fc93c8cb5bff1d67a0a71c374e4a4ea049 ("arm, cris, mips,
    sparc, powerpc, um, xtensa: fix build with bash 4.0") removed a few
    CPPFLAGS with vital include paths necessary to build vmlinux.lds
    on MIPS, and moved the calculation of the 'jiffies' symbol
    directly to vmlinux.lds.S but forgot to change make ifdef/... to
    cpp macros.

    Signed-off-by: Manuel Lauss
    [sam: moved assignment of CPPFLAGS arch/mips/kernel/Makefile]
    Signed-off-by: Sam Ravnborg
    Acked-by: Dmitri Vorobiev

    Manuel Lauss
     

11 Jan, 2009

2 commits

  • The current mips clock build infrastructure lets a system only use
    either the MIPS cp0 counter or a SoC specific timer as a clocksource /
    clockevent device.

    This patch renames the core cp0 counter clocksource / clockevent functions
    from mips_* to r4k_* and updates the wrappers in asm-mips/time.h to
    call these renamed functions instead.

    Chips which can detect whether it is safe to use a chip-specific timer
    can now fall back on the cp0 counter if necessary and possible
    (e.g. Alchemy with a follow-on patch).

    Existing behaviour is not changed in any way.

    Signed-off-by: Manuel Lauss
    Signed-off-by: Ralf Baechle

    Manuel Lauss
     
  • Take all the OCTEON specific files that were added, and hook them into
    the build system for the arch/mips. For versions of GCC that lack
    OCTEON support, override gas target architecture.

    Signed-off-by: Tomaso Paoletti
    Signed-off-by: David Daney
    Signed-off-by: Ralf Baechle

    David Daney
     

28 Oct, 2008

1 commit

  • We already have sufficient infrastructure to support VR5500 and VR5500A
    series processors. Here's a Makefile support to make it selectable by
    ports, and enable it for NEC EMMA2RH Markeins board.

    This patch also fixes a confused target help, and adds 1Gb PageMask bits
    supported by VR5500 and its variants.

    Signed-off-by: Shinya Kuribayashi
    Signed-off-by: Ralf Baechle

    Shinya Kuribayashi
     

11 Oct, 2008

1 commit


04 Oct, 2008

1 commit

  • Rework of SMTC support to make it work with the new clock event system,
    allowing "tickless" operation, and to make it compatible with the use of
    the "wait_irqoff" idle loop. The new clocking scheme means that the
    previously optional IPI instant replay mechanism is now required, and has
    been made more robust.

    Signed-off-by: Kevin D. Kissell
    Signed-off-by: Ralf Baechle

    Kevin D. Kissell
     

31 Jul, 2008

2 commits

  • The new kgdb architecture specific handler registers and unregisters
    dynamically for exceptions depending on when you configure a kgdb I/O
    driver.

    Aside from initializing the exceptions earlier in the boot process,
    kgdb should have no impact on a device when it is compiled in so long
    as an I/O module is not configured for use.

    There have been quite a number of contributors during the existence of
    this patch (see arch/mips/kernel/kgdb.c). Most recently Jason
    re-wrote the mips kgdb logic to use the die notification handlers.

    Signed-off-by: Jason Wessel
    Signed-off-by: Ralf Baechle

    Jason Wessel
     
  • This patch explicitly removes the kgdb implementation, for mips which
    is intended to be followed by a patch that adds a kgdb implementation
    for MIPS that makes use of the kgdb core in the kernel.

    Signed-off-by: Jason Wessel
    Signed-off-by: Ralf Baechle

    Jason Wessel
     

16 Jul, 2008

2 commits


06 Jun, 2008

1 commit


12 May, 2008

1 commit


29 Apr, 2008

5 commits


17 Apr, 2008

1 commit

  • Semaphores are no longer performance-critical, so a generic C
    implementation is better for maintainability, debuggability and
    extensibility. Thanks to Peter Zijlstra for fixing the lockdep
    warning. Thanks to Harvey Harrison for pointing out that the
    unlikely() was unnecessary.

    Signed-off-by: Matthew Wilcox
    Acked-by: Ingo Molnar

    Matthew Wilcox
     

12 Mar, 2008

1 commit


27 Nov, 2007

1 commit


03 Nov, 2007

1 commit


30 Oct, 2007

1 commit

  • Convert jmr3927_clock_event_device to more generic
    txx9tmr_clock_event_device which supports one-shot mode. The
    txx9tmr_clock_event_device can be used for TX49 too if the cp0 timer
    interrupt was not available.

    Convert jmr3927_hpt_read to txx9_clocksource driver which does not
    depends jiffies anymore. The txx9_clocksource itself can be used for
    TX49, but normally TX49 uses higher precision clocksource_mips.

    Signed-off-by: Atsushi Nemoto
    Signed-off-by: Ralf Baechle

    Atsushi Nemoto