> > Hmm, the Intel ICH7 chipset in the Intel iMac seems to suffer from the > > "cntrl sharing DMA engine between channels" problem, so that Solaris > > refuses to use DMA with the HDD: > > > > > > PCI Express-device: pci8086,[EMAIL PROTECTED], pci_pci0 > > pci_pci0 is /[EMAIL PROTECTED],0/pci8086,[EMAIL PROTECTED] > > pcplusmp: ide (ata) instance 0 vector 0xe ioapic 0x1 intin 0xe is bound to > > cpu 1 > > pcplusmp: ide (ata) instance 0 vector 0xe ioapic 0x1 intin 0xe is bound to > > cpu 1 > > ATAPI device at targ 0, lun 0 lastlun 0x0 > > model MATSHITADVD-R UJ-846 > > ATA/ATAPI-6 supported, majver 0x78 minver 0x0 > > IDE device at targ 1, lun 0 lastlun 0x0 > > model WDC WD2500JS-40NGB2 > > ATA/ATAPI-7 supported, majver 0xfe minver 0x0 > > ata_set_feature: (0x66,0x0) failed > > PCI Express-device: [EMAIL PROTECTED], ata2 > > ata2 is /[EMAIL PROTECTED],0/[EMAIL PROTECTED],2/[EMAIL PROTECTED] > > ATA DMA off: cntrl sharing DMA engine between channels > > PIO mode 4 selected > > Disk0: <Vendor 'Gen-ATA ' Product 'WDC WD2500JS-40N'> > > cmdk0 at ata2 target 1 lun 0 > > cmdk0 is /[EMAIL PROTECTED],0/[EMAIL PROTECTED],2/[EMAIL PROTECTED]/[EMAIL > > PROTECTED],0 > > > > > > Reading from the HDD is killing GUI performance on the iMac, it seems... > > > > There's an (supposedly dangerously) hacked ata driver floating around > hat makes this work OK. Please contact me off-line if you'd like a > copy of it. The bug that covers this is: > > 5031379 Toshiba MK6021GAS falls back to pio on HP Pavilion ze5385us
After reading the relevant parts in the Intel ICH3/4/5/6/7 chipset specs I found the root cause: Starting with the ICH4/ICH5, Intel isn't using the PCIIDE_BMISX_SIMPLEX bit 7 in the ide bus master status register any more. And starting with the ICH5(SATA) and ICH6, bit 7 is reused as an additional interrupt status register. This confuses Solaris' "simplex" ata controller test, in ata_init_pciide(): http://cvs.opensolaris.org/source/xref/on/usr/src/uts/intel/io/dktp/controller/ata/ata_common.c#2058 For the ICH7 IDE controller device we have (15.2.2): Bit 7: PRD Interrupt Status ("Set when the host controller completes execution of a PRD that has its interrupt bit set"). For the ICH7 SATA controller (12.2.2): Bit: PRD Interrupt Status ("This bit is set when the host controller execution of a PRD that has its PRD_INT bit set") For the ICH5, ICH4,. Intel describes BM IDE status register, bit 7 as "Reserved. Returns 0". And for the ICH5/SATA controller only: Bit 7 is the "PRD Interrupt" status. There is already code in the ata driver to ignore a false pci-ide controller "simplex" bit. For the Intel Mac, we can work around the issue by adding the following pci-ide-blacklist entry to /platform/i86pc/kernel/drv/ata.conf pci-ide-blacklist=0x8086,0xffff,0x27c4,0xffff,0x20; This message posted from opensolaris.org _______________________________________________ opensolaris-discuss mailing list opensolaris-discuss@opensolaris.org