Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 8 Sep 2003 23:25:17 +0200
From:      Thomas Quinot <thomas@cuivre.fr.eu.org>
To:        Andrew Gallatin <gallatin@cs.duke.edu>
Cc:        freebsd-alpha@freebsd.org
Subject:   Re: atapicam causes fatal kernel trap
Message-ID:  <20030908212517.GA59827@melusine.cuivre.fr.eu.org>
In-Reply-To: <16220.61276.946194.736750@grasshopper.cs.duke.edu>
References:  <3F568ED4.5095458F@performancedesign.no> <16215.32222.610240.127909@grasshopper.cs.duke.edu> <3F579927.1020601@performancedesign.no> <16215.39766.415180.759716@grasshopper.cs.duke.edu> <3F5A20ED.C5DE017E@performancedesign.no> <16220.34865.620913.836921@grasshopper.cs.duke.edu> <3F5CE880.E08ABB6D@performancedesign.no> <16220.61276.946194.736750@grasshopper.cs.duke.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
Le 2003-09-08, Andrew Gallatin écrivait :

> Hmmm..  Thomas, how can  ccb_h->target_id ever be less than 0 if
> a target_id_t is typedef'ed to a u_int?   Perhaps the test should be
>     if (softc->ata_ch && ccb_h->target_id != CAM_TARGET_WILDCARD) {

Uh oh. Looks like a possible culprit indeed! Idar, please test the
following patch:

Index: atapi-cam.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/ata/atapi-cam.c,v
retrieving revision 1.10.2.5
diff -u -r1.10.2.5 atapi-cam.c
--- atapi-cam.c	24 Aug 2003 03:26:38 -0000	1.10.2.5
+++ atapi-cam.c	8 Sep 2003 21:12:06 -0000
@@ -252,7 +252,11 @@
 	strncpy(cpi->dev_name, cam_sim_name(sim), sizeof cpi->dev_name);
 	cpi->unit_number = cam_sim_unit(sim);
 	cpi->bus_id = cam_sim_bus(sim);
+	printf ("softc->ata_ch = %p\n", softc->ata_ch);
+	printf ("softc->ata_ch->device = %p\n", softc->ata_ch->device);
+	printf ("ccb_h->target_id = %d\n", ccb_h->target_id);
 	if (softc->ata_ch && ccb_h->target_id >= 0) {
+	    if (ccb_h->target_id < 2) {
 	    switch (softc->ata_ch->device[ccb_h->target_id].mode) {
 	    case ATA_PIO1:
 		cpi->base_transfer_speed = 5200;
@@ -282,6 +286,7 @@
 		break;
 	    default: cpi->base_transfer_speed = 3300;
 	    }
+	    } else cpi->base_transfer_speed = 3300;
 	}
 	ccb->ccb_h.status = CAM_REQ_CMP;
 	xpt_done(ccb);

-- 
    Thomas.Quinot@Cuivre.FR.EU.ORG



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030908212517.GA59827>