[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: eata.c module and PCI setup problem (RAID SCSI card)



> >> # insmod eata.o io_port=0x1400
> >                           ^^^^^^
> > Where are you getting this value from? I'm sure it is wrong... Have
> > a look at the boot messages of your kernel, and also send along the
> > output of 'lspci -vv'.
>
> I'm getting this addresse from lspci and from previous tries with
> modprobe eata.o (which gives exactly the same results as insmod BTW)
> Here is the lspci -vv output regarding this card :
>
> 00:0f.0 SCSI storage controller: Distributed Processing Technology
> SmartCache/Raid I-IV Controller (rev 02)
>     Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV+ VGASnoop-
>     ParErr- Stepping- SERR- FastB2B-
>     Status: Cap- 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort-
>     <TAbort- <MAbort- >SERR- <PERR-
>     Latency: 32 (1000ns min, 2000ns max), cache line size 08
>     Interrupt: pin A routed to IRQ 25
>     BIST result: 00
>     Region 0: I/O ports at 1400 [disabled] [size=32]
>     Expansion ROM at 80908000 [disabled] [size=32K]
>
> >> # tail /var/log/syslog Jun  4 13:52:38 brocoli kernel: IN from bad
> >> port 1408 at d005392c
> >
> > This message means you are trying to read from an address where no
> > device is listening. Either the IO port (0x1408) is wrong, or the
> > device isn't configured to reply to IO accesses on the PCI bus.
>
> Why could the device not be configured to reply to IO accesses on the
> PCI bus ?

Because no one enabled it?

Apparently the eata driver doesn't call pci_enable_device().

No, I think it does it, as I can see from the source, but does it does it at the good time ? :

---

static void add_pci_ports(void) {

#if defined(CONFIG_PCI)

   unsigned int addr, k;

   struct pci_dev *dev = NULL;

   if (!pci_present()) return;

   for (k = 0; k < MAX_PCI; k++) {

if (!(dev = pci_find_class(PCI_CLASS_STORAGE_SCSI << 8, dev))) break;

      if (pci_enable_device (dev)) {

#if defined(DEBUG_PCI_DETECT)
printk("%s: detect, bus %d, devfn 0x%x, pci_enable_device failed.\n",
                driver_name, dev->bus->number, dev->devfn);
#endif

         continue;
         }

      addr = pci_resource_start (dev, 0);

---

The driver code is working very fine with the same card on i386 box... What are the differences regarding PCI bus between i386 and ppc ?

BTW, what doean mean the 'disabled' in the lspci output, just not enabled ? Should the call to pci_enable_device() change this status ? :

>     Region 0: I/O ports at 1400 [disabled] [size=32]
>     Expansion ROM at 80908000 [disabled] [size=32K]

Also, the syslog extract :

> >> # tail /var/log/syslog Jun  4 13:52:38 brocoli kernel: IN from bad
> >> port 1408 at d005392c

is apparantly comming from arch/ppc/kernel/traps.c When could this trap be reached ?

Antoine.


--
To UNSUBSCRIBE, email to debian-powerpc-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org



Reply to: