From: Petr V. <VAN...@vc...> - 2001-01-11 15:07:54
|
On 11 Jan 01 at 16:02, Adam Huuva wrote: > Petr Vandrovec wrote: > > > > On 11 Jan 01 at 12:50, Adam Huuva wrote: > > > > > > > > > > Try the lastest CVS. It is fixed. > > > OK. It is. Now I have this instead: > > > > > from dummycon.c:11: > > > /SDA3/usr/src/linux_patched/include/asm/hw_irq.h: In function > > > `x86_do_profile': > > > /SDA3/usr/src/linux_patched/include/asm/hw_irq.h:198: `current' > > > undeclared (first use in this fun > > > ction) > > > > If you are reporting bug, try it first with stock kernel. You cannot > > have Athlon/K7 with SMP. Either downgrade to UP, or to PIII. > > > I have a(one) PIII. SMP was turned on by default. Apparently it does no > harm, but I've turned it off now. > Athlon/K7? I don't understand. Something I missed? You must had select 'Athlon/K7' in configuration. In that case memcpy uses if (len < 512 || in_interrupt()) __memcpy(...); else __3dnow_memcpy(...); On UP it works. But on SMP, in_interrupt() requires current and structure task_struct. And #include <linux/sched.h>, which defines task_struct, needs string.h... So this cannot work... There were two different patches sent to linux-kernel, how to fix it - - one was moving memcpy out-of-line, another was to not use current->processor, but ((unsigned long*)(current))[0x34/4]. One better than another ;-) Moving code out-of-line for SMP is probably better, as code generated by in_interrupt() on SMP is loooooong. Petr |