| Summary: | New Intel disk controller chip ID 0x248a | ||
|---|---|---|---|
| Product: | Base System | Reporter: | spadger <spadger> |
| Component: | kern | Assignee: | Søren Schmidt <sos> |
| Status: | Closed FIXED | ||
| Severity: | Affects Only Me | ||
| Priority: | Normal | ||
| Version: | 4.4-STABLE | ||
| Hardware: | Any | ||
| OS: | Any | ||
Responsible Changed From-To: freebsd-bugs->sos Over to Mr. ATA State Changed From-To: open->closed This is fixed. |
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. :)