Re: Support for ICH7 controller in PowerBook Pro

From: Gavin Atkinson <gavin.atkinson_at_ury.york.ac.uk>
Date: Tue, 16 May 2006 16:05:48 +0100
On Mon, 2006-05-15 at 19:15 -0700, Maxim Sobolev wrote:
> Gavin Atkinson wrote:
> > On Sun, 2006-05-14 at 23:24 -0700, Maxim Sobolev wrote:
> >> Søren Schmidt wrote:
> >>> On Tir, 2006-04-25 at 01:03 -0700, Maxim Sobolev wrote:
> >>>> Hi Søren,
> >>>>
> >>>> Attached please find small patch which adds support for 82801GBM/GHM 
> >>>> SATA controller found in intel-based Macs, particularly in MacBook Pro.
> >>>>
> >>>> Please review & approve.
> >>> I'll look into it, I think Intel has a few other new chips I should add
> >>> in the same go, give me a few days...
> >> Any progress with this? Few days have turned into few weeks, and I don't 
> >> want them turn into few months. :)
> > 
> > Be aware that I believe your patch is slightly wrong.  As far as I can
> > tell the chip ID you've added is the non-AHCI version.  I have the same
> > chip in my new Toshiba laptop, and submitted a more complete PR
> > (kern/97228) over the weekend.
> 
> MacBook doesn't work with your patch - FreeBSD detects controller but 
> doesn't see any disks attached to it. :( Putting AHCI back solves the 
> problem.
> 
> I wonder if Intel has shipped two different controllers with the same 
> pci ids.

Seems unlikely to me, Intel seem to love burning product IDs.  I wonder
if it has anything to do with which disks are attached.  My laptop
actually works with that set either to "AHCI" or "0", but I assumed that
was more of a by-product of the minimal AHCI support currently.

> Just in the case, attached is appropriate entry from pciconf -lv output:
> 
> atapci1_at_pci0:31:2:      class=0x01018f card=0x72708086 chip=0x27c48086 
> rev=0x02 hdr=0x00
>      vendor   = 'Intel Corporation'
>      device   = '82801GBM/GHM (ICH7-M Family) Serial ATA Storage Controller'
>      class    = mass storage
>      subclass = ATA
> 
> And dmesg:
> 
> atapci1: <Intel ICH7 SATA300 controller> port 
> 0x40d8-0x40df,0x40f4-0x40f7,0x40d0-0x40d7,0x40f0-0x40f3,0x4020-0x402f 
> mem 0x98405000-0x984053ff irq 19 at device 31.2 on pci0
> ata2: <ATA channel 0> on atapci1
> ata3: <ATA channel 1> on atapci1
> ad5: 95396MB <Seagate ST910021AS 3.07> at ata2-slave SATA150

Mine looks like:

atapci0_at_pci0:31:2:      class=0x010180 card=0x00011179 chip=0x27c48086 rev=0x02 hdr=0x00
    vendor   = 'Intel Corporation'
    device   = '82801GBM/GHM (ICH7-M Family) Serial ATA Storage Controller'
    class    = mass storage
    subclass = ATA

Note that the class is different.

dmesg with the cfg1 flag set to 0:
atapci0: <Intel ICH7 SATA300 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0x9f10-0x9f1f irq 19 at device 31.2 on pci0
atapci0: Reserved 0x10 bytes for rid 0x20 type 4 at 0x9f10
ata0: <ATA channel 0> on atapci0
atapci0: Reserved 0x8 bytes for rid 0x10 type 4 at 0x1f0
atapci0: Reserved 0x1 bytes for rid 0x14 type 4 at 0x3f6
ata0: reset tp1 mask=01 ostat0=80 ostat1=00
ata0: stat0=0x50 err=0x01 lsb=0x00 msb=0x00
ata0: reset tp2 stat0=50 stat1=00 devices=0x1<ATA_MASTER>
ioapic0: routing intpin 14 (ISA IRQ 14) to vector 55
ata0: [MPSAFE]
ata1: <ATA channel 1> on atapci0
atapci0: Reserved 0x8 bytes for rid 0x18 type 4 at 0x170
atapci0: Reserved 0x1 bytes for rid 0x1c type 4 at 0x376
ata1: reset tp1 mask=01 ostat0=50 ostat1=00
ata1: stat0=0x00 err=0x01 lsb=0x14 msb=0xeb
ata1: reset tp2 stat0=00 stat1=00 devices=0x4<ATAPI_MASTER>
ioapic0: routing intpin 15 (ISA IRQ 15) to vector 56
ata1: [MPSAFE]
[...]
ata0-master: pio=PIO4 wdma=WDMA2 udma=UDMA100 cable=40 wire
ad0: 76319MB <HTS541080G9SA00 MB4OC60D> at ata0-master SATA150
ad0: 156301488 sectors [155061C/16H/63S] 16 sectors/interrupt 1 depth queue
ata1-master: pio=PIO4 wdma=WDMA2 udma=UDMA33 cable=40 wire
acd0: <DVD/CDRW UJDA770/1.00> CDRW drive at ata1 as master

dmesg with the cfg1 flag set to AHCI:
atapci0: <Intel ICH7 SATA300 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0x9f10-0x9f1f irq 19 at device 31.2 on pci0
atapci0: Reserved 0x10 bytes for rid 0x20 type 4 at 0x9f10
atapci0: failed to enable memory mapping!
ata0: <ATA channel 0> on atapci0
atapci0: Reserved 0x8 bytes for rid 0x10 type 4 at 0x1f0
atapci0: Reserved 0x1 bytes for rid 0x14 type 4 at 0x3f6
ata0: reset tp1 mask=03 ostat0=50 ostat1=00
ata0: stat0=0x50 err=0x01 lsb=0x00 msb=0x00
ata0: stat1=0x00 err=0x01 lsb=0x00 msb=0x00
ata0: reset tp2 stat0=50 stat1=00 devices=0x1<ATA_MASTER>
ioapic0: routing intpin 14 (ISA IRQ 14) to vector 55
ata0: [MPSAFE]
ata1: <ATA channel 1> on atapci0
atapci0: Reserved 0x8 bytes for rid 0x18 type 4 at 0x170
atapci0: Reserved 0x1 bytes for rid 0x1c type 4 at 0x376
ata1: reset tp1 mask=03 ostat0=50 ostat1=00
ata1: stat0=0x00 err=0x01 lsb=0x14 msb=0xeb
ata1: stat1=0x00 err=0x00 lsb=0x00 msb=0x00
ata1: reset tp2 stat0=00 stat1=00 devices=0x4<ATAPI_MASTER>
ioapic0: routing intpin 15 (ISA IRQ 15) to vector 56
ata1: [MPSAFE]
[...]
ata0-master: pio=PIO4 wdma=WDMA2 udma=UDMA100 cable=40 wire
ad0: 76319MB <HTS541080G9SA00 MB4OC60D> at ata0-master SATA150
ad0: 156301488 sectors [155061C/16H/63S] 16 sectors/interrupt 1 depth queue
ata1-master: pio=PIO4 wdma=WDMA2 udma=UDMA33 cable=40 wire
acd0: <DVD/CDRW UJDA770/1.00> CDRW drive at ata1 as master

As far as I can tell, the only difference is the "atapci0: failed to
enable memory mapping!" line when I'm using the chipset as an AHCI
chipset.

So, as far as I'm concerned, AHCI works for my laptop, I'm just a little
wary (not really understanding AHCI) as to if this is safe or will
continue to work in the future, especially given the Intel docs seem to
suggest it is a non-AHCI PCI ID.

Gavin
Received on Tue May 16 2006 - 13:05:55 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:55 UTC