> > 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

Reply via email to