Re: ata problem with 13/10/2003 current

From: Soren Schmidt <sos_at_spider.deepcore.dk>
Date: Tue, 14 Oct 2003 15:09:58 +0200 (CEST)
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
_at__at_ -315,20 +315,21 _at__at_
 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
Received on Tue Oct 14 2003 - 04:09:56 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:25 UTC