kern/118135: [Patch] ATA: Detect ATA controllers in MacBook3,1

Ed Schouten ed at fxq.nl
Mon Nov 19 11:50:02 PST 2007


>Number:         118135
>Category:       kern
>Synopsis:       [Patch] ATA: Detect ATA controllers in MacBook3,1
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Nov 19 19:50:01 UTC 2007
>Closed-Date:
>Last-Modified:
>Originator:     Ed Schouten
>Release:        FreeBSD 6.3-PRERELEASE i386
>Organization:
>Environment:
System: FreeBSD mekker.fxq.nl 8.0-CURRENT FreeBSD 8.0-CURRENT #1: Mon Nov 19 20:18:07 CET 2007 root at mekker.fxq.nl:/usr/obj/usr/src/sys/MEKKER  amd64
>Description:
Yesterday I made a dual-boot install from my new Apple MacBook3,1 (the
ones that have been released last month).

Because the FreeBSD ATA code doesn't yet know the device ID's from the
ATA chipsets, it shows that the devices are using UDMA33, while they can
do better.

According to various sources (Linux kernel mailing list, etc), I
discovered that only one of them is using SATA (the one used by the
harddisk) and that one doesn't use AHCI. My guess is that the ATA
controller uses UDMA5 or 6. Just to be safe, I selected 5, but someone
else can probably solve this question better.
>How-To-Repeat:
>Fix:
This patch:

--- src/sys/dev/ata/ata-chipset.c	2007-11-19 20:10:24.000000000 +0100
+++ src/sys/dev/ata/ata-chipset.c	2007-11-19 20:34:51.000000000 +0100
@@ -1788,8 +1788,10 @@
      { ATA_I82801HB_R1,  0, AHCI, 0x00, ATA_SA300, "ICH8" },
      { ATA_I82801HB_AH4, 0, AHCI, 0x00, ATA_SA300, "ICH8" },
      { ATA_I82801HB_AH6, 0, AHCI, 0x00, ATA_SA300, "ICH8" },
-     { ATA_I82801HBM_S1, 0, AHCI, 0x00, ATA_SA300, "ICH8M" },
+     { ATA_I82801HBM_S1, 0,    0, 0x00, ATA_SA150, "ICH8M" },
      { ATA_I82801HBM_S2, 0, AHCI, 0x00, ATA_SA300, "ICH8M" },
+     { ATA_I82801HBM_S3, 0, AHCI, 0x00, ATA_SA300, "ICH8M" },
+     { ATA_I82801HBM,    0,    0, 0x00, ATA_UDMA5, "ICH8M" },
      { ATA_I82801IB_S1,  0, AHCI, 0x00, ATA_SA300, "ICH9" },
      { ATA_I82801IB_S2,  0, AHCI, 0x00, ATA_SA300, "ICH9" },
      { ATA_I82801IB_AH2, 0, AHCI, 0x00, ATA_SA300, "ICH9" },
--- src/sys/dev/ata/ata-pci.h	2007-11-19 20:10:24.000000000 +0100
+++ src/sys/dev/ata/ata-pci.h	2007-11-19 20:34:51.000000000 +0100
@@ -168,8 +168,10 @@
 #define ATA_I82801HB_R1         0x28228086
 #define ATA_I82801HB_AH4        0x28248086
 #define ATA_I82801HB_S2         0x28258086
-#define ATA_I82801HBM_S1        0x28298086
-#define ATA_I82801HBM_S2        0x282a8086
+#define ATA_I82801HBM_S1        0x28288086
+#define ATA_I82801HBM_S2        0x28298086
+#define ATA_I82801HBM_S3        0x282a8086
+#define ATA_I82801HBM           0x28508086
 #define ATA_I82801IB_S1         0x29208086
 #define ATA_I82801IB_AH2        0x29218086
 #define ATA_I82801IB_AH6        0x29228086

makes my ATA devices show up like this:

atapci0: <Intel ICH8M UDMA100 controller> port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0x30e0-0x30ef irq 21 at device 31.1 on pci0
ata0: <ATA channel 0> on atapci0
ata1: <ATA channel 1> on atapci0
atapci1: <Intel ICH8M SATA150 controller> port 0x30f8-0x30ff,0x311c-0x311f,0x30f0-0x30f7,0x3118-0x311b,0x3020-0x302f,0x4000-0x400f irq 18 at device 31.2 on pci0
ata2: <ATA channel 0> on atapci1
ata3: <ATA channel 1> on atapci1
acd0: DVDR <MATSHITADVD-R UJ-857E/ZF1E> at ata0-master UDMA66
ad0: 238475MB <FUJITSU MHY2250BH 0081000D> at ata2-master SATA150

>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list