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>
