From: Gabriel Paubert <paubert@iram.es>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Yoann Vandoorselaere <yoann@prelude-ids.org>,
cpufreq@lists.arm.linux.org.uk, cpufreq@www.linux.org.uk,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH]: fix 32bits integer overflow in loops_per_jiffy calculation
Date: Thu, 22 Aug 2002 12:12:12 +0000 [thread overview]
Message-ID: <3D64D51C.9040603@iram.es> (raw)
In-Reply-To: 20020822130200.31767@192.168.4.1
Hi Ben,
> None of the above can happen in the domain of application of this
> function. It's used to scale up/down the loops_per_jiffy value when
> scaling the CPU frequency. Anyway, the above isn't worse than the
> original function. Ideally, we would want 64 bits arithmetics, but we
> decided long ago not to bring the libcc support routines for that in
> the kernel.
Well, first on sane archs which have an easily accessible, fixed
frequency time counter, loops_per_jiffy should never have existed :-)
Second, putting this code there means that one day somebody will
inevitably try to use it outside of its domain of operation (like it
happened for div64 a few months ago when I pointed out that it would not
work for divisors above 65535 or so).
Finally, I agree that we should not import libgcc, but for example on
PPC32 the double lengths shifts (__ashrdi3, __ashldi3, and __lshsldi3)
are implemented somewhere, and the assembly implementation (directly
taken from some appendix in PPC documentation, I just slightly twisted
__ashrdi3 to make it branchless AFAIR) is actually way faster than the
one in libgcc ;-), and less than half the size.
Adding a few subroutines that implement a subset of libgcc's
functionality is necessary for most archs (which functions are needed is
arch, and sometimes compiler's, dependent).
In this case a generic scaling function, while not a standard libgcc/C
library feature has potentially more applications than this simple
cpufreq approximation. But I don't see very much the need for scaling a
long (64 bit on 64 bit archs) value, 32 bit would be sufficient.
Regards,
Gabriel.
next prev parent reply other threads:[~2002-08-22 12:08 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-08-22 13:02 [PATCH]: fix 32bits integer overflow in loops_per_jiffy calculation Benjamin Herrenschmidt
2002-08-22 12:12 ` Gabriel Paubert [this message]
2002-08-22 14:31 ` Benjamin Herrenschmidt
2002-08-22 15:23 ` Gabriel Paubert
2002-08-22 15:59 ` Yoann Vandoorselaere
2002-08-22 17:22 ` [PATCH]: fix 32bits integer overflow in loops_per_jiffycalculation george anzinger
2002-08-22 16:51 ` [PATCH]: fix 32bits integer overflow in loops_per_jiffy calculation Dominik Brodowski
2002-08-22 19:35 ` Benjamin Herrenschmidt
2002-08-22 17:46 ` Dominik Brodowski
2002-08-22 18:02 ` Yoann Vandoorselaere
2002-08-22 20:00 ` Benjamin Herrenschmidt
-- strict thread matches above, loose matches on Subject: below --
2002-08-22 9:50 Yoann Vandoorselaere
2002-08-22 10:21 ` Gabriel Paubert
2002-08-22 13:00 ` Benjamin Herrenschmidt
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=3D64D51C.9040603@iram.es \
--to=paubert@iram.es \
--cc=benh@kernel.crashing.org \
--cc=cpufreq@lists.arm.linux.org.uk \
--cc=cpufreq@www.linux.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=yoann@prelude-ids.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.