Bug 31149

Summary: New Intel disk controller chip ID 0x248a
Product: Base System Reporter: spadger <spadger>
Component: kernAssignee: Søren Schmidt <sos>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: 4.4-STABLE   
Hardware: Any   
OS: Any   

Description spadger 2001-10-09 02:50:00 UTC
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)...

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:



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.--KtzoWea9lgESqQ6TpIPouPjROOhneduxBsXXvpwQmyAyzp1r
Content-Type: text/plain; name="file.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="file.diff"

--- 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) {
How-To-Repeat: 
Acquire an Omnibook 6100 (or other laptop with same chipset), install
4.4-STABLE, set up APM, suspend/resume. :)
Comment 1 Doug Barton freebsd_committer freebsd_triage 2001-10-10 02:38:27 UTC
Responsible Changed
From-To: freebsd-bugs->sos


Over to Mr. ATA
Comment 2 Søren Schmidt freebsd_committer freebsd_triage 2001-12-12 14:15:00 UTC
State Changed
From-To: open->closed

This is fixed.