Re: Linux-2.6.13-rc7
From: Alexey Dobriyan
Date: Thu Aug 25 2005 - 02:19:14 EST
On Wed, Aug 24, 2005 at 10:38:59PM +0100, Al Viro wrote:
> On Thu, Aug 25, 2005 at 12:13:02AM +0400, Alexey Dobriyan wrote:
> > On Wed, Aug 24, 2005 at 08:15:44PM +0100, Al Viro wrote:
> > > Most of the remaining stuff is for
> > > m68k (and applies both to Linus' tree and m68k CVS); I'll send that today
> > > and if Geert ACKs them, we will be _very_ close to having 2.6.13 build
> > > out of the box on the following set:
> > > alpha,
> >
> > Do I understand correctly that alpha in "--><-- close" list?
> >
> > 2.6.13-rc7, alpha, allmodconfig:
> >
> > LD .tmp_vmlinux1
> > net/built-in.o: In function `kmalloc':
> > include/linux/slab.h:92: undefined reference to `__you_cannot_kmalloc_that_much'
> > include/linux/slab.h:92: undefined reference to `__you_cannot_kmalloc_that_much'
> >
> > Guilty: net/ipv4/route.c
> >
> > $ nm net/ipv4/route.o | grep kmalloc
> > U __you_cannot_kmalloc_that_much
>
> Not here...
>
> CC arch/alpha/lib/udelay.o
> LD .tmp_vmlinux1
[snip]
> Allmodconfig on alpha, alpha-linux-gcc (GCC) 4.0.1 20050727 (Red Hat 4.0.1-5).
Mine is alpha-unknown-linux-gnu-gcc (GCC) 3.4.4 (Gentoo 3.4.4)
> Which place triggers it in your build?
net/ipv4/route.c:3152, call to rt_hash_lock_init().
>From preprocessed source (reformatted):
-----------------------------------------------------------------------
typedef struct {
volatile unsigned int lock;
int on_cpu;
int line_no;
void *previous;
struct task_struct * task;
const char *base_file;
} spinlock_t;
static inline void *kmalloc(size_t size, unsigned int flags)
{
if (__builtin_constant_p(size)) {
int i = 0;
if (size <= 64) goto found; else i++;
if (size <= 128) goto found; else i++;
if (size <= 192) goto found; else i++;
if (size <= 256) goto found; else i++;
if (size <= 512) goto found; else i++;
if (size <= 1024) goto found; else i++;
if (size <= 2048) goto found; else i++;
if (size <= 4096) goto found; else i++;
if (size <= 8192) goto found; else i++;
if (size <= 16384) goto found; else i++;
if (size <= 32768) goto found; else i++;
if (size <= 65536) goto found; else i++;
if (size <= 131072) goto found; else i++;
{
extern void __you_cannot_kmalloc_that_much(void);
__you_cannot_kmalloc_that_much();
}
[snip]
-----------------------------------------------------------------------
{
int i;
rt_hash_locks = kmalloc(sizeof(spinlock_t) * 4096, (0x10u | 0x40u | 0x80u));
if (!rt_hash_locks)
panic("IP: failed to allocate rt_hash_locks\n");
for (i = 0; i < 4096; i++)
do {
*(&rt_hash_locks[i]) = (spinlock_t){ 0, -1, 0, ((void *)0), ((void *)0), ((void *)0) };
} while(0);
};
-----------------------------------------------------------------------
-
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/