Re: 2.6.18-rc7-git1: AHCI not seeing devices on ICH8 mobo (DG965RY)

Robin H. Johnson
2006-09-18T03:21:25Z

[-- Attachment #1: Type: text/plain, Size: 1488 bytes --]

On Sun, Sep 17, 2006 at 04:49:29PM +0900, Tejun Heo wrote:
> On Sat, Sep 16, 2006 at 02:08:57PM -0700, Robin H. Johnson wrote:
> > I recompiled libata and AHCI using the ATA_DEBUG and ATA_VERBOSE_DEBUG
> > defines, and got an interesting trace.
> >
> > In specific, look at port_idx 2/3, being all zeros in ahci_host_init.
> >
> > I'm digging into it further now, but something makes me suspect that
> > base addresses for ports 3/4 are wrong.
> >
> > Full file at:
> > http://orbis-terrarum.net/~robbat2/x86_64-mmconfig-failure/2.6.18-rc7-git1-libata-ahci-verbose-failure.dmesg
>
> Can you please try the attached patch?
Yes your patch fixes it perfectly - it's a better version of an almost
working fix I hacked up after my previous email.

Some patch review comments below as well.

Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>

> @@ -186,9 +187,11 @@ struct ahci_host_priv {
> unsigned long flags;
> u32 cap; /* cache of HOST_CAP register */
> u32 port_map; /* cache of HOST_PORTS_IMPL reg */
> + int port_tbl[AHCI_MAX_PORTS];
> };
maybe u8 instead of int?
also a comment - /* mapping of port_idx to the implemented port */

> + if (n_ports == 0) {
> + dev_printk(KERN_ERR, &pdev->dev, "0 port implemented\n");
> + return -EINVAL;
> + }
Use plural form (0 ports), or negative (No ports) instead.