Re: Encore des problemes hard ...

Page principale

Répondre à ce message
Auteur: Francois-Xavier 'FiX' KOWALSKI
Date:  
À: Mailing-List GUILDE
Sujet: Re: Encore des problemes hard ...
Jerome KIEFFER <Jerome.KIEFFER@???> writes:

> > > J'ai trouvé le probleme : compaq range son bios a des adresses
> > > farfellue (hors de portée de linux et de beaucoup d'autres OSs)
> >
> > Eeek? Hors de l'espace d'adressage du noyau? Quelles sont ces
> > valeur d'adresses?
>
> la machine est un Compaq deskpro 590 (Pentium 90) avec 4 isa + 2 PCI
> l'adresse de la carte reseau (module pcnet32) est io=0x1000 alors
> que les valeurs admises sont entre 0x300 et 0x400


Mon systeme me donne:

,----
| cat /proc/ioports
| 0000-001f : dma1
| 0020-003f : pic1
| 0040-005f : timer
| 0060-006f : keyboard
| 0070-007f : rtc
| 0080-008f : dma page reg
| 00a0-00bf : pic2
| 00c0-00df : dma2
| 00f0-00ff : fpu
| 0170-0177 : ide1
| 01f0-01f7 : ide0
| 02f8-02ff : serial(auto)
| 0376-0376 : ide1
| 0378-037a : parport0
| 03c0-03df : vga+
| 03f6-03f6 : ide0
| 03f8-03ff : serial(auto)
| 0cf8-0cff : PCI conf1
| 5f00-5f1f : Intel Corp. 82371AB/EB/MB PIIX4 ACPI
| 6100-613f : Intel Corp. 82371AB/EB/MB PIIX4 ACPI
| 6300-631f : Intel Corp. 82371AB/EB/MB PIIX4 USB
| 6400-641f : Realtek Semiconductor Co., Ltd. RTL-8029(AS)
| 6400-641f : ne2k-pci
| f000-f00f : Intel Corp. 82371AB/EB/MB PIIX4 IDE
| f000-f007 : ide0
| f008-f00f : ide1

`----

A regarder l'adresse I/O utilisee par ma carte Ethernet (Realtek) la
limitation a 0x300-0x400 n'est pas due au noyau.

A regarder les sections de code suivantes, extraites de
/usr/include/linuc/drivers/net/pcnet32.c, je constate que le driver
semble ne supporter les ports suivants QUE pour le bus VLB:

,----
| /* 
|  * VLB I/O addresses 
|  */
| static unsigned int pcnet32_portlist[] __initdata = 
|         { 0x300, 0x320, 0x340, 0x360, 0 };

`----

,----
| /* only probes for non-PCI devices, the rest are handled by 
|  * pci_register_driver via pcnet32_probe_pci */
| 
| static void __devinit
| pcnet32_probe_vlbus(void)
| {
|     unsigned int *port, ioaddr;
|     
|     /* search for PCnet32 VLB cards at known addresses */
|     for (port = pcnet32_portlist; (ioaddr = *port); port++) {
|         if (!check_region(ioaddr, PCNET32_TOTAL_SIZE)) {
|             /* check if there is really a pcnet chip on that ioaddr */
|             if ((inb(ioaddr + 14) == 0x57) && (inb(ioaddr + 15) == 0x57))
|                 pcnet32_probe1(ioaddr, 0, 0, NULL);
|         }
|     }
| }

`----

Si ta carte n'est pas PCI, Il doit etre possible de refaire ce module
pour qu'il supporte _aussi_ ton adresse 0x1000.

Dans le cas contraire, elle est censee repondre aux solicitations
d'assignation du bus PCI. Si elle ne le fait pas, c'est que son slot
est parameter par le BIOS pour ne pas entrer dans la negociation PCI
au demarrage => Il faut _tout_ mettre en dynamique en PCI.

A+
--
François-Xavier 'FiX' KOWALSKI