Date: Tue, 14 Oct 2003 15:09:58 +0200 (CEST) From: Soren Schmidt <sos@spider.deepcore.dk> To: Matteo Riondato <rionda@gufi.org> Cc: current@FreeBSD.ORG Subject: Re: ata problem with 13/10/2003 current Message-ID: <200310141309.h9ED9wxc001775@spider.deepcore.dk> In-Reply-To: <1066136658.2588.14.camel@kaiser.sig11.org>
next in thread | previous in thread | raw e-mail | index | archive | help
It seems Matteo Riondato wrote: > After having update my -CURRENT box to yesterday afternoon (Central > Europe Time) sources, I can't get it to boot. It stops probing ata1: > GEOM: create disk ad0 dp=0xc4536a70 > ad0: 57259MB <MAXTOR 6L060J3> [116336/16/63] at ata0-master UDMA133 > GEOM: create disk ad1 dp=0xc4915a70 > ad1: 38172MB <QUANTUM FIREBALLP AS40.0> [77557/16/63] at ata0-slave \ > UDMA100 > ata1: resetting devices .. > acd0: FAILURE - SETFEATURES status=51 <READY,DSC,ERROR> error=4<ABORTED> > done > acd0: FAILURE - SETFEATURES device lockup-removed > > And it stops here. > > On ata1 there are a Liteon CD-ReWriter 48x12x48x (acd0) > and a LG DVD-ROM Drive DRD-8160B (acd1) > > I never had problem with ATAng before, so it is probably related to a > recent commit. Could you try this patch please: Index: ata-queue.c =================================================================== RCS file: /home/ncvs/src/sys/dev/ata/ata-queue.c,v retrieving revision 1.8 diff -u -r1.8 ata-queue.c --- ata-queue.c 12 Oct 2003 12:38:03 -0000 1.8 +++ ata-queue.c 13 Oct 2003 13:05:01 -0000 @@ -315,20 +315,21 @@ static void ata_timeout(struct ata_request *request) { + struct ata_channel *ch = request->device->channel; + int quiet = request->flags & ATA_R_QUIET; + /* clear timeout etc */ request->timeout_handle.callout = NULL; -#if 0 - /* call interrupt to try finish up the command */ - request->device->channel->hw.interrupt(request->device->channel); - if (request->device->channel->running == NULL) { - if (!(request->flags & ATA_R_QUIET)) + /* call hw.interrupt to try finish up the command */ + ch->hw.interrupt(request->device->channel); + if (ch->running != request) { + if (!quiet) ata_prtdev(request->device, "WARNING - %s recovered from missing interrupt\n", ata_cmd2str(request)); return; } -#endif /* if this was a DMA request stop the engine to be on the safe side */ if (request->flags & ATA_R_DMA) { -Søren
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200310141309.h9ED9wxc001775>