Re: linux-next: Tree for Nov 14 (gpu/drm/i915)

From: Andrew Morton
Date: Wed Nov 14 2012 - 15:17:39 EST


On Wed, 14 Nov 2012 11:41:49 -0800
Randy Dunlap <rdunlap@xxxxxxxxxxxxx> wrote:

> On 11/13/2012 09:30 PM, Stephen Rothwell wrote:
>
> > Hi all,
> >
> > News: next-20121115 (i.e. tomorrow) will be the last release until
> > next-20121126 (which should be just be after -rc7, I guess - assuming
> > that Linus does not release v3.7 before then), so if you want something
> > in linux-next for a reasonable amount of testing, it should probably be
> > committed tomorrow.
> >
> > Changes since 20121113:
> >
>
>
>
> on i386:
>
> ERROR: "__build_bug_on_failed" [drivers/gpu/drm/i915/i915.ko] undefined!
>
> Reference to that symbol is found in
> i915_gem_execbuffer.o. Reference to BUILD_BUG_ON() is found in
> i915_gem_execbuffer.c:
>
> static struct eb_objects *
> eb_create(int size)
> {
> struct eb_objects *eb;
> int count = PAGE_SIZE / sizeof(struct hlist_head) / 2;
> BUILD_BUG_ON(!is_power_of_2(PAGE_SIZE / sizeof(struct hlist_head)));
>

Where to start.

- eb_create() has no business assuming that the hlist_head has any
particular size. We could easily add some conditionally-compiled
debug fields in there, and drm blows up.

- The assertion is obviously true at present, so I assume that gcc
screwed up and failed to reduce all that to a compile-time constant.

- We have a BUILD_BUG_ON_NOT_POWER_OF_2(). Use it?

- This code is using PAGE_SIZE to scale a kernel data structure.
PAGE_SIZE can vary by a factor of 16, depending on Kconfig. This
can result in 64k PAGE_SIZE machines exhibiting different beahviour
from that which the testers saw.

Don't do it. It's better to hard-wire 4096.

--
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/