Re: 2.6.22-rc3-mm1: __attribute__((weak)) considered harmful

Russell King
2007-06-05T03:59:27Z

On Tue, Jun 05, 2007 at 01:52:38AM +0200, Martin Peschke wrote:
> Andrew Morton wrote:
> >On Sat, 2 Jun 2007 19:14:25 +0200
> >Adrian Bunk <bunk@stusta.de> wrote:
> >
> >>statistics-infrastructure-make-printk_clock-a-generic-kernel-wide-nsec-resolution.patch
> >>shows why __attribute__((weak)) is harmful because you don't see if a
> >>required non-weak implemtation is missing:
> >>
> >>In this case, the weak printk_clock() was renamed to timestamp_clock(),
> >>but the ARM and i386 implementations weren't renamed...
> >>
> >
> >printk_clock() is sched_clock() in disguise, and I'm not sure that making
> >sched_clock() more widely available in this fashion is something that we
> >want to do anyway.

Note that sched_clock() can not be used early on ARM; it might want to
access MMIO which is not accessible until later in setup_arch(). This
is why ARM's printk_clock() divorces itself from sched_clock().

> As to timestamp_clock(): its useful for statistics, but still a minor
> feature. It would be unfortuante if that was the stumbling block for my
> patches. Am I right that the fix for the issue pointed at by Adrian is to
> rename those two occurrences of printk_clock()? Do you want me to submit a
> patch?

If it's ends up being based upon sched_clock() instead of printk_clock()
on ARM then it'll break stuff horribly (== non-bootable kernels.)

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/