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

Re: [ATA] and re(4) stability issues

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:

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.

WBR, Andrey V. Elsukov

freebsd-amd64_(_at_)_freebsd_(_dot_)_org mailing list
To unsubscribe, send any mail to "freebsd-amd64-unsubscribe_(_at_)_freebsd_(_dot_)_org"