From: Andrew Morton <akpm@linux-foundation.org>
To: Mike Frysinger <vapier@gentoo.org>
Cc: Luca Barbieri <luca@luca-barbieri.com>, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] lib/atomic64_test: do not build on non-atomic64 systems
Date: Fri, 22 Oct 2010 14:00:44 -0700 [thread overview]
Message-ID: <20101022140044.d5b0e9ce.akpm@linux-foundation.org> (raw)
In-Reply-To: <AANLkTi=MRU3Qi6NQfqnCwX34sHL2Rx8AyaqRwrxNVQoM@mail.gmail.com>
On Fri, 22 Oct 2010 16:47:36 -0400
Mike Frysinger <vapier@gentoo.org> wrote:
> On Fri, Oct 22, 2010 at 16:31, Andrew Morton wrote:
> > On Fri, 22 Oct 2010 16:14:49 -0400 Mike Frysinger wrote:
> >> On Thu, Oct 21, 2010 at 19:24, Andrew Morton wrote:
> >> > On Thu, 21 Oct 2010 19:04:36 -0400 Mike Frysinger wrote:
> >> >> you can say "lazy" all you like. __i dont see the point in going that route.
> >> >
> >> > Try
> >> >
> >> > __ __ __ __grep HAVE arch/x86/Kconfig
> >> >
> >> > If all of those were instead to use some random #define which the
> >> > particular feature happened to define in some header file then we would
> >> > have a mess on our hands.
> >>
> >> fun times. __new tact.
> >>
> >> Luca: your new atomic64_t test build fails on all arches that lack
> >> atomic64_t. __please fix.
> >
> > That's only part of the problem. __The following won't build also:
> >
> > net/rds
>
> not true. that code base is already using my suggestion:
> net/rds/rds.h:
> #ifdef ATOMIC64_INIT
> #define KERNEL_HAS_ATOMIC64
> #endif
IOW, your suggestion led to a nasty local hack. One which would be
unneeded had we implemented this properly via Kconfig.
> but this isnt a matter of "use atomic64_t or atomic_t" ... this code
> manually takes care of doing a spinlock around a u64 member. i
> imagine if you'd notice this before it was merged you'd have made them
> fix this cleanly.
I'd have suggested that they use Kconfig.
I'd also have suggested that they implement a generic spinlocked
atomic64 library rather than open-coding stuff down in net/rds/.
People do tend to prefer to do localised expedient things rather than
sticking their necks out and implementing proper, generic kernel-wide
functions. If I see it happen, I'll tell them. Usually I don't see
it until months after it's merged :(
> > kernel/perf_event.c
>
> also not true -- this requires arches to opt in to HAVE_PERF_EVENTS
> and only arches which have validated it works (i.e. they have
> atomic64) have done that
kernel/perf_event.c has a dependency on the missing CONFIG_HAVE_ATOMIC64.
> > drivers/staging/octeon
>
> not an issue -- this depends on CPU_CAVIUM_OCTEON which is only
> provided by mips which provides atomic64
>
> > drivers/infiniband/hw
>
> the only code usage of atomic64 is in code that already depends on the
> Kconfig symbol 64BIT
Again, that's just wrong and it's a fluke. Will break if a 64-bit arch
doesn't implement atomic64.
> as for why it depends on this, i dont know ... maybe it's because of atomic64_t
>
> > Or, much better, we implement atomic64 on the offending architectures.
>
> i dont want to give people the impression that 64 atomics are free to
> use if in reality they're pretty expensive. on a Blackfin system, i'd
> need to implement every access with basically a spinlock.
spin_lock_irqsave(), really. Becomes local_irq_save() on UP.
But what's the alternative? Either entire features become unavailable
on those architectures or we grow local hacks like rds_ib_get_ack()
which, yup, uses spin_lock_irqsave().
> > with more to come. These things should be made dependent upon
> > CONFIG_HAVE_ATOMIC64 in Kconfig. (Can't use #ifdef ATOMIC64_INIT for this!)
>
> these are actually compelling arguments unlike the original one. even
> if all these examples ended up not really being true (only the new
> atomic64_t test code is available to build on arches that lack
> atomic64).
Really, the atomic64_t implementation was imcomplete. It should have
provided the generic arch-neutral fallback code.
next prev parent reply other threads:[~2010-10-22 21:00 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-16 17:27 [PATCH] lib/atomic64_test: do not build on non-atomic64 systems Mike Frysinger
2010-10-21 22:02 ` Andrew Morton
2010-10-21 22:23 ` Mike Frysinger
2010-10-21 22:55 ` Andrew Morton
2010-10-21 23:04 ` Mike Frysinger
2010-10-21 23:24 ` Andrew Morton
2010-10-22 20:14 ` Mike Frysinger
2010-10-22 20:31 ` Andrew Morton
2010-10-22 20:47 ` Mike Frysinger
2010-10-22 21:00 ` Andrew Morton [this message]
2010-10-22 21:07 ` Mike Frysinger
2010-10-24 16:20 ` Roland Dreier
2010-10-25 1:52 ` Andrew Morton
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=20101022140044.d5b0e9ce.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luca@luca-barbieri.com \
--cc=vapier@gentoo.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.