Re: What breaks aic7xxx in post 2.6.12-rc2 ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2005-05-17 at 21:56 +0200, Grégoire Favre wrote:
> On Tue, May 17, 2005 at 02:50:31PM -0500, James Bottomley wrote:
> 
> > Right, but the problem I think it will fix is the initial inquiry being
> > sent with the wrong transport parameters.
> > 
> > You have a different problem, I think ... it looks like your Toshiba DVD
> > does somthing strange during Domain Validation ... the question I don't
> > have an answer to yet, is what.
> 
> Oh, sorry, thank you for the patch :-)

Well, the attached is what I'd like you to try, capturing the
information from the initial inquiry on ... it will be quite a bit.

Hopefully it will give me a clearer idea of what's going on.

Thanks,

James

--- a/drivers/scsi/scsi_transport_spi.c
+++ b/drivers/scsi/scsi_transport_spi.c
@@ -669,14 +669,23 @@ spi_dv_retrain(struct scsi_request *sreq
 {
 	struct spi_internal *i = to_spi_internal(sreq->sr_host->transportt);
 	struct scsi_device *sdev = sreq->sr_device;
+	struct scsi_target *starget = sdev->sdev_target;
 	int period = 0, prevperiod = 0; 
 	enum spi_compare_returns retval;
 
 
 	for (;;) {
 		int newperiod;
+
 		retval = compare_fn(sreq, buffer, ptr, DV_LOOPS);
 
+		if(i->f->get_period)
+			i->f->get_period(starget);
+		if (i->f->get_offset)
+			i->f->get_offset(starget);
+
+		spi_display_xfer_agreement(starget);
+
 		if (retval == SPI_COMPARE_SUCCESS
 		    || retval == SPI_COMPARE_SKIP_TEST)
 			break;
@@ -765,6 +774,8 @@ spi_dv_device_internal(struct scsi_reque
 	/* first set us up for narrow async */
 	DV_SET(offset, 0);
 	DV_SET(width, 0);
+
+	printk("BEGINNING ASYNC, inq len = %d\n", sdev->inquiry_len);
 	
 	if (spi_dv_device_compare_inquiry(sreq, buffer, buffer, DV_LOOPS)
 	    != SPI_COMPARE_SUCCESS) {
@@ -773,11 +784,13 @@ spi_dv_device_internal(struct scsi_reque
 		return;
 	}
 
+	printk("ASYNC INQUIRY SUCCEEDED\n");
+
 	/* test width */
 	if (i->f->set_width && spi_max_width(starget) && sdev->wdtr) {
 		i->f->set_width(sdev->sdev_target, 1);
 
-		printk("WIDTH IS %d\n", spi_max_width(starget));
+		printk("TRYING WIDE ASYNC INQUIRY\n");
 
 		if (spi_dv_device_compare_inquiry(sreq, buffer,
 						   buffer + len,
@@ -802,12 +815,17 @@ spi_dv_device_internal(struct scsi_reque
 	if (sdev->ppr)
 		len = spi_dv_device_get_echo_buffer(sreq, buffer);
 
+	printk("ECHO BUFFER HAS LEN %d\n", len);
+
  retry:
 
 	/* now set up to the maximum */
 	DV_SET(offset, spi_max_offset(starget));
 	DV_SET(period, spi_min_period(starget));
 
+	printk("DV SETTING TO period %d, offset %d\n", spi_min_period(starget),
+	       spi_max_offset(starget));
+
 	if (len == 0) {
 		SPI_PRINTK(sdev->sdev_target, KERN_INFO, "Domain Validation skipping write tests\n");
 		spi_dv_retrain(sreq, buffer, buffer + len,


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux