On Fri, Feb 14, 2003 at 05:10:40AM -0800, Alfred Perlstein wrote: > alfred 2003/02/14 05:10:40 PST > > Modified files: > sys/kern kern_intr.c > sys/dev/ata ata-all.c > Log: > Fix crash dumps on ata and scsi. > [...] > To fix ata, use what appears to be a polling method if we're dumping, > I stole this from tmm but added code to ensure that this change is > only in effect while dumping. > > Tested by: des > FWIW, if I propagate this change to the !dumping case, it also fixes the ``resume stucks in "ata1: resetting devices .."'' bug I was having with my ThinkPad 600X:
%%% Index: ata-all.c =================================================================== RCS file: /home/ncvs/src/sys/dev/ata/ata-all.c,v retrieving revision 1.165 diff -u -p -r1.165 ata-all.c --- ata-all.c 14 Feb 2003 13:10:40 -0000 1.165 +++ ata-all.c 18 Feb 2003 10:08:22 -0000 @@ -486,8 +486,7 @@ ata_getparam(struct ata_device *atadev, /* apparently some devices needs this repeated */ do { - if (ata_command(atadev, command, 0, 0, 0, - dumping ? ATA_WAIT_READY : ATA_WAIT_INTR)) { + if (ata_command(atadev, command, 0, 0, 0, ATA_WAIT_READY)) { ata_prtdev(atadev, "%s identify failed\n", command == ATA_C_ATAPI_IDENTIFY ? "ATAPI" : "ATA"); free(ata_parm, M_ATA); %%% The resume session (with apm(4)) now looks like this: : cbb0: PCI Memory allocated: 50103000 : cbb1: PCI Memory allocated: 50102000 : pcm0: detached : csa: card is Thinkpad 600X/A20/T20 : pcm0: <CS461x PCM Audio> on csa0 : pcm0: <Cirrus Logic CS4297A ac97 codec> : wakeup from sleeping state (slept 00:00:10) : ata0: resetting devices .. : done : ata1: resetting devices .. : ata1-slave: timeout waiting for cmd=ec s=01 e=24 : ata1-slave: ATA identify failed : done : system power profile changed to 'economy' : cbb1: card inserted: event=0x00000000, state=30000920 : cbb1: cbb_power: CARD_VCC_0V and CARD_VPP_0V [44] : cbb1: cbb_power: CARD_VCC_3V and CARD_VPP_VCC [11] : cardbus1: Bad header in rom 0: [0] ffff : cardbus1: Resource not specified in CIS: id=10, size=80 : cardbus1: Resource not specified in CIS: id=14, size=800 : cardbus1: Resource not specified in CIS: id=18, size=800 : cardbus1: Non-prefetchable memory at 88000000-88000fff : cardbus1: Non-prefetchable memory rid=18 at 88000000-880007ff (800) : cardbus1: Non-prefetchable memory rid=14 at 88000800-88000fff (800) : cardbus1: IO port at 1000-107f : cardbus1: IO port rid=10 at 1000-107f : dc0: <Xircom X3201 10/100BaseTX> port 0x1000-0x107f mem :0x88000000-0x880007ff,0x88000800-0x88000fff irq 11 at device 0.0 on cardbus1 : dc0: Ethernet address: 80:a7:b9:c0:80:fc : miibus0: <MII bus> on dc0 : tdkphy0: <TDK 78Q2120 media interface> on miibus0 : tdkphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto I.e., exactly as it is during the boot-up: : ata0: at 0x1f0 irq 14 on atapci0 : ata1: at 0x170 irq 15 on atapci0 : ata1-slave: timeout waiting for cmd=ec s=01 e=24 : ata1-slave: ATA identify failed : ad0: 11509MB <IBM-DARA-212000> [24944/15/63] at ata0-master UDMA33 : acd0: DVD-ROM <LG DVD-ROM DRN-8080B> at ata1-master PIO4 Thankyou! P.S. The funny thing is that I had the ata(4) crashdumps working. :) Cheers, -- Ruslan Ermilov Sysadmin and DBA, [EMAIL PROTECTED] Sunbay Software AG, [EMAIL PROTECTED] FreeBSD committer, +380.652.512.251 Simferopol, Ukraine http://www.FreeBSD.org The Power To Serve http://www.oracle.com Enabling The Information Age
msg52650/pgp00000.pgp
Description: PGP signature