Re: "modularized" 2.4.34.4 -> ide-core "unresolved symbols"

Willy Tarreau
2007-05-08T21:16:54Z

Hi Zbigniew,

[first, please always keep people in CC when posting on LKML]

On Tue, May 08, 2007 at 10:23:34PM +0200, Zbigniew Baniewski wrote:
> On Sun, May 06, 2007 at 06:36:45AM +0200, Willy Tarreau wrote:
>
> > Could you please be a bit more precise :
> > - config
>
> Below.

Thanks, I could reproduce.

> > - what are the unresolved symbols ?
>
> I don't know. When trying to install "generated" kernel-and-so-on.deb file,
> there is an error message:
>
> depmod: *** Unresolved symbols in /lib/modules/2.4.34/kernel/drivers/ide/ide-core.o

Here is the complete error :

depmod: *** Unresolved symbols in /lib/modules/2.4.34/kernel/drivers/ide/ide-core.o
depmod: init_cmd640_vlb

> See also other similar reports, f.e.:
>
> http://linux.derkeiler.com/Mailing-Lists/Kernel/2006-05/msg07966.html
> http://www.unixadmintalk.com/f59/kernel-compile-problem-afs-122462/
> http://www.captain.at/programming/rtai/kernel-2.4.php

OK I've checked them now. The right solution is the one suggested in the last
link above, which is also what Robert Hancock said too : not use CONFIG_IDE=m.

The reason is very simple : the IDE code may call several other drivers, some
of which are modules, some of which are hard-linked into the kernel. It has
no reliable way of knowing which ones will be available. In fact, the build
system inside drivers/ide is not perfect as it's not an easy part.

The other solution in your particular situation is to replace in your .config:
CONFIG_BLK_DEV_CMD640=y

with :
CONFIG_BLK_DEV_CMD640=m

because only cmd640 causes trouble. I've tested right here and it fixes the
problem as expected. After all, nearly all your other IDE drivers are modules.

> > - link to the patch you are talking about ?
>
> It's the patch made by Arkadiusz Miskiewicz:
>
> http://www.ussg.iu.edu/hypermail/linux/kernel/0311.2/1136.html

OK thanks. It was merged, but it _seems_ to require that you link ide-core
with the kernel and only use ide-probe-mini to probe/unprobe devices. Never
tried this way though.

Regards,
Willy