Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Dec 2008 10:11:07 +0100
From:      Victor Balada Diaz <victor@bsdes.net>
To:        "Andrey V. Elsukov" <bu7cher@yandex.ru>
Cc:        freebsd-stable@freebsd.org, freebsd-amd64@freebsd.org, =?iso-8859-1?Q?S=F8ren?= Schmidt <sos@FreeBSD.org>
Subject:   Re: [ATA] and re(4) stability issues
Message-ID:  <20081210091107.GC1320@alf.bsdes.net>
In-Reply-To: <493F84A4.1080308@yandex.ru>
References:  <20081209185236.GA1320@alf.bsdes.net> <493F84A4.1080308@yandex.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Dec 10, 2008 at 11:58:12AM +0300, Andrey V. Elsukov wrote:
> Victor Balada Diaz wrote:
> >Digging at linux source code i've found that they do some special things
> >for this chipset that i've been unable to find on our code. This is
> >linux code for my chipset:
> >
> >371                 AHCI_HFLAGS     (AHCI_HFLAG_IGN_SERR_INTERNAL |
> >372                                  AHCI_HFLAG_32BIT_ONLY | 
> >AHCI_HFLAG_NO_MSI |
> >373                                  AHCI_HFLAG_SECT255),
> >
> >File and the rest of the code in here[3].
> >
> >As i saw AHCI_HFLAG_NO_MSI i tried doing the easiest thing i could
> >think of, switching MSI and MSI-x off for the whole system, so
> >i added to /boot/loader.conf this tunables:
> 
> FreeBSD's ata(4) driver doesn't support MSI. This flag in linux's libata 
> used in
> 
>     if ((hpriv->flags & AHCI_HFLAG_NO_MSI) || pci_enable_msi(pdev))
>                 pci_intx(pdev, 1);
> 
> In FreeBSD's code we have the same:
> 
>     /* enable PCI interrupt */
>     pci_write_config(dev, PCIR_COMMAND,
>                      pci_read_config(dev, PCIR_COMMAND, 2) & ~0x0400, 2);
> 
> AHCI_HFLAG_IGN_SERR_INTERNAL flag targeted to ignore SERR_INTERNAL errors.
> FreeBSD's ata(4) driver ignores they too.
> 
> AHCI_HFLAG_32BIT_ONLY flag limits to use 32-bit DMA only.
> If AHCI CAP register reports that controller supports 64-bit DMA driver 
> will use 64-bit.
> So i think there can be added one quirk for you, but i'm not sure that 
> problem is here..
> 
> AHCI_HFLAG_SECT255 flag limits I/O operation to 255 sectors, FreeBSD uses 
> 128-limit
> by default.

Thanks for explaining me what the flags do. I'm not skilled enough to create
the DMA quirks but if you could give me some patches i'll test them. Also
if you have any other idea on what could i test or how can i debug this
it would be more than welcome.

Thanks.
Regards.

-- 
La prueba más fehaciente de que existe vida inteligente en otros
planetas, es que no han intentado contactar con nosotros. 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20081210091107.GC1320>