PowerDomain 3940UWD

Michel Lanners mlan at cpu.lu
Fri Sep 10 04:14:48 EST 1999

On  10 Sep, this message from Ryuichi Oikawa echoed through cyberspace:
> I've tried Adaptec PowerDomain 3094UWD, dual channel UW SCSI card
> with PCI-PCI bridge and two SCSI controllers under the bridge,
> and I noticed driver related and OF related problems.
> First I tried vger 2.2.12 kernel that caused machine check exception
> at first IO write transaction. I thought that this was normal because
> OF didn't properly set up P2P bridge's IO forwarding window.
> The real problem was this part(aic7xxx.c):
> #ifdef MMAPIO
>           if ( !(temp_p->flags & AHC_MULTI_CHANNEL) ||
>                ((temp_p->chip != (AHC_AIC7870 | AHC_PCI)) &&
>                 (temp_p->chip != (AHC_AIC7880 | AHC_PCI))) )
>           {
> 	   ...... select MMIO and does ioremap ....
>            ...... if it fails select normal IO ....
> 	  }
> #endif
> that rejected my SCSI card from MMIO forcing normal IO resulting in machin
> check. So I had to ignore this statement by #if !defined(__powerpc__) ...
> #endif statement.
> Does anyone know what is this restriction for?

I could imagine that certain Adaptec SCSI chips use a regular PCI
memory region for their registers, while others use a PCI I/O region.
There are chances that the PCI I/O region is not enabled on your board,
and therefore accessing it results in a machine check.

Can you send me the output of lspci -vv, preferably once without the
aic7xxx driver in the kernel, and once with your fixes?

> After that aic7xxx.c properly detected two SCSI chips but entered in a
> timeout/resetting loop:-(  Apparently interrupts weren't fixed-up by
> pcibios_fixup.

IRQs do get fixed, even on devices behind P2P bridges... iff OF did
assing IRQs, that is, as you found below.

> So I scanned OF searching for correnct IRQ number and
> found it at AAPL,interrupts field of P2P bridge. SCSI controllers didn't
> have any AAPL,interrupts of course. It seems OF inserts AAPL,interrupts
> only at the top node of the slot when it detects a card in the physical
> slot. Therefore I had to change arch/ppc/kernel/prom.c as 
[snip'ed code]

Your fix looks OK to me; on PowerMacs, all PCI devices in any one slot
share the same interrupt, as the four PCI interrupt pins are OR'ed
together per slot.

> I don't know if it is OF(PowerMac8500, OF 1.0.5) version specific,
> or SCSI card specific, or PowerMac OF nature. Any ideas?

Either OF-specific in general, or one of the many bugs in OF 1.0.5.
Anyway, as I said, your patch wouldn't break anything, even if OF did
assign IRQs already.


Michel Lanners                 |  " Read Philosophy.  Study Art.
23, Rue Paul Henkes            |    Ask Questions.  Make Mistakes.
L-1710 Luxembourg              |
email   mlan at cpu.lu            |
http://www.cpu.lu/~mlan        |                     Learn Always. "

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

More information about the Linuxppc-dev mailing list