Re: compilation 2.4.20 & erreurs SCSI

Top Page

Reply to this message
Author: Francois-Xavier Kowalski
Date:  
To: guilde
Subject: Re: compilation 2.4.20 & erreurs SCSI
chapron wrote:

> [...]
> Je te redonne le ".config" que tu avais fait. J'espere que cela aidera.
> J'esperais que le choix P4 permettrait d'activer l'hypertreading que
> je souhaite utiliser.



C'est effectivement un point que j'avais oublie. Une compilation en
P-III ne permettra pas ce support. Une petite analyse plus precise de
l'erreur s'impose. Je garde la GUILDE en copie, car cette petite analyse
peut interresser qq'un pour depetrer en vitesse -- sans bug-fix -- une
compilation noyau.

> gcc -D__KERNEL__ -I/usr/src/linux-2.4.20/include -Wall
> -Wstrict-prototypes
> -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer
> -pipe -mpreferred-stack-boundary=2 -march=i686 -DMODULE -DMODVERSIONS
> -include /usr/src/linux-2.4.20/include/linux/modversions.h -nostdinc
> -iwithprefix include -DKBUILD_BASENAME=scsi_syms -DEXPORT_SYMTAB -c
> scsi_syms.c
>
> ld -m elf_i386 -r -o scsi_mod.o scsi.o hosts.o scsi_ioctl.o constants.o
> scsicam.o scsi_proc.o scsi_error.o scsi_obsolete.o scsi_queue.o
> scsi_lib.o
> scsi_merge.o scsi_dma.o scsi_scan.o scsi_syms.o
>
> ln -sf sim710.scr fake7.c
>
> gcc -E -D__KERNEL__ -I/usr/src/linux-2.4.20/include -traditional
> -DCHIP=71
> 0 fake7.c | grep -v '^#' | perl -s script_asm.pl -ncr710
>
> script_asm.pl : Illegal combination of registers in line 72 : MOVE CTEST7
> & 0xef TO CTEST7
> Either source and destination registers must be the same,
> or either source or destination register must be SFBR.
> make[2]: *** [sim710_d.h] Error 255
> make[2]: Leaving directory `/usr/src/linux-2.4.20/drivers/scsi'
> make[1]: *** [_modsubdir_scsi] Error 2
> make[1]: Leaving directory `/usr/src/linux-2.4.20/drivers'
> make: *** [_mod_drivers] Error 2



D'abord localiser le driver:

[fxk@fuerteventura linux-2.4.20]> find drivers/scsi/ -type f -name "sim710"
drivers/scsi/sim710.c


Depuis le repertoire racine qui contient ce driver, localiser le
Makefile qui est en charge de le compiler:

[fxk@fuerteventura linux-2.4.20]> find drivers/scsi -exec grep -l sim710 {} \;
drivers/scsi/Makefile
drivers/scsi/sim710.scr
drivers/scsi/sim710.h
drivers/scsi/sim710.c
drivers/scsi/.depend
drivers/scsi/sim710.o
drivers/scsi/.sim710.o.flags

Puis savoir quelle est l'Option de configuration qui l'active:

[fxk@fuerteventura linux-2.4.20]> grep sim710 drivers/scsi/Makefile
obj-$(CONFIG_SCSI_SIM710)       += sim710.o
sim710_d.h: sim710.scr script_asm.pl
        ln -sf sim710.scr fake7.c
        mv script.h sim710_d.h
        mv scriptu.h sim710_u.h
sim710_u.h: sim710_d.h
sim710.o : sim710_d.h



L'option de config est donc CONFIG_SCSI_SIM710. Regarder quelle est la
documentation de cette option, dans le fichier Documentation/Configure.help.

CONFIG_SCSI_SIM710
This is a simple driver for NCR53c710 based SCSI host adapters.

More complex drivers for this chip are available ("NCR53c7,8xx SCSI
support", above), but they require that the scsi chip be able to do
DMA block moves between memory and on-chip registers, which can
cause problems under certain conditions. This driver is designed to
avoid these problems and is intended to work with any Intel machines
using 53c710 chips, including various Compaq and NCR machines.

Please read the comments at the top of the file
<file:drivers/scsi/sim710.c> for more information.

If you want to compile this driver as a module ( = code which can be
inserted in and removed from the running kernel whenever you want),
say M here and read <file:Documentation/modules.txt>. The module
will be called sim710.o.


Rendu a ce point, il te faut savoir si ta carte SCSI (car tu en as une,
je crois) est une NCR710 ou un autre modele.

   1. Si ta carte est une NCR710, il te faut tenter une compilation en
      incluant le driver dans le noyau lui-meme, au lieu de faire un
      module chargeable. Si tu veux bien, je repondrai a cette question
      si besoin est seulement.
   2. Si ce n'est pas le cas, il faut simplement devalider l'option en
      question dans ton .config.


Dans ce qui suit, je n'utilises *pas* le .config que tu m'as envoye en
prive, car c'est celui issu des essais avec Nicolas, ou le support SCSI
est desactive. J'utilise un modele de noyau RedHat sur base "bigmem", a
savoir
"/usr/src/linux-2.4.18-27.8.0/configs/kernel-2.4.18-i686-bigmem.config"
qui est compile par default pour les P-III.

Je fais les manips suivantes:

- CONFIG_MPENTIUMIII=y
+ # CONFIG_MPENTIUMIII is not set
# CONFIG_MK7 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
- # CONFIG_MPENTIUM4 is not set
+ CONFIG_MPENTIUM4=y
...
CONFIG_SCSI_QLOGIC_FC=m
- CONFIG_SCSI_SIM710=m
+ # CONFIG_SCSI_SIM710 is not set
CONFIG_SCSI_SYM53C416


Puis la manip classique -- avec reponse negative a toutes les questions.

make oldconfig


Et enfin la compilation & installation

make bzImage && make modules && make install && make modules_install


Resultat... au prochain numero: il est tard, l'ordinateur est bruyant &
la compil' prends du temps.

Yves, je t'envoie le .config genere en prive histoire que tu puisses le
tester.

A+

--
Francois-Xavier 'FiX' KOWALSKI