[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <alpine.LFD.2.00.0905261350450.3582@localhost.localdomain>
Date: Tue, 26 May 2009 14:04:39 +0200 (CEST)
From: Thomas Gleixner <tglx@...utronix.de>
To: Stanislaw Gruszka <sgruszka@...hat.com>
cc: "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
Oleg Nesterov <oleg@...hat.com>,
Peter Zijlstra <a.p.zijlstra@...llo.nl>,
Ingo Molnar <mingo@...e.hu>,
Andrew Morton <akpm@...ux-foundation.org>,
linuxppc-dev@...abs.org
Subject: Re: [PATCH resend4 2/3] itimers: fix periodic tics precision
On Tue, 26 May 2009, Stanislaw Gruszka wrote:
> On Mon, 25 May 2009 14:51:32 +0200
> Stanislaw Gruszka <sgruszka@...hat.com> wrote:
>
> > On Mon, 25 May 2009 14:32:14 +0200 (CEST)
> > Thomas Gleixner <tglx@...utronix.de> wrote:
> >
> > > On Mon, 25 May 2009, Stanislaw Gruszka wrote:
> > > > @@ -904,6 +905,7 @@ void __init time_init(void)
> > > > tb_ticks_per_usec = ppc_tb_freq / 1000000;
> > > > tb_to_us = mulhwu_scale_factor(ppc_tb_freq, 1000000);
> > > > calc_cputime_factors();
> > > > + cputime_one = jiffies_to_cputime(1);
> > >
> > > 1) The variable name is misleading.
> >
> > What about cputime_one_jiffy ?
> >
> > > 2) The patch breaks all powerpc platforms which have
> > > CONFIG_VIRT_CPU_ACCOUNTING=n and ia64 with
> > > CONFIG_VIRT_CPU_ACCOUNTING=y
> >
> > Stupid me, in asm-generic/cputime.h should be
> > #define cputime_one jiffies_to_cputime(1)
>
> Hmmm, I'm confused. Perhaps I missed something, but I think patch was ok.
> For powerpc and ia64 and CONFIG_VIRT_CPU_ACCOUNTING=n definitions from
> asm-generic/cputime.h where used. In this file was:
>
> #define cputime_one (1UL)
In time_init you add unconditionally:
> > > > @@ -904,6 +905,7 @@ void __init time_init(void)
> > > > tb_ticks_per_usec = ppc_tb_freq / 1000000;
> > > > tb_to_us = mulhwu_scale_factor(ppc_tb_freq, 1000000);
> > > > calc_cputime_factors();
> > > > + cputime_one = jiffies_to_cputime(1);
I doubt that the compiler will happy about that as it expands to
(1UL) = jiffies_to_cputime(1)
or
jiffies_to_cputime(1) = jiffies_to_cputime(1)
in the CONFIG_VIRT_CPU_ACCOUTING=n case.
> and that correct as jiffies_to_cputime(x) is just (x)
>
> For CONFIG_VIRT_CPU_ACCOUTING=y:
> - For powerpc additional variable was declared and computed in
> initialization time. Declaration of was in __KERENEL__ scope.
> - For ia64: cputime_one was defined as jiffies_to_cputime(1)
My bad, I missed the ia64 hunk.
> Does we really need such optimization (because before usage of
> jiffies_to_cputime(1) was just fine) ?
Well, there is a subtle difference between working and nobody noticing
the overhead.
If we notice such heavy instructions in a code path we change then
ignoring the optimization with the argument that it worked before is
just plain wrong.
Thanks,
tglx
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists