Booting Imac G5 : success !

J. Mayer l_indien at magic.fr
Sat Nov 13 02:53:07 EST 2004


On Thu, 2004-11-11 at 22:42, Benjamin Herrenschmidt wrote:
> On Thu, 2004-11-11 at 15:31 +0100, J. Mayer wrote:
> > Hi,
> > 
> > I got a hack to fix the SATA problem on Imac G5. I was right thinking we
> > were missing IRQs.
[...]
> > It seems that the driver uses the first (bad) one so I added a test:
> > if (pdev->irq == 0) pdev->irq = 0xA;
> > in drivers/scsi/sata_svw.c
> > then SATA works properly.
> > Of course, this is just a hack, I think the real patch is to be in the
> > OF tree parse, not to keep invalid IRQ definitions.
> > 
> > You may know better than me the proper place and way to fix this issue
> > (generic OF tree routines, SATA driver ?).
> 
> No, the probing code doesn't use what is in k2-sata, but what is in
> k2-sata-root, which is the real PCI device. I don't know why it wouldn't
> have parsed correctly, I suspect a problem with the PCI<->OF node
> matching, you can check what's going on in arch/ppc64/kernel/pci.c
> 
> int pci_read_irq_line(struct pci_dev *pci_dev)
> 
> Where it reads the IRQ line from OF and puts it in the pci_dev struct.

OK, you're right. The problem is that in the PCI configuration space of
the SATA root, there's no IRQ line defined. I can see we're in the same
case for the IDE controller, and I saw this code:
drivers/ide/ppc/pmac.c:pmac_ide_pci_attach
	np = pci_device_to_OF_node(pdev);
	...
	if (np->n_intrs == 0)
		pmif->irq = pdev->irq;
	else
		pmif->irq = np->intrs[0].line;
Then I did the same in the sata driver and I got it working. Do you
think this is an acceptable fix ?

Regards.

-- 
J. Mayer <l_indien at magic.fr>
Never organized




More information about the Linuxppc64-dev mailing list