Current-Users archive

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

Re: piixide write speed very slow

On Sun, 6 Dec 2009, Matthias Scheler wrote:
On Sun, Dec 06, 2009 at 02:49:45PM +0000, Stephen Borrill wrote:
Should they be supported by ahcisata(4)?

On the second slow box, I tried all sorts of BIOS settings to try to get
ahcisata to attach but failed.

ahcisata(4) contains a list of PCI ids which it attaches to even if they
don't present the correct device class. You try adding your device
to that for testing purposes.

This really isn't an ahci device. Also the first part of the ahci match routine is rather lax already and so it matches this:

    Class Name: mass storage (0x01)
    Subclass Name: IDE (0x01)
    Interface: 0x8a

The registers do not map though and thus the match fails:

        if (pci_mapreg_map(pa, AHCI_PCI_ABAR,
            &regt, &regh, NULL, &size) != 0)
                return 0;

According to the specs, PCI_MAPREG_MEM_TYPE_32BIT is the only valid type for ABAR. ABAR is type I/O:

    Base address register at 0x24
      type: i/o
      base: 0x00004040, not sized

The BIOS (actually UEFI) on the IBM x3250 M3 is the very latest and does not offer an AHCI option. I've also tried native and compatible mode and both controllers (there's a piixide0 and piixide1).

As an aside, I tried OpenBSD on this box and their pciide (effectively piixide) has correct write performance. I really can't see many differences in the code though (certainly not the piix part of it). One obvious difference was the code removed by cube@ in revision 1.35 of piixide because of ahcisata superceding it, but that's not the cause (I commented the code out in OpenBSD with no change in performance).

Looks like this controller falls down the gap between the drivers (ahcisata can't attach and piixide is no longer up to the task). I'm getting increasingly desperate to get this working (a 72 hour RAID-1 rebuild isn't pleasant); anyone else got any ideas?


Home | Main Index | Thread Index | Old Index