Linux MIPS Architecture development
 help / color / mirror / Atom feed
From: Ralf Roesch <ralf.roesch@rw-gmbh.de>
To: Wu Zhangjin <wuzhangjin@gmail.com>
Cc: Ralf Baechle <ralf@linux-mips.org>,
	David Daney <ddaney@caviumnetworks.com>,
	linux-mips@linux-mips.org
Subject: Re: [PATCH v3 0/3] add high resolution sched_clock() for MIPS
Date: Sat, 10 Apr 2010 12:55:09 +0200	[thread overview]
Message-ID: <4BC0590D.5080305@rw-gmbh.de> (raw)
In-Reply-To: <cover.1270881177.git.wuzhangjin@gmail.com>

I applied your patch set against tip/rt/2.6.33 (kernel.org) and it works 
fine on our TX4938 based Fieldbuscontroller which uses the r4k-based 
timer clocksource. Thanks!

(32bit version)
tested-by: Ralf Roesch <ralf.roesch@rw-gmbh.de>


On Sat Apr 10 2010 08:49:56 GMT+0200 (CET), Wu Zhangjin 
<wuzhangjin@gmail.com>  wrote:
> From: Wu Zhangjin<wuzhangjin@gmail.com>
>
> Hi, Ralf, hi David.
>
> I have tested it again in the 32bit and 64bit kernel on a Yeeloong netbook,
> both of them work well. so, it should be applicable now.
>
> BTW:
>
> to David, if the first two patches are ok for you, could you give a
> "Acked-by:"?  thanks!
>
> to Ralf Rösch, does this 32bit version work for you? If yes, welcome your
> tested-by:, thanks ;)
>
> ----------------
>
> Changes:
>
> v2 ->  v3:
>
>    o remove the 'easy way' of 128bit arithmatic of mips_cyc2ns().
>    o use 32bit type instead of 64bit for the input arguments(mult and shift) as
>    the 'struct clocksource' does.
>    o use a smaller scaling factor: 8, with this factor, if the clock frequency
>    is 400MHz, it will overflow after about 521 days.
>
> v1 ->  v2:
>
>    o Adds 32bit support, using a smaller scaling factor(shift) to avoid 128bit
>    arithmatic, of course, it loses some precision.
>
>    o Adds the testing results of the overhead of sched_clock() in 64bit kernel
>
>    Clock func/overhead(ns) Min Avg Max Jitter Std.Dev.
>    ----------------------------------------------
>    sched_clock(cnt32_to_63) 105 116.2 236 131 9.5
>    getnstimeofday()      160 167.1 437 277 15
>    ----------------------------------------------
>
>    As we can see, the cnt32_to_63() based sched_clock() have lower overhead.
>
> ----------------
>
> This patchset adds a high resolution version of sched_clock() for the r4k MIPS.
>
> The generic sched_clock() is jiffies based and has very bad resolution(1ms with
> HZ set as 1000), this one is based on the r4k c0 count, the resolution reaches
> about several ns(2.5ns with 400M clock frequency).
>
> To cope with the overflow problem of the 32bit c0 count, based on the
> cnt32_to_63() method in include/linux/cnt32_to_63.h. we have converted the
> 32bit counter to a virtual 63bit counter.
>
> And to fix the overflow problem of the 64bit arithmatic(cycles * mult) in 64bit
> kernel, we use the 128bit arithmatic contributed by David, but for 32bit
> kernel, to balance the overhead of 128bit arithmatic and the precision lost, we
> choose the method used in X86(arch/x86/kernel/tsc.c) and
> ARM(arch/arm/plat-orion/time.c): just use a smaller scaling factor and do 64bit
> arithmatic, of course, it will also overflow but not that quickly.
>
> Regards,
>          Wu Zhangjin
>
> Wu Zhangjin (3):
>    MIPS: add a common mips_cyc2ns()
>    MIPS: cavium-octeon: rewrite the sched_clock() based on mips_cyc2ns()
>    MIPS: r4k: Add a high resolution sched_clock()
>
>   arch/mips/Kconfig                     |   12 +++++
>   arch/mips/cavium-octeon/csrc-octeon.c |   29 +------------
>   arch/mips/include/asm/time.h          |   34 +++++++++++++++
>   arch/mips/kernel/csrc-r4k.c           |   76 +++++++++++++++++++++++++++++++++
>   arch/mips/kernel/time.c               |    5 ++
>   5 files changed, 129 insertions(+), 27 deletions(-)
>
>    

      parent reply	other threads:[~2010-04-10 10:55 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-10  6:49 [PATCH v3 0/3] add high resolution sched_clock() for MIPS Wu Zhangjin
2010-04-10  6:49 ` [PATCH v3 1/3] MIPS: add a common mips_cyc2ns() Wu Zhangjin
2010-04-10  6:49 ` [PATCH v3 2/3] MIPS: cavium-octeon: rewrite the sched_clock() based on mips_cyc2ns() Wu Zhangjin
2010-04-10  6:49 ` [PATCH v3 3/3] MIPS: r4k: Add a high resolution sched_clock() Wu Zhangjin
2010-04-10 10:55 ` Ralf Roesch [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4BC0590D.5080305@rw-gmbh.de \
    --to=ralf.roesch@rw-gmbh.de \
    --cc=ddaney@caviumnetworks.com \
    --cc=linux-mips@linux-mips.org \
    --cc=ralf@linux-mips.org \
    --cc=wuzhangjin@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox