Re: Alpha SMP status
On Tue, Dec 12, 2006 at 11:26:18AM +0530, Aneesh Kumar K.V wrote:
> On Tue, 2006-12-12 at 10:23 +0900, James Andrewartha wrote:
> > Hi all,
> >
> > Some of you may be aware that SMP has been broken on Alpha for most of
> > 2.6. As of linux-image-2.6.18-3-smp, I'm pleased to report that it boots
> > and runs acceptably because scsi_mod is compiled in (bug 369517). However,
> > things like ip_conntrack and ipv6 are still broken - inserting them gives
> > errors like "Could not allocate 8 bytes percpu data". This explains why
> > all the scsi drivers were broken - scsi_mod also couldn't allocate percpu
> > data and so wasn't loaded. As with scsi, you can work around this by
> > compiling them (ipv6 etc.) in to the kernel rather than as modules.
> >
> > Anyway, this points to the core of the problem as being something to do
> > with percpu data. Hopefully this narrows it down enough for someone
> > familiar with the kernel to have a go at finding and fixing the problem.
>
> May be it is running out of space for per cpu area. You can try by
> increasing the PERCPU_ENOUGH_ROOM in include/linux/percpu.h and see if
> get pass. I looked other 64 bit archs x86_64 and ia64 and they both have
> different value. May be alpha also needs a different value.
These patches have been useful for the AlphaCore-2 2.6.15-based
kernels in getting SMP working, though we seem to also need to build
part of the SCSI subsystem into the kernel as well.
--Jay++
---------------------------------------------------------------
Jay A Estabrook HPTC - XC I & B
Hewlett-Packard Company - ZKO1-3/D-B.8 (603) 884-0301
110 Spit Brook Road, Nashua NH 03062 Jay.Estabrook@hp.com
---------------------------------------------------------------
--- linux-2.6.15/include/asm-alpha/percpu.h.orig 2006-01-03 06:21:10.000000000 +0300
+++ linux-2.6.15/include/asm-alpha/percpu.h 2006-03-22 16:46:05.000000000 +0300
@@ -1,6 +1,8 @@
#ifndef __ALPHA_PERCPU_H
#define __ALPHA_PERCPU_H
+#define PERCPU_ENOUGH_ROOM (192*1024)
+
#include <asm-generic/percpu.h>
#endif /* __ALPHA_PERCPU_H */
--- linux-2.6.15/kernel/module.c.ORIG 2006-02-28 17:09:53.000000000 -0500
+++ linux-2.6.15/kernel/module.c 2006-02-28 17:11:57.000000000 -0500
@@ -293,8 +293,8 @@
return ptr;
}
- printk(KERN_WARNING "Could not allocate %lu bytes percpu data\n",
- size);
+ printk(KERN_WARNING "Could not allocate %lu bytes percpu data for module %s\n",
+ size, name);
return NULL;
}
Reply to: