# [Modules] unload ?? [résolu]

## lbr

Chers amis

Je viens soumettre à votre sagacité un problème dont je ne trouve pas de solution ...

Pour installer vmware il est conseillé de valider la possibilité de décharger les modules. J'ai donc recompilé le kernel en tenant compte de la remarque :

```
lbr boot # diff config-2.6.10-r6-custom1 config-2.6.10-r6-custom2

4c4

< # Mon Feb 14 16:55:36 2005

---

> # Tue Feb 15 10:36:32 2005

51c51,52

< # CONFIG_MODULE_UNLOAD is not set

---

> CONFIG_MODULE_UNLOAD=y

> # CONFIG_MODULE_FORCE_UNLOAD is not set

55a57

> CONFIG_STOP_MACHINE=y

```

Et bien figurez-vous, que quand je boot sur le kernel custom2, la session de boot reste bloquée sur  *Quote:*   

> coldplugging pci devices

 

Ceci jusqu'à ce que j'éteigne violemment ...

Que faire ???Last edited by lbr on Wed Feb 23, 2005 10:55 am; edited 2 times in total

----------

## LostControl

```
$ grep CONFIG_STOP_MACHINE /usr/src/linux/.config

$
```

C'est quoi cette option ???

Ton problème ne vient pas du déchargement des modules possible à mon avis...

----------

## lbr

Je viens de fairre qq essais : quand tu selectionnes 

```
loadable module support/ module unloading 
```

 cette ligne (CONFIG_STOP_MACHINE=y) apparait dans le .config  :Confused: 

----------

## cylgalad

Pas avec un noyau à la vanille en tout cas  :Smile: 

----------

## lbr

possible : j'ai le gentoo-dev-sources ...

----------

## Polo

moi aussi j'ai le gentoo-dev-source, et cette ligne n'apparait pas dans mon .config....

j'ai la version 2.6.10-r6 ....

----------

## lbr

Mais elle n'est présente dans .config que si loadable module support/ module unloading est sélectionnée : c'est aussi ton cas ?

----------

## Polo

```
paul@portable paul $ zgrep MODULE /proc/config.gz

CONFIG_MODULES=y

CONFIG_MODULE_UNLOAD=y

CONFIG_MODULE_FORCE_UNLOAD=y

# CONFIG_MODULE_SRCVERSION_ALL is not set
```

oui j'ai le module unloading... c'est quand meme pratique quelquefois (pas obligé de rebooter quand tu veux décharger un module).... j'avais fait cette *erreur* une fois. depuis j'ai retenu la lecon  :Razz: 

----------

## lbr

 :Question:  mais d'ou vient-il ce CONFIG_STOP_MACHINE ?  :Question: 

----------

## kernelsensei

moi aussi j'ai CONFIG_STOP_MACHINE=y et il apparait quand j'active le module unloading !

si vous voulez des infos, ya ca :

/usr/src/linux/kernel/stop_machine.c

et ca aussi 

```
config STOP_MACHINE

   bool

   default y

   depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU

   help

     Need stop_machine() primitive.

```

----------

## Polo

ah bah voila... je commencais a me douter que ca venait de l'architecture de la machine.....

vous etes sur P4 ht ? amd64 ? ou autre?

----------

## lbr

P4 HT ...

Mais penses-tu que ce soit ca qui empeche la séquence de boot d'aller au dela de "coldplugging pci devices" ???

----------

## lbr

 *kernel_sensei wrote:*   

> moi aussi j'ai CONFIG_STOP_MACHINE=y et il apparait quand j'active le module unloading !

 

et ca t'empêche de booter (j'imagine que non  :Wink: 

Donc mon pb est ailleurs mais où ????

@kernel_sensei : t'as coldplug ?

----------

## kernelsensei

 *lbr wrote:*   

>  *kernel_sensei wrote:*   moi aussi j'ai CONFIG_STOP_MACHINE=y et il apparait quand j'active le module unloading ! 
> 
> et ca t'empêche de booter (j'imagine que non 
> 
> Donc mon pb est ailleurs mais où ????
> ...

 

j'ai ni coldplug, ni hotplug de lancé !

----------

## lbr

En enlevant coldplug et hotplug du runlevel : ca va plus loin .... mais ca s'arrète à loading runlevel 3 ...

Ma seule solution est alors de ... rebooter !

Boudiou, ca commence à me chauffer cette affaire !

la seule différence entre config qui marche et celle qui ne marche pas c'est la possibilité de unloader les modules !

Je ne suis quand même pas le seul à vouloir un kernel  2.6.10 avec la possibilité de rmmod et du coldplug/hotplug !!!

J'ai beau parcourir google en tout sens : rien, niet, nista, nada, ... 

Une idée ?

j'avais oublié : nothing !

----------

## LostControl

Dans "/etc/conf.d/rc", vérifie que tu as ça :

```
RC_PARALLEL_STARTUP="no"
```

A+

----------

## lbr

 */etc/conf.d/rc wrote:*   

> 
> 
> # /etc/conf.d/rc:
> 
> # $Header: /home/cvsroot/gentoo-src/rc-scripts/etc/conf.d/rc,v 1.13 2004/02/26 18:01:29 azarah Exp $
> ...

 

no à la rubrique en question, donc ....

----------

## LostControl

 *lbr wrote:*   

> no à la rubrique en question, donc ....

 

Merde  :Sad:  J'aurais presque parié que c'était ça !

----------

## lbr

ben, j'aurais bien aimé que tu gagnes  :Wink: 

----------

## lbr

y'a rien dans google sur le sujet : à croire que je suis maudit !

----------

## TGL

Par curiosité, est-ce que tu peux nous faire un "lsmod" de quand tu es correctement booté avec le noyau qui marche ?

----------

## lbr

avec plaisir : 

```
lbr etc # lsmod

Module                  Size  Used by

ub                     16284  -

sr_mod                 15140  -

vmnet                  29212  -

vmmon                 168364  -

parport_pc             26180  -

lp                     11020  -

parport                34120  -

ohci_hcd               20744  -

natsemi                26592  -

bcm5700               137932  -

ahci                    9604  -

uhci_hcd               31888  -

nvidia               3465692  -

```

avec le kernel qui n'a pas unload à y ...

----------

## TGL

Ma très vague hypothèse vachement hypothétique serait que le noyau tente pendant le boot un nettoyage automatique d'un module que justement c'est pas une bonne idée de le virer. Pour vérifier un peu ça, je suggèrerai que tu refasses des essais avec plus de trucs en dur. Ça risque d'être un peu chiant ceci dit, mais bon, je vois pas trop d'autre piste pour l'instant. Perso je procederais dans cet ordre:

 - déjà, un essai sans le module nvidia, par acquis de conscience (toujours commencer par soupçonner ce qui est proprio...) ;

 - ensuite, un essai avec BLK_DEV_UB ("Low Performance USB Block driver") désactivé : je sais que ce module est un peu conflictuel avec tout ce qui est usb-storage, et je me demande si il pourrait pas aussi l'être avec les modules SATA ;

 - ensuite, un essai avec tout ce qui est SATA et USB en dur (les uhci/ohci/ahci, etc.). Là de deux choses l'une : 

 * si ça plante encore, c'est probablement que mon hypothèse était complètement bidon, parceque quand même, il restera pas grand chose de critique...

 * si ça plante plus, faudrait raffiner un peu, genre remettre l'USB en module mais garder le SATA en dur, etc.

----------

## lbr

Question un peu con : à chaque compil je passe monsieur propre ? (make mrproper).

----------

## TGL

Nan, pas la peine en principe.

----------

## yoyo

Le "lsmod" me paraît vraiment tout bizarre.

La colonne "Used by" vide, ça me rappelle vaguement un problème similaire rencontré ici.

Enfin, chez moi, j'ai par exemple : 

```
Module                  Size  Used by

parport                30920  2 parport_pc,lp
```

Tout ça pour dire qu'amha, le problème vient plutôt de la config kernel ou des modules qui n'ont pas été réinstallés pour le nouveau kernel (avec le "modules_unload").

En fait, il me semble vaguement comprendre que tu as le même noyau (au pif un gentoo-2.6.10-r6) avec différentes options de compils. Le problème, c'est que tu n'as qu'un "/lib/modules" correspondant. Du coup, les modules compilés avec le "modules_unload=no" ne sont pas compatibles avec le noyau compilé avec "modules_unload=yes".

Tu as bien fait "make menuconfig" puis sélection du "modules_unload", sauvegarde du fichier de config et "make clean && make && make modules_install" ???

----------

## TGL

Ah ouais, elle est super bien l'hypothèse de yoyo, à confirmer/infirmer de toute urgence  :Smile: 

----------

## lbr

 *yoyo wrote:*   

> 
> 
> Tu as bien fait "make menuconfig" puis sélection du "modules_unload", sauvegarde du fichier de config et "make clean && make && make modules_install" ???

 

Tout comme ca sauf make clean .... (je ne fais que make && make modules_install)

Je compile de ce pas avec un clean .... suite dans quelques instants ...

----------

## yoyo

 *lbr wrote:*   

> Tout comme ca sauf make clean .... (je ne fais que make && make modules_install)

 Dans le même ordre d'idée, tu montes bien "/boot" (si besoin) avant d'y copier ton nouveau noyau ? Tu ré-exécutes bien "lilo" (toujours si besoin) avec "/boot" monté et ton nouveau noyau dessus ?

----------

## lbr

voui je fais tout bien : 

```

make menuconfig

selection des options ad-hoc

exit /save .config

make clean && make && make modules_install

mount /boot

cp arch/i386/boot/bzImage /boot/kernel-2.6.10-r6-custom2

cp System.map /boot/System.map-2.6.10-r6-custom2

cp .config /boot/config-2.6.10-r6-custom2

```

ensuite dans grub ...

 *grub.conf wrote:*   

> 
> 
> default 0
> 
> timeout 10
> ...

 

ensuite reboot ...

et dans la séquence de boot ca reste désespérement coincé à 

```
coldplugging pci devices
```

 qui arrive avant 

```
coldplugging pnp devices
```

' Pourtant, j'y croyais à l'histoire de yoyo   :Sad: 

----------

## yoyo

Vraiment bizarre tout ça. En plus, j'arrive pas à remettre la main sur le thread où il y avait eu ce problème.

Une autre idée comme ça, tu n'aurais pas des modules externes au noyau (comme nvidia) ?? Si c'est le cas, il faut également les recompiler (valable pour les modules pcmcia, alsa , enfin tout module intallé avec "emerge paquet" quoi).

Mais bon, ça ne me paraît pas être la solution ...  :Confused: 

EDIT : après quelques recherches, j'ai trouvé ça : "Turning off CONFIG_PREEMPT seemed to help me."

Essaie en désactivant le preempt dans ton noyau avec "modules_unload".

----------

## TTK

Salut

Pour t'aider à dépister le pb, tu peux rajouter dans le script de coldplug, vers le début, un lsmod redirigé vers un fichier log. Du coup tu verras s'il te manque un module necessaire à tes périph PCI ...

On dirait en effet qu'un module indispensable a été unloadé.

Ensuite il faudra soit que tu compiles ce module en dur, soit que tu le configures bien pour qu'il se reload automagiquement.

HTH

----------

## blasserre

 *TGL wrote:*   

> 
> 
>  - ensuite, un essai avec tout ce qui est SATA et USB en dur (les uhci/ohci/ahci, etc.). Là de deux choses l'une : 
> 
>  * si ça plante encore, c'est probablement que mon hypothèse était complètement bidon, parceque quand même, il restera pas grand chose de critique...
> ...

 

Question idiote : t'as tenté le truc de TGL ?

Il me semble que lors de mon passage à nptl / udev ce weekend j'ai eu un freeze avec coldplug

que j'ai résolu en passant les modules SATA en dur

je t'avouerai que j'ai fait tout ça de manière un peu automatique (j'me suis pas mal amusé avec les modules SATA ce we) et je ne me souviens plus trop de mon prob... mais ton post m'a fait tilter, je me souviens même m'être dit : "pourquoi t'installe cette saloperie de coldplug qui sert à rien" 

enfin maintenant ça marche... 

j'ai plus qu'à trouver une utilité a coldplug   :Laughing: 

----------

## lbr

bon : j'ai mis plein de chose en dur ! 

diff sans_unload avecunload donne :

```
< # Mon Feb 14 16:55:36 2005

---

> # Wed Feb 23 11:20:13 2005

22c22

< CONFIG_LOCALVERSION=""

---

> CONFIG_LOCALVERSION="lbr"

26c26,27

< # CONFIG_BSD_PROCESS_ACCT is not set

---

> CONFIG_BSD_PROCESS_ACCT=y

> CONFIG_BSD_PROCESS_ACCT_V3=y

33c34,35

< # CONFIG_IKCONFIG is not set

---

> CONFIG_IKCONFIG=y

> CONFIG_IKCONFIG_PROC=y

51c53,54

< # CONFIG_MODULE_UNLOAD is not set

---

> CONFIG_MODULE_UNLOAD=y

> CONFIG_MODULE_FORCE_UNLOAD=y

55a59

> CONFIG_STOP_MACHINE=y

262,264c266,269

< # CONFIG_ISAPNP is not set

< # CONFIG_PNPBIOS is not set

< # CONFIG_PNPACPI is not set

---

> CONFIG_ISAPNP=y

> CONFIG_PNPBIOS=y

> CONFIG_PNPBIOS_PROC_FS=y

> CONFIG_PNPACPI=y

403c408

< CONFIG_BLK_DEV_SR=m

---

> CONFIG_BLK_DEV_SR=y

1199a1205

> # CONFIG_SND_AD1816A is not set

1203a1210

> # CONFIG_SND_ES968 is not set

1217a1225,1226

> # CONFIG_SND_ALS100 is not set

> # CONFIG_SND_AZT2320 is not set

1218a1228

> # CONFIG_SND_DT019X is not set

1297,1299c1307,1309

< CONFIG_USB_OHCI_HCD=m

< CONFIG_USB_UHCI_HCD=m

< CONFIG_USB_SL811_HCD=m

---

> CONFIG_USB_OHCI_HCD=y

> CONFIG_USB_UHCI_HCD=y

> # CONFIG_USB_SL811_HCD is not set

1316c1326

< CONFIG_USB_STORAGE=m

---

> CONFIG_USB_STORAGE=y

1340c1350

< CONFIG_USB_EGALAX=m

---

> # CONFIG_USB_EGALAX is not set

1381c1391,1413

< # CONFIG_USB_SERIAL is not set

---

> CONFIG_USB_SERIAL=m

> # CONFIG_USB_SERIAL_GENERIC is not set

> # CONFIG_USB_SERIAL_BELKIN is not set

> # CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set

> # CONFIG_USB_SERIAL_CYPRESS_M8 is not set

> # CONFIG_USB_SERIAL_EMPEG is not set

> # CONFIG_USB_SERIAL_FTDI_SIO is not set

> # CONFIG_USB_SERIAL_VISOR is not set

> CONFIG_USB_SERIAL_IPAQ=m

> CONFIG_USB_SERIAL_IR=m

> # CONFIG_USB_SERIAL_EDGEPORT is not set

> # CONFIG_USB_SERIAL_EDGEPORT_TI is not set

> # CONFIG_USB_SERIAL_IPW is not set

> # CONFIG_USB_SERIAL_KEYSPAN_PDA is not set

> # CONFIG_USB_SERIAL_KEYSPAN is not set

> # CONFIG_USB_SERIAL_KLSI is not set

> # CONFIG_USB_SERIAL_KOBIL_SCT is not set

> # CONFIG_USB_SERIAL_MCT_U232 is not set

> # CONFIG_USB_SERIAL_PL2303 is not set

> # CONFIG_USB_SERIAL_SAFE is not set

> # CONFIG_USB_SERIAL_CYBERJACK is not set

> # CONFIG_USB_SERIAL_XIRCOM is not set

> # CONFIG_USB_SERIAL_OMNINET is not set

1395c1427

< CONFIG_USB_PHIDGETKIT=m

---

> # CONFIG_USB_PHIDGETKIT is not set

1406c1438,1453

< # CONFIG_USB_GADGET is not set

---

> CONFIG_USB_GADGET=m

> # CONFIG_USB_GADGET_DEBUG_FILES is not set

> CONFIG_USB_GADGET_NET2280=y

> CONFIG_USB_NET2280=m

> # CONFIG_USB_GADGET_PXA2XX is not set

> # CONFIG_USB_GADGET_GOKU is not set

> # CONFIG_USB_GADGET_SA1100 is not set

> # CONFIG_USB_GADGET_LH7A40X is not set

> # CONFIG_USB_GADGET_DUMMY_HCD is not set

> # CONFIG_USB_GADGET_OMAP is not set

> CONFIG_USB_GADGET_DUALSPEED=y

> # CONFIG_USB_ZERO is not set

> # CONFIG_USB_ETH is not set

> # CONFIG_USB_GADGETFS is not set

> # CONFIG_USB_FILE_STORAGE is not set

> # CONFIG_USB_G_SERIAL is not set

1423,1428c1470,1471

< CONFIG_EXT3_FS=y

< CONFIG_EXT3_FS_XATTR=y

< # CONFIG_EXT3_FS_POSIX_ACL is not set

< # CONFIG_EXT3_FS_SECURITY is not set

< CONFIG_JBD=y

< # CONFIG_JBD_DEBUG is not set

---

> # CONFIG_EXT3_FS is not set

> # CONFIG_JBD is not set

```

Je pense que sieur Yoyo avait tout bon : le fait d'avoir ajouté > CONFIG_LOCALVERSION="lbr"  m'a créé une branche /lib/modules/2.6.10-r6lbr et, de facto, ca a nettoyé !

La seule différence est d'avoir mis en dur l'USB ... et 

> CONFIG_ISAPNP=y

> CONFIG_PNPBIOS=y

> CONFIG_PNPBIOS_PROC_FS=y

> CONFIG_PNPACPI=y

403c408

< CONFIG_BLK_DEV_SR=m

---

> CONFIG_BLK_DEV_SR=y

ca vous inspire ?

De plus, je me retrouve bien avec un lsmod plus verbeux :

```
lbr boot # lsmod

Module                  Size  Used by

lp                     11020  0

parport_pc             26308  1

parport                34120  2 lp,parport_pc

natsemi                26592  0

bcm5700               139180  0

ahci                    9604  0

nvidia               3467484  12

```

Je mets tout de même "résolu" même si je ne sais pas trop pourquoi ca marche ...

----------

## Gil galad

Chez moi, je viens d'installer vmware et j'ai du aussi mettre rmmod dans mon kernel.

Avant de mettre rmmod, lsmod me donnait un "Used by" vide

Et après, le lsmod était effectivement plus verbeux comme dans l'exemple de yoyo ou de lbr.

Donc, apparament, c'est rmmod le responsable des infos avec lsmod..

Sinon, vmware fonctionne parfaitement une fois rmmod dans le kernel

----------

