Re: [GIT PULL] percpu fixes for 2.6.32-rc6

From: Ingo Molnar
Date: Wed Nov 11 2009 - 14:58:11 EST



* Tejun Heo <tj@xxxxxxxxxx> wrote:

> Hello, Ingo.
>
> Ingo Molnar wrote:
> >> I was mostly worrying about introducing unrelated bug while changing.
> >> Anyways, one patch it is. I'll route it through tip as suggested by
> >> Ingo in a few hours.
> >
> > Btw., i'd suggest you keep it in your percpu tree as usual and send it
> > to Linus directly - i offered testing for the cleanup patch (and can
> > pull your patch for such a purpose), it doesnt 'have' to go via -tip.
>
> Can you please then pull from the following tree for testing? I'll
> push it to Linus after a couple of days if nothing explodes.
>
> git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu.git for-linus
>
> Thanks.

Sure - pulled it into tip:master for testing earlier today and after a
few hours of it's looking good so far in x86 runtime tests. I also did
cross-build testing to a dozen non-x86 architectures and it was fine
there too.

btw., there's some 80-cols checkpatch warning artifacts in the commit:

+ if (pcpu_extend_area_map(chunk, new_alloc) < 0) {
+ err = "failed to extend area map of "
+ "reserved chunk";

which suggest that the logic here is perhaps nested a bit too deep. It
could be improved by moving the reserved allocation branch of
pcpu_alloc():

if (reserved && pcpu_reserved_chunk) {

into a helper inline function, something like __pcpu_alloc_reserved().

It's a rare special case anyway. It could be changed to return with the
pcpu_lock always taken, so the above branch would look like this:

if (unlikely(reserved)) {
off = __pcpu_alloc_reserved(&chunk, size, align, &err);
if (off < 0)
goto fail_unlock;
goto area_found;
}

Which is a cleaner flow IMO, and which simplifes pcpu_alloc().

And the error string should be:

err = "failed to extend area map of reserved chunk";

(Ignore the checkpatch complaint.)

What do you think?

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/