Skip site navigation (1)Skip section navigation (2)
Date:      Mon,  8 Oct 2001 18:48:40 -0700 (PDT)
From:      Andy Sparrow <spadger@best.com>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   kern/31149: New Intel disk controller chip ID 0x248a
Message-ID:  <20011009014840.2A7393E94@CRWdog.demon.co.uk>

next in thread | raw e-mail | index | archive | help

>Number:         31149
>Category:       kern
>Synopsis:       New Intel disk controller chip ID 0x248a
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Mon Oct 08 18:50:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Andy Sparrow
>Release:        FreeBSD 4.4-STABLE i386
>Organization:
None
>Environment:
System: FreeBSD omni.geek4food.org 4.4-STABLE FreeBSD 4.4-STABLE #64: Sat Oct 6 17:16:06 CDT 2001 root@omni.geek4food.org:/usr/src/sys/compile/tureg i386

>Description:

The (fairly new) HP Omnibook 6100 has an Intel UltraATA controller
chip probed as vendor=0x8086 id=0x248a, which isn't included in the
files 'ata-all.c' & 'ata-dma.c'.

This causes it to get attached as a "Generic PCI ATA controller".

Unfortunately, when attached thus, this device will subsequently
fail to resume after a suspend:

ad0: READ command timeout tag=0 serv=0 - resetting
ata0: resetting devices . ata0: mask=01 ostat0-58 ostat2=00
ata0-master: ATAPI probe a=bd b=00
ata0-slave: ATAPI probe a=bd b=00
ata0: mask=01 status0=58 status1=58
ata0-master: ATA probe a=00 b=00
ata0: devices=00
done
ad0s2a: hard error reading fsbn 51472 of 3056-3059 (ad0s2 bn 51472; cn 3 tn 97
sn 1)
ata0-master: success setting PIO4 on generic chip
ad0s2a: hard error reading fsbn 51472 of 3056-3059 (ad0s2 bn 51472; cn 3 tn 97
sn 1) status=51 error=04
ad0: DMA problem fallback to PIO mode
spec_getpages:(#ad/0x30000) I/O read failure: (error=5) bp 0xc64b12d4 vp
0xcc045ec0
        size: 2048, resid: 2048, a_count: 1891, valid: 0x0
        nread: 0, reqpage: 0, pindex: 0, pcount: 1
pcic0: Event mask 0x9 stat 0x30000459

the drive is then completely dead, and you have to resort to the
paperclip to reboot (because you can't load halt & friends)...


>How-To-Repeat:

Acquire an Omnibook 6100 (or other laptop with same chipset), install
4.4-STABLE, set up APM, suspend/resume. :)

>Fix:

Couldn't find any docs on Intel's web site, although chip id was
listed on the PCI/Vendor device lists found at http://www.yourvote.com/pci
(0where it is simply described as an "Intel UltraDMA controller").

I guessed that it was similar to the comparitively-recent ICH2
Mobile chipset (which also does UltraATA and seems to have similar
capabilities), and duly applied the following trivial patch:

--- sys/dev/ata/ata-all.c.orig      Mon Oct  8 18:13:29 2001
+++ sys/dev/ata/ata-all.c   Mon Oct  8 18:12:57 2001
@@ -261,6 +261,9 @@
     case 0x24218086:
        return "Intel ICH0 ATA33 controller";
 
+    case 0x248a8086:
+       return "Intel UltraATA controller";
+
     case 0x24118086:
        return "Intel ICH ATA66 controller";
 
--- sys/dev/ata/ata-dma.c.orig      Mon Oct  8 18:13:45 2001
+++ sys/dev/ata/ata-dma.c   Mon Oct  8 18:13:04 2001
@@ -111,6 +111,7 @@
 
     switch (scp->chiptype) {
 
+    case 0x248a8086:   /* Intel UltraATA mobile */ 
     case 0x244a8086:   /* Intel ICH2 mobile */ 
     case 0x244b8086:   /* Intel ICH2 */
        if (udmamode >= 5) {


Which works for me.

Machine runs at least as well as before ('dmesg' now reports the
drive as using UDMA100, rather than BIOSDMA), and the laptop now
correctly resumes post-suspend.
>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20011009014840.2A7393E94>